diff options
author | yenatch <yenatch@gmail.com> | 2017-10-08 23:54:46 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-08 23:54:46 -0400 |
commit | b0d49dbbfbfcf39c2a9f88572437b6af77c8f709 (patch) | |
tree | be0dadd4cb3a6c36e27233836a6f104359d49949 | |
parent | b21c159b08c57a948edb268ac9b9b5baf6b4332d (diff) | |
parent | 3776a9fb4f0531535b0b5879dab7b3b6bd231736 (diff) |
Merge branch 'master' into scaninc
763 files changed, 86551 insertions, 167623 deletions
diff --git a/.gitignore b/.gitignore index ae9ac207b..4e73c4f17 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ Thumbs.db build/ .idea/ *.DS_Store +*.pl @@ -40,9 +40,9 @@ VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_d $(VERSIONS) $(VERSIONS:%=compare_%) -$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,src,asm,data})) +$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,asm,data,src{,/battle,/field,/debug,/scene,/pokemon,/engine,/libs}})) -C_SRCS := $(wildcard src/*.c) +C_SRCS := $(wildcard src/*/*.c) $(wildcard src/*.c) ASM_SRCS := $(wildcard asm/*.s) DATA_ASM_SRCS := $(wildcard data/*.s) @@ -90,17 +90,17 @@ sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(A sound/songs/%.s: sound/songs/%.mid cd $(@D) && ../../$(MID) $(<F) -%src/libc.o: CC1 := tools/agbcc/bin/old_agbcc -%src/libc.o: CFLAGS := -O2 +%src/libs/libc.o: CC1 := tools/agbcc/bin/old_agbcc +%src/libs/libc.o: CFLAGS := -O2 -%src/siirtc.o: CFLAGS := -mthumb-interwork +%src/libs/siirtc.o: CFLAGS := -mthumb-interwork -%src/agb_flash.o: CFLAGS := -O -mthumb-interwork -%src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork -%src/agb_flash_mx.o: CFLAGS := -O -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 -%src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc -%src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc +%src/libs/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc +%src/libs/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc $(SONG_OBJS): %.o: %.s $(AS) $(ASFLAGS) -I sound -o $@ $< @@ -113,7 +113,8 @@ $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_dep = $$(shell $$(SCANINC) -I include src/$$(*F).c) +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 @@ -9,8 +9,24 @@ It builds the following roms: To set up the repository, see [INSTALL.md](INSTALL.md). -### irc: [freenode#pret][irc] +## See also +* Disassembly of [**Pokémon Red/Blue**][pokered] +* Disassembly of [**Pokémon Yellow**][pokeyellow] +* Disassembly of [**Pokémon Crystal**][pokecrystal] +* Disassembly of [**Pokémon Pinball**][pokepinball] +* Disassembly of [**Pokémon TCG**][poketcg] +* Disassembly of [**Pokémon Emerald**][pokeemerald] +* Discord: [**pret**][Discord] +* irc: **irc.freenode.net** [**#pret**][irc] + +[pokered]: https://github.com/pret/pokered +[pokeyellow]: https://github.com/pret/pokeyellow +[pokecrystal]: https://github.com/pret/pokecrystal +[pokepinball]: https://github.com/pret/pokepinball +[poketcg]: https://github.com/pret/poketcg +[pokeemerald]: https://github.com/pret/pokeemerald +[Discord]: https://discord.gg/cJxDDVP [irc]: https://kiwiirc.com/client/irc.freenode.net/?#pret [travis]: https://travis-ci.org/pret/pokeruby [travis-badge]: https://travis-ci.org/pret/pokeruby.svg?branch=master diff --git a/asm-de/battle_message.s b/asm-de/battle_message.s deleted file mode 100644 index 2f671a766..000000000 --- a/asm-de/battle_message.s +++ /dev/null @@ -1,2342 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start BufferStringBattle -BufferStringBattle: @ 8120AA8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - ldr r5, _08120B70 @ =gSelectedOrderFromParty - ldr r4, _08120B74 @ =gActiveBank - ldrb r1, [r4] - lsls r1, 9 - ldr r0, _08120B78 @ =gUnknown_02023A64 - adds r1, r0 - str r1, [r5] - ldr r2, _08120B7C @ =gLastUsedItem - ldrh r0, [r1, 0x4] - strh r0, [r2] - ldr r2, _08120B80 @ =gLastUsedAbility - ldrb r0, [r1, 0x6] - strb r0, [r2] - ldr r3, _08120B84 @ =0x02000000 - ldrb r0, [r1, 0x7] - mov r8, r0 - ldr r2, _08120B88 @ =0x00016003 - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldrb r0, [r1, 0x8] - mov r8, r0 - ldr r2, _08120B8C @ =0x0001605e - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldrb r0, [r1, 0x9] - mov r8, r0 - ldr r2, _08120B90 @ =0x000160c1 - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldr r2, _08120B94 @ =gStringBank - ldrb r0, [r1, 0xA] - strb r0, [r2] - ldrb r1, [r1, 0xB] - ldr r2, _08120B98 @ =0x000160a0 - adds r0, r3, r2 - strb r1, [r0] - movs r2, 0 - mov r9, r3 - ldr r3, _08120B9C @ =gBattleTextBuff1 - mov r10, r3 - ldr r3, _08120BA0 @ =gAbilitiesPerBank -_08120B10: - adds r0, r2, r3 - ldr r1, [r5] - adds r1, 0xC - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _08120B10 - movs r2, 0 - ldr r0, _08120B9C @ =gBattleTextBuff1 - mov r8, r0 - ldr r3, _08120B70 @ =gSelectedOrderFromParty - ldr r1, _08120BA4 @ =gBattleTextBuff2 - mov r12, r1 - ldr r5, _08120BA8 @ =gBattleTextBuff3 -_08120B30: - mov r0, r8 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x10 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - mov r0, r12 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x20 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r5 - ldr r0, [r3] - adds r0, 0x30 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0xF - ble _08120B30 - cmp r7, 0x5 - bls _08120B64 - b _08120F50 -_08120B64: - lsls r0, r7, 2 - ldr r1, _08120BAC @ =_08120BB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08120B70: .4byte gSelectedOrderFromParty -_08120B74: .4byte gActiveBank -_08120B78: .4byte gUnknown_02023A64 -_08120B7C: .4byte gLastUsedItem -_08120B80: .4byte gLastUsedAbility -_08120B84: .4byte 0x02000000 -_08120B88: .4byte 0x00016003 -_08120B8C: .4byte 0x0001605e -_08120B90: .4byte 0x000160c1 -_08120B94: .4byte gStringBank -_08120B98: .4byte 0x000160a0 -_08120B9C: .4byte gBattleTextBuff1 -_08120BA0: .4byte gAbilitiesPerBank -_08120BA4: .4byte gBattleTextBuff2 -_08120BA8: .4byte gBattleTextBuff3 -_08120BAC: .4byte _08120BB0 - .align 2, 0 -_08120BB0: - .4byte _08120BC8 - .4byte _08120C40 - .4byte _08120CCC - .4byte _08120D5C - .4byte _08120DE8 - .4byte _08120E50 -_08120BC8: - ldr r0, _08120BEC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08120C00 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08120BF8 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120BF0 @ =gUnknown_084005C7 - cmp r0, 0 - bne _08120BE8 - b _08120F70 -_08120BE8: - ldr r6, _08120BF4 @ =gUnknown_084005DB - b _08120F70 - .align 2, 0 -_08120BEC: .4byte gBattleTypeFlags -_08120BF0: .4byte gUnknown_084005C7 -_08120BF4: .4byte gUnknown_084005DB -_08120BF8: - ldr r6, _08120BFC @ =gUnknown_084005AA - ldr r0, _08120C04 @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120BFC: .4byte gUnknown_084005AA -_08120C04: .4byte 0x0000ffff -_08120C00: - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _08120C14 - ldr r6, _08120C10 @ =gUnknown_08400568 - b _08120F70 - .align 2, 0 -_08120C10: .4byte gUnknown_08400568 -_08120C14: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120C24 - ldr r6, _08120C20 @ =gUnknown_08400590 - b _08120F70 - .align 2, 0 -_08120C20: .4byte gUnknown_08400590 -_08120C24: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - ldr r6, _08120C38 @ =gUnknown_08400555 - cmp r0, 0 - bne _08120C32 - b _08120F70 -_08120C32: - ldr r6, _08120C3C @ =gUnknown_0840057B - b _08120F70 - .align 2, 0 -_08120C38: .4byte gUnknown_08400555 -_08120C3C: .4byte gUnknown_0840057B -_08120C40: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120C7C - ldr r0, _08120C68 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120C74 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120C6C @ =gUnknown_084006A4 - cmp r0, 0 - bne _08120C64 - b _08120F70 -_08120C64: - ldr r6, _08120C70 @ =gUnknown_084006F1 - b _08120F70 - .align 2, 0 -_08120C68: .4byte gBattleTypeFlags -_08120C6C: .4byte gUnknown_084006A4 -_08120C70: .4byte gUnknown_084006F1 -_08120C74: - ldr r6, _08120C78 @ =gUnknown_0840069C - b _08120F70 - .align 2, 0 -_08120C78: .4byte gUnknown_0840069C -_08120C7C: - ldr r0, _08120C94 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120CB4 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120C9C - ldr r6, _08120C98 @ =gUnknown_0840065C - b _08120F70 - .align 2, 0 -_08120C94: .4byte gBattleTypeFlags -_08120C98: .4byte gUnknown_0840065C -_08120C9C: - movs r0, 0x2 - ands r0, r1 - ldr r6, _08120CB8d @ =gUnknown_08400645 - cmp r0, 0 - beq _08120CA8 - b _08120F70 -_08120CA8: - ldr r6, _08120CBCd @ =gUnknown_08400608 - ldr r0, _08120CC0d @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120CB8d: .4byte gUnknown_08400645 -_08120CBCd: .4byte gUnknown_08400608 -_08120CC0d: .4byte 0x0000ffff -_08120CB4: - movs r0, 0x2 - ands r0, r1 - ldr r6, _08120CD8 @ =gUnknown_08400635 - cmp r0, 0 - beq _08120CC0 - b _08120F70 -_08120CC0: - ldr r6, _08120CDC @ =gUnknown_084005F5 - ldr r0, _08120CE0 @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120CD8: .4byte gUnknown_08400635 -_08120CDC: .4byte gUnknown_084005F5 -_08120CE0: .4byte 0x0000ffff -_08120CCC: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120D24 - ldr r0, _08120CE8 @ =0x02000000 - ldr r1, _08120CEC @ =0x000160c1 - adds r0, r1 - ldrb r2, [r0] - cmp r2, 0 - bne _08120CF4 - ldr r6, _08120CF0 @ =gUnknown_08400709 - b _08120F70 - .align 2, 0 -_08120CE8: .4byte 0x02000000 -_08120CEC: .4byte 0x000160c1 -_08120CF0: .4byte gUnknown_08400709 -_08120CF4: - cmp r2, 0x1 - beq _08120D04 - ldr r0, _08120D08 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120D10 -_08120D04: - ldr r6, _08120D0C @ =gUnknown_08400727 - b _08120F70 - .align 2, 0 -_08120D08: .4byte gBattleTypeFlags -_08120D0C: .4byte gUnknown_08400727 -_08120D10: - ldr r6, _08120D1C @ =gUnknown_08400749 - cmp r2, 0x2 - beq _08120D18 - b _08120F70 -_08120D18: - ldr r6, _08120D20 @ =gUnknown_08400736 - b _08120F70 - .align 2, 0 -_08120D1C: .4byte gUnknown_08400749 -_08120D20: .4byte gUnknown_08400736 -_08120D24: - ldr r0, _08120D44 @ =gTrainerBattleOpponent - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 4 - cmp r1, r0 - bne _08120D54 - ldr r0, _08120D48 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120D4C @ =gUnknown_08400771 - cmp r0, 0 - bne _08120D40 - b _08120F70 -_08120D40: - ldr r6, _08120D50 @ =gUnknown_08400781 - b _08120F70 - .align 2, 0 -_08120D44: .4byte gTrainerBattleOpponent -_08120D48: .4byte gBattleTypeFlags -_08120D4C: .4byte gUnknown_08400771 -_08120D50: .4byte gUnknown_08400781 -_08120D54: - ldr r6, _08120D58 @ =gUnknown_0840075E - ldr r0, _d08120D78 @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120D58: .4byte gUnknown_0840075E -_d08120D78: .4byte 0x0000ffff -_08120D5C: - ldr r0, _08120D88 @ =0x00016003 - add r0, r9 - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120DB8 - ldr r0, _08120D8C @ =0x000160c1 - add r0, r9 - ldrb r3, [r0] - cmp r3, 0 - beq _08120D82 - ldr r0, _08120D90 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120D98 -_08120D82: - ldr r6, _08120D94 @ =gUnknown_084006B3 - b _08120F70 - .align 2, 0 -_08120D88: .4byte 0x00016003 -_08120D8C: .4byte 0x000160c1 -_08120D90: .4byte gBattleTypeFlags -_08120D94: .4byte gUnknown_084006B3 -_08120D98: - cmp r3, 0x1 - bne _08120DA4 - ldr r6, _08120DA0 @ =gUnknown_084006BB - b _08120F70 - .align 2, 0 -_08120DA0: .4byte gUnknown_084006BB -_08120DA4: - ldr r6, _08120DB0 @ =gUnknown_084006D5 - cmp r3, 0x2 - beq _08120DAC - b _08120F70 -_08120DAC: - ldr r6, _08120DB4 @ =gUnknown_084006C6 - b _08120F70 - .align 2, 0 -_08120DB0: .4byte gUnknown_084006D5 -_08120DB4: .4byte gUnknown_084006C6 -_08120DB8: - ldr r0, _08120DD4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08120DE0 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120DD8 @ =gUnknown_0840067C - cmp r0, 0 - bne _08120DD0 - b _08120F70 -_08120DD0: - ldr r6, _08120DDC @ =gUnknown_0840068C - b _08120F70 - .align 2, 0 -_08120DD4: .4byte gBattleTypeFlags -_08120DD8: .4byte gUnknown_0840067C -_08120DDC: .4byte gUnknown_0840068C -_08120DE0: - ldr r6, _08120DE4 @ =gUnknown_08400622 - ldr r0, _d08120E0C @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120DE4: .4byte gUnknown_08400622 -_d08120E0C: .4byte 0x0000ffff -_08120DE8: - mov r0, r10 - bl sub_8121D1C - ldr r0, _08120E14 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08120E28 - ldr r0, _08120E18 @ =gBattleTextBuff2 - ldr r2, _08120E1C @ =gUnknown_08401674 - ldr r1, _08120E20 @ =0x02000000 - ldr r3, _08120E24 @ =0x000160a0 - adds r1, r3 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - b _08120E38 - .align 2, 0 -_08120E14: .4byte gSelectedOrderFromParty -_08120E18: .4byte gBattleTextBuff2 -_08120E1C: .4byte gUnknown_08401674 -_08120E20: .4byte 0x02000000 -_08120E24: .4byte 0x000160a0 -_08120E28: - ldr r0, _08120E44 @ =gBattleTextBuff2 - ldrh r2, [r2] - movs r1, 0xD - muls r1, r2 - ldr r2, _08120E48 @ =gMoveNames - adds r1, r2 - bl StringCopy -_08120E38: - ldr r0, _08120E44 @ =gBattleTextBuff2 - bl sub_8121D74 - ldr r6, _08120E4C @ =gUnknown_084007BD - b _08120F70 - .align 2, 0 -_08120E44: .4byte gBattleTextBuff2 -_08120E48: .4byte gMoveNames -_08120E4C: .4byte gUnknown_084007BD -_08120E50: - ldr r5, _08120E90 @ =gBattleTextBuff1 - ldrb r1, [r5] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08120EB8 - movs r0, 0x7F - ands r0, r1 - strb r0, [r5] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120E7C - ldrb r1, [r5] - cmp r1, 0x3 - beq _08120E7C - movs r0, 0x3 - eors r0, r1 - strb r0, [r5] -_08120E7C: - ldr r0, _08120E90 @ =gBattleTextBuff1 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08120E98 - ldr r6, _08120E94 @ =gUnknown_083FFEFC - b _08120F70 - .align 2, 0 -_08120E90: .4byte gBattleTextBuff1 -_08120E94: .4byte gUnknown_083FFEFC -_08120E98: - ldr r0, _08120EAC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120EB0 @ =gUnknown_083FFFEA - cmp r0, 0 - beq _08120F70 - ldr r6, _08120EB4 @ =gUnknown_083FFFF7 - b _08120F70 - .align 2, 0 -_08120EAC: .4byte gBattleTypeFlags -_08120EB0: .4byte gUnknown_083FFFEA -_08120EB4: .4byte gUnknown_083FFFF7 -_08120EB8: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120ED2 - ldrb r1, [r5] - cmp r1, 0x3 - beq _08120ED2 - movs r0, 0x3 - eors r0, r1 - strb r0, [r5] -_08120ED2: - ldr r0, _08120EF0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120F18 - ldr r0, _08120EF4 @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08120F08 - cmp r0, 0x2 - bgt _08120EF8 - cmp r0, 0x1 - beq _08120EFE - b _08120F70 - .align 2, 0 -_08120EF0: .4byte gBattleTypeFlags -_08120EF4: .4byte gBattleTextBuff1 -_08120EF8: - cmp r0, 0x3 - beq _08120F10 - b _08120F70 -_08120EFE: - ldr r6, _08120F04 @ =gUnknown_083FFF6A - b _08120F70 - .align 2, 0 -_08120F04: .4byte gUnknown_083FFF6A -_08120F08: - ldr r6, _08120F0C @ =gUnknown_083FFF99 - b _08120F70 - .align 2, 0 -_08120F0C: .4byte gUnknown_083FFF99 -_08120F10: - ldr r6, _08120F14 @ =gUnknown_083FFFCB - b _08120F70 - .align 2, 0 -_08120F14: .4byte gUnknown_083FFFCB -_08120F18: - ldr r0, _08120F2C @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08120F40 - cmp r0, 0x2 - bgt _08120F30 - cmp r0, 0x1 - beq _08120F36 - b _08120F70 - .align 2, 0 -_08120F2C: .4byte gBattleTextBuff1 -_08120F30: - cmp r0, 0x3 - beq _08120F48 - b _08120F70 -_08120F36: - ldr r6, _08120F3C @ =gUnknown_083FFF56 - b _08120F70 - .align 2, 0 -_08120F3C: .4byte gUnknown_083FFF56 -_08120F40: - ldr r6, _08120F44 @ =gUnknown_083FFF81 - b _08120F70 - .align 2, 0 -_08120F44: .4byte gUnknown_083FFF81 -_08120F48: - ldr r6, _08120F4C @ =gUnknown_083FFFB3 - b _08120F70 - .align 2, 0 -_08120F4C: .4byte gUnknown_083FFFB3 -_08120F50: - movs r0, 0xB5 - lsls r0, 1 - cmp r7, r0 - bls _08120F64 - ldr r1, _08120F60 @ =gDisplayedStringBattle - movs r0, 0xFF - strb r0, [r1] - b _08120F76 - .align 2, 0 -_08120F60: .4byte gDisplayedStringBattle -_08120F64: - ldr r1, _08120F84 @ =gBattleStringsTable - adds r0, r7, 0 - subs r0, 0xC - lsls r0, 2 - adds r0, r1 - ldr r6, [r0] - adds r0, r7, 0 -_08120F9A: - adds r1, r6, 0 - bl de_sub_804110C - adds r6, r0, 0 -_08120F70: - adds r0, r6, 0 - bl StrCpyDecodeToDisplayedStringBattle -_08120F76: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08120F84: .4byte gBattleStringsTable - thumb_func_end BufferStringBattle - - thumb_func_start StrCpyDecodeToDisplayedStringBattle -StrCpyDecodeToDisplayedStringBattle: @ 8120F88 - push {lr} - ldr r1, _08120F94 @ =gDisplayedStringBattle - bl StrCpyDecodeBattle - pop {r1} - bx r1 - .align 2, 0 -_08120F94: .4byte gDisplayedStringBattle - thumb_func_end StrCpyDecodeToDisplayedStringBattle - - thumb_func_start sub_8120F98 -sub_8120F98: @ 8120F98 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, _08120FB0 @ =gUnknown_084017A8 - mov r0, sp - movs r2, 0x8 - bl memcpy - mov r2, sp - movs r3, 0 - b _08120FC0 - .align 2, 0 -_08120FB0: .4byte gUnknown_084017A8 -_08120FB4: - strb r1, [r2] - adds r4, 0x1 - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x7 - bhi _08120FC8 -_08120FC0: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08120FB4 -_08120FC8: - ldr r5, [sp] - ldr r4, [sp, 0x4] - movs r3, 0 - ldr r2, _08120FE4 @ =gUnknown_081FA6D4 -_08120FD0: - ldr r1, [r2] - ldr r0, [r1] - cmp r5, r0 - bne _08120FE8 - ldr r0, [r1, 0x4] - cmp r4, r0 - bne _08120FE8 - ldr r0, [r2, 0x4] - b _08120FF2 - .align 2, 0 -_08120FE4: .4byte gUnknown_081FA6D4 -_08120FE8: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x6 - bls _08120FD0 - movs r0, 0 -_08120FF2: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8120F98 - - thumb_func_start StrCpyDecodeBattle -StrCpyDecodeBattle: @ 8120FFC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - mov r9, r0 - mov r8, r1 - movs r6, 0 - movs r4, 0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r9 - ldrb r1, [r0] - bl _08121A40 -_0812101E: - cmp r1, 0xFD - beq _08121026 - bl _08121A30 -_08121026: - movs r1, 0x1 - add r9, r1 - mov r2, r9 - ldrb r0, [r2] - cmp r0, 0x2A - bls _08121036 - bl _081219E6 -_08121036: - lsls r0, 2 - ldr r1, _08121040 @ =_08121044 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121040: .4byte _08121044 - .align 2, 0 -_08121044: - .4byte _081210F0 - .4byte _0812111E - .4byte _0812115A - .4byte _08121180 - .4byte _081211A4 - .4byte _081211C8 - .4byte _081211EC - .4byte _08121218 - .4byte _08121248 - .4byte _08121278 - .4byte _081212A8 - .4byte _0812133C - .4byte _081213A8 - .4byte _0812141C - .4byte _08121490 - .4byte _08121504 - .4byte _08121578 - .4byte _081215F8 - .4byte _08121620 - .4byte _08121660 - .4byte _081216EC - .4byte _081216F4 - .4byte _08121704 - .4byte _08121714 - .4byte _0812172C - .4byte _0812174C - .4byte _081217C0 - .4byte _08121830 - .4byte _08121840 - .4byte _08121854 - .4byte _08121868 - .4byte _0812188C - .4byte _081218B0 - .4byte _081218B8 - .4byte _081218C0 - .4byte _0812195C - .4byte _081219A4 - .4byte _081219AC - .4byte _0812197C - .4byte _08121984 - .4byte _081219CC - .4byte _081219D4 - .4byte _08121134 -_081210F0: - ldr r5, _08121100 @ =gBattleTextBuff1 - ldrb r0, [r5] - cmp r0, 0xFD - bne _08121108 - ldr r4, _08121104 @ =gStringVar1 - adds r0, r5, 0 - b _08121140 - .align 2, 0 -_08121100: .4byte gBattleTextBuff1 -_08121104: .4byte gStringVar1 -_08121108: - adds r0, r5, 0 - bl sub_8120F98 - adds r4, r0, 0 - cmp r4, 0 - beq _08121118 - bl _081219E6 -_08121118: - adds r4, r5, 0 - bl _081219E6 -_0812111E: - ldr r1, _0812112C @ =gBattleTextBuff2 - ldrb r0, [r1] - cmp r0, 0xFD - bne _08121154 - ldr r4, _08121130 @ =gStringVar2 - b _0812113E - .align 2, 0 -_0812112C: .4byte gBattleTextBuff2 -_08121130: .4byte gStringVar2 -_08121134: - ldr r1, _0812114C @ =gBattleTextBuff3 - ldrb r0, [r1] - cmp r0, 0xFD - bne _08121154 - ldr r4, _08121150 @ =gStringVar3 -_0812113E: - adds r0, r1, 0 -_08121140: - adds r1, r4, 0 - bl sub_8121A68 - bl _081219E6 - .align 2, 0 -_0812114C: .4byte gBattleTextBuff3 -_08121150: .4byte gStringVar3 -_08121154: - adds r4, r1, 0 - bl _081219E6 -_0812115A: - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, _08de12116C @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de12116C: .4byte gBattlePartyID -_08121180: - movs r0, 0x1 - bl GetBankByPlayerAI - ldr r1, _0812119C @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211A0 @ =gEnemyParty - b _08121940 - .align 2, 0 -_0812119C: .4byte gBattlePartyID -_081211A0: .4byte gEnemyParty -_081211A4: - movs r0, 0x2 - bl GetBankByPlayerAI - ldr r1, _081211C0 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_081211C0: .4byte gBattlePartyID -_081211C8: - movs r0, 0x3 - bl GetBankByPlayerAI - ldr r1, _081211E4 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211E8 @ =gEnemyParty - b _08121940 - .align 2, 0 -_081211E4: .4byte gBattlePartyID -_081211E8: .4byte gEnemyParty -_081211EC: - ldr r2, _0812120C @ =gBattlePartyID - ldr r1, _08121210 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_0812120C: .4byte gBattlePartyID -_08121210: .4byte gLinkPlayers -_08121218: - ldr r2, _0812123C @ =gBattlePartyID - ldr r1, _08121240 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121244 @ =gEnemyParty - b _08121940 - .align 2, 0 -_0812123C: .4byte gBattlePartyID -_08121240: .4byte gLinkPlayers -_08121244: .4byte gEnemyParty -_08121248: - ldr r2, _0812126C @ =gBattlePartyID - ldr r1, _08121270 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_0812126C: .4byte gBattlePartyID -_08121270: .4byte gLinkPlayers -_08121278: - ldr r2, _0812129C @ =gBattlePartyID - ldr r1, _081212A0 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x3 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081212A4 @ =gEnemyParty - b _08121940 - .align 2, 0 -_0812129C: .4byte gBattlePartyID -_081212A0: .4byte gLinkPlayers -_081212A4: .4byte gEnemyParty -_081212A8: - ldr r4, _081212CC @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _081212E6 - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121314 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121318 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de1212BE - .align 2, 0 -_081212CC: .4byte gBankAttacker -_08121314: .4byte gBattlePartyID -_08121318: .4byte gEnemyParty -_08de1212B4: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de1212BE: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de1212B4 - b _08de12184E -_081212E6: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121338 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121338: .4byte gBattlePartyID -_0812133C: - ldr r4, _08de121314 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08de12131C - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08de121318 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de121314: .4byte gBankAttacker -_08de121318: .4byte gBattlePartyID -_08de12131C: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08de12134C @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121350 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0812194A - .align 2, 0 -_08de12134C: .4byte gBattlePartyID -_08de121350: .4byte gEnemyParty -_081213A8: - ldr r4, _08de121388 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08de1213A8 - ldr r1, _08de12138C @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121390 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de12139E - .align 2, 0 -_08de121388: .4byte gBankAttacker -_08de12138C: .4byte gBattlePartyID -_08de121390: .4byte gEnemyParty -_08de121394: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de12139E: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de121394 - b _08de12184E -_08de1213A8: - ldr r1, _08de1213B4 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de1213B4: .4byte gBattlePartyID -_0812141C: - ldr r4, _08de1213EC @ =gBankTarget - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08de12140C - ldr r1, _08de1213F0 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de1213F4 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de121402 - .align 2, 0 -_08de1213EC: .4byte gBankTarget -_08de1213F0: .4byte gBattlePartyID -_08de1213F4: .4byte gEnemyParty -_08de1213F8: - mov r2, r8 - adds r0, r2, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de121402: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de1213F8 - b _08de12184E -_08de12140C: - ldr r1, _08de121418 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de121418: .4byte gBattlePartyID -_08121490: - ldr r4, _08de121450 @ =gEffectBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08de121470 - ldr r1, _08de121454 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121458 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de121466 - .align 2, 0 -_08de121450: .4byte gEffectBank -_08de121454: .4byte gBattlePartyID -_08de121458: .4byte gEnemyParty -_08de12145C: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de121466: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de12145C - b _08de12184E -_08de121470: - ldr r1, _08de12147C @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de12147C: .4byte gBattlePartyID -_08121504: - ldr r4, _08de1214B4 @ =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08de1214D4 - ldr r1, _08de1214B8 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de1214BC @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de1214CA - .align 2, 0 -_08de1214B4: .4byte gActiveBank -_08de1214B8: .4byte gBattlePartyID -_08de1214BC: .4byte gEnemyParty -_08de1214C0: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de1214CA: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de1214C0 - b _08de12184E -_08de1214D4: - ldr r1, _08de1214E0 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de1214E0: .4byte gBattlePartyID -_08121578: - ldr r0, _08de12151C @ =0x02000000 - ldr r1, _08de121520 @ =0x00016003 - adds r4, r0, r1 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _081215E8 - ldr r1, _08de121524 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121528 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de121536 - .align 2, 0 -_08de12151C: .4byte 0x02000000 -_08de121520: .4byte 0x00016003 -_08de121524: .4byte gBattlePartyID -_08de121528: .4byte gEnemyParty -_08de12152C: - mov r2, r8 - adds r0, r2, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de121536: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de12152C - b _08de12184E -_081215E8: - ldr r1, _081215F4 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_081215F4: .4byte gBattlePartyID -_081215F8: - ldr r0, _08de121568 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08de121574 - ldr r0, _08de12156C @ =0x02000000 - ldr r3, _08de121570 @ =0x000160a0 - adds r0, r3 - b _08de12158C - .align 2, 0 -_08de121568: .4byte gSelectedOrderFromParty -_08de12156C: .4byte 0x02000000 -_08de121570: .4byte 0x000160a0 -_08de121574: - ldrh r1, [r2] - b _08de1215AA -_08121620: - ldr r0, _08de121598 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2, 0x2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08de1215A8 - ldr r0, _08de12159C @ =0x02000000 - ldr r5, _08de1215A0 @ =0x000160a0 - adds r0, r5 -_08de12158C: - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _08de1215A4 @ =gUnknown_08401674 - adds r4, r0, r1 - b _081219E6 - .align 2, 0 -_08de121598: .4byte gSelectedOrderFromParty -_08de12159C: .4byte 0x02000000 -_08de1215A0: .4byte 0x000160a0 -_08de1215A4: .4byte gUnknown_08401674 -_08de1215A8: - ldrh r1, [r2, 0x2] -_08de1215AA: - movs r0, 0xD - muls r1, r0 - ldr r0, _08de1215B4 @ =gMoveNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08de1215B4: .4byte gMoveNames -_08121660: - ldr r0, _08de121604 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08de121630 - ldr r1, _08de121608 @ =gLastUsedItem - ldrh r0, [r1] - cmp r0, 0xAF - bne _08de12162C - ldr r2, _08de12160C @ =gLinkPlayers - ldr r0, _08de121610 @ =0x02000000 - ldr r1, _08de121614 @ =0x000160cb - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08de121618 @ =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _08de121624 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _08de12161C @ =gEnigmaBerries - adds r1, r0 - mov r0, sp - bl StringCopy - ldr r1, _08de121620 @ =gUnknown_08400A85 - mov r0, sp - bl de_sub_8073174 - mov r4, sp - b _081219E6 - .align 2, 0 -_08de121604: .4byte gBattleTypeFlags -_08de121608: .4byte gLastUsedItem -_08de12160C: .4byte gLinkPlayers -_08de121610: .4byte 0x02000000 -_08de121614: .4byte 0x000160cb -_08de121618: .4byte gStringBank -_08de12161C: .4byte gEnigmaBerries -_08de121620: .4byte gUnknown_08400A85 -_08de121624: - ldr r4, _08de121628 @ =gUnknown_08400A78 - b _081219E6 - .align 2, 0 -_08de121628: .4byte gUnknown_08400A78 -_08de12162C: - ldrh r0, [r1] - b _08de121634 -_08de121630: - ldr r0, _08de121640 @ =gLastUsedItem - ldrh r0, [r0] -_08de121634: - mov r1, sp - bl CopyItemName - mov r4, sp - b _081219E6 - .align 2, 0 -_08de121640: .4byte gLastUsedItem -_081216EC: - ldr r0, _08de121648 @ =gLastUsedAbility - b _08de12168C - .align 2, 0 -_08de121648: .4byte gLastUsedAbility -_081216F4: - ldr r1, _08de121654 @ =gAbilitiesPerBank - ldr r0, _08de121658 @ =gBankAttacker - b _08de121688 - .align 2, 0 -_08de121654: .4byte gAbilitiesPerBank -_08de121658: .4byte gBankAttacker -_08121704: - ldr r1, _08de121664 @ =gAbilitiesPerBank - ldr r0, _08de121668 @ =gBankTarget - b _08de121688 - .align 2, 0 -_08de121664: .4byte gAbilitiesPerBank -_08de121668: .4byte gBankTarget -_08121714: - ldr r1, _08de121678 @ =gAbilitiesPerBank - ldr r0, _08de12167C @ =0x02000000 - ldr r2, _08de121680 @ =0x00016003 - adds r0, r2 - b _08de121688 - .align 2, 0 -_08de121678: .4byte gAbilitiesPerBank -_08de12167C: .4byte 0x02000000 -_08de121680: .4byte 0x00016003 -_0812172C: - ldr r1, _08de121698 @ =gAbilitiesPerBank - ldr r0, _08de12169C @ =gEffectBank -_08de121688: - ldrb r0, [r0] - adds r0, r1 -_08de12168C: - ldrb r1, [r0] - movs r0, 0xD - muls r1, r0 - ldr r0, _08de1216A0 @ =gAbilityNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08de121698: .4byte gAbilitiesPerBank -_08de12169C: .4byte gEffectBank -_08de1216A0: .4byte gAbilityNames -_0812174C: - ldr r3, _08de1216B8 @ =gTrainerBattleOpponent - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08de1216BC - adds r0, r1, 0 - movs r1, 0 - b _08de1216EE - .align 2, 0 -_08de1216B8: .4byte gTrainerBattleOpponent -_08de1216BC: - ldr r0, _08de1216D4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08de1216D8 - adds r0, r2, 0 - movs r1, 0 - b _08de1216EE - .align 2, 0 -_08de1216D4: .4byte gBattleTypeFlags -_08de1216D8: - movs r2, 0x80 - lsls r2, 4 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08de1216EA - adds r0, r2, 0 - movs r1, 0 - b _08de1216EE -_08de1216EA: - ldrh r1, [r3] - movs r0, 0 -_08de1216EE: - bl de_sub_8041024 - adds r4, r0, 0 - b _081219E6 -_081217C0: - ldr r2, _08de12171C @ =gTrainerBattleOpponent - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08de121724 - mov r0, sp - movs r1, 0xFF - movs r2, 0x8 - bl memset - ldr r1, _08de121720 @ =0x02017002 - mov r0, sp - movs r2, 0x7 - bl memcpy - mov r4, sp - b _081219E6 - .align 2, 0 -_08de12171C: .4byte gTrainerBattleOpponent -_08de121720: .4byte 0x02017002 -_08de121724: - ldr r0, _08de12173C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08de121740 - mov r0, sp - bl get_trainer_name - mov r4, sp - b _081219E6 - .align 2, 0 -_08de12173C: .4byte gBattleTypeFlags -_08de121740: - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _08de121754 - mov r0, sp - bl sub_8135FF4 - mov r4, sp - b _081219E6 -_08de121754: - ldrh r0, [r2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08de121764 @ =gTrainers+4 - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08de121764: .4byte gTrainers+4 -_08121830: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _08de121774 @ =0x03002988 - adds r4, r0, r1 - b _081219E6 - .align 2, 0 -_08de121774: .4byte 0x03002988 -_08121840: - ldr r4, _08de121788 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - b _08de1217AE - .align 2, 0 -_08de121788: .4byte gLinkPlayers -_08121854: - ldr r4, _08de12179C @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - b _08de1217AE - .align 2, 0 -_08de12179C: .4byte gLinkPlayers -_08121868: - ldr r4, _08de1217C0 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x3 -_08de1217AE: - eors r0, r1 - bl sub_803FC34 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r4, 0x8 - adds r4, r1, r4 - b _081219E6 - .align 2, 0 -_08de1217C0: .4byte gLinkPlayers -_0812188C: - ldr r0, _08de1217DC @ =0x02000000 - ldr r3, _08de1217E0 @ =0x00016003 - adds r0, r3 - ldrb r0, [r0] - bl sub_803FC34 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08de1217E4 @ =0x03002988 - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08de1217DC: .4byte 0x02000000 -_08de1217E0: .4byte 0x00016003 -_08de1217E4: .4byte 0x03002988 -_081218B0: - ldr r4, _08de1217EC @ =gSaveBlock2 - b _081219E6 - .align 2, 0 -_08de1217EC: .4byte gSaveBlock2 -_081218B8: - bl sub_8082830 - adds r4, r0, 0 - b _081219E6 -_081218C0: - ldr r4, _08de12182C @ =0x02000000 - ldr r5, _08de121830 @ =0x00016003 - adds r0, r4, r5 - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08121934 - ldr r1, _08de121834 @ =0x0001605e - adds r0, r4, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121838 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de121846 - .align 2, 0 -_08de12182C: .4byte 0x02000000 -_08de121830: .4byte 0x00016003 -_08de121834: .4byte 0x0001605e -_08de121838: .4byte gEnemyParty -_08de12183C: - mov r2, r8 - adds r0, r2, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de121846: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de12183C -_08de12184E: - ldr r0, _08121920 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _08121924 @ =gUnknown_08400791 - cmp r0, 0 - beq _081219E6 - ldr r4, _08121928 @ =gUnknown_08400797 - b _081219E6 - .align 2, 0 -_08121920: .4byte gBattleTypeFlags -_08121924: .4byte gUnknown_08400791 -_08121928: .4byte gUnknown_08400797 -_08121934: - ldr r3, _08121954 @ =0x0001605e - adds r0, r4, r3 - ldrb r1, [r0] -_0812193A: - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121958 @ =gPlayerParty -_08121940: - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0812194A: - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _081219E6 - .align 2, 0 -_08121954: .4byte 0x0001605e -_08121958: .4byte gPlayerParty -_0812195C: - ldr r0, _08121970 @ =0x0000084b - bl FlagGet - lsls r0, 24 - ldr r4, _08121974 @ =gUnknown_084009ED - cmp r0, 0 - beq _081219E6 - ldr r4, _08121978 @ =gUnknown_084009F7 - b _081219E6 - .align 2, 0 -_08121970: .4byte 0x0000084b -_08121974: .4byte gUnknown_084009ED -_08121978: .4byte gUnknown_084009F7 -_0812197C: - ldr r0, _08de1218B8 @ =gBankAttacker - b _08121986 - .align 2, 0 -_08de1218B8: .4byte gBankAttacker -_08121984: - ldr r0, _08121998 @ =gBankTarget -_08121986: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _0812199C @ =gUnknown_084007A7 - cmp r0, 0 - bne _081219E6 - ldr r4, _081219A0 @ =gUnknown_084007AC - b _081219E6 - .align 2, 0 -_08121998: .4byte gBankTarget -_0812199C: .4byte gUnknown_084007A7 -_081219A0: .4byte gUnknown_084007AC -_081219A4: - ldr r0, _081219A8 @ =gBankAttacker - b _081219AE - .align 2, 0 -_081219A8: .4byte gBankAttacker -_081219AC: - ldr r0, _081219C0 @ =gBankTarget -_081219AE: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _081219C4 @ =gUnknown_0840079C - cmp r0, 0 - bne _081219E6 - ldr r4, _081219C8 @ =gUnknown_084007A1 - b _081219E6 - .align 2, 0 -_081219C0: .4byte gBankTarget -_081219C4: .4byte gUnknown_0840079C -_081219C8: .4byte gUnknown_084007A1 -_081219CC: - ldr r0, _081219D0 @ =gBankAttacker - b _081219D6 - .align 2, 0 -_081219D0: .4byte gBankAttacker -_081219D4: - ldr r0, _08121A24 @ =gBankTarget -_081219D6: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _08121A28 @ =gUnknown_084007B2 - cmp r0, 0 - bne _081219E6 - ldr r4, _08121A2C @ =gUnknown_084007B7 -_081219E6: - ldrb r1, [r4] - adds r0, r1, 0 - mov r5, r9 - ldrb r2, [r5] - mov r3, r9 - adds r3, 0x1 - cmp r0, 0xFF - beq _08121A06 -_081219F4: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081219F4 -_08121A06: - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x21 - bne _08121A3C - mov r0, r8 - adds r1, r0, r6 - movs r0, 0xFC - strb r0, [r1] - adds r6, 0x1 - mov r2, r8 - adds r1, r2, r6 - movs r0, 0x9 - strb r0, [r1] - adds r6, 0x1 - b _08121A3C - .align 2, 0 -_08121A24: .4byte gBankTarget -_08121A28: .4byte gUnknown_084007B2 -_08121A2C: .4byte gUnknown_084007B7 -_08121A30: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - mov r3, r9 - adds r3, 0x1 -_08121A3C: - mov r9, r3 - ldrb r1, [r3] -_08121A40: - adds r0, r1, 0 - cmp r0, 0xFF - beq _08121A4A - bl _0812101E -_08121A4A: - mov r5, r8 - adds r1, r5, r6 - mov r2, r9 - ldrb r0, [r2] - strb r0, [r1] - adds r6, 0x1 - adds r0, r6, 0 - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end StrCpyDecodeBattle - - thumb_func_start sub_8121A68 -sub_8121A68: @ 8121A68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r7, r0, 0 - adds r6, r1, 0 - movs r5, 0x1 - movs r0, 0 - mov r8, r0 - movs r0, 0xFF - strb r0, [r6] - ldrb r0, [r7, 0x1] - cmp r0, 0xFF - bne _08121A86 - b _08121D0E -_08121A86: - adds r0, r7, r5 - ldrb r1, [r0] - adds r2, r0, 0 - cmp r1, 0xA - bls _08121A92 - b _08121D04 -_08121A92: - lsls r0, r1, 2 - ldr r1, _08121A9C @ =_08121AA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121A9C: .4byte _08121AA0 - .align 2, 0 -_08121AA0: - .4byte _08121ACC - .4byte _08121AE8 - .4byte _08121B3C - .4byte _08121B54 - .4byte _08121B64 - .4byte _08121BDC - .4byte _08121BF0 - .4byte _08121C02 - .4byte _08121C48 - .4byte _08121C5C - .4byte _08121C78 -_08121ACC: - adds r0, r5, r7 - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - cmp r2, 0xD1 - beq _08de121ADA - cmp r2, 0xD3 - bne _08de121ADC -_08de121ADA: - adds r5, 0x3 -_08de121ADC: - ldr r0, _08121AE4 @ =gBattleStringsTable - adds r1, r2, 0 - subs r1, 0xC - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - b _08121CE2 - .align 2, 0 -_08121AE4: .4byte gBattleStringsTable -_08121AE8: - adds r1, r2, 0 - ldrb r0, [r1, 0x1] - cmp r0, 0x2 - beq _08121B04 - cmp r0, 0x2 - bgt _08121AF8 - cmp r0, 0x1 - beq _08121AFE - b _08121B26 -_08121AF8: - cmp r0, 0x4 - beq _08121B0C - b _08121B26 -_08121AFE: - ldrb r1, [r1, 0x3] - b _08de121B30 -_08121B04: - ldrb r0, [r1, 0x3] - mov r8, r0 - ldrb r0, [r1, 0x4] - lsls r0, 8 - mov r1, r8 - b _08121B22 -_08121B0C: - ldrb r0, [r2, 0x3] - mov r8, r0 - ldrb r0, [r2, 0x4] - lsls r0, 8 - mov r1, r8 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x6] - lsls r0, 24 -_08121B22: - orrs r1, r0 -_08de121B30: - mov r8, r1 -_08121B26: - adds r4, r5, r7 - ldrb r3, [r4, 0x2] - adds r0, r6, 0 - mov r1, r8 - movs r2, 0 - bl ConvertIntToDecimalStringN - adds r0, r5, 0x3 - ldrb r4, [r4, 0x1] - adds r5, r0, r4 - b _08121D04 -_08121B3C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0xD - muls r1, r0 - ldr r0, _08de121B5C @ =gMoveNames - adds r1, r0 - b _08121CE2 - .align 2, 0 -_08de121B5C: .4byte gMoveNames -_08121B54: - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _08de121B6C @ =gTypeNames - b _08121C66 - .align 2, 0 -_08de121B6C: .4byte gTypeNames -_08121B64: - adds r4, r5, r7 - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08121B88 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121B84 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - adds r0, r6, 0 - mov r1, sp - bl StringAppend - b _08121D02 - .align 2, 0 -_08121B84: .4byte gPlayerParty -_08121B88: - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121BD4 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r0, _08121BA0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08121BA8 - ldr r1, _08121BA4 @ =gUnknown_08400797 - b _08121CE2 - .align 2, 0 -_08de121BD4: .4byte gEnemyParty -_08121BA0: .4byte gBattleTypeFlags -_08121BA4: .4byte gUnknown_08400797 -_08121BA8: - ldr r1, _08121BD4 @ =gUnknown_08400791 - adds r0, r6, 0 - bl StringAppend - b _08121D02 - .align 2, 0 -_08121BD4: .4byte gUnknown_08400791 -_08121BDC: - ldr r1, _08121BEC @ =gUnknown_08400F58 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _08121C68 - .align 2, 0 -_08121BEC: .4byte gUnknown_08400F58 -_08121BF0: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - adds r0, r6, 0 - bl GetSpeciesName - b _08121D02 -_08121C02: - adds r4, r5, r7 - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08121C28 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121C24 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData - b _08121C3A - .align 2, 0 -_08121C24: .4byte gPlayerParty -_08121C28: - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121C44 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData -_08121C3A: - adds r0, r6, 0 - bl StringGetEnd10 - b _08121D02 - .align 2, 0 -_08121C44: .4byte gEnemyParty -_08121C48: - ldr r1, _08121C58 @ =gUnknown_08400F78 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _08121C68 - .align 2, 0 -_08121C58: .4byte gUnknown_08400F78 -_08121C5C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - movs r0, 0xD - muls r1, r0 - ldr r0, _08121C74 @ =gAbilityNames -_08121C66: - adds r1, r0 -_08121C68: - adds r0, r6, 0 - bl StringAppend - adds r5, 0x2 - b _08121D04 - .align 2, 0 -_08121C74: .4byte gAbilityNames -_08121C78: - adds r0, r5, r7 - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - ldr r0, _08121CC4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08121CFA - cmp r2, 0xAF - bne _08121CF0 - ldr r2, _08121CC8 @ =gLinkPlayers - ldr r0, _08121CCC @ =0x02000000 - ldr r1, _08121CD0 @ =0x000160cb - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08121CD4 @ =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _08121CE0 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _08121CD8 @ =gEnigmaBerries - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - ldr r1, _08121CDC @ =gUnknown_08400A85 - adds r0, r6, 0 - bl de_sub_8073174 - b _08121D02 - .align 2, 0 -_08121CC4: .4byte gBattleTypeFlags -_08121CC8: .4byte gLinkPlayers -_08121CCC: .4byte 0x02000000 -_08121CD0: .4byte 0x000160cb -_08121CD4: .4byte gStringBank -_08121CD8: .4byte gEnigmaBerries -_08121CDC: .4byte gUnknown_08400A85 -_08121CE0: - ldr r1, _08121CEC @ =gUnknown_08400A78 -_08121CE2: - adds r0, r6, 0 - bl StringAppend - b _08121D02 - .align 2, 0 -_08121CEC: .4byte gUnknown_08400A78 -_08121CF0: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName - b _08121D02 -_08121CFA: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName -_08121D02: - adds r5, 0x3 -_08121D04: - adds r0, r7, r5 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08121D0E - b _08121A86 -_08121D0E: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8121A68 - - thumb_func_start sub_8121D1C -sub_8121D1C: @ 8121D1C - push {r4,r5,lr} - adds r4, r0, 0 - movs r2, 0 - ldr r5, _08121D50 @ =gSelectedOrderFromParty - ldr r3, _08121D54 @ =gUnknown_084016BC -_08121D26: - cmp r2, 0x4 - beq _08121D3C - ldrh r1, [r3] - cmp r1, 0 - bne _08121D32 - adds r2, 0x1 -_08121D32: - ldr r0, [r5] - adds r3, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _08121D26 -_08121D3C: - cmp r2, 0 - blt _08121D68 - cmp r2, 0x2 - bgt _08121D5C - ldr r1, _08121D58 @ =gUnknown_08400E5E - adds r0, r4, 0 - bl StringCopy - b _08121D68 - .align 2, 0 -_08121D50: .4byte gSelectedOrderFromParty -_08121D54: .4byte gUnknown_084016BC -_08121D58: .4byte gUnknown_08400E5E -_08121D5C: - cmp r2, 0x4 - bgt _08121D68 - ldr r1, _08121D70 @ =gUnknown_08400E62 - adds r0, r4, 0 - bl StringCopy -_08121D68: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121D70: .4byte gUnknown_08400E62 - thumb_func_end sub_8121D1C - - thumb_func_start sub_8121D74 -sub_8121D74: @ 8121D74 - push {r4,r5,lr} - adds r3, r0, 0 - movs r4, 0 - b _08121D7E -_08121D7C: - adds r3, 0x1 -_08121D7E: - ldrb r0, [r3] - cmp r0, 0xFF - bne _08121D7C - ldr r1, _08121DB4 @ =gUnknown_084016BC - ldr r5, _08121DB8 @ =gSelectedOrderFromParty - movs r0, 0 - lsls r0, 1 - adds r2, r0, r1 -_08121D8E: - cmp r4, 0x4 - beq _08121DA8 - ldrh r1, [r2] - cmp r1, 0 - bne _08121D9A - adds r4, 0x1 -_08121D9A: - ldr r0, [r5] - adds r2, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _08121D8E - cmp r4, 0x4 - bhi _08121E04 -_08121DA8: - lsls r0, r4, 2 - ldr r1, _08121DBC @ =_08121DC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121DB4: .4byte gUnknown_084016BC -_08121DB8: .4byte gSelectedOrderFromParty -_08121DBC: .4byte _08121DC0 - .align 2, 0 -_08121DC0: - .4byte _08121DD4 - .4byte _08121DDC - .4byte _08121DE4 - .4byte _08121DEC - .4byte _08121DFC -_08121DD4: - ldr r1, _08121DD8 @ =gUnknown_084007C8 - b _08121DEE - .align 2, 0 -_08121DD8: .4byte gUnknown_084007C8 -_08121DDC: - ldr r1, _08121DE0 @ =gUnknown_084007CA - b _08121DEE - .align 2, 0 -_08121DE0: .4byte gUnknown_084007CA -_08121DE4: - ldr r1, _08121DE8 @ =gUnknown_084007CC - b _08121DEE - .align 2, 0 -_08121DE8: .4byte gUnknown_084007CC -_08121DEC: - ldr r1, _08121DF8 @ =gUnknown_084007CE -_08121DEE: - adds r0, r3, 0 - bl StringCopy - b _08121E04 - .align 2, 0 -_08121DF8: .4byte gUnknown_084007CE -_08121DFC: - ldr r1, _08121E0C @ =gUnknown_084007D0 - adds r0, r3, 0 - bl StringCopy -_08121E04: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121E0C: .4byte gUnknown_084007D0 - thumb_func_end sub_8121D74 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s deleted file mode 100644 index 59aa1894a..000000000 --- a/asm-de/berry_blender.s +++ /dev/null @@ -1,9141 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_804E290 -sub_804E290: @ 804E290 - push {lr} - ldr r0, _0804E2B0 @ =gMPlay_SE2 - ldr r1, _0804E2B4 @ =0x0000ffff - ldr r2, _0804E2B8 @ =gUnknown_03004854 - ldr r2, [r2] - adds r2, 0x56 - movs r3, 0 - ldrsh r2, [r2, r3] - subs r2, 0x80 - lsls r2, 17 - asrs r2, 16 - bl m4aMPlayPitchControl - pop {r0} - bx r0 - .align 2, 0 -_0804E2B0: .4byte gMPlay_SE2 -_0804E2B4: .4byte 0x0000ffff -_0804E2B8: .4byte gUnknown_03004854 - thumb_func_end sub_804E290 - - thumb_func_start sub_804E2BC -sub_804E2BC: @ 804E2BC - push {lr} - bl sub_80514A4 - bl sub_80514F0 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2BC - - thumb_func_start sub_804E2D8 -sub_804E2D8: @ 804E2D8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2D8 - - thumb_func_start sub_804E2EC -sub_804E2EC: @ 804E2EC - push {r4-r7,lr} - ldr r1, _0804E308 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - mov r12, r1 - cmp r0, 0x9 - bls _0804E2FC - b _0804E4F4 -_0804E2FC: - lsls r0, 2 - ldr r1, _0804E30C @ =_0804E310 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E308: .4byte gUnknown_03004854 -_0804E30C: .4byte _0804E310 - .align 2, 0 -_0804E310: - .4byte _0804E338 - .4byte _0804E34C - .4byte _0804E380 - .4byte _0804E3C4 - .4byte _0804E3D8 - .4byte _0804E3EC - .4byte _0804E410 - .4byte _0804E434 - .4byte _0804E48C - .4byte _0804E4BC -_0804E338: - ldr r0, _0804E344 @ =gUnknown_08E6C100 - ldr r1, _0804E348 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E344: .4byte gUnknown_08E6C100 -_0804E348: .4byte 0x02010000 -_0804E34C: - ldr r1, _0804E36C @ =gUnknown_08215C2C - ldr r2, _0804E370 @ =0x06004000 - ldr r0, _0804E374 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E378 @ =0x80000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804E37C @ =gUnknown_08215C0C - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E36C: .4byte gUnknown_08215C2C -_0804E370: .4byte 0x06004000 -_0804E374: .4byte 0x040000d4 -_0804E378: .4byte 0x80000200 -_0804E37C: .4byte gUnknown_08215C0C -_0804E380: - ldr r3, _0804E3B8 @ =0x02010000 - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0x80 - lsls r5, 6 - ldr r1, _0804E3BC @ =0x040000d4 - ldr r6, _0804E3C0 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804E396: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804E396 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E3B8: .4byte 0x02010000 -_0804E3BC: .4byte 0x040000d4 -_0804E3C0: .4byte 0x80000800 -_0804E3C4: - ldr r0, _0804E3D0 @ =gUnknown_08E6C920 - ldr r1, _0804E3D4 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3D0: .4byte gUnknown_08E6C920 -_0804E3D4: .4byte 0x02010000 -_0804E3D8: - ldr r0, _0804E3E4 @ =gUnknown_08E6D354 - ldr r1, _0804E3E8 @ =0x02013000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3E4: .4byte gUnknown_08E6D354 -_0804E3E8: .4byte 0x02013000 -_0804E3EC: - ldr r1, _0804E400 @ =0x02010000 - ldr r2, _0804E404 @ =0x0600e000 - ldr r0, _0804E408 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E40C @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E400: .4byte 0x02010000 -_0804E404: .4byte 0x0600e000 -_0804E408: .4byte 0x040000d4 -_0804E40C: .4byte 0x80000800 -_0804E410: - ldr r1, _0804E424 @ =0x02011000 - ldr r2, _0804E428 @ =0x0600f000 - ldr r0, _0804E42C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E430 @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E424: .4byte 0x02011000 -_0804E428: .4byte 0x0600f000 -_0804E42C: .4byte 0x040000d4 -_0804E430: .4byte 0x80000800 -_0804E434: - ldr r3, _0804E474 @ =0x02013000 - movs r2, 0 - adds r6, r3, 0 - ldr r7, _0804E478 @ =gUnknown_0821602C - movs r0, 0x80 - lsls r0, 1 - adds r5, r0, 0 - ldr r4, _0804E47C @ =0x0000027f -_0804E444: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r0] - orrs r1, r5 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r4 - bls _0804E444 - ldr r1, _0804E480 @ =0x06006000 - ldr r0, _0804E484 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _0804E488 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - adds r0, r7, 0 - movs r1, 0x80 - movs r2, 0x20 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E474: .4byte 0x02013000 -_0804E478: .4byte gUnknown_0821602C -_0804E47C: .4byte 0x0000027f -_0804E480: .4byte 0x06006000 -_0804E484: .4byte 0x040000d4 -_0804E488: .4byte 0x80000280 -_0804E48C: - ldr r0, _0804E4AC @ =gUnknown_082163DC - bl LoadSpriteSheet - ldr r0, _0804E4B0 @ =gUnknown_082164F4 - bl LoadSpriteSheet - ldr r0, _0804E4B4 @ =gUnknown_08216454 - bl LoadSpriteSheet -_0804E49E: - ldr r0, _0804E4B8 @ =gUnknown_03004854 -_0804E4A0: - ldr r1, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0804E4F4 - .align 2, 0 -_0804E4AC: .4byte gUnknown_082163DC -_0804E4B0: .4byte gUnknown_082164F4 -_0804E4B4: .4byte gUnknown_08216454 -_0804E4B8: .4byte gUnknown_03004854 -_0804E4BC: - ldr r0, _0804E4E0 @ =gUnknown_08216540 - bl LoadSpriteSheet - ldr r0, _0804E4E4 @ =gUnknown_08216574 - bl LoadSpriteSheet - ldr r0, _0804E4E8 @ =gUnknown_082163EC - bl LoadSpritePalette - ldr r0, _0804E4EC @ =gUnknown_082163E4 - bl LoadSpritePalette - ldr r0, _0804E4F0 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _0804E4F6 - .align 2, 0 -_0804E4E0: .4byte gUnknown_08216540 -_0804E4E4: .4byte gUnknown_08216574 -_0804E4E8: .4byte gUnknown_082163EC -_0804E4EC: .4byte gUnknown_082163E4 -_0804E4F0: .4byte gUnknown_03004854 -_0804E4F4: - movs r0, 0 -_0804E4F6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804E2EC - - thumb_func_start sub_804E4FC -sub_804E4FC: @ 804E4FC - movs r1, 0x80 - lsls r1, 19 - ldr r2, _0804E52C @ =0x00001341 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0xC - movs r2, 0x91 - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _0804E530 @ =0x00000c0d - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804E534 @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bx lr - .align 2, 0 -_0804E52C: .4byte 0x00001341 -_0804E530: .4byte 0x00000c0d -_0804E534: .4byte REG_BG0HOFS - thumb_func_end sub_804E4FC - - thumb_func_start sub_804E538 -sub_804E538: @ 804E538 - push {lr} - ldr r1, _0804E55C @ =gUnknown_03004854 - ldr r0, _0804E560 @ =0x02018000 - str r0, [r1] - adds r2, r0, 0 - adds r2, 0x6F - movs r1, 0 - strb r1, [r0] - strb r1, [r2] - ldr r0, _0804E564 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl sub_804E884 - ldr r0, _0804E568 @ =sub_804E56C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0804E55C: .4byte gUnknown_03004854 -_0804E560: .4byte 0x02018000 -_0804E564: .4byte gSpecialVar_0x8004 -_0804E568: .4byte sub_804E56C - thumb_func_end sub_804E538 - - thumb_func_start sub_804E56C -sub_804E56C: @ 804E56C - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _0804E588 @ =gUnknown_03004854 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bls _0804E57C - b _0804E71A -_0804E57C: - lsls r0, 2 - ldr r1, _0804E58C @ =_0804E590 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E588: .4byte gUnknown_03004854 -_0804E58C: .4byte _0804E590 - .align 2, 0 -_0804E590: - .4byte _0804E5AC - .4byte _0804E614 - .4byte _0804E67C - .4byte _0804E692 - .4byte _0804E6A8 - .4byte _0804E6D4 - .4byte _0804E700 -_0804E5AC: - movs r0, 0x80 - lsls r0, 19 - movs r5, 0 - strh r5, [r0] - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - bl SetVBlankCallback - ldr r4, _0804E60C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r3, _0804E610 @ =gUnknown_03004854 - ldr r2, [r3] - ldrb r0, [r2] - adds r0, 0x1 - movs r1, 0 - strb r0, [r2] - ldr r2, [r3] - movs r3, 0xA0 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - subs r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0xA1 - lsls r0, 1 - adds r3, r2, r0 - movs r0, 0x50 - strh r0, [r3] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - strb r5, [r2, 0x1] - bl sub_8051474 - b _0804E71A - .align 2, 0 -_0804E60C: .4byte gWindowConfig_81E6F68 -_0804E610: .4byte gUnknown_03004854 -_0804E614: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804E620 - b _0804E71A -_0804E620: - movs r4, 0 - ldr r5, _0804E668 @ =gUnknown_082162E4 - ldr r6, _0804E66C @ =gUnknown_03004854 -_0804E626: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804E670 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x5C - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x5C - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804E674 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804E626 - ldr r0, _0804E678 @ =sub_804E2BC - bl SetVBlankCallback - b _0804E6BE - .align 2, 0 -_0804E668: .4byte gUnknown_082162E4 -_0804E66C: .4byte gUnknown_03004854 -_0804E670: .4byte gSpriteTemplate_82163F4 -_0804E674: .4byte gSprites -_0804E678: .4byte sub_804E2BC -_0804E67C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8051474 - b _0804E6BE -_0804E692: - bl sub_804E4FC - ldr r0, _0804E6A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E71A - b _0804E6BE - .align 2, 0 -_0804E6A4: .4byte gPaletteFade -_0804E6A8: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_0804E6BE: - ldr r0, _0804E6D0 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804E71A - .align 2, 0 -_0804E6CC: .4byte gOtherText_BlenderChooseBerry -_0804E6D0: .4byte gUnknown_03004854 -_0804E6D4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804E71A - ldr r0, _0804E6FC @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E71A - .align 2, 0 -_0804E6FC: .4byte gUnknown_03004854 -_0804E700: - ldr r0, _0804E730 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0804E71A - bl sub_80A6978 - ldr r0, _0804E734 @ =gUnknown_03004854 - ldr r0, [r0] - strb r4, [r0] -_0804E71A: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E730: .4byte gPaletteFade -_0804E734: .4byte gUnknown_03004854 - thumb_func_end sub_804E56C - - thumb_func_start sub_804E738 -sub_804E738: @ 804E738 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - subs r1, r2 - ldrh r0, [r4, 0x3C] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r3, [r4, 0x2E] - adds r0, r3 - strh r0, [r4, 0x2E] - subs r2, 0x1 - strh r2, [r4, 0x36] - lsls r0, 16 - lsls r1, 16 - cmp r0, r1 - bge _0804E786 - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x36] - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0804E780 - adds r0, r4, 0 - bl DestroySprite - b _0804E786 -_0804E780: - movs r0, 0x74 - bl PlaySE -_0804E786: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804E738 - - thumb_func_start sub_804E794 -sub_804E794: @ 804E794 - push {r4-r6,lr} - ldr r5, [sp, 0x10] - ldr r6, [sp, 0x14] - lsls r2, 16 - lsrs r2, 16 - movs r4, 0 - strh r2, [r0, 0x2E] - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - strh r3, [r0, 0x34] - movs r1, 0xA - strh r1, [r0, 0x36] - strh r4, [r0, 0x38] - strh r5, [r0, 0x3A] - strh r6, [r0, 0x3C] - ldr r1, _0804E7BC @ =sub_804E738 - str r1, [r0, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E7BC: .4byte sub_804E738 - thumb_func_end sub_804E794 - - thumb_func_start sub_804E7C0 -sub_804E7C0: @ 804E7C0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r0, 24 - movs r1, 0xF6 - lsls r1, 23 - adds r0, r1 - lsrs r0, 24 - movs r3, 0x1 - ands r3, r6 - movs r1, 0 - movs r2, 0x50 - bl sub_80A7DEC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - mov r8, r2 - add r8, r0 - mov r3, r8 - lsls r3, 2 - mov r8, r3 - ldr r0, _0804E83C @ =gSprites - add r8, r0 - ldr r5, _0804E840 @ =gUnknown_08216594 - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 1 - adds r0, r4, r5 - movs r6, 0 - ldrsh r1, [r0, r6] - adds r0, r5, 0x2 - adds r0, r4, r0 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r0, r5, 0x4 - adds r0, r4, r0 - movs r6, 0 - ldrsh r3, [r0, r6] - adds r0, r5, 0x6 - adds r0, r4, r0 - movs r6, 0 - ldrsh r0, [r0, r6] - str r0, [sp] - adds r5, 0x8 - adds r4, r5 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - mov r0, r8 - bl sub_804E794 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E83C: .4byte gSprites -_0804E840: .4byte gUnknown_08216594 - thumb_func_end sub_804E7C0 - - thumb_func_start sub_804E844 -sub_804E844: @ 804E844 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - adds r0, r5, 0 - adds r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r4, r0, 0 - strh r5, [r6] - adds r0, r6, 0x2 - adds r1, r4, 0 - bl StringCopy - ldrb r0, [r4, 0x15] - strb r0, [r6, 0x9] - ldrb r0, [r4, 0x16] - strb r0, [r6, 0xA] - ldrb r0, [r4, 0x17] - strb r0, [r6, 0xB] - ldrb r0, [r4, 0x18] - strb r0, [r6, 0xC] - ldrb r0, [r4, 0x19] - strb r0, [r6, 0xD] - ldrb r0, [r4, 0x1A] - strb r0, [r6, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_804E844 - - thumb_func_start sub_804E884 -sub_804E884: @ 804E884 - push {r4,r5,lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804E89E - ldr r2, _0804E8AC @ =gLinkPlayers - movs r3, 0x5 - adds r0, r2, 0 - adds r0, 0x54 -_0804E896: - strh r3, [r0, 0x1A] - subs r0, 0x1C - cmp r0, r2 - bge _0804E896 -_0804E89E: - cmp r1, 0x1 - beq _0804E8C4 - cmp r1, 0x1 - bgt _0804E8B0 - cmp r1, 0 - beq _0804E8BA - b _0804E974 - .align 2, 0 -_0804E8AC: .4byte gLinkPlayers -_0804E8B0: - cmp r1, 0x2 - beq _0804E8F8 - cmp r1, 0x3 - beq _0804E93C - b _0804E974 -_0804E8BA: - ldr r0, _0804E8C0 @ =gUnknown_03004834 - strb r1, [r0] - b _0804E974 - .align 2, 0 -_0804E8C0: .4byte gUnknown_03004834 -_0804E8C4: - ldr r0, _0804E8E4 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E8E8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x2 - strb r1, [r0] - ldr r4, _0804E8EC @ =gLinkPlayers + 0x8 - ldr r1, _0804E8F0 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r4, 0x1C - ldr r0, _0804E8F4 @ =gUnknown_082162B8 - ldr r1, [r0] - b _0804E920 - .align 2, 0 -_0804E8E4: .4byte gUnknown_03004834 -_0804E8E8: .4byte gUnknown_03004854 -_0804E8EC: .4byte gLinkPlayers + 0x8 -_0804E8F0: .4byte gSaveBlock2 -_0804E8F4: .4byte gUnknown_082162B8 -_0804E8F8: - ldr r0, _0804E928 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E92C @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x3 - strb r1, [r0] - ldr r4, _0804E930 @ =gLinkPlayers + 0x8 - ldr r1, _0804E934 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E938 @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r4, 0x38 - ldr r1, [r5, 0x4] -_0804E920: - adds r0, r4, 0 - bl StringCopy - b _0804E974 - .align 2, 0 -_0804E928: .4byte gUnknown_03004834 -_0804E92C: .4byte gUnknown_03004854 -_0804E930: .4byte gLinkPlayers + 0x8 -_0804E934: .4byte gSaveBlock2 -_0804E938: .4byte gUnknown_082162B8 -_0804E93C: - ldr r0, _0804E97C @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E980 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x4 - strb r1, [r0] - ldr r4, _0804E984 @ =gLinkPlayers + 0x8 - ldr r1, _0804E988 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E98C @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r0, r4, 0 - adds r0, 0x38 - ldr r1, [r5, 0x4] - bl StringCopy - adds r4, 0x54 - ldr r1, [r5, 0x8] - adds r0, r4, 0 - bl StringCopy -_0804E974: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E97C: .4byte gUnknown_03004834 -_0804E980: .4byte gUnknown_03004854 -_0804E984: .4byte gLinkPlayers + 0x8 -_0804E988: .4byte gSaveBlock2 -_0804E98C: .4byte gUnknown_082162B8 - thumb_func_end sub_804E884 - - thumb_func_start sub_804E990 -sub_804E990: @ 804E990 - push {r4,r5,lr} - movs r0, 0x80 - lsls r0, 19 - movs r2, 0 - strh r2, [r0] - ldr r3, _0804E9D8 @ =gUnknown_03004854 - ldr r0, _0804E9DC @ =0x02018000 - str r0, [r3] - movs r1, 0 - strb r2, [r0] - movs r2, 0x9A - lsls r2, 1 - adds r0, r2 - str r1, [r0] - movs r2, 0 - ldr r5, _0804E9E0 @ =gSpecialVar_0x8004 - adds r4, r3, 0 - movs r3, 0 -_0804E9B4: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x80 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0804E9B4 - ldrb r0, [r5] - bl sub_804E884 - ldrh r0, [r5] - cmp r0, 0 - bne _0804E9E8 - ldr r0, _0804E9E4 @ =sub_804E9F8 - bl SetMainCallback2 - b _0804E9EE - .align 2, 0 -_0804E9D8: .4byte gUnknown_03004854 -_0804E9DC: .4byte 0x02018000 -_0804E9E0: .4byte gSpecialVar_0x8004 -_0804E9E4: .4byte sub_804E9F8 -_0804E9E8: - ldr r0, _0804E9F4 @ =sub_804F378 - bl SetMainCallback2 -_0804E9EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E9F4: .4byte sub_804F378 - thumb_func_end sub_804E990 - - thumb_func_start sub_804E9F8 -sub_804E9F8: @ 804E9F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804EA18 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x66 - bls _0804EA0E - b _0804F0CE -_0804EA0E: - lsls r0, 2 - ldr r1, _0804EA1C @ =_0804EA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804EA18: .4byte gUnknown_03004854 -_0804EA1C: .4byte _0804EA20 - .align 2, 0 -_0804EA20: - .4byte _0804EBBC - .4byte _0804EC74 - .4byte _0804EC94 - .4byte _0804ECE8 - .4byte _0804ECFA - .4byte _0804ED14 - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804ED48 - .4byte _0804ED94 - .4byte _0804EDB8 - .4byte _0804EE46 - .4byte _0804EEA0 - .4byte _0804EF16 - .4byte _0804EF34 - .4byte _0804EFD8 - .4byte _0804F00C - .4byte _0804F0CE - .4byte _0804F020 - .4byte _0804F024 - .4byte _0804F02A - .4byte _0804F03A - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F084 - .4byte _0804F0A0 - .4byte _0804F0BC -_0804EBBC: - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804EC60 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804EC64 @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804EC68 @ =gLinkType - ldr r2, _0804EC6C @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r3, _0804EC70 @ =gUnknown_03004854 - ldr r1, [r3] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, [r3] - adds r4, r0, 0 - adds r4, 0x4E - movs r1, 0 - strh r2, [r4] - adds r0, 0x7E - strb r1, [r0] - ldr r1, [r3] - movs r4, 0xA2 - lsls r4, 1 - adds r0, r1, r4 - strh r2, [r0] - adds r4, 0x2 - adds r0, r1, r4 - strh r2, [r0] - movs r5, 0 - movs r6, 0 - mov r8, r3 - movs r7, 0xA6 - lsls r7, 1 -_0804EC18: - ldr r0, [r3] - lsls r1, r5, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r4, r5, 0x1 - adds r1, r5 - lsls r1, 1 - movs r2, 0x2 -_0804EC2A: - ldr r0, [r3] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804EC2A - adds r5, r4, 0 - cmp r5, 0x3 - ble _0804EC18 - mov r0, r8 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x7C - movs r2, 0 - movs r1, 0 - strh r1, [r0] - subs r0, 0x26 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - strb r2, [r3, 0x1] - b _0804F0CE - .align 2, 0 -_0804EC60: .4byte sub_804E2BC -_0804EC64: .4byte gWindowConfig_81E6F68 -_0804EC68: .4byte gLinkType -_0804EC6C: .4byte 0x00004422 -_0804EC70: .4byte gUnknown_03004854 -_0804EC74: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804EC80 - b _0804F0CE -_0804EC80: - ldr r0, _0804EC90 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F0CE - .align 2, 0 -_0804EC90: .4byte gUnknown_03004854 -_0804EC94: - movs r5, 0 - ldr r4, _0804ECD8 @ =gUnknown_082162E4 - ldr r6, _0804ECDC @ =gUnknown_03004854 -_0804EC9A: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r5 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804ECE4 @ =gSprites - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EC9A - b _0804F0AA - .align 2, 0 -_0804ECD8: .4byte gUnknown_082162E4 -_0804ECDC: .4byte gUnknown_03004854 -_0804ECE0: .4byte gSpriteTemplate_82163F4 -_0804ECE4: .4byte gSprites -_0804ECE8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _0804F0AA -_0804ECFA: - bl sub_804E4FC - ldr r0, _0804ED10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804ED0C - b _0804F0CE -_0804ED0C: - b _0804F0AA - .align 2, 0 -_0804ED10: .4byte gPaletteFade -_0804ED14: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804ED40 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xE - bl MenuPrint - ldr r2, _0804ED44 @ =gUnknown_03004854 - ldr r1, [r2] - movs r3, 0 - movs r0, 0x8 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r3, [r0] - b _0804F0CE - .align 2, 0 -_0804ED40: .4byte gOtherText_LinkStandby3 -_0804ED44: .4byte gUnknown_03004854 -_0804ED48: - mov r2, r8 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - movs r5, 0 - strb r0, [r1] - ldr r0, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r5, [r0] - ldr r0, [r2] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r1, _0804ED8C @ =gScriptItemId - ldrh r1, [r1] - bl sub_804E844 - ldr r0, _0804ED90 @ =gBlockSendBuffer - mov r2, r8 - ldr r1, [r2] - adds r1, r4 - movs r2, 0x10 - bl memcpy - bl sub_80084A4 - mov r3, r8 - ldr r0, [r3] - subs r4, 0x4C - adds r0, r4 - str r5, [r0] - b _0804F0CE - .align 2, 0 -_0804ED8C: .4byte gScriptItemId -_0804ED90: .4byte gBlockSendBuffer -_0804ED94: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EDA0 - b _0804F0CE -_0804EDA0: - bl ResetBlockReceivedFlags - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _0804EDB0 - b _0804F0AA -_0804EDB0: - movs r0, 0x4 - bl sub_8007E9C - b _0804F0AA -_0804EDB8: - mov r0, r8 - ldr r1, [r0] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _0804EDCE - b _0804F0CE -_0804EDCE: - bl MenuZeroFillScreen - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_8008198 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0804EDE6 - b _0804F0CE -_0804EDE6: - movs r5, 0 - mov r7, r8 - movs r6, 0xBE - lsls r6, 1 - b _0804EE18 -_0804EDF0: - ldr r0, [r7] - lsls r4, r5, 4 - adds r0, r4, r0 - adds r0, r6 - lsls r1, r5, 8 - ldr r2, _0804EE2C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x10 - bl memcpy - ldr r0, [r7] - lsls r2, r5, 1 - adds r1, r0, 0 - adds r1, 0x80 - adds r1, r2 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r5, 0x1 -_0804EE18: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - blt _0804EDF0 - bl ResetBlockReceivedFlags - b _0804F0AA - .align 2, 0 -_0804EE2C: .4byte gBlockRecvBuffer -_0804EE30: - ldrb r1, [r4] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r5, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804EE7A -_0804EE46: - bl GetLinkPlayerCount - ldr r2, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x88 - strb r0, [r1] - movs r5, 0 - ldr r2, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r4, r2, r3 - ldr r1, _0804EE9C @ =gUnknown_082162EC - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - ldrb r3, [r4] - adds r0, r1 -_0804EE6C: - ldrb r1, [r0] - cmp r3, r1 - beq _0804EE30 - adds r0, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EE6C -_0804EE7A: - ldr r3, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r3] - movs r4, 0x98 - lsls r4, 1 - adds r2, r1, r4 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F0AE - .align 2, 0 -_0804EE98: .4byte gUnknown_03004854 -_0804EE9C: .4byte gUnknown_082162EC -_0804EEA0: - mov r1, r8 - ldr r2, [r1] - movs r3, 0x98 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804EEB6 - b _0804F0CE -_0804EEB6: - movs r4, 0x9E - lsls r4, 1 - adds r0, r2, r4 - adds r1, r2, 0 - adds r1, 0x88 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0804EF00 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r0, r8 - ldr r2, [r0] - ldr r3, _0804EEF4 @ =gUnknown_082162F8 - ldr r1, _0804EEF8 @ =gUnknown_08216300 - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldr r3, _0804EEFC @ =0xffffa800 - adds r1, r3, 0 - ldrh r0, [r0] - adds r1, r0 - adds r2, 0x54 - strh r1, [r2] - b _0804EF06 - .align 2, 0 -_0804EEF4: .4byte gUnknown_082162F8 -_0804EEF8: .4byte gUnknown_08216300 -_0804EEFC: .4byte 0xffffa800 -_0804EF00: - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] -_0804EF06: - mov r4, r8 - ldr r0, [r4] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _0804F0CE -_0804EF16: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EF22 - b _0804F0CE -_0804EF22: - ldr r2, _0804EF30 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - b _0804EFBC - .align 2, 0 -_0804EF30: .4byte gUnknown_03004854 -_0804EF34: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - mov r4, r8 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804EFB8 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804EFC8 @ =gUnknown_082162F8 - ldr r1, _0804EFCC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804EFD0 @ =REG_BG2CNT - ldr r4, _0804EFD4 @ =0x00004882 - adds r0, r4, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - bl sub_804F238 - bl BuyMenuDrawFieldObjects -_0804EFB8: - mov r1, r8 - ldr r0, [r1] -_0804EFBC: - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804EFC8: .4byte gUnknown_082162F8 -_0804EFCC: .4byte gUnknown_08216300 -_0804EFD0: .4byte REG_BG2CNT -_0804EFD4: .4byte 0x00004882 -_0804EFD8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804EFF6 - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804EFF6: - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r0, [r0] - movs r4, 0xB4 - lsls r4, 1 - adds r0, r4 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804F008: .4byte gUnknown_03004854 -_0804F00C: - ldr r0, _0804F01C @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - b _0804F0AA - .align 2, 0 -_0804F01C: .4byte gSpriteTemplate_8216548 -_0804F020: - mov r0, r8 - b _0804F0AC -_0804F024: - bl sub_80084A4 - b _0804F0AA -_0804F02A: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE - bl sub_8007E24 - b _0804F0AA -_0804F03A: - mov r1, r8 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - movs r1, 0 - movs r0, 0x80 - strh r0, [r2] - movs r2, 0x96 - lsls r2, 1 - adds r0, r3, r2 - str r1, [r0] - ldr r0, _0804F07C @ =sub_80501FC - bl SetMainCallback2 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F080 @ =0x00000193 - cmp r0, r4 - beq _0804F074 - bl GetCurrentMapMusic - mov r3, r8 - ldr r1, [r3] - movs r2, 0xBC - lsls r2, 1 - adds r1, r2 - strh r0, [r1] -_0804F074: - adds r0, r4, 0 - bl PlayBGM - b _0804F0CE - .align 2, 0 -_0804F07C: .4byte sub_80501FC -_0804F080: .4byte 0x00000193 -_0804F084: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804F09C @ =gOtherText_LinkNotFound - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0804F0AA - .align 2, 0 -_0804F09C: .4byte gOtherText_LinkNotFound -_0804F0A0: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE -_0804F0AA: - ldr r0, _0804F0B8 @ =gUnknown_03004854 -_0804F0AC: - ldr r1, [r0] -_0804F0AE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F0CE - .align 2, 0 -_0804F0B8: .4byte gUnknown_03004854 -_0804F0BC: - ldr r0, _0804F0EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804F0CE - ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0804F0CE: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F0EC: .4byte gPaletteFade -_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_804E9F8 - - thumb_func_start sub_804F0F4 -sub_804F0F4: @ 804F0F4 - push {r4,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804F158 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804F15C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804F160 @ =gLinkType - ldr r2, _0804F164 @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804F168 @ =gUnknown_03004854 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x4E - movs r1, 0 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F158: .4byte sub_804E2BC -_0804F15C: .4byte gWindowConfig_81E6F68 -_0804F160: .4byte gLinkType -_0804F164: .4byte 0x00004422 -_0804F168: .4byte gUnknown_03004854 - thumb_func_end sub_804F0F4 - - thumb_func_start task_tutorial_oak_boy_girl -task_tutorial_oak_boy_girl: @ 804F16C - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r0, 24 - adds r2, r0, 0 - adds r2, 0x18 - ldr r0, _0804F1A8 @ =gUnknown_03004854 - ldr r0, [r0] - lsrs r1, 23 - adds r0, 0xA2 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0804F1AC @ =gUnknown_08216303 - adds r0, r1 - ldrb r1, [r0] - cmp r2, r1 - bcc _0804F1B4 - adds r0, r1, 0 - adds r0, 0x30 - cmp r2, r0 - bcs _0804F1B4 - subs r0, 0x1C - cmp r2, r0 - bcc _0804F1B0 - adds r0, 0x8 - cmp r2, r0 - bcs _0804F1B0 - movs r0, 0x2 - b _0804F1B6 - .align 2, 0 -_0804F1A8: .4byte gUnknown_03004854 -_0804F1AC: .4byte gUnknown_08216303 -_0804F1B0: - movs r0, 0x1 - b _0804F1B6 -_0804F1B4: - movs r0, 0 -_0804F1B6: - pop {r1} - bx r1 - thumb_func_end task_tutorial_oak_boy_girl - - thumb_func_start sub_804F1BC -sub_804F1BC: @ 804F1BC - push {r4-r7,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r4, 0 - cmp r0, 0xAF - bne _0804F1EE - movs r3, 0 - subs r5, r1, 0x1 - adds r2, 0x9 -_0804F1D2: - adds r0, r2, r4 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _0804F1E0 - adds r4, r3, 0 -_0804F1E0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _0804F1D2 - adds r0, r4, 0x5 - b _0804F204 -_0804F1EE: - subs r0, 0x85 - lsls r0, 16 - lsrs r4, r0, 16 - subs r5, r1, 0x1 - cmp r4, 0x4 - bls _0804F208 - adds r0, r4, 0 - movs r1, 0x5 - bl __umodsi3 - adds r0, 0x5 -_0804F204: - lsls r0, 16 - lsrs r4, r0, 16 -_0804F208: - movs r3, 0 - cmp r3, r5 - bge _0804F22E - ldr r7, _0804F234 @ =gUnknown_082165BC - lsls r0, r4, 1 - adds r6, r0, r4 -_0804F214: - adds r4, r3, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - adds r1, r3, r6 - adds r1, r7 - ldrb r1, [r1] - adds r1, 0x85 - bl sub_80516C4 - lsls r4, 16 - lsrs r3, r4, 16 - cmp r3, r5 - blt _0804F214 -_0804F22E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F234: .4byte gUnknown_082165BC - thumb_func_end sub_804F1BC - - thumb_func_start sub_804F238 -sub_804F238: @ 804F238 - push {r4-r7,lr} - movs r4, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 - movs r6, 0xFF - ldr r5, _0804F2A4 @ =gUnknown_082162EC -_0804F242: - ldr r3, [r7] - lsls r2, r4, 1 - adds r0, r3, 0 - adds r0, 0xA2 - adds r0, r2 - strh r6, [r0] - adds r1, r3, 0 - adds r1, 0x9A - adds r1, r2 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F242 - movs r3, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 -_0804F270: - movs r4, 0 - adds r6, r3, 0x1 - lsls r5, r3, 1 -_0804F276: - ldr r2, [r7] - lsls r0, r4, 1 - adds r1, r2, 0 - adds r1, 0x9A - adds r1, r0 - ldrh r0, [r1] - cmp r0, r3 - bne _0804F28E - adds r0, r2, 0 - adds r0, 0xA2 - adds r0, r5 - strh r4, [r0] -_0804F28E: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F276 - adds r3, r6, 0 - cmp r3, 0x3 - ble _0804F270 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F2A0: .4byte gUnknown_03004854 -_0804F2A4: .4byte gUnknown_082162EC - thumb_func_end sub_804F238 - - thumb_func_start BuyMenuDrawFieldObjects -BuyMenuDrawFieldObjects: @ 804F2A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r7, _0804F360 @ =gUnknown_03004854 - ldr r0, _0804F364 @ =gUnknown_082162D4 - mov r8, r0 -_0804F2B6: - ldr r2, [r7] - lsls r4, r6, 1 - adds r0, r2, 0 - adds r0, 0x9A - adds r3, r0, r4 - ldrh r0, [r3] - cmp r0, 0xFF - beq _0804F34A - ldr r5, _0804F368 @ =gStringVar1 - adds r1, r2, 0 - adds r1, 0x5C - ldrh r3, [r3] - adds r1, r3 - adds r0, r2, 0 - adds r0, 0x60 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r1, r0, 0 - adds r1, 0x9A - adds r1, r4 - adds r0, 0x5C - ldrh r1, [r1] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F36C @ =gSprites - adds r0, r1 - lsls r1, r6, 24 - lsrs r1, 24 - bl StartSpriteAnim - bl GetMultiplayerId - lsls r0, 24 - ldr r1, [r7] - adds r1, 0x9A - adds r1, r4 - lsrs r0, 24 - ldrh r1, [r1] - cmp r0, r1 - bne _0804F31A - adds r0, r5, 0 - ldr r1, _0804F370 @ =gUnknown_082162C4 - bl StringCopy - adds r5, r0, 0 -_0804F31A: - ldr r0, [r7] - adds r0, 0x9A - adds r0, r4 - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _0804F374 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r5, 0 - bl StringCopy - mov r0, r8 - ldrb r1, [r0] - lsls r1, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0x1] - lsls r2, 3 - ldr r0, _0804F368 @ =gStringVar1 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_0804F34A: - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0804F2B6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F360: .4byte gUnknown_03004854 -_0804F364: .4byte gUnknown_082162D4 -_0804F368: .4byte gStringVar1 -_0804F36C: .4byte gSprites -_0804F370: .4byte gUnknown_082162C4 -_0804F374: .4byte gLinkPlayers + 0x8 - thumb_func_end BuyMenuDrawFieldObjects - - thumb_func_start sub_804F378 -sub_804F378: @ 804F378 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804F398 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x15 - bls _0804F38E - b _0804F7E6 -_0804F38E: - lsls r0, 2 - ldr r1, _0804F39C @ =_0804F3A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804F398: .4byte gUnknown_03004854 -_0804F39C: .4byte _0804F3A0 - .align 2, 0 -_0804F3A0: - .4byte _0804F3F8 - .4byte _0804F474 - .4byte _0804F494 - .4byte _0804F4EC - .4byte _0804F518 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F54C - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F578 - .4byte _0804F5C8 - .4byte _0804F636 - .4byte _0804F650 - .4byte _0804F6F8 - .4byte _0804F720 - .4byte _0804F7E6 - .4byte _0804F73C - .4byte _0804F742 - .4byte _0804F748 - .4byte _0804F754 -_0804F3F8: - bl sub_804F0F4 - ldr r4, _0804F46C @ =gScriptItemId - ldrh r1, [r4] - movs r0, 0 - bl sub_80516C4 - ldr r5, _0804F470 @ =gUnknown_03004854 - ldr r0, [r5] - movs r6, 0xBE - lsls r6, 1 - adds r0, r6 - ldrh r1, [r4] - bl sub_804E844 - ldrh r0, [r4] - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x88 - ldrb r1, [r1] - adds r2, r6 - bl sub_804F1BC - movs r4, 0 - movs r6, 0 - mov r8, r5 - movs r7, 0xA6 - lsls r7, 1 -_0804F430: - ldr r0, [r5] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r3, r4, 0x1 - adds r1, r4 - lsls r1, 1 - movs r2, 0x2 -_0804F442: - ldr r0, [r5] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F442 - adds r4, r3, 0 - cmp r4, 0x3 - ble _0804F430 - mov r0, r8 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x7C - movs r2, 0 - movs r0, 0 - strh r0, [r1] - strb r2, [r3, 0x1] - b _0804F7E6 - .align 2, 0 -_0804F46C: .4byte gScriptItemId -_0804F470: .4byte gUnknown_03004854 -_0804F474: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804F480 - b _0804F7E6 -_0804F480: - ldr r0, _0804F490 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F7E6 - .align 2, 0 -_0804F490: .4byte gUnknown_03004854 -_0804F494: - movs r4, 0 - ldr r5, _0804F4DC @ =gUnknown_082162E4 - ldr r6, _0804F4E0 @ =gUnknown_03004854 -_0804F49A: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F4E8 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F49A - ldr r0, _0804F4E0 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F4DC: .4byte gUnknown_082162E4 -_0804F4E0: .4byte gUnknown_03004854 -_0804F4E4: .4byte gSpriteTemplate_82163F4 -_0804F4E8: .4byte gSprites -_0804F4EC: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0804F514 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r4, [r0] - b _0804F7E6 - .align 2, 0 -_0804F514: .4byte gUnknown_03004854 -_0804F518: - mov r2, r8 - ldr r1, [r2] - movs r3, 0x98 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x2 - bne _0804F530 - bl sub_804E4FC -_0804F530: - ldr r0, _0804F548 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804F53E - b _0804F7E6 -_0804F53E: - mov r5, r8 - ldr r1, [r5] - movs r0, 0x8 - strb r0, [r1] - b _0804F7E6 - .align 2, 0 -_0804F548: .4byte gPaletteFade -_0804F54C: - mov r0, r8 - ldr r1, [r0] - movs r2, 0 - movs r0, 0xB - strb r0, [r1] - mov r1, r8 - ldr r0, [r1] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r2, [r0] - b _0804F7E6 -_0804F564: - lsls r1, 1 - adds r0, r3, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804F5A2 -_0804F578: - movs r4, 0 - ldr r2, _0804F5C0 @ =gUnknown_082162EC - ldr r0, _0804F5C4 @ =gUnknown_03004854 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - movs r5, 0x9E - lsls r5, 1 - adds r1, r3, r5 - ldrb r1, [r1] - adds r0, r2 -_0804F594: - ldrb r2, [r0] - cmp r1, r2 - beq _0804F564 - adds r0, 0x1 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F594 -_0804F5A2: - ldr r3, _0804F5C4 @ =gUnknown_03004854 - ldr r1, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r2, r1, r5 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F74C - .align 2, 0 -_0804F5C0: .4byte gUnknown_082162EC -_0804F5C4: .4byte gUnknown_03004854 -_0804F5C8: - mov r1, r8 - ldr r3, [r1] - movs r2, 0x98 - lsls r2, 1 - adds r1, r3, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804F5DE - b _0804F7E6 -_0804F5DE: - movs r5, 0x9E - lsls r5, 1 - adds r0, r3, r5 - adds r4, r3, 0 - adds r4, 0x88 - ldrb r0, [r0] - ldrb r1, [r4] - cmp r0, r1 - bcc _0804F620 - ldr r2, _0804F614 @ =gUnknown_082162F8 - ldr r1, _0804F618 @ =gUnknown_08216300 - ldrb r0, [r4] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldr r2, _0804F61C @ =0xffffa800 - adds r1, r2, 0 - ldrh r0, [r0] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldrb r0, [r3] - adds r0, 0x1 - b _0804F624 - .align 2, 0 -_0804F614: .4byte gUnknown_082162F8 -_0804F618: .4byte gUnknown_08216300 -_0804F61C: .4byte 0xffffa800 -_0804F620: - ldrb r0, [r3] - subs r0, 0x1 -_0804F624: - strb r0, [r3] - mov r3, r8 - ldr r0, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - str r1, [r0] - b _0804F7E6 -_0804F636: - mov r1, r8 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl sub_804F238 - movs r0, 0x2B - bl PlaySE - mov r2, r8 - ldr r0, [r2] - b _0804F710 -_0804F650: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r5, 0x80 - lsls r5, 3 - adds r1, r5, 0 - orrs r0, r1 - strh r0, [r2] - mov r0, r8 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r5, [r1] - adds r0, r5 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804F6D6 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804F6E8 @ =gUnknown_082162F8 - ldr r1, _0804F6EC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804F6F0 @ =REG_BG2CNT - ldr r5, _0804F6F4 @ =0x00004882 - adds r0, r5, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - movs r0, 0x34 - bl PlaySE - bl BuyMenuDrawFieldObjects -_0804F6D6: - mov r1, r8 - ldr r0, [r1] - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F6E8: .4byte gUnknown_082162F8 -_0804F6EC: .4byte gUnknown_08216300 -_0804F6F0: .4byte REG_BG2CNT -_0804F6F4: .4byte 0x00004882 -_0804F6F8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804F70C - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804F70C: - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r0, [r0] -_0804F710: - movs r3, 0xB4 - lsls r3, 1 - adds r0, r3 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F71C: .4byte gUnknown_03004854 -_0804F720: - ldr r0, _0804F734 @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - ldr r0, _0804F738 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F734: .4byte gSpriteTemplate_8216548 -_0804F738: .4byte gUnknown_03004854 -_0804F73C: - mov r5, r8 - ldr r1, [r5] - b _0804F74C -_0804F742: - mov r0, r8 - ldr r1, [r0] - b _0804F74C -_0804F748: - mov r2, r8 - ldr r1, [r2] -_0804F74C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F7E6 -_0804F754: - bl sub_804F81C - ldr r3, _0804F804 @ =gUnknown_03004854 - ldr r4, [r3] - adds r5, r4, 0 - adds r5, 0x56 - movs r2, 0 - movs r1, 0 - movs r0, 0x80 - strh r0, [r5] - movs r5, 0x96 - lsls r5, 1 - adds r0, r4, r5 - str r1, [r0] - ldr r1, _0804F808 @ =0x0000014b - adds r0, r4, r1 - strb r2, [r0] - ldr r0, [r3] - adds r0, 0x7E - strb r2, [r0] - ldr r0, _0804F80C @ =sub_80501FC - bl SetMainCallback2 - movs r4, 0 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bge _0804F7B8 - movs r5, 0xA0 - lsls r5, 20 - ldr r6, _0804F814 @ =gUnknown_08216308 -_0804F792: - ldm r6!, {r0} - lsrs r1, r5, 24 - bl CreateTask - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - strb r0, [r1] - movs r3, 0x80 - lsls r3, 17 - adds r5, r3 - adds r4, 0x1 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - blt _0804F792 -_0804F7B8: - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F818 @ =0x00000193 - cmp r0, r4 - beq _0804F7D6 - bl GetCurrentMapMusic - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r5, 0xBC - lsls r5, 1 - adds r1, r5 - strh r0, [r1] -_0804F7D6: - adds r0, r4, 0 - bl PlayBGM - movs r0, 0x35 - bl PlaySE - bl sub_804E290 -_0804F7E6: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F804: .4byte gUnknown_03004854 -_0804F808: .4byte 0x0000014b -_0804F80C: .4byte sub_80501FC -_0804F810: .4byte gSpecialVar_0x8004 -_0804F814: .4byte gUnknown_08216308 -_0804F818: .4byte 0x00000193 - thumb_func_end sub_804F378 - - thumb_func_start sub_804F81C -sub_804F81C: @ 804F81C - push {lr} - ldr r3, _0804F83C @ =gSendCmd - movs r0, 0 - ldr r1, _0804F840 @ =gRecvCmds - movs r2, 0x3 -_0804F826: - strh r0, [r3] - strh r0, [r3, 0x4] - strh r0, [r1] - strh r0, [r1, 0x10] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F826 - pop {r0} - bx r0 - .align 2, 0 -_0804F83C: .4byte gSendCmd -_0804F840: .4byte gRecvCmds - thumb_func_end sub_804F81C - - thumb_func_start sub_804F844 -sub_804F844: @ 804F844 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0804F884 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r2, r4] - cmp r0, r1 - ble _0804F87C - ldr r0, _0804F888 @ =gRecvCmds - movs r4, 0xC - ldrsh r1, [r2, r4] - lsls r1, 1 - adds r0, 0x10 - adds r1, r0 - ldr r0, _0804F88C @ =0x00002345 - strh r0, [r1] - adds r0, r3, 0 - bl DestroyTask -_0804F87C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F884: .4byte gTasks -_0804F888: .4byte gRecvCmds -_0804F88C: .4byte 0x00002345 - thumb_func_end sub_804F844 - - thumb_func_start sub_804F890 -sub_804F890: @ 804F890 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0804F8C0 @ =sub_804F844 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804F8C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804F8C0: .4byte sub_804F844 -_0804F8C4: .4byte gTasks - thumb_func_end sub_804F890 - - thumb_func_start sub_804F8C8 -sub_804F8C8: @ 804F8C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0804F934 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0x1 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0804F8E6 - b _0804F9DC -_0804F8E6: - ldr r2, _0804F938 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - cmp r0, 0 - beq _0804F8FC - b _0804F9EA -_0804F8FC: - ldr r0, [r4] - ldr r1, _0804F93C @ =0x0000014b - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804F9BE - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804F940 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r3, r1, 0 - ldr r0, [r4] - adds r0, 0x56 - movs r4, 0 - ldrsh r2, [r0, r4] - ldr r0, _0804F944 @ =0x000001f3 - cmp r2, r0 - bgt _0804F964 - cmp r1, 0x4B - bls _0804F950 - ldr r1, _0804F948 @ =gRecvCmds - ldr r0, _0804F94C @ =0x00004523 - b _0804F954 - .align 2, 0 -_0804F934: .4byte gUnknown_03004854 -_0804F938: .4byte gTasks -_0804F93C: .4byte 0x0000014b -_0804F940: .4byte 0x0000028f -_0804F944: .4byte 0x000001f3 -_0804F948: .4byte gRecvCmds -_0804F94C: .4byte 0x00004523 -_0804F950: - ldr r1, _0804F95C @ =gRecvCmds - ldr r0, _0804F960 @ =0x00005432 -_0804F954: - strh r0, [r1, 0x12] - ldr r0, _0804F960 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F95C: .4byte gRecvCmds -_0804F960: .4byte 0x00005432 -_0804F964: - ldr r0, _0804F980 @ =0x000005db - cmp r2, r0 - bgt _0804F992 - cmp r1, 0x50 - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _0804F98C - ldr r1, _0804F984 @ =gRecvCmds - ldr r0, _0804F988 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F980: .4byte 0x000005db -_0804F984: .4byte gRecvCmds -_0804F988: .4byte 0x00005432 -_0804F98C: - cmp r1, 0x9 - bhi _0804F9C4 - b _0804F9B4 -_0804F992: - cmp r1, 0x5A - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x47 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _0804F9B0 - ldr r1, _0804F9A8 @ =gRecvCmds - ldr r0, _0804F9AC @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F9A8: .4byte gRecvCmds -_0804F9AC: .4byte 0x00005432 -_0804F9B0: - cmp r3, 0x1D - bhi _0804F9C4 -_0804F9B4: - movs r0, 0x1 - movs r1, 0x5 - bl sub_804F890 - b _0804F9C4 -_0804F9BE: - ldr r1, _0804F9D0 @ =gRecvCmds - ldr r0, _0804F9D4 @ =0x00004523 -_0804F9C2: - strh r0, [r1, 0x12] -_0804F9C4: - ldr r0, _0804F9D8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804F9E8 - .align 2, 0 -_0804F9D0: .4byte gRecvCmds -_0804F9D4: .4byte 0x00004523 -_0804F9D8: .4byte gTasks -_0804F9DC: - ldr r0, _0804F9F0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804F9E8: - strh r0, [r1, 0x8] -_0804F9EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804F9F0: .4byte gTasks - thumb_func_end sub_804F8C8 - - thumb_func_start sub_804F9F4 -sub_804F9F4: @ 804F9F4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, _0804FA78 @ =gUnknown_03004854 - ldr r3, [r6] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FA7C @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA6 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FA80 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FB04 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FB04 - ldr r2, _0804FA84 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r5, 0x8 - ldrsh r0, [r2, r5] - adds r5, r1, 0 - cmp r0, 0 - bne _0804FB12 - ldr r1, _0804FA88 @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FAF0 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FA8C @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - ldr r0, [r6] - adds r0, 0x56 - movs r6, 0 - ldrsh r1, [r0, r6] - ldr r0, _0804FA90 @ =0x000001f3 - cmp r1, r0 - bgt _0804FAAC - cmp r2, 0x42 - bls _0804FA9C - ldr r1, _0804FA94 @ =gRecvCmds - ldr r0, _0804FA98 @ =0x00004523 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FA78: .4byte gUnknown_03004854 -_0804FA7C: .4byte 0x0000ffff -_0804FA80: .4byte gUnknown_08216303 -_0804FA84: .4byte gTasks -_0804FA88: .4byte 0x0000014b -_0804FA8C: .4byte 0x0000028f -_0804FA90: .4byte 0x000001f3 -_0804FA94: .4byte gRecvCmds -_0804FA98: .4byte 0x00004523 -_0804FA9C: - ldr r1, _0804FAA4 @ =gRecvCmds - ldr r0, _0804FAA8 @ =0x00005432 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FAA4: .4byte gRecvCmds -_0804FAA8: .4byte 0x00005432 -_0804FAAC: - cmp r2, 0x41 - bls _0804FAB6 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE4 @ =0x00004523 - strh r0, [r1, 0x14] -_0804FAB6: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - bhi _0804FAC8 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE8 @ =0x00005432 - strh r0, [r1, 0x14] -_0804FAC8: - cmp r3, 0x9 - bhi _0804FAD4 - movs r0, 0x2 - movs r1, 0x5 - bl sub_804F890 -_0804FAD4: - ldr r0, _0804FAEC @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FB10 - .align 2, 0 -_0804FAE0: .4byte gRecvCmds -_0804FAE4: .4byte 0x00004523 -_0804FAE8: .4byte 0x00005432 -_0804FAEC: .4byte gTasks -_0804FAF0: - ldr r0, _0804FAFC @ =gRecvCmds - ldr r1, _0804FB00 @ =0x00004523 - strh r1, [r0, 0x14] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FB12 - .align 2, 0 -_0804FAFC: .4byte gRecvCmds -_0804FB00: .4byte 0x00004523 -_0804FB04: - ldr r0, _0804FB18 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FB10: - strh r0, [r1, 0x8] -_0804FB12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FB18: .4byte gTasks - thumb_func_end sub_804F9F4 - - thumb_func_start sub_804FB1C -sub_804FB1C: @ 804FB1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0804FB9C @ =gUnknown_03004854 - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FBA0 @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA8 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FBA4 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FC30 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FC30 - ldr r2, _0804FBA8 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r6, 0x8 - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0 - bne _0804FC3E - ldr r1, _0804FBAC @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FC1C - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FBB0 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r5] - adds r0, 0x56 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _0804FBB4 @ =0x000001f3 - cmp r1, r0 - bgt _0804FBD0 - cmp r2, 0x58 - bls _0804FBC0 - ldr r1, _0804FBB8 @ =gRecvCmds - ldr r0, _0804FBBC @ =0x00004523 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FB9C: .4byte gUnknown_03004854 -_0804FBA0: .4byte 0x0000ffff -_0804FBA4: .4byte gUnknown_08216303 -_0804FBA8: .4byte gTasks -_0804FBAC: .4byte 0x0000014b -_0804FBB0: .4byte 0x0000028f -_0804FBB4: .4byte 0x000001f3 -_0804FBB8: .4byte gRecvCmds -_0804FBBC: .4byte 0x00004523 -_0804FBC0: - ldr r1, _0804FBC8 @ =gRecvCmds - ldr r0, _0804FBCC @ =0x00005432 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FBC8: .4byte gRecvCmds -_0804FBCC: .4byte 0x00005432 -_0804FBD0: - cmp r2, 0x3C - bls _0804FBE4 - ldr r1, _0804FBDC @ =gRecvCmds - ldr r0, _0804FBE0 @ =0x00004523 - b _0804FBF4 - .align 2, 0 -_0804FBDC: .4byte gRecvCmds -_0804FBE0: .4byte 0x00004523 -_0804FBE4: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _0804FBF6 - ldr r1, _0804FC10 @ =gRecvCmds - ldr r0, _0804FC14 @ =0x00005432 -_0804FBF4: - strh r0, [r1, 0x16] -_0804FBF6: - cmp r2, 0x4 - bhi _0804FC02 - movs r0, 0x3 - movs r1, 0x5 - bl sub_804F890 -_0804FC02: - ldr r0, _0804FC18 @ =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FC3C - .align 2, 0 -_0804FC10: .4byte gRecvCmds -_0804FC14: .4byte 0x00005432 -_0804FC18: .4byte gTasks -_0804FC1C: - ldr r0, _0804FC28 @ =gRecvCmds - ldr r1, _0804FC2C @ =0x00004523 - strh r1, [r0, 0x16] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FC3E - .align 2, 0 -_0804FC28: .4byte gRecvCmds -_0804FC2C: .4byte 0x00004523 -_0804FC30: - ldr r0, _0804FC44 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FC3C: - strh r0, [r1, 0x8] -_0804FC3E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FC44: .4byte gTasks - thumb_func_end sub_804FB1C - - thumb_func_start sub_804FC48 -sub_804FC48: @ 804FC48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - mov r8, r7 - lsls r1, 24 - ldr r0, _0804FCBC @ =gSpriteTemplate_821645C - ldr r4, _0804FCC0 @ =gUnknown_082162E4 - lsrs r1, 23 - adds r2, r1, r4 - ldrb r6, [r2] - ldr r5, _0804FCC4 @ =gUnknown_082162CC - adds r2, r1, r5 - movs r3, 0 - ldrsb r3, [r2, r3] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 1 - subs r6, r2 - adds r4, 0x1 - adds r4, r1, r4 - ldrb r2, [r4] - adds r5, 0x1 - adds r1, r5 - movs r3, 0 - ldrsb r3, [r1, r3] - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 1 - subs r2, r1 - adds r1, r6, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0804FCC8 @ =0x00004523 - cmp r7, r0 - bne _0804FCD4 - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - ldr r5, _0804FCCC @ =gSprites - adds r0, r4, r5 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _0804FCD0 @ =sub_8051684 - str r0, [r4] - movs r0, 0x28 - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCBC: .4byte gSpriteTemplate_821645C -_0804FCC0: .4byte gUnknown_082162E4 -_0804FCC4: .4byte gUnknown_082162CC -_0804FCC8: .4byte 0x00004523 -_0804FCCC: .4byte gSprites -_0804FCD0: .4byte sub_8051684 -_0804FCD4: - ldr r0, _0804FCF4 @ =0x00005432 - cmp r7, r0 - bne _0804FCFC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804FCF8 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x1F - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCF4: .4byte 0x00005432 -_0804FCF8: .4byte gSprites -_0804FCFC: - ldr r0, _0804FD28 @ =0x00002345 - cmp r8, r0 - bne _0804FD18 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r1, _0804FD2C @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x20 - bl PlaySE -_0804FD18: - bl sub_805156C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FD28: .4byte 0x00002345 -_0804FD2C: .4byte gSprites - thumb_func_end sub_804FC48 - - thumb_func_start sub_804FD30 -sub_804FD30: @ 804FD30 - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r5, r4, 0 - bl sub_804E290 - ldr r0, _0804FD50 @ =0x00004523 - cmp r4, r0 - beq _0804FD64 - cmp r4, r0 - bgt _0804FD58 - ldr r0, _0804FD54 @ =0x00002345 - cmp r4, r0 - beq _0804FE34 - b _0804FE60 - .align 2, 0 -_0804FD50: .4byte 0x00004523 -_0804FD54: .4byte 0x00002345 -_0804FD58: - ldr r0, _0804FD60 @ =0x00005432 - cmp r5, r0 - beq _0804FDFC - b _0804FE60 - .align 2, 0 -_0804FD60: .4byte 0x00005432 -_0804FD64: - ldr r7, _0804FD94 @ =gUnknown_03004854 - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x56 - ldrh r6, [r5] - movs r0, 0 - ldrsh r1, [r5, r0] - ldr r0, _0804FD98 @ =0x000005db - cmp r1, r0 - bgt _0804FDA0 - ldr r1, _0804FD9C @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xC0 - lsls r0, 1 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - b _0804FE60 - .align 2, 0 -_0804FD94: .4byte gUnknown_03004854 -_0804FD98: .4byte 0x000005db -_0804FD9C: .4byte gUnknown_082165DA -_0804FDA0: - ldr r1, _0804FDF8 @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - movs r1, 0xA2 - lsls r1, 1 - adds r4, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - ldr r0, [r7] - movs r1, 0xA3 - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - b _0804FE60 - .align 2, 0 -_0804FDF8: .4byte gUnknown_082165DA -_0804FDFC: - ldr r0, _0804FE28 @ =gUnknown_03004854 - ldr r2, [r0] - adds r4, r2, 0 - adds r4, 0x56 - ldrh r5, [r4] - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, _0804FE2C @ =0x000005db - cmp r1, r0 - bgt _0804FE60 - ldr r1, _0804FE30 @ =gUnknown_082165DA - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - adds r0, r5, r0 - b _0804FE5E - .align 2, 0 -_0804FE28: .4byte gUnknown_03004854 -_0804FE2C: .4byte 0x000005db -_0804FE30: .4byte gUnknown_082165DA -_0804FE34: - ldr r0, _0804FE68 @ =gUnknown_03004854 - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x56 - ldr r1, _0804FE6C @ =gUnknown_082165DA - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - ldrh r1, [r4] - subs r1, r0 - strh r1, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - bgt _0804FE60 - movs r0, 0x80 -_0804FE5E: - strh r0, [r4] -_0804FE60: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FE68: .4byte gUnknown_03004854 -_0804FE6C: .4byte gUnknown_082165DA - thumb_func_end sub_804FD30 - - thumb_func_start sub_804FE70 -sub_804FE70: @ 804FE70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0804FF40 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _0804FEB6 - ldr r3, _0804FF44 @ =gSendCmd - ldrh r0, [r3, 0x4] - ldr r2, _0804FF48 @ =gRecvCmds - cmp r0, 0 - beq _0804FE98 - movs r1, 0 - strh r0, [r2, 0x10] - ldr r0, _0804FF4C @ =0x00004444 - strh r0, [r2] - strh r1, [r3, 0x4] -_0804FE98: - ldr r0, _0804FF48 @ =gRecvCmds - ldr r3, _0804FF4C @ =0x00004444 - adds r1, r2, 0x2 - adds r2, r0, 0 - adds r2, 0x12 - movs r6, 0x2 -_0804FEA4: - ldrh r0, [r2] - cmp r0, 0 - beq _0804FEAC - strh r3, [r1] -_0804FEAC: - adds r1, 0x2 - adds r2, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _0804FEA4 -_0804FEB6: - movs r6, 0 - ldr r7, _0804FF50 @ =gUnknown_03004854 - adds r1, r7, 0 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _0804FEC8 - b _0805005C -_0804FEC8: - movs r2, 0 - str r2, [sp] - mov r9, r2 - ldr r0, _0804FF48 @ =gRecvCmds - adds r0, 0x10 - mov r8, r0 - ldr r1, _0804FF54 @ =0x00005432 - mov r10, r1 -_0804FED8: - ldr r2, [sp] - ldr r1, _0804FF48 @ =gRecvCmds - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0804FF4C @ =0x00004444 - cmp r1, r0 - beq _0804FEE8 - b _0805003E -_0804FEE8: - ldr r0, [r7] - adds r0, 0xA2 - adds r0, r2 - ldrh r5, [r0] - mov r2, r8 - ldrh r4, [r2] - ldr r0, _0804FF58 @ =0x00004523 - cmp r4, r0 - bne _0804FF60 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x37 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, 16 - ldr r0, _0804FF5C @ =0x03e70000 - cmp r1, r0 - bls _0804FF26 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4] -_0804FF26: - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, _0804FF58 @ =0x00004523 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA6 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA - .align 2, 0 -_0804FF40: .4byte gSpecialVar_0x8004 -_0804FF44: .4byte gSendCmd -_0804FF48: .4byte gRecvCmds -_0804FF4C: .4byte 0x00004444 -_0804FF50: .4byte gUnknown_03004854 -_0804FF54: .4byte 0x00005432 -_0804FF58: .4byte 0x00004523 -_0804FF5C: .4byte 0x03e70000 -_0804FF60: - cmp r4, r10 - bne _0804FF9E - mov r0, r10 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x46 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, r5, 24 - lsrs r1, 24 - mov r0, r10 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA7 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA -_0804FF9E: - ldr r0, _08050018 @ =0x00002345 - cmp r4, r0 - bne _0804FFD6 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804FC48 - adds r0, r4, 0 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1] - ldr r0, _0805001C @ =0x000003e6 - cmp r2, r0 - bhi _0804FFCC - adds r0, r2, 0x1 -_0804FFCA: - strh r0, [r1] -_0804FFCC: - mov r0, r8 - ldrh r1, [r0] - ldr r0, _08050018 @ =0x00002345 - cmp r1, r0 - beq _0804FFE4 -_0804FFD6: - mov r1, r8 - ldrh r0, [r1] - ldr r2, _08050020 @ =0x00004523 - cmp r0, r2 - beq _0804FFE4 - cmp r0, r10 - bne _0805003E -_0804FFE4: - ldr r0, _08050024 @ =gUnknown_03004854 - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0x56 - movs r0, 0 - ldrsh r1, [r2, r0] - ldr r0, _08050028 @ =0x000005dc - cmp r1, r0 - ble _08050034 - adds r0, r1, 0 - ldr r2, _0805002C @ =0xfffffd12 - adds r0, r2 - movs r1, 0x14 - bl __divsi3 - adds r1, r0, 0 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08050030 @ =gMPlay_BGM - bl m4aMPlayTempoControl - b _0805003E - .align 2, 0 -_08050018: .4byte 0x00002345 -_0805001C: .4byte 0x000003e6 -_08050020: .4byte 0x00004523 -_08050024: .4byte gUnknown_03004854 -_08050028: .4byte 0x000005dc -_0805002C: .4byte 0xfffffd12 -_08050030: .4byte gMPlay_BGM -_08050034: - ldr r0, _08050098 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl -_0805003E: - ldr r1, [sp] - adds r1, 0x2 - str r1, [sp] - movs r2, 0x6 - add r9, r2 - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - ldr r7, _0805009C @ =gUnknown_03004854 - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _0805005C - b _0804FED8 -_0805005C: - ldr r0, _080500A0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _08050088 - movs r6, 0 - ldr r3, _0805009C @ =gUnknown_03004854 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _08050088 - movs r2, 0 - ldr r1, _080500A4 @ =gRecvCmds -_08050076: - strh r2, [r1] - strh r2, [r1, 0x10] - adds r1, 0x2 - adds r6, 0x1 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _08050076 -_08050088: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050098: .4byte gMPlay_BGM -_0805009C: .4byte gUnknown_03004854 -_080500A0: .4byte gSpecialVar_0x8004 -_080500A4: .4byte gRecvCmds - thumb_func_end sub_804FE70 - - thumb_func_start sub_80500A8 -sub_80500A8: @ 80500A8 - push {r4-r6,lr} - movs r6, 0 - ldr r5, _080500EC @ =gUnknown_03004854 - ldr r4, [r5] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 23 - adds r4, 0xA2 - adds r4, r0 - ldrb r3, [r4] - ldr r0, [r5] - adds r0, 0x6F - ldrb r0, [r0] - cmp r0, 0 - bne _0805018A - ldr r0, _080500F0 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x2 - bne _080500FC - ldr r2, _080500F4 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - ldrh r0, [r2, 0x28] - ldr r1, _080500F8 @ =0x00000201 - bics r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r6, r0, 31 - b _0805010A - .align 2, 0 -_080500EC: .4byte gUnknown_03004854 -_080500F0: .4byte gSaveBlock2 -_080500F4: .4byte gMain -_080500F8: .4byte 0x00000201 -_080500FC: - ldr r0, _0805015C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - movs r6, 0x1 -_0805010A: - cmp r6, 0 - beq _0805018A - ldr r4, _08050160 @ =gUnknown_03004854 - ldr r1, [r4] - lsls r2, r3, 1 - adds r0, r1, 0 - adds r0, 0x9A - adds r0, r2 - adds r1, 0x5C - ldrh r0, [r0] - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08050164 @ =gSprites - adds r0, r1 - adds r1, r3, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldr r0, [r4] - adds r0, 0x54 - ldrh r4, [r0] - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08050170 - ldr r1, _08050168 @ =gSendCmd - ldr r0, _0805016C @ =0x00004523 - b _08050188 - .align 2, 0 -_0805015C: .4byte gMain -_08050160: .4byte gUnknown_03004854 -_08050164: .4byte gSprites -_08050168: .4byte gSendCmd -_0805016C: .4byte 0x00004523 -_08050170: - cmp r0, 0x1 - bne _08050184 - ldr r1, _0805017C @ =gSendCmd - ldr r0, _08050180 @ =0x00005432 - b _08050188 - .align 2, 0 -_0805017C: .4byte gSendCmd -_08050180: .4byte 0x00005432 -_08050184: - ldr r1, _080501E4 @ =gSendCmd - ldr r0, _080501E8 @ =0x00002345 -_08050188: - strh r0, [r1, 0x4] -_0805018A: - ldr r2, _080501EC @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x7E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _080501BA - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x56 - ldrh r3, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0x80 - ble _080501B2 - subs r0, r3, 0x1 - strh r0, [r1] -_080501B2: - ldr r0, [r2] - adds r0, 0x7E - movs r1, 0 - strb r1, [r0] -_080501BA: - ldr r0, _080501F0 @ =gUnknown_020297ED - ldrb r0, [r0] - cmp r0, 0 - beq _080501DE - ldr r0, _080501F4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080501DE - ldr r0, [r2] - ldr r1, _080501F8 @ =0x0000014b - adds r2, r0, r1 - ldrb r0, [r2] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2] -_080501DE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080501E4: .4byte gSendCmd -_080501E8: .4byte 0x00002345 -_080501EC: .4byte gUnknown_03004854 -_080501F0: .4byte gUnknown_020297ED -_080501F4: .4byte gMain -_080501F8: .4byte 0x0000014b - thumb_func_end sub_80500A8 - - thumb_func_start sub_80501FC -sub_80501FC: @ 80501FC - push {r4-r6,lr} - bl sub_8051474 - ldr r4, _08050294 @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0x96 - lsls r1, 1 - adds r2, r0, r1 - ldr r1, [r2] - ldr r0, _08050298 @ =0x00057e03 - cmp r1, r0 - bhi _08050218 - adds r0, r1, 0x1 - str r0, [r2] -_08050218: - bl sub_80500A8 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - movs r5, 0x9F - lsls r5, 1 - adds r1, r5 - ldrh r1, [r1] - bl SetLinkDebugValues - bl sub_804FE70 - ldr r0, [r4] - adds r0, r5 - ldrh r0, [r0] - movs r6, 0xFA - lsls r6, 2 - adds r1, r6, 0 - bl sub_805194C - ldr r0, [r4] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_8051B18 - bl sub_805123C - ldr r2, [r4] - adds r3, r2, 0 - adds r3, 0x6F - ldrb r0, [r3] - cmp r0, 0 - bne _0805027E - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0805029C @ =0x000003e7 - cmp r1, r0 - bls _0805027E - adds r0, r2, r5 - strh r6, [r0] - movs r0, 0x1 - strb r0, [r3] - ldr r0, _080502A0 @ =sub_8050954 - bl SetMainCallback2 -_0805027E: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08050294: .4byte gUnknown_03004854 -_08050298: .4byte 0x00057e03 -_0805029C: .4byte 0x000003e7 -_080502A0: .4byte sub_8050954 - thumb_func_end sub_80501FC - - thumb_func_start help_system_is_not_first_time -help_system_is_not_first_time: @ 80502A4 - push {r4,r5,lr} - lsls r1, 24 - lsls r2, 24 - lsrs r1, 20 - adds r4, r1, r0 - lsrs r2, 20 - adds r5, r2, r0 - ldrh r0, [r4] - ldrh r1, [r5] - cmp r0, r1 - bne _080502E2 - adds r0, r4, 0x2 - adds r1, r5, 0x2 - bl StringCompare - cmp r0, 0 - bne _080502F0 - ldr r0, [r4, 0x8] - ldr r2, _080502E8 @ =0xffffff00 - ands r0, r2 - ldr r1, [r5, 0x8] - ands r1, r2 - cmp r0, r1 - bne _080502F0 - ldr r0, [r4, 0xC] - ldr r2, _080502EC @ =0x00ffffff - ands r0, r2 - ldr r1, [r5, 0xC] - ands r1, r2 - cmp r0, r1 - bne _080502F0 -_080502E2: - movs r0, 0x1 - b _080502F2 - .align 2, 0 -_080502E8: .4byte 0xffffff00 -_080502EC: .4byte 0x00ffffff -_080502F0: - movs r0, 0 -_080502F2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end help_system_is_not_first_time - - thumb_func_start sub_80502F8 -sub_80502F8: @ 80502F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - mov r2, sp - movs r4, 0x5 -_08050314: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050314 - movs r6, 0 - mov r1, sp - movs r4, 0x4 -_08050328: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08050332 - adds r6, 0x1 -_08050332: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050328 - cmp r6, 0x5 - beq _08050386 - cmp r3, 0x3 - bhi _08050386 - movs r4, 0 - ldr r3, [sp, 0x10] - cmp r4, r3 - bge _0805039E - mov r3, r10 -_0805034C: - movs r6, 0 - ldr r7, [sp, 0x10] - cmp r6, r7 - bge _08050394 - mov r9, r3 - mov r5, r10 - lsls r0, r4, 24 - mov r8, r0 -_0805035C: - mov r1, r9 - ldrh r0, [r1] - ldrh r2, [r5] - cmp r0, r2 - bne _0805038A - cmp r4, r6 - beq _0805038A - cmp r0, 0xAF - bne _08050386 - lsls r2, r6, 24 - lsrs r2, 24 - mov r0, r10 - mov r7, r8 - lsrs r1, r7, 24 - str r3, [sp, 0xC] - bl help_system_is_not_first_time - lsls r0, 24 - ldr r3, [sp, 0xC] - cmp r0, 0 - beq _0805038A -_08050386: - movs r0, 0xC - b _080504DE -_0805038A: - adds r5, 0x10 - adds r6, 0x1 - ldr r0, [sp, 0x10] - cmp r6, r0 - blt _0805035C -_08050394: - adds r3, 0x10 - adds r4, 0x1 - ldr r1, [sp, 0x10] - cmp r4, r1 - blt _0805034C -_0805039E: - movs r2, 0 - mov r1, sp - movs r4, 0x4 -_080503A4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080503B2 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080503B2: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080503A4 - cmp r2, 0x3 - bls _080503C2 - movs r0, 0xD - b _080504DE -_080503C2: - cmp r2, 0x3 - bne _080503CA - movs r0, 0xB - b _080504DE -_080503CA: - movs r4, 0 - mov r1, sp -_080503CE: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x32 - ble _080503D8 - b _080504D8 -_080503D8: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _080503CE - cmp r2, 0x1 - bne _0805042A - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _080503F2 - movs r0, 0x1 - b _080504DE -_080503F2: - mov r0, sp - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - ble _08050400 - movs r0, 0x2 - b _080504DE -_08050400: - mov r0, sp - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - ble _0805040E - movs r0, 0x3 - b _080504DE -_0805040E: - mov r0, sp - movs r4, 0x6 - ldrsh r0, [r0, r4] - cmp r0, 0 - ble _0805041C - movs r0, 0x4 - b _080504DE -_0805041C: - mov r0, sp - movs r7, 0x8 - ldrsh r0, [r0, r7] - cmp r0, 0 - ble _0805042A - movs r0, 0x5 - b _080504DE -_0805042A: - cmp r2, 0x2 - bne _080504DC - movs r4, 0 - ldr r5, _08050474 @ =gUnknown_03000520 - mov r1, sp - adds r2, r5, 0 -_08050436: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08050442 - strh r4, [r2] - adds r2, 0x2 -_08050442: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _08050436 - movs r4, 0 - ldrsh r3, [r5, r4] - lsls r0, r3, 1 - mov r7, sp - adds r1, r7, r0 - movs r0, 0x2 - ldrsh r2, [r5, r0] - lsls r0, r2, 1 - add r0, sp - movs r4, 0 - ldrsh r1, [r1, r4] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _08050498 - adds r0, r3, 0 - cmp r0, 0 - bne _08050478 - lsls r0, r2, 16 - b _080504A2 - .align 2, 0 -_08050474: .4byte gUnknown_03000520 -_08050478: - cmp r0, 0x1 - bne _08050480 - lsls r0, r2, 16 - b _080504AE -_08050480: - cmp r0, 0x2 - bne _08050488 - lsls r0, r2, 16 - b _080504BA -_08050488: - cmp r0, 0x3 - bne _08050490 - lsls r0, r2, 16 - b _080504C6 -_08050490: - cmp r0, 0x4 - bne _080504DC - lsls r0, r2, 16 - b _080504D2 -_08050498: - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080504A8 - lsls r0, r3, 16 -_080504A2: - movs r1, 0x6 - orrs r0, r1 - b _080504DE -_080504A8: - cmp r0, 0x1 - bne _080504B4 - lsls r0, r3, 16 -_080504AE: - movs r1, 0x7 - orrs r0, r1 - b _080504DE -_080504B4: - cmp r0, 0x2 - bne _080504C0 - lsls r0, r3, 16 -_080504BA: - movs r1, 0x8 - orrs r0, r1 - b _080504DE -_080504C0: - cmp r0, 0x3 - bne _080504CC - lsls r0, r3, 16 -_080504C6: - movs r1, 0x9 - orrs r0, r1 - b _080504DE -_080504CC: - cmp r0, 0x4 - bne _080504DC - lsls r0, r3, 16 -_080504D2: - movs r1, 0xA - orrs r0, r1 - b _080504DE -_080504D8: - movs r0, 0xE - b _080504DE -_080504DC: - movs r0, 0 -_080504DE: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80502F8 - - thumb_func_start sub_80504F0 -sub_80504F0: @ 80504F0 - ldr r1, _080504F8 @ =gUnknown_0300052C - strh r0, [r1] - bx lr - .align 2, 0 -_080504F8: .4byte gUnknown_0300052C - thumb_func_end sub_80504F0 - - thumb_func_start unref_sub_80504FC -unref_sub_80504FC: @ 80504FC - ldr r0, _08050504 @ =gUnknown_0300052C - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_08050504: .4byte gUnknown_0300052C - thumb_func_end unref_sub_80504FC - - thumb_func_start sub_8050508 -sub_8050508: @ 8050508 - ldr r1, _08050510 @ =gUnknown_0300052E - strh r0, [r1] - bx lr - .align 2, 0 -_08050510: .4byte gUnknown_0300052E - thumb_func_end sub_8050508 - - thumb_func_start unref_sub_8050514 -unref_sub_8050514: @ 8050514 - ldr r0, _0805051C @ =gUnknown_0300052E - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0805051C: .4byte gUnknown_0300052E - thumb_func_end unref_sub_8050514 - - thumb_func_start sub_8050520 -sub_8050520: @ 8050520 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp] - mov r8, r1 - str r3, [sp, 0x4] - ldr r0, [sp, 0x30] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r7, _080505DC @ =gUnknown_03000510 - adds r2, r7, 0 - movs r1, 0 - adds r0, r7, 0 - adds r0, 0xA -_0805054A: - strh r1, [r0] - subs r0, 0x2 - cmp r0, r2 - bge _0805054A - movs r6, 0 - cmp r6, r9 - bge _08050580 - ldr r0, _080505DC @ =gUnknown_03000510 - mov r12, r0 - ldr r5, [sp] - adds r5, 0x9 -_08050560: - movs r3, 0 - adds r4, r5, 0 - mov r2, r12 -_08050566: - adds r1, r4, r3 - ldrh r0, [r2] - ldrb r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x5 - ble _08050566 - adds r5, 0x10 - adds r6, 0x1 - cmp r6, r9 - blt _08050560 -_08050580: - movs r1, 0 - ldrsh r3, [r7, r1] - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - subs r0, r1 - strh r0, [r7] - ldrh r0, [r7, 0x4] - subs r1, r0 - strh r1, [r7, 0x2] - ldrh r1, [r7, 0x6] - subs r0, r1 - strh r0, [r7, 0x4] - ldrh r0, [r7, 0x8] - subs r1, r0 - strh r1, [r7, 0x6] - subs r0, r3 - strh r0, [r7, 0x8] - movs r3, 0 - movs r2, 0 - adds r1, r7, 0 - movs r6, 0x4 -_080505AA: - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _080505B6 - strh r2, [r1] - adds r3, 0x1 -_080505B6: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505AA - lsls r0, r3, 24 - lsrs r0, 24 - mov r10, r0 - movs r4, 0 - ldr r1, _080505DC @ =gUnknown_03000510 - movs r6, 0x4 -_080505CA: - ldrh r2, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _080505E4 - cmp r0, r3 - bge _080505E0 - strh r4, [r1] - b _080505E4 - .align 2, 0 -_080505DC: .4byte gUnknown_03000510 -_080505E0: - subs r0, r2, r3 - strh r0, [r1] -_080505E4: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505CA - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506C8 @ =gUnknown_03000530 - movs r6, 0x4 -_080505F2: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505F2 - ldr r1, _080506CC @ =0x0000014d - ldr r0, [sp, 0x8] - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - adds r3, r0, 0 - adds r3, 0x64 - ldr r4, _080506D0 @ =gUnknown_0300055C - str r3, [r4] - movs r6, 0x4 -_08050616: - movs r0, 0 - ldrsh r5, [r7, r0] - adds r0, r5, 0 - muls r0, r3 - movs r1, 0xA - str r3, [sp, 0xC] - bl __divsi3 - adds r5, r0, 0 - movs r1, 0xA - bl __modsi3 - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - ldr r3, [sp, 0xC] - cmp r4, 0x4 - ble _08050642 - adds r5, 0x1 -_08050642: - strh r5, [r7] - adds r7, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050616 - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506D4 @ =gUnknown_03000548 - movs r6, 0x4 -_08050652: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050652 - ldr r4, _080506C4 @ =gUnknown_03000510 - ldr r0, [sp] - adds r1, r4, 0 - mov r2, r9 - mov r3, r10 - bl sub_80502F8 - mov r5, r8 - strb r0, [r5] - movs r1, 0xA - ldrsh r0, [r4, r1] - mov r1, r9 - bl __divsi3 - mov r3, r9 - subs r0, r3 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0805068C - movs r0, 0 - strh r0, [r4, 0xA] -_0805068C: - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0xC - bne _080506E6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r6, 0 - ldr r0, _080506D8 @ =gUnknown_082165DF - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0 - movs r4, 0x1 - movs r3, 0x2 -_080506B4: - adds r2, r0, 0 - asrs r2, r6 - ands r2, r4 - cmp r2, 0 - beq _080506DC - strh r3, [r1] - b _080506DE - .align 2, 0 -_080506C4: .4byte gUnknown_03000510 -_080506C8: .4byte gUnknown_03000530 -_080506CC: .4byte 0x0000014d -_080506D0: .4byte gUnknown_0300055C -_080506D4: .4byte gUnknown_03000548 -_080506D8: .4byte gUnknown_082165DF -_080506DC: - strh r2, [r1] -_080506DE: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _080506B4 -_080506E6: - ldr r7, _08050740 @ =gUnknown_03000510 - movs r2, 0xFF - adds r1, r7, 0 - movs r6, 0x5 -_080506EE: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xFF - ble _080506F8 - strh r2, [r1] -_080506F8: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080506EE - ldrh r0, [r7] - mov r4, r8 - strb r0, [r4, 0x1] - ldrh r0, [r7, 0x2] - strb r0, [r4, 0x2] - ldrh r0, [r7, 0x4] - strb r0, [r4, 0x3] - ldrh r0, [r7, 0x6] - strb r0, [r4, 0x4] - ldrh r0, [r7, 0x8] - strb r0, [r4, 0x5] - ldrh r0, [r7, 0xA] - strb r0, [r4, 0x6] - movs r6, 0 - adds r2, r7, 0 -_0805071E: - ldr r5, [sp, 0x4] - adds r1, r5, r6 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x5 - ble _0805071E - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050740: .4byte gUnknown_03000510 - thumb_func_end sub_8050520 - - thumb_func_start sub_8050744 -sub_8050744: @ 8050744 - push {r4,lr} - sub sp, 0x4 - ldr r4, [sp, 0xC] - lsls r2, 24 - lsrs r2, 24 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp] - bl sub_8050520 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8050744 - - thumb_func_start sub_8050760 -sub_8050760: @ 8050760 - push {r4-r6,lr} - ldr r0, _08050780 @ =gUnknown_03004854 - ldr r0, [r0] - movs r2, 0x96 - lsls r2, 1 - adds r1, r0, r2 - ldrh r1, [r1] - adds r0, 0x5A - ldrh r4, [r0] - movs r2, 0 - ldr r5, _08050784 @ =0x00000383 - cmp r1, r5 - bhi _08050788 - movs r2, 0x5 - b _080507DA - .align 2, 0 -_08050780: .4byte gUnknown_03004854 -_08050784: .4byte 0x00000383 -_08050788: - ldr r3, _0805079C @ =0xfffffc7c - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080507A0 @ =0x00000257 - cmp r0, r3 - bhi _080507A4 - movs r2, 0x4 - b _080507DA - .align 2, 0 -_0805079C: .4byte 0xfffffc7c -_080507A0: .4byte 0x00000257 -_080507A4: - ldr r6, _080507B4 @ =0xfffffa24 - adds r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r3 - bhi _080507B8 - movs r2, 0x3 - b _080507DA - .align 2, 0 -_080507B4: .4byte 0xfffffa24 -_080507B8: - ldr r3, _080507C8 @ =0xfffff7cc - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bhi _080507CC - movs r2, 0x2 - b _080507DA - .align 2, 0 -_080507C8: .4byte 0xfffff7cc -_080507CC: - ldr r6, _080507F8 @ =0xfffff31c - adds r0, r1, r6 - lsls r0, 16 - ldr r1, _080507FC @ =0x012b0000 - cmp r0, r1 - bhi _080507DA - movs r2, 0x1 -_080507DA: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_8050508 - movs r2, 0 - cmp r4, 0x40 - bhi _080508BC - adds r0, r4, 0 - subs r0, 0x32 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050804 - ldr r2, _08050800 @ =0x0000ffff - b _080508BC - .align 2, 0 -_080507F8: .4byte 0xfffff31c -_080507FC: .4byte 0x012b0000 -_08050800: .4byte 0x0000ffff -_08050804: - adds r0, r4, 0 - subs r0, 0x64 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050818 - ldr r2, _08050814 @ =0x0000fffe - b _080508BC - .align 2, 0 -_08050814: .4byte 0x0000fffe -_08050818: - adds r0, r4, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805082C - ldr r2, _08050828 @ =0x0000fffd - b _080508BC - .align 2, 0 -_08050828: .4byte 0x0000fffd -_0805082C: - adds r0, r4, 0 - subs r0, 0xC8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050840 - ldr r2, _0805083C @ =0x0000fffc - b _080508BC - .align 2, 0 -_0805083C: .4byte 0x0000fffc -_08050840: - adds r0, r4, 0 - subs r0, 0xFA - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050854 - ldr r2, _08050850 @ =0x0000fffb - b _080508BC - .align 2, 0 -_08050850: .4byte 0x0000fffb -_08050854: - ldr r1, _08050864 @ =0xfffffea2 - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805086C - ldr r2, _08050868 @ =0x0000fffa - b _080508BC - .align 2, 0 -_08050864: .4byte 0xfffffea2 -_08050868: .4byte 0x0000fffa -_0805086C: - ldr r3, _0805087C @ =0xfffffe70 - adds r0, r4, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050884 - ldr r2, _08050880 @ =0x0000fff9 - b _080508BC - .align 2, 0 -_0805087C: .4byte 0xfffffe70 -_08050880: .4byte 0x0000fff9 -_08050884: - ldr r6, _08050894 @ =0xfffffe0c - adds r0, r4, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805089C - ldr r2, _08050898 @ =0x0000fff8 - b _080508BC - .align 2, 0 -_08050894: .4byte 0xfffffe0c -_08050898: .4byte 0x0000fff8 -_0805089C: - ldr r1, _080508AC @ =0xfffffdda - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _080508B4 - ldr r2, _080508B0 @ =0x0000fff7 - b _080508BC - .align 2, 0 -_080508AC: .4byte 0xfffffdda -_080508B0: .4byte 0x0000fff7 -_080508B4: - ldr r0, _080508CC @ =0x00000257 - cmp r4, r0 - bls _080508BC - ldr r2, _080508D0 @ =0x0000fff6 -_080508BC: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_80504F0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080508CC: .4byte 0x00000257 -_080508D0: .4byte 0x0000fff6 - thumb_func_end sub_8050760 - - thumb_func_start sub_80508D4 -sub_80508D4: @ 80508D4 - push {lr} - ldr r2, _080508F8 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0xAA - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xAA - ldrb r1, [r0] - lsls r1, 28 - movs r0, 0x90 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xC0 - bl sub_814A880 - pop {r0} - bx r0 - .align 2, 0 -_080508F8: .4byte gUnknown_03004854 - thumb_func_end sub_80508D4 - - thumb_func_start sub_80508FC -sub_80508FC: @ 80508FC - push {r4,lr} - sub sp, 0x4 - ldr r4, _08050944 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuDrawTextWindow - ldr r1, _08050948 @ =0x0000ffff - ldr r3, _0805094C @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - ldr r0, _08050950 @ =gOtherText_YesNoTerminating - movs r1, 0x18 - movs r2, 0x9 - bl MenuPrint - ldr r0, [r4] - adds r0, 0xAA - ldrb r0, [r0] - bl sub_80508D4 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08050944: .4byte gUnknown_03004854 -_08050948: .4byte 0x0000ffff -_0805094C: .4byte 0x00002d9f -_08050950: .4byte gOtherText_YesNoTerminating - thumb_func_end sub_80508FC - - thumb_func_start sub_8050954 -sub_8050954: @ 8050954 - push {r4-r7,lr} - bl sub_8051474 - bl GetMultiplayerId - ldr r0, _08050978 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xC - bls _0805096E - b _08050CB6 -_0805096E: - lsls r0, 2 - ldr r1, _0805097C @ =_08050980 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050978: .4byte gUnknown_03004854 -_0805097C: .4byte _08050980 - .align 2, 0 -_08050980: - .4byte _080509B4 - .4byte _080509F8 - .4byte _08050A4C - .4byte _08050A94 - .4byte _08050AD0 - .4byte _08050ADE - .4byte _08050B08 - .4byte _08050B34 - .4byte _08050B42 - .4byte _08050B58 - .4byte _08050BE0 - .4byte _08050C64 - .4byte _08050C98 -_080509B4: - bl ClearLinkCallback - ldr r0, _080509C8 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl - movs r4, 0 - b _080509E4 - .align 2, 0 -_080509C8: .4byte gMPlay_BGM -_080509CC: - ldr r0, _080509F0 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - bl DestroyTask - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080509E4: - ldr r0, _080509F4 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bcc _080509CC - b _08050C82 - .align 2, 0 -_080509F0: .4byte gUnknown_03004854 -_080509F4: .4byte gSpecialVar_0x8004 -_080509F8: - ldr r1, _08050A24 @ =gUnknown_03004854 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - ldrh r0, [r2] - subs r0, 0x20 - strh r0, [r2] - lsls r0, 16 - adds r4, r1, 0 - cmp r0, 0 - bgt _08050A40 - movs r0, 0 - strh r0, [r2] - ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08050A2C - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - b _08050A32 - .align 2, 0 -_08050A24: .4byte gUnknown_03004854 -_08050A28: .4byte gReceivedRemoteLinkPlayers -_08050A2C: - adds r1, r3, 0 - adds r1, 0x6F - movs r0, 0x5 -_08050A32: - strb r0, [r1] - ldr r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, _08050A48 @ =gMPlay_SE2 - bl m4aMPlayStop -_08050A40: - bl sub_804E290 - b _08050CB6 - .align 2, 0 -_08050A48: .4byte gMPlay_SE2 -_08050A4C: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _08050A58 - b _08050C82 -_08050A58: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _08050A64 - b _08050CB6 -_08050A64: - ldr r4, _08050A90 @ =gUnknown_03004854 - ldr r3, [r4] - movs r2, 0xDE - lsls r2, 1 - adds r1, r3, r2 - movs r5, 0x96 - lsls r5, 1 - adds r0, r3, r5 - ldr r0, [r0] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x5A - ldrh r2, [r0] - adds r5, 0x94 - adds r0, r3, r5 - strh r2, [r0] - movs r0, 0 - movs r2, 0x28 - bl SendBlock - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050A90: .4byte gUnknown_03004854 -_08050A94: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08050AA0 - b _08050CB6 -_08050AA0: - ldr r2, _08050AC8 @ =gBlockRecvBuffer - ldr r0, _08050ACC @ =gUnknown_03004854 - ldr r3, [r0] - ldrh r0, [r2, 0x4] - adds r1, r3, 0 - adds r1, 0x5A - strh r0, [r1] - movs r0, 0x96 - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r2] - str r0, [r1] - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl ResetBlockReceivedFlags - b _08050CB6 - .align 2, 0 -_08050AC8: .4byte gBlockRecvBuffer -_08050ACC: .4byte gUnknown_03004854 -_08050AD0: - bl sub_8052228 - lsls r0, 24 - cmp r0, 0 - bne _08050ADC - b _08050CB6 -_08050ADC: - b _08050C82 -_08050ADE: - bl sub_8051C58 - lsls r0, 24 - cmp r0, 0 - bne _08050AEA - b _08050CB6 -_08050AEA: - ldr r0, _08050AFC @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - bne _08050B00 - movs r0, 0x22 - bl IncrementGameStat - b _08050C82 - .align 2, 0 -_08050AFC: .4byte gUnknown_03004834 -_08050B00: - movs r0, 0x21 - bl IncrementGameStat - b _08050C82 -_08050B08: - ldr r0, _08050B2C @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _08050CB6 - .align 2, 0 -_08050B2C: .4byte gUnknown_03004854 -_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt -_08050B34: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050B40 - b _08050CB6 -_08050B40: - b _08050C82 -_08050B42: - ldr r4, _08050B54 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - bl sub_80508FC - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050B54: .4byte gUnknown_03004854 -_08050B58: - ldr r0, _08050B80 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08050B88 - ldr r0, _08050B84 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0 - beq _08050B76 - movs r0, 0x5 - bl PlaySE -_08050B76: - movs r0, 0 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050B80: .4byte gMain -_08050B84: .4byte gUnknown_03004854 -_08050B88: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08050BA8 - ldr r0, _08050BA4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0x1 - beq _08050BD4 - movs r0, 0x5 - bl PlaySE - b _08050BD4 - .align 2, 0 -_08050BA4: .4byte gUnknown_03004854 -_08050BA8: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08050BB8 - movs r0, 0x5 - bl PlaySE - b _08050C82 -_08050BB8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08050BC2 - b _08050CB6 -_08050BC2: - movs r0, 0x5 - bl PlaySE - ldr r0, _08050BDC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08050BD4: - movs r0, 0x1 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050BDC: .4byte gUnknown_03004854 -_08050BE0: - ldr r6, _08050C10 @ =gSendCmd - movs r7, 0 - ldr r0, _08050C14 @ =0x00002fff - strh r0, [r6] - ldr r4, _08050C18 @ =gUnknown_03004854 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xAA - ldrb r5, [r0] - cmp r5, 0 - bne _08050C50 - movs r0, 0x4 - bl IsBagPocketNonEmpty - lsls r0, 24 - cmp r0, 0 - bne _08050C20 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x2 - strh r1, [r0] - ldr r0, _08050C1C @ =0x00009999 - b _08050C48 - .align 2, 0 -_08050C10: .4byte gSendCmd -_08050C14: .4byte 0x00002fff -_08050C18: .4byte gUnknown_03004854 -_08050C1C: .4byte 0x00009999 -_08050C20: - bl sub_810CA00 - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08050C40 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x3 - strh r1, [r0] - ldr r0, _08050C3C @ =0x0000aaaa - b _08050C48 - .align 2, 0 -_08050C3C: .4byte 0x0000aaaa -_08050C40: - ldr r0, [r4] - adds r0, 0x7C - strh r5, [r0] - ldr r0, _08050C4C @ =0x00007779 -_08050C48: - strh r0, [r6, 0x2] - b _08050C82 - .align 2, 0 -_08050C4C: .4byte 0x00007779 -_08050C50: - adds r1, r2, 0 - adds r1, 0x7C - movs r0, 0x1 - strh r0, [r1] - ldr r0, _08050C60 @ =0x00008888 - strh r0, [r6, 0x2] - subs r1, 0xD - b _08050C88 - .align 2, 0 -_08050C60: .4byte 0x00008888 -_08050C64: - ldr r0, _08050C70 @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - beq _08050C78 - ldr r0, _08050C74 @ =sub_80510E8 - b _08050CA4 - .align 2, 0 -_08050C70: .4byte gUnknown_03004834 -_08050C74: .4byte sub_80510E8 -_08050C78: - ldr r0, _08050C90 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_08050C82: - ldr r0, _08050C94 @ =gUnknown_03004854 - ldr r1, [r0] -_08050C86: - adds r1, 0x6F -_08050C88: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08050CB6 - .align 2, 0 -_08050C90: .4byte gOtherText_LinkStandby3 -_08050C94: .4byte gUnknown_03004854 -_08050C98: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08050CB6 - ldr r0, _08050CE0 @ =sub_8050E30 -_08050CA4: - bl SetMainCallback2 - ldr r2, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x6F - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0] -_08050CB6: - bl sub_8051B18 - ldr r0, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050CE0: .4byte sub_8050E30 -_08050CE4: .4byte gUnknown_03004854 - thumb_func_end sub_8050954 - - thumb_func_start sub_8050CE8 -sub_8050CE8: @ 8050CE8 - push {r4,lr} - ldr r1, _08050D08 @ =gUnknown_03004854 - ldr r0, [r1] - movs r2, 0xE2 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _08050CFE - b _08050E28 -_08050CFE: - lsls r0, 2 - ldr r1, _08050D0C @ =_08050D10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050D08: .4byte gUnknown_03004854 -_08050D0C: .4byte _08050D10 - .align 2, 0 -_08050D10: - .4byte _08050D2C - .4byte _08050D44 - .4byte _08050D70 - .4byte _08050D80 - .4byte _08050DA6 - .4byte _08050DEC - .4byte _08050E06 -_08050D2C: - bl sub_80084A4 - ldr r0, _08050D40 @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0x1 - b _08050DF8 - .align 2, 0 -_08050D40: .4byte gUnknown_03004854 -_08050D44: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - ldr r0, _08050D68 @ =gUnknown_03004854 - ldr r1, [r0] - movs r2, 0xE2 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, _08050D6C @ =gSoftResetDisabled - movs r0, 0x1 - strb r0, [r1] - b _08050E28 - .align 2, 0 -_08050D68: .4byte gUnknown_03004854 -_08050D6C: .4byte gSoftResetDisabled -_08050D70: - bl sub_8125E2C - ldr r0, _08050D7C @ =gUnknown_03004854 - ldr r2, [r0] - b _08050DEE - .align 2, 0 -_08050D7C: .4byte gUnknown_03004854 -_08050D80: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - bne _08050E28 - bl sub_80084A4 - ldr r1, [r4] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _08050E28 -_08050DA6: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - bl sub_8125E6C - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08050DD0 - ldr r0, _08050DCC @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - movs r1, 0x5 - str r1, [r0] - b _08050E28 - .align 2, 0 -_08050DCC: .4byte gUnknown_03004854 -_08050DD0: - ldr r0, _08050DE8 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r0, r1, r3 - str r2, [r0] - movs r0, 0xE2 - lsls r0, 1 - adds r1, r0 - movs r0, 0x3 - str r0, [r1] - b _08050E28 - .align 2, 0 -_08050DE8: .4byte gUnknown_03004854 -_08050DEC: - ldr r2, [r4] -_08050DEE: - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 -_08050DF8: - str r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] - b _08050E28 -_08050E06: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - ble _08050E28 - ldr r1, _08050E24 @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08050E2A - .align 2, 0 -_08050E24: .4byte gSoftResetDisabled -_08050E28: - movs r0, 0 -_08050E2A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8050CE8 - - thumb_func_start sub_8050E30 -sub_8050E30: @ 8050E30 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _08050E50 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0xC - bls _08050E44 - b _080510AC -_08050E44: - lsls r0, 2 - ldr r1, _08050E54 @ =_08050E58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050E50: .4byte gUnknown_03004854 -_08050E54: .4byte _08050E58 - .align 2, 0 -_08050E58: - .4byte _08050E8C - .4byte _08050ED8 - .4byte _08050F00 - .4byte _08050F54 - .4byte _08050F74 - .4byte _08050F92 - .4byte _08050FBC - .4byte _08050FEC - .4byte _08051008 - .4byte _08051018 - .4byte _0805103C - .4byte _0805107C - .4byte _0805109E -_08050E8C: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r2, [r0] - ldr r0, _08050EB8 @ =0x00002222 - cmp r2, r0 - beq _08050F8A - ldr r0, _08050EBC @ =0x00001111 - cmp r2, r0 - beq _08050EA2 - b _080510AC -_08050EA2: - adds r0, r1, 0 - adds r0, 0x78 - ldrh r2, [r0] - ldr r0, _08050EC0 @ =0x00009999 - cmp r2, r0 - bne _08050EC4 - adds r1, 0x6F - movs r0, 0x2 - strb r0, [r1] - b _080510AC - .align 2, 0 -_08050EB8: .4byte 0x00002222 -_08050EBC: .4byte 0x00001111 -_08050EC0: .4byte 0x00009999 -_08050EC4: - ldr r0, _08050ED4 @ =0x0000aaaa - cmp r2, r0 - bne _08050F8A - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _080510AC - .align 2, 0 -_08050ED4: .4byte 0x0000aaaa -_08050ED8: - ldr r0, [r5] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050EF8 @ =gStringVar4 - ldr r1, _08050EFC @ =gOtherText_OtherCaseIsFull - b _08050F1E - .align 2, 0 -_08050EF8: .4byte gStringVar4 -_08050EFC: .4byte gOtherText_OtherCaseIsFull -_08050F00: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F48 @ =gStringVar4 - ldr r1, _08050F4C @ =gOtherText_NoBerriesForBlend -_08050F1E: - adds r0, r4, 0 - bl StringCopy - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F50 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl de_sub_8073110 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _080510AC - .align 2, 0 -_08050F48: .4byte gStringVar4 -_08050F4C: .4byte gOtherText_NoBerriesForBlend -_08050F50: .4byte gLinkPlayers + 0x8 -_08050F54: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050F60 - b _080510AC -_08050F60: - ldr r0, _08050F70 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051094 - .align 2, 0 -_08050F70: .4byte gUnknown_03004854 -_08050F74: - ldr r2, [r5] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _08050F88 - b _080510AC -_08050F88: - adds r1, r2, 0 -_08050F8A: - adds r1, 0x6F - movs r0, 0x5 - strb r0, [r1] - b _080510AC -_08050F92: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050FB4 @ =gMultiText_Saving - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - bl sub_80084A4 - ldr r0, _08050FB8 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08050FB4: .4byte gMultiText_Saving -_08050FB8: .4byte gUnknown_03004854 -_08050FBC: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510AC - ldr r3, _08050FE8 @ =gUnknown_03004854 - ldr r1, [r3] - movs r2, 0x98 - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - str r2, [r0] - b _080510AC - .align 2, 0 -_08050FE8: .4byte gUnknown_03004854 -_08050FEC: - bl sub_8050CE8 - lsls r0, 24 - cmp r0, 0 - beq _080510AC - movs r0, 0x37 - bl PlaySE - ldr r0, _08051004 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08051004: .4byte gUnknown_03004854 -_08051008: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80084A4 - b _080510AC -_08051018: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510AC - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08051038 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08051038: .4byte gUnknown_03004854 -_0805103C: - ldr r0, _08051064 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080510AC - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _08051068 @ =0x00002222 - cmp r1, r0 - bne _08051070 - ldr r0, _0805106C @ =sub_804E538 - bl SetMainCallback2 - b _080510AC - .align 2, 0 -_08051064: .4byte gPaletteFade -_08051068: .4byte 0x00002222 -_0805106C: .4byte sub_804E538 -_08051070: - movs r1, 0x98 - lsls r1, 1 - adds r0, r2, r1 - str r3, [r0] - adds r1, r2, 0 - b _08051094 -_0805107C: - ldr r1, [r5] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080510AC - bl sub_800832C - ldr r1, [r5] -_08051094: - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080510AC -_0805109E: - ldr r0, _080510C8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080510AC - ldr r0, _080510CC @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080510AC: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080510C8: .4byte gReceivedRemoteLinkPlayers -_080510CC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_8050E30 - - thumb_func_start sub_80510E8 -sub_80510E8: @ 80510E8 - push {lr} - ldr r1, _08051104 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0xA - bls _080510FA - b _0805121E -_080510FA: - lsls r0, 2 - ldr r1, _08051108 @ =_0805110C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051104: .4byte gUnknown_03004854 -_08051108: .4byte _0805110C - .align 2, 0 -_0805110C: - .4byte _08051138 - .4byte _0805116E - .4byte _08051190 - .4byte _080511BC - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _080511D8 - .4byte _080511F0 -_08051138: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x1 - bhi _0805114A - adds r1, 0x6F - movs r0, 0x9 - strb r0, [r1] -_0805114A: - ldr r2, [r3] - adds r0, r2, 0 - adds r0, 0x7C - ldrh r1, [r0] - cmp r1, 0x2 - bne _0805115A - subs r0, 0xD - strb r1, [r0] -_0805115A: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x3 - bne _0805121E - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _0805121E -_0805116E: - ldr r0, [r3] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0805118C @ =gOtherText_CaseIsFull - b _080511AC - .align 2, 0 -_0805118C: .4byte gOtherText_CaseIsFull -_08051190: - ldr r0, [r3] - adds r0, 0x6F - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080511B8 @ =gOtherText_OutOfBerries -_080511AC: - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0805121E - .align 2, 0 -_080511B8: .4byte gOtherText_OutOfBerries -_080511BC: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805121E - ldr r0, _080511D4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x9 - strb r1, [r0] - b _0805121E - .align 2, 0 -_080511D4: .4byte gUnknown_03004854 -_080511D8: - movs r0, 0x3 - bl BeginFastPaletteFade - ldr r0, _080511EC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805121E - .align 2, 0 -_080511EC: .4byte gUnknown_03004854 -_080511F0: - ldr r0, _08051210 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0805121E - ldr r0, [r3] - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _08051218 - ldr r0, _08051214 @ =sub_804E538 - bl SetMainCallback2 - b _0805121E - .align 2, 0 -_08051210: .4byte gPaletteFade -_08051214: .4byte sub_804E538 -_08051218: - ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0805121E: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_80510E8 - - thumb_func_start sub_805123C -sub_805123C: @ 805123C - push {r4-r6,lr} - ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08051248 - b _08051404 -_08051248: - ldr r4, _08051270 @ =gRecvCmds - ldrh r1, [r4] - ldr r0, _08051274 @ =0x00002fff - cmp r1, r0 - bne _080512C6 - ldrh r1, [r4, 0x8] - ldr r0, _08051278 @ =0x00001111 - cmp r1, r0 - bne _080512B8 - ldrh r3, [r4, 0x10] - ldr r0, _0805127C @ =0x00009999 - cmp r3, r0 - beq _08051298 - cmp r3, r0 - bgt _08051284 - ldr r0, _08051280 @ =0x00008888 - b _08051286 - .align 2, 0 -_0805126C: .4byte gReceivedRemoteLinkPlayers -_08051270: .4byte gRecvCmds -_08051274: .4byte 0x00002fff -_08051278: .4byte 0x00001111 -_0805127C: .4byte 0x00009999 -_08051280: .4byte 0x00008888 -_08051284: - ldr r0, _08051290 @ =0x0000aaaa -_08051286: - cmp r3, r0 - beq _08051298 - ldr r2, _08051294 @ =gUnknown_03004854 - b _080512A8 - .align 2, 0 -_08051290: .4byte 0x0000aaaa -_08051294: .4byte gUnknown_03004854 -_08051298: - ldr r2, _080512B0 @ =gUnknown_03004854 - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x78 - strh r3, [r1] - ldrh r1, [r4, 0x18] - adds r0, 0x7A - strh r1, [r0] -_080512A8: - ldr r0, [r2] - adds r0, 0x70 - ldr r1, _080512B4 @ =0x00001111 - b _080512C4 - .align 2, 0 -_080512B0: .4byte gUnknown_03004854 -_080512B4: .4byte 0x00001111 -_080512B8: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512C6 - ldr r0, _080512F8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x70 -_080512C4: - strh r1, [r0] -_080512C6: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080512D2 - b _08051404 -_080512D2: - ldr r2, _080512F8 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _080512FC @ =0x00001111 - cmp r1, r0 - bne _080512E2 - b _08051404 -_080512E2: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512EA - b _08051404 -_080512EA: - movs r4, 0 - ldr r6, _08051300 @ =0x00002fff - adds r5, r2, 0 - b _0805134E - .align 2, 0 -_080512F4: .4byte 0x00002222 -_080512F8: .4byte gUnknown_03004854 -_080512FC: .4byte 0x00001111 -_08051300: .4byte 0x00002fff -_08051304: - ldr r1, _08051328 @ =gRecvCmds - lsls r2, r4, 1 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r6 - bne _08051348 - adds r0, r1, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldrh r1, [r0] - ldr r0, _0805132C @ =0x00008888 - cmp r1, r0 - beq _08051340 - cmp r1, r0 - bgt _08051334 - ldr r0, _08051330 @ =0x00007779 - b _0805133C - .align 2, 0 -_08051328: .4byte gRecvCmds -_0805132C: .4byte 0x00008888 -_08051330: .4byte 0x00007779 -_08051334: - ldr r0, _08051360 @ =0x00009999 - cmp r1, r0 - beq _08051340 - ldr r0, _08051364 @ =0x0000aaaa -_0805133C: - cmp r1, r0 - bne _08051348 -_08051340: - ldr r0, [r5] - adds r0, 0x70 - adds r0, r2 - strh r1, [r0] -_08051348: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805134E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08051304 - movs r4, 0 - b _0805136E - .align 2, 0 -_08051360: .4byte 0x00009999 -_08051364: .4byte 0x0000aaaa -_08051368: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805136E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _0805138A - ldr r0, _0805139C @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08051368 -_0805138A: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _08051404 - movs r4, 0 - ldr r5, _080513A0 @ =0x00007779 - b _080513AA - .align 2, 0 -_0805139C: .4byte gUnknown_03004854 -_080513A0: .4byte 0x00007779 -_080513A4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080513AA: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _080513C6 - ldr r0, _080513E0 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080513A4 -_080513C6: - ldr r5, _080513E4 @ =gSendCmd - movs r6, 0 - ldr r0, _080513E8 @ =0x00002fff - strh r0, [r5] - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _080513F0 - ldr r0, _080513EC @ =0x00002222 - strh r0, [r5, 0x2] - b _08051404 - .align 2, 0 -_080513E0: .4byte gUnknown_03004854 -_080513E4: .4byte gSendCmd -_080513E8: .4byte 0x00002fff -_080513EC: .4byte 0x00002222 -_080513F0: - ldr r0, _0805140C @ =0x00001111 - strh r0, [r5, 0x2] - ldr r0, _08051410 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - strh r4, [r5, 0x6] -_08051404: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805140C: .4byte 0x00001111 -_08051410: .4byte gUnknown_03004854 - thumb_func_end sub_805123C - - thumb_func_start sub_8051414 -sub_8051414: @ 8051414 - push {lr} - sub sp, 0x14 - adds r1, r0, 0 - movs r0, 0xF0 - lsls r0, 7 - str r0, [sp] - movs r0, 0xA0 - lsls r0, 7 - str r0, [sp, 0x4] - mov r3, sp - ldr r0, _08051470 @ =gUnknown_03004854 - ldr r0, [r0] - mov r12, r0 - movs r0, 0xA2 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x78 - subs r0, r2 - strh r0, [r3, 0x8] - movs r0, 0xA3 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x50 - subs r0, r2 - strh r0, [r3, 0xA] - mov r2, sp - movs r3, 0xA1 - lsls r3, 1 - add r3, r12 - ldrh r0, [r3] - strh r0, [r2, 0xC] - ldrh r0, [r3] - strh r0, [r2, 0xE] - mov r0, r12 - adds r0, 0x54 - ldrh r0, [r0] - strh r0, [r2, 0x10] - mov r0, sp - movs r2, 0x1 - bl BgAffineSet - add sp, 0x14 - pop {r0} - bx r0 - .align 2, 0 -_08051470: .4byte gUnknown_03004854 - thumb_func_end sub_8051414 - - thumb_func_start sub_8051474 -sub_8051474: @ 8051474 - push {lr} - ldr r0, _080514A0 @ =gUnknown_03004854 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x54 - ldrh r2, [r1] - adds r0, r3, 0 - adds r0, 0x58 - strh r2, [r0] - subs r0, 0x2 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - movs r1, 0xB4 - lsls r1, 1 - adds r0, r3, r1 - bl sub_8051414 - pop {r0} - bx r0 - .align 2, 0 -_080514A0: .4byte gUnknown_03004854 - thumb_func_end sub_8051474 - - thumb_func_start sub_80514A4 -sub_80514A4: @ 80514A4 - ldr r1, _080514E8 @ =REG_BG2PA - ldr r0, _080514EC @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xB4 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - adds r3, 0x4 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080514E8: .4byte REG_BG2PA -_080514EC: .4byte gUnknown_03004854 - thumb_func_end sub_80514A4 - - thumb_func_start sub_80514F0 -sub_80514F0: @ 80514F0 - ldr r1, _0805151C @ =REG_BG1HOFS - ldr r0, _08051520 @ =gUnknown_03004854 - ldr r3, [r0] - movs r0, 0xA2 - lsls r0, 1 - adds r2, r3, r0 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - movs r0, 0xA3 - lsls r0, 1 - adds r3, r0 - ldrh r0, [r3] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r3] - strh r0, [r1] - bx lr - .align 2, 0 -_0805151C: .4byte REG_BG1HOFS -_08051520: .4byte gUnknown_03004854 - thumb_func_end sub_80514F0 - - thumb_func_start sub_8051524 -sub_8051524: @ 8051524 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051542 - adds r0, 0x7 -_08051542: - asrs r0, 3 - strh r0, [r2, 0x24] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051550 - adds r0, 0x7 -_08051550: - asrs r0, 3 - strh r0, [r2, 0x26] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08051568 - adds r0, r2, 0 - bl DestroySprite -_08051568: - pop {r0} - bx r0 - thumb_func_end sub_8051524 - - thumb_func_start sub_805156C -sub_805156C: @ 805156C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - bl Random - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0x1 - ands r1, r0 - adds r0, r1, 0x1 - cmp r0, 0 - beq _08051628 - ldr r0, _08051638 @ =gSineTable - mov r9, r0 - ldr r2, _0805163C @ =gSprites - mov r10, r2 - adds r6, r1, 0x1 - movs r3, 0x1F - mov r8, r3 - movs r7, 0x10 -_08051598: - bl Random - ldr r1, _08051640 @ =gUnknown_03004854 - ldr r4, [r1] - adds r4, 0x54 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - ldrh r1, [r4] - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - add r0, r9 - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - bge _080515CC - adds r1, 0x3 -_080515CC: - asrs r1, 2 - lsls r0, r2, 1 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _080515DC - adds r0, 0x3 -_080515DC: - asrs r2, r0, 2 - adds r1, 0x78 - adds r2, 0x50 - ldr r0, _08051644 @ =gSpriteTemplate_82164FC - movs r3, 0x1 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - mov r3, r10 - adds r4, r5, r3 - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - ands r0, r1 - subs r0, r7, r0 - strh r0, [r4, 0x2E] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r2, r8 - ands r0, r2 - subs r0, r7, r0 - strh r0, [r4, 0x30] - ldr r3, _08051648 @ =gSprites + 0x1C - adds r5, r3 - ldr r0, _0805164C @ =sub_8051524 - str r0, [r5] - subs r6, 0x1 - cmp r6, 0 - bne _08051598 -_08051628: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051638: .4byte gSineTable -_0805163C: .4byte gSprites -_08051640: .4byte gUnknown_03004854 -_08051644: .4byte gSpriteTemplate_82164FC -_08051648: .4byte gSprites + 0x1C -_0805164C: .4byte sub_8051524 - thumb_func_end sub_805156C - - thumb_func_start sub_8051650 -sub_8051650: @ 8051650 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0805167C - adds r0, r4, 0 - bl DestroySprite -_0805167C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8051650 - - thumb_func_start sub_8051684 -sub_8051684: @ 8051684 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xC - negs r1, r1 - cmp r0, r1 - bge _080516A8 - ldr r0, _080516C0 @ =0x0000fff4 - strh r0, [r2, 0x26] -_080516A8: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080516BC - adds r0, r2, 0 - bl DestroySprite -_080516BC: - pop {r0} - bx r0 - .align 2, 0 -_080516C0: .4byte 0x0000fff4 - thumb_func_end sub_8051684 - - thumb_func_start sub_80516C4 -sub_80516C4: @ 80516C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080516F4 @ =gUnknown_03004854 - ldr r3, [r2] - lsls r4, r0, 1 - adds r2, r3, 0 - adds r2, 0x80 - adds r2, r4 - strh r1, [r2] - lsls r0, 4 - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - adds r3, r0 - adds r0, r3, 0 - bl sub_804E844 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080516F4: .4byte gUnknown_03004854 - thumb_func_end sub_80516C4 - - thumb_func_start unref_sub_80516F8 -unref_sub_80516F8: @ 80516F8 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080517B8 @ =gTasks - adds r4, r0, r1 - ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r6] - cmp r0, 0 - beq _0805180C - bl GetMultiplayerId - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080517D4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _08051730 - strh r1, [r4, 0x8] -_08051730: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x64 - bne _080517A0 - ldr r0, _080517C0 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x4 - movs r1, 0x14 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl ZeroFillWindowRect - movs r0, 0x4 - movs r1, 0x4 - movs r2, 0xA - movs r3, 0xC - bl MenuDrawTextWindow - movs r2, 0 - ldr r6, _080517C4 @ =gLinkPlayers + 0x4 -_0805175C: - adds r4, r2, 0x1 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - cmp r0, 0 - beq _08051784 - ldr r1, _080517C8 @ =gUnknown_08216284 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - lsls r2, 25 - movs r1, 0xA0 - lsls r1, 19 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint -_08051784: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _080517CC @ =gOtherText_PressAToStart - movs r1, 0x1 - movs r2, 0xF - bl MenuPrint - adds r2, r4, 0 - cmp r2, 0x2 - ble _0805175C -_080517A0: - ldr r0, _080517D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805180C - bl sub_8007E4C - adds r0, r5, 0 - bl DestroyTask - b _0805180C - .align 2, 0 -_080517B8: .4byte gTasks -_080517BC: .4byte gReceivedRemoteLinkPlayers -_080517C0: .4byte gUnknown_03004854 -_080517C4: .4byte gLinkPlayers + 0x4 -_080517C8: .4byte gUnknown_08216284 -_080517CC: .4byte gOtherText_PressAToStart -_080517D0: .4byte gMain -_080517D4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080517E6 - ldr r0, _08051814 @ =gOtherText_PleaseWait - movs r1, 0x3 - movs r2, 0xA - bl MenuPrint -_080517E6: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _080517F8 - movs r0, 0 - strh r0, [r4, 0x8] -_080517F8: - ldr r0, _08051818 @ =byte_3002A68 - ldrb r0, [r0] - cmp r0, 0x4 - bls _0805180C - ldrb r0, [r6] - cmp r0, 0x1 - bne _0805180C - adds r0, r5, 0 - bl DestroyTask -_0805180C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051814: .4byte gOtherText_PleaseWait -_08051818: .4byte byte_3002A68 - thumb_func_end unref_sub_80516F8 - - thumb_func_start sub_805181C -sub_805181C: @ 805181C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051858 - cmp r0, 0x1 - bgt _08051832 - cmp r0, 0 - beq _08051838 - b _080518BE -_08051832: - cmp r0, 0x2 - beq _08051872 - b _080518BE -_08051838: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x58 - ble _080518BE - movs r0, 0x58 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _080518BE -_08051858: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080518BE - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x32] - b _080518BE -_08051872: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _080518BE - ldrh r0, [r4, 0x34] - adds r0, 0x1 - adds r1, r0, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080518AC - adds r0, r4, 0 - bl DestroySprite - ldr r0, _080518A8 @ =gSpriteTemplate_821657C - movs r2, 0x14 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x2 - bl CreateSprite - b _080518BE - .align 2, 0 -_080518A8: .4byte gSpriteTemplate_821657C -_080518AC: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080518C8 @ =0x0000fff0 - strh r0, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080518BE: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080518C8: .4byte 0x0000fff0 - thumb_func_end sub_805181C - - thumb_func_start sub_80518CC -sub_80518CC: @ 80518CC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051908 - cmp r0, 0x1 - bgt _080518E2 - cmp r0, 0 - beq _080518E8 - b _0805193C -_080518E2: - cmp r0, 0x2 - beq _0805191E - b _0805193C -_080518E8: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5C - ble _0805193C - movs r0, 0x5C - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x15 - bl PlaySE - b _0805193C -_08051908: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0805193C - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0805193C -_0805191E: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _0805193C - ldr r0, _08051948 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_0805193C: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051948: .4byte gUnknown_03004854 - thumb_func_end sub_80518CC - - thumb_func_start sub_805194C -sub_805194C: @ 805194C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r1, _08051978 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA0 - lsls r2, 1 - adds r1, r2 - ldrh r2, [r1] - cmp r2, r0 - bcs _08051972 - adds r0, r2, 0x2 - strh r0, [r1] - ldrh r0, [r1] - adds r1, r3, 0 - bl sub_805197C -_08051972: - pop {r0} - bx r0 - .align 2, 0 -_08051978: .4byte gUnknown_03004854 - thumb_func_end sub_805194C - - thumb_func_start sub_805197C -sub_805197C: @ 805197C - push {r4-r7,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r7, _08051A0C @ =0x06006000 - lsrs r0, 10 - bl __divsi3 - adds r1, r0, 0 - cmp r1, 0 - bge _08051994 - adds r0, r1, 0x7 -_08051994: - asrs r4, r0, 3 - movs r3, 0 - cmp r3, r4 - bge _080519BC - ldr r0, _08051A10 @ =0x000081e9 - adds r6, r0, 0 - adds r0, 0x10 - adds r5, r0, 0 - adds r2, r7, 0 - adds r2, 0x56 - adds r0, r7, 0 - adds r3, r4, 0 -_080519AC: - strh r6, [r0, 0x16] - strh r5, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080519AC - adds r3, r4, 0 -_080519BC: - adds r0, r1, 0 - cmp r1, 0 - bge _080519C4 - adds r0, r1, 0x7 -_080519C4: - asrs r2, r0, 3 - lsls r0, r2, 3 - subs r2, r1, r0 - cmp r2, 0 - beq _080519E2 - lsls r0, r3, 1 - adds r0, r7 - ldr r4, _08051A14 @ =0xffff81e1 - adds r1, r2, r4 - strh r1, [r0, 0x16] - adds r0, 0x56 - adds r4, 0x10 - adds r1, r2, r4 - strh r1, [r0] - adds r3, 0x1 -_080519E2: - cmp r3, 0x7 - bgt _08051A06 - ldr r0, _08051A18 @ =0x000081e1 - adds r4, r0, 0 - adds r0, 0x10 - adds r2, r0, 0 - lsls r1, r3, 1 - adds r0, r1, 0 - adds r0, 0x56 - adds r0, r7 - adds r1, r7 -_080519F8: - strh r4, [r1, 0x16] - strh r2, [r0] - adds r0, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x7 - ble _080519F8 -_08051A06: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051A0C: .4byte 0x06006000 -_08051A10: .4byte 0x000081e9 -_08051A14: .4byte 0xffff81e1 -_08051A18: .4byte 0x000081e1 - thumb_func_end sub_805197C - - thumb_func_start sub_8051A1C -sub_8051A1C: @ 8051A1C - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08051A34 @ =0x00057e40 - muls r0, r1 - cmp r0, 0 - bge _08051A2E - ldr r1, _08051A38 @ =0x0000ffff - adds r0, r1 -_08051A2E: - asrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08051A34: .4byte 0x00057e40 -_08051A38: .4byte 0x0000ffff - thumb_func_end sub_8051A1C - - thumb_func_start sub_8051A3C -sub_8051A3C: @ 8051A3C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - bl sub_8051A1C - adds r5, r0, 0 - ldr r0, _08051ABC @ =gUnknown_03004854 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x5A - ldrh r0, [r1] - cmp r0, r5 - bcs _08051A5A - strh r5, [r1] -_08051A5A: - movs r6, 0 -_08051A5C: - mov r0, sp - adds r4, r0, r6 - adds r0, r5, 0 - movs r1, 0xA - bl __umodsi3 - strb r0, [r4] - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bls _08051A5C - ldr r2, _08051AC0 @ =0x06006458 - mov r0, sp - ldr r3, _08051AC4 @ =0x00008172 - adds r1, r3, 0 - ldrb r0, [r0, 0x4] - adds r0, r1, r0 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x3] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x2] - adds r0, r1 - strh r0, [r2] - adds r2, 0x4 - mov r0, sp - ldrb r0, [r0, 0x1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0] - adds r1, r0 - strh r1, [r2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051ABC: .4byte gUnknown_03004854 -_08051AC0: .4byte 0x06006458 -_08051AC4: .4byte 0x00008172 - thumb_func_end sub_8051A3C - - thumb_func_start sub_8051AC8 -sub_8051AC8: @ 8051AC8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 16 - lsrs r5, r4, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08051AEC - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __umodsi3 - lsrs r1, r4, 17 - subs r0, r1 - strh r0, [r6] -_08051AEC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8051AC8 - - thumb_func_start sub_8051AF4 -sub_8051AF4: @ 8051AF4 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bge _08051B06 - adds r0, r2, 0x1 - strh r0, [r1] -_08051B06: - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08051B14 - subs r0, r2, 0x1 - strh r0, [r1] -_08051B14: - pop {r0} - bx r0 - thumb_func_end sub_8051AF4 - - thumb_func_start sub_8051B18 -sub_8051B18: @ 8051B18 - push {r4,lr} - ldr r4, _08051B3C @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0xA2 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - ldr r0, [r4] - movs r1, 0xA3 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051B3C: .4byte gUnknown_03004854 - thumb_func_end sub_8051B18 - - thumb_func_start sub_8051B40 -sub_8051B40: @ 8051B40 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r5, 0x8 - cmp r1, 0x9 - bhi _08051B50 - movs r5, 0x10 -_08051B50: - ldrh r0, [r4] - movs r2, 0 - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08051B6E - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsrs r1, r5, 1 - subs r0, r1 - b _08051B82 -_08051B6E: - cmp r1, 0 - bge _08051B76 - adds r0, 0x1 - strh r0, [r4] -_08051B76: - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08051B84 - subs r0, r1, 0x1 -_08051B82: - strh r0, [r4] -_08051B84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8051B40 - - thumb_func_start sub_8051B8C -sub_8051B8C: @ 8051B8C - push {r4,r5,lr} - ldr r5, _08051BE4 @ =gUnknown_03004854 - ldr r2, [r5] - movs r4, 0x98 - lsls r4, 1 - adds r0, r2, r4 - ldr r1, [r0] - cmp r1, 0 - bne _08051BAC - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] -_08051BAC: - ldr r0, [r5] - adds r2, r0, r4 - ldr r1, [r2] - adds r1, 0x1 - str r1, [r2] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_8051B40 - ldr r1, [r5] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r1, r3 - adds r1, r4 - ldrh r1, [r1] - bl sub_8051B40 - ldr r2, [r5] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x14 - beq _08051BE8 - movs r0, 0 - b _08051BFC - .align 2, 0 -_08051BE4: .4byte gUnknown_03004854 -_08051BE8: - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x1 -_08051BFC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8051B8C - - thumb_func_start sub_8051C04 -sub_8051C04: @ 8051C04 - ldr r1, _08051C20 @ =gUnknown_03004854 - ldr r2, [r1] - movs r3, 0xA2 - lsls r3, 1 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x24] - adds r3, 0x2 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x26] - bx lr - .align 2, 0 -_08051C20: .4byte gUnknown_03004854 - thumb_func_end sub_8051C04 - - thumb_func_start sub_8051C24 -sub_8051C24: @ 8051C24 - push {lr} - ldr r2, _08051C4C @ =gSaveBlock1 - ldr r0, _08051C50 @ =gUnknown_03004854 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 1 - ldr r3, _08051C54 @ =0x0000096c - adds r2, r3 - adds r2, r0, r2 - adds r1, 0x5A - ldrh r1, [r1] - ldrh r0, [r2] - cmp r0, r1 - bcs _08051C48 - strh r1, [r2] -_08051C48: - pop {r0} - bx r0 - .align 2, 0 -_08051C4C: .4byte gSaveBlock1 -_08051C50: .4byte gUnknown_03004854 -_08051C54: .4byte 0x0000096c - thumb_func_end sub_8051C24 - - thumb_func_start sub_8051C58 -sub_8051C58: @ 8051C58 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - ldr r1, _08051C7C @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _08051C72 - b _08052006 -_08051C72: - lsls r0, 2 - ldr r1, _08051C80 @ =_08051C84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051C7C: .4byte gUnknown_03004854 -_08051C80: .4byte _08051C84 - .align 2, 0 -_08051C84: - .4byte _08051CA0 - .4byte _08051CB6 - .4byte _08051CD0 - .4byte _08051D20 - .4byte _08051F40 - .4byte _08051F54 - .4byte _08051FF4 -_08051CA0: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0x11 - str r1, [r0] - b _08052006 -_08051CB6: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08051CCA - b _08052006 -_08051CCA: - movs r0, 0 - str r0, [r2] - b _08051FDE -_08051CD0: - ldr r1, [r2] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _08051CE4 - b _08052006 -_08051CE4: - movs r6, 0 -_08051CE6: - ldr r4, _08051D18 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x50 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051D1C @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x2 - bls _08051CE6 - ldr r1, [r4] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FDE - .align 2, 0 -_08051D18: .4byte gUnknown_03004854 -_08051D1C: .4byte gSprites -_08051D20: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _08051F10 @ =gOtherText_ResultsOfBlending - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - movs r6, 0 - ldr r1, _08051F14 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - add r2, sp, 0xC - mov r9, r2 - mov r2, sp - adds r2, 0x16 - str r2, [sp, 0x30] - ldrb r0, [r0] - cmp r6, r0 - bcs _08051E04 - mov r8, r1 - ldr r0, _08051F18 @ =gLinkPlayers - mov r10, r0 -_08051D56: - mov r1, r8 - ldr r2, [r1] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r2, r1 - adds r0, r6 - ldrb r5, [r0] - mov r7, r9 - lsls r1, r5, 4 - adds r1, r2 - movs r2, 0xBF - lsls r2, 1 - adds r1, r2 - adds r0, r7, 0 - bl StringCopy - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - mov r1, r10 - adds r0, r4, r1 - ldrb r1, [r0, 0x1A] - adds r0, r7, 0 - bl ConvertInternationalString - adds r0, r7, 0 - ldr r1, _08051F1C @ =gOtherText_Berry - bl de_sub_8073174 - mov r2, r8 - ldr r0, [r2] - adds r7, r0, 0 - adds r7, 0xAB - adds r5, r6, 0x1 - adds r0, r7, 0 - adds r1, r5, 0 - bl ConvertIntToDecimalString - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - ldr r0, _08051F20 @ =gLinkPlayers + 0x8 - adds r4, r0 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x58 - movs r3, 0 - bl sub_8072C74 - adds r7, r0, 0 - add r1, sp, 0xC - movs r2, 0x9D - movs r3, 0 - bl sub_8072C74 - mov r2, r8 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xAB - ldr r3, _08051F24 @ =gUnknown_082165E9 - adds r1, 0x88 - ldrb r2, [r1] - adds r3, r2, r3 - ldr r1, _08051F28 @ =gUnknown_082165EE - adds r2, r1 - ldrb r1, [r2] - adds r2, r6, 0 - muls r2, r1 - ldrb r3, [r3] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r5, 16 - lsrs r6, r5, 16 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bcc _08051D56 -_08051E04: - ldr r6, _08051F14 @ =gUnknown_03004854 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F2C @ =gOtherText_MaxSpeed - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r7, 0 - movs r2, 0x79 - movs r3, 0x1 - bl sub_8072C14 - adds r7, r0, 0 - movs r0, 0xB8 - strb r0, [r7] - adds r7, 0x1 - adds r0, r7, 0 - mov r1, r9 - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F30 @ =gOtherText_RPM - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xD - bl MenuPrint - ldr r0, [r6] - movs r2, 0x96 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x3C - bl __udivsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [sp, 0x30] - adds r1, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F34 @ =gOtherText_RequiredTime - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - mov r1, r9 - movs r2, 0x63 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F38 @ =gOtherText_Min - bl StringAppend - adds r7, r0, 0 - ldr r1, [sp, 0x30] - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F3C @ =gOtherText_Sec - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xF - bl MenuPrint - ldr r1, [r6] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FDE - .align 2, 0 -_08051F10: .4byte gOtherText_ResultsOfBlending -_08051F14: .4byte gUnknown_03004854 -_08051F18: .4byte gLinkPlayers -_08051F1C: .4byte gOtherText_Berry -_08051F20: .4byte gLinkPlayers + 0x8 -_08051F24: .4byte gUnknown_082165E9 -_08051F28: .4byte gUnknown_082165EE -_08051F2C: .4byte gOtherText_MaxSpeed -_08051F30: .4byte gOtherText_RPM -_08051F34: .4byte gOtherText_RequiredTime -_08051F38: .4byte gOtherText_Min -_08051F3C: .4byte gOtherText_Sec -_08051F40: - ldr r0, _08051F50 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052006 - ldr r1, [r2] - b _08051FDE - .align 2, 0 -_08051F50: .4byte gMain -_08051F54: - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r6, 0 - add r5, sp, 0x28 - ldr r0, _08051FE8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r3, r0, 0 - adds r3, 0x80 - add r2, sp, 0x20 -_08051F72: - lsls r1, r6, 1 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _08051F82 - adds r1, r2, r1 - subs r0, 0x85 - strh r0, [r1] -_08051F82: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08051F72 - bl sub_8050760 - ldr r4, _08051FE8 @ =gUnknown_03004854 - ldr r3, [r4] - movs r1, 0xBE - lsls r1, 1 - adds r0, r3, r1 - adds r1, r3, 0 - adds r1, 0x88 - ldrb r2, [r1] - subs r1, 0x2E - ldrh r1, [r1] - str r1, [sp] - adds r1, r5, 0 - add r3, sp, 0x4 - bl sub_8050520 - ldr r1, [r4] - adds r1, 0xAB - adds r0, r5, 0 - bl sub_805201C - ldr r0, _08051FEC @ =sub_8052BD0 - movs r1, 0x6 - bl CreateTask - ldr r0, [r4] - adds r0, 0xAB - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r0, _08051FF0 @ =gScriptItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - bl sub_810CA34 - ldr r1, [r4] -_08051FDE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08052006 - .align 2, 0 -_08051FE8: .4byte gUnknown_03004854 -_08051FEC: .4byte sub_8052BD0 -_08051FF0: .4byte gScriptItemId -_08051FF4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08052006 - bl sub_8051C24 - movs r0, 0x1 - b _08052008 -_08052006: - movs r0, 0 -_08052008: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8051C58 - - thumb_func_start sub_805201C -sub_805201C: @ 805201C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - strb r0, [r6] - ldr r1, _080520B0 @ =gPokeblockNames - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - ldr r1, _080520B4 @ =gOtherText_PokeBlockMade - adds r0, r6, 0 - bl de_sub_8073174 - ldr r1, _080520B8 @ =gUnknown_082162C8 - adds r0, r6, 0 - bl StringAppend - adds r0, r5, 0 - bl sub_810C9B0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_810C9E8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080520BC @ =gOtherText_BlockLevelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C0 @ =gOtherText_BlockFeelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C4 @ =gOtherText_Period - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520C8 @ =gUnknown_08216249 - adds r0, r6, 0 - bl StringAppend - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080520B0: .4byte gPokeblockNames -_080520B4: .4byte gOtherText_PokeBlockMade -_080520B8: .4byte gUnknown_082162C8 -_080520BC: .4byte gOtherText_BlockLevelIs -_080520C0: .4byte gOtherText_BlockFeelIs -_080520C4: .4byte gOtherText_Period -_080520C8: .4byte gUnknown_08216249 - thumb_func_end sub_805201C - - thumb_func_start sub_80520CC -sub_80520CC: @ 80520CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - mov r12, r2 - lsls r1, 24 - lsrs r7, r1, 24 - movs r0, 0 - cmp r0, r7 - bge _08052118 -_080520E2: - movs r5, 0 - adds r1, r0, 0x1 - mov r8, r1 - cmp r5, r7 - bge _08052112 - mov r1, r9 - adds r6, r1, r0 -_080520F0: - ldrb r4, [r6] - lsls r1, r4, 2 - add r1, r12 - mov r0, r9 - adds r2, r0, r5 - ldrb r3, [r2] - lsls r0, r3, 2 - add r0, r12 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - bls _0805210C - strb r3, [r6] - strb r4, [r2] -_0805210C: - adds r5, 0x1 - cmp r5, r7 - blt _080520F0 -_08052112: - mov r0, r8 - cmp r0, r7 - blt _080520E2 -_08052118: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80520CC - - thumb_func_start sub_8052124 -sub_8052124: @ 8052124 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r5, 0 - ldr r1, _08052144 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - mov r10, r1 - mov r2, sp - adds r2, 0x4 - str r2, [sp, 0x14] - b _08052158 - .align 2, 0 -_08052144: .4byte gUnknown_03004854 -_08052148: - mov r4, sp - adds r0, r4, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r1] - adds r0, 0x88 -_08052158: - ldrb r0, [r0] - cmp r5, r0 - bcc _08052148 - movs r5, 0 - mov r1, r10 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x88 - ldrb r2, [r1] - cmp r5, r2 - bcs _080521D6 - ldr r4, [sp, 0x14] - mov r9, r4 - movs r2, 0xA6 - lsls r2, 1 - adds r2, r0 - mov r8, r2 - mov r12, r1 - movs r4, 0xA7 - lsls r4, 1 - adds r7, r0, r4 - movs r1, 0xA8 - lsls r1, 1 - adds r6, r0, r1 -_08052188: - lsls r4, r5, 2 - add r4, r9 - lsls r3, r5, 1 - adds r3, r5 - lsls r3, 1 - mov r2, r8 - adds r0, r2, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r1, r0, 6 - subs r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r1, 6 - str r1, [r4] - adds r0, r7, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - str r1, [r4] - movs r0, 0xFA - lsls r0, 2 - adds r1, r0 - adds r3, r6, r3 - ldrh r0, [r3] - subs r1, r0 - str r1, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r12 - ldrb r1, [r1] - cmp r5, r1 - bcc _08052188 -_080521D6: - mov r2, r10 - ldr r0, [r2] - adds r0, 0x88 - ldrb r1, [r0] - mov r0, sp - ldr r2, [sp, 0x14] - bl sub_80520CC - movs r5, 0 - mov r4, r10 - ldr r0, [r4] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcs _08052218 - mov r2, r10 - movs r3, 0xB2 - lsls r3, 1 -_080521FA: - ldr r1, [r2] - adds r1, r3 - adds r1, r5 - mov r4, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r2] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcc _080521FA -_08052218: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8052124 - - thumb_func_start sub_8052228 -sub_8052228: @ 8052228 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _08052248 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _0805223C - b _080524AE -_0805223C: - lsls r0, 2 - ldr r1, _0805224C @ =_08052250 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052248: .4byte gUnknown_03004854 -_0805224C: .4byte _08052250 - .align 2, 0 -_08052250: - .4byte _0805226C - .4byte _08052282 - .4byte _0805229C - .4byte _080522B6 - .4byte _08052464 - .4byte _0805247E - .4byte _080524A4 -_0805226C: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - str r1, [r0] - b _080524AE -_08052282: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08052296 - b _080524AE -_08052296: - movs r0, 0 - str r0, [r2] - b _08052494 -_0805229C: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - cmp r0, 0x14 - bgt _080522B0 - b _080524AE -_080522B0: - movs r0, 0 - str r0, [r2] - b _08052494 -_080522B6: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _0805236C @ =gOtherText_Ranking - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - ldr r6, _08052370 @ =gSpriteTemplate_821645C - adds r0, r6, 0 - movs r1, 0x8C - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r7, _08052374 @ =gUnknown_03004854 - ldr r1, [r7] - adds r1, 0x50 - strb r0, [r1] - ldr r1, _08052378 @ =gSprites - mov r8, r1 - ldr r2, [r7] - adds r2, 0x50 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r5, r8 - adds r5, 0x1C - adds r0, r5 - ldr r4, _0805237C @ =SpriteCallbackDummy - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x3 - bl StartSpriteAnim - adds r0, r6, 0 - movs r1, 0xA4 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x51 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x51 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - adds r0, r6, 0 - movs r1, 0xBC - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x52 - strb r0, [r1] - ldr r2, [r7] - adds r2, 0x52 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x1 - bl StartSpriteAnim - bl sub_8052124 - movs r2, 0 - mov r8, r2 - b _0805243C - .align 2, 0 -_0805236C: .4byte gOtherText_Ranking -_08052370: .4byte gSpriteTemplate_821645C -_08052374: .4byte gUnknown_03004854 -_08052378: .4byte gSprites -_0805237C: .4byte SpriteCallbackDummy -_08052380: - ldr r1, [r7] - movs r2, 0xB2 - lsls r2, 1 - adds r0, r1, r2 - add r0, r8 - ldrb r5, [r0] - adds r2, r1, 0 - adds r2, 0xAB - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x4 - strb r0, [r2, 0x2] - adds r2, 0x3 - mov r6, r8 - adds r6, 0x1 - adds r0, r2, 0 - adds r1, r6, 0 - bl ConvertIntToDecimalString - adds r2, r0, 0 - movs r1, 0 - strb r1, [r2] - movs r0, 0xAD - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - adds r2, 0x3 - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - ldr r0, _08052458 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, [r7] - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 1 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x6C - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA7 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x84 - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x9C - movs r3, 0x1 - bl sub_8072C14 - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xAB - ldr r2, _0805245C @ =gUnknown_082165F3 - adds r1, 0x88 - ldrb r1, [r1] - adds r1, r2 - ldrb r1, [r1] - mov r2, r8 - muls r2, r1 - adds r2, 0x8 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r6, 16 - lsrs r6, 16 - mov r8, r6 -_0805243C: - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r8, r0 - bcc _08052380 - ldr r0, _08052460 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08052494 - .align 2, 0 -_08052458: .4byte gLinkPlayers + 0x8 -_0805245C: .4byte gUnknown_082165F3 -_08052460: .4byte gUnknown_03004854 -_08052464: - ldr r2, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - ble _080524AE - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _080524AE -_0805247E: - ldr r0, _0805249C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080524AE - movs r0, 0x5 - bl PlaySE - ldr r0, _080524A0 @ =gUnknown_03004854 - ldr r1, [r0] -_08052494: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080524AE - .align 2, 0 -_0805249C: .4byte gMain -_080524A0: .4byte gUnknown_03004854 -_080524A4: - ldr r1, [r2] - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _080524B0 -_080524AE: - movs r0, 0 -_080524B0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8052228 - - thumb_func_start unref_sub_80524BC -unref_sub_80524BC: @ 80524BC - push {r4,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0805251C @ =sub_804E2D8 - bl SetVBlankCallback - ldr r4, _08052520 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r0, _08052524 @ =gMain - ldrh r0, [r0, 0x20] - bl SeedRng - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xAA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r1, _08052528 @ =gUnknown_03000560 - movs r0, 0xFA - lsls r0, 5 - strh r0, [r1, 0x1A] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - ldr r0, _0805252C @ =sub_8052AF8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805251C: .4byte sub_804E2D8 -_08052520: .4byte gWindowConfig_81E6CE4 -_08052524: .4byte gMain -_08052528: .4byte gUnknown_03000560 -_0805252C: .4byte sub_8052AF8 - thumb_func_end unref_sub_80524BC - - thumb_func_start sub_8052530 -sub_8052530: @ 8052530 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x98 - ldr r1, _080525C8 @ =gOtherText_BPMAndDash - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0 - bl MenuPrint - ldr r4, _080525CC @ =gUnknown_03000560 - movs r1, 0x1A - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - mov r0, sp - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r0, sp - movs r1, 0x6 - movs r2, 0 - bl MenuPrint - movs r6, 0 - mov r2, sp - adds r2, 0x3 - str r2, [sp, 0x84] - mov r3, sp - adds r3, 0x6 - str r3, [sp, 0x88] - mov r0, sp - adds r0, 0x9 - str r0, [sp, 0x8C] - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x90] - adds r2, 0xC - str r2, [sp, 0x94] - mov r8, r4 - mov r7, sp - ldr r3, _080525D0 @ =gBerries - mov r9, r3 - ldr r0, _080525D4 @ =gUnknown_082165F8 - mov r10, r0 -_0805259E: - mov r1, r8 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, r6 - bne _080525D8 - movs r0, 0xEF - strb r0, [r7] - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - adds r1, 0x1 - bl CopyItemName - b _080525F8 - .align 2, 0 -_080525C8: .4byte gOtherText_BPMAndDash -_080525CC: .4byte gUnknown_03000560 -_080525D0: .4byte gBerries -_080525D4: .4byte gUnknown_082165F8 -_080525D8: - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - bl CopyItemName - movs r0, 0 - strb r0, [r7, 0x6] - movs r0, 0xFF - strb r0, [r7, 0x7] -_080525F8: - lsls r5, r6, 1 - adds r5, r6 - adds r5, 0x3 - lsls r5, 24 - lsrs r5, 24 - mov r0, sp - movs r1, 0x2 - adds r2, r5, 0 - bl MenuPrint - mov r4, r8 - adds r4, 0x1 - adds r4, r6, r4 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x15] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x16] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x17] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x18] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x19] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x1A] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r2, 0x1 - negs r2, r2 - add r3, sp, 0x80 - strb r2, [r3] - movs r0, 0xFF - strb r0, [r7, 0x11] - mov r0, sp - movs r1, 0x7 - adds r2, r5, 0 - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080526EC - b _0805259E -_080526EC: - mov r1, r8 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _080527A4 - ldr r1, _080527B4 @ =gPokeblockNames - mov r2, r8 - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - mov r3, r8 - ldrb r1, [r3, 0x11] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - ldr r4, _080527B8 @ =gUnknown_082165F8 - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x12] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x13] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r3, r8 - ldrb r1, [r3, 0x14] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x15] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x16] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r1, sp - ldrb r0, [r1, 0x11] - add r3, sp, 0x80 - ldrb r3, [r3] - orrs r0, r3 - strb r0, [r1, 0x11] - mov r0, sp - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint -_080527A4: - add sp, 0x98 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080527B4: .4byte gPokeblockNames -_080527B8: .4byte gUnknown_082165F8 - thumb_func_end sub_8052530 - - thumb_func_start sub_80527BC -sub_80527BC: @ 80527BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x58 - ldr r0, _08052844 @ =gUnknown_020297DC - ldrb r0, [r0] - add r6, sp, 0x48 - cmp r0, 0x1 - bne _08052814 - movs r1, 0 - ldr r3, _08052848 @ =gUnknown_03004840 - movs r2, 0 -_080527D6: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9 - bls _080527D6 - bl Random - ldr r1, _0805284C @ =gUnknown_03004830 - strh r0, [r1] - ldr r1, _08052850 @ =gUnknown_020297E0 - movs r0, 0 - str r0, [r1] - ldr r1, _08052844 @ =gUnknown_020297DC - movs r0, 0x2 - strb r0, [r1] - movs r4, 0 - ldr r2, _08052854 @ =0x02000000 - movs r1, 0 -_08052800: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xC7 - bls _08052800 - ldr r1, _08052858 @ =gUnknown_020297E8 - movs r0, 0 - strb r0, [r1] -_08052814: - movs r4, 0 - movs r0, 0x1 - mov r8, r0 - ldr r7, _08052858 @ =gUnknown_020297E8 - ldr r5, _08052850 @ =gUnknown_020297E0 - ldr r1, _08052854 @ =0x02000000 - mov r9, r1 - ldr r3, _0805285C @ =gUnknown_020297E4 -_08052824: - str r3, [sp, 0x54] - bl Random - lsls r0, 16 - lsrs r0, 31 - mov r1, r8 - ands r0, r1 - ldr r3, [sp, 0x54] - ldrb r1, [r7] - cmp r0, r1 - bne _08052860 - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - b _0805287A - .align 2, 0 -_08052844: .4byte gUnknown_020297DC -_08052848: .4byte gUnknown_03004840 -_0805284C: .4byte gUnknown_03004830 -_08052850: .4byte gUnknown_020297E0 -_08052854: .4byte 0x02000000 -_08052858: .4byte gUnknown_020297E8 -_0805285C: .4byte gUnknown_020297E4 -_08052860: - ldr r2, [r3] - lsls r0, r2, 1 - add r0, r9 - ldr r1, [r5] - strh r1, [r0] - adds r2, 0x1 - str r2, [r3] - movs r0, 0 - str r0, [r5] - ldrb r0, [r7] - mov r1, r8 - eors r0, r1 - strb r0, [r7] -_0805287A: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x63 - bls _08052824 - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - ldr r0, _08052900 @ =gUnknown_03004830 - ldrh r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _08052904 @ =gUnknown_082165F8 - mov r0, sp - bl StringAppend - ldr r0, _08052908 @ =gUnknown_020297E0 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _0805290C @ =gUnknown_08216600 - mov r0, sp - bl StringAppend - ldr r4, _08052910 @ =gUnknown_020297DC - ldrb r0, [r4] - cmp r0, 0x3 - bne _080528E8 - ldr r0, _08052914 @ =gUnknown_020297E4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x10 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - movs r0, 0 - strb r0, [r4] -_080528E8: - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - add sp, 0x58 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052900: .4byte gUnknown_03004830 -_08052904: .4byte gUnknown_082165F8 -_08052908: .4byte gUnknown_020297E0 -_0805290C: .4byte gUnknown_08216600 -_08052910: .4byte gUnknown_020297DC -_08052914: .4byte gUnknown_020297E4 - thumb_func_end sub_80527BC - - thumb_func_start sub_8052918 -sub_8052918: @ 8052918 - push {r4-r6,lr} - sub sp, 0x4C - ldr r2, _08052A88 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - ldr r4, _08052A8C @ =gUnknown_03000560 - cmp r0, 0 - beq _0805294C - movs r1, 0xFA - lsls r1, 2 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - ldr r1, _08052A90 @ =0x75300000 - cmp r0, r1 - ble _08052946 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4, 0x1A] -_08052946: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_0805294C: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08052972 - ldr r1, _08052A94 @ =0xfffffc18 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - bge _0805296C - ldr r0, _08052A98 @ =0x00007530 - strh r0, [r4, 0x1A] -_0805296C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052972: - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08052992 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bge _0805298C - movs r0, 0x3 - strb r0, [r4] -_0805298C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052992: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529B4 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080529AE - movs r0, 0 - strb r0, [r4] -_080529AE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529B4: - ldrh r1, [r2, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080529E4 - adds r3, r4, 0 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r5, r3, 0x1 - adds r1, r5 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080529DE - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r5 - movs r1, 0x2A - strb r1, [r0] -_080529DE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529E4: - ldrh r1, [r2, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08052A16 - ldr r3, _08052A8C @ =gUnknown_03000560 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r4, r3, 0x1 - adds r1, r4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2A - ble _08052A10 - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r4 - movs r1, 0 - strb r1, [r0] -_08052A10: - ldrb r0, [r3, 0x10] - adds r0, 0x1 - strb r0, [r3, 0x10] -_08052A16: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052AA0 - movs r6, 0 - movs r4, 0 - ldr r5, _08052A8C @ =gUnknown_03000560 -_08052A26: - adds r0, r5, 0x1 - adds r2, r4, r0 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x2A - beq _08052A64 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r4, 1 - mov r1, sp - adds r1, r0 - adds r1, 0x4 - movs r0, 0 - ldrsb r0, [r2, r0] - strh r0, [r1] - add r0, sp, 0xC - lsls r1, r4, 4 - adds r0, r1 - movs r1, 0 - ldrsb r1, [r2, r1] - adds r1, 0x85 - lsls r1, 16 - lsrs r1, 16 - bl sub_804E844 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08052A26 -_08052A64: - cmp r6, 0x1 - bls _08052A9C - add r0, sp, 0xC - adds r1, r5, 0 - adds r1, 0x8 - lsls r2, r6, 24 - lsrs r2, 24 - adds r3, r5, 0 - adds r3, 0x11 - ldrh r4, [r5, 0x1A] - str r4, [sp] - bl sub_8050744 - ldrb r0, [r5, 0x10] - adds r0, 0x1 - strb r0, [r5, 0x10] - b _08052AA0 - .align 2, 0 -_08052A88: .4byte gMain -_08052A8C: .4byte gUnknown_03000560 -_08052A90: .4byte 0x75300000 -_08052A94: .4byte 0xfffffc18 -_08052A98: .4byte 0x00007530 -_08052A9C: - movs r0, 0xFF - strb r0, [r5, 0x8] -_08052AA0: - ldr r4, _08052AE8 @ =gUnknown_03000560 - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _08052AB0 - bl sub_8052530 - movs r0, 0 - strb r0, [r4, 0x10] -_08052AB0: - ldr r3, _08052AEC @ =gMain - ldrh r1, [r3, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08052AD4 - ldr r2, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r2] - adds r1, r0, 0 - cmp r1, 0 - bne _08052ADC - adds r0, 0x1 - strb r0, [r2] - ldr r0, _08052AF4 @ =gUnknown_020297E0 - str r1, [r0] - ldrh r0, [r3, 0x20] - bl SeedRng -_08052AD4: - ldr r0, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r0] - cmp r0, 0 - beq _08052AE0 -_08052ADC: - bl sub_80527BC -_08052AE0: - add sp, 0x4C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08052AE8: .4byte gUnknown_03000560 -_08052AEC: .4byte gMain -_08052AF0: .4byte gUnknown_020297DC -_08052AF4: .4byte gUnknown_020297E0 - thumb_func_end sub_8052918 - - thumb_func_start sub_8052AF8 -sub_8052AF8: @ 8052AF8 - push {lr} - bl sub_8052918 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8052AF8 - - thumb_func_start ShowBerryBlenderRecordWindow -ShowBerryBlenderRecordWindow: @ 8052B14 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - movs r0, 0x6 - movs r1, 0x3 - movs r2, 0x17 - movs r3, 0x10 - bl MenuDrawTextWindow - ldr r0, _08052BAC @ =gMultiText_BerryBlenderMaxSpeedRecord - movs r1, 0x8 - movs r2, 0x4 - bl MenuPrint - ldr r0, _08052BB0 @ =gMultiText_2P3P4P - movs r1, 0x8 - movs r2, 0x9 - bl MenuPrint - movs r0, 0 - mov r8, r0 - ldr r0, _08052BB4 @ =gSaveBlock1 - movs r7, 0x90 - lsls r7, 20 - ldr r1, _08052BB8 @ =0x0000096c - adds r6, r0, r1 -_08052B4A: - ldrh r4, [r6] - adds r0, r4, 0 - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - mov r0, sp - movs r2, 0x12 - movs r3, 0x1 - bl sub_8072C14 - adds r5, r0, 0 - movs r0, 0xB8 - strb r0, [r5] - adds r5, 0x1 - adds r0, r4, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - ldr r1, _08052BBC @ =gOtherText_RPM - bl StringAppend - lsrs r2, r7, 24 - mov r0, sp - movs r1, 0xF - bl MenuPrint - movs r0, 0x80 - lsls r0, 18 - adds r7, r0 - adds r6, 0x2 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x2 - ble _08052B4A - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052BAC: .4byte gMultiText_BerryBlenderMaxSpeedRecord -_08052BB0: .4byte gMultiText_2P3P4P -_08052BB4: .4byte gSaveBlock1 -_08052BB8: .4byte 0x0000096c -_08052BBC: .4byte gOtherText_RPM - thumb_func_end ShowBerryBlenderRecordWindow - - thumb_func_start sub_8052BD0 -sub_8052BD0: @ 8052BD0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _08052C1C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08052BF6 - ldr r0, _08052C20 @ =0x0000016f - bl PlayFanfare - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08052BF6: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08052C16 - ldr r0, _08052C24 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08052C16: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08052C1C: .4byte gTasks -_08052C20: .4byte 0x0000016f -_08052C24: .4byte gUnknown_03004854 - thumb_func_end sub_8052BD0 diff --git a/asm-de/contest_link_80C2020.s b/asm-de/contest_link_80C2020.s index 646851c2d..65bbf0f22 100644 --- a/asm-de/contest_link_80C2020.s +++ b/asm-de/contest_link_80C2020.s @@ -1361,7 +1361,7 @@ _080C2B14: adds r0, r6, 0 ldr r1, [sp, 0xC] adds r2, r4, 0 - bl sub_80409C8 + bl GetMonSpritePalStructFromOtIdPersonality adds r4, r0, 0 bl LoadCompressedObjectPalette adds r0, r6, 0 @@ -1601,7 +1601,7 @@ _080C2D42: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl GetNationalPokedexFlag + bl GetSetPokedexFlag adds r5, 0x40 subs r4, 0x1 cmp r4, 0 diff --git a/asm-de/easy_chat.s b/asm-de/easy_chat.s index 2f6c28fdb..1d93e36b4 100644 --- a/asm-de/easy_chat.s +++ b/asm-de/easy_chat.s @@ -9984,7 +9984,7 @@ _080EAE50: lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl GetNationalPokedexFlag + bl GetSetPokedexFlag b _080EAE7C _080EAE62: ldr r0, _080EAE74 @ =gUnknown_083DB694 diff --git a/asm/battle_2.s b/asm/battle_2.s index ed4140583..f252e5716 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -189,7 +189,7 @@ _080124A8: lsls r0, 8 orrs r2, r0 movs r0, 0 - bl dp01_build_cmdbuf_x12_a_bb + bl Emitcmd18 bl _08012E32 .align 2, 0 _080124C0: .4byte gActionForBanks @@ -262,7 +262,7 @@ _08012538: .4byte _08012968 .4byte _0801292C _0801256C: - bl sub_8015C90 + bl AreAllMovesUnusable lsls r0, 24 cmp r0, 0 beq _080125D0 @@ -408,7 +408,7 @@ _0801264E: movs r0, 0 movs r2, 0 add r3, sp, 0x4 - bl sub_800CBA4 + bl Emitcmd20 b _0801289E .align 2, 0 _080126AC: .4byte gBattleMons @@ -573,7 +573,7 @@ _080127E0: str r0, [sp] movs r0, 0 movs r2, 0x6 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + bl EmitChoosePokemon b _0801289E .align 2, 0 _08012808: .4byte gActiveBank @@ -624,7 +624,7 @@ _08012854: movs r1, 0 _0801286C: movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + bl EmitChoosePokemon b _0801289E .align 2, 0 _08012874: .4byte gActionForBanks @@ -643,7 +643,7 @@ _08012884: movs r1, 0 movs r2, 0x6 movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + bl EmitChoosePokemon _0801289E: ldr r0, _080128A8 @ =gActiveBank ldrb r0, [r0] @@ -698,7 +698,7 @@ _08012908: ldr r0, _08012928 @ =0x0201606c adds r1, r0 movs r0, 0 - bl sub_800CBE0 + bl EmitOpenBag ldrb r0, [r4] bl MarkBufferBankForExecution b _08012968 @@ -725,7 +725,7 @@ _0801292C: adds r0, r4 strb r5, [r0] movs r0, 0 - bl dp01_build_cmdbuf_x32_32_32_32 + bl Emitcmd50 mov r4, r8 ldrb r0, [r4] bl MarkBufferBankForExecution @@ -1514,8 +1514,8 @@ _08012FE8: .4byte gUnknown_02024A76 _08012FEC: .4byte gTurnOrder thumb_func_end sub_8012FBC - thumb_func_start b_first_side -b_first_side: @ 8012FF0 + thumb_func_start GetWhoStrikesFirst +GetWhoStrikesFirst: @ 8012FF0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2003,7 +2003,7 @@ _080133B6: pop {r4-r7} pop {r1} bx r1 - thumb_func_end b_first_side + thumb_func_end GetWhoStrikesFirst thumb_func_start sub_80133C8 sub_80133C8: @ 80133C8 @@ -2285,7 +2285,7 @@ _080135D0: beq _0801360C adds r0, r3, 0 movs r2, 0 - bl b_first_side + bl GetWhoStrikesFirst lsls r0, 24 cmp r0, 0 beq _0801360C @@ -2789,7 +2789,7 @@ _08013A04: beq _08013A0E b _08013B42 _08013A0E: - bl sub_80325B8 + bl BattleMusicStop ldr r1, _08013A3C @ =gBattlescriptCurrInstr ldr r0, _08013A40 @ =gUnknown_081D8DBE str r0, [r1] @@ -3144,7 +3144,7 @@ _08013D4C: ldr r1, _08013D6C @ =gBattleMainFunc ldr r0, _08013D70 @ =sub_8013DA8 str r0, [r1] - ldr r1, _08013D74 @ =gUnknown_03005E94 + ldr r1, _08013D74 @ =gCB2_AfterEvolution ldr r0, _08013D78 @ =sub_800F808 str r0, [r1] b _08013D96 @@ -3152,7 +3152,7 @@ _08013D4C: _08013D68: .4byte gNoOfAllBanks _08013D6C: .4byte gBattleMainFunc _08013D70: .4byte sub_8013DA8 -_08013D74: .4byte gUnknown_03005E94 +_08013D74: .4byte gCB2_AfterEvolution _08013D78: .4byte sub_800F808 _08013D7C: ldr r0, _08013D9C @ =gBattleExecBuffer @@ -3558,7 +3558,7 @@ _08014044: str r0, [r2] movs r0, 0xA5 movs r1, 0 - bl sub_801B5C0 + bl GetMoveTarget ldrb r1, [r7] ldr r2, _080140EC @ =0x00016010 adds r1, r2 @@ -3646,7 +3646,7 @@ _08014138: strb r0, [r3] ldrh r0, [r1] movs r1, 0 - bl sub_801B5C0 + bl GetMoveTarget ldrb r1, [r7] ldr r4, _0801419C @ =0x00016010 adds r1, r4 @@ -3702,7 +3702,7 @@ _080141A0: strb r0, [r1, 0xE] ldrh r0, [r3] movs r1, 0 - bl sub_801B5C0 + bl GetMoveTarget ldrb r1, [r7] ldr r3, _08014214 @ =0x00016010 adds r1, r3 @@ -3740,7 +3740,7 @@ _08014218: strh r3, [r1] ldrh r0, [r1] movs r1, 0 - bl sub_801B5C0 + bl GetMoveTarget ldr r2, _08014270 @ =0x02000000 ldrb r1, [r4] ldr r3, _08014274 @ =0x00016010 @@ -3936,14 +3936,14 @@ _080143B6: cmp r0, 0x1F bne _08014404 adds r0, r2, 0 - bl sub_801E3B4 + bl BankGetTurnOrder lsls r0, 24 lsrs r0, 24 ldr r1, [sp] cmp r0, r1 bcs _08014404 ldrb r0, [r4] - bl sub_801E3B4 + bl BankGetTurnOrder lsls r0, 24 lsrs r0, 24 str r0, [sp] @@ -4261,7 +4261,7 @@ _0801469A: strb r0, [r5] _080146AC: ldr r4, _080146E0 @ =gBattlescriptCurrInstr - ldr r3, _080146E4 @ =gUnknown_081D6BBC + ldr r3, _080146E4 @ =gBattleScriptsEffectsTable ldr r2, _080146E8 @ =gBattleMoves ldr r0, _080146EC @ =gCurrentMove ldrh r1, [r0] @@ -4288,7 +4288,7 @@ _080146CC: bx r0 .align 2, 0 _080146E0: .4byte gBattlescriptCurrInstr -_080146E4: .4byte gUnknown_081D6BBC +_080146E4: .4byte gBattleScriptsEffectsTable _080146E8: .4byte gBattleMoves _080146EC: .4byte gCurrentMove _080146F0: .4byte gFightStateTracker @@ -5528,8 +5528,8 @@ _08015148: .4byte 0x00016112 _0801514C: .4byte 0x00017130 thumb_func_end bsC_8016D70 - thumb_func_start sub_8015150 -sub_8015150: @ 8015150 + thumb_func_start GetBattleBank +GetBattleBank: @ 8015150 push {lr} lsls r0, 24 lsrs r0, 24 @@ -5592,10 +5592,10 @@ _080151C8: bx r1 .align 2, 0 _080151D0: .4byte gBank1 - thumb_func_end sub_8015150 + thumb_func_end GetBattleBank - thumb_func_start sub_80151D4 -sub_80151D4: @ 80151D4 + thumb_func_start PressurePPLose +PressurePPLose: @ 80151D4 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 @@ -5695,7 +5695,7 @@ _08015286: _08015290: .4byte gDisableStructs _08015294: .4byte gBitTable _08015298: .4byte gActiveBank - thumb_func_end sub_80151D4 + thumb_func_end PressurePPLose thumb_func_start sub_801529C sub_801529C: @ 801529C diff --git a/asm/battle_3.s b/asm/battle_3.s deleted file mode 100644 index 8f3097c3d..000000000 --- a/asm/battle_3.s +++ /dev/null @@ -1,12017 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start b_movescr_stack_push -b_movescr_stack_push: @ 801582C - push {r4,lr} - ldr r4, _08015848 @ =0x02017110 - adds r3, r4, 0 - adds r3, 0x20 - ldrb r1, [r3] - adds r2, r1, 0x1 - strb r2, [r3] - lsls r1, 24 - lsrs r1, 22 - adds r1, r4 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08015848: .4byte 0x02017110 - thumb_func_end b_movescr_stack_push - - thumb_func_start b_movescr_stack_push_cursor -b_movescr_stack_push_cursor: @ 801584C - ldr r3, _08015868 @ =0x02017110 - adds r2, r3, 0 - adds r2, 0x20 - ldrb r0, [r2] - adds r1, r0, 0x1 - strb r1, [r2] - lsls r0, 24 - lsrs r0, 22 - adds r0, r3 - ldr r1, _0801586C @ =gBattlescriptCurrInstr - ldr r1, [r1] - str r1, [r0] - bx lr - .align 2, 0 -_08015868: .4byte 0x02017110 -_0801586C: .4byte gBattlescriptCurrInstr - thumb_func_end b_movescr_stack_push_cursor - - thumb_func_start b_movescr_stack_pop_cursor -b_movescr_stack_pop_cursor: @ 8015870 - ldr r3, _0801588C @ =gBattlescriptCurrInstr - ldr r2, _08015890 @ =0x02017110 - adds r1, r2, 0 - adds r1, 0x20 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - bx lr - .align 2, 0 -_0801588C: .4byte gBattlescriptCurrInstr -_08015890: .4byte 0x02017110 - thumb_func_end b_movescr_stack_pop_cursor - - thumb_func_start sub_8015894 -sub_8015894: @ 8015894 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r2, _080159AC @ =gBattleMons - ldr r1, _080159B0 @ =gBattleBufferB - ldr r5, _080159B4 @ =gActiveBank - ldrb r3, [r5] - lsls r0, r3, 9 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - muls r1, r3 - adds r0, r1 - adds r2, 0xC - adds r0, r2 - ldrh r4, [r0] - lsls r0, r3, 1 - ldr r2, _080159B8 @ =0x020160e8 - adds r0, r2 - mov r8, r0 - ldr r1, _080159BC @ =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x4] - cmp r0, r4 - bne _080158EE - cmp r4, 0 - beq _080158EE - adds r0, r2, 0 - subs r0, 0xE5 - strb r3, [r0] - ldr r0, _080159C0 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080159C4 @ =gUnknown_02024C1C - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080159C8 @ =gUnknown_081D9144 - str r1, [r0] - movs r6, 0x1 -_080158EE: - ldr r1, _080159CC @ =gLastUsedMove - ldr r5, _080159B4 @ =gActiveBank - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _0801592A - cmp r4, 0xA5 - beq _0801592A - ldr r1, _080159AC @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bge _0801592A - adds r0, r2, 0 - bl CancelMultiTurnMoves - ldr r1, _080159C4 @ =gUnknown_02024C1C - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080159D0 @ =gUnknown_081D937C - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801592A: - ldr r2, _080159BC @ =gDisableStructs - ldr r3, _080159B4 @ =gActiveBank - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x13] - lsls r0, 28 - cmp r0, 0 - beq _08015966 - ldr r0, _080159D4 @ =gBattleMoves - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _08015966 - ldr r0, _080159C0 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080159C4 @ =gUnknown_02024C1C - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _080159D8 @ =gUnknown_081D938B - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08015966: - ldr r5, _080159B4 @ =gActiveBank - ldrb r0, [r5] - adds r1, r4, 0 - bl sub_8015D5C - lsls r0, 24 - cmp r0, 0 - beq _0801598C - ldr r0, _080159C0 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080159C4 @ =gUnknown_02024C1C - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080159DC @ =gUnknown_081D9464 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801598C: - ldr r1, _080159AC @ =gBattleMons - ldrb r2, [r5] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _080159E4 - ldr r1, _080159E0 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r3, [r0, 0x7] - b _080159EE - .align 2, 0 -_080159AC: .4byte gBattleMons -_080159B0: .4byte gBattleBufferB -_080159B4: .4byte gActiveBank -_080159B8: .4byte 0x020160e8 -_080159BC: .4byte gDisableStructs -_080159C0: .4byte gCurrentMove -_080159C4: .4byte gUnknown_02024C1C -_080159C8: .4byte gUnknown_081D9144 -_080159CC: .4byte gLastUsedMove -_080159D0: .4byte gUnknown_081D937C -_080159D4: .4byte gBattleMoves -_080159D8: .4byte gUnknown_081D938B -_080159DC: .4byte gUnknown_081D9464 -_080159E0: .4byte gEnigmaBerries -_080159E4: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r3, r0, 24 -_080159EE: - ldr r2, _08015A70 @ =gStringBank - ldr r1, _08015A74 @ =gActiveBank - ldrb r0, [r1] - strb r0, [r2] - ldr r7, _08015A78 @ =gBattleMons - adds r5, r1, 0 - cmp r3, 0x1D - bne _08015A36 - mov r0, r8 - ldrh r2, [r0] - adds r1, r2, 0 - cmp r1, 0 - beq _08015A36 - ldr r0, _08015A7C @ =0x0000ffff - cmp r1, r0 - beq _08015A36 - cmp r1, r4 - beq _08015A36 - ldr r0, _08015A80 @ =gCurrentMove - strh r2, [r0] - ldr r2, _08015A84 @ =gLastUsedItem - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - ldrh r0, [r0, 0x2E] - strh r0, [r2] - ldr r1, _08015A88 @ =gUnknown_02024C1C - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08015A8C @ =gUnknown_081D9AC2 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08015A36: - ldr r0, _08015A90 @ =gBattleBufferB - ldrb r2, [r5] - lsls r1, r2, 9 - adds r0, 0x2 - adds r1, r0 - movs r0, 0x58 - muls r0, r2 - ldrb r1, [r1] - adds r0, r1 - adds r1, r7, 0 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08015A64 - ldr r1, _08015A88 @ =gUnknown_02024C1C - lsls r0, r2, 2 - adds r0, r1 - ldr r1, _08015A94 @ =gUnknown_081D9369 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08015A64: - adds r0, r6, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08015A70: .4byte gStringBank -_08015A74: .4byte gActiveBank -_08015A78: .4byte gBattleMons -_08015A7C: .4byte 0x0000ffff -_08015A80: .4byte gCurrentMove -_08015A84: .4byte gLastUsedItem -_08015A88: .4byte gUnknown_02024C1C -_08015A8C: .4byte gUnknown_081D9AC2 -_08015A90: .4byte gBattleBufferB -_08015A94: .4byte gUnknown_081D9369 - thumb_func_end sub_8015894 - - thumb_func_start sub_8015A98 -sub_8015A98: @ 8015A98 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - lsls r1, r7, 1 - ldr r0, _08015AD8 @ =0x020160e8 - adds r1, r0 - str r1, [sp, 0x4] - ldr r1, _08015ADC @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08015AE4 - ldr r2, _08015AE0 @ =gEnigmaBerries - lsls r1, r7, 3 - subs r0, r1, r7 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x7] - str r0, [sp] - b _08015AF6 - .align 2, 0 -_08015AD8: .4byte 0x020160e8 -_08015ADC: .4byte gBattleMons -_08015AE0: .4byte gEnigmaBerries -_08015AE4: - ldrh r0, [r1, 0x2E] - str r3, [sp, 0x14] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, r7, 3 - ldr r3, [sp, 0x14] -_08015AF6: - ldr r0, _08015C70 @ =gStringBank - strb r7, [r0] - movs r0, 0 - mov r9, r0 - lsls r2, r7, 1 - str r2, [sp, 0xC] - ldr r5, _08015C74 @ =gDisableStructs - mov r12, r5 - ldr r0, _08015C78 @ =gBattleMons - movs r2, 0x58 - adds r6, r7, 0 - muls r6, r2 - str r6, [sp, 0x8] - ldr r2, _08015C7C @ =gUnknown_02024A8C - adds r5, r6, r2 - movs r6, 0 - str r6, [sp, 0x10] - mov r10, r0 - subs r0, r1, r7 - lsls r0, 2 - mov r8, r0 - ldr r6, _08015C80 @ =gBitTable -_08015B22: - ldrh r0, [r5] - cmp r0, 0 - bne _08015B38 - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _08015B38 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08015B38: - ldr r0, [sp, 0x8] - add r0, r9 - mov r1, r10 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08015B58 - movs r0, 0x2 - ands r0, r3 - cmp r0, 0 - beq _08015B58 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08015B58: - mov r1, r8 - add r1, r12 - ldrh r0, [r5] - ldrh r1, [r1, 0x4] - cmp r0, r1 - bne _08015B74 - movs r0, 0x4 - ands r0, r3 - cmp r0, 0 - beq _08015B74 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08015B74: - movs r0, 0x58 - adds r2, r7, 0 - muls r2, r0 - ldr r1, [sp, 0x10] - adds r0, r1, r2 - ldr r1, _08015C7C @ =gUnknown_02024A8C - adds r0, r1 - mov r12, r0 - ldr r1, _08015C84 @ =gLastUsedMove - ldr r0, [sp, 0xC] - adds r1, r0, r1 - str r1, [sp, 0x18] - mov r1, r12 - ldrh r1, [r1] - mov r12, r1 - ldr r0, [sp, 0x18] - ldrh r0, [r0] - cmp r12, r0 - bne _08015BB6 - movs r0, 0x8 - ands r0, r3 - cmp r0, 0 - beq _08015BB6 - mov r0, r10 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - bge _08015BB6 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08015BB6: - ldr r0, _08015C74 @ =gDisableStructs - add r0, r8 - ldrb r0, [r0, 0x13] - lsls r0, 28 - cmp r0, 0 - beq _08015BE4 - movs r0, 0x10 - ands r0, r3 - cmp r0, 0 - beq _08015BE4 - ldr r2, _08015C88 @ =gBattleMoves - ldrh r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08015BE4 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08015BE4: - ldrh r1, [r5] - adds r0, r7, 0 - str r3, [sp, 0x14] - bl sub_8015D5C - lsls r0, 24 - ldr r3, [sp, 0x14] - cmp r0, 0 - beq _08015C06 - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _08015C06 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08015C06: - ldr r1, _08015C74 @ =gDisableStructs - mov r0, r8 - adds r2, r0, r1 - ldrb r0, [r2, 0xE] - lsls r0, 28 - mov r12, r1 - cmp r0, 0 - beq _08015C26 - ldrh r0, [r2, 0x6] - ldrh r1, [r5] - cmp r0, r1 - beq _08015C26 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08015C26: - ldr r2, [sp] - cmp r2, 0x1D - bne _08015C48 - ldr r0, [sp, 0x4] - ldrh r1, [r0] - cmp r1, 0 - beq _08015C48 - ldr r0, _08015C8C @ =0x0000ffff - cmp r1, r0 - beq _08015C48 - ldrh r2, [r5] - cmp r1, r2 - beq _08015C48 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08015C48: - adds r6, 0x4 - adds r5, 0x2 - ldr r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x10] - movs r1, 0x1 - add r9, r1 - mov r2, r9 - cmp r2, 0x3 - bgt _08015C5E - b _08015B22 -_08015C5E: - adds r0, r4, 0 - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08015C70: .4byte gStringBank -_08015C74: .4byte gDisableStructs -_08015C78: .4byte gBattleMons -_08015C7C: .4byte gUnknown_02024A8C -_08015C80: .4byte gBitTable -_08015C84: .4byte gLastUsedMove -_08015C88: .4byte gBattleMoves -_08015C8C: .4byte 0x0000ffff - thumb_func_end sub_8015A98 - - thumb_func_start sub_8015C90 -sub_8015C90: @ 8015C90 - push {r4-r6,lr} - ldr r5, _08015CFC @ =gActiveBank - ldrb r0, [r5] - movs r1, 0 - movs r2, 0xFF - bl sub_8015A98 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bne _08015D38 - ldr r0, _08015D00 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r1, _08015D04 @ =gUnknown_02024C1C - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08015D08 @ =gUnknown_081D9365 - str r1, [r0] - ldr r0, _08015D0C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08015D14 - ldrb r0, [r5] - bl GetBankIdentity - adds r4, r0, 0 - bl Random - movs r1, 0x1 - eors r4, r1 - movs r1, 0x2 - ands r1, r0 - orrs r4, r1 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl GetBankByPlayerAI - ldr r2, _08015D10 @ =gBattleBufferB - ldrb r1, [r5] - lsls r1, 9 - adds r2, 0x3 - adds r1, r2 - b _08015D48 - .align 2, 0 -_08015CFC: .4byte gActiveBank -_08015D00: .4byte gProtectStructs -_08015D04: .4byte gUnknown_02024C1C -_08015D08: .4byte gUnknown_081D9365 -_08015D0C: .4byte gBattleTypeFlags -_08015D10: .4byte gBattleBufferB -_08015D14: - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - ldr r2, _08015D34 @ =gBattleBufferB - ldrb r1, [r5] - lsls r1, 9 - adds r2, 0x3 - adds r1, r2 - b _08015D48 - .align 2, 0 -_08015D34: .4byte gBattleBufferB -_08015D38: - ldr r0, _08015D58 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 -_08015D48: - strb r0, [r1] - movs r0, 0 - cmp r6, 0xF - bne _08015D52 - movs r0, 0x1 -_08015D52: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08015D58: .4byte gProtectStructs - thumb_func_end sub_8015C90 - - thumb_func_start sub_8015D5C -sub_8015D5C: @ 8015D5C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - movs r6, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r4, 0 - ldr r0, _08015DF0 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - bge _08015DE0 - ldr r7, _08015DF4 @ =gUnknown_02024A8C - mov r8, r7 -_08015D86: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - adds r3, r4, 0x1 - cmp r9, r0 - beq _08015DD6 - ldr r1, _08015DF8 @ =gStatuses3 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08015DD6 - movs r2, 0 - movs r0, 0x58 - adds r1, r4, 0 - muls r1, r0 - adds r0, r1, r7 - ldrh r0, [r0] - cmp r5, r0 - beq _08015DCC - mov r4, r8 - adds r0, r1, r4 -_08015DBE: - adds r0, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _08015DD6 - ldrh r1, [r0] - cmp r5, r1 - bne _08015DBE -_08015DCC: - cmp r2, 0x3 - bgt _08015DD6 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08015DD6: - adds r4, r3, 0 - ldr r0, _08015DF0 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08015D86 -_08015DE0: - adds r0, r6, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08015DF0: .4byte gNoOfAllBanks -_08015DF4: .4byte gUnknown_02024A8C -_08015DF8: .4byte gStatuses3 - thumb_func_end sub_8015D5C - - thumb_func_start UpdateTurnCounters -UpdateTurnCounters: @ 8015DFC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r9, r0 - ldr r1, _08015EA0 @ =gBankAttacker - mov r2, r9 - strb r2, [r1] - ldr r0, _08015EA4 @ =gNoOfAllBanks - ldrb r4, [r0] - adds r6, r1, 0 - mov r10, r0 - ldr r7, _08015EA8 @ =gBankTarget - ldr r3, _08015EAC @ =0x02000000 - mov r12, r3 - cmp r9, r4 - bcs _08015E50 - ldr r2, _08015EB0 @ =gAbsentBankFlags - ldrb r1, [r2] - ldr r5, _08015EB4 @ =gBitTable - ldr r0, [r5] - ands r1, r0 - cmp r1, 0 - beq _08015E50 - adds r3, r6, 0 -_08015E32: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcs _08015E50 - ldrb r0, [r2] - ldrb r1, [r6] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _08015E32 -_08015E50: - movs r0, 0 - strb r0, [r7] - mov r0, r10 - ldrb r4, [r0] - cmp r4, 0 - beq _08015E8A - ldr r2, _08015EB0 @ =gAbsentBankFlags - ldrb r1, [r2] - ldr r5, _08015EB4 @ =gBitTable - ldr r0, [r5] - ands r1, r0 - cmp r1, 0 - beq _08015E8A - adds r3, r7, 0 -_08015E6C: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcs _08015E8A - ldrb r0, [r2] - ldrb r1, [r7] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _08015E6C -_08015E8A: - ldr r0, _08015EB8 @ =0x0001600e - add r0, r12 - ldrb r0, [r0] - cmp r0, 0xA - bls _08015E96 - b _0801652A -_08015E96: - lsls r0, 2 - ldr r1, _08015EBC @ =_08015EC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08015EA0: .4byte gBankAttacker -_08015EA4: .4byte gNoOfAllBanks -_08015EA8: .4byte gBankTarget -_08015EAC: .4byte 0x02000000 -_08015EB0: .4byte gAbsentBankFlags -_08015EB4: .4byte gBitTable -_08015EB8: .4byte 0x0001600e -_08015EBC: .4byte _08015EC0 - .align 2, 0 -_08015EC0: - .4byte _08015EEC - .4byte _08015F74 - .4byte _08016034 - .4byte _080160F4 - .4byte _080161C8 - .4byte _08016274 - .4byte _08016324 - .4byte _080163A8 - .4byte _08016420 - .4byte _08016494 - .4byte _08016520 -_08015EEC: - movs r5, 0 - ldr r1, _08015F0C @ =gNoOfAllBanks - mov r10, r1 - ldrb r2, [r1] - cmp r5, r2 - bge _08015F06 - ldr r2, _08015F10 @ =gTurnOrder -_08015EFA: - adds r0, r5, r2 - strb r5, [r0] - adds r5, 0x1 - ldrb r3, [r1] - cmp r5, r3 - blt _08015EFA -_08015F06: - movs r5, 0 - b _08015F54 - .align 2, 0 -_08015F0C: .4byte gNoOfAllBanks -_08015F10: .4byte gTurnOrder -_08015F14: - adds r4, r5, 0x1 - adds r6, r4, 0 - ldrb r1, [r1] - cmp r6, r1 - bge _08015F52 - ldr r7, _08016004 @ =gTurnOrder - ldr r0, _08016008 @ =gNoOfAllBanks - mov r10, r0 - lsls r1, r5, 24 - mov r8, r1 -_08015F28: - adds r0, r5, r7 - ldrb r0, [r0] - adds r1, r4, r7 - ldrb r1, [r1] - movs r2, 0 - bl b_first_side - lsls r0, 24 - cmp r0, 0 - beq _08015F48 - lsls r1, r4, 24 - lsrs r1, 24 - mov r2, r8 - lsrs r0, r2, 24 - bl sub_8012FBC -_08015F48: - adds r4, 0x1 - ldr r0, _08016008 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08015F28 -_08015F52: - adds r5, r6, 0 -_08015F54: - mov r1, r10 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _08015F14 - ldr r1, _0801600C @ =0x02000000 - ldr r3, _08016010 @ =0x0001600e - adds r2, r1, r3 - ldrb r0, [r2] - adds r0, 0x1 - movs r3, 0 - strb r0, [r2] - ldr r2, _08016014 @ =0x000160fc - adds r0, r1, r2 - strb r3, [r0] - mov r12, r1 -_08015F74: - ldr r1, _08016014 @ =0x000160fc - add r1, r12 - ldrb r0, [r1] - cmp r0, 0x1 - bls _08015F80 - b _08016236 -_08015F80: - ldr r3, _08016018 @ =gActiveBank - mov r8, r3 - adds r6, r1, 0 - movs r7, 0 - ldr r5, _0801601C @ =gBattleTextBuff1 -_08015F8A: - ldr r0, _08016020 @ =gBankAttacker - ldrb r4, [r6] - strb r4, [r0] - mov r0, r8 - strb r4, [r0] - ldr r0, _08016024 @ =gSideAffecting - lsls r2, r4, 1 - adds r3, r2, r0 - ldrh r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08015FE8 - ldr r0, _08016028 @ =gSideTimer - adds r1, r2, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - movs r4, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _08015FE8 - ldrh r0, [r3] - ldr r2, _0801602C @ =0x0000fffe - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _08016030 @ =gUnknown_081D9030 - bl b_call_bc_move_exec - movs r0, 0xFD - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0x1] - movs r0, 0x73 - strb r0, [r5, 0x2] - strb r7, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r4 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08015FE8: - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - ldr r3, _0801600C @ =0x02000000 - mov r12, r3 - mov r1, r9 - cmp r1, 0 - beq _08015FFA - b _08016532 -_08015FFA: - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08015F8A - b _08016236 - .align 2, 0 -_08016004: .4byte gTurnOrder -_08016008: .4byte gNoOfAllBanks -_0801600C: .4byte 0x02000000 -_08016010: .4byte 0x0001600e -_08016014: .4byte 0x000160fc -_08016018: .4byte gActiveBank -_0801601C: .4byte gBattleTextBuff1 -_08016020: .4byte gBankAttacker -_08016024: .4byte gSideAffecting -_08016028: .4byte gSideTimer -_0801602C: .4byte 0x0000fffe -_08016030: .4byte gUnknown_081D9030 -_08016034: - ldr r1, _080160CC @ =0x000160fc - add r1, r12 - ldrb r0, [r1] - cmp r0, 0x1 - bls _08016040 - b _08016182 -_08016040: - adds r7, r1, 0 - movs r3, 0x2 - mov r10, r3 - movs r0, 0 - mov r8, r0 - ldr r5, _080160D0 @ =gBattleTextBuff1 -_0801604C: - ldr r0, _080160D4 @ =gBankAttacker - ldrb r4, [r7] - strb r4, [r0] - ldr r1, _080160D8 @ =gActiveBank - strb r4, [r1] - ldr r0, _080160DC @ =gSideAffecting - lsls r2, r4, 1 - adds r3, r2, r0 - ldrh r1, [r3] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080160B0 - ldr r0, _080160E0 @ =gSideTimer - adds r1, r2, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - subs r0, 0x1 - strb r0, [r1, 0x1] - movs r6, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _080160B0 - ldrh r0, [r3] - ldr r2, _080160E4 @ =0x0000fffd - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _080160E8 @ =gUnknown_081D9030 - bl b_call_bc_move_exec - ldr r0, _080160EC @ =gBattleCommunication - strb r4, [r0, 0x5] - movs r0, 0xFD - strb r0, [r5] - mov r3, r10 - strb r3, [r5, 0x1] - movs r0, 0x71 - strb r0, [r5, 0x2] - mov r0, r8 - strb r0, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r6 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080160B0: - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - ldr r1, _080160F0 @ =0x02000000 - mov r12, r1 - mov r2, r9 - cmp r2, 0 - beq _080160C2 - b _08016532 -_080160C2: - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0801604C - b _08016182 - .align 2, 0 -_080160CC: .4byte 0x000160fc -_080160D0: .4byte gBattleTextBuff1 -_080160D4: .4byte gBankAttacker -_080160D8: .4byte gActiveBank -_080160DC: .4byte gSideAffecting -_080160E0: .4byte gSideTimer -_080160E4: .4byte 0x0000fffd -_080160E8: .4byte gUnknown_081D9030 -_080160EC: .4byte gBattleCommunication -_080160F0: .4byte 0x02000000 -_080160F4: - ldr r1, _0801619C @ =0x000160fc - add r1, r12 - ldrb r0, [r1] - cmp r0, 0x1 - bhi _08016182 - ldr r0, _080161A0 @ =gActiveBank - mov r10, r0 - adds r7, r1, 0 - movs r1, 0 - mov r8, r1 - ldr r5, _080161A4 @ =gBattleTextBuff1 -_0801610A: - ldr r0, _080161A8 @ =gBankAttacker - ldrb r4, [r7] - strb r4, [r0] - mov r2, r10 - strb r4, [r2] - ldr r1, _080161AC @ =gSideTimer - lsls r3, r4, 1 - adds r0, r3, r4 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x2] - cmp r0, 0 - beq _08016168 - subs r0, 0x1 - strb r0, [r1, 0x2] - movs r6, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _08016168 - ldr r2, _080161B0 @ =gSideAffecting - adds r2, r3, r2 - ldrh r0, [r2] - ldr r3, _080161B4 @ =0x0000feff - adds r1, r3, 0 - ands r0, r1 - strh r0, [r2] - ldr r0, _080161B8 @ =gUnknown_081D9030 - bl b_call_bc_move_exec - ldr r0, _080161BC @ =gBattleCommunication - strb r4, [r0, 0x5] - movs r0, 0xFD - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0x1] - movs r0, 0x36 - strb r0, [r5, 0x2] - mov r0, r8 - strb r0, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r6 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08016168: - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - ldr r1, _080161C0 @ =0x02000000 - mov r12, r1 - mov r2, r9 - cmp r2, 0 - beq _0801617A - b _08016532 -_0801617A: - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0801610A -_08016182: - mov r3, r9 - cmp r3, 0 - beq _0801618A - b _08016532 -_0801618A: - ldr r0, _080161C4 @ =0x0001600e - add r0, r12 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _0801619C @ =0x000160fc - add r0, r12 - strb r3, [r0] - b _0801652A - .align 2, 0 -_0801619C: .4byte 0x000160fc -_080161A0: .4byte gActiveBank -_080161A4: .4byte gBattleTextBuff1 -_080161A8: .4byte gBankAttacker -_080161AC: .4byte gSideTimer -_080161B0: .4byte gSideAffecting -_080161B4: .4byte 0x0000feff -_080161B8: .4byte gUnknown_081D9030 -_080161BC: .4byte gBattleCommunication -_080161C0: .4byte 0x02000000 -_080161C4: .4byte 0x0001600e -_080161C8: - ldr r1, _08016250 @ =0x000160fc - add r1, r12 - ldrb r0, [r1] - cmp r0, 0x1 - bhi _08016236 - ldr r7, _08016254 @ =gActiveBank - adds r5, r1, 0 - ldr r6, _08016258 @ =gBankAttacker -_080161D8: - ldrb r4, [r5] - strb r4, [r6] - strb r4, [r7] - ldr r0, _0801625C @ =gSideAffecting - lsls r2, r4, 1 - adds r3, r2, r0 - ldrh r1, [r3] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801621C - ldr r0, _08016260 @ =gSideTimer - adds r1, r2, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x7] - subs r0, 0x1 - strb r0, [r1, 0x7] - lsls r0, 24 - cmp r0, 0 - bne _0801621C - ldrh r0, [r3] - ldr r2, _08016264 @ =0x0000ffdf - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _08016268 @ =gUnknown_081D9041 - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801621C: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r3, _0801626C @ =0x02000000 - mov r12, r3 - mov r1, r9 - cmp r1, 0 - beq _0801622E - b _08016532 -_0801622E: - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080161D8 -_08016236: - mov r2, r9 - cmp r2, 0 - beq _0801623E - b _08016532 -_0801623E: - ldr r0, _08016270 @ =0x0001600e - add r0, r12 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _08016250 @ =0x000160fc - add r0, r12 - strb r2, [r0] - b _0801652A - .align 2, 0 -_08016250: .4byte 0x000160fc -_08016254: .4byte gActiveBank -_08016258: .4byte gBankAttacker -_0801625C: .4byte gSideAffecting -_08016260: .4byte gSideTimer -_08016264: .4byte 0x0000ffdf -_08016268: .4byte gUnknown_081D9041 -_0801626C: .4byte 0x02000000 -_08016270: .4byte 0x0001600e -_08016274: - ldr r2, _080162FC @ =0x000160fc - add r2, r12 - ldr r1, _08016300 @ =gNoOfAllBanks - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bcs _080162E8 - ldr r5, _08016304 @ =gActiveBank - adds r4, r2, 0 - ldr r6, _08016308 @ =gUnknown_02024DDC -_08016288: - ldr r1, _0801630C @ =gTurnOrder - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r5] - ldrb r0, [r5] - adds r1, r0, r6 - ldrb r0, [r1] - cmp r0, 0 - beq _080162CA - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080162CA - ldr r1, _08016310 @ =gBattleMons - ldrb r2, [r5] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _080162CA - ldr r0, _08016314 @ =gBankTarget - strb r2, [r0] - ldr r0, _08016318 @ =gUnknown_081D939A - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080162CA: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r3, _0801631C @ =0x02000000 - mov r12, r3 - mov r1, r9 - cmp r1, 0 - beq _080162DC - b _08016532 -_080162DC: - ldr r1, _08016300 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08016288 -_080162E8: - mov r2, r9 - cmp r2, 0 - beq _080162F0 - b _08016532 -_080162F0: - ldr r1, _08016320 @ =0x0001600e - add r1, r12 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0801652A - .align 2, 0 -_080162FC: .4byte 0x000160fc -_08016300: .4byte gNoOfAllBanks -_08016304: .4byte gActiveBank -_08016308: .4byte gUnknown_02024DDC -_0801630C: .4byte gTurnOrder -_08016310: .4byte gBattleMons -_08016314: .4byte gBankTarget -_08016318: .4byte gUnknown_081D939A -_0801631C: .4byte 0x02000000 -_08016320: .4byte 0x0001600e -_08016324: - ldr r3, _0801635C @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x7 - ands r0, r2 - cmp r0, 0 - bne _08016332 - b _080164F8 -_08016332: - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - bne _0801637E - ldr r1, _08016360 @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08016370 - ldr r0, _08016364 @ =0x0000fffe - ands r0, r2 - ldr r1, _08016368 @ =0x0000fffd - ands r0, r1 - strh r0, [r3] - ldr r1, _0801636C @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _0801639C - .align 2, 0 -_0801635C: .4byte gBattleWeather -_08016360: .4byte gWishFutureKnock -_08016364: .4byte 0x0000fffe -_08016368: .4byte 0x0000fffd -_0801636C: .4byte gBattleCommunication -_08016370: - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _0801638A - b _08016398 -_0801637E: - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _08016398 -_0801638A: - ldr r1, _08016394 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _0801639C - .align 2, 0 -_08016394: .4byte gBattleCommunication -_08016398: - ldr r0, _080163A0 @ =gBattleCommunication - strb r1, [r0, 0x5] -_0801639C: - ldr r0, _080163A4 @ =gUnknown_081D8F62 - b _080164EA - .align 2, 0 -_080163A0: .4byte gBattleCommunication -_080163A4: .4byte gUnknown_081D8F62 -_080163A8: - ldr r3, _080163DC @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x18 - ands r0, r2 - cmp r0, 0 - bne _080163B6 - b _080164F8 -_080163B6: - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - bne _080163F0 - ldr r1, _080163E0 @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080163F0 - ldr r0, _080163E4 @ =0x0000fff7 - ands r0, r2 - strh r0, [r3] - ldr r1, _080163E8 @ =gBattlescriptCurrInstr - ldr r0, _080163EC @ =gUnknown_081D8FFF - b _080163F4 - .align 2, 0 -_080163DC: .4byte gBattleWeather -_080163E0: .4byte gWishFutureKnock -_080163E4: .4byte 0x0000fff7 -_080163E8: .4byte gBattlescriptCurrInstr -_080163EC: .4byte gUnknown_081D8FFF -_080163F0: - ldr r1, _0801640C @ =gBattlescriptCurrInstr - ldr r0, _08016410 @ =gUnknown_081D8F7D -_080163F4: - str r0, [r1] - adds r3, r1, 0 - ldr r1, _08016414 @ =0x02000000 - ldr r0, _08016418 @ =0x000160a4 - adds r1, r0 - movs r2, 0 - movs r0, 0xC - strb r0, [r1] - ldr r0, _0801641C @ =gBattleCommunication - strb r2, [r0, 0x5] - b _080164E8 - .align 2, 0 -_0801640C: .4byte gBattlescriptCurrInstr -_08016410: .4byte gUnknown_081D8F7D -_08016414: .4byte 0x02000000 -_08016418: .4byte 0x000160a4 -_0801641C: .4byte gBattleCommunication -_08016420: - ldr r3, _08016450 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x60 - ands r0, r2 - cmp r0, 0 - beq _0801647C - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - bne _08016464 - ldr r1, _08016454 @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08016464 - ldr r0, _08016458 @ =0x0000ffdf - ands r0, r2 - strh r0, [r3] - ldr r1, _0801645C @ =gBattlescriptCurrInstr - ldr r0, _08016460 @ =gUnknown_081D9016 - b _08016468 - .align 2, 0 -_08016450: .4byte gBattleWeather -_08016454: .4byte gWishFutureKnock -_08016458: .4byte 0x0000ffdf -_0801645C: .4byte gBattlescriptCurrInstr -_08016460: .4byte gUnknown_081D9016 -_08016464: - ldr r1, _08016484 @ =gBattlescriptCurrInstr - ldr r0, _08016488 @ =gUnknown_081D9008 -_08016468: - str r0, [r1] - adds r3, r1, 0 - ldr r0, [r3] - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801647C: - ldr r2, _0801648C @ =0x02000000 - ldr r0, _08016490 @ =0x0001600e - adds r1, r2, r0 - b _080164FE - .align 2, 0 -_08016484: .4byte gBattlescriptCurrInstr -_08016488: .4byte gUnknown_081D9008 -_0801648C: .4byte 0x02000000 -_08016490: .4byte 0x0001600e -_08016494: - ldr r3, _080164BC @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _080164F8 - ldr r1, _080164C0 @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080164D0 - ldr r0, _080164C4 @ =0x0000ff7f - ands r0, r2 - strh r0, [r3] - ldr r1, _080164C8 @ =gBattlescriptCurrInstr - ldr r0, _080164CC @ =gUnknown_081D8FFF - b _080164D4 - .align 2, 0 -_080164BC: .4byte gBattleWeather -_080164C0: .4byte gWishFutureKnock -_080164C4: .4byte 0x0000ff7f -_080164C8: .4byte gBattlescriptCurrInstr -_080164CC: .4byte gUnknown_081D8FFF -_080164D0: - ldr r1, _08016508 @ =gBattlescriptCurrInstr - ldr r0, _0801650C @ =gUnknown_081D8F7D -_080164D4: - str r0, [r1] - adds r3, r1, 0 - ldr r0, _08016510 @ =0x02000000 - ldr r1, _08016514 @ =0x000160a4 - adds r0, r1 - movs r1, 0xD - strb r1, [r0] - ldr r1, _08016518 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_080164E8: - ldr r0, [r3] -_080164EA: - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080164F8: - ldr r2, _08016510 @ =0x02000000 - ldr r3, _0801651C @ =0x0001600e - adds r1, r2, r3 -_080164FE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - b _0801652A - .align 2, 0 -_08016508: .4byte gBattlescriptCurrInstr -_0801650C: .4byte gUnknown_081D8F7D -_08016510: .4byte 0x02000000 -_08016514: .4byte 0x000160a4 -_08016518: .4byte gBattleCommunication -_0801651C: .4byte 0x0001600e -_08016520: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801652A: - mov r0, r9 - cmp r0, 0 - bne _08016532 - b _08015E8A -_08016532: - ldr r0, _08016550 @ =gBattleMainFunc - ldr r1, [r0] - ldr r0, _08016554 @ =BattleTurnPassed - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08016550: .4byte gBattleMainFunc -_08016554: .4byte BattleTurnPassed - thumb_func_end UpdateTurnCounters - - thumb_func_start TurnBasedEffects -TurnBasedEffects: @ 8016558 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r9, r0 - ldr r2, _08016578 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0801657C @ =0x01000020 - orrs r0, r1 - str r0, [r2] - bl _08017088 - .align 2, 0 -_08016578: .4byte gHitMarker -_0801657C: .4byte 0x01000020 -_08016580: - ldr r3, _080165B4 @ =gActiveBank - ldr r4, _080165B8 @ =gBankAttacker - ldr r1, _080165BC @ =gTurnOrder - adds r5, r7, r2 - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4] - strb r0, [r3] - ldr r0, _080165C0 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _080165C4 @ =gBitTable - ldrb r0, [r3] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - adds r6, r3, 0 - cmp r1, 0 - beq _080165C8 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - bl _08017088 - .align 2, 0 -_080165B4: .4byte gActiveBank -_080165B8: .4byte gBankAttacker -_080165BC: .4byte gTurnOrder -_080165C0: .4byte gAbsentBankFlags -_080165C4: .4byte gBitTable -_080165C8: - movs r5, 0xB0 - lsls r5, 9 - adds r0, r7, r5 - ldrb r0, [r0] - cmp r0, 0x13 - bls _080165D8 - bl _08017078 -_080165D8: - lsls r0, 2 - ldr r1, _080165E4 @ =_080165E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080165E4: .4byte _080165E8 - .align 2, 0 -_080165E8: - .4byte _08016638 - .4byte _080166A8 - .4byte _080166D8 - .4byte _08016730 - .4byte _080167C8 - .4byte _08016828 - .4byte _080168C0 - .4byte _0801691C - .4byte _0801697C - .4byte _080169DC - .4byte _08016B78 - .4byte _08016CA0 - .4byte _08016D58 - .4byte _08016E30 - .4byte _08016EFC - .4byte _08016F20 - .4byte _08016F6C - .4byte _08016F9C - .4byte _08016704 - .4byte _08017064 -_08016638: - ldr r1, _08016694 @ =gStatuses3 - ldrb r3, [r6] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _08016686 - ldr r0, _08016698 @ =gBattleMons - movs r1, 0x58 - muls r1, r3 - adds r0, r1, r0 - ldrh r2, [r0, 0x28] - ldrh r7, [r0, 0x2C] - cmp r2, r7 - beq _08016686 - cmp r2, 0 - beq _08016686 - ldr r1, _0801669C @ =gBattleMoveDamage - ldrh r0, [r0, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08016670 - movs r0, 0x1 - str r0, [r1] -_08016670: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldr r0, _080166A0 @ =gUnknown_081D93D1 - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08016686: - ldr r1, _080166A4 @ =0x02000000 - movs r0, 0xB0 - lsls r0, 9 - adds r1, r0 - bl _08017072 - .align 2, 0 -_08016694: .4byte gStatuses3 -_08016698: .4byte gBattleMons -_0801669C: .4byte gBattleMoveDamage -_080166A0: .4byte gUnknown_081D93D1 -_080166A4: .4byte 0x02000000 -_080166A8: - ldrb r1, [r6] - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _080166C8 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080166C8: - ldr r1, _080166D4 @ =0x02000000 - movs r2, 0xB0 - lsls r2, 9 - adds r1, r2 - bl _08017072 - .align 2, 0 -_080166D4: .4byte 0x02000000 -_080166D8: - ldrb r1, [r6] - movs r0, 0x1 - movs r2, 0 - bl sub_801A02C - lsls r0, 24 - cmp r0, 0 - beq _080166F2 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080166F2: - ldr r1, _08016700 @ =0x02000000 - movs r3, 0xB0 - lsls r3, 9 - adds r1, r3 - bl _08017072 - .align 2, 0 -_08016700: .4byte 0x02000000 -_08016704: - ldrb r1, [r6] - movs r0, 0x1 - movs r2, 0x1 - bl sub_801A02C - lsls r0, 24 - cmp r0, 0 - beq _0801671E - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801671E: - ldr r1, _0801672C @ =0x02000000 - movs r5, 0xB0 - lsls r5, 9 - adds r1, r5 - bl _08017072 - .align 2, 0 -_0801672C: .4byte 0x02000000 -_08016730: - ldr r0, _080167A8 @ =gStatuses3 - ldrb r2, [r6] - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801679C - ldr r3, _080167AC @ =gBattleMons - movs r5, 0x3 - ands r5, r1 - movs r1, 0x58 - adds r0, r5, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801679C - adds r0, r2, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801679C - ldr r0, _080167B0 @ =gBankTarget - strb r5, [r0] - ldr r2, _080167B4 @ =gBattleMoveDamage - ldrb r0, [r6] - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _0801677C - movs r0, 0x1 - str r0, [r2] -_0801677C: - ldr r1, _080167B8 @ =0x02000000 - ldr r7, _080167BC @ =0x000160a4 - adds r0, r1, r7 - strb r5, [r0] - ldrb r0, [r4] - ldr r2, _080167C0 @ =0x000160a5 - adds r1, r2 - strb r0, [r1] - ldr r0, _080167C4 @ =gUnknown_081D904B - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801679C: - ldr r1, _080167B8 @ =0x02000000 - movs r3, 0xB0 - lsls r3, 9 - adds r1, r3 - bl _08017072 - .align 2, 0 -_080167A8: .4byte gStatuses3 -_080167AC: .4byte gBattleMons -_080167B0: .4byte gBankTarget -_080167B4: .4byte gBattleMoveDamage -_080167B8: .4byte 0x02000000 -_080167BC: .4byte 0x000160a4 -_080167C0: .4byte 0x000160a5 -_080167C4: .4byte gUnknown_081D904B -_080167C8: - ldr r2, _08016818 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801680A - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _0801680A - ldr r2, _0801681C @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _080167FA - movs r0, 0x1 - str r0, [r2] -_080167FA: - ldr r0, _08016820 @ =gUnknown_081D9518 - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801680A: - ldr r1, _08016824 @ =0x02000000 - movs r5, 0xB0 - lsls r5, 9 - adds r1, r5 - bl _08017072 - .align 2, 0 -_08016818: .4byte gBattleMons -_0801681C: .4byte gBattleMoveDamage -_08016820: .4byte gUnknown_081D9518 -_08016824: .4byte 0x02000000 -_08016828: - ldr r4, _080168B0 @ =gBattleMons - ldrb r0, [r6] - movs r7, 0x58 - mov r8, r7 - mov r2, r8 - muls r2, r0 - adds r3, r4, 0 - adds r3, 0x4C - adds r0, r2, r3 - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080168A2 - adds r1, r2, r4 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _080168A2 - ldr r5, _080168B4 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 4 - str r0, [r5] - cmp r0, 0 - bne _0801685C - movs r0, 0x1 - str r0, [r5] -_0801685C: - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r2, r0, r3 - ldr r1, [r2] - movs r4, 0xF0 - lsls r4, 4 - adds r0, r1, 0 - ands r0, r4 - cmp r0, r4 - beq _0801687C - movs r7, 0x80 - lsls r7, 1 - adds r0, r1, r7 - str r0, [r2] -_0801687C: - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r3 - ldr r0, [r0] - ands r0, r4 - lsrs r0, 8 - ldr r1, [r5] - muls r0, r1 - str r0, [r5] - ldr r0, _080168B8 @ =gUnknown_081D9518 - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080168A2: - ldr r1, _080168BC @ =0x02000000 - movs r2, 0xB0 - lsls r2, 9 - adds r1, r2 - bl _08017072 - .align 2, 0 -_080168B0: .4byte gBattleMons -_080168B4: .4byte gBattleMoveDamage -_080168B8: .4byte gUnknown_081D9518 -_080168BC: .4byte 0x02000000 -_080168C0: - ldr r2, _0801690C @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08016902 - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _08016902 - ldr r2, _08016910 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _080168F2 - movs r0, 0x1 - str r0, [r2] -_080168F2: - ldr r0, _08016914 @ =gUnknown_081D953A - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08016902: - ldr r1, _08016918 @ =0x02000000 - movs r3, 0xB0 - lsls r3, 9 - adds r1, r3 - b _08017072 - .align 2, 0 -_0801690C: .4byte gBattleMons -_08016910: .4byte gBattleMoveDamage -_08016914: .4byte gUnknown_081D953A -_08016918: .4byte 0x02000000 -_0801691C: - ldr r2, _0801696C @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 20 - ands r0, r1 - cmp r0, 0 - beq _08016960 - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _08016960 - ldr r2, _08016970 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 2 - str r0, [r2] - cmp r0, 0 - bne _08016950 - movs r0, 0x1 - str r0, [r2] -_08016950: - ldr r0, _08016974 @ =gUnknown_081D9613 - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08016960: - ldr r1, _08016978 @ =0x02000000 - movs r5, 0xB0 - lsls r5, 9 - adds r1, r5 - b _08017072 - .align 2, 0 -_0801696C: .4byte gBattleMons -_08016970: .4byte gBattleMoveDamage -_08016974: .4byte gUnknown_081D9613 -_08016978: .4byte 0x02000000 -_0801697C: - ldr r2, _080169CC @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 21 - ands r0, r1 - cmp r0, 0 - beq _080169C0 - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _080169C0 - ldr r2, _080169D0 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 2 - str r0, [r2] - cmp r0, 0 - bne _080169B0 - movs r0, 0x1 - str r0, [r2] -_080169B0: - ldr r0, _080169D4 @ =gUnknown_081D9624 - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080169C0: - ldr r1, _080169D8 @ =0x02000000 - movs r7, 0xB0 - lsls r7, 9 - adds r1, r7 - b _08017072 - .align 2, 0 -_080169CC: .4byte gBattleMons -_080169D0: .4byte gBattleMoveDamage -_080169D4: .4byte gUnknown_081D9624 -_080169D8: .4byte 0x02000000 -_080169DC: - ldr r0, _08016A8C @ =gBattleMons - mov r8, r0 - ldrb r0, [r6] - movs r1, 0x58 - mov r10, r1 - mov r1, r10 - muls r1, r0 - mov r5, r8 - adds r5, 0x50 - adds r3, r1, r5 - ldr r2, [r3] - movs r4, 0xE0 - lsls r4, 8 - adds r0, r2, 0 - ands r0, r4 - cmp r0, 0 - beq _08016AF6 - mov r7, r8 - adds r0, r1, r7 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08016AF6 - ldr r1, _08016A90 @ =0xffffe000 - adds r0, r2, r1 - str r0, [r3] - ldrb r1, [r6] - mov r0, r10 - muls r0, r1 - adds r0, r5 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _08016AB4 - ldr r2, _08016A94 @ =0x02000000 - lsls r0, r1, 1 - ldr r4, _08016A98 @ =0x00016004 - adds r0, r4 - adds r0, r2 - ldrb r1, [r0] - ldr r3, _08016A9C @ =0x000160a4 - adds r0, r2, r3 - strb r1, [r0] - ldrb r0, [r6] - lsls r0, 1 - subs r3, 0x9F - adds r0, r3 - adds r0, r2 - ldrb r1, [r0] - ldr r5, _08016AA0 @ =0x000160a5 - adds r0, r2, r5 - strb r1, [r0] - ldr r1, _08016AA4 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r4 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r3 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08016AA8 @ =gBattlescriptCurrInstr - ldr r0, _08016AAC @ =gUnknown_081D95E2 - str r0, [r1] - ldr r2, _08016AB0 @ =gBattleMoveDamage - ldrb r0, [r6] - mov r7, r10 - muls r7, r0 - adds r0, r7, 0 - add r0, r8 - ldrh r0, [r0, 0x2C] - lsrs r0, 4 - str r0, [r2] - cmp r0, 0 - bne _08016AE6 - movs r0, 0x1 - str r0, [r2] - b _08016AE6 - .align 2, 0 -_08016A8C: .4byte gBattleMons -_08016A90: .4byte 0xffffe000 -_08016A94: .4byte 0x02000000 -_08016A98: .4byte 0x00016004 -_08016A9C: .4byte 0x000160a4 -_08016AA0: .4byte 0x000160a5 -_08016AA4: .4byte gBattleTextBuff1 -_08016AA8: .4byte gBattlescriptCurrInstr -_08016AAC: .4byte gUnknown_081D95E2 -_08016AB0: .4byte gBattleMoveDamage -_08016AB4: - ldr r1, _08016B00 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldr r2, _08016B04 @ =0x02000000 - ldrb r0, [r6] - lsls r0, 1 - ldr r3, _08016B08 @ =0x00016004 - adds r0, r3 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r6] - lsls r0, 1 - ldr r5, _08016B0C @ =0x00016005 - adds r0, r5 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08016B10 @ =gBattlescriptCurrInstr - ldr r0, _08016B14 @ =gUnknown_081D95F4 - str r0, [r1] -_08016AE6: - ldr r0, [r1] - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08016AF6: - ldr r1, _08016B04 @ =0x02000000 - movs r7, 0xB0 - lsls r7, 9 - adds r1, r7 - b _08017072 - .align 2, 0 -_08016B00: .4byte gBattleTextBuff1 -_08016B04: .4byte 0x02000000 -_08016B08: .4byte 0x00016004 -_08016B0C: .4byte 0x00016005 -_08016B10: .4byte gBattlescriptCurrInstr -_08016B14: .4byte gUnknown_081D95F4 -_08016B18: - movs r0, 0x8 - negs r0, r0 - ands r4, r0 - str r4, [r2] - ldrb r0, [r6] - mov r2, r8 - muls r2, r0 - mov r0, r10 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08016B68 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r1, _08016B6C @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - ldr r0, _08016B70 @ =gUnknown_081D950F - bl b_call_bc_move_exec - ldr r4, _08016B74 @ =gActiveBank - ldrb r0, [r6] - strb r0, [r4] - ldrb r0, [r4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _08016BE0 - .align 2, 0 -_08016B68: .4byte 0xf7ffffff -_08016B6C: .4byte gBattleCommunication -_08016B70: .4byte gUnknown_081D950F -_08016B74: .4byte gActiveBank -_08016B78: - ldr r2, _08016BF4 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x70 - ands r1, r0 - adds r7, r2, 0 - cmp r1, 0 - beq _08016C82 - movs r0, 0 - strb r0, [r4] - mov r2, r8 - ldrb r1, [r2] - cmp r1, 0 - beq _08016BE0 - mov r10, r7 - adds r6, r4, 0 - movs r3, 0x58 - mov r8, r3 - movs r5, 0x4C - adds r5, r7 - mov r9, r5 - str r1, [sp, 0x4] - movs r0, 0x7 - mov r12, r0 -_08016BB2: - ldrb r1, [r6] - mov r3, r8 - muls r3, r1 - mov r5, r9 - adds r2, r3, r5 - ldr r4, [r2] - adds r0, r4, 0 - mov r5, r12 - ands r0, r5 - cmp r0, 0 - beq _08016BD2 - adds r0, r3, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - bne _08016B18 -_08016BD2: - adds r0, r1, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r0, 24 - ldr r1, [sp, 0x4] - cmp r0, r1 - bcc _08016BB2 -_08016BE0: - ldr r2, _08016BF8 @ =gBankAttacker - ldr r1, _08016BFC @ =gNoOfAllBanks - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - beq _08016C00 - movs r2, 0x2 - mov r9, r2 - b _0801707E - .align 2, 0 -_08016BF4: .4byte gBattleMons -_08016BF8: .4byte gBankAttacker -_08016BFC: .4byte gNoOfAllBanks -_08016C00: - ldr r5, _08016C38 @ =gActiveBank - ldrb r0, [r5] - strb r0, [r2] - ldr r2, _08016C3C @ =gBattleMons - ldrb r0, [r5] - movs r7, 0x58 - adds r1, r0, 0 - muls r1, r7 - adds r6, r2, 0 - adds r6, 0x50 - adds r1, r6 - ldr r0, [r1] - subs r0, 0x10 - str r0, [r1] - ldrb r0, [r5] - bl sub_8015660 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08016C44 - ldrb r0, [r5] - bl CancelMultiTurnMoves - ldr r1, _08016C40 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08016C78 - .align 2, 0 -_08016C38: .4byte gActiveBank -_08016C3C: .4byte gBattleMons -_08016C40: .4byte gBattleCommunication -_08016C44: - ldrb r3, [r5] - adds r0, r3, 0 - muls r0, r7 - adds r2, r0, r6 - ldr r0, [r2] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - beq _08016C6C - ldr r0, _08016C68 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - b _08016C78 - .align 2, 0 -_08016C68: .4byte gBattleCommunication -_08016C6C: - ldr r1, _08016C94 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - adds r0, r3, 0 - bl CancelMultiTurnMoves -_08016C78: - ldr r0, _08016C98 @ =gUnknown_081D957E - bl b_call_bc_move_exec - movs r3, 0x1 - mov r9, r3 -_08016C82: - mov r5, r9 - cmp r5, 0x2 - bne _08016C8A - b _08017078 -_08016C8A: - ldr r1, _08016C9C @ =0x02000000 - movs r7, 0xB0 - lsls r7, 9 - adds r1, r7 - b _08017072 - .align 2, 0 -_08016C94: .4byte gBattleCommunication -_08016C98: .4byte gUnknown_081D957E -_08016C9C: .4byte 0x02000000 -_08016CA0: - ldr r1, _08016CD8 @ =gBattleMons - ldrb r0, [r6] - movs r7, 0x58 - muls r0, r7 - adds r5, r1, 0 - adds r5, 0x50 - adds r2, r0, r5 - ldr r1, [r2] - movs r4, 0xC0 - lsls r4, 4 - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - beq _08016D3C - ldr r3, _08016CDC @ =0xfffffc00 - adds r0, r1, r3 - str r0, [r2] - ldrb r0, [r6] - bl sub_8015660 - lsls r0, 24 - cmp r0, 0 - beq _08016CE0 - ldrb r0, [r6] - bl CancelMultiTurnMoves - b _08016D3C - .align 2, 0 -_08016CD8: .4byte gBattleMons -_08016CDC: .4byte 0xfffffc00 -_08016CE0: - ldrb r0, [r6] - muls r0, r7 - adds r2, r0, r5 - ldr r1, [r2] - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - bne _08016D3C - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - beq _08016D3C - ldr r0, _08016D48 @ =0xffffefff - ands r1, r0 - str r1, [r2] - ldrb r0, [r6] - muls r0, r7 - adds r0, r5 - ldr r0, [r0] - movs r4, 0x7 - ands r0, r4 - cmp r0, 0 - bne _08016D3C - ldr r1, _08016D4C @ =gBattleCommunication - movs r0, 0x47 - strb r0, [r1, 0x3] - movs r0, 0x1 - movs r1, 0 - bl sub_801E3EC - ldrb r0, [r6] - muls r0, r7 - adds r0, r5 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _08016D32 - ldr r0, _08016D50 @ =gUnknown_081D9587 - bl b_call_bc_move_exec -_08016D32: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08016D3C: - ldr r1, _08016D54 @ =0x02000000 - movs r5, 0xB0 - lsls r5, 9 - adds r1, r5 - b _08017072 - .align 2, 0 -_08016D48: .4byte 0xffffefff -_08016D4C: .4byte gBattleCommunication -_08016D50: .4byte gUnknown_081D9587 -_08016D54: .4byte 0x02000000 -_08016D58: - ldr r0, _08016DD4 @ =gDisableStructs - ldrb r3, [r6] - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r5, r1, r0 - ldrb r1, [r5, 0xB] - lsls r1, 28 - adds r7, r0, 0 - cmp r1, 0 - beq _08016E1E - movs r4, 0 - ldr r2, _08016DD8 @ =gBattleMons - movs r0, 0x58 - adds r1, r3, 0 - muls r1, r0 - adds r2, 0xC - adds r1, r2 - ldrh r0, [r5, 0x4] - ldrh r1, [r1] - cmp r0, r1 - beq _08016DAC - mov r12, r7 - mov r8, r2 - adds r5, r6, 0 - movs r3, 0x58 -_08016D8C: - adds r4, 0x1 - cmp r4, 0x3 - bgt _08016DAC - ldrb r2, [r5] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r12 - lsls r0, r4, 1 - muls r2, r3 - adds r0, r2 - add r0, r8 - ldrh r1, [r1, 0x4] - ldrh r0, [r0] - cmp r1, r0 - bne _08016D8C -_08016DAC: - cmp r4, 0x4 - bne _08016DDC - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - movs r1, 0 - strh r1, [r0, 0x4] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r2, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xB] - b _08016E1E - .align 2, 0 -_08016DD4: .4byte gDisableStructs -_08016DD8: .4byte gBattleMons -_08016DDC: - ldrb r0, [r6] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r2, r7 - ldrb r3, [r2, 0xB] - lsls r1, r3, 28 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0xB] - adds r2, r1, 0 - cmp r2, 0 - bne _08016E1E - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - strh r2, [r0, 0x4] - ldr r0, _08016E28 @ =gUnknown_081D9148 - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08016E1E: - ldr r1, _08016E2C @ =0x02000000 - movs r7, 0xB0 - lsls r7, 9 - adds r1, r7 - b _08017072 - .align 2, 0 -_08016E28: .4byte gUnknown_081D9148 -_08016E2C: .4byte 0x02000000 -_08016E30: - ldr r3, _08016E7C @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r2, r0, r3 - ldrb r5, [r2, 0xE] - lsls r4, r5, 28 - cmp r4, 0 - beq _08016EE8 - ldr r0, _08016E80 @ =gBattleMons - mov r8, r0 - ldrb r0, [r2, 0xC] - lsls r0, 1 - movs r7, 0x58 - muls r1, r7 - adds r0, r1 - mov r1, r8 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - ldrh r1, [r2, 0x6] - cmp r0, r1 - beq _08016E84 - movs r0, 0 - strh r0, [r2, 0x6] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xE] - b _08016EE8 - .align 2, 0 -_08016E7C: .4byte gDisableStructs -_08016E80: .4byte gBattleMons -_08016E84: - lsrs r1, r4, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r4, 0x10 - negs r4, r4 - adds r0, r4, 0 - ands r0, r5 - orrs r0, r1 - strb r0, [r2, 0xE] - cmp r1, 0 - beq _08016EB8 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - muls r1, r7 - ldrb r0, [r0, 0xC] - adds r1, r0 - mov r0, r8 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _08016EE8 -_08016EB8: - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x6] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0xE] - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0xE] - ldr r0, _08016EF4 @ =gUnknown_081D914F - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08016EE8: - ldr r1, _08016EF8 @ =0x02000000 - movs r2, 0xB0 - lsls r2, 9 - adds r1, r2 - b _08017072 - .align 2, 0 -_08016EF4: .4byte gUnknown_081D914F -_08016EF8: .4byte 0x02000000 -_08016EFC: - ldr r0, _08016F1C @ =gStatuses3 - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - movs r0, 0x18 - ands r0, r2 - cmp r0, 0 - beq _08016F14 - adds r0, r2, 0 - subs r0, 0x8 - str r0, [r1] -_08016F14: - movs r1, 0xB0 - lsls r1, 9 - b _08017070 - .align 2, 0 -_08016F1C: .4byte gStatuses3 -_08016F20: - ldr r2, _08016F60 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r3, r0, r2 - ldrb r2, [r3, 0x12] - lsls r1, r2, 28 - cmp r1, 0 - beq _08016F5A - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x12] - cmp r1, 0 - bne _08016F5A - ldr r0, _08016F64 @ =gStatuses3 - ldrb r2, [r6] - lsls r2, 2 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08016F68 @ =0xfffffdff - ands r0, r1 - str r0, [r2] -_08016F5A: - movs r1, 0xB0 - lsls r1, 9 - b _08017070 - .align 2, 0 -_08016F60: .4byte gDisableStructs -_08016F64: .4byte gStatuses3 -_08016F68: .4byte 0xfffffdff -_08016F6C: - ldr r2, _08016F98 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r3, r0, r2 - ldrb r2, [r3, 0x13] - lsls r1, r2, 28 - cmp r1, 0 - beq _08016F92 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x13] -_08016F92: - movs r1, 0xB0 - lsls r1, 9 - b _08017070 - .align 2, 0 -_08016F98: .4byte gDisableStructs -_08016F9C: - ldr r4, _0801704C @ =gStatuses3 - ldrb r0, [r6] - lsls r0, 2 - adds r2, r0, r4 - ldr r1, [r2] - movs r3, 0xC0 - lsls r3, 5 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _08017042 - ldr r5, _08017050 @ =0xfffff800 - adds r0, r1, r5 - str r0, [r2] - ldrb r2, [r6] - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r3 - cmp r0, 0 - bne _08017042 - ldr r3, _08017054 @ =gBattleMons - movs r5, 0x58 - adds r1, r2, 0 - muls r1, r5 - adds r4, r3, 0 - adds r4, 0x4C - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08017042 - adds r0, r1, r3 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x48 - beq _08017042 - cmp r0, 0xF - beq _08017042 - adds r0, r2, 0 - bl sub_8025A44 - lsls r0, 24 - cmp r0, 0 - bne _08017042 - ldrb r0, [r6] - bl CancelMultiTurnMoves - bl Random - ldrb r1, [r6] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r6] - bl MarkBufferBankForExecution - ldr r1, _08017058 @ =gEffectBank - ldrb r0, [r6] - strb r0, [r1] - ldr r0, _0801705C @ =gUnknown_081D964C - bl b_call_bc_move_exec - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017042: - ldr r1, _08017060 @ =0x02000000 - movs r7, 0xB0 - lsls r7, 9 - adds r1, r7 - b _08017072 - .align 2, 0 -_0801704C: .4byte gStatuses3 -_08017050: .4byte 0xfffff800 -_08017054: .4byte gBattleMons -_08017058: .4byte gEffectBank -_0801705C: .4byte gUnknown_081D964C -_08017060: .4byte 0x02000000 -_08017064: - movs r1, 0xB0 - lsls r1, 9 - add r1, r10 - movs r0, 0 - strb r0, [r1] - ldr r1, _08017084 @ =0x00016001 -_08017070: - add r1, r10 -_08017072: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08017078: - mov r0, r9 - cmp r0, 0 - beq _08017088 -_0801707E: - mov r0, r9 - b _080170B8 - .align 2, 0 -_08017084: .4byte 0x00016001 -_08017088: - ldr r7, _080170C8 @ =0x02000000 - ldr r2, _080170CC @ =0x00016001 - adds r0, r7, r2 - ldr r1, _080170D0 @ =gNoOfAllBanks - ldrb r0, [r0] - mov r10, r7 - mov r8, r1 - ldrb r1, [r1] - cmp r0, r1 - bcs _080170AC - movs r3, 0xB0 - lsls r3, 9 - adds r0, r7, r3 - ldrb r0, [r0] - cmp r0, 0x13 - bhi _080170AC - bl _08016580 -_080170AC: - ldr r0, _080170D4 @ =gHitMarker - ldr r1, [r0] - ldr r2, _080170D8 @ =0xfeffffdf - ands r1, r2 - str r1, [r0] - movs r0, 0 -_080170B8: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080170C8: .4byte 0x02000000 -_080170CC: .4byte 0x00016001 -_080170D0: .4byte gNoOfAllBanks -_080170D4: .4byte gHitMarker -_080170D8: .4byte 0xfeffffdf - thumb_func_end TurnBasedEffects - - thumb_func_start sub_80170DC -sub_80170DC: @ 80170DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _08017108 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0801710C @ =0x01000020 - orrs r0, r1 - str r0, [r2] - ldr r1, _08017110 @ =0x02000000 - ldr r3, _08017114 @ =0x00016110 - adds r0, r1, r3 - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0 - beq _08017118 - cmp r0, 0x1 - bne _08017104 - b _08017258 -_08017104: - b _08017380 - .align 2, 0 -_08017108: .4byte gHitMarker -_0801710C: .4byte 0x01000020 -_08017110: .4byte 0x02000000 -_08017114: .4byte 0x00016110 -_08017118: - ldr r2, _0801715C @ =0x00016111 - add r2, r8 - ldr r0, _08017160 @ =gNoOfAllBanks - ldrb r1, [r2] - mov r9, r0 - ldrb r0, [r0] - cmp r1, r0 - bcc _0801712A - b _08017248 -_0801712A: - ldr r4, _08017164 @ =gActiveBank - adds r5, r2, 0 - ldr r1, _08017168 @ =gWishFutureKnock - mov r12, r1 - movs r2, 0x8 - add r2, r12 - mov r10, r2 - mov r7, r12 - adds r7, 0x18 - ldr r6, _0801716C @ =gBattleTextBuff1 -_0801713E: - ldrb r3, [r5] - strb r3, [r4] - ldr r0, _08017170 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _08017174 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08017178 - adds r0, r3, 0x1 - strb r0, [r5] - b _0801723C - .align 2, 0 -_0801715C: .4byte 0x00016111 -_08017160: .4byte gNoOfAllBanks -_08017164: .4byte gActiveBank -_08017168: .4byte gWishFutureKnock -_0801716C: .4byte gBattleTextBuff1 -_08017170: .4byte gAbsentBankFlags -_08017174: .4byte gBitTable -_08017178: - adds r0, r3, 0x1 - strb r0, [r5] - ldr r1, _080171B4 @ =gWishFutureKnock - ldrb r0, [r4] - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - beq _0801723C - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _0801723C - ldr r1, _080171B8 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801723C - lsls r0, r2, 1 - adds r0, r7 - ldrh r0, [r0] - cmp r0, 0xF8 - bne _080171C0 - ldr r0, _080171BC @ =gBattleCommunication - strb r3, [r0, 0x5] - b _080171C6 - .align 2, 0 -_080171B4: .4byte gWishFutureKnock -_080171B8: .4byte gBattleMons -_080171BC: .4byte gBattleCommunication -_080171C0: - ldr r1, _08017220 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_080171C6: - movs r0, 0xFD - strb r0, [r6] - movs r0, 0x2 - strb r0, [r6, 0x1] - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - strb r0, [r6, 0x2] - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r6, 0x3] - movs r0, 0xFF - strb r0, [r6, 0x4] - ldr r3, _08017224 @ =gBankTarget - ldrb r0, [r4] - strb r0, [r3] - ldr r1, _08017228 @ =gBankAttacker - mov r0, r12 - adds r0, 0x4 - ldrb r2, [r4] - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _0801722C @ =gBattleMoveDamage - ldrb r0, [r4] - lsls r0, 2 - add r0, r10 - ldr r0, [r0] - str r0, [r1] - ldr r2, _08017230 @ =gSpecialStatuses - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r1, _08017234 @ =0x0000ffff - str r1, [r0] - ldr r0, _08017238 @ =gUnknown_081D92D7 - b _08017364 - .align 2, 0 -_08017220: .4byte gBattleCommunication -_08017224: .4byte gBankTarget -_08017228: .4byte gBankAttacker -_0801722C: .4byte gBattleMoveDamage -_08017230: .4byte gSpecialStatuses -_08017234: .4byte 0x0000ffff -_08017238: .4byte gUnknown_081D92D7 -_0801723C: - ldrb r0, [r5] - mov r3, r9 - ldrb r3, [r3] - cmp r0, r3 - bcs _08017248 - b _0801713E -_08017248: - ldr r1, _0801729C @ =0x00016110 - add r1, r8 - movs r2, 0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _080172A0 @ =0x00016111 - add r0, r8 - strb r2, [r0] -_08017258: - ldr r2, _080172A0 @ =0x00016111 - add r2, r8 - ldr r0, _080172A4 @ =gNoOfAllBanks - ldrb r1, [r2] - mov r9, r0 - ldrb r0, [r0] - cmp r1, r0 - bcc _0801726A - b _08017380 -_0801726A: - ldr r5, _080172A8 @ =gActiveBank - adds r3, r2, 0 - ldr r4, _080172AC @ =gBattleTextBuff1 - ldr r7, _080172B0 @ =gDisableStructs -_08017272: - ldr r2, _080172B4 @ =gBankAttacker - ldr r1, _080172B8 @ =gTurnOrder - ldrb r0, [r3] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - strb r0, [r5] - ldr r0, _080172BC @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _080172C0 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080172C4 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - b _08017374 - .align 2, 0 -_0801729C: .4byte 0x00016110 -_080172A0: .4byte 0x00016111 -_080172A4: .4byte gNoOfAllBanks -_080172A8: .4byte gActiveBank -_080172AC: .4byte gBattleTextBuff1 -_080172B0: .4byte gDisableStructs -_080172B4: .4byte gBankAttacker -_080172B8: .4byte gTurnOrder -_080172BC: .4byte gAbsentBankFlags -_080172C0: .4byte gBitTable -_080172C4: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldr r6, _08017334 @ =gStatuses3 - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08017374 - movs r0, 0xFD - strb r0, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - strb r0, [r4, 0x3] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0xF] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r4, 0x4] - movs r0, 0xFF - strb r0, [r4, 0x5] - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r4, r0, r7 - ldrb r3, [r4, 0xF] - lsls r1, r3, 28 - cmp r1, 0 - bne _08017348 - lsls r2, 2 - adds r2, r6 - ldr r0, [r2] - movs r1, 0x21 - negs r1, r1 - ands r0, r1 - str r0, [r2] - ldr r3, _08017338 @ =gBattleMoveDamage - ldr r2, _0801733C @ =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - str r0, [r3] - ldr r1, _08017340 @ =gBattlescriptCurrInstr - ldr r0, _08017344 @ =gUnknown_081D9202 - b _08017360 - .align 2, 0 -_08017334: .4byte gStatuses3 -_08017338: .4byte gBattleMoveDamage -_0801733C: .4byte gBattleMons -_08017340: .4byte gBattlescriptCurrInstr -_08017344: .4byte gUnknown_081D9202 -_08017348: - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r2, 0x10 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0xF] - ldr r1, _0801736C @ =gBattlescriptCurrInstr - ldr r0, _08017370 @ =gUnknown_081D921D -_08017360: - str r0, [r1] - ldr r0, [r1] -_08017364: - bl b_call_bc_move_exec - movs r0, 0x1 - b _0801738C - .align 2, 0 -_0801736C: .4byte gBattlescriptCurrInstr -_08017370: .4byte gUnknown_081D921D -_08017374: - ldrb r0, [r3] - mov r1, r9 - ldrb r1, [r1] - cmp r0, r1 - bcs _08017380 - b _08017272 -_08017380: - ldr r2, _0801739C @ =gHitMarker - ldr r0, [r2] - ldr r1, _080173A0 @ =0xfeffffdf - ands r0, r1 - str r0, [r2] - movs r0, 0 -_0801738C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801739C: .4byte gHitMarker -_080173A0: .4byte 0xfeffffdf - thumb_func_end sub_80170DC - - thumb_func_start sub_80173A4 -sub_80173A4: @ 80173A4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080173C0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080173F8 - b _080176AC - .align 2, 0 -_080173C0: .4byte gBattleTypeFlags -_080173C4: - ldr r0, _080173D4 @ =gUnknown_081D8C72 - bl b_call_bc_move_exec - ldr r1, _080173D8 @ =0x00016059 - add r1, r10 - movs r0, 0x2 - b _080173E8 - .align 2, 0 -_080173D4: .4byte gUnknown_081D8C72 -_080173D8: .4byte 0x00016059 -_080173DC: - ldr r0, _080173F0 @ =gUnknown_081D8C7B - bl b_call_bc_move_exec - ldr r1, _080173F4 @ =0x00016059 - add r1, r8 - movs r0, 0x5 -_080173E8: - strb r0, [r1] -_080173EA: - movs r0, 0x1 - b _080176AE - .align 2, 0 -_080173F0: .4byte gUnknown_081D8C7B -_080173F4: .4byte 0x00016059 -_080173F8: - ldr r0, _08017414 @ =0x02000000 - mov r9, r0 -_080173FC: - ldr r0, _08017418 @ =0x00016059 - add r0, r9 - ldrb r0, [r0] - cmp r0, 0x7 - bls _08017408 - b _080176A0 -_08017408: - lsls r0, 2 - ldr r1, _0801741C @ =_08017420 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08017414: .4byte 0x02000000 -_08017418: .4byte 0x00016059 -_0801741C: .4byte _08017420 - .align 2, 0 -_08017420: - .4byte _08017440 - .4byte _08017490 - .4byte _08017534 - .4byte _0801757C - .4byte _0801758E - .4byte _080175FC - .4byte _08017638 - .4byte _080176A0 -_08017440: - ldr r1, _08017508 @ =0x0001605a - add r1, r9 - movs r0, 0 - strb r0, [r1] - ldr r1, _0801750C @ =0x00016059 - add r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r5, 0 - ldr r0, _08017510 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bge _08017490 - ldr r6, _08017514 @ =gAbsentBankFlags -_0801745E: - ldrb r0, [r6] - ldr r2, _08017518 @ =gBitTable - lsls r1, r5, 2 - adds r1, r2 - ldr r4, [r1] - ands r0, r4 - cmp r0, 0 - beq _08017486 - lsls r0, r5, 24 - lsrs r0, 24 - movs r1, 0x6 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - bne _08017486 - ldrb r0, [r6] - bics r0, r4 - strb r0, [r6] -_08017486: - adds r5, 0x1 - ldr r0, _08017510 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0801745E -_08017490: - ldr r1, _0801751C @ =0x02000000 - mov r9, r1 - ldr r0, _08017520 @ =gBank1 - mov r12, r0 - ldr r1, _08017524 @ =gBankTarget - mov r8, r1 - mov r10, r9 - ldr r5, _08017508 @ =0x0001605a - add r5, r9 - ldr r7, _08017528 @ =gBattleMons - ldr r6, _0801752C @ =0x00016113 - add r6, r9 -_080174A8: - ldrb r0, [r5] - mov r1, r8 - strb r0, [r1] - mov r1, r12 - strb r0, [r1] - ldrb r3, [r5] - movs r0, 0x58 - muls r0, r3 - adds r0, r7 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _080174EA - ldrb r2, [r6] - ldr r4, _08017518 @ =gBitTable - ldr r1, _08017530 @ =gBattlePartyID - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _080174EA - ldr r0, _08017514 @ =gAbsentBankFlags - ldrb r1, [r0] - lsls r0, r3, 2 - adds r0, r4 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080174EA - b _080173C4 -_080174EA: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r1, _08017510 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _080174A8 - ldr r1, _0801750C @ =0x00016059 - add r1, r9 - movs r0, 0x3 - strb r0, [r1] - b _080176A0 - .align 2, 0 -_08017508: .4byte 0x0001605a -_0801750C: .4byte 0x00016059 -_08017510: .4byte gNoOfAllBanks -_08017514: .4byte gAbsentBankFlags -_08017518: .4byte gBitTable -_0801751C: .4byte 0x02000000 -_08017520: .4byte gBank1 -_08017524: .4byte gBankTarget -_08017528: .4byte gBattleMons -_0801752C: .4byte 0x00016113 -_08017530: .4byte gBattlePartyID -_08017534: - ldr r0, _0801755C @ =gBank1 - ldrb r0, [r0] - bl sub_8015740 - ldr r2, _08017560 @ =0x02000000 - ldr r0, _08017564 @ =0x0001605a - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _08017568 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _08017570 - ldr r0, _0801756C @ =0x00016059 - adds r1, r2, r0 - movs r0, 0x3 - b _0801769C - .align 2, 0 -_0801755C: .4byte gBank1 -_08017560: .4byte 0x02000000 -_08017564: .4byte 0x0001605a -_08017568: .4byte gNoOfAllBanks -_0801756C: .4byte 0x00016059 -_08017570: - ldr r0, _08017578 @ =0x00016059 - adds r1, r2, r0 - movs r0, 0x1 - b _0801769C - .align 2, 0 -_08017578: .4byte 0x00016059 -_0801757C: - ldr r1, _080175D8 @ =0x0001605a - add r1, r9 - movs r0, 0 - strb r0, [r1] - ldr r1, _080175DC @ =0x00016059 - add r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0801758E: - ldr r7, _080175E0 @ =gBank1 - ldr r6, _080175E4 @ =gBankTarget - ldr r1, _080175E8 @ =0x02000000 - mov r8, r1 - ldr r3, _080175D8 @ =0x0001605a - add r3, r8 - ldr r5, _080175EC @ =gBattleMons - ldr r4, _080175F0 @ =gBitTable -_0801759E: - ldrb r0, [r3] - strb r0, [r6] - strb r0, [r7] - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r0, r5 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _080175C4 - ldr r0, _080175F4 @ =gAbsentBankFlags - ldrb r1, [r0] - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080175C4 - b _080173DC -_080175C4: - adds r0, r2, 0x1 - strb r0, [r3] - ldr r1, _080175F8 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _0801759E - b _08017612 - .align 2, 0 -_080175D8: .4byte 0x0001605a -_080175DC: .4byte 0x00016059 -_080175E0: .4byte gBank1 -_080175E4: .4byte gBankTarget -_080175E8: .4byte 0x02000000 -_080175EC: .4byte gBattleMons -_080175F0: .4byte gBitTable -_080175F4: .4byte gAbsentBankFlags -_080175F8: .4byte gNoOfAllBanks -_080175FC: - ldr r0, _0801761C @ =0x0001605a - add r0, r9 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _08017620 @ =gNoOfAllBanks - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r0] - cmp r1, r0 - bne _08017628 -_08017612: - ldr r1, _08017624 @ =0x00016059 - add r1, r9 - movs r0, 0x6 - strb r0, [r1] - b _080176A0 - .align 2, 0 -_0801761C: .4byte 0x0001605a -_08017620: .4byte gNoOfAllBanks -_08017624: .4byte 0x00016059 -_08017628: - ldr r1, _08017634 @ =0x00016059 - add r1, r9 - movs r0, 0x4 - strb r0, [r1] - b _080176A0 - .align 2, 0 -_08017634: .4byte 0x00016059 -_08017638: - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08017652 - b _080173EA -_08017652: - str r0, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08017668 - b _080173EA -_08017668: - movs r0, 0x1 - movs r1, 0 - movs r2, 0x1 - bl sub_801A02C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0801767C - b _080173EA -_0801767C: - str r0, [sp] - movs r0, 0x6 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08017692 - b _080173EA -_08017692: - ldr r2, _080176C0 @ =0x02000000 - ldr r0, _080176C4 @ =0x00016059 - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 -_0801769C: - strb r0, [r1] - mov r9, r2 -_080176A0: - ldr r0, _080176C4 @ =0x00016059 - add r0, r9 - ldrb r0, [r0] - cmp r0, 0x7 - beq _080176AC - b _080173FC -_080176AC: - movs r0, 0 -_080176AE: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080176C0: .4byte 0x02000000 -_080176C4: .4byte 0x00016059 - thumb_func_end sub_80173A4 - - thumb_func_start b_clear_atk_up_if_hit_flag_unless_enraged -b_clear_atk_up_if_hit_flag_unless_enraged: @ 80176C8 - push {r4-r6,lr} - movs r3, 0 - ldr r0, _08017708 @ =gNoOfAllBanks - adds r5, r0, 0 - ldrb r0, [r5] - cmp r3, r0 - bge _08017700 - ldr r4, _0801770C @ =gChosenMovesByBanks - movs r6, 0x80 - lsls r6, 16 - ldr r2, _08017710 @ =gUnknown_02024AD0 -_080176DE: - ldr r1, [r2] - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _080176F4 - ldrh r0, [r4] - cmp r0, 0x63 - beq _080176F4 - ldr r0, _08017714 @ =0xff7fffff - ands r1, r0 - str r1, [r2] -_080176F4: - adds r4, 0x2 - adds r2, 0x58 - adds r3, 0x1 - ldrb r0, [r5] - cmp r3, r0 - blt _080176DE -_08017700: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08017708: .4byte gNoOfAllBanks -_0801770C: .4byte gChosenMovesByBanks -_08017710: .4byte gUnknown_02024AD0 -_08017714: .4byte 0xff7fffff - thumb_func_end b_clear_atk_up_if_hit_flag_unless_enraged - - thumb_func_start sub_8017718 -sub_8017718: @ 8017718 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - movs r0, 0 - mov r9, r0 - ldr r1, _08017734 @ =0x02016090 - mov r10, r1 - ldr r2, _08017738 @ =0xfffe9f70 - add r2, r10 - mov r8, r2 - b _08017746 - .align 2, 0 -_08017734: .4byte 0x02016090 -_08017738: .4byte 0xfffe9f70 -_0801773C: - mov r4, r9 - cmp r4, 0 - beq _08017746 - bl _08017FAC -_08017746: - ldr r0, _08017760 @ =0x000160e7 - add r0, r8 - ldrb r0, [r0] - cmp r0, 0xE - bls _08017754 - bl _08017F9E -_08017754: - lsls r0, 2 - ldr r1, _08017764 @ =_08017768 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08017760: .4byte 0x000160e7 -_08017764: .4byte _08017768 - .align 2, 0 -_08017768: - .4byte _080177A4 - .4byte _080177E4 - .4byte _08017920 - .4byte _080179D8 - .4byte _08017A50 - .4byte _08017AC8 - .4byte _08017B1C - .4byte _08017B98 - .4byte _08017C1C - .4byte _08017C60 - .4byte _08017D3C - .4byte _08017DC0 - .4byte _08017E5C - .4byte _08017F48 - .4byte _08017F9E -_080177A4: - ldr r1, _080177D0 @ =gBattleMons - ldr r3, _080177D4 @ =gBankAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - ldr r1, _080177D8 @ =0xfdffffff - ands r0, r1 - str r0, [r2] - ldr r0, _080177DC @ =gStatuses3 - ldrb r2, [r3] - lsls r2, 2 - adds r2, r0 - ldr r0, [r2] - ldr r1, _080177E0 @ =0xffffbfff - ands r0, r1 - str r0, [r2] - bl _08017F94 - .align 2, 0 -_080177D0: .4byte gBattleMons -_080177D4: .4byte gBankAttacker -_080177D8: .4byte 0xfdffffff -_080177DC: .4byte gStatuses3 -_080177E0: .4byte 0xffffbfff -_080177E4: - ldr r7, _0801784C @ =gBattleMons - ldr r4, _08017850 @ =gBankAttacker - ldrb r1, [r4] - movs r5, 0x58 - adds r0, r1, 0 - muls r0, r5 - adds r6, r7, 0 - adds r6, 0x4C - adds r0, r6 - ldr r0, [r0] - movs r2, 0x7 - mov r8, r2 - ands r0, r2 - cmp r0, 0 - bne _08017804 - b _08017D90 -_08017804: - adds r0, r1, 0 - bl sub_8025A44 - lsls r0, 24 - cmp r0, 0 - beq _08017864 - ldrb r0, [r4] - adds r2, r0, 0 - muls r2, r5 - adds r2, r6 - ldr r0, [r2] - movs r1, 0x8 - negs r1, r1 - ands r0, r1 - str r0, [r2] - ldrb r0, [r4] - adds r2, r0, 0 - muls r2, r5 - adds r0, r7, 0 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08017854 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _08017858 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - ldr r1, _0801785C @ =gBattlescriptCurrInstr - ldr r0, _08017860 @ =gUnknown_081D94FB - str r0, [r1] - movs r4, 0x2 - mov r9, r4 - b _08017D90 - .align 2, 0 -_0801784C: .4byte gBattleMons -_08017850: .4byte gBankAttacker -_08017854: .4byte 0xf7ffffff -_08017858: .4byte gBattleCommunication -_0801785C: .4byte gBattlescriptCurrInstr -_08017860: .4byte gUnknown_081D94FB -_08017864: - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r0, r1, r7 - adds r0, 0x20 - ldrb r0, [r0] - movs r3, 0x1 - cmp r0, 0x30 - bne _08017878 - movs r3, 0x2 -_08017878: - adds r2, r1, r6 - ldr r1, [r2] - adds r0, r1, 0 - mov r7, r8 - ands r0, r7 - cmp r0, r3 - bcs _08017890 - movs r0, 0x8 - negs r0, r0 - ands r1, r0 - str r1, [r2] - b _08017894 -_08017890: - subs r0, r1, r3 - str r0, [r2] -_08017894: - ldr r2, _080178D8 @ =gBattleMons - ldr r0, _080178DC @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r4, [r0] - movs r0, 0x7 - ands r4, r0 - cmp r4, 0 - beq _080178F0 - ldr r0, _080178E0 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAD - bne _080178B8 - b _08017D90 -_080178B8: - cmp r0, 0xD6 - bne _080178BE - b _08017D90 -_080178BE: - ldr r1, _080178E4 @ =gBattlescriptCurrInstr - ldr r0, _080178E8 @ =gUnknown_081D94EE - str r0, [r1] - ldr r2, _080178EC @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r0, 0x2 - mov r9, r0 - b _08017D90 - .align 2, 0 -_080178D8: .4byte gBattleMons -_080178DC: .4byte gBankAttacker -_080178E0: .4byte gCurrentMove -_080178E4: .4byte gBattlescriptCurrInstr -_080178E8: .4byte gUnknown_081D94EE -_080178EC: .4byte gHitMarker -_080178F0: - adds r2, 0x50 - adds r2, r1, r2 - ldr r0, [r2] - ldr r1, _08017910 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - bl b_movescr_stack_push_cursor - ldr r0, _08017914 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, _08017918 @ =gBattlescriptCurrInstr - ldr r0, _0801791C @ =gUnknown_081D94FB - str r0, [r1] - movs r1, 0x2 - b _08017D8E - .align 2, 0 -_08017910: .4byte 0xf7ffffff -_08017914: .4byte gBattleCommunication -_08017918: .4byte gBattlescriptCurrInstr -_0801791C: .4byte gUnknown_081D94FB -_08017920: - ldr r1, _0801797C @ =gBattleMons - ldr r7, _08017980 @ =gBankAttacker - ldrb r0, [r7] - movs r6, 0x58 - muls r0, r6 - adds r5, r1, 0 - adds r5, 0x4C - adds r0, r5 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0801793C - b _08017F94 -_0801793C: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _080179A8 - ldr r2, _08017984 @ =gBattleMoves - ldr r0, _08017988 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x7D - beq _08017998 - ldr r1, _0801798C @ =gBattlescriptCurrInstr - ldr r0, _08017990 @ =gUnknown_081D9545 - str r0, [r1] - ldr r2, _08017994 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - str r0, [r2] - b _080179C8 - .align 2, 0 -_0801797C: .4byte gBattleMons -_08017980: .4byte gBankAttacker -_08017984: .4byte gBattleMoves -_08017988: .4byte gCurrentMove -_0801798C: .4byte gBattlescriptCurrInstr -_08017990: .4byte gUnknown_081D9545 -_08017994: .4byte gHitMarker -_08017998: - ldr r2, _080179A0 @ =0x02000000 - ldr r7, _080179A4 @ =0x000160e7 - adds r1, r2, r7 - b _08017D96 - .align 2, 0 -_080179A0: .4byte 0x02000000 -_080179A4: .4byte 0x000160e7 -_080179A8: - ldrb r0, [r7] - adds r2, r0, 0 - muls r2, r6 - adds r2, r5 - ldr r0, [r2] - movs r1, 0x21 - negs r1, r1 - ands r0, r1 - str r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _080179CC @ =gBattlescriptCurrInstr - ldr r0, _080179D0 @ =gUnknown_081D9552 - str r0, [r1] - ldr r0, _080179D4 @ =gBattleCommunication - strb r4, [r0, 0x5] -_080179C8: - movs r0, 0x2 - b _08017E3C - .align 2, 0 -_080179CC: .4byte gBattlescriptCurrInstr -_080179D0: .4byte gUnknown_081D9552 -_080179D4: .4byte gBattleCommunication -_080179D8: - ldr r1, _08017A30 @ =gBattleMons - ldr r0, _08017A34 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x36 - beq _080179EE - b _08017D90 -_080179EE: - ldr r0, _08017A38 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x18] - lsls r0, 31 - cmp r0, 0 - bne _08017A02 - b _08017D90 -_08017A02: - adds r0, r2, 0 - bl CancelMultiTurnMoves - ldr r2, _08017A3C @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - ldr r1, _08017A40 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - ldr r1, _08017A44 @ =gBattlescriptCurrInstr - ldr r0, _08017A48 @ =gUnknown_081D9977 - str r0, [r1] - ldr r2, _08017A4C @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r2, 0x1 - mov r9, r2 - b _08017D90 - .align 2, 0 -_08017A30: .4byte gBattleMons -_08017A34: .4byte gBankAttacker -_08017A38: .4byte gDisableStructs -_08017A3C: .4byte gHitMarker -_08017A40: .4byte gBattleCommunication -_08017A44: .4byte gBattlescriptCurrInstr -_08017A48: .4byte gUnknown_081D9977 -_08017A4C: .4byte gBattleMoveFlags -_08017A50: - ldr r1, _08017AA4 @ =gBattleMons - ldr r3, _08017AA8 @ =gBankAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 15 - ands r0, r1 - cmp r0, 0 - beq _08017A9C - ldr r0, _08017AAC @ =0xffbfffff - ands r1, r0 - str r1, [r2] - ldr r2, _08017AB0 @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x19] - ldrb r0, [r3] - bl CancelMultiTurnMoves - ldr r1, _08017AB4 @ =gBattlescriptCurrInstr - ldr r0, _08017AB8 @ =gUnknown_081D7956 - str r0, [r1] - ldr r2, _08017ABC @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r7, 0x1 - mov r9, r7 -_08017A9C: - ldr r2, _08017AC0 @ =0x02000000 - ldr r0, _08017AC4 @ =0x000160e7 - adds r1, r2, r0 - b _08017D96 - .align 2, 0 -_08017AA4: .4byte gBattleMons -_08017AA8: .4byte gBankAttacker -_08017AAC: .4byte 0xffbfffff -_08017AB0: .4byte gDisableStructs -_08017AB4: .4byte gBattlescriptCurrInstr -_08017AB8: .4byte gUnknown_081D7956 -_08017ABC: .4byte gHitMarker -_08017AC0: .4byte 0x02000000 -_08017AC4: .4byte 0x000160e7 -_08017AC8: - ldr r1, _08017B08 @ =gBattleMons - ldr r3, _08017B0C @ =gBankAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08017AE2 - b _08017D90 -_08017AE2: - movs r0, 0x9 - negs r0, r0 - ands r1, r0 - str r1, [r2] - ldr r0, _08017B10 @ =gProtectStructs - ldrb r2, [r3] - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x2] - ldrb r0, [r3] - bl CancelMultiTurnMoves - ldr r1, _08017B14 @ =gBattlescriptCurrInstr - ldr r0, _08017B18 @ =gUnknown_081D9573 - b _08017D7E - .align 2, 0 -_08017B08: .4byte gBattleMons -_08017B0C: .4byte gBankAttacker -_08017B10: .4byte gProtectStructs -_08017B14: .4byte gBattlescriptCurrInstr -_08017B18: .4byte gUnknown_081D9573 -_08017B1C: - ldr r0, _08017B74 @ =gDisableStructs - ldr r3, _08017B78 @ =gBankAttacker - ldrb r2, [r3] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldr r0, _08017B7C @ =gCurrentMove - ldrh r1, [r1, 0x4] - ldrh r0, [r0] - cmp r1, r0 - beq _08017B36 - b _08017D90 -_08017B36: - cmp r1, 0 - bne _08017B3C - b _08017D90 -_08017B3C: - ldr r0, _08017B80 @ =gProtectStructs - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2, 0x1] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x1] - ldr r0, _08017B84 @ =0x02000000 - ldrb r1, [r3] - ldr r7, _08017B88 @ =0x00016003 - adds r0, r7 - strb r1, [r0] - ldrb r0, [r3] - bl CancelMultiTurnMoves - ldr r1, _08017B8C @ =gBattlescriptCurrInstr - ldr r0, _08017B90 @ =gUnknown_081D9139 - str r0, [r1] - ldr r2, _08017B94 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r0, 0x1 - mov r9, r0 - b _08017D90 - .align 2, 0 -_08017B74: .4byte gDisableStructs -_08017B78: .4byte gBankAttacker -_08017B7C: .4byte gCurrentMove -_08017B80: .4byte gProtectStructs -_08017B84: .4byte 0x02000000 -_08017B88: .4byte 0x00016003 -_08017B8C: .4byte gBattlescriptCurrInstr -_08017B90: .4byte gUnknown_081D9139 -_08017B94: .4byte gHitMarker -_08017B98: - ldr r0, _08017BF4 @ =gDisableStructs - ldr r4, _08017BF8 @ =gBankAttacker - ldrb r3, [r4] - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x13] - lsls r0, 28 - cmp r0, 0 - beq _08017BEC - ldr r2, _08017BFC @ =gBattleMoves - ldr r0, _08017C00 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08017BEC - ldr r0, _08017C04 @ =gProtectStructs - lsls r2, r3, 4 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - ldrb r0, [r4] - bl CancelMultiTurnMoves - ldr r1, _08017C08 @ =gBattlescriptCurrInstr - ldr r0, _08017C0C @ =gUnknown_081D938F - str r0, [r1] - ldr r2, _08017C10 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r7, 0x1 - mov r9, r7 -_08017BEC: - ldr r2, _08017C14 @ =0x02000000 - ldr r0, _08017C18 @ =0x000160e7 - adds r1, r2, r0 - b _08017D96 - .align 2, 0 -_08017BF4: .4byte gDisableStructs -_08017BF8: .4byte gBankAttacker -_08017BFC: .4byte gBattleMoves -_08017C00: .4byte gCurrentMove -_08017C04: .4byte gProtectStructs -_08017C08: .4byte gBattlescriptCurrInstr -_08017C0C: .4byte gUnknown_081D938F -_08017C10: .4byte gHitMarker -_08017C14: .4byte 0x02000000 -_08017C18: .4byte 0x000160e7 -_08017C1C: - ldr r4, _08017C4C @ =gBankAttacker - ldrb r0, [r4] - ldr r1, _08017C50 @ =gCurrentMove - ldrh r1, [r1] - bl sub_8015D5C - lsls r0, 24 - cmp r0, 0 - bne _08017C30 - b _08017D90 -_08017C30: - ldr r0, _08017C54 @ =gProtectStructs - ldrb r2, [r4] - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r4] - bl CancelMultiTurnMoves - ldr r1, _08017C58 @ =gBattlescriptCurrInstr - ldr r0, _08017C5C @ =gUnknown_081D9459 - b _08017D7E - .align 2, 0 -_08017C4C: .4byte gBankAttacker -_08017C50: .4byte gCurrentMove -_08017C54: .4byte gProtectStructs -_08017C58: .4byte gBattlescriptCurrInstr -_08017C5C: .4byte gUnknown_081D9459 -_08017C60: - ldr r7, _08017CAC @ =gBattleMons - ldr r5, _08017CB0 @ =gBankAttacker - ldrb r0, [r5] - movs r6, 0x58 - muls r0, r6 - adds r4, r7, 0 - adds r4, 0x50 - adds r2, r0, r4 - ldr r1, [r2] - movs r3, 0x7 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - bne _08017C7E - b _08017F94 -_08017C7E: - subs r0, r1, 0x1 - str r0, [r2] - ldrb r0, [r5] - muls r0, r6 - adds r0, r4 - ldr r0, [r0] - ands r0, r3 - cmp r0, 0 - beq _08017D24 - bl Random - movs r1, 0x1 - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - beq _08017CB8 - ldr r1, _08017CB4 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - bl b_movescr_stack_push_cursor - b _08017D02 - .align 2, 0 -_08017CAC: .4byte gBattleMons -_08017CB0: .4byte gBankAttacker -_08017CB4: .4byte gBattleCommunication -_08017CB8: - ldr r0, _08017D08 @ =gBattleCommunication - movs r4, 0x1 - strb r1, [r0, 0x5] - ldr r1, _08017D0C @ =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - ldrb r0, [r5] - adds r1, r0, 0 - muls r1, r6 - adds r1, r7 - movs r0, 0x28 - str r0, [sp] - str r2, [sp, 0x4] - ldrb r0, [r5] - str r0, [sp, 0x8] - ldrb r0, [r5] - str r0, [sp, 0xC] - adds r0, r1, 0 - movs r2, 0x1 - movs r3, 0 - bl CalculateBaseDamage - ldr r1, _08017D10 @ =gBattleMoveDamage - str r0, [r1] - ldr r0, _08017D14 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - orrs r0, r4 - strb r0, [r1, 0x1] - ldr r2, _08017D18 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] -_08017D02: - ldr r1, _08017D1C @ =gBattlescriptCurrInstr - ldr r0, _08017D20 @ =gUnknown_081D9595 - b _08017D2C - .align 2, 0 -_08017D08: .4byte gBattleCommunication -_08017D0C: .4byte gBankTarget -_08017D10: .4byte gBattleMoveDamage -_08017D14: .4byte gProtectStructs -_08017D18: .4byte gHitMarker -_08017D1C: .4byte gBattlescriptCurrInstr -_08017D20: .4byte gUnknown_081D9595 -_08017D24: - bl b_movescr_stack_push_cursor - ldr r1, _08017D34 @ =gBattlescriptCurrInstr - ldr r0, _08017D38 @ =gUnknown_081D95D4 -_08017D2C: - str r0, [r1] - movs r7, 0x1 - b _08017F8E - .align 2, 0 -_08017D34: .4byte gBattlescriptCurrInstr -_08017D38: .4byte gUnknown_081D95D4 -_08017D3C: - ldr r1, _08017DA0 @ =gBattleMons - ldr r4, _08017DA4 @ =gBankAttacker - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08017D90 - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - cmp r1, 0 - bne _08017D90 - ldr r0, _08017DA8 @ =gProtectStructs - ldrb r2, [r4] - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - bl CancelMultiTurnMoves - ldr r1, _08017DAC @ =gBattlescriptCurrInstr - ldr r0, _08017DB0 @ =gUnknown_081D9566 -_08017D7E: - str r0, [r1] - ldr r2, _08017DB4 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r1, 0x1 -_08017D8E: - mov r9, r1 -_08017D90: - ldr r2, _08017DB8 @ =0x02000000 - ldr r4, _08017DBC @ =0x000160e7 - adds r1, r2, r4 -_08017D96: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r8, r2 - b _08017F9E - .align 2, 0 -_08017DA0: .4byte gBattleMons -_08017DA4: .4byte gBankAttacker -_08017DA8: .4byte gProtectStructs -_08017DAC: .4byte gBattlescriptCurrInstr -_08017DB0: .4byte gUnknown_081D9566 -_08017DB4: .4byte gHitMarker -_08017DB8: .4byte 0x02000000 -_08017DBC: .4byte 0x000160e7 -_08017DC0: - ldr r1, _08017DFC @ =gBattleMons - ldr r4, _08017E00 @ =gBankAttacker - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0xF0 - lsls r0, 12 - ands r1, r0 - cmp r1, 0 - bne _08017DDC - b _08017F94 -_08017DDC: - lsrs r0, r1, 16 - bl CountTrailingZeroBits - ldr r1, _08017E04 @ =0x02000000 - ldr r7, _08017E08 @ =0x00016003 - adds r1, r7 - strb r0, [r1] - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08017E0C - bl b_movescr_stack_push_cursor - b _08017E34 - .align 2, 0 -_08017DFC: .4byte gBattleMons -_08017E00: .4byte gBankAttacker -_08017E04: .4byte 0x02000000 -_08017E08: .4byte 0x00016003 -_08017E0C: - ldr r0, _08017E44 @ =gUnknown_081D9608 - bl b_movescr_stack_push - ldr r2, _08017E48 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - ldr r0, _08017E4C @ =gProtectStructs - ldrb r2, [r4] - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2, 0x1] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r4] - bl CancelMultiTurnMoves -_08017E34: - ldr r1, _08017E50 @ =gBattlescriptCurrInstr - ldr r0, _08017E54 @ =gUnknown_081D95FB - str r0, [r1] - movs r0, 0x1 -_08017E3C: - mov r9, r0 - ldr r1, _08017E58 @ =0x02000000 - mov r8, r1 - b _08017F94 - .align 2, 0 -_08017E44: .4byte gUnknown_081D9608 -_08017E48: .4byte gHitMarker -_08017E4C: .4byte gProtectStructs -_08017E50: .4byte gBattlescriptCurrInstr -_08017E54: .4byte gUnknown_081D95FB -_08017E58: .4byte 0x02000000 -_08017E5C: - ldr r1, _08017E98 @ =gBattleMons - ldr r6, _08017E9C @ =gBankAttacker - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r1, 0x50 - adds r3, r0, r1 - ldr r2, [r3] - movs r4, 0xC0 - lsls r4, 2 - adds r0, r2, 0 - ands r0, r4 - cmp r0, 0 - bne _08017E7A - b _08017F94 -_08017E7A: - ldr r7, _08017EA0 @ =0xffffff00 - adds r0, r2, r7 - str r0, [r3] - ldrb r0, [r6] - muls r0, r5 - adds r1, r0, r1 - ldr r2, [r1] - adds r0, r2, 0 - ands r0, r4 - cmp r0, 0 - beq _08017EAC - ldr r1, _08017EA4 @ =gBattlescriptCurrInstr - ldr r0, _08017EA8 @ =gUnknown_081D90A7 - b _08017F38 - .align 2, 0 -_08017E98: .4byte gBattleMons -_08017E9C: .4byte gBankAttacker -_08017EA0: .4byte 0xffffff00 -_08017EA4: .4byte gBattlescriptCurrInstr -_08017EA8: .4byte gUnknown_081D90A7 -_08017EAC: - ldr r0, _08017F0C @ =0xffffefff - ands r2, r0 - str r2, [r1] - ldr r2, _08017F10 @ =gTakenDmg - ldrb r0, [r6] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0 - beq _08017F34 - ldr r1, _08017F14 @ =gCurrentMove - movs r0, 0x75 - strh r0, [r1] - ldrb r0, [r6] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - lsls r0, 1 - mov r1, r10 - str r0, [r1] - ldr r4, _08017F18 @ =gBankTarget - ldr r1, _08017F1C @ =gTakenDmgBanks - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4] - ldr r0, _08017F20 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _08017F24 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08017EFE - movs r0, 0x75 - movs r1, 0x1 - bl sub_801B5C0 - strb r0, [r4] -_08017EFE: - ldr r1, _08017F28 @ =gBattlescriptCurrInstr - ldr r0, _08017F2C @ =gUnknown_081D90B2 - str r0, [r1] - ldr r2, _08017F30 @ =0x02000000 - mov r8, r2 - b _08017F3A - .align 2, 0 -_08017F0C: .4byte 0xffffefff -_08017F10: .4byte gTakenDmg -_08017F14: .4byte gCurrentMove -_08017F18: .4byte gBankTarget -_08017F1C: .4byte gTakenDmgBanks -_08017F20: .4byte gAbsentBankFlags -_08017F24: .4byte gBitTable -_08017F28: .4byte gBattlescriptCurrInstr -_08017F2C: .4byte gUnknown_081D90B2 -_08017F30: .4byte 0x02000000 -_08017F34: - ldr r1, _08017F40 @ =gBattlescriptCurrInstr - ldr r0, _08017F44 @ =gUnknown_081D90F1 -_08017F38: - str r0, [r1] -_08017F3A: - movs r4, 0x1 - mov r9, r4 - b _08017F94 - .align 2, 0 -_08017F40: .4byte gBattlescriptCurrInstr -_08017F44: .4byte gUnknown_081D90F1 -_08017F48: - ldr r1, _08017FEC @ =gBattleMons - ldr r0, _08017FF0 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r4, r0, r1 - ldr r3, [r4] - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _08017F94 - ldr r2, _08017FF4 @ =gBattleMoves - ldr r0, _08017FF8 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x7D - bne _08017F8C - movs r0, 0x21 - negs r0, r0 - ands r3, r0 - str r3, [r4] - bl b_movescr_stack_push_cursor - ldr r1, _08017FFC @ =gBattlescriptCurrInstr - ldr r0, _08018000 @ =gUnknown_081D9552 - str r0, [r1] - ldr r1, _08018004 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_08017F8C: - movs r7, 0x2 -_08017F8E: - mov r9, r7 - ldr r0, _08018008 @ =0x02000000 - mov r8, r0 -_08017F94: - ldr r1, _0801800C @ =0x000160e7 - add r1, r8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08017F9E: - ldr r0, _0801800C @ =0x000160e7 - add r0, r8 - ldrb r0, [r0] - cmp r0, 0xE - beq _08017FAC - bl _0801773C -_08017FAC: - mov r1, r9 - cmp r1, 0x2 - bne _08017FD8 - ldr r4, _08018010 @ =gActiveBank - ldr r0, _08017FF0 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - ldr r1, _08018014 @ =gUnknown_02024ACC - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08017FD8: - mov r0, r9 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08017FEC: .4byte gBattleMons -_08017FF0: .4byte gBankAttacker -_08017FF4: .4byte gBattleMoves -_08017FF8: .4byte gCurrentMove -_08017FFC: .4byte gBattlescriptCurrInstr -_08018000: .4byte gUnknown_081D9552 -_08018004: .4byte gBattleCommunication -_08018008: .4byte 0x02000000 -_0801800C: .4byte 0x000160e7 -_08018010: .4byte gActiveBank -_08018014: .4byte gUnknown_02024ACC - thumb_func_end sub_8017718 - - thumb_func_start sub_8018018 -sub_8018018: @ 8018018 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - adds r3, r4, 0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - ldr r0, _08018044 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08018048 - movs r0, 0 - b _08018198 - .align 2, 0 -_08018044: .4byte gBattleTypeFlags -_08018048: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080180D4 - adds r0, r4, 0 - bl sub_803FC34 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - ldr r1, _080180CC @ =gEnemyParty - mov r8, r1 - cmp r0, 0 - bne _0801806E - ldr r2, _080180D0 @ =gPlayerParty - mov r8, r2 -_0801806E: - adds r0, r7, 0 - bl sub_803FBFC - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 1 - adds r5, r0, r6 - adds r0, r5, 0x3 - cmp r5, r0 - bge _080180BA - adds r7, r0, 0 -_08018084: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080180B4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _080180B4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _080180BA -_080180B4: - adds r5, 0x1 - cmp r5, r7 - blt _08018084 -_080180BA: - movs r1, 0 - lsls r0, r6, 1 - adds r0, r6 - adds r0, 0x3 - cmp r5, r0 - bne _080180C8 - movs r1, 0x1 -_080180C8: - adds r0, r1, 0 - b _08018198 - .align 2, 0 -_080180CC: .4byte gEnemyParty -_080180D0: .4byte gPlayerParty -_080180D4: - adds r0, r3, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08018100 - movs r0, 0x1 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x3 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _080180FC @ =gEnemyParty - mov r8, r2 - b _08018118 - .align 2, 0 -_080180FC: .4byte gEnemyParty -_08018100: - movs r0, 0 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x2 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080181A8 @ =gPlayerParty - mov r8, r0 -_08018118: - mov r1, r10 - cmp r1, 0x6 - bne _08018128 - ldr r1, _080181AC @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrb r0, [r0] - mov r10, r0 -_08018128: - mov r2, r9 - cmp r2, 0x6 - bne _08018138 - ldr r1, _080181AC @ =gBattlePartyID - lsls r0, r6, 1 - adds r0, r1 - ldrb r0, [r0] - mov r9, r0 -_08018138: - movs r5, 0 -_0801813A: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0801818A - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0801818A - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0801818A - cmp r5, r10 - beq _0801818A - cmp r5, r9 - beq _0801818A - ldr r1, _080181B0 @ =0x02000000 - ldr r2, _080181B4 @ =0x00016068 - adds r0, r7, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r5, r0 - beq _0801818A - adds r0, r6, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r5, r0 - bne _08018190 -_0801818A: - adds r5, 0x1 - cmp r5, 0x5 - ble _0801813A -_08018190: - movs r0, 0 - cmp r5, 0x6 - bne _08018198 - movs r0, 0x1 -_08018198: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080181A8: .4byte gPlayerParty -_080181AC: .4byte gBattlePartyID -_080181B0: .4byte 0x02000000 -_080181B4: .4byte 0x00016068 - thumb_func_end sub_8018018 - - thumb_func_start castform_switch -castform_switch: @ 80181B8 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r1, _08018228 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r4, r0, r1 - ldrh r1, [r4] - ldr r0, _0801822C @ =SPECIES_CASTFORM - cmp r1, r0 - bne _0801825C - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3B - bne _0801825C - ldrh r0, [r4, 0x28] - cmp r0, 0 - beq _0801825C - str r5, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801820A - str r5, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08018230 -_0801820A: - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0 - beq _08018230 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0 - beq _08018230 - strb r5, [r2] - strb r5, [r1] - movs r0, 0x1 - b _08018314 - .align 2, 0 -_08018228: .4byte gBattleMons -_0801822C: .4byte SPECIES_CASTFORM -_08018230: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0801825C - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08018260 -_0801825C: - movs r0, 0 - b _08018314 -_08018260: - ldr r1, _0801831C @ =gBattleWeather - ldrh r0, [r1] - movs r2, 0xE7 - ands r2, r0 - adds r4, r1, 0 - cmp r2, 0 - bne _0801828E - ldr r1, _08018320 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r1, r0, r1 - adds r3, r1, 0 - adds r3, 0x21 - ldrb r0, [r3] - cmp r0, 0 - beq _0801828E - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0 - beq _0801828E - strb r2, [r3] - strb r2, [r1] - movs r5, 0x1 -_0801828E: - ldrh r1, [r4] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _080182BA - ldr r1, _08018320 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r1, r0, r1 - adds r2, r1, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0xA - beq _080182BA - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0xA - beq _080182BA - movs r0, 0xA - strb r0, [r2] - strb r0, [r1] - movs r5, 0x2 -_080182BA: - ldrh r1, [r4] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080182E6 - ldr r1, _08018320 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r1, r0, r1 - adds r2, r1, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0xB - beq _080182E6 - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0xB - beq _080182E6 - movs r0, 0xB - strb r0, [r2] - strb r0, [r1] - movs r5, 0x3 -_080182E6: - ldrh r1, [r4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08018312 - ldr r1, _08018320 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r1, r0, r1 - adds r2, r1, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0xF - beq _08018312 - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0xF - beq _08018312 - movs r0, 0xF - strb r0, [r2] - strb r0, [r1] - movs r5, 0x4 -_08018312: - adds r0, r5, 0 -_08018314: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0801831C: .4byte gBattleWeather -_08018320: .4byte gBattleMons - thumb_func_end castform_switch - - thumb_func_start AbilityBattleEffects -AbilityBattleEffects: @ 8018324 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - ldr r4, [sp, 0x48] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0 - mov r9, r0 - ldr r5, _08018380 @ =gBankAttacker - ldr r1, _08018384 @ =gNoOfAllBanks - ldrb r0, [r5] - ldrb r1, [r1] - cmp r0, r1 - bcc _08018360 - mov r1, r10 - strb r1, [r5] -_08018360: - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08018390 - ldr r1, _08018388 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0801838C @ =gPlayerParty - b _080183A0 - .align 2, 0 -_08018380: .4byte gBankAttacker -_08018384: .4byte gNoOfAllBanks -_08018388: .4byte gBattlePartyID -_0801838C: .4byte gPlayerParty -_08018390: - ldr r1, _080183D0 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080183D4 @ =gEnemyParty -_080183A0: - adds r7, r1, r0 - ldr r5, _080183D8 @ =gBankTarget - ldr r1, _080183DC @ =gNoOfAllBanks - ldrb r0, [r5] - ldrb r1, [r1] - cmp r0, r1 - bcc _080183B2 - mov r2, r10 - strb r2, [r5] -_080183B2: - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080183E4 - ldr r1, _080183D0 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080183E0 @ =gPlayerParty - b _080183F4 - .align 2, 0 -_080183D0: .4byte gBattlePartyID -_080183D4: .4byte gEnemyParty -_080183D8: .4byte gBankTarget -_080183DC: .4byte gNoOfAllBanks -_080183E0: .4byte gPlayerParty -_080183E4: - ldr r1, _08018444 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08018448 @ =gEnemyParty -_080183F4: - adds r5, r1, r0 - adds r0, r7, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - adds r0, r7, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x10] - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x14] - ldr r0, _0801844C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08018436 - bl _08019F92 -_08018436: - mov r3, r8 - cmp r3, 0 - beq _08018454 - ldr r0, _08018450 @ =gLastUsedAbility - strb r3, [r0] - mov r8, r0 - b _0801846A - .align 2, 0 -_08018444: .4byte gBattlePartyID -_08018448: .4byte gEnemyParty -_0801844C: .4byte gBattleTypeFlags -_08018450: .4byte gLastUsedAbility -_08018454: - ldr r2, _08018474 @ =gLastUsedAbility - ldr r1, _08018478 @ =gBattleMons - movs r0, 0x58 - mov r5, r10 - muls r5, r0 - adds r0, r5, 0 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2] - mov r8, r2 -_0801846A: - cmp r4, 0 - beq _0801847C - adds r3, r4, 0 - b _08018480 - .align 2, 0 -_08018474: .4byte gLastUsedAbility -_08018478: .4byte gBattleMons -_0801847C: - ldr r0, _08018494 @ =gCurrentMove - ldrh r3, [r0] -_08018480: - ldr r1, _08018498 @ =0x02000000 - ldr r2, _0801849C @ =0x0001601c - adds r0, r1, r2 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - beq _080184A0 - movs r4, 0x3F - ands r4, r0 - b _080184AC - .align 2, 0 -_08018494: .4byte gCurrentMove -_08018498: .4byte 0x02000000 -_0801849C: .4byte 0x0001601c -_080184A0: - ldr r1, _080184C0 @ =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x2] -_080184AC: - ldr r5, [sp, 0x4] - cmp r5, 0x13 - bls _080184B6 - bl _08019F76 -_080184B6: - lsls r0, r5, 2 - ldr r1, _080184C4 @ =_080184C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080184C0: .4byte gBattleMoves -_080184C4: .4byte _080184C8 - .align 2, 0 -_080184C8: - .4byte _08018518 - .4byte _08018814 - .4byte _08018A40 - .4byte _08018AD8 - .4byte _08018CF0 - .4byte _08019448 - .4byte _080197B4 - .4byte _08019804 - .4byte _08019880 - .4byte _080198FC - .4byte _08019B1C - .4byte _08019940 - .4byte _08019B60 - .4byte _08019BBC - .4byte _08019C18 - .4byte _08019D18 - .4byte _08019D5C - .4byte _08019DB8 - .4byte _08019F44 - .4byte _08019CD4 -_08018518: - ldr r2, _0801854C @ =gBankAttacker - ldr r0, _08018550 @ =gNoOfAllBanks - ldrb r1, [r2] - adds r5, r0, 0 - ldrb r0, [r5] - cmp r1, r0 - bcc _0801852A - mov r1, r10 - strb r1, [r2] -_0801852A: - mov r2, r8 - ldrb r0, [r2] - cmp r0, 0x2D - bne _08018534 - b _080186B8 -_08018534: - cmp r0, 0x2D - bgt _08018564 - cmp r0, 0xD - bne _0801853E - b _080187DC -_0801853E: - cmp r0, 0xD - bgt _08018554 - cmp r0, 0x2 - bne _08018548 - b _08018680 -_08018548: - bl _08019F76 - .align 2, 0 -_0801854C: .4byte gBankAttacker -_08018550: .4byte gNoOfAllBanks -_08018554: - cmp r0, 0x16 - bne _0801855A - b _08018728 -_0801855A: - cmp r0, 0x24 - bne _08018560 - b _080187A0 -_08018560: - bl _08019F76 -_08018564: - cmp r0, 0x46 - bne _0801856A - b _080186F0 -_0801856A: - cmp r0, 0x46 - bgt _08018578 - cmp r0, 0x3B - bne _08018574 - b _0801875C -_08018574: - bl _08019F76 -_08018578: - cmp r0, 0x4D - bne _0801857E - b _080187DC -_0801857E: - cmp r0, 0xFF - beq _08018586 - bl _08019F76 -_08018586: - bl weather_get_current - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x3 - cmp r0, 0xA - bhi _0801864C - lsls r0, 2 - ldr r1, _080185A0 @ =_080185A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080185A0: .4byte _080185A4 - .align 2, 0 -_080185A4: - .4byte _080185D0 - .4byte _0801864C - .4byte _080185D0 - .4byte _0801864C - .4byte _0801864C - .4byte _080185F8 - .4byte _0801864C - .4byte _0801864C - .4byte _0801864C - .4byte _08018620 - .4byte _080185D0 -_080185D0: - ldr r2, _080185EC @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801864C - movs r0, 0x5 - strh r0, [r2] - ldr r0, _080185F0 @ =0x02000000 - ldr r3, _080185F4 @ =0x000160a4 - adds r2, r0, r3 - movs r1, 0xA - b _08018638 - .align 2, 0 -_080185EC: .4byte gBattleWeather -_080185F0: .4byte 0x02000000 -_080185F4: .4byte 0x000160a4 -_080185F8: - ldr r3, _08018614 @ =gBattleWeather - ldrh r1, [r3] - movs r2, 0x18 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0801864C - strh r2, [r3] - ldr r0, _08018618 @ =0x02000000 - ldr r3, _0801861C @ =0x000160a4 - adds r2, r0, r3 - movs r1, 0xC - b _08018638 - .align 2, 0 -_08018614: .4byte gBattleWeather -_08018618: .4byte 0x02000000 -_0801861C: .4byte 0x000160a4 -_08018620: - ldr r3, _08018668 @ =gBattleWeather - ldrh r1, [r3] - movs r2, 0x60 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0801864C - strh r2, [r3] - ldr r0, _0801866C @ =0x02000000 - ldr r3, _08018670 @ =0x000160a4 - adds r2, r0, r3 - movs r1, 0xB -_08018638: - strb r1, [r2] - ldr r5, _08018674 @ =0x00016003 - adds r0, r5 - mov r1, r10 - strb r1, [r0] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801864C: - mov r2, r9 - cmp r2, 0 - bne _08018656 - bl _08019F92 -_08018656: - bl weather_get_current - ldr r1, _08018678 @ =gBattleCommunication - strb r0, [r1, 0x5] - ldr r0, _0801867C @ =gUnknown_081D901D - bl b_push_move_exec - bl _08019F76 - .align 2, 0 -_08018668: .4byte gBattleWeather -_0801866C: .4byte 0x02000000 -_08018670: .4byte 0x000160a4 -_08018674: .4byte 0x00016003 -_08018678: .4byte gBattleCommunication -_0801867C: .4byte gUnknown_081D901D -_08018680: - ldr r2, _080186A8 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08018690 - bl _08019F76 -_08018690: - movs r0, 0x5 - strh r0, [r2] - ldr r0, _080186AC @ =gUnknown_081D9704 - bl b_push_move_exec - ldr r0, _080186B0 @ =0x02000000 - ldr r3, _080186B4 @ =0x00016003 - adds r0, r3 - mov r5, r10 - strb r5, [r0] - bl _08019F22 - .align 2, 0 -_080186A8: .4byte gBattleWeather -_080186AC: .4byte gUnknown_081D9704 -_080186B0: .4byte 0x02000000 -_080186B4: .4byte 0x00016003 -_080186B8: - ldr r2, _080186E0 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080186C8 - bl _08019F76 -_080186C8: - movs r0, 0x18 - strh r0, [r2] - ldr r0, _080186E4 @ =gUnknown_081D9744 - bl b_push_move_exec - ldr r0, _080186E8 @ =0x02000000 - ldr r1, _080186EC @ =0x00016003 - adds r0, r1 - mov r2, r10 - strb r2, [r0] - bl _08019F22 - .align 2, 0 -_080186E0: .4byte gBattleWeather -_080186E4: .4byte gUnknown_081D9744 -_080186E8: .4byte 0x02000000 -_080186EC: .4byte 0x00016003 -_080186F0: - ldr r2, _08018718 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08018700 - bl _08019F76 -_08018700: - movs r0, 0x60 - strh r0, [r2] - ldr r0, _0801871C @ =gUnknown_081D97FE - bl b_push_move_exec - ldr r0, _08018720 @ =0x02000000 - ldr r3, _08018724 @ =0x00016003 - adds r0, r3 - mov r5, r10 - strb r5, [r0] - bl _08019F22 - .align 2, 0 -_08018718: .4byte gBattleWeather -_0801871C: .4byte gUnknown_081D97FE -_08018720: .4byte 0x02000000 -_08018724: .4byte 0x00016003 -_08018728: - ldr r0, _08018754 @ =gSpecialStatuses - mov r1, r10 - lsls r2, r1, 2 - adds r1, r2, r1 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3] - lsls r0, 28 - cmp r0, 0 - bge _08018740 - bl _08019F76 -_08018740: - ldr r1, _08018758 @ =gStatuses3 - adds r1, r2, r1 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 12 - orrs r0, r2 - str r0, [r1] - ldrb r0, [r3] - movs r1, 0x8 - b _080187CA - .align 2, 0 -_08018754: .4byte gSpecialStatuses -_08018758: .4byte gStatuses3 -_0801875C: - mov r0, r10 - bl castform_switch - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r0, 0 - bne _08018770 - bl _08019F92 -_08018770: - ldr r0, _08018790 @ =gUnknown_081D977D - bl b_push_move_exec - ldr r0, _08018794 @ =0x02000000 - ldr r2, _08018798 @ =0x00016003 - adds r1, r0, r2 - mov r3, r10 - strb r3, [r1] - mov r1, r9 - subs r1, 0x1 - ldr r5, _0801879C @ =0x0001609b - adds r0, r5 - strb r1, [r0] - bl _08019F76 - .align 2, 0 -_08018790: .4byte gUnknown_081D977D -_08018794: .4byte 0x02000000 -_08018798: .4byte 0x00016003 -_0801879C: .4byte 0x0001609b -_080187A0: - ldr r0, _080187D4 @ =gSpecialStatuses - mov r1, r10 - lsls r2, r1, 2 - adds r1, r2, r1 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3] - lsls r0, 27 - cmp r0, 0 - bge _080187B8 - bl _08019F76 -_080187B8: - ldr r1, _080187D8 @ =gStatuses3 - adds r1, r2, r1 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 13 - orrs r0, r2 - str r0, [r1] - ldrb r0, [r3] - movs r1, 0x10 -_080187CA: - orrs r0, r1 - strb r0, [r3] - bl _08019F76 - .align 2, 0 -_080187D4: .4byte gSpecialStatuses -_080187D8: .4byte gStatuses3 -_080187DC: - movs r6, 0 - ldrb r5, [r5] - cmp r6, r5 - bcc _080187E8 - bl _08019F76 -_080187E8: - adds r0, r6, 0 - bl castform_switch - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r0, 0 - beq _080187FC - bl _08019E14 -_080187FC: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08018810 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - bcc _080187E8 - bl _08019F76 - .align 2, 0 -_08018810: .4byte gNoOfAllBanks -_08018814: - ldr r2, _08018844 @ =gBattleMons - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r4, r1, r2 - ldrh r0, [r4, 0x28] - cmp r0, 0 - bne _08018828 - bl _08019F76 -_08018828: - ldr r0, _08018848 @ =gBankAttacker - mov r3, r10 - strb r3, [r0] - mov r3, r8 - ldrb r5, [r3] - cmp r5, 0x2C - beq _0801885A - cmp r5, 0x2C - bgt _0801884C - cmp r5, 0x3 - bne _08018840 - b _080189B8 -_08018840: - bl _08019F76 - .align 2, 0 -_08018844: .4byte gBattleMons -_08018848: .4byte gBankAttacker -_0801884C: - cmp r5, 0x36 - bne _08018852 - b _08018A18 -_08018852: - cmp r5, 0x3D - beq _080188DC - bl _08019F76 -_0801885A: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08018876 - bl _08019F76 -_08018876: - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0801888E - bl _08019F76 -_0801888E: - ldr r0, _080188D0 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801889E - bl _08019F76 -_0801889E: - ldrh r0, [r4, 0x2C] - ldrh r1, [r4, 0x28] - cmp r0, r1 - bhi _080188AA - bl _08019F76 -_080188AA: - mov r2, r8 - strb r5, [r2] - ldr r0, _080188D4 @ =gUnknown_081D9730 - bl b_push_move_exec - ldr r1, _080188D8 @ =gBattleMoveDamage - ldrh r0, [r4, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _080188C4 - movs r0, 0x1 - str r0, [r1] -_080188C4: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - bl _08019F22 - .align 2, 0 -_080188D0: .4byte gBattleWeather -_080188D4: .4byte gUnknown_081D9730 -_080188D8: .4byte gBattleMoveDamage -_080188DC: - adds r0, r2, 0 - adds r0, 0x4C - adds r5, r1, r0 - ldrb r0, [r5] - cmp r0, 0 - bne _080188EC - bl _08019F76 -_080188EC: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08018906 - bl _08019F76 -_08018906: - ldr r0, [r5] - movs r1, 0x88 - ands r0, r1 - cmp r0, 0 - beq _08018918 - ldr r0, _08018990 @ =gBattleTextBuff1 - ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn - bl StringCopy -_08018918: - ldr r0, [r5] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0801892A - ldr r0, _08018990 @ =gBattleTextBuff1 - ldr r1, _08018998 @ =gStatusConditionString_SleepJpn - bl StringCopy -_0801892A: - ldr r0, [r5] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801893C - ldr r0, _08018990 @ =gBattleTextBuff1 - ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn - bl StringCopy -_0801893C: - ldr r0, [r5] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801894E - ldr r0, _08018990 @ =gBattleTextBuff1 - ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn - bl StringCopy -_0801894E: - ldr r0, [r5] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08018960 - ldr r0, _08018990 @ =gBattleTextBuff1 - ldr r1, _080189A4 @ =gStatusConditionString_IceJpn - bl StringCopy -_08018960: - str r4, [r5] - ldr r0, _080189A8 @ =0x02000000 - ldr r4, _080189AC @ =gActiveBank - mov r3, r10 - strb r3, [r4] - ldr r1, _080189B0 @ =0x00016003 - adds r0, r1 - strb r3, [r0] - ldr r0, _080189B4 @ =gUnknown_081D9758 - bl b_push_move_exec - str r5, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - bl _08019F22 - .align 2, 0 -_08018990: .4byte gBattleTextBuff1 -_08018994: .4byte gStatusConditionString_PoisonJpn -_08018998: .4byte gStatusConditionString_SleepJpn -_0801899C: .4byte gStatusConditionString_ParalysisJpn -_080189A0: .4byte gStatusConditionString_BurnJpn -_080189A4: .4byte gStatusConditionString_IceJpn -_080189A8: .4byte 0x02000000 -_080189AC: .4byte gActiveBank -_080189B0: .4byte 0x00016003 -_080189B4: .4byte gUnknown_081D9758 -_080189B8: - ldrb r2, [r4, 0x1B] - movs r0, 0x1B - ldrsb r0, [r4, r0] - cmp r0, 0xB - ble _080189C6 - bl _08019F76 -_080189C6: - ldr r0, _08018A04 @ =gDisableStructs - mov r3, r10 - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x16] - cmp r0, 0x2 - bne _080189DC - bl _08019F76 -_080189DC: - adds r0, r2, 0x1 - movs r2, 0 - strb r0, [r4, 0x1B] - ldr r5, _08018A08 @ =0x000160a4 - adds r1, r7, r5 - movs r0, 0x11 - strb r0, [r1] - ldr r1, _08018A0C @ =0x000160a5 - adds r0, r7, r1 - strb r2, [r0] - ldr r0, _08018A10 @ =gUnknown_081D9718 - bl b_push_move_exec - ldr r2, _08018A14 @ =0x00016003 - adds r0, r7, r2 - mov r3, r10 - strb r3, [r0] - bl _08019F22 - .align 2, 0 -_08018A04: .4byte gDisableStructs -_08018A08: .4byte 0x000160a4 -_08018A0C: .4byte 0x000160a5 -_08018A10: .4byte gUnknown_081D9718 -_08018A14: .4byte 0x00016003 -_08018A18: - ldr r2, _08018A3C @ =gDisableStructs - ldrb r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r3, [r1, 0x18] - lsls r0, r3, 31 - lsrs r0, 31 - movs r2, 0x1 - eors r2, r0 - movs r0, 0x2 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x18] - bl _08019F76 - .align 2, 0 -_08018A3C: .4byte gDisableStructs -_08018A40: - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0x2B - beq _08018A4C - bl _08019F76 -_08018A4C: - movs r4, 0 - ldr r0, _08018ABC @ =gUnknown_081FA724 - ldrh r2, [r0] - ldr r5, _08018AC0 @ =0x0000ffff - adds r1, r0, 0 - cmp r2, r5 - bne _08018A5E - bl _08019F76 -_08018A5E: - cmp r2, r3 - beq _08018A76 - adds r2, r1, 0 -_08018A64: - adds r2, 0x2 - adds r4, 0x1 - ldrh r0, [r2] - cmp r0, r5 - bne _08018A72 - bl _08019F76 -_08018A72: - cmp r0, r3 - bne _08018A64 -_08018A76: - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _08018AC0 @ =0x0000ffff - cmp r1, r0 - bne _08018A86 - bl _08019F76 -_08018A86: - ldr r1, _08018AC4 @ =gBattleMons - ldr r0, _08018AC8 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _08018AAC - ldr r0, _08018ACC @ =gHitMarker - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 4 - orrs r1, r2 - str r1, [r0] -_08018AAC: - ldr r1, _08018AD0 @ =gBattlescriptCurrInstr - ldr r0, _08018AD4 @ =gUnknown_081D98F3 - str r0, [r1] - movs r0, 0x1 - mov r9, r0 - bl _08019F7C - .align 2, 0 -_08018ABC: .4byte gUnknown_081FA724 -_08018AC0: .4byte 0x0000ffff -_08018AC4: .4byte gBattleMons -_08018AC8: .4byte gBankAttacker -_08018ACC: .4byte gHitMarker -_08018AD0: .4byte gBattlescriptCurrInstr -_08018AD4: .4byte gUnknown_081D98F3 -_08018AD8: - cmp r3, 0 - bne _08018AE0 - bl _08019F76 -_08018AE0: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0xB - beq _08018B50 - cmp r0, 0xB - bgt _08018AF2 - cmp r0, 0xA - beq _08018AF8 - b _08018C6A -_08018AF2: - cmp r0, 0x12 - beq _08018BA8 - b _08018C6A -_08018AF8: - cmp r4, 0xD - beq _08018AFE - b _08018C6A -_08018AFE: - ldr r0, _08018B28 @ =gBattleMoves - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _08018B10 - b _08018C6A -_08018B10: - ldr r1, _08018B2C @ =gProtectStructs - ldr r0, _08018B30 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _08018B3C - ldr r1, _08018B34 @ =gBattlescriptCurrInstr - ldr r0, _08018B38 @ =gUnknown_081D9843 - b _08018B40 - .align 2, 0 -_08018B28: .4byte gBattleMoves -_08018B2C: .4byte gProtectStructs -_08018B30: .4byte gBankAttacker -_08018B34: .4byte gBattlescriptCurrInstr -_08018B38: .4byte gUnknown_081D9843 -_08018B3C: - ldr r1, _08018B48 @ =gBattlescriptCurrInstr - ldr r0, _08018B4C @ =gUnknown_081D9842 -_08018B40: - str r0, [r1] - movs r2, 0x1 - b _08018C68 - .align 2, 0 -_08018B48: .4byte gBattlescriptCurrInstr -_08018B4C: .4byte gUnknown_081D9842 -_08018B50: - cmp r4, 0xB - beq _08018B56 - b _08018C6A -_08018B56: - ldr r0, _08018B80 @ =gBattleMoves - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _08018B68 - b _08018C6A -_08018B68: - ldr r1, _08018B84 @ =gProtectStructs - ldr r0, _08018B88 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _08018B94 - ldr r1, _08018B8C @ =gBattlescriptCurrInstr - ldr r0, _08018B90 @ =gUnknown_081D9843 - b _08018B98 - .align 2, 0 -_08018B80: .4byte gBattleMoves -_08018B84: .4byte gProtectStructs -_08018B88: .4byte gBankAttacker -_08018B8C: .4byte gBattlescriptCurrInstr -_08018B90: .4byte gUnknown_081D9843 -_08018B94: - ldr r1, _08018BA0 @ =gBattlescriptCurrInstr - ldr r0, _08018BA4 @ =gUnknown_081D9842 -_08018B98: - str r0, [r1] - movs r3, 0x1 - mov r9, r3 - b _08018C6A - .align 2, 0 -_08018BA0: .4byte gBattlescriptCurrInstr -_08018BA4: .4byte gUnknown_081D9842 -_08018BA8: - cmp r4, 0xA - bne _08018C6A - ldr r1, _08018BF4 @ =gBattleMons - movs r0, 0x58 - mov r5, r10 - muls r5, r0 - adds r0, r5, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08018C6A - ldr r2, _08018BF8 @ =0x02017100 - mov r0, r10 - lsls r1, r0, 2 - adds r0, r1, r2 - ldr r3, [r0] - movs r4, 0x1 - ands r3, r4 - adds r5, r1, 0 - cmp r3, 0 - bne _08018C30 - ldr r0, _08018BFC @ =gBattleCommunication - strb r3, [r0, 0x5] - ldr r1, _08018C00 @ =gProtectStructs - ldr r0, _08018C04 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _08018C10 - ldr r1, _08018C08 @ =gBattlescriptCurrInstr - ldr r0, _08018C0C @ =gUnknown_081D987C - b _08018C14 - .align 2, 0 -_08018BF4: .4byte gBattleMons -_08018BF8: .4byte 0x02017100 -_08018BFC: .4byte gBattleCommunication -_08018C00: .4byte gProtectStructs -_08018C04: .4byte gBankAttacker -_08018C08: .4byte gBattlescriptCurrInstr -_08018C0C: .4byte gUnknown_081D987C -_08018C10: - ldr r1, _08018C28 @ =gBattlescriptCurrInstr - ldr r0, _08018C2C @ =gUnknown_081D987B -_08018C14: - str r0, [r1] - adds r0, r5, r2 - ldr r1, [r0] - movs r2, 0x1 - orrs r1, r2 - str r1, [r0] - movs r1, 0x2 - mov r9, r1 - b _08018C6A - .align 2, 0 -_08018C28: .4byte gBattlescriptCurrInstr -_08018C2C: .4byte gUnknown_081D987B -_08018C30: - ldr r0, _08018C4C @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, _08018C50 @ =gProtectStructs - ldr r0, _08018C54 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _08018C60 - ldr r1, _08018C58 @ =gBattlescriptCurrInstr - ldr r0, _08018C5C @ =gUnknown_081D987C - b _08018C64 - .align 2, 0 -_08018C4C: .4byte gBattleCommunication -_08018C50: .4byte gProtectStructs -_08018C54: .4byte gBankAttacker -_08018C58: .4byte gBattlescriptCurrInstr -_08018C5C: .4byte gUnknown_081D987C -_08018C60: - ldr r1, _08018CA4 @ =gBattlescriptCurrInstr - ldr r0, _08018CA8 @ =gUnknown_081D987B -_08018C64: - str r0, [r1] - movs r2, 0x2 -_08018C68: - mov r9, r2 -_08018C6A: - mov r3, r9 - cmp r3, 0x1 - beq _08018C74 - bl _08019F76 -_08018C74: - ldr r1, _08018CAC @ =gBattleMons - movs r0, 0x58 - mov r5, r10 - muls r5, r0 - adds r0, r5, 0 - adds r1, r0, r1 - ldrh r0, [r1, 0x2C] - ldrh r2, [r1, 0x28] - cmp r0, r2 - bne _08018CD0 - ldr r1, _08018CB0 @ =gProtectStructs - ldr r0, _08018CB4 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _08018CBC - ldr r1, _08018CA4 @ =gBattlescriptCurrInstr - ldr r0, _08018CB8 @ =gUnknown_081D9866 - str r0, [r1] - bl _08019F76 - .align 2, 0 -_08018CA4: .4byte gBattlescriptCurrInstr -_08018CA8: .4byte gUnknown_081D987B -_08018CAC: .4byte gBattleMons -_08018CB0: .4byte gProtectStructs -_08018CB4: .4byte gBankAttacker -_08018CB8: .4byte gUnknown_081D9866 -_08018CBC: - ldr r1, _08018CC8 @ =gBattlescriptCurrInstr - ldr r0, _08018CCC @ =gUnknown_081D9865 - str r0, [r1] - bl _08019F76 - .align 2, 0 -_08018CC8: .4byte gBattlescriptCurrInstr -_08018CCC: .4byte gUnknown_081D9865 -_08018CD0: - ldr r2, _08018CEC @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 2 - str r0, [r2] - cmp r0, 0 - bne _08018CE0 - mov r3, r9 - str r3, [r2] -_08018CE0: - ldr r0, [r2] - negs r0, r0 - str r0, [r2] - bl _08019F76 - .align 2, 0 -_08018CEC: .4byte gBattleMoveDamage -_08018CF0: - mov r5, r8 - ldrb r0, [r5] - subs r0, 0x9 - cmp r0, 0x2F - bls _08018CFE - bl _08019F76 -_08018CFE: - lsls r0, 2 - ldr r1, _08018D08 @ =_08018D0C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08018D08: .4byte _08018D0C - .align 2, 0 -_08018D0C: - .4byte _08019128 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08018DCC - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08018E94 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08018F54 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _0801904C - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019204 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _08019F76 - .4byte _080192E0 -_08018DCC: - ldr r0, _08018E74 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08018DDC - bl _08019F76 -_08018DDC: - cmp r3, 0xA5 - bne _08018DE4 - bl _08019F76 -_08018DE4: - ldr r0, _08018E78 @ =gBattleMoves - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _08018DF8 - bl _08019F76 -_08018DF8: - ldr r2, _08018E7C @ =gSpecialStatuses - ldr r0, _08018E80 @ =gBankTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08018E20 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08018E20 - bl _08019F76 -_08018E20: - ldr r1, _08018E84 @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r1, r0, r1 - adds r3, r1, 0 - adds r3, 0x21 - ldrb r0, [r3] - cmp r0, r4 - bne _08018E3A - bl _08019F76 -_08018E3A: - adds r2, r1, 0 - adds r2, 0x22 - ldrb r0, [r2] - cmp r0, r4 - bne _08018E48 - bl _08019F76 -_08018E48: - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _08018E52 - bl _08019F76 -_08018E52: - strb r4, [r3] - strb r4, [r2] - ldr r1, _08018E88 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - bl b_movescr_stack_push_cursor - ldr r1, _08018E8C @ =gBattlescriptCurrInstr - ldr r0, _08018E90 @ =gUnknown_081D9921 - str r0, [r1] - bl _08019F22 - .align 2, 0 -_08018E74: .4byte gBattleMoveFlags -_08018E78: .4byte gBattleMoves -_08018E7C: .4byte gSpecialStatuses -_08018E80: .4byte gBankTarget -_08018E84: .4byte gBattleMons -_08018E88: .4byte gBattleTextBuff1 -_08018E8C: .4byte gBattlescriptCurrInstr -_08018E90: .4byte gUnknown_081D9921 -_08018E94: - ldr r0, _08018F2C @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08018EA4 - bl _08019F76 -_08018EA4: - ldr r1, _08018F30 @ =gBattleMons - ldr r0, _08018F34 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r4, r0, r1 - ldrh r0, [r4, 0x28] - cmp r0, 0 - bne _08018EBA - bl _08019F76 -_08018EBA: - ldr r0, _08018F38 @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _08018ECC - bl _08019F76 -_08018ECC: - ldr r2, _08018F3C @ =gSpecialStatuses - ldr r0, _08018F40 @ =gBankTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08018EF4 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08018EF4 - bl _08019F76 -_08018EF4: - ldr r1, _08018F44 @ =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08018F0E - bl _08019F76 -_08018F0E: - ldr r1, _08018F48 @ =gBattleMoveDamage - ldrh r0, [r4, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08018F1C - str r2, [r1] -_08018F1C: - bl b_movescr_stack_push_cursor - ldr r1, _08018F4C @ =gBattlescriptCurrInstr - ldr r0, _08018F50 @ =gUnknown_081D9928 - str r0, [r1] - bl _08019F22 - .align 2, 0 -_08018F2C: .4byte gBattleMoveFlags -_08018F30: .4byte gBattleMons -_08018F34: .4byte gBankAttacker -_08018F38: .4byte gProtectStructs -_08018F3C: .4byte gSpecialStatuses -_08018F40: .4byte gBankTarget -_08018F44: .4byte gBattleMoves -_08018F48: .4byte gBattleMoveDamage -_08018F4C: .4byte gBattlescriptCurrInstr -_08018F50: .4byte gUnknown_081D9928 -_08018F54: - ldr r0, _08019020 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08018F64 - bl _08019F76 -_08018F64: - ldr r1, _08019024 @ =gBattleMons - ldr r0, _08019028 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08018F7A - bl _08019F76 -_08018F7A: - ldr r0, _0801902C @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _08018F8C - bl _08019F76 -_08018F8C: - ldr r2, _08019030 @ =gSpecialStatuses - ldr r0, _08019034 @ =gBankTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08018FB4 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08018FB4 - bl _08019F76 -_08018FB4: - ldr r1, _08019038 @ =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08018FCC - bl _08019F76 -_08018FCC: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _08018FE4 - bl _08019F76 -_08018FE4: - ldr r5, _0801903C @ =gBattleCommunication - movs r4, 0x3 -_08018FE8: - bl Random - ands r0, r4 - strb r0, [r5, 0x3] - cmp r0, 0 - beq _08018FE8 - ldr r1, _0801903C @ =gBattleCommunication - ldrb r0, [r1, 0x3] - cmp r0, 0x3 - bne _08019000 - adds r0, 0x2 - strb r0, [r1, 0x3] -_08019000: - ldrb r0, [r1, 0x3] - adds r0, 0x40 - strb r0, [r1, 0x3] - bl b_movescr_stack_push_cursor - ldr r1, _08019040 @ =gBattlescriptCurrInstr - ldr r0, _08019044 @ =gUnknown_081D9950 - str r0, [r1] - ldr r2, _08019048 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r2] - bl _08019F22 - .align 2, 0 -_08019020: .4byte gBattleMoveFlags -_08019024: .4byte gBattleMons -_08019028: .4byte gBankAttacker -_0801902C: .4byte gProtectStructs -_08019030: .4byte gSpecialStatuses -_08019034: .4byte gBankTarget -_08019038: .4byte gBattleMoves -_0801903C: .4byte gBattleCommunication -_08019040: .4byte gBattlescriptCurrInstr -_08019044: .4byte gUnknown_081D9950 -_08019048: .4byte gHitMarker -_0801904C: - ldr r0, _080190FC @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801905C - bl _08019F76 -_0801905C: - ldr r1, _08019100 @ =gBattleMons - ldr r0, _08019104 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08019072 - bl _08019F76 -_08019072: - ldr r0, _08019108 @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _08019084 - bl _08019F76 -_08019084: - ldr r2, _0801910C @ =gSpecialStatuses - ldr r0, _08019110 @ =gBankTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _080190AC - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _080190AC - bl _08019F76 -_080190AC: - ldr r1, _08019114 @ =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080190C4 - bl _08019F76 -_080190C4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _080190DC - bl _08019F76 -_080190DC: - ldr r1, _08019118 @ =gBattleCommunication - movs r0, 0x42 - strb r0, [r1, 0x3] - bl b_movescr_stack_push_cursor - ldr r1, _0801911C @ =gBattlescriptCurrInstr - ldr r0, _08019120 @ =gUnknown_081D9950 - str r0, [r1] - ldr r2, _08019124 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r2] - bl _08019F22 - .align 2, 0 -_080190FC: .4byte gBattleMoveFlags -_08019100: .4byte gBattleMons -_08019104: .4byte gBankAttacker -_08019108: .4byte gProtectStructs -_0801910C: .4byte gSpecialStatuses -_08019110: .4byte gBankTarget -_08019114: .4byte gBattleMoves -_08019118: .4byte gBattleCommunication -_0801911C: .4byte gBattlescriptCurrInstr -_08019120: .4byte gUnknown_081D9950 -_08019124: .4byte gHitMarker -_08019128: - ldr r0, _080191D8 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08019138 - bl _08019F76 -_08019138: - ldr r1, _080191DC @ =gBattleMons - ldr r0, _080191E0 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801914E - bl _08019F76 -_0801914E: - ldr r0, _080191E4 @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _08019160 - bl _08019F76 -_08019160: - ldr r2, _080191E8 @ =gSpecialStatuses - ldr r0, _080191EC @ =gBankTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08019188 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08019188 - bl _08019F76 -_08019188: - ldr r1, _080191F0 @ =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080191A0 - bl _08019F76 -_080191A0: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _080191B8 - bl _08019F76 -_080191B8: - ldr r1, _080191F4 @ =gBattleCommunication - movs r0, 0x45 - strb r0, [r1, 0x3] - bl b_movescr_stack_push_cursor - ldr r1, _080191F8 @ =gBattlescriptCurrInstr - ldr r0, _080191FC @ =gUnknown_081D9950 - str r0, [r1] - ldr r2, _08019200 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r2] - bl _08019F22 - .align 2, 0 -_080191D8: .4byte gBattleMoveFlags -_080191DC: .4byte gBattleMons -_080191E0: .4byte gBankAttacker -_080191E4: .4byte gProtectStructs -_080191E8: .4byte gSpecialStatuses -_080191EC: .4byte gBankTarget -_080191F0: .4byte gBattleMoves -_080191F4: .4byte gBattleCommunication -_080191F8: .4byte gBattlescriptCurrInstr -_080191FC: .4byte gUnknown_081D9950 -_08019200: .4byte gHitMarker -_08019204: - ldr r0, _080192B4 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08019214 - bl _08019F76 -_08019214: - ldr r1, _080192B8 @ =gBattleMons - ldr r0, _080192BC @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801922A - bl _08019F76 -_0801922A: - ldr r0, _080192C0 @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _0801923C - bl _08019F76 -_0801923C: - ldr r1, _080192C4 @ =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08019254 - bl _08019F76 -_08019254: - ldr r2, _080192C8 @ =gSpecialStatuses - ldr r0, _080192CC @ =gBankTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801927C - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801927C - bl _08019F76 -_0801927C: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _08019294 - bl _08019F76 -_08019294: - ldr r1, _080192D0 @ =gBattleCommunication - movs r0, 0x43 - strb r0, [r1, 0x3] - bl b_movescr_stack_push_cursor - ldr r1, _080192D4 @ =gBattlescriptCurrInstr - ldr r0, _080192D8 @ =gUnknown_081D9950 - str r0, [r1] - ldr r2, _080192DC @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r2] - bl _08019F22 - .align 2, 0 -_080192B4: .4byte gBattleMoveFlags -_080192B8: .4byte gBattleMons -_080192BC: .4byte gBankAttacker -_080192C0: .4byte gProtectStructs -_080192C4: .4byte gBattleMoves -_080192C8: .4byte gSpecialStatuses -_080192CC: .4byte gBankTarget -_080192D0: .4byte gBattleCommunication -_080192D4: .4byte gBattlescriptCurrInstr -_080192D8: .4byte gUnknown_081D9950 -_080192DC: .4byte gHitMarker -_080192E0: - ldr r0, _08019420 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _080192F0 - bl _08019F76 -_080192F0: - ldr r5, _08019424 @ =gBattleMons - ldr r7, _08019428 @ =gBankAttacker - ldrb r1, [r7] - movs r6, 0x58 - adds r0, r1, 0 - muls r0, r6 - adds r0, r5 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08019308 - bl _08019F76 -_08019308: - ldr r0, _0801942C @ =gProtectStructs - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _0801931A - bl _08019F76 -_0801931A: - ldr r1, _08019430 @ =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08019332 - bl _08019F76 -_08019332: - ldr r3, _08019434 @ =gSpecialStatuses - ldr r0, _08019438 @ =gBankTarget - mov r8, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r2, r0, 2 - adds r0, r3, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801935C - adds r0, r3, 0 - adds r0, 0xC - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801935C - bl _08019F76 -_0801935C: - adds r0, r1, 0 - muls r0, r6 - adds r0, r5 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801936C - bl _08019F76 -_0801936C: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _08019384 - bl _08019F76 -_08019384: - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0xC - bne _08019396 - bl _08019F76 -_08019396: - ldr r0, [sp, 0x8] - ldr r1, [sp, 0x10] - bl GetGenderFromSpeciesAndPersonality - adds r4, r0, 0 - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x14] - bl GetGenderFromSpeciesAndPersonality - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080193B4 - bl _08019F76 -_080193B4: - ldrb r0, [r7] - muls r0, r6 - adds r4, r5, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0xF0 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _080193CE - bl _08019F76 -_080193CE: - ldr r0, [sp, 0x8] - ldr r1, [sp, 0x10] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080193E2 - bl _08019F76 -_080193E2: - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x14] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080193F6 - bl _08019F76 -_080193F6: - ldrb r0, [r7] - adds r2, r0, 0 - muls r2, r6 - adds r2, r4 - ldr r1, _0801943C @ =gBitTable - mov r3, r8 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 16 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _08019440 @ =gBattlescriptCurrInstr - ldr r0, _08019444 @ =gUnknown_081D9943 - str r0, [r1] - bl _08019F22 - .align 2, 0 -_08019420: .4byte gBattleMoveFlags -_08019424: .4byte gBattleMons -_08019428: .4byte gBankAttacker -_0801942C: .4byte gProtectStructs -_08019430: .4byte gBattleMoves -_08019434: .4byte gSpecialStatuses -_08019438: .4byte gBankTarget -_0801943C: .4byte gBitTable -_08019440: .4byte gBattlescriptCurrInstr -_08019444: .4byte gUnknown_081D9943 -_08019448: - movs r5, 0 - mov r10, r5 - ldr r0, _0801947C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r10, r0 - bcc _08019458 - bl _08019F76 -_08019458: - ldr r1, _08019480 @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - subs r0, 0x7 - adds r2, r1, 0 - cmp r0, 0x41 - bls _08019472 - b _080196D6 -_08019472: - lsls r0, 2 - ldr r1, _08019484 @ =_08019488 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801947C: .4byte gNoOfAllBanks -_08019480: .4byte gBattleMons -_08019484: .4byte _08019488 - .align 2, 0 -_08019488: - .4byte _080195EC - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196B0 - .4byte _080196D6 - .4byte _080196D6 - .4byte _08019614 - .4byte _080196D6 - .4byte _08019590 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080195BC - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _08019680 - .4byte _08019650 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _080196D6 - .4byte _08019614 -_08019590: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r3, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - ldr r1, _080195B0 @ =0x00000f88 - ands r0, r1 - cmp r0, 0 - bne _080195AA - b _080196D6 -_080195AA: - ldr r0, _080195B4 @ =gBattleTextBuff1 - ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn - b _0801969C - .align 2, 0 -_080195B0: .4byte 0x00000f88 -_080195B4: .4byte gBattleTextBuff1 -_080195B8: .4byte gStatusConditionString_PoisonJpn -_080195BC: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _080195D6 - b _080196D6 -_080195D6: - ldr r0, _080195E4 @ =gBattleTextBuff1 - ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn - bl StringCopy - movs r2, 0x2 - mov r9, r2 - b _080196DC - .align 2, 0 -_080195E4: .4byte gBattleTextBuff1 -_080195E8: .4byte gStatusConditionString_ConfusionJpn -_080195EC: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r3, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080196D6 - ldr r0, _0801960C @ =gBattleTextBuff1 - ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn - b _0801969C - .align 2, 0 -_0801960C: .4byte gBattleTextBuff1 -_08019610: .4byte gStatusConditionString_ParalysisJpn -_08019614: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080196D6 - adds r2, 0x50 - adds r2, r3, r2 - ldr r0, [r2] - ldr r1, _08019644 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r0, _08019648 @ =gBattleTextBuff1 - ldr r1, _0801964C @ =gStatusConditionString_SleepJpn - bl StringCopy - movs r0, 0x1 - mov r9, r0 - b _080196DC - .align 2, 0 -_08019644: .4byte 0xf7ffffff -_08019648: .4byte gBattleTextBuff1 -_0801964C: .4byte gStatusConditionString_SleepJpn -_08019650: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080196D6 - ldr r0, _08019678 @ =gBattleTextBuff1 - ldr r1, _0801967C @ =gStatusConditionString_BurnJpn - bl StringCopy - movs r2, 0x1 - mov r9, r2 - b _080196DC - .align 2, 0 -_08019678: .4byte gBattleTextBuff1 -_0801967C: .4byte gStatusConditionString_BurnJpn -_08019680: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r3, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080196D6 - ldr r0, _080196A8 @ =gBattleTextBuff1 - ldr r1, _080196AC @ =gStatusConditionString_IceJpn -_0801969C: - bl StringCopy - movs r5, 0x1 - mov r9, r5 - b _080196DC - .align 2, 0 -_080196A8: .4byte gBattleTextBuff1 -_080196AC: .4byte gStatusConditionString_IceJpn -_080196B0: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xF0 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _080196D6 - ldr r0, _080196EC @ =gBattleTextBuff1 - ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn - bl StringCopy - movs r2, 0x3 - mov r9, r2 -_080196D6: - mov r3, r9 - cmp r3, 0 - beq _08019798 -_080196DC: - mov r5, r9 - cmp r5, 0x2 - beq _08019710 - cmp r5, 0x2 - bgt _080196F4 - cmp r5, 0x1 - beq _080196FC - b _0801973C - .align 2, 0 -_080196EC: .4byte gBattleTextBuff1 -_080196F0: .4byte gStatusConditionString_LoveJpn -_080196F4: - mov r0, r9 - cmp r0, 0x3 - beq _08019728 - b _0801973C -_080196FC: - ldr r1, _0801970C @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r1, 0x4C - adds r2, r1 - movs r0, 0 - b _0801973A - .align 2, 0 -_0801970C: .4byte gBattleMons -_08019710: - ldr r1, _08019724 @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x8 - negs r1, r1 - b _08019738 - .align 2, 0 -_08019724: .4byte gBattleMons -_08019728: - ldr r1, _08019778 @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - ldr r1, _0801977C @ =0xfff0ffff -_08019738: - ands r0, r1 -_0801973A: - str r0, [r2] -_0801973C: - bl b_movescr_stack_push_cursor - ldr r1, _08019780 @ =gBattlescriptCurrInstr - ldr r0, _08019784 @ =gUnknown_081D9956 - str r0, [r1] - ldr r0, _08019788 @ =0x02000000 - ldr r1, _0801978C @ =0x00016003 - adds r0, r1 - mov r2, r10 - strb r2, [r0] - ldr r4, _08019790 @ =gActiveBank - strb r2, [r4] - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - ldr r1, _08019794 @ =gUnknown_02024ACC - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - bl _08019F92 - .align 2, 0 -_08019778: .4byte gBattleMons -_0801977C: .4byte 0xfff0ffff -_08019780: .4byte gBattlescriptCurrInstr -_08019784: .4byte gUnknown_081D9956 -_08019788: .4byte 0x02000000 -_0801978C: .4byte 0x00016003 -_08019790: .4byte gActiveBank -_08019794: .4byte gUnknown_02024ACC -_08019798: - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _080197B0 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r10, r0 - bcs _080197AC - b _08019458 -_080197AC: - bl _08019F76 - .align 2, 0 -_080197B0: .4byte gNoOfAllBanks -_080197B4: - movs r3, 0 - mov r10, r3 - ldr r0, _080197FC @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r10, r0 - bcc _080197C2 - b _08019F76 -_080197C2: - ldr r4, _08019800 @ =gBattleMons -_080197C4: - movs r0, 0x58 - mov r5, r10 - muls r5, r0 - adds r0, r5, 0 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3B - bne _080197E8 - mov r0, r10 - bl castform_switch - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r0, 0 - beq _080197E8 - b _08019E40 -_080197E8: - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _080197FC @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r10, r0 - bcc _080197C4 - b _08019F76 - .align 2, 0 -_080197FC: .4byte gNoOfAllBanks -_08019800: .4byte gBattleMons -_08019804: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x1C - beq _0801980E - b _08019F76 -_0801980E: - ldr r4, _08019860 @ =gHitMarker - ldr r1, [r4] - movs r0, 0x80 - lsls r0, 7 - ands r0, r1 - cmp r0, 0 - bne _0801981E - b _08019F76 -_0801981E: - ldr r0, _08019864 @ =0xffffbfff - ands r1, r0 - str r1, [r4] - ldr r3, _08019868 @ =0x000160ca - adds r2, r7, r3 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2] - cmp r0, 0x6 - bne _08019838 - movs r0, 0x2 - strb r0, [r2] -_08019838: - ldr r1, _0801986C @ =gBattleCommunication - ldrb r0, [r2] - adds r0, 0x40 - strb r0, [r1, 0x3] - ldr r0, _08019870 @ =gBankTarget - ldrb r1, [r0] - ldr r5, _08019874 @ =0x00016003 - adds r0, r7, r5 - strb r1, [r0] - bl b_movescr_stack_push_cursor - ldr r1, _08019878 @ =gBattlescriptCurrInstr - ldr r0, _0801987C @ =gUnknown_081D9953 - str r0, [r1] - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r4] - b _08019F22 - .align 2, 0 -_08019860: .4byte gHitMarker -_08019864: .4byte 0xffffbfff -_08019868: .4byte 0x000160ca -_0801986C: .4byte gBattleCommunication -_08019870: .4byte gBankTarget -_08019874: .4byte 0x00016003 -_08019878: .4byte gBattlescriptCurrInstr -_0801987C: .4byte gUnknown_081D9953 -_08019880: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x1C - beq _0801988A - b _08019F76 -_0801988A: - ldr r4, _080198DC @ =gHitMarker - ldr r1, [r4] - movs r0, 0x80 - lsls r0, 7 - ands r0, r1 - cmp r0, 0 - bne _0801989A - b _08019F76 -_0801989A: - ldr r0, _080198E0 @ =0xffffbfff - ands r1, r0 - str r1, [r4] - ldr r3, _080198E4 @ =0x000160ca - adds r2, r7, r3 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2] - cmp r0, 0x6 - bne _080198B4 - movs r0, 0x2 - strb r0, [r2] -_080198B4: - ldr r1, _080198E8 @ =gBattleCommunication - ldrb r0, [r2] - strb r0, [r1, 0x3] - ldr r0, _080198EC @ =gBankAttacker - ldrb r1, [r0] - ldr r5, _080198F0 @ =0x00016003 - adds r0, r7, r5 - strb r1, [r0] - bl b_movescr_stack_push_cursor - ldr r1, _080198F4 @ =gBattlescriptCurrInstr - ldr r0, _080198F8 @ =gUnknown_081D9953 - str r0, [r1] - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r4] - b _08019F22 - .align 2, 0 -_080198DC: .4byte gHitMarker -_080198E0: .4byte 0xffffbfff -_080198E4: .4byte 0x000160ca -_080198E8: .4byte gBattleCommunication -_080198EC: .4byte gBankAttacker -_080198F0: .4byte 0x00016003 -_080198F4: .4byte gBattlescriptCurrInstr -_080198F8: .4byte gUnknown_081D9953 -_080198FC: - movs r4, 0 - ldr r0, _08019934 @ =gNoOfAllBanks - ldrb r1, [r0] - cmp r4, r1 - blt _08019908 - b _08019F76 -_08019908: - ldr r0, _08019938 @ =gBattleMons - adds r5, r1, 0 - ldr r2, _0801993C @ =gStatuses3 - adds r3, r0, 0 - adds r3, 0x20 - movs r6, 0x80 - lsls r6, 12 -_08019916: - ldrb r1, [r3] - cmp r1, 0x16 - bne _08019926 - ldr r0, [r2] - ands r0, r6 - cmp r0, 0 - beq _08019926 - b _08019E6C -_08019926: - adds r2, 0x4 - adds r3, 0x58 - adds r4, 0x1 - cmp r4, r5 - blt _08019916 - b _08019F76 - .align 2, 0 -_08019934: .4byte gNoOfAllBanks -_08019938: .4byte gBattleMons -_0801993C: .4byte gStatuses3 -_08019940: - movs r4, 0 - ldr r0, _08019A1C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0801994C - b _08019F76 -_0801994C: - ldr r0, _08019A20 @ =gActiveBank - mov r8, r0 - ldr r1, _08019A24 @ =gBattleMons - adds r1, 0x20 - str r1, [sp, 0x1C] - movs r2, 0 - str r2, [sp, 0x20] -_0801995A: - ldr r3, [sp, 0x1C] - ldrb r0, [r3] - cmp r0, 0x24 - beq _08019964 - b _08019AF6 -_08019964: - ldr r0, _08019A28 @ =gStatuses3 - ldr r5, [sp, 0x20] - adds r0, r5, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 13 - ands r1, r0 - str r5, [sp, 0x18] - cmp r1, 0 - bne _0801997A - b _08019AF6 -_0801997A: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankIdentity - movs r1, 0x1 - adds r5, r0, 0 - eors r5, r1 - ands r5, r1 - adds r0, r5, 0 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x2 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08019A2C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080199AE - b _08019ABC -_080199AE: - movs r1, 0x58 - adds r0, r6, 0 - muls r0, r1 - ldr r3, _08019A24 @ =gBattleMons - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _08019A78 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _08019A34 - movs r1, 0x58 - adds r0, r7, 0 - muls r0, r1 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _08019A34 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _08019A34 - str r2, [sp, 0x24] - bl Random - ldr r2, [sp, 0x24] - adds r1, r2, 0 - ands r1, r0 - lsls r1, 1 - orrs r5, r1 - adds r0, r5, 0 - bl GetBankByPlayerAI - mov r2, r8 - strb r0, [r2] - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - ldr r5, _08019A24 @ =gBattleMons - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - ldr r1, [sp, 0x1C] - strb r0, [r1] - ldrb r0, [r2] - muls r0, r3 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - ldr r2, _08019A30 @ =gLastUsedAbility - strb r0, [r2] - b _08019AE4 - .align 2, 0 -_08019A1C: .4byte gNoOfAllBanks -_08019A20: .4byte gActiveBank -_08019A24: .4byte gBattleMons -_08019A28: .4byte gStatuses3 -_08019A2C: .4byte gBattleTypeFlags -_08019A30: .4byte gLastUsedAbility -_08019A34: - ldr r3, _08019A74 @ =gBattleMons - movs r2, 0x58 - adds r0, r6, 0 - muls r0, r2 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _08019A78 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _08019A78 - mov r5, r8 - strb r6, [r5] - adds r1, r4, 0 - muls r1, r2 - adds r1, r3 - ldrb r0, [r5] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r5] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - b _08019AE0 - .align 2, 0 -_08019A74: .4byte gBattleMons -_08019A78: - ldr r3, _08019AB8 @ =gBattleMons - movs r2, 0x58 - adds r0, r7, 0 - muls r0, r2 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _08019AEE - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _08019AEE - mov r5, r8 - strb r7, [r5] - adds r1, r4, 0 - muls r1, r2 - adds r1, r3 - ldrb r0, [r5] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r5] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - b _08019AE0 - .align 2, 0 -_08019AB8: .4byte gBattleMons -_08019ABC: - mov r2, r8 - strb r6, [r2] - movs r3, 0x58 - adds r0, r6, 0 - muls r0, r3 - ldr r5, _08019B10 @ =gBattleMons - adds r0, r5 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r1, [r2] - cmp r1, 0 - beq _08019AEE - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08019AEE - ldr r0, [sp, 0x1C] - strb r1, [r0] - ldrb r0, [r2] -_08019AE0: - ldr r1, _08019B14 @ =gLastUsedAbility - strb r0, [r1] -_08019AE4: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08019AEE: - mov r2, r9 - cmp r2, 0 - beq _08019AF6 - b _08019E88 -_08019AF6: - ldr r3, [sp, 0x1C] - adds r3, 0x58 - str r3, [sp, 0x1C] - ldr r5, [sp, 0x20] - adds r5, 0x4 - str r5, [sp, 0x20] - adds r4, 0x1 - ldr r0, _08019B18 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bge _08019B0E - b _0801995A -_08019B0E: - b _08019F76 - .align 2, 0 -_08019B10: .4byte gBattleMons -_08019B14: .4byte gLastUsedAbility -_08019B18: .4byte gNoOfAllBanks -_08019B1C: - movs r4, 0 - ldr r0, _08019B54 @ =gNoOfAllBanks - ldrb r1, [r0] - cmp r4, r1 - blt _08019B28 - b _08019F76 -_08019B28: - ldr r0, _08019B58 @ =gBattleMons - adds r5, r1, 0 - ldr r2, _08019B5C @ =gStatuses3 - adds r3, r0, 0 - adds r3, 0x20 - movs r6, 0x80 - lsls r6, 12 -_08019B36: - ldrb r1, [r3] - cmp r1, 0x16 - bne _08019B46 - ldr r0, [r2] - ands r0, r6 - cmp r0, 0 - beq _08019B46 - b _08019F04 -_08019B46: - adds r2, 0x4 - adds r3, 0x58 - adds r4, 0x1 - cmp r4, r5 - blt _08019B36 - b _08019F76 - .align 2, 0 -_08019B54: .4byte gNoOfAllBanks -_08019B58: .4byte gBattleMons -_08019B5C: .4byte gStatuses3 -_08019B60: - mov r0, r10 - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _08019BB0 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019B76 - b _08019F76 -_08019B76: - ldr r7, _08019BB4 @ =gBattleMons -_08019B78: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - adds r3, r4, 0x1 - cmp r0, r5 - beq _08019BA2 - movs r0, 0x58 - muls r0, r4 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r6 - bne _08019BA2 - ldr r0, _08019BB8 @ =gLastUsedAbility - strb r6, [r0] - lsls r0, r3, 24 - lsrs r0, 24 - mov r9, r0 -_08019BA2: - adds r4, r3, 0 - ldr r0, _08019BB0 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019B78 - b _08019F76 - .align 2, 0 -_08019BB0: .4byte gNoOfAllBanks -_08019BB4: .4byte gBattleMons -_08019BB8: .4byte gLastUsedAbility -_08019BBC: - mov r0, r10 - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _08019C0C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019BD2 - b _08019F76 -_08019BD2: - ldr r7, _08019C10 @ =gBattleMons -_08019BD4: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - adds r3, r4, 0x1 - cmp r0, r5 - bne _08019BFE - movs r0, 0x58 - muls r0, r4 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r6 - bne _08019BFE - ldr r0, _08019C14 @ =gLastUsedAbility - strb r6, [r0] - lsls r0, r3, 24 - lsrs r0, 24 - mov r9, r0 -_08019BFE: - adds r4, r3, 0 - ldr r0, _08019C0C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019BD4 - b _08019F76 - .align 2, 0 -_08019C0C: .4byte gNoOfAllBanks -_08019C10: .4byte gBattleMons -_08019C14: .4byte gLastUsedAbility -_08019C18: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0xFD - beq _08019C40 - cmp r0, 0xFE - beq _08019C78 - movs r4, 0 - ldr r0, _08019C38 @ =gNoOfAllBanks - adds r5, r0, 0 - ldrb r2, [r5] - cmp r4, r2 - blt _08019C32 - b _08019F76 -_08019C32: - ldr r2, _08019C3C @ =gBattleMons - b _08019CB0 - .align 2, 0 -_08019C38: .4byte gNoOfAllBanks -_08019C3C: .4byte gBattleMons -_08019C40: - movs r4, 0 - ldr r0, _08019C70 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019C4C - b _08019F76 -_08019C4C: - ldr r5, _08019C74 @ =gStatuses3 - movs r2, 0x80 - lsls r2, 9 - adds r1, r0, 0 -_08019C54: - lsls r0, r4, 2 - adds r0, r5 - ldr r0, [r0] - ands r0, r2 - adds r3, r4, 0x1 - cmp r0, 0 - beq _08019C68 - lsls r0, r3, 24 - lsrs r0, 24 - mov r9, r0 -_08019C68: - adds r4, r3, 0 - cmp r4, r1 - blt _08019C54 - b _08019F76 - .align 2, 0 -_08019C70: .4byte gNoOfAllBanks -_08019C74: .4byte gStatuses3 -_08019C78: - movs r4, 0 - ldr r0, _08019CA8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019C84 - b _08019F76 -_08019C84: - ldr r5, _08019CAC @ =gStatuses3 - movs r2, 0x80 - lsls r2, 10 - adds r1, r0, 0 -_08019C8C: - lsls r0, r4, 2 - adds r0, r5 - ldr r0, [r0] - ands r0, r2 - adds r3, r4, 0x1 - cmp r0, 0 - beq _08019CA0 - lsls r0, r3, 24 - lsrs r0, 24 - mov r9, r0 -_08019CA0: - adds r4, r3, 0 - cmp r4, r1 - blt _08019C8C - b _08019F76 - .align 2, 0 -_08019CA8: .4byte gNoOfAllBanks -_08019CAC: .4byte gStatuses3 -_08019CB0: - movs r0, 0x58 - muls r0, r4 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - adds r3, r4, 0x1 - cmp r0, r6 - bne _08019CCA - mov r0, r8 - strb r6, [r0] - lsls r0, r3, 24 - lsrs r0, 24 - mov r9, r0 -_08019CCA: - adds r4, r3, 0 - ldrb r1, [r5] - cmp r4, r1 - blt _08019CB0 - b _08019F76 -_08019CD4: - movs r4, 0 - ldr r0, _08019D10 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019CE0 - b _08019F76 -_08019CE0: - ldr r7, _08019D14 @ =gBattleMons - adds r2, r0, 0 - movs r5, 0x58 -_08019CE6: - adds r0, r4, 0 - muls r0, r5 - adds r1, r0, r7 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - adds r3, r4, 0x1 - cmp r0, r6 - bne _08019D08 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _08019D08 - mov r0, r8 - strb r6, [r0] - lsls r0, r3, 24 - lsrs r0, 24 - mov r9, r0 -_08019D08: - adds r4, r3, 0 - cmp r4, r2 - blt _08019CE6 - b _08019F76 - .align 2, 0 -_08019D10: .4byte gNoOfAllBanks -_08019D14: .4byte gBattleMons -_08019D18: - movs r4, 0 - ldr r0, _08019D50 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019D24 - b _08019F76 -_08019D24: - ldr r7, _08019D54 @ =gBattleMons - adds r1, r0, 0 - movs r5, 0x58 - ldr r2, _08019D58 @ =gLastUsedAbility -_08019D2C: - adds r0, r4, 0 - muls r0, r5 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - adds r3, r4, 0x1 - cmp r0, r6 - bne _08019D48 - cmp r4, r10 - beq _08019D48 - strb r6, [r2] - lsls r0, r3, 24 - lsrs r0, 24 - mov r9, r0 -_08019D48: - adds r4, r3, 0 - cmp r4, r1 - blt _08019D2C - b _08019F76 - .align 2, 0 -_08019D50: .4byte gNoOfAllBanks -_08019D54: .4byte gBattleMons -_08019D58: .4byte gLastUsedAbility -_08019D5C: - mov r0, r10 - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _08019DAC @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019D72 - b _08019F76 -_08019D72: - ldr r7, _08019DB0 @ =gBattleMons -_08019D74: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - beq _08019DA0 - movs r0, 0x58 - muls r0, r4 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r6 - bne _08019DA0 - ldr r0, _08019DB4 @ =gLastUsedAbility - strb r6, [r0] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08019DA0: - adds r4, 0x1 - ldr r0, _08019DAC @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019D74 - b _08019F76 - .align 2, 0 -_08019DAC: .4byte gNoOfAllBanks -_08019DB0: .4byte gBattleMons -_08019DB4: .4byte gLastUsedAbility -_08019DB8: - mov r0, r10 - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _08019E08 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019DCE - b _08019F76 -_08019DCE: - ldr r7, _08019E0C @ =gBattleMons -_08019DD0: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _08019DFC - movs r0, 0x58 - muls r0, r4 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r6 - bne _08019DFC - ldr r0, _08019E10 @ =gLastUsedAbility - strb r6, [r0] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08019DFC: - adds r4, 0x1 - ldr r0, _08019E08 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08019DD0 - b _08019F76 - .align 2, 0 -_08019E08: .4byte gNoOfAllBanks -_08019E0C: .4byte gBattleMons -_08019E10: .4byte gLastUsedAbility -_08019E14: - ldr r0, _08019E30 @ =gUnknown_081D977D - bl b_push_move_exec - ldr r0, _08019E34 @ =0x02000000 - ldr r2, _08019E38 @ =0x00016003 - adds r1, r0, r2 - strb r6, [r1] - mov r1, r9 - subs r1, 0x1 - ldr r3, _08019E3C @ =0x0001609b - adds r0, r3 - strb r1, [r0] - b _08019F76 - .align 2, 0 -_08019E30: .4byte gUnknown_081D977D -_08019E34: .4byte 0x02000000 -_08019E38: .4byte 0x00016003 -_08019E3C: .4byte 0x0001609b -_08019E40: - ldr r0, _08019E5C @ =gUnknown_081D977D - bl b_push_move_exec - ldr r0, _08019E60 @ =0x02000000 - ldr r5, _08019E64 @ =0x00016003 - adds r1, r0, r5 - mov r2, r10 - strb r2, [r1] - mov r1, r9 - subs r1, 0x1 - ldr r3, _08019E68 @ =0x0001609b - adds r0, r3 - strb r1, [r0] - b _08019F92 - .align 2, 0 -_08019E5C: .4byte gUnknown_081D977D -_08019E60: .4byte 0x02000000 -_08019E64: .4byte 0x00016003 -_08019E68: .4byte 0x0001609b -_08019E6C: - mov r5, r8 - strb r1, [r5] - ldr r0, [r2] - ldr r1, _08019E80 @ =0xfff7ffff - ands r0, r1 - str r0, [r2] - ldr r0, _08019E84 @ =gUnknown_081D978C - bl b_push_move_exec - b _08019F1A - .align 2, 0 -_08019E80: .4byte 0xfff7ffff -_08019E84: .4byte gUnknown_081D978C -_08019E88: - ldr r0, _08019EDC @ =gUnknown_081D9726 - bl b_push_move_exec - ldr r1, _08019EE0 @ =gStatuses3 - ldr r2, [sp, 0x18] - adds r1, r2, r1 - ldr r0, [r1] - ldr r2, _08019EE4 @ =0xffefffff - ands r0, r2 - str r0, [r1] - ldr r0, _08019EE8 @ =0x02000000 - ldr r3, _08019EEC @ =0x00016003 - adds r0, r3 - strb r4, [r0] - ldr r1, _08019EF0 @ =gBattleTextBuff1 - movs r4, 0xFD - strb r4, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r2, _08019EF4 @ =gActiveBank - ldrb r0, [r2] - strb r0, [r1, 0x2] - ldr r3, _08019EF8 @ =gBattlePartyID - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08019EFC @ =gBattleTextBuff2 - strb r4, [r1] - movs r0, 0x9 - strb r0, [r1, 0x1] - ldr r0, _08019F00 @ =gLastUsedAbility - ldrb r0, [r0] - strb r0, [r1, 0x2] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x3] - b _08019F76 - .align 2, 0 -_08019EDC: .4byte gUnknown_081D9726 -_08019EE0: .4byte gStatuses3 -_08019EE4: .4byte 0xffefffff -_08019EE8: .4byte 0x02000000 -_08019EEC: .4byte 0x00016003 -_08019EF0: .4byte gBattleTextBuff1 -_08019EF4: .4byte gActiveBank -_08019EF8: .4byte gBattlePartyID -_08019EFC: .4byte gBattleTextBuff2 -_08019F00: .4byte gLastUsedAbility -_08019F04: - mov r5, r8 - strb r1, [r5] - ldr r0, [r2] - ldr r1, _08019F30 @ =0xfff7ffff - ands r0, r1 - str r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _08019F34 @ =gBattlescriptCurrInstr - ldr r0, _08019F38 @ =gUnknown_081D9795 - str r0, [r1] -_08019F1A: - ldr r0, _08019F3C @ =0x02000000 - ldr r1, _08019F40 @ =0x000160dd - adds r0, r1 - strb r4, [r0] -_08019F22: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - b _08019F76 - .align 2, 0 -_08019F30: .4byte 0xfff7ffff -_08019F34: .4byte gBattlescriptCurrInstr -_08019F38: .4byte gUnknown_081D9795 -_08019F3C: .4byte 0x02000000 -_08019F40: .4byte 0x000160dd -_08019F44: - movs r4, 0 - ldr r0, _08019FA4 @ =gNoOfAllBanks - ldrb r1, [r0] - cmp r4, r1 - bge _08019F76 - ldr r0, _08019FA8 @ =gBattleMons - adds r2, r1, 0 - adds r1, r0, 0 - adds r1, 0x20 - ldr r3, _08019FAC @ =gLastUsedAbility -_08019F58: - ldrb r0, [r1] - cmp r0, r6 - bne _08019F6E - cmp r4, r10 - beq _08019F6E - strb r6, [r3] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08019F6E: - adds r1, 0x58 - adds r4, 0x1 - cmp r4, r2 - blt _08019F58 -_08019F76: - mov r2, r9 - cmp r2, 0 - beq _08019F92 -_08019F7C: - ldr r3, [sp, 0x4] - cmp r3, 0xB - bhi _08019F92 - ldr r1, _08019FAC @ =gLastUsedAbility - ldrb r0, [r1] - cmp r0, 0xFF - beq _08019F92 - adds r1, r0, 0 - mov r0, r10 - bl RecordAbilityBattle -_08019F92: - mov r0, r9 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08019FA4: .4byte gNoOfAllBanks -_08019FA8: .4byte gBattleMons -_08019FAC: .4byte gLastUsedAbility - thumb_func_end AbilityBattleEffects - - thumb_func_start b_call_bc_move_exec -b_call_bc_move_exec: @ 8019FB0 - ldr r1, _08019FD8 @ =gBattlescriptCurrInstr - str r0, [r1] - ldr r3, _08019FDC @ =0x02017140 - adds r2, r3, 0 - adds r2, 0x20 - ldrb r0, [r2] - adds r1, r0, 0x1 - strb r1, [r2] - lsls r0, 24 - lsrs r0, 22 - adds r0, r3 - ldr r2, _08019FE0 @ =gBattleMainFunc - ldr r1, [r2] - str r1, [r0] - ldr r0, _08019FE4 @ =sub_8013F54 - str r0, [r2] - ldr r1, _08019FE8 @ =gFightStateTracker - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08019FD8: .4byte gBattlescriptCurrInstr -_08019FDC: .4byte 0x02017140 -_08019FE0: .4byte gBattleMainFunc -_08019FE4: .4byte sub_8013F54 -_08019FE8: .4byte gFightStateTracker - thumb_func_end b_call_bc_move_exec - - thumb_func_start b_push_move_exec -b_push_move_exec: @ 8019FEC - push {r4,lr} - adds r4, r0, 0 - bl b_movescr_stack_push_cursor - ldr r0, _0801A01C @ =gBattlescriptCurrInstr - str r4, [r0] - ldr r3, _0801A020 @ =0x02017140 - adds r2, r3, 0 - adds r2, 0x20 - ldrb r0, [r2] - adds r1, r0, 0x1 - strb r1, [r2] - lsls r0, 24 - lsrs r0, 22 - adds r0, r3 - ldr r2, _0801A024 @ =gBattleMainFunc - ldr r1, [r2] - str r1, [r0] - ldr r0, _0801A028 @ =sub_8013FBC - str r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801A01C: .4byte gBattlescriptCurrInstr -_0801A020: .4byte 0x02017140 -_0801A024: .4byte gBattleMainFunc -_0801A028: .4byte sub_8013FBC - thumb_func_end b_push_move_exec - - thumb_func_start sub_801A02C -sub_801A02C: @ 801A02C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - movs r0, 0 - mov r10, r0 - movs r1, 0 - str r1, [sp, 0xC] - add r0, sp, 0x4 - strb r1, [r0] - ldr r4, _0801A078 @ =gLastUsedItem - ldr r1, _0801A07C @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r0, r1 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0801A084 - ldr r1, _0801A080 @ =gEnigmaBerries - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x7] - ldrb r0, [r0, 0x1A] - b _0801A098 - .align 2, 0 -_0801A078: .4byte gLastUsedItem -_0801A07C: .4byte gBattleMons -_0801A080: .4byte gEnigmaBerries -_0801A084: - ldrh r0, [r4] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r0, 24 -_0801A098: - mov r9, r0 - ldr r1, _0801A0C0 @ =gBattleMons - ldr r0, _0801A0C4 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - str r0, [sp, 0x14] - cmp r0, 0xAF - bne _0801A0CC - ldr r1, _0801A0C8 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r3, [r0, 0x7] - mov r8, r3 - ldrb r0, [r0, 0x1A] - b _0801A0E2 - .align 2, 0 -_0801A0C0: .4byte gBattleMons -_0801A0C4: .4byte gBankAttacker -_0801A0C8: .4byte gEnigmaBerries -_0801A0CC: - ldr r0, [sp, 0x14] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, [sp, 0x14] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r0, 24 -_0801A0E2: - str r0, [sp, 0x10] - ldr r2, _0801A118 @ =gBattleMons - ldr r0, _0801A11C @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r4, [r0, 0x2E] - cmp r4, 0xAF - beq _0801A102 - adds r0, r4, 0 - bl ItemId_GetHoldEffect - adds r0, r4, 0 - bl ItemId_GetHoldEffectParam -_0801A102: - ldr r4, [sp, 0x8] - cmp r4, 0x4 - bls _0801A10C - bl _0801B3CA -_0801A10C: - lsls r0, r4, 2 - ldr r1, _0801A120 @ =_0801A124 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801A118: .4byte gBattleMons -_0801A11C: .4byte gBankTarget -_0801A120: .4byte _0801A124 - .align 2, 0 -_0801A124: - .4byte _0801A138 - .4byte _0801A1D4 - .4byte _0801B3CA - .4byte _0801AE0C - .4byte _0801B26C -_0801A138: - cmp r5, 0x17 - beq _0801A15C - cmp r5, 0x20 - beq _0801A144 - bl _0801B3CA -_0801A144: - ldr r0, _0801A154 @ =0x02000000 - ldr r5, _0801A158 @ =0x00016056 - adds r0, r5 - movs r1, 0x2 - strb r1, [r0] - bl _0801B3CA - .align 2, 0 -_0801A154: .4byte 0x02000000 -_0801A158: .4byte 0x00016056 -_0801A15C: - ldr r0, _0801A1B8 @ =gBattleMons - mov r8, r0 - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x18 - adds r1, r0 - movs r2, 0x6 - movs r3, 0x7 - mov r10, r3 -_0801A172: - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _0801A180 - strb r2, [r1] - movs r4, 0x5 - str r4, [sp, 0xC] -_0801A180: - adds r1, 0x1 - movs r5, 0x1 - negs r5, r5 - add r10, r5 - mov r0, r10 - cmp r0, 0 - bge _0801A172 - ldr r1, [sp, 0xC] - cmp r1, 0 - bne _0801A198 - bl _0801B3CA -_0801A198: - ldr r0, _0801A1BC @ =0x02000000 - ldr r2, _0801A1C0 @ =0x00016003 - adds r0, r2 - strb r7, [r0] - ldr r0, _0801A1C4 @ =gStringBank - strb r7, [r0] - ldr r1, _0801A1C8 @ =gActiveBank - ldr r0, _0801A1CC @ =gBankAttacker - strb r7, [r0] - strb r7, [r1] - ldr r0, _0801A1D0 @ =gUnknown_081D9A5E - bl b_call_bc_move_exec - bl _0801B3CA - .align 2, 0 -_0801A1B8: .4byte gBattleMons -_0801A1BC: .4byte 0x02000000 -_0801A1C0: .4byte 0x00016003 -_0801A1C4: .4byte gStringBank -_0801A1C8: .4byte gActiveBank -_0801A1CC: .4byte gBankAttacker -_0801A1D0: .4byte gUnknown_081D9A5E -_0801A1D4: - ldr r1, _0801A1FC @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r0, r1 - ldrh r0, [r0, 0x28] - mov r8, r1 - cmp r0, 0 - bne _0801A1E8 - bl _0801B3CA -_0801A1E8: - subs r0, r5, 0x1 - cmp r0, 0x2A - bls _0801A1F2 - bl _0801AD5A -_0801A1F2: - lsls r0, 2 - ldr r1, _0801A200 @ =_0801A204 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801A1FC: .4byte gBattleMons -_0801A200: .4byte _0801A204 - .align 2, 0 -_0801A204: - .4byte _0801A2B0 - .4byte _0801AAC8 - .4byte _0801AB84 - .4byte _0801AAF8 - .4byte _0801AB2C - .4byte _0801AB5C - .4byte _0801A2F8 - .4byte _0801ABC8 - .4byte _0801ABF8 - .4byte _0801A4CC - .4byte _0801A548 - .4byte _0801A5C4 - .4byte _0801A634 - .4byte _0801A6C8 - .4byte _0801A75C - .4byte _0801A7D4 - .4byte _0801A838 - .4byte _0801A89C - .4byte _0801A900 - .4byte _0801A97C - .4byte _0801A9C8 - .4byte _0801AD5A - .4byte _0801A3F8 - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD24 - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801AD5A - .4byte _0801A46C -_0801A2B0: - movs r0, 0x58 - muls r0, r7 - mov r3, r8 - adds r2, r0, r3 - ldrh r0, [r2, 0x2C] - ldrh r1, [r2, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801A2C6 - bl _0801AD5A -_0801A2C6: - cmp r6, 0 - beq _0801A2CE - bl _0801AD5A -_0801A2CE: - ldr r4, _0801A2F0 @ =gBattleMoveDamage - mov r5, r9 - str r5, [r4] - ldrh r3, [r2, 0x28] - adds r0, r3, r5 - ldrh r1, [r2, 0x2C] - cmp r0, r1 - ble _0801A2E2 - subs r0, r1, r3 - str r0, [r4] -_0801A2E2: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - ldr r0, _0801A2F4 @ =gUnknown_081D9A74 - bl b_call_bc_move_exec - b _0801A752 - .align 2, 0 -_0801A2F0: .4byte gBattleMoveDamage -_0801A2F4: .4byte gUnknown_081D9A74 -_0801A2F8: - cmp r6, 0 - beq _0801A300 - bl _0801AD5A -_0801A300: - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0801A324 - ldr r1, _0801A31C @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0801A320 @ =gPlayerParty - b _0801A332 - .align 2, 0 -_0801A31C: .4byte gBattlePartyID -_0801A320: .4byte gPlayerParty -_0801A324: - ldr r1, _0801A3A0 @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0801A3A4 @ =gEnemyParty -_0801A332: - adds r4, r1, r0 - movs r1, 0 - mov r10, r1 - add r5, sp, 0x4 -_0801A33A: - mov r1, r10 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - mov r1, r10 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - strb r0, [r5] - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - lsls r0, 24 - lsrs r1, r0, 24 - cmp r6, 0 - beq _0801A36A - ldrb r0, [r5] - cmp r0, 0 - beq _0801A374 -_0801A36A: - movs r2, 0x1 - add r10, r2 - mov r3, r10 - cmp r3, 0x3 - ble _0801A33A -_0801A374: - mov r4, r10 - cmp r4, 0x4 - bne _0801A37E - bl _0801AD5A -_0801A37E: - lsls r2, r4, 24 - lsrs r2, 24 - adds r0, r6, 0 - bl CalculatePPWithBonus - lsls r0, 24 - lsrs r2, r0, 24 - add r0, sp, 0x4 - ldrb r0, [r0] - mov r5, r9 - adds r1, r0, r5 - cmp r1, r2 - ble _0801A3A8 - add r0, sp, 0x4 - strb r2, [r0] - b _0801A3AC - .align 2, 0 -_0801A3A0: .4byte gBattlePartyID -_0801A3A4: .4byte gEnemyParty -_0801A3A8: - add r0, sp, 0x4 - strb r1, [r0] -_0801A3AC: - ldr r1, _0801A3EC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r6, [r1, 0x2] - lsrs r0, r6, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r0, _0801A3F0 @ =gUnknown_081D9A91 - bl b_call_bc_move_exec - mov r1, r10 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - add r0, sp, 0x4 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetAttributes - ldr r0, _0801A3F4 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - movs r1, 0x3 - str r1, [sp, 0xC] - bl _0801AD62 - .align 2, 0 -_0801A3EC: .4byte gBattleTextBuff1 -_0801A3F0: .4byte gUnknown_081D9A91 -_0801A3F4: .4byte gActiveBank -_0801A3F8: - ldr r0, _0801A450 @ =gBattleMons - movs r1, 0x58 - muls r1, r7 - adds r0, 0x18 - adds r1, r0 - movs r2, 0x6 - movs r3, 0x7 - mov r10, r3 -_0801A408: - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _0801A416 - strb r2, [r1] - movs r4, 0x5 - str r4, [sp, 0xC] -_0801A416: - adds r1, 0x1 - movs r5, 0x1 - negs r5, r5 - add r10, r5 - mov r0, r10 - cmp r0, 0 - bge _0801A408 - movs r1, 0x8 - mov r10, r1 - ldr r2, [sp, 0xC] - cmp r2, 0 - bne _0801A432 - bl _0801B3CA -_0801A432: - ldr r0, _0801A454 @ =0x02000000 - ldr r3, _0801A458 @ =0x00016003 - adds r0, r3 - strb r7, [r0] - ldr r0, _0801A45C @ =gStringBank - strb r7, [r0] - ldr r1, _0801A460 @ =gActiveBank - ldr r0, _0801A464 @ =gBankAttacker - strb r7, [r0] - strb r7, [r1] - ldr r0, _0801A468 @ =gUnknown_081D9A5E - bl b_call_bc_move_exec - bl _0801AD5A - .align 2, 0 -_0801A450: .4byte gBattleMons -_0801A454: .4byte 0x02000000 -_0801A458: .4byte 0x00016003 -_0801A45C: .4byte gStringBank -_0801A460: .4byte gActiveBank -_0801A464: .4byte gBankAttacker -_0801A468: .4byte gUnknown_081D9A5E -_0801A46C: - movs r0, 0x58 - muls r0, r7 - mov r4, r8 - adds r1, r0, r4 - ldrh r0, [r1, 0x28] - ldrh r2, [r1, 0x2C] - cmp r0, r2 - bcc _0801A480 - bl _0801AD5A -_0801A480: - cmp r6, 0 - beq _0801A488 - bl _0801AD5A -_0801A488: - ldr r3, _0801A4C4 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 4 - str r0, [r3] - cmp r0, 0 - bne _0801A498 - movs r0, 0x1 - str r0, [r3] -_0801A498: - ldrh r2, [r1, 0x28] - ldr r0, [r3] - adds r0, r2, r0 - ldrh r1, [r1, 0x2C] - cmp r0, r1 - ble _0801A4A8 - subs r0, r1, r2 - str r0, [r3] -_0801A4A8: - ldr r0, [r3] - negs r0, r0 - str r0, [r3] - ldr r0, _0801A4C8 @ =gUnknown_081D9AA1 - bl b_call_bc_move_exec - movs r3, 0x4 - str r3, [sp, 0xC] - adds r0, r7, 0 - adds r1, r5, 0 - bl RecordItemBattle - bl _0801AD5A - .align 2, 0 -_0801A4C4: .4byte gBattleMoveDamage -_0801A4C8: .4byte gUnknown_081D9AA1 -_0801A4CC: - movs r0, 0x58 - adds r4, r7, 0 - muls r4, r0 - str r4, [sp, 0x18] - add r4, r8 - ldrh r0, [r4, 0x2C] - ldrh r1, [r4, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801A4E4 - bl _0801AD5A -_0801A4E4: - cmp r6, 0 - beq _0801A4EC - bl _0801AD5A -_0801A4EC: - ldr r1, _0801A540 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - strb r6, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r5, _0801A544 @ =gBattleMoveDamage - ldrh r0, [r4, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _0801A510 - movs r0, 0x1 - str r0, [r5] -_0801A510: - ldrh r2, [r4, 0x28] - ldr r0, [r5] - adds r0, r2, r0 - ldrh r1, [r4, 0x2C] - cmp r0, r1 - ble _0801A520 - subs r0, r1, r2 - str r0, [r5] -_0801A520: - ldr r0, [r5] - negs r0, r0 - str r0, [r5] - mov r0, r8 - adds r0, 0x48 - ldr r5, [sp, 0x18] - adds r0, r5, r0 - ldr r0, [r0] - movs r1, 0 -_0801A532: - bl sub_8040A7C - lsls r0, 24 - cmp r0, 0 - bge _0801A53E - b _0801A738 -_0801A53E: - b _0801A74C - .align 2, 0 -_0801A540: .4byte gBattleTextBuff1 -_0801A544: .4byte gBattleMoveDamage -_0801A548: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - str r1, [sp, 0x1C] - adds r5, r1, 0 - add r5, r8 - ldrh r0, [r5, 0x2C] - ldrh r1, [r5, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801A562 - bl _0801AD5A -_0801A562: - cmp r6, 0 - beq _0801A56A - bl _0801AD5A -_0801A56A: - ldr r1, _0801A5BC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - movs r6, 0x1 - strb r6, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r4, _0801A5C0 @ =gBattleMoveDamage - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801A58E - str r6, [r4] -_0801A58E: - ldrh r2, [r5, 0x28] - ldr r0, [r4] - adds r0, r2, r0 - ldrh r1, [r5, 0x2C] - cmp r0, r1 - ble _0801A59E - subs r0, r1, r2 - str r0, [r4] -_0801A59E: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - mov r0, r8 - adds r0, 0x48 - ldr r2, [sp, 0x1C] - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x1 - bl sub_8040A7C - lsls r0, 24 - cmp r0, 0 - blt _0801A6A4 - b _0801A6B8 - .align 2, 0 -_0801A5BC: .4byte gBattleTextBuff1 -_0801A5C0: .4byte gBattleMoveDamage -_0801A5C4: - movs r0, 0x58 - adds r4, r7, 0 - muls r4, r0 - str r4, [sp, 0x20] - adds r5, r4, 0 - add r5, r8 - ldrh r0, [r5, 0x2C] - ldrh r1, [r5, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801A5DC - b _0801AD5A -_0801A5DC: - cmp r6, 0 - beq _0801A5E2 - b _0801AD5A -_0801A5E2: - ldr r1, _0801A62C @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - movs r0, 0x2 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r4, _0801A630 @ =gBattleMoveDamage - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801A608 - movs r0, 0x1 - str r0, [r4] -_0801A608: - ldrh r2, [r5, 0x28] - ldr r0, [r4] - adds r0, r2, r0 - ldrh r1, [r5, 0x2C] - cmp r0, r1 - ble _0801A618 - subs r0, r1, r2 - str r0, [r4] -_0801A618: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - mov r0, r8 - adds r0, 0x48 - ldr r5, [sp, 0x20] - adds r0, r5, r0 - ldr r0, [r0] - movs r1, 0x2 - b _0801A532 - .align 2, 0 -_0801A62C: .4byte gBattleTextBuff1 -_0801A630: .4byte gBattleMoveDamage -_0801A634: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - str r1, [sp, 0x24] - adds r5, r1, 0 - add r5, r8 - ldrh r0, [r5, 0x2C] - ldrh r1, [r5, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801A64C - b _0801AD5A -_0801A64C: - cmp r6, 0 - beq _0801A652 - b _0801AD5A -_0801A652: - ldr r1, _0801A6AC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - movs r0, 0x3 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r4, _0801A6B0 @ =gBattleMoveDamage - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801A678 - movs r0, 0x1 - str r0, [r4] -_0801A678: - ldrh r2, [r5, 0x28] - ldr r0, [r4] - adds r0, r2, r0 - ldrh r1, [r5, 0x2C] - cmp r0, r1 - ble _0801A688 - subs r0, r1, r2 - str r0, [r4] -_0801A688: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - mov r0, r8 - adds r0, 0x48 - ldr r2, [sp, 0x24] - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x3 - bl sub_8040A7C - lsls r0, 24 - cmp r0, 0 - bge _0801A6B8 -_0801A6A4: - ldr r0, _0801A6B4 @ =gUnknown_081D9AD4 - bl b_call_bc_move_exec - b _0801A6BE - .align 2, 0 -_0801A6AC: .4byte gBattleTextBuff1 -_0801A6B0: .4byte gBattleMoveDamage -_0801A6B4: .4byte gUnknown_081D9AD4 -_0801A6B8: - ldr r0, _0801A6C4 @ =gUnknown_081D9A74 - bl b_call_bc_move_exec -_0801A6BE: - movs r3, 0x4 - str r3, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801A6C4: .4byte gUnknown_081D9A74 -_0801A6C8: - movs r0, 0x58 - adds r4, r7, 0 - muls r4, r0 - str r4, [sp, 0x28] - adds r5, r4, 0 - add r5, r8 - ldrh r0, [r5, 0x2C] - ldrh r1, [r5, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801A6E0 - b _0801AD5A -_0801A6E0: - cmp r6, 0 - beq _0801A6E6 - b _0801AD5A -_0801A6E6: - ldr r1, _0801A740 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - movs r0, 0x4 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r4, _0801A744 @ =gBattleMoveDamage - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801A70C - movs r0, 0x1 - str r0, [r4] -_0801A70C: - ldrh r2, [r5, 0x28] - ldr r0, [r4] - adds r0, r2, r0 - ldrh r1, [r5, 0x2C] - cmp r0, r1 - ble _0801A71C - subs r0, r1, r2 - str r0, [r4] -_0801A71C: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - mov r0, r8 - adds r0, 0x48 - ldr r5, [sp, 0x28] - adds r0, r5, r0 - ldr r0, [r0] - movs r1, 0x4 - bl sub_8040A7C - lsls r0, 24 - cmp r0, 0 - bge _0801A74C -_0801A738: - ldr r0, _0801A748 @ =gUnknown_081D9AD4 - bl b_call_bc_move_exec - b _0801A752 - .align 2, 0 -_0801A740: .4byte gBattleTextBuff1 -_0801A744: .4byte gBattleMoveDamage -_0801A748: .4byte gUnknown_081D9AD4 -_0801A74C: - ldr r0, _0801A758 @ =gUnknown_081D9A74 - bl b_call_bc_move_exec -_0801A752: - movs r0, 0x4 - str r0, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801A758: .4byte gUnknown_081D9A74 -_0801A75C: - movs r0, 0x58 - muls r0, r7 - mov r1, r8 - adds r5, r0, r1 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801A774 - b _0801AD5A -_0801A774: - cmp r6, 0 - beq _0801A77A - b _0801AD5A -_0801A77A: - movs r0, 0x19 - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801A784 - b _0801AD5A -_0801A784: - ldr r1, _0801A7BC @ =gBattleTextBuff1 - movs r2, 0xFD - strb r2, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - movs r0, 0x1 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, _0801A7C0 @ =gBattleTextBuff2 - strb r2, [r1] - strb r6, [r1, 0x1] - movs r0, 0xD2 - strb r0, [r1, 0x2] - strb r6, [r1, 0x3] - subs r0, 0xD3 - strb r0, [r1, 0x4] - ldr r0, _0801A7C4 @ =gEffectBank - strb r7, [r0] - ldr r1, _0801A7C8 @ =0x02000000 - ldr r3, _0801A7CC @ =0x0001601e - adds r2, r1, r3 - movs r0, 0x11 - strb r0, [r2] - ldr r4, _0801A7D0 @ =0x000160a4 - adds r2, r1, r4 - movs r0, 0xF - b _0801A94C - .align 2, 0 -_0801A7BC: .4byte gBattleTextBuff1 -_0801A7C0: .4byte gBattleTextBuff2 -_0801A7C4: .4byte gEffectBank -_0801A7C8: .4byte 0x02000000 -_0801A7CC: .4byte 0x0001601e -_0801A7D0: .4byte 0x000160a4 -_0801A7D4: - movs r0, 0x58 - muls r0, r7 - mov r1, r8 - adds r5, r0, r1 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801A7EC - b _0801AD5A -_0801A7EC: - cmp r6, 0 - beq _0801A7F2 - b _0801AD5A -_0801A7F2: - movs r0, 0x1A - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801A7FC - b _0801AD5A -_0801A7FC: - ldr r1, _0801A824 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - movs r0, 0x2 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801A828 @ =gEffectBank - strb r7, [r0] - ldr r1, _0801A82C @ =0x02000000 - ldr r3, _0801A830 @ =0x0001601e - adds r2, r1, r3 - movs r0, 0x12 - strb r0, [r2] - ldr r4, _0801A834 @ =0x000160a4 - adds r2, r1, r4 - movs r0, 0x10 - b _0801A94C - .align 2, 0 -_0801A824: .4byte gBattleTextBuff1 -_0801A828: .4byte gEffectBank -_0801A82C: .4byte 0x02000000 -_0801A830: .4byte 0x0001601e -_0801A834: .4byte 0x000160a4 -_0801A838: - movs r0, 0x58 - muls r0, r7 - mov r1, r8 - adds r5, r0, r1 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801A850 - b _0801AD5A -_0801A850: - cmp r6, 0 - beq _0801A856 - b _0801AD5A -_0801A856: - movs r0, 0x1B - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801A860 - b _0801AD5A -_0801A860: - ldr r1, _0801A888 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - movs r0, 0x3 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801A88C @ =gEffectBank - strb r7, [r0] - ldr r1, _0801A890 @ =0x02000000 - ldr r3, _0801A894 @ =0x0001601e - adds r2, r1, r3 - movs r0, 0x13 - strb r0, [r2] - ldr r4, _0801A898 @ =0x000160a4 - adds r2, r1, r4 - movs r0, 0x11 - b _0801A94C - .align 2, 0 -_0801A888: .4byte gBattleTextBuff1 -_0801A88C: .4byte gEffectBank -_0801A890: .4byte 0x02000000 -_0801A894: .4byte 0x0001601e -_0801A898: .4byte 0x000160a4 -_0801A89C: - movs r0, 0x58 - muls r0, r7 - mov r1, r8 - adds r5, r0, r1 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801A8B4 - b _0801AD5A -_0801A8B4: - cmp r6, 0 - beq _0801A8BA - b _0801AD5A -_0801A8BA: - movs r0, 0x1C - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801A8C4 - b _0801AD5A -_0801A8C4: - ldr r1, _0801A8EC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - movs r0, 0x4 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801A8F0 @ =gEffectBank - strb r7, [r0] - ldr r1, _0801A8F4 @ =0x02000000 - ldr r3, _0801A8F8 @ =0x0001601e - adds r2, r1, r3 - movs r0, 0x14 - strb r0, [r2] - ldr r4, _0801A8FC @ =0x000160a4 - adds r2, r1, r4 - movs r0, 0x12 - b _0801A94C - .align 2, 0 -_0801A8EC: .4byte gBattleTextBuff1 -_0801A8F0: .4byte gEffectBank -_0801A8F4: .4byte 0x02000000 -_0801A8F8: .4byte 0x0001601e -_0801A8FC: .4byte 0x000160a4 -_0801A900: - movs r0, 0x58 - muls r0, r7 - mov r1, r8 - adds r5, r0, r1 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801A918 - b _0801AD5A -_0801A918: - cmp r6, 0 - beq _0801A91E - b _0801AD5A -_0801A91E: - movs r0, 0x1D - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801A928 - b _0801AD5A -_0801A928: - ldr r1, _0801A960 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801A964 @ =gEffectBank - strb r7, [r0] - ldr r1, _0801A968 @ =0x02000000 - ldr r3, _0801A96C @ =0x0001601e - adds r2, r1, r3 - movs r0, 0x15 - strb r0, [r2] - ldr r4, _0801A970 @ =0x000160a4 - adds r2, r1, r4 - movs r0, 0x13 -_0801A94C: - strb r0, [r2] - ldr r5, _0801A974 @ =0x000160a5 - adds r1, r5 - strb r6, [r1] - ldr r0, _0801A978 @ =gUnknown_081D9AFE - bl b_call_bc_move_exec - movs r0, 0x5 - str r0, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801A960: .4byte gBattleTextBuff1 -_0801A964: .4byte gEffectBank -_0801A968: .4byte 0x02000000 -_0801A96C: .4byte 0x0001601e -_0801A970: .4byte 0x000160a4 -_0801A974: .4byte 0x000160a5 -_0801A978: .4byte gUnknown_081D9AFE -_0801A97C: - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - mov r1, r8 - adds r0, r5, r1 - ldrh r4, [r0, 0x28] - ldrh r0, [r0, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801A996 - b _0801AD5A -_0801A996: - cmp r6, 0 - beq _0801A99C - b _0801AD5A -_0801A99C: - mov r0, r8 - adds r0, 0x50 - adds r1, r5, r0 - ldr r2, [r1] - movs r3, 0x80 - lsls r3, 13 - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _0801A9B2 - b _0801AD5A -_0801A9B2: - orrs r2, r3 - str r2, [r1] - ldr r0, _0801A9C4 @ =gUnknown_081D9B19 - bl b_call_bc_move_exec - movs r2, 0x2 - str r2, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801A9C4: .4byte gUnknown_081D9B19 -_0801A9C8: - cmp r6, 0 - beq _0801A9CE - b _0801AD5A -_0801A9CE: - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - mov r3, r8 - adds r0, r5, r3 - ldrh r4, [r0, 0x28] - ldrh r0, [r0, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801A9E8 - b _0801AD5A -_0801A9E8: - movs r4, 0 - mov r10, r4 - adds r0, r5, 0x1 - mov r1, r8 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xB - ble _0801AA18 - mov r0, r8 - adds r0, 0x19 - adds r1, r5, r0 -_0801AA04: - adds r1, 0x1 - movs r5, 0x1 - add r10, r5 - mov r0, r10 - cmp r0, 0x4 - bgt _0801AA18 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0xB - bgt _0801AA04 -_0801AA18: - mov r1, r10 - cmp r1, 0x5 - bne _0801AA20 - b _0801AD5A -_0801AA20: - movs r0, 0x58 - muls r0, r7 - adds r4, r0, 0x1 - ldr r5, _0801AAA4 @ =gUnknown_02024A98 -_0801AA28: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r0, r4 - adds r0, r5 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xC - beq _0801AA28 - ldr r1, _0801AAA8 @ =gBattleTextBuff1 - movs r3, 0 - movs r2, 0xFD - strb r2, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - mov r0, r10 - adds r0, 0x1 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801AAAC @ =gBattleTextBuff2 - strb r2, [r0] - strb r3, [r0, 0x1] - movs r1, 0xD1 - strb r1, [r0, 0x2] - strb r3, [r0, 0x3] - strb r3, [r0, 0x4] - movs r1, 0xD2 - strb r1, [r0, 0x5] - strb r3, [r0, 0x6] - subs r1, 0xD3 - strb r1, [r0, 0x7] - ldr r0, _0801AAB0 @ =gEffectBank - strb r7, [r0] - ldr r1, _0801AAB4 @ =0x02000000 - mov r2, r10 - adds r2, 0x21 - ldr r4, _0801AAB8 @ =0x0001601e - adds r0, r1, r4 - strb r2, [r0] - adds r2, 0x6 - ldr r5, _0801AABC @ =0x000160a4 - adds r0, r1, r5 - strb r2, [r0] - ldr r0, _0801AAC0 @ =0x000160a5 - adds r1, r0 - strb r3, [r1] - ldr r0, _0801AAC4 @ =gUnknown_081D9AFE - bl b_call_bc_move_exec - movs r1, 0x5 - str r1, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801AAA4: .4byte gUnknown_02024A98 -_0801AAA8: .4byte gBattleTextBuff1 -_0801AAAC: .4byte gBattleTextBuff2 -_0801AAB0: .4byte gEffectBank -_0801AAB4: .4byte 0x02000000 -_0801AAB8: .4byte 0x0001601e -_0801AABC: .4byte 0x000160a4 -_0801AAC0: .4byte 0x000160a5 -_0801AAC4: .4byte gUnknown_081D9AFE -_0801AAC8: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r1, r0 - ldr r2, [r1] - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - bne _0801AAE0 - b _0801AD5A -_0801AAE0: - movs r0, 0x41 - negs r0, r0 - ands r2, r0 - str r2, [r1] - ldr r0, _0801AAF4 @ =gUnknown_081D99B6 - bl b_call_bc_move_exec - movs r2, 0x1 - str r2, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801AAF4: .4byte gUnknown_081D99B6 -_0801AAF8: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r1, r0 - ldr r2, [r1] - movs r0, 0x88 - ands r0, r2 - cmp r0, 0 - bne _0801AB10 - b _0801AD5A -_0801AB10: - ldr r0, _0801AB24 @ =0xfffff077 - ands r2, r0 - str r2, [r1] - ldr r0, _0801AB28 @ =gUnknown_081D99CE - bl b_call_bc_move_exec - movs r3, 0x1 - str r3, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801AB24: .4byte 0xfffff077 -_0801AB28: .4byte gUnknown_081D99CE -_0801AB2C: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r1, r0 - ldr r2, [r1] - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - bne _0801AB44 - b _0801AD5A -_0801AB44: - movs r0, 0x11 - negs r0, r0 - ands r2, r0 - str r2, [r1] - ldr r0, _0801AB58 @ =gUnknown_081D99E6 - bl b_call_bc_move_exec - movs r4, 0x1 - str r4, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801AB58: .4byte gUnknown_081D99E6 -_0801AB5C: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r1, r0 - ldr r2, [r1] - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _0801AB74 - b _0801AD5A -_0801AB74: - movs r0, 0x21 - negs r0, r0 - ands r2, r0 - str r2, [r1] - ldr r0, _0801AB80 @ =gUnknown_081D99FE - b _0801AD0E - .align 2, 0 -_0801AB80: .4byte gUnknown_081D99FE -_0801AB84: - movs r0, 0x58 - adds r3, r7, 0 - muls r3, r0 - mov r0, r8 - adds r0, 0x4C - adds r2, r3, r0 - ldr r1, [r2] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801AB9C - b _0801AD5A -_0801AB9C: - movs r0, 0x8 - negs r0, r0 - ands r1, r0 - str r1, [r2] - mov r1, r8 - adds r1, 0x50 - adds r1, r3, r1 - ldr r0, [r1] - ldr r2, _0801ABC0 @ =0xf7ffffff - ands r0, r2 - str r0, [r1] - ldr r0, _0801ABC4 @ =gUnknown_081D9A16 - bl b_call_bc_move_exec - movs r0, 0x1 - str r0, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801ABC0: .4byte 0xf7ffffff -_0801ABC4: .4byte gUnknown_081D9A16 -_0801ABC8: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x50 - adds r1, r0 - ldr r2, [r1] - movs r0, 0x7 - ands r0, r2 - cmp r0, 0 - bne _0801ABE0 - b _0801AD5A -_0801ABE0: - movs r0, 0x8 - negs r0, r0 - ands r2, r0 - str r2, [r1] - ldr r0, _0801ABF4 @ =gUnknown_081D9A2E - bl b_call_bc_move_exec - movs r1, 0x2 - str r1, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801ABF4: .4byte gUnknown_081D9A2E -_0801ABF8: - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - mov r0, r8 - adds r0, 0x4C - adds r4, r5, r0 - ldr r2, [r4] - ldrb r0, [r4] - cmp r0, 0 - bne _0801AC1E - mov r0, r8 - adds r0, 0x50 - adds r0, r5, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801AC1E - b _0801AD5A -_0801AC1E: - movs r3, 0 - mov r10, r3 - movs r0, 0x88 - ands r2, r0 - cmp r2, 0 - beq _0801AC36 - ldr r0, _0801ACC4 @ =gBattleTextBuff1 - ldr r1, _0801ACC8 @ =gStatusConditionString_PoisonJpn - bl StringCopy - movs r0, 0x1 - mov r10, r0 -_0801AC36: - ldr r0, [r4] - movs r1, 0x7 - mov r9, r1 - ands r0, r1 - mov r6, r8 - adds r6, 0x50 - cmp r0, 0 - beq _0801AC5C - adds r2, r5, r6 - ldr r0, [r2] - ldr r1, _0801ACCC @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r0, _0801ACC4 @ =gBattleTextBuff1 - ldr r1, _0801ACD0 @ =gStatusConditionString_SleepJpn - bl StringCopy - movs r2, 0x1 - add r10, r2 -_0801AC5C: - ldr r0, [r4] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801AC72 - ldr r0, _0801ACC4 @ =gBattleTextBuff1 - ldr r1, _0801ACD4 @ =gStatusConditionString_ParalysisJpn - bl StringCopy - movs r3, 0x1 - add r10, r3 -_0801AC72: - ldr r0, [r4] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801AC88 - ldr r0, _0801ACC4 @ =gBattleTextBuff1 - ldr r1, _0801ACD8 @ =gStatusConditionString_BurnJpn - bl StringCopy - movs r0, 0x1 - add r10, r0 -_0801AC88: - ldr r0, [r4] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801AC9E - ldr r0, _0801ACC4 @ =gBattleTextBuff1 - ldr r1, _0801ACDC @ =gStatusConditionString_IceJpn - bl StringCopy - movs r1, 0x1 - add r10, r1 -_0801AC9E: - adds r0, r5, r6 - ldr r0, [r0] - mov r2, r9 - ands r0, r2 - cmp r0, 0 - beq _0801ACB6 - ldr r0, _0801ACC4 @ =gBattleTextBuff1 - ldr r1, _0801ACE0 @ =gStatusConditionString_ConfusionJpn - bl StringCopy - movs r3, 0x1 - add r10, r3 -_0801ACB6: - mov r4, r10 - cmp r4, 0x1 - bgt _0801ACE8 - ldr r1, _0801ACE4 @ =gBattleCommunication - movs r0, 0 - b _0801ACEC - .align 2, 0 -_0801ACC4: .4byte gBattleTextBuff1 -_0801ACC8: .4byte gStatusConditionString_PoisonJpn -_0801ACCC: .4byte 0xf7ffffff -_0801ACD0: .4byte gStatusConditionString_SleepJpn -_0801ACD4: .4byte gStatusConditionString_ParalysisJpn -_0801ACD8: .4byte gStatusConditionString_BurnJpn -_0801ACDC: .4byte gStatusConditionString_IceJpn -_0801ACE0: .4byte gStatusConditionString_ConfusionJpn -_0801ACE4: .4byte gBattleCommunication -_0801ACE8: - ldr r1, _0801AD18 @ =gBattleCommunication - movs r0, 0x1 -_0801ACEC: - strb r0, [r1, 0x5] - ldr r2, _0801AD1C @ =gBattleMons - movs r0, 0x58 - adds r3, r7, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - movs r1, 0 - str r1, [r0] - adds r2, 0x50 - adds r3, r2 - ldr r0, [r3] - subs r1, 0x8 - ands r0, r1 - str r0, [r3] - ldr r0, _0801AD20 @ =gUnknown_081D9A44 -_0801AD0E: - bl b_call_bc_move_exec - movs r5, 0x1 - str r5, [sp, 0xC] - b _0801AD62 - .align 2, 0 -_0801AD18: .4byte gBattleCommunication -_0801AD1C: .4byte gBattleMons -_0801AD20: .4byte gUnknown_081D9A44 -_0801AD24: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x50 - adds r1, r0 - ldr r2, [r1] - movs r0, 0xF0 - lsls r0, 12 - ands r0, r2 - cmp r0, 0 - beq _0801AD5A - ldr r0, _0801AD84 @ =0xfff0ffff - ands r2, r0 - str r2, [r1] - ldr r0, _0801AD88 @ =gBattleTextBuff1 - ldr r1, _0801AD8C @ =gStatusConditionString_LoveJpn - bl StringCopy - ldr r0, _0801AD90 @ =gUnknown_081D9A44 - bl b_call_bc_move_exec - ldr r1, _0801AD94 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - movs r0, 0x2 - str r0, [sp, 0xC] -_0801AD5A: - ldr r1, [sp, 0xC] - cmp r1, 0 - bne _0801AD62 - b _0801B3CA -_0801AD62: - ldr r0, _0801AD98 @ =0x02000000 - ldr r2, _0801AD9C @ =0x00016003 - adds r0, r2 - strb r7, [r0] - ldr r0, _0801ADA0 @ =gStringBank - strb r7, [r0] - ldr r4, _0801ADA4 @ =gActiveBank - ldr r0, _0801ADA8 @ =gBankAttacker - strb r7, [r0] - strb r7, [r4] - ldr r3, [sp, 0xC] - cmp r3, 0x1 - beq _0801ADAC - cmp r3, 0x3 - beq _0801ADB2 - b _0801B3CA - .align 2, 0 -_0801AD84: .4byte 0xfff0ffff -_0801AD88: .4byte gBattleTextBuff1 -_0801AD8C: .4byte gStatusConditionString_LoveJpn -_0801AD90: .4byte gUnknown_081D9A44 -_0801AD94: .4byte gBattleCommunication -_0801AD98: .4byte 0x02000000 -_0801AD9C: .4byte 0x00016003 -_0801ADA0: .4byte gStringBank -_0801ADA4: .4byte gActiveBank -_0801ADA8: .4byte gBankAttacker -_0801ADAC: - movs r0, 0x58 - muls r0, r7 - b _0801B224 -_0801ADB2: - ldr r4, _0801AE00 @ =gBattleMons - movs r0, 0x58 - adds r3, r7, 0 - muls r3, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - beq _0801ADCE - b _0801B3CA -_0801ADCE: - ldr r1, _0801AE04 @ =gDisableStructs - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _0801AE08 @ =gBitTable - mov r5, r10 - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801ADEE - b _0801B3CA -_0801ADEE: - adds r1, r5, r3 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - add r0, sp, 0x4 - ldrb r0, [r0] - strb r0, [r1] - b _0801B3CA - .align 2, 0 -_0801AE00: .4byte gBattleMons -_0801AE04: .4byte gDisableStructs -_0801AE08: .4byte gBitTable -_0801AE0C: - movs r7, 0 - ldr r0, _0801AE3C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r7, r0 - bcc _0801AE18 - b _0801B3CA -_0801AE18: - ldr r4, _0801AE40 @ =gLastUsedItem - ldr r1, _0801AE44 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r0, r1 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0801AE4C - ldr r1, _0801AE48 @ =gEnigmaBerries - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x7] - b _0801AE5C - .align 2, 0 -_0801AE3C: .4byte gNoOfAllBanks -_0801AE40: .4byte gLastUsedItem -_0801AE44: .4byte gBattleMons -_0801AE48: .4byte gEnigmaBerries -_0801AE4C: - ldrh r0, [r4] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4] - bl ItemId_GetHoldEffectParam -_0801AE5C: - subs r0, r5, 0x2 - cmp r0, 0x1A - bls _0801AE64 - b _0801B208 -_0801AE64: - lsls r0, 2 - ldr r1, _0801AE70 @ =_0801AE74 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801AE70: .4byte _0801AE74 - .align 2, 0 -_0801AE74: - .4byte _0801AEE0 - .4byte _0801AFC8 - .4byte _0801AF1C - .4byte _0801AF58 - .4byte _0801AF94 - .4byte _0801B208 - .4byte _0801B018 - .4byte _0801B0AC - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B1A0 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B208 - .4byte _0801B054 -_0801AEE0: - ldr r1, _0801AF10 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x4C - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0801AEF6 - b _0801B208 -_0801AEF6: - movs r0, 0x41 - negs r0, r0 - ands r1, r0 - str r1, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _0801AF14 @ =gBattlescriptCurrInstr - ldr r0, _0801AF18 @ =gUnknown_081D99BC - str r0, [r1] - movs r0, 0x1 - str r0, [sp, 0xC] - b _0801B20E - .align 2, 0 -_0801AF10: .4byte gBattleMons -_0801AF14: .4byte gBattlescriptCurrInstr -_0801AF18: .4byte gUnknown_081D99BC -_0801AF1C: - ldr r1, _0801AF48 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x4C - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _0801AF32 - b _0801B208 -_0801AF32: - ldr r0, _0801AF4C @ =0xfffff077 - ands r1, r0 - str r1, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _0801AF50 @ =gBattlescriptCurrInstr - ldr r0, _0801AF54 @ =gUnknown_081D99D4 - str r0, [r1] - movs r1, 0x1 - str r1, [sp, 0xC] - b _0801B20E - .align 2, 0 -_0801AF48: .4byte gBattleMons -_0801AF4C: .4byte 0xfffff077 -_0801AF50: .4byte gBattlescriptCurrInstr -_0801AF54: .4byte gUnknown_081D99D4 -_0801AF58: - ldr r1, _0801AF88 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x4C - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0801AF6E - b _0801B208 -_0801AF6E: - movs r0, 0x11 - negs r0, r0 - ands r1, r0 - str r1, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _0801AF8C @ =gBattlescriptCurrInstr - ldr r0, _0801AF90 @ =gUnknown_081D99EC - str r0, [r1] - movs r2, 0x1 - str r2, [sp, 0xC] - b _0801B20E - .align 2, 0 -_0801AF88: .4byte gBattleMons -_0801AF8C: .4byte gBattlescriptCurrInstr -_0801AF90: .4byte gUnknown_081D99EC -_0801AF94: - ldr r1, _0801AFBC @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x4C - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0801AFAA - b _0801B208 -_0801AFAA: - movs r0, 0x21 - negs r0, r0 - ands r1, r0 - str r1, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _0801AFC0 @ =gBattlescriptCurrInstr - ldr r0, _0801AFC4 @ =gUnknown_081D9A04 - b _0801B168 - .align 2, 0 -_0801AFBC: .4byte gBattleMons -_0801AFC0: .4byte gBattlescriptCurrInstr -_0801AFC4: .4byte gUnknown_081D9A04 -_0801AFC8: - ldr r2, _0801B008 @ =gBattleMons - movs r0, 0x58 - adds r4, r7, 0 - muls r4, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r3, r4, r0 - ldr r1, [r3] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801AFE2 - b _0801B208 -_0801AFE2: - movs r0, 0x8 - negs r0, r0 - ands r1, r0 - str r1, [r3] - adds r2, 0x50 - adds r2, r4, r2 - ldr r0, [r2] - ldr r1, _0801B00C @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _0801B010 @ =gBattlescriptCurrInstr - ldr r0, _0801B014 @ =gUnknown_081D9A1C - str r0, [r1] - movs r4, 0x1 - str r4, [sp, 0xC] - b _0801B20E - .align 2, 0 -_0801B008: .4byte gBattleMons -_0801B00C: .4byte 0xf7ffffff -_0801B010: .4byte gBattlescriptCurrInstr -_0801B014: .4byte gUnknown_081D9A1C -_0801B018: - ldr r1, _0801B048 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x50 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801B02E - b _0801B208 -_0801B02E: - movs r0, 0x8 - negs r0, r0 - ands r1, r0 - str r1, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _0801B04C @ =gBattlescriptCurrInstr - ldr r0, _0801B050 @ =gUnknown_081D9A34 - str r0, [r1] - movs r5, 0x2 - str r5, [sp, 0xC] - b _0801B20E - .align 2, 0 -_0801B048: .4byte gBattleMons -_0801B04C: .4byte gBattlescriptCurrInstr -_0801B050: .4byte gUnknown_081D9A34 -_0801B054: - ldr r1, _0801B090 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x50 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0xF0 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - bne _0801B06C - b _0801B208 -_0801B06C: - ldr r0, _0801B094 @ =0xfff0ffff - ands r1, r0 - str r1, [r2] - ldr r0, _0801B098 @ =gBattleTextBuff1 - ldr r1, _0801B09C @ =gStatusConditionString_LoveJpn - bl StringCopy - bl b_movescr_stack_push_cursor - ldr r1, _0801B0A0 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - ldr r1, _0801B0A4 @ =gBattlescriptCurrInstr - ldr r0, _0801B0A8 @ =gUnknown_081D9A4A - str r0, [r1] - movs r0, 0x2 - str r0, [sp, 0xC] - b _0801B20E - .align 2, 0 -_0801B090: .4byte gBattleMons -_0801B094: .4byte 0xfff0ffff -_0801B098: .4byte gBattleTextBuff1 -_0801B09C: .4byte gStatusConditionString_LoveJpn -_0801B0A0: .4byte gBattleCommunication -_0801B0A4: .4byte gBattlescriptCurrInstr -_0801B0A8: .4byte gUnknown_081D9A4A -_0801B0AC: - ldr r4, _0801B170 @ =gBattleMons - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - adds r0, r4, 0 - adds r0, 0x4C - adds r6, r5, r0 - ldr r2, [r6] - ldrb r0, [r6] - cmp r0, 0 - bne _0801B0D4 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r5, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801B0D4 - b _0801B208 -_0801B0D4: - movs r0, 0x88 - ands r2, r0 - cmp r2, 0 - beq _0801B0E4 - ldr r0, _0801B174 @ =gBattleTextBuff1 - ldr r1, _0801B178 @ =gStatusConditionString_PoisonJpn - bl StringCopy -_0801B0E4: - ldr r0, [r6] - movs r1, 0x7 - mov r8, r1 - ands r0, r1 - adds r4, 0x50 - cmp r0, 0 - beq _0801B104 - adds r2, r5, r4 - ldr r0, [r2] - ldr r1, _0801B17C @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r0, _0801B174 @ =gBattleTextBuff1 - ldr r1, _0801B180 @ =gStatusConditionString_SleepJpn - bl StringCopy -_0801B104: - ldr r0, [r6] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801B116 - ldr r0, _0801B174 @ =gBattleTextBuff1 - ldr r1, _0801B184 @ =gStatusConditionString_ParalysisJpn - bl StringCopy -_0801B116: - ldr r0, [r6] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801B128 - ldr r0, _0801B174 @ =gBattleTextBuff1 - ldr r1, _0801B188 @ =gStatusConditionString_BurnJpn - bl StringCopy -_0801B128: - ldr r0, [r6] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801B13A - ldr r0, _0801B174 @ =gBattleTextBuff1 - ldr r1, _0801B18C @ =gStatusConditionString_IceJpn - bl StringCopy -_0801B13A: - adds r5, r4 - ldr r0, [r5] - mov r2, r8 - ands r0, r2 - cmp r0, 0 - beq _0801B14E - ldr r0, _0801B174 @ =gBattleTextBuff1 - ldr r1, _0801B190 @ =gStatusConditionString_ConfusionJpn - bl StringCopy -_0801B14E: - movs r4, 0 - str r4, [r6] - ldr r0, [r5] - movs r1, 0x8 - negs r1, r1 - ands r0, r1 - str r0, [r5] - bl b_movescr_stack_push_cursor - ldr r0, _0801B194 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, _0801B198 @ =gBattlescriptCurrInstr - ldr r0, _0801B19C @ =gUnknown_081D9A4A -_0801B168: - str r0, [r1] - movs r3, 0x1 - str r3, [sp, 0xC] - b _0801B20E - .align 2, 0 -_0801B170: .4byte gBattleMons -_0801B174: .4byte gBattleTextBuff1 -_0801B178: .4byte gStatusConditionString_PoisonJpn -_0801B17C: .4byte 0xf7ffffff -_0801B180: .4byte gStatusConditionString_SleepJpn -_0801B184: .4byte gStatusConditionString_ParalysisJpn -_0801B188: .4byte gStatusConditionString_BurnJpn -_0801B18C: .4byte gStatusConditionString_IceJpn -_0801B190: .4byte gStatusConditionString_ConfusionJpn -_0801B194: .4byte gBattleCommunication -_0801B198: .4byte gBattlescriptCurrInstr -_0801B19C: .4byte gUnknown_081D9A4A -_0801B1A0: - ldr r4, _0801B1F0 @ =gBattleMons - mov r8, r4 - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x18 - adds r1, r0 - movs r2, 0x6 - movs r5, 0x7 - mov r10, r5 -_0801B1B6: - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _0801B1C4 - strb r2, [r1] - movs r0, 0x5 - str r0, [sp, 0xC] -_0801B1C4: - adds r1, 0x1 - movs r3, 0x1 - negs r3, r3 - add r10, r3 - mov r4, r10 - cmp r4, 0 - bge _0801B1B6 - ldr r5, [sp, 0xC] - cmp r5, 0 - beq _0801B254 - ldr r0, _0801B1F4 @ =0x02000000 - ldr r1, _0801B1F8 @ =0x00016003 - adds r0, r1 - strb r7, [r0] - ldr r0, _0801B1FC @ =gStringBank - strb r7, [r0] - bl b_movescr_stack_push_cursor - ldr r1, _0801B200 @ =gBattlescriptCurrInstr - ldr r0, _0801B204 @ =gUnknown_081D9A64 - str r0, [r1] - b _0801B3CA - .align 2, 0 -_0801B1F0: .4byte gBattleMons -_0801B1F4: .4byte 0x02000000 -_0801B1F8: .4byte 0x00016003 -_0801B1FC: .4byte gStringBank -_0801B200: .4byte gBattlescriptCurrInstr -_0801B204: .4byte gUnknown_081D9A64 -_0801B208: - ldr r2, [sp, 0xC] - cmp r2, 0 - beq _0801B254 -_0801B20E: - ldr r0, _0801B240 @ =0x02000000 - ldr r3, _0801B244 @ =0x00016003 - adds r0, r3 - strb r7, [r0] - ldr r0, _0801B248 @ =gStringBank - strb r7, [r0] - ldr r4, _0801B24C @ =gActiveBank - strb r7, [r4] - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 -_0801B224: - ldr r1, _0801B250 @ =gUnknown_02024ACC - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0801B3CA - .align 2, 0 -_0801B240: .4byte 0x02000000 -_0801B244: .4byte 0x00016003 -_0801B248: .4byte gStringBank -_0801B24C: .4byte gActiveBank -_0801B250: .4byte gUnknown_02024ACC -_0801B254: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0801B268 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r7, r0 - bcs _0801B264 - b _0801AE18 -_0801B264: - b _0801B3CA - .align 2, 0 -_0801B268: .4byte gNoOfAllBanks -_0801B26C: - ldr r7, _0801B284 @ =gBattleMoveDamage - ldr r0, [r7] - cmp r0, 0 - bne _0801B276 - b _0801B3CA -_0801B276: - mov r4, r8 - cmp r4, 0x1E - beq _0801B288 - cmp r4, 0x3E - beq _0801B330 - b _0801B3CA - .align 2, 0 -_0801B284: .4byte gBattleMoveDamage -_0801B288: - ldr r0, _0801B314 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801B296 - b _0801B3CA -_0801B296: - ldr r2, _0801B318 @ =gSpecialStatuses - ldr r4, _0801B31C @ =gBankTarget - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801B2BC - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801B2BC - b _0801B3CA -_0801B2BC: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r9 - bcs _0801B3CA - ldr r2, _0801B320 @ =gBattleMoves - ldr r0, _0801B324 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801B3CA - ldr r2, _0801B328 @ =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801B3CA - ldr r1, _0801B32C @ =gBattleCommunication - movs r0, 0x8 - strb r0, [r1, 0x3] - bl b_movescr_stack_push_cursor - movs r0, 0 - movs r1, 0 - bl sub_801E3EC - bl b_movescr_stack_pop_cursor - b _0801B3CA - .align 2, 0 -_0801B314: .4byte gBattleMoveFlags -_0801B318: .4byte gSpecialStatuses -_0801B31C: .4byte gBankTarget -_0801B320: .4byte gBattleMoves -_0801B324: .4byte gCurrentMove -_0801B328: .4byte gBattleMons -_0801B32C: .4byte gBattleCommunication -_0801B330: - ldr r0, _0801B3DC @ =gBattleMoveFlags - ldrb r0, [r0] - movs r4, 0x29 - ands r4, r0 - cmp r4, 0 - bne _0801B3CA - ldr r1, _0801B3E0 @ =gSpecialStatuses - ldr r5, _0801B3E4 @ =gBankTarget - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - adds r6, r1, 0x4 - adds r0, r6 - ldr r1, [r0] - cmp r1, 0 - beq _0801B3CA - ldr r0, _0801B3E8 @ =0x0000ffff - cmp r1, r0 - beq _0801B3CA - ldr r0, _0801B3EC @ =gBankAttacker - ldrb r3, [r0] - cmp r3, r2 - beq _0801B3CA - ldr r2, _0801B3F0 @ =gBattleMons - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - beq _0801B3CA - cmp r1, 0 - beq _0801B3CA - ldr r0, _0801B3F4 @ =gLastUsedItem - mov r1, sp - ldrh r1, [r1, 0x14] - strh r1, [r0] - ldr r0, _0801B3F8 @ =gStringBank - strb r3, [r0] - ldr r0, _0801B3FC @ =0x02000000 - ldr r2, _0801B400 @ =0x00016003 - adds r0, r2 - strb r3, [r0] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldr r1, [sp, 0x10] - bl __divsi3 - negs r0, r0 - str r0, [r7] - ldrb r1, [r5] - cmp r0, 0 - bne _0801B3AC - movs r0, 0x1 - negs r0, r0 - str r0, [r7] -_0801B3AC: - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - str r4, [r0] - bl b_movescr_stack_push_cursor - ldr r1, _0801B404 @ =gBattlescriptCurrInstr - ldr r0, _0801B408 @ =gUnknown_081D9AA7 - str r0, [r1] - ldr r0, [sp, 0xC] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0xC] -_0801B3CA: - ldr r0, [sp, 0xC] - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801B3DC: .4byte gBattleMoveFlags -_0801B3E0: .4byte gSpecialStatuses -_0801B3E4: .4byte gBankTarget -_0801B3E8: .4byte 0x0000ffff -_0801B3EC: .4byte gBankAttacker -_0801B3F0: .4byte gBattleMons -_0801B3F4: .4byte gLastUsedItem -_0801B3F8: .4byte gStringBank -_0801B3FC: .4byte 0x02000000 -_0801B400: .4byte 0x00016003 -_0801B404: .4byte gBattlescriptCurrInstr -_0801B408: .4byte gUnknown_081D9AA7 - thumb_func_end sub_801A02C - - thumb_func_start unref_sub_801B40C -unref_sub_801B40C: @ 801B40C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - str r0, [sp] - ldr r0, _0801B464 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801B42A - b _0801B56E -_0801B42A: - movs r1, 0x1 - mov r9, r1 -_0801B42E: - movs r5, 0 - ldr r4, _0801B468 @ =gUnknown_081FC1D0 - ldr r2, [sp] - adds r2, 0x1 - str r2, [sp, 0x4] -_0801B438: - ldr r0, _0801B46C @ =gAbsentBankFlags - ldrb r2, [r0] - ldr r3, _0801B470 @ =gBitTable - lsls r0, r5, 2 - adds r0, r3 - ldr r0, [r0] - ands r0, r2 - cmp r0, 0 - bne _0801B45A - adds r0, r5, 0x2 - lsls r1, r0, 2 - adds r1, r3 - ldr r1, [r1] - ands r2, r1 - adds r7, r0, 0 - cmp r2, 0 - beq _0801B474 -_0801B45A: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - b _0801B556 - .align 2, 0 -_0801B464: .4byte gBattleTypeFlags -_0801B468: .4byte gUnknown_081FC1D0 -_0801B46C: .4byte gAbsentBankFlags -_0801B470: .4byte gBitTable -_0801B474: - ldr r0, _0801B580 @ =gUnknown_081FC1D0 - ldr r2, [sp] - lsls r1, r2, 3 - adds r6, r1, r0 - ldr r4, _0801B584 @ =gChosenMovesByBanks - lsls r0, r5, 1 - adds r3, r0, r4 - ldrh r2, [r6] - mov r8, r1 - mov r10, r0 - ldrh r3, [r3] - cmp r2, r3 - bne _0801B4E4 - lsls r0, r7, 1 - adds r0, r4 - ldrh r1, [r6, 0x2] - ldrh r0, [r0] - cmp r1, r0 - bne _0801B4E4 - adds r0, r5, 0 - bl GetBankIdentity - mov r2, r9 - ands r2, r0 - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - ldr r0, _0801B588 @ =gSideTimer - adds r1, r0 - lsls r0, r7, 4 - orrs r0, r5 - strb r0, [r1, 0x3] - adds r0, r5, 0 - bl GetBankIdentity - mov r1, r9 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0801B588 @ =gSideTimer - adds r0, r1 - ldrh r1, [r6, 0x4] - strh r1, [r0, 0x4] - adds r0, r5, 0 - bl GetBankIdentity - mov r1, r9 - ands r1, r0 - lsls r1, 1 - ldr r2, _0801B58C @ =gSideAffecting - adds r1, r2 - ldrh r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strh r0, [r1] -_0801B4E4: - ldr r0, _0801B580 @ =gUnknown_081FC1D0 - mov r1, r8 - adds r4, r1, r0 - ldr r2, _0801B584 @ =gChosenMovesByBanks - lsls r0, r7, 1 - adds r0, r2 - ldrh r1, [r4] - ldrh r0, [r0] - cmp r1, r0 - bne _0801B54E - mov r0, r10 - adds r1, r0, r2 - ldrh r0, [r4, 0x2] - ldrh r1, [r1] - cmp r0, r1 - bne _0801B54E - adds r0, r5, 0 - bl GetBankIdentity - mov r2, r9 - ands r2, r0 - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - ldr r2, _0801B588 @ =gSideTimer - adds r1, r2 - lsls r0, r5, 4 - orrs r0, r7 - strb r0, [r1, 0x3] - adds r0, r5, 0 - bl GetBankIdentity - mov r1, r9 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0801B588 @ =gSideTimer - adds r0, r1 - ldrh r1, [r4, 0x4] - strh r1, [r0, 0x4] - adds r0, r5, 0 - bl GetBankIdentity - mov r1, r9 - ands r1, r0 - lsls r1, 1 - ldr r2, _0801B58C @ =gSideAffecting - adds r1, r2 - ldrh r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strh r0, [r1] -_0801B54E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0801B580 @ =gUnknown_081FC1D0 -_0801B556: - cmp r5, 0x1 - bhi _0801B55C - b _0801B438 -_0801B55C: - ldr r0, [sp, 0x4] - str r0, [sp] - lsls r0, 3 - adds r0, r4 - ldrh r1, [r0] - ldr r0, _0801B590 @ =0x0000ffff - cmp r1, r0 - beq _0801B56E - b _0801B42E -_0801B56E: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801B580: .4byte gUnknown_081FC1D0 -_0801B584: .4byte gChosenMovesByBanks -_0801B588: .4byte gSideTimer -_0801B58C: .4byte gSideAffecting -_0801B590: .4byte 0x0000ffff - thumb_func_end unref_sub_801B40C - - thumb_func_start sub_801B594 -sub_801B594: @ 801B594 - push {lr} - ldr r0, _0801B5B4 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801B5B0 - ldr r1, _0801B5B8 @ =gBattleScriptingCommandsTable - ldr r0, _0801B5BC @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_0801B5B0: - pop {r0} - bx r0 - .align 2, 0 -_0801B5B4: .4byte gBattleExecBuffer -_0801B5B8: .4byte gBattleScriptingCommandsTable -_0801B5BC: .4byte gBattlescriptCurrInstr - thumb_func_end sub_801B594 - - thumb_func_start sub_801B5C0 -sub_801B5C0: @ 801B5C0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 24 - lsrs r0, r1, 24 - movs r5, 0 - cmp r0, 0 - beq _0801B5DE - subs r0, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - b _0801B5EA -_0801B5DE: - ldr r1, _0801B5FC @ =gBattleMoves - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x6] -_0801B5EA: - cmp r6, 0x40 - bls _0801B5F0 - b _0801B900 -_0801B5F0: - lsls r0, r6, 2 - ldr r1, _0801B600 @ =_0801B604 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801B5FC: .4byte gBattleMoves -_0801B600: .4byte _0801B604 - .align 2, 0 -_0801B604: - .4byte _0801B708 - .4byte _0801B808 - .4byte _0801B8FC - .4byte _0801B900 - .4byte _0801B820 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B808 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B8FC - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B808 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B900 - .4byte _0801B808 -_0801B708: - ldr r0, _0801B7E8 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0801B7EC @ =gSideTimer - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r2, r0, r1 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0801B73A - ldr r1, _0801B7F0 @ =gBattleMons - ldrb r4, [r2, 0x9] - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801B73A - b _0801B850 -_0801B73A: - ldr r0, _0801B7E8 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r7, 1 - mov r8, r0 -_0801B74A: - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0801B7F4 @ =gNoOfAllBanks - ldrb r1, [r1] - bl __modsi3 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _0801B7E8 @ =gBankAttacker - ldrb r2, [r6] - cmp r5, r2 - beq _0801B74A - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - beq _0801B74A - ldr r0, _0801B7F8 @ =gAbsentBankFlags - ldrb r2, [r0] - ldr r1, _0801B7FC @ =gBitTable - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _0801B74A - ldr r0, _0801B800 @ =gBattleMoves - mov r3, r8 - adds r1, r3, r7 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x2] - cmp r0, 0xD - beq _0801B798 - b _0801B900 -_0801B798: - ldrb r1, [r6] - str r2, [sp] - movs r0, 0x10 - movs r2, 0x1F - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801B7AE - b _0801B900 -_0801B7AE: - ldr r2, _0801B7F0 @ =gBattleMons - movs r1, 0x58 - adds r0, r5, 0 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1F - bne _0801B7C2 - b _0801B900 -_0801B7C2: - movs r4, 0x2 - eors r5, r4 - adds r0, r5, 0 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r1, [r0] - adds r0, r5, 0 - bl RecordAbilityBattle - ldr r1, _0801B804 @ =gSpecialStatuses - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - orrs r1, r4 - strb r1, [r0] - b _0801B900 - .align 2, 0 -_0801B7E8: .4byte gBankAttacker -_0801B7EC: .4byte gSideTimer -_0801B7F0: .4byte gBattleMons -_0801B7F4: .4byte gNoOfAllBanks -_0801B7F8: .4byte gAbsentBankFlags -_0801B7FC: .4byte gBitTable -_0801B800: .4byte gBattleMoves -_0801B804: .4byte gSpecialStatuses -_0801B808: - ldr r0, _0801B81C @ =gBankAttacker - ldrb r0, [r0] - bl GetBankIdentity - adds r1, r0, 0 - movs r2, 0x1 - movs r0, 0x1 - ands r0, r1 - eors r0, r2 - b _0801B8B2 - .align 2, 0 -_0801B81C: .4byte gBankAttacker -_0801B820: - ldr r0, _0801B854 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0801B858 @ =gSideTimer - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r2, r0, r1 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0801B860 - ldr r1, _0801B85C @ =gBattleMons - ldrb r4, [r2, 0x9] - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801B860 -_0801B850: - adds r5, r4, 0 - b _0801B900 - .align 2, 0 -_0801B854: .4byte gBankAttacker -_0801B858: .4byte gSideTimer -_0801B85C: .4byte gBattleMons -_0801B860: - ldr r0, _0801B894 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0801B8DC - movs r0, 0x4 - ands r6, r0 - cmp r6, 0 - beq _0801B8DC - ldr r0, _0801B898 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0801B8A0 - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _0801B89C - movs r0, 0x1 - b _0801B8B2 - .align 2, 0 -_0801B894: .4byte gBattleTypeFlags -_0801B898: .4byte gBankAttacker -_0801B89C: - movs r0, 0x3 - b _0801B8B2 -_0801B8A0: - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _0801B8B0 - movs r0, 0 - b _0801B8B2 -_0801B8B0: - movs r0, 0x2 -_0801B8B2: - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0801B8D4 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _0801B8D8 @ =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801B900 - movs r0, 0x2 - eors r5, r0 - b _0801B900 - .align 2, 0 -_0801B8D4: .4byte gAbsentBankFlags -_0801B8D8: .4byte gBitTable -_0801B8DC: - ldr r0, _0801B8F8 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankIdentity - adds r1, r0, 0 - movs r2, 0x1 - movs r0, 0x1 - ands r0, r1 - eors r0, r2 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r5, r0, 24 - b _0801B900 - .align 2, 0 -_0801B8F8: .4byte gBankAttacker -_0801B8FC: - ldr r0, _0801B91C @ =gBankAttacker - ldrb r5, [r0] -_0801B900: - ldr r1, _0801B920 @ =0x02000000 - ldr r0, _0801B91C @ =gBankAttacker - ldrb r0, [r0] - ldr r2, _0801B924 @ =0x00016010 - adds r0, r2 - adds r0, r1 - strb r5, [r0] - adds r0, r5, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801B91C: .4byte gBankAttacker -_0801B920: .4byte 0x02000000 -_0801B924: .4byte 0x00016010 - thumb_func_end sub_801B5C0 - - thumb_func_start sub_801B928 -sub_801B928: @ 801B928 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - ldr r0, _0801B9E0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0801B9DA - ldr r7, _0801B9E4 @ =gBankAttacker - ldrb r0, [r7] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0801B9DA - ldr r5, _0801B9E8 @ =gBattleMons - ldrb r0, [r7] - movs r1, 0x58 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r5, 0 - adds r0, 0x54 - adds r0, r1, r0 - ldr r0, [r0] - adds r2, r5, 0 - adds r2, 0x3C - adds r1, r2 - bl IsOtherTrainer - lsls r0, 24 - cmp r0, 0 - beq _0801B9DA - ldr r0, _0801B9EC @ =0x0000080e - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0801B9DA - movs r6, 0xA - ldr r0, _0801B9F0 @ =0x00000808 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0801B98E - movs r6, 0x1E -_0801B98E: - ldr r0, _0801B9F4 @ =0x0000080a - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0801B99C - movs r6, 0x32 -_0801B99C: - ldr r0, _0801B9F8 @ =0x0000080c - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0801B9AA - movs r6, 0x46 -_0801B9AA: - ldrb r0, [r7] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r5 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, r6 - bls _0801B9DA - bl Random - movs r1, 0xFF - ands r1, r0 - ldrb r0, [r7] - mov r2, r8 - muls r2, r0 - adds r0, r2, r5 - adds r0, 0x2A - ldrb r0, [r0] - adds r0, r6 - muls r0, r1 - asrs r4, r0, 8 - cmp r4, r6 - bge _0801B9FC -_0801B9DA: - movs r0, 0 - b _0801BC24 - .align 2, 0 -_0801B9E0: .4byte gBattleTypeFlags -_0801B9E4: .4byte gBankAttacker -_0801B9E8: .4byte gBattleMons -_0801B9EC: .4byte 0x0000080e -_0801B9F0: .4byte 0x00000808 -_0801B9F4: .4byte 0x0000080a -_0801B9F8: .4byte 0x0000080c -_0801B9FC: - ldr r3, _0801BA3C @ =gCurrentMove - ldrh r0, [r3] - cmp r0, 0x63 - bne _0801BA12 - adds r0, r5, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r1, [r0] - ldr r2, _0801BA40 @ =0xff7fffff - ands r1, r2 - str r1, [r0] -_0801BA12: - ldrb r0, [r7] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r1, r5, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0801BA4C - ldrh r0, [r3] - cmp r0, 0xAD - beq _0801BA34 - cmp r0, 0xD6 - bne _0801BA4C -_0801BA34: - ldr r1, _0801BA44 @ =gBattlescriptCurrInstr - ldr r0, _0801BA48 @ =gUnknown_081D995F - b _0801BBCE - .align 2, 0 -_0801BA3C: .4byte gCurrentMove -_0801BA40: .4byte 0xff7fffff -_0801BA44: .4byte gBattlescriptCurrInstr -_0801BA48: .4byte gUnknown_081D995F -_0801BA4C: - bl Random - movs r5, 0xFF - adds r1, r5, 0 - ands r1, r0 - ldr r7, _0801BB04 @ =gBattleMons - ldr r2, _0801BB08 @ =gBankAttacker - mov r9, r2 - ldrb r3, [r2] - movs r0, 0x58 - mov r8, r0 - mov r0, r8 - muls r0, r3 - adds r0, r7 - adds r0, 0x2A - ldrb r2, [r0] - adds r0, r2, r6 - muls r0, r1 - asrs r4, r0, 8 - cmp r4, r6 - bge _0801BB3C - ldr r7, _0801BB0C @ =gBitTable - ldr r5, _0801BB10 @ =gCurrMovePos - ldrb r0, [r5] - lsls r0, 2 - adds r0, r7 - ldrb r1, [r0] - adds r0, r3, 0 - movs r2, 0xFF - bl sub_8015A98 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bne _0801BA94 - b _0801BBBE -_0801BA94: - adds r6, r5, 0 - ldr r1, _0801BB14 @ =gUnknown_02024BE5 - mov r9, r1 - movs r2, 0x3 - mov r8, r2 -_0801BA9E: - bl Random - mov r1, r8 - ands r0, r1 - mov r2, r9 - strb r0, [r2] - strb r0, [r6] - ldrb r0, [r6] - lsls r0, 2 - adds r0, r7 - ldr r5, [r0] - ands r5, r4 - cmp r5, 0 - bne _0801BA9E - ldr r4, _0801BB18 @ =gUnknown_02024BEA - ldr r3, _0801BB04 @ =gBattleMons - ldr r0, _0801BB10 @ =gCurrMovePos - ldrb r0, [r0] - lsls r0, 1 - ldr r1, _0801BB08 @ =gBankAttacker - ldrb r2, [r1] - movs r1, 0x58 - muls r1, r2 - adds r0, r1 - adds r3, 0xC - adds r0, r3 - ldrh r0, [r0] - strh r0, [r4] - ldr r0, _0801BB1C @ =gBattleCommunication - strb r5, [r0, 0x3] - ldr r0, _0801BB20 @ =gDynamicBasePower - movs r1, 0 - strh r5, [r0] - ldr r0, _0801BB24 @ =0x02000000 - ldr r2, _0801BB28 @ =0x0001601c - adds r0, r2 - strb r1, [r0] - ldr r1, _0801BB2C @ =gBattlescriptCurrInstr - ldr r0, _0801BB30 @ =gUnknown_081D996F - str r0, [r1] - ldrh r0, [r4] - movs r1, 0 - bl sub_801B5C0 - ldr r1, _0801BB34 @ =gBankTarget - strb r0, [r1] - ldr r2, _0801BB38 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 14 - b _0801BC1E - .align 2, 0 -_0801BB04: .4byte gBattleMons -_0801BB08: .4byte gBankAttacker -_0801BB0C: .4byte gBitTable -_0801BB10: .4byte gCurrMovePos -_0801BB14: .4byte gUnknown_02024BE5 -_0801BB18: .4byte gUnknown_02024BEA -_0801BB1C: .4byte gBattleCommunication -_0801BB20: .4byte gDynamicBasePower -_0801BB24: .4byte 0x02000000 -_0801BB28: .4byte 0x0001601c -_0801BB2C: .4byte gBattlescriptCurrInstr -_0801BB30: .4byte gUnknown_081D996F -_0801BB34: .4byte gBankTarget -_0801BB38: .4byte gHitMarker -_0801BB3C: - subs r0, r2, r6 - lsls r0, 24 - lsrs r6, r0, 24 - bl Random - adds r4, r5, 0 - ands r4, r0 - cmp r4, r6 - bge _0801BBB8 - mov r1, r9 - ldrb r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r7, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - ands r0, r5 - cmp r0, 0 - bne _0801BBB8 - adds r0, r1, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x48 - beq _0801BBB8 - cmp r0, 0xF - beq _0801BBB8 - movs r2, 0 - ldr r0, _0801BBAC @ =gNoOfAllBanks - ldrb r3, [r0] - mov r8, r0 - cmp r2, r3 - bge _0801BB9E - ldr r0, [r7, 0x50] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - bne _0801BB9E - adds r1, r7, 0 - adds r1, 0x50 - movs r5, 0x70 -_0801BB8E: - adds r1, 0x58 - adds r2, 0x1 - cmp r2, r3 - bge _0801BB9E - ldr r0, [r1] - ands r0, r5 - cmp r0, 0 - beq _0801BB8E -_0801BB9E: - mov r0, r8 - ldrb r0, [r0] - cmp r2, r0 - bne _0801BBB8 - ldr r1, _0801BBB0 @ =gBattlescriptCurrInstr - ldr r0, _0801BBB4 @ =gUnknown_081D9989 - b _0801BBCE - .align 2, 0 -_0801BBAC: .4byte gNoOfAllBanks -_0801BBB0: .4byte gBattlescriptCurrInstr -_0801BBB4: .4byte gUnknown_081D9989 -_0801BBB8: - subs r4, r6 - cmp r4, r6 - blt _0801BBE0 -_0801BBBE: - bl Random - ldr r2, _0801BBD4 @ =gBattleCommunication - movs r1, 0x3 - ands r1, r0 - strb r1, [r2, 0x5] - ldr r1, _0801BBD8 @ =gBattlescriptCurrInstr - ldr r0, _0801BBDC @ =gUnknown_081D9977 -_0801BBCE: - str r0, [r1] - movs r0, 0x1 - b _0801BC24 - .align 2, 0 -_0801BBD4: .4byte gBattleCommunication -_0801BBD8: .4byte gBattlescriptCurrInstr -_0801BBDC: .4byte gUnknown_081D9977 -_0801BBE0: - ldr r4, _0801BC34 @ =gBankAttacker - ldrb r1, [r4] - movs r0, 0x58 - muls r1, r0 - ldr r0, _0801BC38 @ =gBattleMons - adds r1, r0 - movs r0, 0x28 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldrb r0, [r4] - str r0, [sp, 0x8] - ldrb r0, [r4] - str r0, [sp, 0xC] - adds r0, r1, 0 - movs r2, 0x1 - movs r3, 0 - bl CalculateBaseDamage - ldr r1, _0801BC3C @ =gBattleMoveDamage - str r0, [r1] - ldr r1, _0801BC40 @ =gBankTarget - ldrb r0, [r4] - strb r0, [r1] - ldr r1, _0801BC44 @ =gBattlescriptCurrInstr - ldr r0, _0801BC48 @ =gUnknown_081D99A0 - str r0, [r1] - ldr r2, _0801BC4C @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 -_0801BC1E: - orrs r0, r1 - str r0, [r2] - movs r0, 0x2 -_0801BC24: - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801BC34: .4byte gBankAttacker -_0801BC38: .4byte gBattleMons -_0801BC3C: .4byte gBattleMoveDamage -_0801BC40: .4byte gBankTarget -_0801BC44: .4byte gBattlescriptCurrInstr -_0801BC48: .4byte gUnknown_081D99A0 -_0801BC4C: .4byte gHitMarker - thumb_func_end sub_801B928 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_4.s b/asm/battle_4.s deleted file mode 100644 index 6747abc6c..000000000 --- a/asm/battle_4.s +++ /dev/null @@ -1,32351 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start atk00_attackcanceler -atk00_attackcanceler: @ 801BC50 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r0, _0801BC6C @ =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - beq _0801BC74 - ldr r1, _0801BC70 @ =gFightStateTracker - movs r0, 0xC - strb r0, [r1] - b _0801BFF4 - .align 2, 0 -_0801BC6C: .4byte gBattleOutcome -_0801BC70: .4byte gFightStateTracker -_0801BC74: - ldr r2, _0801BCA4 @ =gBattleMons - ldr r0, _0801BCA8 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801BCB8 - ldr r2, _0801BCAC @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - bne _0801BCB8 - movs r0, 0x80 - lsls r0, 12 - orrs r1, r0 - str r1, [r2] - ldr r1, _0801BCB0 @ =gBattlescriptCurrInstr - ldr r0, _0801BCB4 @ =BattleScript_EndTurn - b _0801BFF2 - .align 2, 0 -_0801BCA4: .4byte gBattleMons -_0801BCA8: .4byte gBankAttacker -_0801BCAC: .4byte gHitMarker -_0801BCB0: .4byte gBattlescriptCurrInstr -_0801BCB4: .4byte BattleScript_EndTurn -_0801BCB8: - bl sub_8017718 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _0801BCC6 - b _0801BFF4 -_0801BCC6: - ldr r0, _0801BD34 @ =gBankTarget - ldrb r1, [r0] - str r2, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0801BCDE - b _0801BFF4 -_0801BCDE: - ldr r4, _0801BD38 @ =gBattleMons - ldr r0, _0801BD3C @ =gCurrMovePos - ldrb r1, [r0] - ldr r3, _0801BD40 @ =gBankAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r2, r0 - adds r1, r2 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - ldr r5, _0801BD44 @ =gHitMarker - cmp r0, 0 - bne _0801BD5C - ldr r0, _0801BD48 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xA5 - beq _0801BD5C - ldr r0, [r5] - ldr r1, _0801BD4C @ =0x00800200 - ands r0, r1 - cmp r0, 0 - bne _0801BD5C - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _0801BD5C - ldr r1, _0801BD50 @ =gBattlescriptCurrInstr - ldr r0, _0801BD54 @ =BattleScript_NoPPForMove - str r0, [r1] - ldr r2, _0801BD58 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - b _0801BFF4 - .align 2, 0 -_0801BD34: .4byte gBankTarget -_0801BD38: .4byte gBattleMons -_0801BD3C: .4byte gCurrMovePos -_0801BD40: .4byte gBankAttacker -_0801BD44: .4byte gHitMarker -_0801BD48: .4byte gCurrentMove -_0801BD4C: .4byte 0x00800200 -_0801BD50: .4byte gBattlescriptCurrInstr -_0801BD54: .4byte BattleScript_NoPPForMove -_0801BD58: .4byte gBattleMoveFlags -_0801BD5C: - ldr r0, [r5] - ldr r1, _0801BDA0 @ =0xff7fffff - ands r0, r1 - str r0, [r5] - movs r6, 0x80 - lsls r6, 18 - ands r0, r6 - cmp r0, 0 - bne _0801BDB4 - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r1, r4, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _0801BDB4 - bl sub_801B928 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _0801BDB4 - cmp r2, 0x2 - bne _0801BDA4 - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - b _0801BFF4 - .align 2, 0 -_0801BDA0: .4byte 0xff7fffff -_0801BDA4: - ldr r0, _0801BDB0 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _0801BFF4 - .align 2, 0 -_0801BDB0: .4byte gBattleMoveFlags -_0801BDB4: - ldr r2, _0801BE18 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 18 - orrs r0, r1 - str r0, [r2] - ldr r2, _0801BE1C @ =gProtectStructs - ldr r1, _0801BE20 @ =gBankTarget - ldrb r3, [r1] - lsls r0, r3, 4 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 27 - mov r8, r1 - mov r9, r2 - cmp r0, 0 - bge _0801BE3C - ldr r2, _0801BE24 @ =gBattleMoves - ldr r0, _0801BE28 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801BE3C - ldr r0, _0801BE2C @ =gBankAttacker - ldrb r0, [r0] - ldr r2, _0801BE30 @ =0x00000115 - adds r1, r3, 0 - bl sub_80151D4 - mov r0, r8 - ldrb r1, [r0] - lsls r1, 4 - add r1, r9 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bl b_movescr_stack_push_cursor - ldr r1, _0801BE34 @ =gBattlescriptCurrInstr - ldr r0, _0801BE38 @ =BattleScript_MagicCoatBounce - b _0801BFF2 - .align 2, 0 -_0801BE18: .4byte gHitMarker -_0801BE1C: .4byte gProtectStructs -_0801BE20: .4byte gBankTarget -_0801BE24: .4byte gBattleMoves -_0801BE28: .4byte gCurrentMove -_0801BE2C: .4byte gBankAttacker -_0801BE30: .4byte 0x00000115 -_0801BE34: .4byte gBattlescriptCurrInstr -_0801BE38: .4byte BattleScript_MagicCoatBounce -_0801BE3C: - movs r2, 0 - ldr r0, _0801BEB8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r2, r0 - bge _0801BE7E - ldr r6, _0801BEBC @ =gProtectStructs - ldr r1, _0801BEC0 @ =gBattleMoves - mov r12, r1 - adds r5, r0, 0 - ldr r7, _0801BEC4 @ =gTurnOrder -_0801BE50: - adds r4, r2, r7 - ldrb r3, [r4] - lsls r0, r3, 4 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _0801BE78 - ldr r0, _0801BEC8 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r1, [r0, 0x8] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801BE78 - b _0801BFA4 -_0801BE78: - adds r2, 0x1 - cmp r2, r5 - blt _0801BE50 -_0801BE7E: - ldr r0, _0801BECC @ =gSpecialStatuses - mov r1, r8 - ldrb r2, [r1] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r3, [r1] - lsls r0, r3, 30 - cmp r0, 0 - bge _0801BEDC - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - strb r0, [r1] - ldr r4, _0801BED0 @ =gLastUsedAbility - movs r0, 0x1F - strb r0, [r4] - bl b_movescr_stack_push_cursor - ldr r1, _0801BED4 @ =gBattlescriptCurrInstr - ldr r0, _0801BED8 @ =BattleScript_TookAttack - str r0, [r1] - mov r2, r8 - ldrb r0, [r2] - ldrb r1, [r4] - bl RecordAbilityBattle - b _0801BFF4 - .align 2, 0 -_0801BEB8: .4byte gNoOfAllBanks -_0801BEBC: .4byte gProtectStructs -_0801BEC0: .4byte gBattleMoves -_0801BEC4: .4byte gTurnOrder -_0801BEC8: .4byte gCurrentMove -_0801BECC: .4byte gSpecialStatuses -_0801BED0: .4byte gLastUsedAbility -_0801BED4: .4byte gBattlescriptCurrInstr -_0801BED8: .4byte BattleScript_TookAttack -_0801BEDC: - lsls r0, r2, 4 - add r0, r9 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _0801BEEA - b _0801BFEC -_0801BEEA: - ldr r1, _0801BF80 @ =gBattleMoves - ldr r2, _0801BF84 @ =gCurrentMove - ldrh r3, [r2] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - adds r4, r2, 0 - cmp r0, 0 - beq _0801BFEC - cmp r3, 0xAE - bne _0801BF28 - ldr r2, _0801BF88 @ =gBattleMons - ldr r0, _0801BF8C @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _0801BF28 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _0801BFEC -_0801BF28: - ldrh r0, [r4] - bl sub_8028350 - lsls r0, 24 - cmp r0, 0 - beq _0801BF4E - ldr r1, _0801BF88 @ =gBattleMons - ldr r0, _0801BF8C @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _0801BFEC -_0801BF4E: - ldr r0, _0801BF8C @ =gBankAttacker - ldrb r0, [r0] - bl CancelMultiTurnMoves - ldr r2, _0801BF90 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801BF94 @ =gMoveHitWith - ldr r3, _0801BF98 @ =gBankTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, _0801BF9C @ =gUnknown_02024C44 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r1, _0801BFA0 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - b _0801BFEC - .align 2, 0 -_0801BF80: .4byte gBattleMoves -_0801BF84: .4byte gCurrentMove -_0801BF88: .4byte gBattleMons -_0801BF8C: .4byte gBankAttacker -_0801BF90: .4byte gBattleMoveFlags -_0801BF94: .4byte gMoveHitWith -_0801BF98: .4byte gBankTarget -_0801BF9C: .4byte gUnknown_02024C44 -_0801BFA0: .4byte gBattleCommunication -_0801BFA4: - ldr r0, _0801BFD4 @ =gBankAttacker - ldrb r0, [r0] - ldr r2, _0801BFD8 @ =0x00000121 - adds r1, r3, 0 - bl sub_80151D4 - ldrb r1, [r4] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r0, _0801BFDC @ =0x02000000 - ldrb r1, [r4] - ldr r2, _0801BFE0 @ =0x00016003 - adds r0, r2 - strb r1, [r0] - bl b_movescr_stack_push_cursor - ldr r1, _0801BFE4 @ =gBattlescriptCurrInstr - ldr r0, _0801BFE8 @ =BattleScript_SnatchedMove - b _0801BFF2 - .align 2, 0 -_0801BFD4: .4byte gBankAttacker -_0801BFD8: .4byte 0x00000121 -_0801BFDC: .4byte 0x02000000 -_0801BFE0: .4byte 0x00016003 -_0801BFE4: .4byte gBattlescriptCurrInstr -_0801BFE8: .4byte BattleScript_SnatchedMove -_0801BFEC: - ldr r1, _0801C004 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_0801BFF2: - str r0, [r1] -_0801BFF4: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801C004: .4byte gBattlescriptCurrInstr - thumb_func_end atk00_attackcanceler - - thumb_func_start mcmd_jump_if_move_not_executed -mcmd_jump_if_move_not_executed: @ 801C008 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r1, _0801C054 @ =gBattlescriptCurrInstr - ldr r5, [r1] - adds r4, r5, r0 - ldr r0, _0801C058 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801C068 - ldr r1, _0801C05C @ =gMoveHitWith - ldr r3, _0801C060 @ =gBankTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, _0801C064 @ =gUnknown_02024C44 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldrb r4, [r5, 0x1] - ldrb r0, [r5, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r5, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r5, 0x4] - lsls r0, 24 - orrs r4, r0 - b _0801C082 - .align 2, 0 -_0801C054: .4byte gBattlescriptCurrInstr -_0801C058: .4byte gBattleMoveFlags -_0801C05C: .4byte gMoveHitWith -_0801C060: .4byte gBankTarget -_0801C064: .4byte gUnknown_02024C44 -_0801C068: - bl b_feature_update_destiny_bond - ldr r0, _0801C090 @ =gBankTarget - ldrb r1, [r0] - str r6, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801C086 -_0801C082: - ldr r0, _0801C094 @ =gBattlescriptCurrInstr - str r4, [r0] -_0801C086: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801C090: .4byte gBankTarget -_0801C094: .4byte gBattlescriptCurrInstr - thumb_func_end mcmd_jump_if_move_not_executed - - thumb_func_start atk40_jump_if_move_affected_by_protect -atk40_jump_if_move_affected_by_protect: @ 801C098 - push {lr} - ldr r1, _0801C0E0 @ =gProtectStructs - ldr r0, _0801C0E4 @ =gBankTarget - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0801C0F8 - ldr r2, _0801C0E8 @ =gBattleMoves - ldr r0, _0801C0EC @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801C0F8 - ldr r2, _0801C0F0 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x5 - movs r1, 0 - bl mcmd_jump_if_move_not_executed - ldr r1, _0801C0F4 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - b _0801C100 - .align 2, 0 -_0801C0E0: .4byte gProtectStructs -_0801C0E4: .4byte gBankTarget -_0801C0E8: .4byte gBattleMoves -_0801C0EC: .4byte gCurrentMove -_0801C0F0: .4byte gBattleMoveFlags -_0801C0F4: .4byte gBattleCommunication -_0801C0F8: - ldr r1, _0801C104 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0801C100: - pop {r0} - bx r0 - .align 2, 0 -_0801C104: .4byte gBattlescriptCurrInstr - thumb_func_end atk40_jump_if_move_affected_by_protect - - thumb_func_start sub_801C108 -sub_801C108: @ 801C108 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r4, 0 - ldr r1, _0801C15C @ =gProtectStructs - ldr r0, _0801C160 @ =gBankTarget - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0801C154 - ldr r2, _0801C164 @ =gBattleMoves - ldr r0, _0801C168 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801C154 - ldr r2, _0801C16C @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x7 - adds r1, r3, 0 - bl mcmd_jump_if_move_not_executed - ldr r1, _0801C170 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - movs r4, 0x1 -_0801C154: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0801C15C: .4byte gProtectStructs -_0801C160: .4byte gBankTarget -_0801C164: .4byte gBattleMoves -_0801C168: .4byte gCurrentMove -_0801C16C: .4byte gBattleMoveFlags -_0801C170: .4byte gBattleCommunication - thumb_func_end sub_801C108 - - thumb_func_start sub_801C174 -sub_801C174: @ 801C174 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r2, _0801C1D4 @ =gStatuses3 - ldr r3, _0801C1D8 @ =gBankTarget - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x18 - ands r1, r0 - adds r6, r2, 0 - cmp r1, 0 - beq _0801C1A6 - ldr r1, _0801C1DC @ =gDisableStructs - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, _0801C1E0 @ =gBankAttacker - ldrb r0, [r0, 0x15] - ldrb r1, [r1] - cmp r0, r1 - beq _0801C290 -_0801C1A6: - ldr r0, _0801C1E4 @ =gHitMarker - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 9 - ands r1, r2 - adds r2, r0, 0 - cmp r1, 0 - bne _0801C1EC - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801C1EC -_0801C1C6: - ldr r0, _0801C1E8 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _0801C290 - .align 2, 0 -_0801C1D4: .4byte gStatuses3 -_0801C1D8: .4byte gBankTarget -_0801C1DC: .4byte gDisableStructs -_0801C1E0: .4byte gBankAttacker -_0801C1E4: .4byte gHitMarker -_0801C1E8: .4byte gBattleMoveFlags -_0801C1EC: - ldr r0, [r2] - ldr r1, _0801C29C @ =0xfffeffff - ands r0, r1 - str r0, [r2] - movs r1, 0x80 - lsls r1, 10 - ands r0, r1 - cmp r0, 0 - bne _0801C20E - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0801C1C6 -_0801C20E: - ldr r0, [r2] - ldr r1, _0801C2A0 @ =0xfffdffff - ands r0, r1 - str r0, [r2] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - bne _0801C22E - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ands r0, r1 - cmp r0, 0 - bne _0801C1C6 -_0801C22E: - ldr r0, [r2] - ldr r1, _0801C2A4 @ =0xfffbffff - ands r0, r1 - str r0, [r2] - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - lsls r4, r5, 1 - cmp r0, 0 - bne _0801C27E - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801C27E - ldr r0, _0801C2A8 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0801C27E - ldr r0, _0801C2AC @ =gBattleMoves - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x98 - beq _0801C290 -_0801C27E: - ldr r1, _0801C2AC @ =gBattleMoves - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x11 - beq _0801C290 - cmp r0, 0x4E - bne _0801C2B0 -_0801C290: - movs r0, 0x7 - adds r1, r5, 0 - bl mcmd_jump_if_move_not_executed - movs r0, 0x1 - b _0801C2B2 - .align 2, 0 -_0801C29C: .4byte 0xfffeffff -_0801C2A0: .4byte 0xfffdffff -_0801C2A4: .4byte 0xfffbffff -_0801C2A8: .4byte gBattleWeather -_0801C2AC: .4byte gBattleMoves -_0801C2B0: - movs r0, 0 -_0801C2B2: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_801C174 - - thumb_func_start atk01_accuracycheck -atk01_accuracycheck: @ 801C2BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, _0801C314 @ =gBattlescriptCurrInstr - ldr r5, [r0] - ldrb r6, [r5, 0x5] - ldrb r1, [r5, 0x6] - lsls r1, 8 - orrs r6, r1 - adds r1, r6, 0x2 - lsls r1, 16 - lsrs r1, 16 - adds r7, r0, 0 - cmp r1, 0x1 - bhi _0801C378 - ldr r2, _0801C318 @ =gStatuses3 - ldr r3, _0801C31C @ =gBankTarget - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x18 - ands r1, r0 - cmp r1, 0 - beq _0801C32C - ldr r0, _0801C320 @ =0x0000ffff - cmp r6, r0 - bne _0801C32C - ldr r1, _0801C324 @ =gDisableStructs - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, _0801C328 @ =gBankAttacker - ldrb r0, [r0, 0x15] - ldrb r1, [r1] - cmp r0, r1 - bne _0801C32C - adds r0, r5, 0x7 - str r0, [r7] - b _0801C632 - .align 2, 0 -_0801C314: .4byte gBattlescriptCurrInstr -_0801C318: .4byte gStatuses3 -_0801C31C: .4byte gBankTarget -_0801C320: .4byte 0x0000ffff -_0801C324: .4byte gDisableStructs -_0801C328: .4byte gBankAttacker -_0801C32C: - ldrb r0, [r3] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ldr r1, _0801C358 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _0801C35C - ldr r2, [r7] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r7] - b _0801C632 - .align 2, 0 -_0801C358: .4byte 0x000400c0 -_0801C35C: - movs r0, 0 - bl sub_801C108 - lsls r0, 24 - cmp r0, 0 - beq _0801C36A - b _0801C632 -_0801C36A: - ldr r1, _0801C374 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x7 - str r0, [r1] - b _0801C632 - .align 2, 0 -_0801C374: .4byte gBattlescriptCurrInstr -_0801C378: - cmp r6, 0 - bne _0801C380 - ldr r0, _0801C398 @ =gCurrentMove - ldrh r6, [r0] -_0801C380: - ldr r0, _0801C39C @ =0x02000000 - ldr r1, _0801C3A0 @ =0x0001601c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0801C3A4 - movs r2, 0x3F - mov r10, r2 - mov r3, r10 - ands r3, r0 - mov r10, r3 - b _0801C3B2 - .align 2, 0 -_0801C398: .4byte gCurrentMove -_0801C39C: .4byte 0x02000000 -_0801C3A0: .4byte 0x0001601c -_0801C3A4: - ldr r1, _0801C3F8 @ =gBattleMoves - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - mov r10, r0 -_0801C3B2: - adds r0, r6, 0 - bl sub_801C108 - lsls r0, 24 - cmp r0, 0 - beq _0801C3C0 - b _0801C632 -_0801C3C0: - adds r0, r6, 0 - bl sub_801C174 - lsls r0, 24 - cmp r0, 0 - beq _0801C3CE - b _0801C632 -_0801C3CE: - ldr r3, _0801C3FC @ =gBattleMons - ldr r0, _0801C400 @ =gBankTarget - ldrb r0, [r0] - movs r2, 0x58 - adds r4, r0, 0 - muls r4, r2 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0801C408 - ldr r0, _0801C404 @ =gBankAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - ldrb r5, [r0, 0x1E] - b _0801C41E - .align 2, 0 -_0801C3F8: .4byte gBattleMoves -_0801C3FC: .4byte gBattleMons -_0801C400: .4byte gBankTarget -_0801C404: .4byte gBankAttacker -_0801C408: - ldr r0, _0801C56C @ =gBankAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - ldrb r0, [r0, 0x1E] - adds r0, 0x6 - adds r1, r4, r3 - ldrb r1, [r1, 0x1F] - subs r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 -_0801C41E: - lsls r0, r5, 24 - cmp r0, 0 - bge _0801C426 - movs r5, 0 -_0801C426: - lsls r0, r5, 24 - asrs r0, 24 - cmp r0, 0xC - ble _0801C430 - movs r5, 0xC -_0801C430: - ldr r1, _0801C570 @ =gBattleMoves - lsls r4, r6, 1 - adds r0, r4, r6 - lsls r0, 2 - adds r7, r0, r1 - ldrb r0, [r7, 0x3] - mov r8, r0 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - str r4, [sp, 0x4] - cmp r0, 0 - bne _0801C482 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801C482 - ldr r0, _0801C574 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0801C482 - ldrb r0, [r7] - cmp r0, 0x98 - bne _0801C482 - movs r1, 0x32 - mov r8, r1 -_0801C482: - ldr r1, _0801C578 @ =gAccuracyStageRatios - lsls r0, r5, 24 - asrs r0, 22 - adds r0, r1 - ldrb r1, [r0] - mov r4, r8 - muls r4, r1 - ldrb r1, [r0, 0x1] - adds r0, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r7, _0801C57C @ =gBattleMons - ldr r0, _0801C56C @ =gBankAttacker - ldrb r0, [r0] - movs r5, 0x58 - muls r0, r5 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0xE - bne _0801C4C0 - lsls r0, r4, 6 - adds r0, r4 - lsls r0, 1 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_0801C4C0: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0801C518 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801C518 - ldr r0, _0801C580 @ =gBankTarget - ldrb r0, [r0] - muls r0, r5 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x8 - bne _0801C518 - ldr r0, _0801C574 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _0801C518 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_0801C518: - ldr r2, _0801C57C @ =gBattleMons - ldr r0, _0801C56C @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r9, r2 - cmp r0, 0x37 - bne _0801C544 - mov r2, r10 - cmp r2, 0x8 - bhi _0801C544 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_0801C544: - ldr r3, _0801C580 @ =gBankTarget - mov r8, r3 - ldrb r2, [r3] - movs r7, 0x58 - adds r0, r2, 0 - muls r0, r7 - mov r3, r9 - adds r1, r0, r3 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0801C588 - ldr r1, _0801C584 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x7] - ldrb r2, [r0, 0x1A] - b _0801C5A4 - .align 2, 0 -_0801C56C: .4byte gBankAttacker -_0801C570: .4byte gBattleMoves -_0801C574: .4byte gBattleWeather -_0801C578: .4byte gAccuracyStageRatios -_0801C57C: .4byte gBattleMons -_0801C580: .4byte gBankTarget -_0801C584: .4byte gEnigmaBerries -_0801C588: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - ldrb r0, [r1] - muls r0, r7 - add r0, r9 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r2, r0, 24 -_0801C5A4: - ldr r0, _0801C608 @ =gStringBank - ldr r1, _0801C60C @ =gBankTarget - ldrb r1, [r1] - strb r1, [r0] - cmp r5, 0x16 - bne _0801C5C0 - movs r0, 0x64 - subs r0, r2 - muls r0, r4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_0801C5C0: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x1 - cmp r0, r4 - ble _0801C62A - ldr r2, _0801C610 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0801C614 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0801C620 - ldr r1, _0801C618 @ =gBattleMoves - ldr r2, [sp, 0x4] - adds r0, r2, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x6] - cmp r0, 0x8 - beq _0801C602 - cmp r0, 0x20 - bne _0801C620 -_0801C602: - ldr r1, _0801C61C @ =gBattleCommunication - movs r0, 0x2 - b _0801C624 - .align 2, 0 -_0801C608: .4byte gStringBank -_0801C60C: .4byte gBankTarget -_0801C610: .4byte gBattleMoveFlags -_0801C614: .4byte gBattleTypeFlags -_0801C618: .4byte gBattleMoves -_0801C61C: .4byte gBattleCommunication -_0801C620: - ldr r1, _0801C644 @ =gBattleCommunication - movs r0, 0 -_0801C624: - strb r0, [r1, 0x6] - bl b_wonderguard_and_levitate -_0801C62A: - movs r0, 0x7 - adds r1, r6, 0 - bl mcmd_jump_if_move_not_executed -_0801C632: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801C644: .4byte gBattleCommunication - thumb_func_end atk01_accuracycheck - - thumb_func_start atk02_attackstring -atk02_attackstring: @ 801C648 - push {r4,r5,lr} - ldr r0, _0801C688 @ =gBattleExecBuffer - ldr r5, [r0] - cmp r5, 0 - bne _0801C680 - ldr r4, _0801C68C @ =gHitMarker - ldr r0, [r4] - movs r1, 0xC0 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - bne _0801C674 - ldr r0, _0801C690 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x4 - bl PrepareStringBattle - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 3 - orrs r0, r1 - str r0, [r4] -_0801C674: - ldr r0, _0801C694 @ =gBattlescriptCurrInstr - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, _0801C698 @ =gBattleCommunication - strb r5, [r0, 0x7] -_0801C680: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801C688: .4byte gBattleExecBuffer -_0801C68C: .4byte gHitMarker -_0801C690: .4byte gBankAttacker -_0801C694: .4byte gBattlescriptCurrInstr -_0801C698: .4byte gBattleCommunication - thumb_func_end atk02_attackstring - - thumb_func_start atk03_ppreduce -atk03_ppreduce: @ 801C69C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r6, 0x1 - ldr r0, _0801C6EC @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0801C6B4 - b _0801C84E -_0801C6B4: - ldr r1, _0801C6F0 @ =gSpecialStatuses - ldr r2, _0801C6F4 @ =gBankAttacker - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r4, r0, 31 - mov r9, r2 - cmp r4, 0 - bne _0801C756 - ldr r2, _0801C6F8 @ =gBattleMoves - ldr r0, _0801C6FC @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - cmp r0, 0x20 - beq _0801C706 - cmp r0, 0x20 - bgt _0801C700 - cmp r0, 0x8 - beq _0801C71C - b _0801C736 - .align 2, 0 -_0801C6EC: .4byte gBattleExecBuffer -_0801C6F0: .4byte gSpecialStatuses -_0801C6F4: .4byte gBankAttacker -_0801C6F8: .4byte gBattleMoves -_0801C6FC: .4byte gCurrentMove -_0801C700: - cmp r0, 0x40 - beq _0801C71C - b _0801C736 -_0801C706: - str r4, [sp] - movs r0, 0x12 - adds r1, r3, 0 - movs r2, 0x2E - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0x1 - b _0801C756 -_0801C71C: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x10 - movs r2, 0x2E - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - adds r6, r0 - b _0801C756 -_0801C736: - ldr r1, _0801C7B8 @ =gBankTarget - mov r2, r9 - ldrb r0, [r2] - ldrb r7, [r1] - cmp r0, r7 - beq _0801C756 - ldr r2, _0801C7BC @ =gBattleMons - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2E - bne _0801C756 - adds r6, 0x1 -_0801C756: - ldr r0, _0801C7C0 @ =gHitMarker - ldr r4, [r0] - movs r0, 0xA0 - lsls r0, 4 - ands r4, r0 - cmp r4, 0 - bne _0801C83C - ldr r2, _0801C7BC @ =gBattleMons - ldr r3, _0801C7C4 @ =gCurrMovePos - ldr r1, _0801C7C8 @ =gBankAttacker - ldrb r5, [r1] - movs r0, 0x58 - mov r8, r0 - mov r0, r8 - muls r0, r5 - ldrb r7, [r3] - adds r0, r7 - movs r7, 0x24 - adds r7, r2 - mov r12, r7 - add r0, r12 - ldrb r0, [r0] - mov r9, r1 - mov r10, r2 - adds r7, r3, 0 - cmp r0, 0 - beq _0801C83C - ldr r0, _0801C7CC @ =gProtectStructs - lsls r1, r5, 4 - adds r1, r0 - ldrb r0, [r1, 0x2] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1, 0x2] - mov r1, r9 - ldrb r0, [r1] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldrb r1, [r7] - adds r0, r1 - mov r1, r12 - adds r2, r0, r1 - ldrb r0, [r2] - cmp r0, r6 - ble _0801C7D0 - subs r0, r6 - strb r0, [r2] - b _0801C7D2 - .align 2, 0 -_0801C7B8: .4byte gBankTarget -_0801C7BC: .4byte gBattleMons -_0801C7C0: .4byte gHitMarker -_0801C7C4: .4byte gCurrMovePos -_0801C7C8: .4byte gBankAttacker -_0801C7CC: .4byte gProtectStructs -_0801C7D0: - strb r4, [r2] -_0801C7D2: - mov r2, r9 - ldrb r3, [r2] - movs r4, 0x58 - adds r0, r3, 0 - muls r0, r4 - mov r1, r10 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0801C83C - ldr r1, _0801C860 @ =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _0801C864 @ =gBitTable - ldrb r0, [r7] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0801C83C - ldr r0, _0801C868 @ =gActiveBank - strb r3, [r0] - ldrb r1, [r7] - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - mov r2, r9 - ldrb r0, [r2] - muls r0, r4 - mov r2, r10 - adds r2, 0x24 - adds r0, r2 - ldrb r7, [r7] - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetAttributes - mov r7, r9 - ldrb r0, [r7] - bl MarkBufferBankForExecution -_0801C83C: - ldr r2, _0801C86C @ =gHitMarker - ldr r0, [r2] - ldr r1, _0801C870 @ =0xfffff7ff - ands r0, r1 - str r0, [r2] - ldr r1, _0801C874 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801C84E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801C860: .4byte gDisableStructs -_0801C864: .4byte gBitTable -_0801C868: .4byte gActiveBank -_0801C86C: .4byte gHitMarker -_0801C870: .4byte 0xfffff7ff -_0801C874: .4byte gBattlescriptCurrInstr - thumb_func_end atk03_ppreduce - - thumb_func_start atk04_critcalc -atk04_critcalc: @ 801C878 - push {r4-r7,lr} - ldr r1, _0801C89C @ =gBattleMons - ldr r0, _0801C8A0 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - cmp r0, 0xAF - bne _0801C8A8 - ldr r1, _0801C8A4 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - b _0801C8B0 - .align 2, 0 -_0801C89C: .4byte gBattleMons -_0801C8A0: .4byte gBankAttacker -_0801C8A4: .4byte gEnigmaBerries -_0801C8A8: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 -_0801C8B0: - ldr r1, _0801C93C @ =gStringBank - ldr r3, _0801C940 @ =gBankAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r4, _0801C944 @ =gBattleMons - ldrb r1, [r3] - movs r0, 0x58 - adds r7, r1, 0 - muls r7, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r7, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - negs r0, r0 - asrs r5, r0, 31 - movs r0, 0x2 - ands r5, r0 - ldr r2, _0801C948 @ =gBattleMoves - ldr r0, _0801C94C @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - mov r12, r3 - cmp r1, 0x2B - bne _0801C8F0 - adds r5, 0x1 -_0801C8F0: - adds r0, r5, 0 - cmp r1, 0x4B - bne _0801C8F8 - adds r0, 0x1 -_0801C8F8: - cmp r1, 0xC8 - bne _0801C8FE - adds r0, 0x1 -_0801C8FE: - adds r2, r0, 0 - cmp r1, 0xD1 - bne _0801C906 - adds r2, 0x1 -_0801C906: - movs r1, 0 - cmp r6, 0x3F - bne _0801C916 - adds r0, r7, r4 - ldrh r0, [r0] - cmp r0, 0x71 - bne _0801C916 - movs r1, 0x1 -_0801C916: - lsls r5, r1, 1 - movs r3, 0 - cmp r6, 0x42 - bne _0801C930 - mov r0, r12 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0x53 - bne _0801C930 - movs r3, 0x1 -_0801C930: - lsls r1, r3, 1 - cmp r6, 0x29 - bne _0801C950 - adds r0, r5, 0x1 - adds r0, r2, r0 - b _0801C952 - .align 2, 0 -_0801C93C: .4byte gStringBank -_0801C940: .4byte gBankAttacker -_0801C944: .4byte gBattleMons -_0801C948: .4byte gBattleMoves -_0801C94C: .4byte gCurrentMove -_0801C950: - adds r0, r2, r5 -_0801C952: - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - adds r5, r0, 0 - cmp r5, 0x4 - bls _0801C960 - movs r5, 0x4 -_0801C960: - ldr r0, _0801C9BC @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - ldrb r4, [r0] - cmp r4, 0x4 - beq _0801C9D0 - cmp r4, 0x4B - beq _0801C9D0 - ldr r1, _0801C9C0 @ =gStatuses3 - mov r2, r12 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - bne _0801C9D0 - ldr r0, _0801C9C4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x84 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - bne _0801C9D0 - bl Random - ldr r2, _0801C9C8 @ =gCriticalHitChance - lsls r1, r5, 1 - adds r1, r2 - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1] - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _0801C9D0 - ldr r1, _0801C9CC @ =gCritMultiplier - movs r0, 0x2 - b _0801C9D4 - .align 2, 0 -_0801C9BC: .4byte gBankTarget -_0801C9C0: .4byte gStatuses3 -_0801C9C4: .4byte gBattleTypeFlags -_0801C9C8: .4byte gCriticalHitChance -_0801C9CC: .4byte gCritMultiplier -_0801C9D0: - ldr r1, _0801C9E4 @ =gCritMultiplier - movs r0, 0x1 -_0801C9D4: - strb r0, [r1] - ldr r1, _0801C9E8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801C9E4: .4byte gCritMultiplier -_0801C9E8: .4byte gBattlescriptCurrInstr - thumb_func_end atk04_critcalc - - thumb_func_start atk05_damagecalc1 -atk05_damagecalc1: @ 801C9EC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - ldr r4, _0801CABC @ =gSideAffecting - ldr r6, _0801CAC0 @ =gBankTarget - ldrb r0, [r6] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldr r0, _0801CAC4 @ =gBankAttacker - mov r8, r0 - ldrb r0, [r0] - movs r4, 0x58 - muls r0, r4 - ldr r2, _0801CAC8 @ =gBattleMons - adds r0, r2 - ldrb r1, [r6] - muls r1, r4 - adds r1, r2 - ldr r2, _0801CACC @ =gCurrentMove - mov r9, r2 - ldrh r2, [r2] - ldr r4, _0801CAD0 @ =gDynamicBasePower - ldrh r4, [r4] - str r4, [sp] - ldr r5, _0801CAD4 @ =0x02000000 - ldr r7, _0801CAD8 @ =0x0001601c - adds r4, r5, r7 - ldrb r4, [r4] - str r4, [sp, 0x4] - mov r7, r8 - ldrb r4, [r7] - str r4, [sp, 0x8] - ldrb r4, [r6] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldr r4, _0801CADC @ =gBattleMoveDamage - ldr r1, _0801CAE0 @ =gCritMultiplier - ldrb r1, [r1] - muls r1, r0 - ldr r0, _0801CAE4 @ =0x0001601f - adds r5, r0 - ldrb r0, [r5] - adds r3, r1, 0 - muls r3, r0 - str r3, [r4] - ldr r1, _0801CAE8 @ =gStatuses3 - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _0801CA82 - ldr r2, _0801CAEC @ =gBattleMoves - mov r7, r9 - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - cmp r0, 0xD - bne _0801CA82 - lsls r0, r3, 1 - str r0, [r4] -_0801CA82: - ldr r1, _0801CAF0 @ =gProtectStructs - ldr r0, _0801CAC4 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _0801CAA4 - ldr r4, _0801CADC @ =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0801CAA4: - ldr r1, _0801CAF4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801CABC: .4byte gSideAffecting -_0801CAC0: .4byte gBankTarget -_0801CAC4: .4byte gBankAttacker -_0801CAC8: .4byte gBattleMons -_0801CACC: .4byte gCurrentMove -_0801CAD0: .4byte gDynamicBasePower -_0801CAD4: .4byte 0x02000000 -_0801CAD8: .4byte 0x0001601c -_0801CADC: .4byte gBattleMoveDamage -_0801CAE0: .4byte gCritMultiplier -_0801CAE4: .4byte 0x0001601f -_0801CAE8: .4byte gStatuses3 -_0801CAEC: .4byte gBattleMoves -_0801CAF0: .4byte gProtectStructs -_0801CAF4: .4byte gBattlescriptCurrInstr - thumb_func_end atk05_damagecalc1 - - thumb_func_start AI_CalcDmg -AI_CalcDmg: @ 801CAF8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - adds r5, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _0801CBBC @ =gSideAffecting - adds r0, r5, 0 - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x58 - adds r0, r7, 0 - muls r0, r1 - ldr r2, _0801CBC0 @ =gBattleMons - adds r0, r2 - muls r1, r5 - adds r1, r2 - ldr r2, _0801CBC4 @ =gCurrentMove - mov r9, r2 - ldrh r2, [r2] - ldr r4, _0801CBC8 @ =gDynamicBasePower - mov r8, r4 - ldrh r4, [r4] - str r4, [sp] - ldr r6, _0801CBCC @ =0x02000000 - ldr r4, _0801CBD0 @ =0x0001601c - ldrb r4, [r4, r6] - str r4, [sp, 0x4] - str r7, [sp, 0x8] - str r5, [sp, 0xC] - bl CalculateBaseDamage - ldr r4, _0801CBD4 @ =gBattleMoveDamage - movs r1, 0 - mov r2, r8 - strh r1, [r2] - ldr r1, _0801CBD8 @ =gCritMultiplier - ldrb r1, [r1] - muls r1, r0 - ldr r0, _0801CBDC @ =0x0001601f - adds r6, r0 - ldrb r0, [r6] - adds r3, r1, 0 - muls r3, r0 - str r3, [r4] - ldr r1, _0801CBE0 @ =gStatuses3 - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _0801CB8E - ldr r2, _0801CBE4 @ =gBattleMoves - mov r6, r9 - ldrh r1, [r6] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - cmp r0, 0xD - bne _0801CB8E - lsls r0, r3, 1 - str r0, [r4] -_0801CB8E: - ldr r0, _0801CBE8 @ =gProtectStructs - lsls r1, r7, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 28 - cmp r0, 0 - bge _0801CBAC - ldr r4, _0801CBD4 @ =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0801CBAC: - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801CBBC: .4byte gSideAffecting -_0801CBC0: .4byte gBattleMons -_0801CBC4: .4byte gCurrentMove -_0801CBC8: .4byte gDynamicBasePower -_0801CBCC: .4byte 0x02000000 -_0801CBD0: .4byte 0x0001601c -_0801CBD4: .4byte gBattleMoveDamage -_0801CBD8: .4byte gCritMultiplier -_0801CBDC: .4byte 0x0001601f -_0801CBE0: .4byte gStatuses3 -_0801CBE4: .4byte gBattleMoves -_0801CBE8: .4byte gProtectStructs - thumb_func_end AI_CalcDmg - - thumb_func_start battle_attack_damage_modulate_by_effectivity -battle_attack_damage_modulate_by_effectivity: @ 801CBEC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0801CC1C @ =gBattleMoveDamage - ldr r0, [r5] - muls r0, r4 - movs r1, 0xA - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _0801CC0C - cmp r4, 0 - beq _0801CC0C - movs r0, 0x1 - str r0, [r5] -_0801CC0C: - cmp r4, 0x5 - beq _0801CC3C - cmp r4, 0x5 - bgt _0801CC20 - cmp r4, 0 - beq _0801CC26 - b _0801CCBE - .align 2, 0 -_0801CC1C: .4byte gBattleMoveDamage -_0801CC20: - cmp r4, 0x14 - beq _0801CC7C - b _0801CCBE -_0801CC26: - ldr r2, _0801CC38 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0xFB - ands r0, r1 - movs r1, 0xFD - ands r0, r1 - b _0801CCBC - .align 2, 0 -_0801CC38: .4byte gBattleMoveFlags -_0801CC3C: - ldr r2, _0801CC6C @ =gBattleMoves - ldr r0, _0801CC70 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0801CCBE - ldr r2, _0801CC74 @ =gBattleMoveFlags - ldrb r1, [r2] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801CCBE - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801CC78 - movs r0, 0xFD - ands r0, r1 - b _0801CCBC - .align 2, 0 -_0801CC6C: .4byte gBattleMoves -_0801CC70: .4byte gCurrentMove -_0801CC74: .4byte gBattleMoveFlags -_0801CC78: - movs r0, 0x4 - b _0801CCBA -_0801CC7C: - ldr r2, _0801CCAC @ =gBattleMoves - ldr r0, _0801CCB0 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0801CCBE - ldr r2, _0801CCB4 @ =gBattleMoveFlags - ldrb r1, [r2] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801CCBE - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801CCB8 - movs r0, 0xFB - ands r0, r1 - b _0801CCBC - .align 2, 0 -_0801CCAC: .4byte gBattleMoves -_0801CCB0: .4byte gCurrentMove -_0801CCB4: .4byte gBattleMoveFlags -_0801CCB8: - movs r0, 0x2 -_0801CCBA: - orrs r0, r1 -_0801CCBC: - strb r0, [r2] -_0801CCBE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end battle_attack_damage_modulate_by_effectivity - - thumb_func_start atk06_typecalc -atk06_typecalc: @ 801CCC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0 - ldr r1, _0801CCF0 @ =gCurrentMove - ldrh r0, [r1] - cmp r0, 0xA5 - bne _0801CCD8 - b _0801CEF4 -_0801CCD8: - ldr r0, _0801CCF4 @ =0x02000000 - ldr r2, _0801CCF8 @ =0x0001601c - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0801CCFC - movs r1, 0x3F - mov r8, r1 - mov r2, r8 - ands r2, r0 - mov r8, r2 - b _0801CD0C - .align 2, 0 -_0801CCF0: .4byte gCurrentMove -_0801CCF4: .4byte 0x02000000 -_0801CCF8: .4byte 0x0001601c -_0801CCFC: - ldr r2, _0801CD94 @ =gBattleMoves - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r8, r0 -_0801CD0C: - ldr r2, _0801CD98 @ =gBattleMons - ldr r0, _0801CD9C @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, r8 - beq _0801CD2E - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r8 - bne _0801CD44 -_0801CD2E: - ldr r4, _0801CDA0 @ =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - str r0, [r4] - movs r1, 0xA - str r3, [sp, 0x4] - bl __divsi3 - str r0, [r4] - ldr r3, [sp, 0x4] -_0801CD44: - ldr r2, _0801CDA4 @ =gBankTarget - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r2, 0 - cmp r0, 0x1A - bne _0801CDBC - mov r1, r8 - cmp r1, 0x4 - bne _0801CDBC - ldr r3, _0801CDA8 @ =gLastUsedAbility - strb r0, [r3] - ldr r2, _0801CDAC @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x9 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801CDB0 @ =gMoveHitWith - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, _0801CDB4 @ =gUnknown_02024C44 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r0, _0801CDB8 @ =gBattleCommunication - mov r2, r8 - strb r2, [r0, 0x6] - ldrb r0, [r4] - ldrb r1, [r3] - bl RecordAbilityBattle - b _0801CE58 - .align 2, 0 -_0801CD94: .4byte gBattleMoves -_0801CD98: .4byte gBattleMons -_0801CD9C: .4byte gBankAttacker -_0801CDA0: .4byte gBattleMoveDamage -_0801CDA4: .4byte gBankTarget -_0801CDA8: .4byte gLastUsedAbility -_0801CDAC: .4byte gBattleMoveFlags -_0801CDB0: .4byte gMoveHitWith -_0801CDB4: .4byte gUnknown_02024C44 -_0801CDB8: .4byte gBattleCommunication -_0801CDBC: - ldr r1, _0801CDC8 @ =gTypeEffectiveness - adds r0, r3, r1 - ldrb r0, [r0] - adds r2, r1, 0 - b _0801CE38 - .align 2, 0 -_0801CDC8: .4byte gTypeEffectiveness -_0801CDCC: - adds r3, 0x3 - b _0801CE34 -_0801CDD0: - ldr r5, _0801CF08 @ =gTypeEffectiveness - adds r0, r3, r5 - ldrb r0, [r0] - cmp r0, r8 - bne _0801CE2C - adds r1, r3, 0x1 - adds r1, r5 - ldr r2, _0801CF0C @ =gBattleMons - ldr r7, _0801CF10 @ =gBankTarget - ldrb r0, [r7] - movs r6, 0x58 - muls r0, r6 - adds r0, r2 - adds r0, 0x21 - ldrb r4, [r1] - ldrb r0, [r0] - cmp r4, r0 - bne _0801CE06 - adds r0, r3, 0x2 - adds r0, r5 - ldrb r0, [r0] - str r2, [sp] - str r3, [sp, 0x4] - bl battle_attack_damage_modulate_by_effectivity - ldr r3, [sp, 0x4] - ldr r2, [sp] -_0801CE06: - ldrb r0, [r7] - muls r0, r6 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r4, r1 - bne _0801CE2C - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r4 - beq _0801CE2C - adds r0, r3, 0x2 - adds r0, r5 - ldrb r0, [r0] - str r3, [sp, 0x4] - bl battle_attack_damage_modulate_by_effectivity - ldr r3, [sp, 0x4] -_0801CE2C: - adds r3, 0x3 - ldr r5, _0801CF0C @ =gBattleMons - ldr r4, _0801CF10 @ =gBankTarget - ldr r2, _0801CF08 @ =gTypeEffectiveness -_0801CE34: - adds r0, r3, r2 - ldrb r0, [r0] -_0801CE38: - cmp r0, 0xFF - beq _0801CE58 - cmp r0, 0xFE - bne _0801CDD0 - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r1, r5, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0801CDCC -_0801CE58: - ldr r2, _0801CF0C @ =gBattleMons - ldr r5, _0801CF10 @ =gBankTarget - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r6, [r0] - cmp r6, 0x19 - bne _0801CED6 - ldr r0, _0801CF14 @ =gBankAttacker - ldrb r0, [r0] - ldr r7, _0801CF18 @ =gCurrentMove - ldrh r1, [r7] - bl move_weather_interaction - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0801CED6 - ldr r1, _0801CF1C @ =gBattleMoveFlags - mov r8, r1 - ldrb r4, [r1] - ands r0, r4 - cmp r0, 0 - beq _0801CE94 - movs r0, 0x6 - ands r0, r4 - cmp r0, 0x6 - bne _0801CED6 -_0801CE94: - ldr r2, _0801CF20 @ =gBattleMoves - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0801CED6 - ldr r3, _0801CF24 @ =gLastUsedAbility - strb r6, [r3] - movs r0, 0x1 - orrs r0, r4 - mov r2, r8 - strb r0, [r2] - ldr r1, _0801CF28 @ =gMoveHitWith - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, _0801CF2C @ =gUnknown_02024C44 - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r1, _0801CF30 @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - ldrb r0, [r5] - ldrb r1, [r3] - bl RecordAbilityBattle -_0801CED6: - ldr r0, _0801CF1C @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801CEF4 - ldr r2, _0801CF34 @ =gProtectStructs - ldr r0, _0801CF14 @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 4 - adds r1, r2 - ldrb r0, [r1, 0x1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1, 0x1] -_0801CEF4: - ldr r1, _0801CF38 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801CF08: .4byte gTypeEffectiveness -_0801CF0C: .4byte gBattleMons -_0801CF10: .4byte gBankTarget -_0801CF14: .4byte gBankAttacker -_0801CF18: .4byte gCurrentMove -_0801CF1C: .4byte gBattleMoveFlags -_0801CF20: .4byte gBattleMoves -_0801CF24: .4byte gLastUsedAbility -_0801CF28: .4byte gMoveHitWith -_0801CF2C: .4byte gUnknown_02024C44 -_0801CF30: .4byte gBattleCommunication -_0801CF34: .4byte gProtectStructs -_0801CF38: .4byte gBattlescriptCurrInstr - thumb_func_end atk06_typecalc - - thumb_func_start b_wonderguard_and_levitate -b_wonderguard_and_levitate: @ 801CF3C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - movs r5, 0 - ldr r0, _0801CF80 @ =gCurrentMove - ldrh r1, [r0] - mov r9, r0 - cmp r1, 0xA5 - bne _0801CF54 - b _0801D1A4 -_0801CF54: - ldr r2, _0801CF84 @ =gBattleMoves - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0801CF66 - b _0801D1A4 -_0801CF66: - ldr r0, _0801CF88 @ =0x02000000 - ldr r2, _0801CF8C @ =0x0001601c - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0801CF90 - movs r1, 0x3F - mov r12, r1 - mov r2, r12 - ands r2, r0 - mov r12, r2 - b _0801CF94 - .align 2, 0 -_0801CF80: .4byte gCurrentMove -_0801CF84: .4byte gBattleMoves -_0801CF88: .4byte 0x02000000 -_0801CF8C: .4byte 0x0001601c -_0801CF90: - ldrb r1, [r1, 0x2] - mov r12, r1 -_0801CF94: - ldr r2, _0801CFC8 @ =gBattleMons - ldr r3, _0801CFCC @ =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r1, [r0] - adds r7, r2, 0 - mov r8, r3 - cmp r1, 0x1A - bne _0801CFD8 - mov r0, r12 - cmp r0, 0x4 - bne _0801CFD8 - ldr r0, _0801CFD0 @ =gLastUsedAbility - strb r1, [r0] - ldr r0, _0801CFD4 @ =gBattleCommunication - mov r1, r12 - strb r1, [r0, 0x6] - ldrb r0, [r3] - movs r1, 0x1A - bl RecordAbilityBattle - b _0801D1A4 - .align 2, 0 -_0801CFC8: .4byte gBattleMons -_0801CFCC: .4byte gBankTarget -_0801CFD0: .4byte gLastUsedAbility -_0801CFD4: .4byte gBattleCommunication -_0801CFD8: - ldr r1, _0801CFE4 @ =gTypeEffectiveness - adds r0, r5, r1 - ldrb r0, [r0] - adds r4, r1, 0 - b _0801D12A - .align 2, 0 -_0801CFE4: .4byte gTypeEffectiveness -_0801CFE8: - adds r0, r5, r4 - ldrb r0, [r0] - cmp r0, r12 - beq _0801CFF2 - b _0801D124 -_0801CFF2: - adds r2, r5, 0x1 - adds r3, r2, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r3] - adds r3, r2, 0 - ldrb r0, [r0] - cmp r1, r0 - bne _0801D032 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0801D032 - ldr r2, _0801D1B0 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801D1B4 @ =gProtectStructs - ldr r0, _0801D1B8 @ =gBankAttacker - ldrb r2, [r0] - lsls r2, 4 - adds r2, r1 - ldrb r0, [r2, 0x1] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1] -_0801D032: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0801D078 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0801D078 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0801D078 - ldr r2, _0801D1B0 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801D1B4 @ =gProtectStructs - ldr r0, _0801D1B8 @ =gBankAttacker - ldrb r2, [r0] - lsls r2, 4 - adds r2, r1 - ldrb r0, [r2, 0x1] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1] -_0801D078: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _0801D09C - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x14 - bne _0801D09C - movs r0, 0x1 - orrs r6, r0 -_0801D09C: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0801D0CA - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0801D0CA - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x14 - bne _0801D0CA - movs r0, 0x1 - orrs r6, r0 -_0801D0CA: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _0801D0F2 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x5 - bne _0801D0F2 - movs r0, 0x2 - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_0801D0F2: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0801D124 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0801D124 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x5 - bne _0801D124 - movs r0, 0x2 - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_0801D124: - adds r5, 0x3 - adds r0, r5, r4 - ldrb r0, [r0] -_0801D12A: - cmp r0, 0xFF - beq _0801D14E - cmp r0, 0xFE - beq _0801D134 - b _0801CFE8 -_0801D134: - mov r2, r8 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0801D124 -_0801D14E: - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x20 - ldrb r4, [r0] - cmp r4, 0x19 - bne _0801D1A4 - ldr r0, _0801D1B8 @ =gBankAttacker - ldrb r0, [r0] - mov r2, r9 - ldrh r1, [r2] - bl move_weather_interaction - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0801D1A4 - movs r0, 0x3 - ands r6, r0 - cmp r6, 0x1 - beq _0801D1A4 - ldr r2, _0801D1BC @ =gBattleMoves - mov r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0801D1A4 - ldr r0, _0801D1C0 @ =gLastUsedAbility - strb r4, [r0] - ldr r1, _0801D1C4 @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x19 - bl RecordAbilityBattle -_0801D1A4: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801D1B0: .4byte gBattleMoveFlags -_0801D1B4: .4byte gProtectStructs -_0801D1B8: .4byte gBankAttacker -_0801D1BC: .4byte gBattleMoves -_0801D1C0: .4byte gLastUsedAbility -_0801D1C4: .4byte gBattleCommunication - thumb_func_end b_wonderguard_and_levitate - - thumb_func_start b_attack_effectivity_adapt -b_attack_effectivity_adapt: @ 801D1C8 - push {r4-r7,lr} - adds r6, r2, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r7, _0801D1FC @ =gBattleMoveDamage - ldr r0, [r7] - muls r0, r4 - movs r1, 0xA - bl __divsi3 - str r0, [r7] - cmp r0, 0 - bne _0801D1EE - cmp r4, 0 - beq _0801D1EE - movs r0, 0x1 - str r0, [r7] -_0801D1EE: - cmp r4, 0x5 - beq _0801D216 - cmp r4, 0x5 - bgt _0801D200 - cmp r4, 0 - beq _0801D206 - b _0801D27A - .align 2, 0 -_0801D1FC: .4byte gBattleMoveDamage -_0801D200: - cmp r4, 0x14 - beq _0801D248 - b _0801D27A -_0801D206: - ldrb r0, [r6] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0xFB - ands r0, r1 - movs r1, 0xFD - ands r0, r1 - b _0801D278 -_0801D216: - ldr r0, _0801D240 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801D27A - ldrb r1, [r6] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801D27A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801D244 - movs r0, 0xFD - ands r0, r1 - b _0801D278 - .align 2, 0 -_0801D240: .4byte gBattleMoves -_0801D244: - movs r0, 0x4 - b _0801D276 -_0801D248: - ldr r0, _0801D270 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801D27A - ldrb r1, [r6] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801D27A - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801D274 - movs r0, 0xFB - ands r0, r1 - b _0801D278 - .align 2, 0 -_0801D270: .4byte gBattleMoves -_0801D274: - movs r0, 0x2 -_0801D276: - orrs r0, r1 -_0801D278: - strb r0, [r6] -_0801D27A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end b_attack_effectivity_adapt - - thumb_func_start TypeCalc -TypeCalc: @ 801D280 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x4] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - movs r7, 0 - mov r0, sp - strb r7, [r0] - mov r0, r10 - cmp r0, 0xA5 - bne _0801D2AE - movs r0, 0 - b _0801D43A -_0801D2AE: - ldr r1, _0801D31C @ =gBattleMoves - mov r3, r10 - lsls r2, r3, 1 - adds r0, r2, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - str r0, [sp, 0x8] - ldr r1, _0801D320 @ =gBattleMons - movs r0, 0x58 - ldr r3, [sp, 0x4] - muls r0, r3 - adds r3, r0, r1 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r0, [r0] - str r2, [sp, 0xC] - adds r5, r1, 0 - ldr r1, [sp, 0x8] - cmp r0, r1 - beq _0801D2E2 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - bne _0801D2F4 -_0801D2E2: - ldr r4, _0801D324 @ =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - str r0, [r4] - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0801D2F4: - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - bne _0801D328 - ldr r3, [sp, 0x8] - cmp r3, 0x4 - bne _0801D328 - movs r1, 0x9 - mov r0, sp - ldrb r0, [r0] - orrs r0, r1 - mov r1, sp - strb r0, [r1] - b _0801D3DC - .align 2, 0 -_0801D31C: .4byte gBattleMoves -_0801D320: .4byte gBattleMons -_0801D324: .4byte gBattleMoveDamage -_0801D328: - ldr r1, _0801D344 @ =gTypeEffectiveness - adds r0, r7, r1 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xFF - beq _0801D3DC - cmp r0, 0xFE - bne _0801D34C - movs r0, 0x58 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - b _0801D3CA - .align 2, 0 -_0801D344: .4byte gTypeEffectiveness -_0801D348: - adds r7, 0x3 - b _0801D3B6 -_0801D34C: - ldr r6, _0801D44C @ =gTypeEffectiveness - adds r0, r7, r6 - ldrb r0, [r0] - ldr r2, [sp, 0x8] - cmp r0, r2 - bne _0801D3B0 - adds r1, r7, 0x1 - adds r1, r6 - ldr r3, _0801D450 @ =gBattleMons - mov r8, r3 - movs r3, 0x58 - mov r0, r9 - muls r0, r3 - mov r2, r8 - adds r5, r0, r2 - adds r0, r5, 0 - adds r0, 0x21 - ldrb r4, [r1] - ldrb r0, [r0] - cmp r4, r0 - bne _0801D388 - adds r0, r7, 0x2 - adds r0, r6 - ldrb r0, [r0] - mov r1, r10 - mov r2, sp - str r3, [sp, 0x10] - bl b_attack_effectivity_adapt - ldr r3, [sp, 0x10] -_0801D388: - adds r0, r5, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r4, r0 - bne _0801D3B0 - ldr r0, _0801D454 @ =gBankTarget - ldrb r0, [r0] - muls r0, r3 - add r0, r8 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r4 - beq _0801D3B0 - adds r0, r7, 0x2 - adds r0, r6 - ldrb r0, [r0] - mov r1, r10 - mov r2, sp - bl b_attack_effectivity_adapt -_0801D3B0: - adds r7, 0x3 - ldr r5, _0801D450 @ =gBattleMons - ldr r2, _0801D44C @ =gTypeEffectiveness -_0801D3B6: - adds r0, r7, r2 - ldrb r0, [r0] - cmp r0, 0xFF - beq _0801D3DC - cmp r0, 0xFE - bne _0801D34C - movs r0, 0x58 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 -_0801D3CA: - adds r1, r5, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0801D348 -_0801D3DC: - movs r0, 0x58 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x19 - bne _0801D436 - mov r0, sp - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801D436 - ldr r0, [sp, 0x4] - mov r1, r10 - bl move_weather_interaction - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _0801D436 - mov r0, sp - ldrb r3, [r0] - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0801D41E - movs r0, 0x6 - ands r0, r3 - cmp r0, 0x6 - bne _0801D436 -_0801D41E: - ldr r0, _0801D458 @ =gBattleMoves - ldr r1, [sp, 0xC] - add r1, r10 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801D436 - mov r0, sp - movs r1, 0x1 - orrs r1, r3 - strb r1, [r0] -_0801D436: - mov r0, sp - ldrb r0, [r0] -_0801D43A: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801D44C: .4byte gTypeEffectiveness -_0801D450: .4byte gBattleMons -_0801D454: .4byte gBankTarget -_0801D458: .4byte gBattleMoves - thumb_func_end TypeCalc - - thumb_func_start ai_rate_move -ai_rate_move: @ 801D45C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x4] - movs r7, 0 - mov r0, sp - strb r7, [r0] - ldr r2, _0801D498 @ =gBaseStats - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - str r1, [sp, 0x8] - ldrb r0, [r0, 0x7] - mov r8, r0 - cmp r6, 0xA5 - bne _0801D49C - movs r0, 0 - b _0801D554 - .align 2, 0 -_0801D498: .4byte gBaseStats -_0801D49C: - ldr r2, _0801D4C0 @ =gBattleMoves - lsls r1, r6, 1 - adds r0, r1, r6 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r9, r0 - str r1, [sp, 0xC] - ldr r3, [sp, 0x4] - cmp r3, 0x1A - bne _0801D4C4 - cmp r0, 0x4 - bne _0801D4C4 - movs r1, 0x9 - mov r0, sp - strb r1, [r0] - b _0801D51E - .align 2, 0 -_0801D4C0: .4byte gBattleMoves -_0801D4C4: - ldr r0, _0801D564 @ =gTypeEffectiveness - mov r10, r0 - adds r1, r7, r0 - ldrb r0, [r1] - cmp r0, 0xFF - beq _0801D51E - adds r4, r1, 0 -_0801D4D2: - ldrb r0, [r4] - cmp r0, 0xFE - beq _0801D510 - cmp r0, r9 - bne _0801D510 - ldrb r5, [r4, 0x1] - ldr r1, [sp, 0x8] - cmp r5, r1 - bne _0801D4EE - ldrb r0, [r4, 0x2] - adds r1, r6, 0 - mov r2, sp - bl b_attack_effectivity_adapt -_0801D4EE: - cmp r5, r8 - bne _0801D510 - ldr r0, _0801D568 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - ldr r3, _0801D56C @ =gBattleMons - adds r0, r3 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r8 - beq _0801D510 - ldrb r0, [r4, 0x2] - adds r1, r6, 0 - mov r2, sp - bl b_attack_effectivity_adapt -_0801D510: - adds r4, 0x3 - adds r7, 0x3 - mov r1, r10 - adds r0, r7, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0801D4D2 -_0801D51E: - ldr r3, [sp, 0x4] - cmp r3, 0x19 - bne _0801D550 - mov r0, sp - ldrb r2, [r0] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0801D538 - movs r0, 0x6 - ands r0, r2 - cmp r0, 0x6 - bne _0801D550 -_0801D538: - ldr r0, _0801D570 @ =gBattleMoves - ldr r3, [sp, 0xC] - adds r1, r3, r6 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801D550 - mov r0, sp - movs r1, 0x8 - orrs r1, r2 - strb r1, [r0] -_0801D550: - mov r0, sp - ldrb r0, [r0] -_0801D554: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801D564: .4byte gTypeEffectiveness -_0801D568: .4byte gBankTarget -_0801D56C: .4byte gBattleMons -_0801D570: .4byte gBattleMoves - thumb_func_end ai_rate_move - - thumb_func_start unref_sub_801D574 -unref_sub_801D574: @ 801D574 - push {r4,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _0801D5AC @ =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _0801D5A6 - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801D5A6 - movs r0, 0x1 - str r0, [r4] -_0801D5A6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801D5AC: .4byte gBattleMoveDamage - thumb_func_end unref_sub_801D574 - - thumb_func_start atk07_dmg_adjustment -atk07_dmg_adjustment: @ 801D5B0 - push {r4-r7,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _0801D608 @ =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _0801D5E2 - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801D5E2 - movs r0, 0x1 - str r0, [r4] -_0801D5E2: - ldr r7, _0801D60C @ =gBattleMons - ldr r6, _0801D610 @ =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0801D618 - ldr r1, _0801D614 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _0801D632 - .align 2, 0 -_0801D608: .4byte gBattleMoveDamage -_0801D60C: .4byte gBattleMons -_0801D610: .4byte gBankTarget -_0801D614: .4byte gEnigmaBerries -_0801D618: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_0801D632: - ldr r1, _0801D6F4 @ =gStringBank - ldr r5, _0801D6F8 @ =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _0801D670 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _0801D670 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemBattle - ldr r2, _0801D6FC @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_0801D670: - ldr r2, _0801D700 @ =gBattleMons - ldr r3, _0801D6F8 @ =gBankTarget - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r1, r0 - adds r5, r2, 0 - cmp r1, 0 - bne _0801D740 - ldr r2, _0801D704 @ =gBattleMoves - ldr r0, _0801D708 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x65 - beq _0801D6C2 - ldr r0, _0801D70C @ =gProtectStructs - lsls r1, r4, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - blt _0801D6C2 - ldr r0, _0801D6FC @ =gSpecialStatuses - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0801D740 -_0801D6C2: - ldrb r0, [r3] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - ldrh r1, [r0, 0x28] - ldr r2, _0801D710 @ =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _0801D740 - subs r0, r1, 0x1 - str r0, [r2] - ldr r1, _0801D70C @ =gProtectStructs - ldrb r3, [r3] - lsls r0, r3, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _0801D718 - ldr r0, _0801D714 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0801D740 - .align 2, 0 -_0801D6F4: .4byte gStringBank -_0801D6F8: .4byte gBankTarget -_0801D6FC: .4byte gSpecialStatuses -_0801D700: .4byte gBattleMons -_0801D704: .4byte gBattleMoves -_0801D708: .4byte gCurrentMove -_0801D70C: .4byte gProtectStructs -_0801D710: .4byte gBattleMoveDamage -_0801D714: .4byte gBattleMoveFlags -_0801D718: - ldr r0, _0801D750 @ =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0801D740 - ldr r2, _0801D754 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801D758 @ =gLastUsedItem - adds r0, r3, 0 - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_0801D740: - ldr r1, _0801D75C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801D750: .4byte gSpecialStatuses -_0801D754: .4byte gBattleMoveFlags -_0801D758: .4byte gLastUsedItem -_0801D75C: .4byte gBattlescriptCurrInstr - thumb_func_end atk07_dmg_adjustment - - thumb_func_start atk08_dmg_adjustment2 -atk08_dmg_adjustment2: @ 801D760 - push {r4-r7,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _0801D7B8 @ =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _0801D792 - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801D792 - movs r0, 0x1 - str r0, [r4] -_0801D792: - ldr r7, _0801D7BC @ =gBattleMons - ldr r6, _0801D7C0 @ =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0801D7C8 - ldr r1, _0801D7C4 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _0801D7E2 - .align 2, 0 -_0801D7B8: .4byte gBattleMoveDamage -_0801D7BC: .4byte gBattleMons -_0801D7C0: .4byte gBankTarget -_0801D7C4: .4byte gEnigmaBerries -_0801D7C8: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_0801D7E2: - ldr r1, _0801D888 @ =gStringBank - ldr r5, _0801D88C @ =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _0801D820 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _0801D820 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemBattle - ldr r2, _0801D890 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_0801D820: - ldr r4, _0801D894 @ =gBattleMons - ldr r6, _0801D88C @ =gBankTarget - ldrb r2, [r6] - movs r7, 0x58 - adds r3, r2, 0 - muls r3, r7 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _0801D8CC - ldr r5, _0801D898 @ =gProtectStructs - lsls r0, r2, 4 - adds r0, r5 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - blt _0801D85E - ldr r0, _0801D890 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0801D8CC -_0801D85E: - adds r0, r3, r4 - ldrh r1, [r0, 0x28] - ldr r2, _0801D89C @ =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _0801D8CC - subs r0, r1, 0x1 - str r0, [r2] - ldrb r3, [r6] - lsls r0, r3, 4 - adds r0, r5 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _0801D8A4 - ldr r0, _0801D8A0 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0801D8CC - .align 2, 0 -_0801D888: .4byte gStringBank -_0801D88C: .4byte gBankTarget -_0801D890: .4byte gSpecialStatuses -_0801D894: .4byte gBattleMons -_0801D898: .4byte gProtectStructs -_0801D89C: .4byte gBattleMoveDamage -_0801D8A0: .4byte gBattleMoveFlags -_0801D8A4: - ldr r0, _0801D8DC @ =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0801D8CC - ldr r2, _0801D8E0 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801D8E4 @ =gLastUsedItem - adds r0, r3, 0 - muls r0, r7 - adds r0, r4 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_0801D8CC: - ldr r1, _0801D8E8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801D8DC: .4byte gSpecialStatuses -_0801D8E0: .4byte gBattleMoveFlags -_0801D8E4: .4byte gLastUsedItem -_0801D8E8: .4byte gBattlescriptCurrInstr - thumb_func_end atk08_dmg_adjustment2 - - thumb_func_start atk09_attackanimation -atk09_attackanimation: @ 801D8EC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0xC - ldr r0, _0801D940 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0801D900 - b _0801DA4A -_0801D900: - ldr r0, _0801D944 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - ldr r3, _0801D948 @ =gCurrentMove - cmp r0, 0 - beq _0801D960 - ldrh r0, [r3] - cmp r0, 0x90 - beq _0801D960 - cmp r0, 0xA4 - beq _0801D960 - ldr r4, _0801D94C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801D950 @ =BattleScript_Pausex20 - str r0, [r4] - ldr r1, _0801D954 @ =0x02000000 - ldr r0, _0801D958 @ =0x00016002 - adds r2, r1, r0 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r2, _0801D95C @ =0x000160a1 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0801DA4A - .align 2, 0 -_0801D940: .4byte gBattleExecBuffer -_0801D944: .4byte gHitMarker -_0801D948: .4byte gCurrentMove -_0801D94C: .4byte gBattlescriptCurrInstr -_0801D950: .4byte BattleScript_Pausex20 -_0801D954: .4byte 0x02000000 -_0801D958: .4byte 0x00016002 -_0801D95C: .4byte 0x000160a1 -_0801D960: - ldr r2, _0801DA0C @ =gBattleMoves - ldrh r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0801D986 - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0801D986 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0801D992 -_0801D986: - ldr r0, _0801DA10 @ =0x02000000 - ldr r1, _0801DA14 @ =0x000160a1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0801DA00 -_0801D992: - ldr r0, _0801DA18 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801DA3C - ldr r1, _0801DA1C @ =gActiveBank - ldr r2, _0801DA20 @ =gBankAttacker - mov r9, r2 - ldrb r0, [r2] - strb r0, [r1] - ldrh r1, [r3] - ldr r6, _0801DA10 @ =0x02000000 - ldr r0, _0801DA24 @ =0x00016002 - adds r0, r6 - mov r8, r0 - ldrb r2, [r0] - ldr r0, _0801DA28 @ =gBattleMovePower - ldrh r3, [r0] - ldr r0, _0801DA2C @ =gBattleMoveDamage - ldr r0, [r0] - str r0, [sp] - ldr r5, _0801DA30 @ =gBattleMons - mov r0, r9 - ldrb r4, [r0] - movs r0, 0x58 - muls r0, r4 - adds r0, r5 - adds r0, 0x2B - ldrb r0, [r0] - str r0, [sp, 0x4] - mov r0, r9 - ldrb r4, [r0] - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r4, _0801DA34 @ =gDisableStructs - adds r0, r4 - str r0, [sp, 0x8] - movs r0, 0 - bl EmitMoveAnimation - mov r1, r8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r2, _0801DA14 @ =0x000160a1 - adds r6, r2 - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - mov r1, r9 - ldrb r0, [r1] - bl MarkBufferBankForExecution -_0801DA00: - ldr r1, _0801DA38 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _0801DA4A - .align 2, 0 -_0801DA0C: .4byte gBattleMoves -_0801DA10: .4byte 0x02000000 -_0801DA14: .4byte 0x000160a1 -_0801DA18: .4byte gBattleMoveFlags -_0801DA1C: .4byte gActiveBank -_0801DA20: .4byte gBankAttacker -_0801DA24: .4byte 0x00016002 -_0801DA28: .4byte gBattleMovePower -_0801DA2C: .4byte gBattleMoveDamage -_0801DA30: .4byte gBattleMons -_0801DA34: .4byte gDisableStructs -_0801DA38: .4byte gBattlescriptCurrInstr -_0801DA3C: - ldr r4, _0801DA58 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801DA5C @ =BattleScript_Pausex20 - str r0, [r4] -_0801DA4A: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801DA58: .4byte gBattlescriptCurrInstr -_0801DA5C: .4byte BattleScript_Pausex20 - thumb_func_end atk09_attackanimation - - thumb_func_start atk0A_waitanimation -atk0A_waitanimation: @ 801DA60 - push {lr} - ldr r0, _0801DA78 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801DA72 - ldr r1, _0801DA7C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801DA72: - pop {r0} - bx r0 - .align 2, 0 -_0801DA78: .4byte gBattleExecBuffer -_0801DA7C: .4byte gBattlescriptCurrInstr - thumb_func_end atk0A_waitanimation - - thumb_func_start atk0B_healthbarupdate -atk0B_healthbarupdate: @ 801DA80 - push {r4,r5,lr} - ldr r0, _0801DAE4 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801DB36 - ldr r0, _0801DAE8 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801DB2E - ldr r0, _0801DAEC @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r2, _0801DAF0 @ =gActiveBank - strb r0, [r2] - ldr r1, _0801DAF4 @ =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0801DB00 - ldr r0, _0801DAF8 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - beq _0801DB00 - ldr r0, _0801DAFC @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - bne _0801DB00 - movs r0, 0x80 - adds r1, r2, 0 - bl PrepareStringBattle - b _0801DB2E - .align 2, 0 -_0801DAE4: .4byte gBattleExecBuffer -_0801DAE8: .4byte gBattleMoveFlags -_0801DAEC: .4byte gBattlescriptCurrInstr -_0801DAF0: .4byte gActiveBank -_0801DAF4: .4byte gBattleMons -_0801DAF8: .4byte gDisableStructs -_0801DAFC: .4byte gHitMarker -_0801DB00: - ldr r5, _0801DB3C @ =gBattleMoveDamage - ldrh r1, [r5] - movs r0, 0 - bl EmitHealthBarUpdate - ldr r4, _0801DB40 @ =gActiveBank - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0801DB2E - ldr r0, [r5] - cmp r0, 0 - ble _0801DB2E - ldr r0, _0801DB44 @ =gBattleResults - ldrb r1, [r0, 0x5] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x5] -_0801DB2E: - ldr r1, _0801DB48 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0801DB36: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801DB3C: .4byte gBattleMoveDamage -_0801DB40: .4byte gActiveBank -_0801DB44: .4byte gBattleResults -_0801DB48: .4byte gBattlescriptCurrInstr - thumb_func_end atk0B_healthbarupdate - - thumb_func_start atk0C_datahpupdate -atk0C_datahpupdate: @ 801DB4C - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, _0801DB74 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0801DB5A - b _0801DF2E -_0801DB5A: - ldr r0, _0801DB78 @ =0x02000000 - ldr r1, _0801DB7C @ =0x0001601c - adds r0, r1 - ldrb r1, [r0] - cmp r1, 0 - beq _0801DB80 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0801DB80 - movs r6, 0x3F - ands r6, r1 - b _0801DB90 - .align 2, 0 -_0801DB74: .4byte gBattleExecBuffer -_0801DB78: .4byte 0x02000000 -_0801DB7C: .4byte 0x0001601c -_0801DB80: - ldr r2, _0801DC1C @ =gBattleMoves - ldr r0, _0801DC20 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r6, [r0, 0x2] -_0801DB90: - ldr r0, _0801DC24 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801DB9E - b _0801DF00 -_0801DB9E: - ldr r0, _0801DC28 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r7, _0801DC2C @ =gActiveBank - strb r0, [r7] - ldr r1, _0801DC30 @ =gBattleMons - ldrb r2, [r7] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0801DCB4 - ldr r0, _0801DC34 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r4, r1, r0 - ldrb r1, [r4, 0xA] - mov r12, r0 - cmp r1, 0 - beq _0801DCB4 - ldr r0, _0801DC38 @ =gHitMarker - ldr r3, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r3, r0 - cmp r3, 0 - bne _0801DCB4 - adds r5, r1, 0 - ldr r6, _0801DC3C @ =gBattleMoveDamage - ldr r4, [r6] - cmp r5, r4 - blt _0801DC48 - ldr r0, _0801DC40 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _0801DC02 - str r4, [r1] -_0801DC02: - ldrb r0, [r7] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - ldr r2, [r6] - ldrb r0, [r1, 0xA] - subs r0, r2 - strb r0, [r1, 0xA] - ldr r1, _0801DC44 @ =gHP_dealt - ldr r0, [r6] - str r0, [r1] - b _0801DC78 - .align 2, 0 -_0801DC1C: .4byte gBattleMoves -_0801DC20: .4byte gCurrentMove -_0801DC24: .4byte gBattleMoveFlags -_0801DC28: .4byte gBattlescriptCurrInstr -_0801DC2C: .4byte gActiveBank -_0801DC30: .4byte gBattleMons -_0801DC34: .4byte gDisableStructs -_0801DC38: .4byte gHitMarker -_0801DC3C: .4byte gBattleMoveDamage -_0801DC40: .4byte gSpecialStatuses -_0801DC44: .4byte gHP_dealt -_0801DC48: - ldr r0, _0801DCA0 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _0801DC5C - str r5, [r1] -_0801DC5C: - ldr r2, _0801DCA4 @ =gHP_dealt - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xA] - str r0, [r2] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - strb r3, [r0, 0xA] -_0801DC78: - ldr r0, _0801DCA8 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xA] - cmp r0, 0 - beq _0801DC8C - b _0801DF26 -_0801DC8C: - ldr r4, _0801DCAC @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - bl b_movescr_stack_push_cursor - ldr r0, _0801DCB0 @ =BattleScript_SubstituteFade - str r0, [r4] - b _0801DF2E - .align 2, 0 -_0801DCA0: .4byte gSpecialStatuses -_0801DCA4: .4byte gHP_dealt -_0801DCA8: .4byte gActiveBank -_0801DCAC: .4byte gBattlescriptCurrInstr -_0801DCB0: .4byte BattleScript_SubstituteFade -_0801DCB4: - ldr r0, _0801DCF4 @ =gHitMarker - ldr r2, [r0] - ldr r1, _0801DCF8 @ =0xfffffeff - ands r2, r1 - str r2, [r0] - ldr r1, _0801DCFC @ =gBattleMoveDamage - ldr r5, [r1] - mov r12, r0 - adds r7, r1, 0 - cmp r5, 0 - bge _0801DD08 - ldr r4, _0801DD00 @ =gBattleMons - ldr r2, _0801DD04 @ =gActiveBank - ldrb r0, [r2] - movs r3, 0x58 - adds r1, r0, 0 - muls r1, r3 - adds r1, r4 - ldrh r0, [r1, 0x28] - subs r0, r5 - strh r0, [r1, 0x28] - ldrb r0, [r2] - muls r0, r3 - adds r1, r0, r4 - ldrh r3, [r1, 0x2C] - ldrh r0, [r1, 0x28] - adds r5, r2, 0 - cmp r0, r3 - bhi _0801DCF0 - b _0801DEC6 -_0801DCF0: - strh r3, [r1, 0x28] - b _0801DEC6 - .align 2, 0 -_0801DCF4: .4byte gHitMarker -_0801DCF8: .4byte 0xfffffeff -_0801DCFC: .4byte gBattleMoveDamage -_0801DD00: .4byte gBattleMons -_0801DD04: .4byte gActiveBank -_0801DD08: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _0801DD24 - movs r0, 0x21 - negs r0, r0 - ands r2, r0 - mov r0, r12 - str r2, [r0] - ldr r5, _0801DD20 @ =gActiveBank - b _0801DD6C - .align 2, 0 -_0801DD20: .4byte gActiveBank -_0801DD24: - ldr r0, _0801DD4C @ =gTakenDmg - ldr r2, _0801DD50 @ =gActiveBank - ldrb r1, [r2] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - adds r0, r5 - str r0, [r1] - ldr r0, _0801DD54 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - adds r5, r2, 0 - cmp r0, 0 - bne _0801DD60 - ldr r1, _0801DD58 @ =gTakenDmgBanks - ldrb r0, [r5] - adds r0, r1 - ldr r1, _0801DD5C @ =gBankAttacker - b _0801DD68 - .align 2, 0 -_0801DD4C: .4byte gTakenDmg -_0801DD50: .4byte gActiveBank -_0801DD54: .4byte gBattlescriptCurrInstr -_0801DD58: .4byte gTakenDmgBanks -_0801DD5C: .4byte gBankAttacker -_0801DD60: - ldr r1, _0801DD8C @ =gTakenDmgBanks - ldrb r0, [r5] - adds r0, r1 - ldr r1, _0801DD90 @ =gBankTarget -_0801DD68: - ldrb r1, [r1] - strb r1, [r0] -_0801DD6C: - ldr r4, _0801DD94 @ =gBattleMons - ldrb r0, [r5] - movs r3, 0x58 - muls r0, r3 - adds r2, r0, r4 - ldrh r0, [r2, 0x28] - ldr r1, [r7] - cmp r0, r1 - ble _0801DD9C - subs r0, r1 - strh r0, [r2, 0x28] - ldr r0, _0801DD98 @ =gHP_dealt - str r1, [r0] - adds r7, r0, 0 - b _0801DDAC - .align 2, 0 -_0801DD8C: .4byte gTakenDmgBanks -_0801DD90: .4byte gBankTarget -_0801DD94: .4byte gBattleMons -_0801DD98: .4byte gHP_dealt -_0801DD9C: - ldr r2, _0801DE20 @ =gHP_dealt - str r0, [r2] - ldrb r0, [r5] - muls r0, r3 - adds r0, r4 - movs r1, 0 - strh r1, [r0, 0x28] - adds r7, r2, 0 -_0801DDAC: - ldr r2, _0801DE24 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r2, 0x4 - adds r3, r0, r1 - ldr r0, [r3] - adds r4, r2, 0 - cmp r0, 0 - bne _0801DDD4 - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _0801DDD4 - ldr r0, [r7] - str r0, [r3] -_0801DDD4: - cmp r6, 0x8 - bhi _0801DE5C - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _0801DE58 - ldr r0, _0801DE28 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xDC - beq _0801DE58 - ldr r3, _0801DE2C @ =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r1, r3, 0x4 - adds r0, r1 - ldr r2, [r7] - str r2, [r0] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x8 - adds r0, r1 - str r2, [r0] - ldr r0, _0801DE30 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0801DE38 - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, _0801DE34 @ =gBankAttacker - b _0801DE40 - .align 2, 0 -_0801DE20: .4byte gHP_dealt -_0801DE24: .4byte gSpecialStatuses -_0801DE28: .4byte gCurrentMove -_0801DE2C: .4byte gProtectStructs -_0801DE30: .4byte gBattlescriptCurrInstr -_0801DE34: .4byte gBankAttacker -_0801DE38: - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, _0801DE54 @ =gBankTarget -_0801DE40: - ldrb r1, [r2] - strb r1, [r0, 0xC] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r2] - strb r1, [r0, 0x10] - b _0801DEC6 - .align 2, 0 -_0801DE54: .4byte gBankTarget -_0801DE58: - cmp r6, 0x8 - bls _0801DEC6 -_0801DE5C: - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _0801DEC6 - ldr r3, _0801DEA0 @ =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r2, [r7] - str r2, [r0] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0xC - adds r0, r1 - str r2, [r0] - ldr r0, _0801DEA4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0801DEAC - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, _0801DEA8 @ =gBankAttacker - b _0801DEB4 - .align 2, 0 -_0801DEA0: .4byte gProtectStructs -_0801DEA4: .4byte gBattlescriptCurrInstr -_0801DEA8: .4byte gBankAttacker -_0801DEAC: - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, _0801DEF4 @ =gBankTarget -_0801DEB4: - ldrb r1, [r2] - strb r1, [r0, 0xD] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r2] - strb r1, [r0, 0x11] -_0801DEC6: - mov r1, r12 - ldr r0, [r1] - ldr r1, _0801DEF8 @ =0xffefffff - ands r0, r1 - mov r1, r12 - str r0, [r1] - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - ldr r1, _0801DEFC @ =gUnknown_02024AA8 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2A - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r5] - bl MarkBufferBankForExecution - b _0801DF26 - .align 2, 0 -_0801DEF4: .4byte gBankTarget -_0801DEF8: .4byte 0xffefffff -_0801DEFC: .4byte gUnknown_02024AA8 -_0801DF00: - ldr r0, _0801DF38 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r1, _0801DF3C @ =gActiveBank - strb r0, [r1] - ldr r2, _0801DF40 @ =gSpecialStatuses - ldrb r1, [r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r1, r0, r2 - ldr r0, [r1] - cmp r0, 0 - bne _0801DF26 - ldr r0, _0801DF44 @ =0x0000ffff - str r0, [r1] -_0801DF26: - ldr r1, _0801DF38 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0801DF2E: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801DF38: .4byte gBattlescriptCurrInstr -_0801DF3C: .4byte gActiveBank -_0801DF40: .4byte gSpecialStatuses -_0801DF44: .4byte 0x0000ffff - thumb_func_end atk0C_datahpupdate - - thumb_func_start atk0D_critmessage -atk0D_critmessage: @ 801DF48 - push {lr} - ldr r0, _0801DF84 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801DF7E - ldr r0, _0801DF88 @ =gCritMultiplier - ldrb r0, [r0] - cmp r0, 0x2 - bne _0801DF76 - ldr r0, _0801DF8C @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801DF76 - ldr r0, _0801DF90 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0xD9 - bl PrepareStringBattle - ldr r1, _0801DF94 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] -_0801DF76: - ldr r1, _0801DF98 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801DF7E: - pop {r0} - bx r0 - .align 2, 0 -_0801DF84: .4byte gBattleExecBuffer -_0801DF88: .4byte gCritMultiplier -_0801DF8C: .4byte gBattleMoveFlags -_0801DF90: .4byte gBankAttacker -_0801DF94: .4byte gBattleCommunication -_0801DF98: .4byte gBattlescriptCurrInstr - thumb_func_end atk0D_critmessage - - thumb_func_start atk0E_effectiveness_sound -atk0E_effectiveness_sound: @ 801DF9C - push {r4,lr} - ldr r0, _0801DFD4 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801E05C - ldr r4, _0801DFD8 @ =gActiveBank - ldr r0, _0801DFDC @ =gBankTarget - ldrb r0, [r0] - strb r0, [r4] - ldr r1, _0801DFE0 @ =gBattleMoveFlags - ldrb r2, [r1] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _0801E054 - movs r0, 0xFE - ands r0, r2 - cmp r0, 0x10 - beq _0801E00E - cmp r0, 0x10 - bgt _0801DFEA - cmp r0, 0x4 - beq _0801DFFE - cmp r0, 0x4 - bgt _0801DFE4 - cmp r0, 0x2 - beq _0801DFF8 - b _0801E00E - .align 2, 0 -_0801DFD4: .4byte gBattleExecBuffer -_0801DFD8: .4byte gActiveBank -_0801DFDC: .4byte gBankTarget -_0801DFE0: .4byte gBattleMoveFlags -_0801DFE4: - cmp r0, 0x8 - beq _0801E054 - b _0801E00E -_0801DFEA: - cmp r0, 0x40 - beq _0801E00E - cmp r0, 0x40 - bgt _0801E00E - cmp r0, 0x20 - beq _0801E054 - b _0801E00E -_0801DFF8: - movs r0, 0 - movs r1, 0xE - b _0801E002 -_0801DFFE: - movs r0, 0 - movs r1, 0xC -_0801E002: - bl EmitEffectivenessSound - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0801E054 -_0801E00E: - ldrb r1, [r1] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801E01E - movs r0, 0 - movs r1, 0xE - b _0801E02A -_0801E01E: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801E03C - movs r0, 0 - movs r1, 0xC -_0801E02A: - bl EmitEffectivenessSound - ldr r0, _0801E038 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - b _0801E054 - .align 2, 0 -_0801E038: .4byte gActiveBank -_0801E03C: - movs r0, 0x28 - ands r0, r1 - cmp r0, 0 - bne _0801E054 - movs r0, 0 - movs r1, 0xD - bl EmitEffectivenessSound - ldr r0, _0801E064 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution -_0801E054: - ldr r1, _0801E068 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801E05C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801E064: .4byte gActiveBank -_0801E068: .4byte gBattlescriptCurrInstr - thumb_func_end atk0E_effectiveness_sound - - thumb_func_start atk0F_resultmessage -atk0F_resultmessage: @ 801E06C - push {r4-r7,lr} - movs r3, 0 - ldr r0, _0801E0A8 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0801E07A - b _0801E20C -_0801E07A: - ldr r1, _0801E0AC @ =gBattleMoveFlags - ldrb r2, [r1] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r2 - adds r6, r1, 0 - ldr r7, _0801E0B0 @ =gBattleCommunication - cmp r0, 0 - beq _0801E0B8 - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0801E09A - ldrb r0, [r7, 0x6] - cmp r0, 0x2 - bls _0801E0B8 -_0801E09A: - ldr r1, _0801E0B4 @ =gMissStrings - ldrb r0, [r7, 0x6] - lsls r0, 1 - adds r0, r1 - ldrh r3, [r0] - strb r4, [r7, 0x7] - b _0801E1F6 - .align 2, 0 -_0801E0A8: .4byte gBattleExecBuffer -_0801E0AC: .4byte gBattleMoveFlags -_0801E0B0: .4byte gBattleCommunication -_0801E0B4: .4byte gMissStrings -_0801E0B8: - movs r0, 0x1 - strb r0, [r7, 0x7] - ldrb r5, [r6] - movs r0, 0xFE - ands r0, r5 - cmp r0, 0x10 - beq _0801E0FC - cmp r0, 0x10 - bgt _0801E0DE - cmp r0, 0x4 - beq _0801E0F8 - cmp r0, 0x4 - bgt _0801E0D8 - cmp r0, 0x2 - beq _0801E0F4 - b _0801E144 -_0801E0D8: - cmp r0, 0x8 - beq _0801E150 - b _0801E144 -_0801E0DE: - cmp r0, 0x40 - beq _0801E100 - cmp r0, 0x40 - bgt _0801E0EE - cmp r0, 0x20 - bne _0801E0EC - b _0801E1F0 -_0801E0EC: - b _0801E144 -_0801E0EE: - cmp r0, 0x80 - beq _0801E104 - b _0801E144 -_0801E0F4: - movs r3, 0xDE - b _0801E1FA -_0801E0F8: - movs r3, 0xDD - b _0801E1FA -_0801E0FC: - movs r3, 0xDA - b _0801E1FA -_0801E100: - movs r3, 0x99 - b _0801E1FA -_0801E104: - ldr r4, _0801E12C @ =gLastUsedItem - ldr r2, _0801E130 @ =gBattleMons - ldr r3, _0801E134 @ =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - ldr r1, _0801E138 @ =gStringBank - ldrb r0, [r3] - strb r0, [r1] - movs r0, 0x3F - ands r0, r5 - strb r0, [r6] - bl b_movescr_stack_push_cursor - ldr r1, _0801E13C @ =gBattlescriptCurrInstr - ldr r0, _0801E140 @ =BattleScript_HangedOnMsg - b _0801E20A - .align 2, 0 -_0801E12C: .4byte gLastUsedItem -_0801E130: .4byte gBattleMons -_0801E134: .4byte gBankTarget -_0801E138: .4byte gStringBank -_0801E13C: .4byte gBattlescriptCurrInstr -_0801E140: .4byte BattleScript_HangedOnMsg -_0801E144: - adds r2, r6, 0 - ldrb r5, [r2] - movs r0, 0x8 - ands r0, r5 - cmp r0, 0 - beq _0801E154 -_0801E150: - movs r3, 0x1B - b _0801E1FA -_0801E154: - movs r0, 0x10 - ands r0, r5 - cmp r0, 0 - beq _0801E17C - movs r0, 0xEF - ands r0, r5 - movs r1, 0xFD - ands r0, r1 - movs r1, 0xFB - ands r0, r1 - strb r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _0801E174 @ =gBattlescriptCurrInstr - ldr r0, _0801E178 @ =BattleScript_OneHitKOMsg - b _0801E20A - .align 2, 0 -_0801E174: .4byte gBattlescriptCurrInstr -_0801E178: .4byte BattleScript_OneHitKOMsg -_0801E17C: - movs r0, 0x40 - ands r0, r5 - cmp r0, 0 - beq _0801E19C - movs r0, 0x3F - ands r0, r5 - strb r0, [r2] - bl b_movescr_stack_push_cursor - ldr r1, _0801E194 @ =gBattlescriptCurrInstr - ldr r0, _0801E198 @ =BattleScript_EnduredMsg - b _0801E20A - .align 2, 0 -_0801E194: .4byte gBattlescriptCurrInstr -_0801E198: .4byte BattleScript_EnduredMsg -_0801E19C: - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - beq _0801E1E4 - ldr r4, _0801E1CC @ =gLastUsedItem - ldr r2, _0801E1D0 @ =gBattleMons - ldr r3, _0801E1D4 @ =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - ldr r1, _0801E1D8 @ =gStringBank - ldrb r0, [r3] - strb r0, [r1] - movs r0, 0x3F - ands r0, r5 - strb r0, [r6] - bl b_movescr_stack_push_cursor - ldr r1, _0801E1DC @ =gBattlescriptCurrInstr - ldr r0, _0801E1E0 @ =BattleScript_HangedOnMsg - b _0801E20A - .align 2, 0 -_0801E1CC: .4byte gLastUsedItem -_0801E1D0: .4byte gBattleMons -_0801E1D4: .4byte gBankTarget -_0801E1D8: .4byte gStringBank -_0801E1DC: .4byte gBattlescriptCurrInstr -_0801E1E0: .4byte BattleScript_HangedOnMsg -_0801E1E4: - movs r0, 0x20 - ands r0, r5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0801E1F4 -_0801E1F0: - movs r3, 0xE5 - b _0801E1FA -_0801E1F4: - strb r0, [r7, 0x7] -_0801E1F6: - cmp r3, 0 - beq _0801E204 -_0801E1FA: - adds r0, r3, 0 - ldr r1, _0801E214 @ =gBankAttacker - ldrb r1, [r1] - bl PrepareStringBattle -_0801E204: - ldr r1, _0801E218 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_0801E20A: - str r0, [r1] -_0801E20C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801E214: .4byte gBankAttacker -_0801E218: .4byte gBattlescriptCurrInstr - thumb_func_end atk0F_resultmessage - - thumb_func_start atk10_printstring -atk10_printstring: @ 801E21C - push {r4,lr} - ldr r0, _0801E24C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801E246 - ldr r4, _0801E250 @ =gBattlescriptCurrInstr - ldr r1, [r4] - ldrb r0, [r1, 0x1] - ldrb r1, [r1, 0x2] - lsls r1, 8 - orrs r0, r1 - ldr r1, _0801E254 @ =gBankAttacker - ldrb r1, [r1] - bl PrepareStringBattle - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - ldr r1, _0801E258 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] -_0801E246: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801E24C: .4byte gBattleExecBuffer -_0801E250: .4byte gBattlescriptCurrInstr -_0801E254: .4byte gBankAttacker -_0801E258: .4byte gBattleCommunication - thumb_func_end atk10_printstring - - thumb_func_start atk11_printstring_playeronly -atk11_printstring_playeronly: @ 801E25C - push {r4,r5,lr} - ldr r5, _0801E290 @ =gActiveBank - ldr r0, _0801E294 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, _0801E298 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - bl EmitPrintStringPlayerOnly - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - ldr r1, _0801E29C @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801E290: .4byte gActiveBank -_0801E294: .4byte gBankAttacker -_0801E298: .4byte gBattlescriptCurrInstr -_0801E29C: .4byte gBattleCommunication - thumb_func_end atk11_printstring_playeronly - - thumb_func_start atk12_waitmessage -atk12_waitmessage: @ 801E2A0 - push {r4-r6,lr} - ldr r0, _0801E2BC @ =gBattleExecBuffer - ldr r4, [r0] - cmp r4, 0 - bne _0801E2EE - ldr r6, _0801E2C0 @ =gBattleCommunication - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _0801E2C8 - ldr r1, _0801E2C4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] - b _0801E2EE - .align 2, 0 -_0801E2BC: .4byte gBattleExecBuffer -_0801E2C0: .4byte gBattleCommunication -_0801E2C4: .4byte gBattlescriptCurrInstr -_0801E2C8: - ldr r5, _0801E2F4 @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r3, _0801E2F8 @ =gPauseCounterBattle - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bcc _0801E2EE - movs r1, 0 - strh r4, [r3] - adds r0, r2, 0x3 - str r0, [r5] - strb r1, [r6, 0x7] -_0801E2EE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801E2F4: .4byte gBattlescriptCurrInstr -_0801E2F8: .4byte gPauseCounterBattle - thumb_func_end atk12_waitmessage - - thumb_func_start atk13_printfromtable -atk13_printfromtable: @ 801E2FC - push {r4,r5,lr} - ldr r0, _0801E340 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801E33A - ldr r4, _0801E344 @ =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - ldr r5, _0801E348 @ =gBattleCommunication - ldrb r0, [r5, 0x5] - lsls r0, 1 - adds r1, r0 - ldrh r0, [r1] - ldr r1, _0801E34C @ =gBankAttacker - ldrb r1, [r1] - bl PrepareStringBattle - ldr r0, [r4] - adds r0, 0x5 - str r0, [r4] - movs r0, 0x1 - strb r0, [r5, 0x7] -_0801E33A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801E340: .4byte gBattleExecBuffer -_0801E344: .4byte gBattlescriptCurrInstr -_0801E348: .4byte gBattleCommunication -_0801E34C: .4byte gBankAttacker - thumb_func_end atk13_printfromtable - - thumb_func_start atk14_printfromtable_playeronly -atk14_printfromtable_playeronly: @ 801E350 - push {r4-r6,lr} - ldr r0, _0801E3A0 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801E39A - ldr r5, _0801E3A4 @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - ldr r6, _0801E3A8 @ =gBattleCommunication - ldrb r0, [r6, 0x5] - lsls r0, 1 - adds r1, r0 - ldr r4, _0801E3AC @ =gActiveBank - ldr r0, _0801E3B0 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldrh r1, [r1] - movs r0, 0 - bl EmitPrintStringPlayerOnly - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x5 - str r0, [r5] - movs r0, 0x1 - strb r0, [r6, 0x7] -_0801E39A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801E3A0: .4byte gBattleExecBuffer -_0801E3A4: .4byte gBattlescriptCurrInstr -_0801E3A8: .4byte gBattleCommunication -_0801E3AC: .4byte gActiveBank -_0801E3B0: .4byte gBankAttacker - thumb_func_end atk14_printfromtable_playeronly - - thumb_func_start sub_801E3B4 -sub_801E3B4: @ 801E3B4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r0, _0801E3E4 @ =gNoOfAllBanks - ldrb r3, [r0] - cmp r1, r3 - bge _0801E3DA - ldr r4, _0801E3E8 @ =gTurnOrder - ldrb r0, [r4] - cmp r0, r2 - beq _0801E3DA -_0801E3CC: - adds r1, 0x1 - cmp r1, r3 - bge _0801E3DA - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r2 - bne _0801E3CC -_0801E3DA: - lsls r0, r1, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0801E3E4: .4byte gNoOfAllBanks -_0801E3E8: .4byte gTurnOrder - thumb_func_end sub_801E3B4 - - thumb_func_start sub_801E3EC -sub_801E3EC: @ 801E3EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - movs r0, 0 - mov r10, r0 - movs r6, 0 - movs r1, 0x1 - str r1, [sp, 0x4] - ldr r1, _0801E430 @ =gBattleCommunication - ldrb r3, [r1, 0x3] - movs r0, 0x40 - ands r0, r3 - adds r7, r1, 0 - cmp r0, 0 - beq _0801E444 - ldr r2, _0801E434 @ =gEffectBank - ldr r0, _0801E438 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0xBF - ands r0, r3 - strb r0, [r7, 0x3] - movs r6, 0x40 - ldr r0, _0801E43C @ =0x02000000 - ldr r1, _0801E440 @ =gBankTarget - b _0801E450 - .align 2, 0 -_0801E430: .4byte gBattleCommunication -_0801E434: .4byte gEffectBank -_0801E438: .4byte gBankAttacker -_0801E43C: .4byte 0x02000000 -_0801E440: .4byte gBankTarget -_0801E444: - ldr r2, _0801E538 @ =gEffectBank - ldr r0, _0801E53C @ =gBankTarget - ldrb r0, [r0] - strb r0, [r2] - ldr r0, _0801E540 @ =0x02000000 - ldr r1, _0801E544 @ =gBankAttacker -_0801E450: - ldrb r1, [r1] - ldr r3, _0801E548 @ =0x00016003 - adds r0, r3 - strb r1, [r0] - mov r8, r2 - ldr r2, _0801E54C @ =gBattleMons - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x13 - bne _0801E48A - ldr r0, _0801E550 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - bne _0801E48A - cmp r4, 0 - bne _0801E48A - ldrb r0, [r7, 0x3] - cmp r0, 0x9 - bhi _0801E48A - bl _0801F5DC -_0801E48A: - mov r1, r8 - ldrb r0, [r1] - bl GetBankIdentity - ldr r2, _0801E554 @ =gSideAffecting - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r2 - ldrh r1, [r1] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801E4C4 - ldr r0, _0801E550 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - bne _0801E4C4 - cmp r4, 0 - bne _0801E4C4 - ldr r0, _0801E558 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - cmp r0, 0x7 - bhi _0801E4C4 - bl _0801F5DC -_0801E4C4: - ldr r3, _0801E54C @ =gBattleMons - ldr r2, _0801E538 @ =gEffectBank - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - mov r8, r2 - mov r9, r3 - cmp r0, 0 - bne _0801E4EA - ldr r0, _0801E558 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - cmp r0, 0xB - beq _0801E4EA - cmp r0, 0x1F - beq _0801E4EA - bl _0801F5DC -_0801E4EA: - mov r2, r8 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - mov r1, r9 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0801E50C - cmp r6, 0x40 - beq _0801E50C - bl _0801F5DC -_0801E50C: - ldr r0, _0801E558 @ =gBattleCommunication - ldrb r1, [r0, 0x3] - adds r7, r0, 0 - cmp r1, 0x6 - bls _0801E518 - b _0801EB4A -_0801E518: - ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects - ldrb r0, [r7, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x10 - bne _0801E528 - b _0801E714 -_0801E528: - cmp r0, 0x10 - bhi _0801E560 - cmp r0, 0x7 - beq _0801E57A - cmp r0, 0x8 - bne _0801E536 - b _0801E630 -_0801E536: - b _0801EA14 - .align 2, 0 -_0801E538: .4byte gEffectBank -_0801E53C: .4byte gBankTarget -_0801E540: .4byte 0x02000000 -_0801E544: .4byte gBankAttacker -_0801E548: .4byte 0x00016003 -_0801E54C: .4byte gBattleMons -_0801E550: .4byte gHitMarker -_0801E554: .4byte gSideAffecting -_0801E558: .4byte gBattleCommunication -_0801E55C: .4byte gStatusFlagsForMoveEffects -_0801E560: - cmp r0, 0x40 - bne _0801E566 - b _0801E888 -_0801E566: - cmp r0, 0x40 - bhi _0801E572 - cmp r0, 0x20 - bne _0801E570 - b _0801E7EA -_0801E570: - b _0801EA14 -_0801E572: - cmp r0, 0x80 - bne _0801E578 - b _0801E8E4 -_0801E578: - b _0801EA14 -_0801E57A: - mov r3, r8 - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - add r0, r9 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - beq _0801E5DC - ldr r0, _0801E5D4 @ =gActiveBank - movs r1, 0 - strb r1, [r0] - ldr r1, _0801E5D8 @ =gNoOfAllBanks - ldrb r3, [r1] - adds r7, r0, 0 - mov r12, r1 - cmp r3, 0 - beq _0801E5E8 - mov r4, r9 - ldr r0, [r4, 0x50] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - bne _0801E5E8 - adds r1, r7, 0 - mov r6, r9 - adds r6, 0x50 - movs r5, 0x58 - movs r4, 0x70 -_0801E5B4: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r3 - bcs _0801E5E8 - ldrb r0, [r7] - muls r0, r5 - adds r0, r6 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _0801E5B4 - b _0801E5E8 - .align 2, 0 -_0801E5D4: .4byte gActiveBank -_0801E5D8: .4byte gNoOfAllBanks -_0801E5DC: - ldr r0, _0801E628 @ =gActiveBank - ldr r2, _0801E62C @ =gNoOfAllBanks - ldrb r1, [r2] - strb r1, [r0] - adds r7, r0, 0 - mov r12, r2 -_0801E5E8: - mov r0, r8 - ldrb r2, [r0] - movs r0, 0x58 - adds r1, r2, 0 - muls r1, r0 - mov r0, r9 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0801E600 - b _0801EA14 -_0801E600: - ldrb r0, [r7] - mov r3, r12 - ldrb r3, [r3] - cmp r0, r3 - beq _0801E60C - b _0801EA14 -_0801E60C: - mov r4, r9 - adds r0, r1, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x48 - bne _0801E61A - b _0801EA14 -_0801E61A: - cmp r0, 0xF - bne _0801E620 - b _0801EA14 -_0801E620: - adds r0, r2, 0 - bl CancelMultiTurnMoves - b _0801EA04 - .align 2, 0 -_0801E628: .4byte gActiveBank -_0801E62C: .4byte gNoOfAllBanks -_0801E630: - mov r2, r8 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - add r0, r9 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x11 - bne _0801E688 - cmp r4, 0x1 - beq _0801E64A - cmp r5, 0x80 - bne _0801E688 -_0801E64A: - ldr r0, _0801E678 @ =gLastUsedAbility - strb r1, [r0] - mov r3, r8 - ldrb r0, [r3] - movs r1, 0x11 - bl RecordAbilityBattle - ldr r4, _0801E67C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801E680 @ =BattleScript_PSNPrevention -_0801E664: - str r0, [r4] - ldr r2, _0801E684 @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _0801E676 - b _0801E928 -_0801E676: - b _0801E94C - .align 2, 0 -_0801E678: .4byte gLastUsedAbility -_0801E67C: .4byte gBattlescriptCurrInstr -_0801E680: .4byte BattleScript_PSNPrevention -_0801E684: .4byte gHitMarker -_0801E688: - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x58 - muls r0, r1 - add r0, r9 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0x3 - beq _0801E6AC - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x3 - beq _0801E6AC - cmp r1, 0x8 - beq _0801E6AC - cmp r0, 0x8 - bne _0801E6C6 -_0801E6AC: - ldr r0, _0801E710 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _0801E6C6 - cmp r4, 0x1 - bne _0801E6C0 - b _0801E98C -_0801E6C0: - cmp r5, 0x80 - bne _0801E6C6 - b _0801E98C -_0801E6C6: - mov r2, r8 - ldrb r1, [r2] - movs r0, 0x58 - muls r1, r0 - mov r4, r9 - adds r3, r1, r4 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r4, [r0] - cmp r4, 0x3 - bne _0801E6DE - b _0801EA14 -_0801E6DE: - adds r0, 0x1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0801E6E8 - b _0801EA14 -_0801E6E8: - cmp r4, 0x8 - bne _0801E6EE - b _0801EA14 -_0801E6EE: - cmp r0, 0x8 - bne _0801E6F4 - b _0801EA14 -_0801E6F4: - mov r0, r9 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0801E702 - b _0801EA14 -_0801E702: - adds r0, r3, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x11 - bne _0801E70E - b _0801EA14 -_0801E70E: - b _0801EA04 - .align 2, 0 -_0801E710: .4byte gHitMarker -_0801E714: - mov r2, r8 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - add r0, r9 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x29 - bne _0801E758 - cmp r4, 0x1 - beq _0801E72E - cmp r5, 0x80 - bne _0801E758 -_0801E72E: - ldr r0, _0801E74C @ =gLastUsedAbility - strb r1, [r0] - mov r3, r8 - ldrb r0, [r3] - movs r1, 0x29 - bl RecordAbilityBattle - ldr r4, _0801E750 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801E754 @ =BattleScript_BRNPrevention - b _0801E664 - .align 2, 0 -_0801E74C: .4byte gLastUsedAbility -_0801E750: .4byte gBattlescriptCurrInstr -_0801E754: .4byte BattleScript_BRNPrevention -_0801E758: - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - mov r2, r9 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xA - beq _0801E778 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xA - bne _0801E7A8 -_0801E778: - ldr r0, _0801E79C @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _0801E7A8 - cmp r4, 0x1 - beq _0801E78E - cmp r5, 0x80 - bne _0801E7A8 -_0801E78E: - ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention - b _0801E998 - .align 2, 0 -_0801E79C: .4byte gHitMarker -_0801E7A0: .4byte gBattlescriptCurrInstr -_0801E7A4: .4byte BattleScript_BRNPrevention -_0801E7A8: - mov r3, r8 - ldrb r0, [r3] - movs r1, 0x58 - adds r2, r0, 0 - muls r2, r1 - mov r4, r9 - adds r1, r2, r4 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xA - bne _0801E7C2 - b _0801EA14 -_0801E7C2: - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xA - bne _0801E7CE - b _0801EA14 -_0801E7CE: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x29 - bne _0801E7DA - b _0801EA14 -_0801E7DA: - mov r0, r9 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0801E7E8 - b _0801EA14 -_0801E7E8: - b _0801EA04 -_0801E7EA: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0801E826 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801E826 - ldr r0, _0801E87C @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0801E826 - movs r1, 0 - str r1, [sp, 0x4] -_0801E826: - ldr r4, _0801E880 @ =gBattleMons - ldr r0, _0801E884 @ =gEffectBank - ldrb r3, [r0] - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r1, r2, r4 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xF - bne _0801E840 - b _0801EA14 -_0801E840: - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xF - bne _0801E84C - b _0801EA14 -_0801E84C: - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0801E85A - b _0801EA14 -_0801E85A: - ldr r2, [sp, 0x4] - cmp r2, 0 - bne _0801E862 - b _0801EA14 -_0801E862: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x28 - bne _0801E86E - b _0801EA14 -_0801E86E: - adds r0, r3, 0 - bl CancelMultiTurnMoves - movs r3, 0x1 - mov r10, r3 - b _0801EA14 - .align 2, 0 -_0801E87C: .4byte gBattleWeather -_0801E880: .4byte gBattleMons -_0801E884: .4byte gEffectBank -_0801E888: - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - mov r2, r9 - adds r0, r1, r2 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x7 - bne _0801E8D0 - cmp r4, 0x1 - beq _0801E8A6 - cmp r5, 0x80 - beq _0801E8A6 - b _0801EA14 -_0801E8A6: - ldr r0, _0801E8C4 @ =gLastUsedAbility - strb r2, [r0] - mov r3, r8 - ldrb r0, [r3] - movs r1, 0x7 - bl RecordAbilityBattle - ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention - b _0801E664 - .align 2, 0 -_0801E8C4: .4byte gLastUsedAbility -_0801E8C8: .4byte gBattlescriptCurrInstr -_0801E8CC: .4byte BattleScript_PRLZPrevention -_0801E8D0: - mov r0, r9 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0801E8DE - b _0801EA14 -_0801E8DE: - movs r4, 0x1 - mov r10, r4 - b _0801EA14 -_0801E8E4: - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r9 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x11 - bne _0801E952 - cmp r4, 0x1 - beq _0801E8FE - cmp r5, 0x80 - bne _0801E952 -_0801E8FE: - ldr r0, _0801E938 @ =gLastUsedAbility - strb r1, [r0] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x11 - bl RecordAbilityBattle - ldr r4, _0801E93C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801E940 @ =BattleScript_PSNPrevention - str r0, [r4] - ldr r2, _0801E944 @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _0801E94C -_0801E928: - movs r0, 0x1 - strb r0, [r7, 0x5] - ldr r0, _0801E948 @ =0xffffdfff - ands r1, r0 - str r1, [r2] - bl _0801F5FA - .align 2, 0 -_0801E938: .4byte gLastUsedAbility -_0801E93C: .4byte gBattlescriptCurrInstr -_0801E940: .4byte BattleScript_PSNPrevention -_0801E944: .4byte gHitMarker -_0801E948: .4byte 0xffffdfff -_0801E94C: - strb r0, [r7, 0x5] - bl _0801F5FA -_0801E952: - mov r2, r8 - ldrb r0, [r2] - movs r1, 0x58 - muls r0, r1 - add r0, r9 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0x3 - beq _0801E976 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x3 - beq _0801E976 - cmp r1, 0x8 - beq _0801E976 - cmp r0, 0x8 - bne _0801E9B4 -_0801E976: - ldr r0, _0801E9A4 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _0801E9B4 - cmp r4, 0x1 - beq _0801E98C - cmp r5, 0x80 - bne _0801E9B4 -_0801E98C: - ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801E9AC @ =BattleScript_PSNPrevention -_0801E998: - str r0, [r4] - ldr r1, _0801E9B0 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - bl _0801F5FA - .align 2, 0 -_0801E9A4: .4byte gHitMarker -_0801E9A8: .4byte gBattlescriptCurrInstr -_0801E9AC: .4byte BattleScript_PSNPrevention -_0801E9B0: .4byte gBattleCommunication -_0801E9B4: - mov r3, r8 - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - mov r2, r9 - adds r2, 0x4C - adds r5, r0, r2 - ldr r4, [r5] - cmp r4, 0 - bne _0801EA14 - mov r3, r9 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r3, [r0] - cmp r3, 0x3 - beq _0801EA0A - adds r0, 0x1 - ldrb r0, [r0] - cmp r0, 0x3 - beq _0801EA0A - cmp r3, 0x8 - beq _0801EA0A - cmp r0, 0x8 - beq _0801EA0A - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x11 - beq _0801EA14 - mov r4, r8 - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r6 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x9 - negs r2, r2 - ands r0, r2 - str r0, [r1] -_0801EA04: - movs r0, 0x1 - mov r10, r0 - b _0801EA14 -_0801EA0A: - ldr r0, _0801EA58 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] -_0801EA14: - mov r1, r10 - cmp r1, 0x1 - beq _0801EA1C - b _0801EB3C -_0801EA1C: - ldr r0, _0801EA5C @ =gBattlescriptCurrInstr - ldr r0, [r0] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects - ldr r0, _0801EA64 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - cmp r3, 0x7 - bne _0801EA70 - bl Random - ldr r2, _0801EA68 @ =gBattleMons - ldr r1, _0801EA6C @ =gEffectBank - ldrb r3, [r1] - movs r1, 0x58 - muls r3, r1 - adds r2, 0x4C - adds r3, r2 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - b _0801EA84 - .align 2, 0 -_0801EA58: .4byte gBattleMoveFlags -_0801EA5C: .4byte gBattlescriptCurrInstr -_0801EA60: .4byte gStatusFlagsForMoveEffects -_0801EA64: .4byte gBattleCommunication -_0801EA68: .4byte gBattleMons -_0801EA6C: .4byte gEffectBank -_0801EA70: - ldr r2, _0801EAD4 @ =gBattleMons - ldr r0, _0801EAD8 @ =gEffectBank - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r2, 0x4C - adds r1, r2 - ldr r0, [r1] - orrs r0, r3 - str r0, [r1] -_0801EA84: - ldr r2, _0801EADC @ =gBattlescriptCurrInstr - ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs - ldr r5, _0801EAE4 @ =gBattleCommunication - ldrb r0, [r5, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r4, _0801EAE8 @ =gActiveBank - ldr r1, _0801EAD8 @ =gEffectBank - ldrb r0, [r1] - strb r0, [r4] - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - ldr r1, _0801EAEC @ =gUnknown_02024ACC - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r2, _0801EAF0 @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _0801EAF8 - movs r0, 0x1 - strb r0, [r5, 0x5] - ldr r0, _0801EAF4 @ =0xffffdfff - ands r1, r0 - str r1, [r2] - b _0801EAFA - .align 2, 0 -_0801EAD4: .4byte gBattleMons -_0801EAD8: .4byte gEffectBank -_0801EADC: .4byte gBattlescriptCurrInstr -_0801EAE0: .4byte gMoveEffectBS_Ptrs -_0801EAE4: .4byte gBattleCommunication -_0801EAE8: .4byte gActiveBank -_0801EAEC: .4byte gUnknown_02024ACC -_0801EAF0: .4byte gHitMarker -_0801EAF4: .4byte 0xffffdfff -_0801EAF8: - strb r0, [r5, 0x5] -_0801EAFA: - ldr r0, _0801EB2C @ =gBattleCommunication - ldrb r2, [r0, 0x3] - adds r7, r0, 0 - cmp r2, 0x2 - beq _0801EB14 - cmp r2, 0x6 - beq _0801EB14 - cmp r2, 0x5 - beq _0801EB14 - cmp r2, 0x3 - beq _0801EB14 - bl _0801F5FA -_0801EB14: - ldr r0, _0801EB30 @ =0x02000000 - ldrb r1, [r7, 0x3] - ldr r2, _0801EB34 @ =0x000160ca - adds r0, r2 - strb r1, [r0] - ldr r2, _0801EB38 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 7 - bl _0801F4F2 - .align 2, 0 -_0801EB2C: .4byte gBattleCommunication -_0801EB30: .4byte 0x02000000 -_0801EB34: .4byte 0x000160ca -_0801EB38: .4byte gHitMarker -_0801EB3C: - mov r3, r10 - cmp r3, 0 - beq _0801EB46 - bl _0801F5FA -_0801EB46: - bl _0801F5DC -_0801EB4A: - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - mov r0, r9 - adds r0, 0x50 - adds r1, r0 - ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects - ldrb r3, [r7, 0x3] - lsls r0, r3, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801EB6E - bl _0801F5DC -_0801EB6E: - subs r0, r3, 0x7 - cmp r0, 0x34 - bls _0801EB78 - bl _0801F5FA -_0801EB78: - lsls r0, 2 - ldr r1, _0801EB88 @ =_0801EB8C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801EB84: .4byte gStatusFlagsForMoveEffects -_0801EB88: .4byte _0801EB8C - .align 2, 0 -_0801EB8C: - .4byte _0801EC60 - .4byte _0801ECD4 - .4byte _0801EE4C - .4byte _0801ED60 - .4byte _0801EDDC - .4byte _0801EE84 - .4byte _0801EECC - .4byte _0801EFA8 - .4byte _0801EFEC - .4byte _0801EFEC - .4byte _0801EFEC - .4byte _0801EFEC - .4byte _0801EFEC - .4byte _0801EFEC - .4byte _0801EFEC - .4byte _0801F040 - .4byte _0801F040 - .4byte _0801F040 - .4byte _0801F040 - .4byte _0801F040 - .4byte _0801F040 - .4byte _0801F040 - .4byte _0801F13C - .4byte _0801F184 - .4byte _0801F1A4 - .4byte _0801F364 - .4byte _0801F3A0 - .4byte _0801F3BC - .4byte _0801F3D4 - .4byte _0801F3EC - .4byte _0801F44C - .4byte _0801F464 - .4byte _0801F094 - .4byte _0801F094 - .4byte _0801F094 - .4byte _0801F094 - .4byte _0801F094 - .4byte _0801F094 - .4byte _0801F094 - .4byte _0801F0E8 - .4byte _0801F0E8 - .4byte _0801F0E8 - .4byte _0801F0E8 - .4byte _0801F0E8 - .4byte _0801F0E8 - .4byte _0801F0E8 - .4byte _0801F4A8 - .4byte _0801F500 - .4byte _0801F5FA - .4byte _0801F5FA - .4byte _0801F5FA - .4byte _0801F5FA - .4byte _0801F5EC -_0801EC60: - mov r1, r8 - ldrb r0, [r1] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - mov r2, r9 - adds r0, r1, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x14 - bne _0801EC7A - bl _0801F5DC -_0801EC7A: - mov r4, r9 - adds r4, 0x50 - adds r0, r1, r4 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0801EC8E - bl _0801F5DC -_0801EC8E: - bl Random - mov r3, r8 - ldrb r1, [r3] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 16 - adds r1, 0x2 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs - ldr r0, _0801ECD0 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _0801F5F8 - .align 2, 0 -_0801ECC8: .4byte gBattlescriptCurrInstr -_0801ECCC: .4byte gMoveEffectBS_Ptrs -_0801ECD0: .4byte gBattleCommunication -_0801ECD4: - mov r0, r8 - ldrb r2, [r0] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - add r0, r9 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x27 - bne _0801ED18 - cmp r4, 0x1 - beq _0801ECF4 - cmp r5, 0x80 - beq _0801ECF4 - bl _0801F5DC -_0801ECF4: - ldr r0, _0801ED0C @ =gLastUsedAbility - strb r1, [r0] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x27 - bl RecordAbilityBattle - ldr r1, _0801ED10 @ =gBattlescriptCurrInstr - ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention - str r0, [r1] - bl _0801F5FA - .align 2, 0 -_0801ED0C: .4byte gLastUsedAbility -_0801ED10: .4byte gBattlescriptCurrInstr -_0801ED14: .4byte BattleScript_FlinchPrevention -_0801ED18: - adds r0, r2, 0 - bl sub_801E3B4 - ldr r1, _0801ED54 @ =gCurrentMoveTurn - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bhi _0801ED2E - bl _0801F5DC -_0801ED2E: - mov r2, r8 - ldrb r0, [r2] - adds r2, r0, 0 - muls r2, r6 - mov r0, r9 - adds r0, 0x50 - adds r2, r0 - ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects - ldr r0, _0801ED5C @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - orrs r1, r0 - str r1, [r2] - bl _0801F5DC - .align 2, 0 -_0801ED54: .4byte gCurrentMoveTurn -_0801ED58: .4byte gStatusFlagsForMoveEffects -_0801ED5C: .4byte gBattleCommunication -_0801ED60: - mov r3, r8 - ldrb r0, [r3] - movs r5, 0x58 - muls r0, r5 - mov r4, r9 - adds r4, 0x50 - adds r2, r0, r4 - ldr r1, [r2] - movs r0, 0x70 - ands r0, r1 - cmp r0, 0 - beq _0801ED7C - bl _0801F5DC -_0801ED7C: - movs r0, 0x80 - lsls r0, 5 - orrs r1, r0 - str r1, [r2] - ldr r1, _0801EDC8 @ =gLockedMove - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, _0801EDCC @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - bl Random - mov r2, r8 - ldrb r1, [r2] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - lsls r1, 4 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs - ldr r0, _0801EDD8 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _0801F5F8 - .align 2, 0 -_0801EDC8: .4byte gLockedMove -_0801EDCC: .4byte gCurrentMove -_0801EDD0: .4byte gBattlescriptCurrInstr -_0801EDD4: .4byte gMoveEffectBS_Ptrs -_0801EDD8: .4byte gBattleCommunication -_0801EDDC: - ldr r5, _0801EE30 @ =gBankAttacker - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - bne _0801EE14 - ldr r4, _0801EE34 @ =gPaydayMoney - ldrh r3, [r4] - ldr r2, _0801EE38 @ =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, r3, r0 - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r3, r0 - bls _0801EE14 - ldr r3, _0801EE3C @ =0x0000ffff - adds r0, r3, 0 - strh r0, [r4] -_0801EE14: - ldr r4, _0801EE40 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs - ldr r0, _0801EE48 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _0801F5F8 - .align 2, 0 -_0801EE30: .4byte gBankAttacker -_0801EE34: .4byte gPaydayMoney -_0801EE38: .4byte gBattleMons -_0801EE3C: .4byte 0x0000ffff -_0801EE40: .4byte gBattlescriptCurrInstr -_0801EE44: .4byte gMoveEffectBS_Ptrs -_0801EE48: .4byte gBattleCommunication -_0801EE4C: - mov r4, r8 - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - mov r1, r9 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _0801EE62 - b _0801F5DC -_0801EE62: - bl Random - ldr r4, _0801EE80 @ =gBattleCommunication - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x3 - strb r0, [r4, 0x3] - movs r0, 0 - movs r1, 0 - bl sub_801E3EC - b _0801F5FA - .align 2, 0 -_0801EE80: .4byte gBattleCommunication -_0801EE84: - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r9 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - ldr r1, _0801EEC0 @ =gLockedMove - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldr r1, _0801EEC4 @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - ldr r0, _0801EEC8 @ =gProtectStructs - ldrb r1, [r2] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x1] - b _0801F5DC - .align 2, 0 -_0801EEC0: .4byte gLockedMove -_0801EEC4: .4byte gCurrentMove -_0801EEC8: .4byte gProtectStructs -_0801EECC: - mov r3, r8 - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - mov r4, r9 - adds r4, 0x50 - adds r0, r4 - ldr r5, [r0] - movs r0, 0xE0 - lsls r0, 8 - ands r5, r0 - cmp r5, 0 - beq _0801EEE8 - b _0801F5DC -_0801EEE8: - bl Random - mov r2, r8 - ldrb r1, [r2] - adds r2, r1, 0 - muls r2, r6 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x3 - lsls r1, 13 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r2, _0801EF80 @ =0x02000000 - mov r3, r8 - ldrb r0, [r3] - lsls r0, 1 - ldr r4, _0801EF84 @ =0x00016004 - adds r0, r4 - adds r0, r2 - ldr r6, _0801EF88 @ =gCurrentMove - ldrh r1, [r6] - strb r1, [r0] - ldrb r0, [r3] - lsls r0, 1 - ldr r1, _0801EF8C @ =0x00016005 - adds r0, r1 - adds r0, r2 - ldrh r1, [r6] - lsrs r1, 8 - strb r1, [r0] - ldrb r0, [r3] - ldr r3, _0801EF90 @ =0x00016020 - adds r0, r3 - adds r0, r2 - ldr r1, _0801EF94 @ =gBankAttacker - ldrb r1, [r1] - strb r1, [r0] - ldr r4, _0801EF98 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs - ldr r2, _0801EFA0 @ =gBattleCommunication - ldrb r0, [r2, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4] - strb r5, [r2, 0x5] - ldr r1, _0801EFA4 @ =gTrappingMoves - ldrh r0, [r1] - ldrh r4, [r6] - cmp r0, r4 - bne _0801EF5C - b _0801F5FA -_0801EF5C: - adds r3, r1, 0 - adds r1, r6, 0 -_0801EF60: - ldrb r0, [r2, 0x5] - adds r0, 0x1 - strb r0, [r2, 0x5] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _0801EF70 - b _0801F5FA -_0801EF70: - ldrb r0, [r2, 0x5] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - ldrh r4, [r1] - cmp r0, r4 - bne _0801EF60 - b _0801F5FA - .align 2, 0 -_0801EF80: .4byte 0x02000000 -_0801EF84: .4byte 0x00016004 -_0801EF88: .4byte gCurrentMove -_0801EF8C: .4byte 0x00016005 -_0801EF90: .4byte 0x00016020 -_0801EF94: .4byte gBankAttacker -_0801EF98: .4byte gBattlescriptCurrInstr -_0801EF9C: .4byte gMoveEffectBS_Ptrs -_0801EFA0: .4byte gBattleCommunication -_0801EFA4: .4byte gTrappingMoves -_0801EFA8: - ldr r1, _0801EFD8 @ =gBattleMoveDamage - ldr r0, _0801EFDC @ =gHP_dealt - ldr r0, [r0] - cmp r0, 0 - bge _0801EFB4 - adds r0, 0x3 -_0801EFB4: - asrs r0, 2 - str r0, [r1] - cmp r0, 0 - bne _0801EFC0 - movs r0, 0x1 - str r0, [r1] -_0801EFC0: - ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs - ldr r0, _0801EFE8 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - b _0801F5F8 - .align 2, 0 -_0801EFD8: .4byte gBattleMoveDamage -_0801EFDC: .4byte gHP_dealt -_0801EFE0: .4byte gBattlescriptCurrInstr -_0801EFE4: .4byte gMoveEffectBS_Ptrs -_0801EFE8: .4byte gBattleCommunication -_0801EFEC: - ldrb r1, [r7, 0x3] - adds r1, 0xF2 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x10 - adds r2, r6, 0 - movs r3, 0 - bl sub_8025E20 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _0801F008 - b _0801F5DC -_0801F008: - ldr r2, _0801F02C @ =0x02000000 - ldrb r1, [r7, 0x3] - movs r0, 0x3F - ands r0, r1 - ldr r4, _0801F030 @ =0x000160a4 - adds r1, r2, r4 - strb r0, [r1] - ldr r0, _0801F034 @ =0x000160a5 - adds r2, r0 - strb r3, [r2] - ldr r4, _0801F038 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F03C @ =BattleScript_StatUp - b _0801F5F8 - .align 2, 0 -_0801F02C: .4byte 0x02000000 -_0801F030: .4byte 0x000160a4 -_0801F034: .4byte 0x000160a5 -_0801F038: .4byte gBattlescriptCurrInstr -_0801F03C: .4byte BattleScript_StatUp -_0801F040: - movs r0, 0x70 - negs r0, r0 - ldrb r1, [r7, 0x3] - adds r1, 0xEB - lsls r1, 24 - lsrs r1, 24 - adds r2, r6, 0 - movs r3, 0 - bl sub_8025E20 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _0801F05E - b _0801F5DC -_0801F05E: - ldr r2, _0801F080 @ =0x02000000 - ldrb r1, [r7, 0x3] - movs r0, 0x3F - ands r0, r1 - ldr r4, _0801F084 @ =0x000160a4 - adds r1, r2, r4 - strb r0, [r1] - ldr r0, _0801F088 @ =0x000160a5 - adds r2, r0 - strb r3, [r2] - ldr r4, _0801F08C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F090 @ =BattleScript_StatDown - b _0801F5F8 - .align 2, 0 -_0801F080: .4byte 0x02000000 -_0801F084: .4byte 0x000160a4 -_0801F088: .4byte 0x000160a5 -_0801F08C: .4byte gBattlescriptCurrInstr -_0801F090: .4byte BattleScript_StatDown -_0801F094: - ldrb r1, [r7, 0x3] - adds r1, 0xDA - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x20 - adds r2, r6, 0 - movs r3, 0 - bl sub_8025E20 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _0801F0B0 - b _0801F5DC -_0801F0B0: - ldr r2, _0801F0D4 @ =0x02000000 - ldrb r1, [r7, 0x3] - movs r0, 0x3F - ands r0, r1 - ldr r4, _0801F0D8 @ =0x000160a4 - adds r1, r2, r4 - strb r0, [r1] - ldr r0, _0801F0DC @ =0x000160a5 - adds r2, r0 - strb r3, [r2] - ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F0E4 @ =BattleScript_StatUp - b _0801F5F8 - .align 2, 0 -_0801F0D4: .4byte 0x02000000 -_0801F0D8: .4byte 0x000160a4 -_0801F0DC: .4byte 0x000160a5 -_0801F0E0: .4byte gBattlescriptCurrInstr -_0801F0E4: .4byte BattleScript_StatUp -_0801F0E8: - movs r0, 0x60 - negs r0, r0 - ldrb r1, [r7, 0x3] - adds r1, 0xD3 - lsls r1, 24 - lsrs r1, 24 - adds r2, r6, 0 - movs r3, 0 - bl sub_8025E20 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _0801F106 - b _0801F5DC -_0801F106: - ldr r2, _0801F128 @ =0x02000000 - ldrb r1, [r7, 0x3] - movs r0, 0x3F - ands r0, r1 - ldr r4, _0801F12C @ =0x000160a4 - adds r1, r2, r4 - strb r0, [r1] - ldr r0, _0801F130 @ =0x000160a5 - adds r2, r0 - strb r3, [r2] - ldr r4, _0801F134 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F138 @ =BattleScript_StatDown - b _0801F5F8 - .align 2, 0 -_0801F128: .4byte 0x02000000 -_0801F12C: .4byte 0x000160a4 -_0801F130: .4byte 0x000160a5 -_0801F134: .4byte gBattlescriptCurrInstr -_0801F138: .4byte BattleScript_StatDown -_0801F13C: - mov r2, r8 - ldrb r1, [r2] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r9 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 15 - orrs r0, r1 - str r0, [r2] - ldr r2, _0801F178 @ =gDisableStructs - mov r3, r8 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x19] - ldr r1, _0801F17C @ =gLockedMove - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, _0801F180 @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - b _0801F5DC - .align 2, 0 -_0801F178: .4byte gDisableStructs -_0801F17C: .4byte gLockedMove -_0801F180: .4byte gCurrentMove -_0801F184: - ldr r0, _0801F1A0 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r9 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 16 -_0801F19A: - orrs r0, r1 - str r0, [r2] - b _0801F5DC - .align 2, 0 -_0801F1A0: .4byte gBankAttacker -_0801F1A4: - ldr r4, _0801F254 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0801F1D8 - ldr r0, _0801F258 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0801F25C @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _0801F214 - ldr r0, _0801F260 @ =gTrainerBattleOpponent - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0801F1D8 - b _0801F5DC -_0801F1D8: - ldr r0, _0801F258 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0801F25C @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _0801F214 - ldr r0, _0801F260 @ =gTrainerBattleOpponent - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0801F214 - ldr r0, _0801F264 @ =gWishFutureKnock - adds r0, 0x29 - adds r0, r6, r0 - ldrb r1, [r0] - ldr r3, _0801F268 @ =gBitTable - ldr r2, _0801F26C @ =gBattlePartyID - ldr r0, _0801F254 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801F214 - b _0801F5DC -_0801F214: - ldr r2, _0801F270 @ =gBattleMons - ldr r1, _0801F274 @ =gBankTarget - ldrb r0, [r1] - movs r3, 0x58 - muls r0, r3 - adds r4, r0, r2 - ldrh r0, [r4, 0x2E] - adds r7, r1, 0 - mov r9, r2 - cmp r0, 0 - beq _0801F284 - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3C - bne _0801F284 - ldr r1, _0801F278 @ =gBattlescriptCurrInstr - ldr r0, _0801F27C @ =BattleScript_NoItemSteal - str r0, [r1] - ldr r1, _0801F280 @ =gLastUsedAbility - ldrb r0, [r7] - muls r0, r3 - add r0, r9 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - ldrb r1, [r1] - bl RecordAbilityBattle - b _0801F5FA - .align 2, 0 -_0801F254: .4byte gBankAttacker -_0801F258: .4byte gBattleTypeFlags -_0801F25C: .4byte 0x00000902 -_0801F260: .4byte gTrainerBattleOpponent -_0801F264: .4byte gWishFutureKnock -_0801F268: .4byte gBitTable -_0801F26C: .4byte gBattlePartyID -_0801F270: .4byte gBattleMons -_0801F274: .4byte gBankTarget -_0801F278: .4byte gBattlescriptCurrInstr -_0801F27C: .4byte BattleScript_NoItemSteal -_0801F280: .4byte gLastUsedAbility -_0801F284: - ldr r4, _0801F340 @ =gBankAttacker - mov r10, r4 - ldrb r1, [r4] - movs r0, 0x58 - mov r8, r0 - mov r0, r8 - muls r0, r1 - add r0, r9 - ldrh r3, [r0, 0x2E] - cmp r3, 0 - beq _0801F29C - b _0801F5DC -_0801F29C: - ldrb r0, [r7] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - add r0, r9 - ldrh r2, [r0, 0x2E] - adds r0, r2, 0 - cmp r0, 0xAF - bne _0801F2B0 - b _0801F5DC -_0801F2B0: - cmp r0, 0 - bne _0801F2B6 - b _0801F5DC -_0801F2B6: - lsls r0, r1, 1 - ldr r5, _0801F344 @ =0x020160f0 - adds r0, r5 - ldr r1, _0801F348 @ =gLastUsedItem - strh r2, [r0] - strh r2, [r1] - ldrb r0, [r7] - mov r4, r8 - muls r4, r0 - adds r0, r4, 0 - add r0, r9 - movs r6, 0 - strh r3, [r0, 0x2E] - ldr r4, _0801F34C @ =gActiveBank - mov r2, r10 - ldrb r0, [r2] - strb r0, [r4] - str r1, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - mov r3, r10 - ldrb r0, [r3] - bl MarkBufferBankForExecution - ldrb r0, [r7] - strb r0, [r4] - ldrb r0, [r7] - mov r4, r8 - muls r4, r0 - adds r0, r4, 0 - mov r1, r9 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r4, _0801F350 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F354 @ =BattleScript_ItemSteal - str r0, [r4] - ldr r0, _0801F358 @ =0xfffe9f10 - adds r5, r0 - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _0801F35C @ =0x000160e8 - adds r0, r1 - adds r0, r5 - strb r6, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r2, _0801F360 @ =0x000160e9 - adds r0, r2 - adds r0, r5 - strb r6, [r0] - b _0801F5FA - .align 2, 0 -_0801F340: .4byte gBankAttacker -_0801F344: .4byte 0x020160f0 -_0801F348: .4byte gLastUsedItem -_0801F34C: .4byte gActiveBank -_0801F350: .4byte gBattlescriptCurrInstr -_0801F354: .4byte BattleScript_ItemSteal -_0801F358: .4byte 0xfffe9f10 -_0801F35C: .4byte 0x000160e8 -_0801F360: .4byte 0x000160e9 -_0801F364: - ldr r3, _0801F394 @ =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r9 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 19 - orrs r0, r1 - str r0, [r2] - ldr r2, _0801F398 @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _0801F39C @ =gBankAttacker - ldrb r1, [r1] - strb r1, [r0, 0x14] - b _0801F5DC - .align 2, 0 -_0801F394: .4byte gBankTarget -_0801F398: .4byte gDisableStructs -_0801F39C: .4byte gBankAttacker -_0801F3A0: - ldr r0, _0801F3B8 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r9 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 20 - b _0801F19A - .align 2, 0 -_0801F3B8: .4byte gBankTarget -_0801F3BC: - ldr r4, _0801F3CC @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F3D0 @ =gUnknown_081D9224 - b _0801F5F8 - .align 2, 0 -_0801F3CC: .4byte gBattlescriptCurrInstr -_0801F3D0: .4byte gUnknown_081D9224 -_0801F3D4: - ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway - b _0801F5F8 - .align 2, 0 -_0801F3E4: .4byte gBattlescriptCurrInstr -_0801F3E8: .4byte BattleScript_RapidSpinAway -_0801F3EC: - ldr r6, _0801F43C @ =gBankTarget - ldrb r0, [r6] - movs r2, 0x58 - muls r0, r2 - mov r1, r9 - adds r1, 0x4C - adds r5, r0, r1 - ldr r4, [r5] - movs r0, 0x40 - ands r0, r4 - cmp r0, 0 - bne _0801F406 - b _0801F5DC -_0801F406: - movs r0, 0x41 - negs r0, r0 - ands r4, r0 - str r4, [r5] - ldr r4, _0801F440 @ =gActiveBank - ldrb r0, [r6] - strb r0, [r4] - ldrb r0, [r4] - muls r0, r2 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r4, _0801F444 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal - b _0801F5F8 - .align 2, 0 -_0801F43C: .4byte gBankTarget -_0801F440: .4byte gActiveBank -_0801F444: .4byte gBattlescriptCurrInstr -_0801F448: .4byte BattleScript_TargetPRLZHeal -_0801F44C: - ldr r4, _0801F45C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F460 @ =gUnknown_081D93FA - b _0801F5F8 - .align 2, 0 -_0801F45C: .4byte gBattlescriptCurrInstr -_0801F460: .4byte gUnknown_081D93FA -_0801F464: - ldr r4, _0801F494 @ =gBattleMoveDamage - ldr r0, _0801F498 @ =gHP_dealt - ldr r0, [r0] - movs r1, 0x3 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801F47A - movs r0, 0x1 - str r0, [r4] -_0801F47A: - ldr r4, _0801F49C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs - ldr r0, _0801F4A4 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - b _0801F5F8 - .align 2, 0 -_0801F494: .4byte gBattleMoveDamage -_0801F498: .4byte gHP_dealt -_0801F49C: .4byte gBattlescriptCurrInstr -_0801F4A0: .4byte gMoveEffectBS_Ptrs -_0801F4A4: .4byte gBattleCommunication -_0801F4A8: - mov r3, r8 - ldrb r0, [r3] - movs r5, 0x58 - muls r0, r5 - mov r4, r9 - adds r4, 0x50 - adds r2, r0, r4 - ldr r1, [r2] - movs r0, 0xC0 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _0801F4C4 - b _0801F5DC -_0801F4C4: - movs r0, 0x80 - lsls r0, 5 - orrs r1, r0 - str r1, [r2] - ldr r1, _0801F4F8 @ =gLockedMove - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, _0801F4FC @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - bl Random - mov r2, r8 - ldrb r1, [r2] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x1 - ands r1, r0 - adds r1, 0x2 - lsls r1, 10 - ldr r0, [r2] -_0801F4F2: - orrs r0, r1 - str r0, [r2] - b _0801F5FA - .align 2, 0 -_0801F4F8: .4byte gLockedMove -_0801F4FC: .4byte gCurrentMove -_0801F500: - mov r5, r8 - ldrb r3, [r5] - movs r4, 0x58 - adds r0, r3, 0 - muls r0, r4 - mov r2, r9 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x3C - bne _0801F540 - ldrh r0, [r1, 0x2E] - cmp r0, 0 - beq _0801F5DC - ldr r0, _0801F534 @ =gLastUsedAbility - strb r2, [r0] - ldr r1, _0801F538 @ =gBattlescriptCurrInstr - ldr r0, _0801F53C @ =BattleScript_NoItemSteal - str r0, [r1] - ldrb r0, [r5] - movs r1, 0x3C - bl RecordAbilityBattle - b _0801F5FA - .align 2, 0 -_0801F534: .4byte gLastUsedAbility -_0801F538: .4byte gBattlescriptCurrInstr -_0801F53C: .4byte BattleScript_NoItemSteal -_0801F540: - ldrh r0, [r1, 0x2E] - cmp r0, 0 - beq _0801F5DC - adds r0, r3, 0 - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0801F5B8 @ =gLastUsedItem - mov r3, r8 - ldrb r0, [r3] - muls r0, r4 - add r0, r9 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - ldrb r0, [r3] - muls r0, r4 - add r0, r9 - movs r5, 0 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r2, _0801F5BC @ =gWishFutureKnock - adds r2, 0x29 - adds r2, r6, r2 - ldr r3, _0801F5C0 @ =gBitTable - ldr r1, _0801F5C4 @ =gBattlePartyID - mov r4, r8 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F5CC @ =BattleScript_KnockedOff - str r0, [r4] - ldr r1, _0801F5D0 @ =0x02000000 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - ldr r3, _0801F5D4 @ =0x000160e8 - adds r0, r3 - adds r0, r1 - strb r5, [r0] - ldrb r0, [r2] - lsls r0, 1 - ldr r4, _0801F5D8 @ =0x000160e9 - adds r0, r4 - adds r0, r1 - strb r5, [r0] - b _0801F5FA - .align 2, 0 -_0801F5B8: .4byte gLastUsedItem -_0801F5BC: .4byte gWishFutureKnock -_0801F5C0: .4byte gBitTable -_0801F5C4: .4byte gBattlePartyID -_0801F5C8: .4byte gBattlescriptCurrInstr -_0801F5CC: .4byte BattleScript_KnockedOff -_0801F5D0: .4byte 0x02000000 -_0801F5D4: .4byte 0x000160e8 -_0801F5D8: .4byte 0x000160e9 -_0801F5DC: - ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _0801F5FA - .align 2, 0 -_0801F5E8: .4byte gBattlescriptCurrInstr -_0801F5EC: - ldr r4, _0801F60C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _0801F610 @ =gUnknown_081D94B0 -_0801F5F8: - str r0, [r4] -_0801F5FA: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801F60C: .4byte gBattlescriptCurrInstr -_0801F610: .4byte gUnknown_081D94B0 - thumb_func_end sub_801E3EC - - thumb_func_start atk15_seteffectwithchancetarget -atk15_seteffectwithchancetarget: @ 801F614 - push {r4,lr} - ldr r2, _0801F640 @ =gBattleMons - ldr r0, _0801F644 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x20 - bne _0801F650 - ldr r2, _0801F648 @ =gBattleMoves - ldr r0, _0801F64C @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x5] - lsls r4, r0, 1 - b _0801F660 - .align 2, 0 -_0801F640: .4byte gBattleMons -_0801F644: .4byte gBankAttacker -_0801F648: .4byte gBattleMoves -_0801F64C: .4byte gCurrentMove -_0801F650: - ldr r2, _0801F680 @ =gBattleMoves - ldr r0, _0801F684 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r4, [r0, 0x5] -_0801F660: - ldr r3, _0801F688 @ =gBattleCommunication - ldrb r2, [r3, 0x3] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _0801F690 - ldr r0, _0801F68C @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801F690 - movs r0, 0x7F - ands r0, r2 - strb r0, [r3, 0x3] - b _0801F6BE - .align 2, 0 -_0801F680: .4byte gBattleMoves -_0801F684: .4byte gCurrentMove -_0801F688: .4byte gBattleCommunication -_0801F68C: .4byte gBattleMoveFlags -_0801F690: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bhi _0801F6DA - ldr r0, _0801F6C8 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - cmp r0, 0 - beq _0801F6DA - ldr r0, _0801F6CC @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801F6DA - cmp r4, 0x63 - bls _0801F6D0 -_0801F6BE: - movs r0, 0 - movs r1, 0x80 - bl sub_801E3EC - b _0801F6E2 - .align 2, 0 -_0801F6C8: .4byte gBattleCommunication -_0801F6CC: .4byte gBattleMoveFlags -_0801F6D0: - movs r0, 0 - movs r1, 0 - bl sub_801E3EC - b _0801F6E2 -_0801F6DA: - ldr r1, _0801F6F8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801F6E2: - ldr r0, _0801F6FC @ =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x3] - ldr r0, _0801F700 @ =0x02000000 - ldr r2, _0801F704 @ =0x00016112 - adds r0, r2 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801F6F8: .4byte gBattlescriptCurrInstr -_0801F6FC: .4byte gBattleCommunication -_0801F700: .4byte 0x02000000 -_0801F704: .4byte 0x00016112 - thumb_func_end atk15_seteffectwithchancetarget - - thumb_func_start atk16_seteffectprimary -atk16_seteffectprimary: @ 801F708 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl sub_801E3EC - pop {r0} - bx r0 - thumb_func_end atk16_seteffectprimary - - thumb_func_start atk17_seteffectsecondary -atk17_seteffectsecondary: @ 801F718 - push {lr} - movs r0, 0 - movs r1, 0 - bl sub_801E3EC - pop {r0} - bx r0 - thumb_func_end atk17_seteffectsecondary - - thumb_func_start atk18_status_effect_clear -atk18_status_effect_clear: @ 801F728 - push {lr} - ldr r0, _0801F74C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r2, _0801F750 @ =gActiveBank - strb r0, [r2] - ldr r3, _0801F754 @ =gBattleCommunication - ldrb r0, [r3, 0x3] - cmp r0, 0x6 - bhi _0801F75C - ldr r1, _0801F758 @ =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x4C - b _0801F766 - .align 2, 0 -_0801F74C: .4byte gBattlescriptCurrInstr -_0801F750: .4byte gActiveBank -_0801F754: .4byte gBattleCommunication -_0801F758: .4byte gBattleMons -_0801F75C: - ldr r1, _0801F794 @ =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 -_0801F766: - adds r2, r1 - ldr r1, _0801F798 @ =gStatusFlagsForMoveEffects - ldrb r0, [r3, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - ldr r0, _0801F79C @ =gBattleCommunication - movs r2, 0 - strb r2, [r0, 0x3] - ldr r1, _0801F7A0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - ldr r0, _0801F7A4 @ =0x02000000 - ldr r1, _0801F7A8 @ =0x00016112 - adds r0, r1 - strb r2, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0801F794: .4byte gBattleMons -_0801F798: .4byte gStatusFlagsForMoveEffects -_0801F79C: .4byte gBattleCommunication -_0801F7A0: .4byte gBattlescriptCurrInstr -_0801F7A4: .4byte 0x02000000 -_0801F7A8: .4byte 0x00016112 - thumb_func_end atk18_status_effect_clear - - thumb_func_start atk19_faint_pokemon -atk19_faint_pokemon: @ 801F7AC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0801F81C @ =gBattlescriptCurrInstr - ldr r2, [r0] - ldrb r1, [r2, 0x2] - adds r6, r0, 0 - cmp r1, 0 - beq _0801F834 - ldrb r0, [r2, 0x1] - bl sub_8015150 - ldr r5, _0801F820 @ =gActiveBank - strb r0, [r5] - ldr r2, _0801F824 @ =gHitMarker - ldr r1, _0801F828 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - ands r0, r1 - cmp r0, 0 - bne _0801F7E6 - b _0801FB1C -_0801F7E6: - ldr r1, [r6] - ldrb r4, [r1, 0x3] - ldrb r0, [r1, 0x4] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x5] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x6] - lsls r0, 24 - orrs r4, r0 - bl b_movescr_stack_pop_cursor - str r4, [r6] - ldrb r0, [r5] - bl GetBankSide - ldr r1, _0801F82C @ =gSideAffecting - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r2, [r0] - ldr r1, _0801F830 @ =0x0000fdff - ands r1, r2 - strh r1, [r0] - b _0801FB22 - .align 2, 0 -_0801F81C: .4byte gBattlescriptCurrInstr -_0801F820: .4byte gActiveBank -_0801F824: .4byte gHitMarker -_0801F828: .4byte gBitTable -_0801F82C: .4byte gSideAffecting -_0801F830: .4byte 0x0000fdff -_0801F834: - ldrb r0, [r2, 0x1] - cmp r0, 0x1 - bne _0801F85C - ldr r1, _0801F84C @ =gActiveBank - ldr r0, _0801F850 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _0801F854 @ =gBankTarget - ldrb r7, [r0] - ldr r4, _0801F858 @ =gUnknown_081D8C58 - b _0801F86A - .align 2, 0 -_0801F84C: .4byte gActiveBank -_0801F850: .4byte gBankAttacker -_0801F854: .4byte gBankTarget -_0801F858: .4byte gUnknown_081D8C58 -_0801F85C: - ldr r1, _0801F954 @ =gActiveBank - ldr r0, _0801F958 @ =gBankTarget - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _0801F95C @ =gBankAttacker - ldrb r7, [r0] - ldr r4, _0801F960 @ =gUnknown_081D8C65 -_0801F86A: - ldr r0, _0801F964 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r0, _0801F968 @ =gBitTable - mov r12, r0 - ldr r2, _0801F954 @ =gActiveBank - mov r8, r2 - ldrb r2, [r2] - lsls r0, r2, 2 - add r0, r12 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801F886 - b _0801FB1C -_0801F886: - ldr r3, _0801F96C @ =gBattleMons - mov r10, r3 - movs r5, 0x58 - mov r9, r5 - mov r0, r9 - muls r0, r2 - add r0, r10 - ldrh r3, [r0, 0x28] - cmp r3, 0 - beq _0801F89C - b _0801FB1C -_0801F89C: - ldr r2, _0801F970 @ =0x02000000 - lsls r1, r7, 1 - ldr r5, _0801F974 @ =0x000160ac - adds r0, r1, r5 - adds r0, r2 - strb r3, [r0] - ldr r0, _0801F978 @ =0x000160ad - adds r1, r0 - adds r1, r2 - strb r3, [r1] - lsls r1, r7, 2 - adds r5, 0x54 - adds r0, r1, r5 - adds r0, r2 - strb r3, [r0] - adds r5, 0x1 - adds r0, r1, r5 - adds r0, r2 - strb r3, [r0] - adds r5, 0x1 - adds r0, r1, r5 - adds r0, r2 - strb r3, [r0] - ldr r0, _0801F97C @ =0x00016103 - adds r1, r0 - adds r1, r2 - strb r3, [r1] - ldr r5, _0801F980 @ =gHitMarker - mov r1, r8 - ldrb r0, [r1] - lsls r0, 2 - add r0, r12 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r5] - orrs r0, r1 - str r0, [r5] - ldr r0, [r6] - adds r0, 0x7 - bl b_movescr_stack_push - str r4, [r6] - mov r2, r8 - ldrb r0, [r2] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0801F9B0 - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 15 - orrs r0, r1 - str r0, [r5] - ldr r1, _0801F984 @ =gBattleResults - ldrb r0, [r1] - cmp r0, 0xFE - bhi _0801F914 - adds r0, 0x1 - strb r0, [r1] -_0801F914: - mov r0, r9 - muls r0, r7 - add r0, r10 - adds r3, r0, 0 - adds r3, 0x2A - mov r4, r8 - ldrb r2, [r4] - mov r0, r9 - muls r0, r2 - add r0, r10 - adds r1, r0, 0 - adds r1, 0x2A - ldrb r0, [r3] - ldrb r5, [r1] - cmp r0, r5 - bls _0801F9CC - ldrb r1, [r1] - subs r0, r1 - cmp r0, 0x1D - ble _0801F990 - ldr r1, _0801F988 @ =gBattlePartyID - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0801F98C @ =gPlayerParty - adds r0, r1 - movs r1, 0x8 - bl AdjustFriendship - b _0801F9CC - .align 2, 0 -_0801F954: .4byte gActiveBank -_0801F958: .4byte gBankTarget -_0801F95C: .4byte gBankAttacker -_0801F960: .4byte gUnknown_081D8C65 -_0801F964: .4byte gAbsentBankFlags -_0801F968: .4byte gBitTable -_0801F96C: .4byte gBattleMons -_0801F970: .4byte 0x02000000 -_0801F974: .4byte 0x000160ac -_0801F978: .4byte 0x000160ad -_0801F97C: .4byte 0x00016103 -_0801F980: .4byte gHitMarker -_0801F984: .4byte gBattleResults -_0801F988: .4byte gBattlePartyID -_0801F98C: .4byte gPlayerParty -_0801F990: - ldr r1, _0801F9A8 @ =gBattlePartyID - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0801F9AC @ =gPlayerParty - adds r0, r1 - movs r1, 0x6 - bl AdjustFriendship - b _0801F9CC - .align 2, 0 -_0801F9A8: .4byte gBattlePartyID -_0801F9AC: .4byte gPlayerParty -_0801F9B0: - ldr r1, _0801FAE0 @ =gBattleResults - ldrb r0, [r1, 0x1] - cmp r0, 0xFE - bhi _0801F9BC - adds r0, 0x1 - strb r0, [r1, 0x1] -_0801F9BC: - ldr r2, _0801FAE4 @ =gActiveBank - ldrb r0, [r2] - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - add r0, r10 - ldrh r0, [r0] - strh r0, [r1, 0x20] -_0801F9CC: - ldr r0, _0801FAE8 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801FA02 - ldr r6, _0801FAEC @ =gBattleMons - ldr r0, _0801FAF0 @ =gBankAttacker - ldrb r0, [r0] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801FA02 - ldr r4, _0801FAF4 @ =gBattlescriptCurrInstr - ldr r0, [r4] - bl b_movescr_stack_push - ldr r1, _0801FAF8 @ =gBattleMoveDamage - adds r0, r7, 0 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x28] - str r0, [r1] - ldr r0, _0801FAFC @ =gUnknown_081D9156 - str r0, [r4] -_0801FA02: - ldr r1, _0801FB00 @ =gStatuses3 - ldr r6, _0801FB04 @ =gBankTarget - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 7 - ands r0, r1 - cmp r0, 0 - bne _0801FA1A - b _0801FB22 -_0801FA1A: - ldr r0, _0801FAE8 @ =gHitMarker - ldr r5, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r5, r0 - cmp r5, 0 - bne _0801FB22 - ldr r4, _0801FAF0 @ =gBankAttacker - mov r8, r4 - ldrb r0, [r4] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r6] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0801FB22 - ldr r0, _0801FAEC @ =gBattleMons - mov r9, r0 - mov r1, r8 - ldrb r2, [r1] - movs r7, 0x58 - adds r3, r2, 0 - muls r3, r7 - adds r0, r3, r0 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801FB22 - ldr r0, _0801FB08 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xA5 - beq _0801FB22 - ldr r1, _0801FB0C @ =0x02000000 - ldr r4, _0801FB10 @ =0x0001608c - adds r0, r2, r4 - adds r0, r1 - ldrb r4, [r0] - adds r0, r4, r3 - mov r6, r9 - adds r6, 0x24 - adds r0, r6 - strb r5, [r0] - ldr r5, _0801FAF4 @ =gBattlescriptCurrInstr - ldr r0, [r5] - bl b_movescr_stack_push - ldr r0, _0801FB14 @ =gUnknown_081D9468 - str r0, [r5] - ldr r5, _0801FAE4 @ =gActiveBank - mov r1, r8 - ldrb r0, [r1] - strb r0, [r5] - adds r1, r4, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r5] - muls r0, r7 - adds r0, r6 - adds r0, r4 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetAttributes - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, _0801FB18 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - lsls r4, 1 - mov r2, r8 - ldrb r0, [r2] - muls r0, r7 - adds r0, r4, r0 - mov r2, r9 - adds r2, 0xC - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - mov r3, r8 - ldrb r0, [r3] - muls r0, r7 - adds r4, r0 - adds r4, r2 - ldrh r0, [r4] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - b _0801FB22 - .align 2, 0 -_0801FAE0: .4byte gBattleResults -_0801FAE4: .4byte gActiveBank -_0801FAE8: .4byte gHitMarker -_0801FAEC: .4byte gBattleMons -_0801FAF0: .4byte gBankAttacker -_0801FAF4: .4byte gBattlescriptCurrInstr -_0801FAF8: .4byte gBattleMoveDamage -_0801FAFC: .4byte gUnknown_081D9156 -_0801FB00: .4byte gStatuses3 -_0801FB04: .4byte gBankTarget -_0801FB08: .4byte gCurrentMove -_0801FB0C: .4byte 0x02000000 -_0801FB10: .4byte 0x0001608c -_0801FB14: .4byte gUnknown_081D9468 -_0801FB18: .4byte gBattleTextBuff1 -_0801FB1C: - ldr r0, [r6] - adds r0, 0x7 - str r0, [r6] -_0801FB22: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk19_faint_pokemon - - thumb_func_start atk1A_faint_animation -atk1A_faint_animation: @ 801FB34 - push {r4,r5,lr} - ldr r0, _0801FB64 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0801FB5E - ldr r5, _0801FB68 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _0801FB6C @ =gActiveBank - strb r0, [r4] - movs r0, 0 - bl EmitFaintAnimation - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_0801FB5E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801FB64: .4byte gBattleExecBuffer -_0801FB68: .4byte gBattlescriptCurrInstr -_0801FB6C: .4byte gActiveBank - thumb_func_end atk1A_faint_animation - - thumb_func_start atk1B_faint_effects_clear -atk1B_faint_effects_clear: @ 801FB70 - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _0801FBC4 @ =gBattleExecBuffer - ldr r6, [r0] - cmp r6, 0 - bne _0801FBBC - ldr r5, _0801FBC8 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _0801FBCC @ =gActiveBank - strb r0, [r4] - ldr r1, _0801FBD0 @ =gBattleMons - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - str r6, [r0] - ldrb r0, [r4] - muls r0, r2 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - bl UndoEffectsAfterFainting - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_0801FBBC: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801FBC4: .4byte gBattleExecBuffer -_0801FBC8: .4byte gBattlescriptCurrInstr -_0801FBCC: .4byte gActiveBank -_0801FBD0: .4byte gBattleMons - thumb_func_end atk1B_faint_effects_clear - - thumb_func_start atk1C_jumpifstatus -atk1C_jumpifstatus: @ 801FBD4 - push {r4,r5,lr} - ldr r5, _0801FC30 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r5] - ldrb r4, [r2, 0x2] - ldrb r1, [r2, 0x3] - lsls r1, 8 - adds r4, r1 - ldrb r1, [r2, 0x4] - lsls r1, 16 - adds r4, r1 - ldrb r1, [r2, 0x5] - lsls r1, 24 - adds r4, r1 - ldrb r3, [r2, 0x6] - ldrb r1, [r2, 0x7] - lsls r1, 8 - adds r3, r1 - ldrb r1, [r2, 0x8] - lsls r1, 16 - adds r3, r1 - ldrb r1, [r2, 0x9] - lsls r1, 24 - adds r3, r1 - ldr r2, _0801FC34 @ =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _0801FC38 - adds r0, r1, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801FC38 - str r3, [r5] - b _0801FC40 - .align 2, 0 -_0801FC30: .4byte gBattlescriptCurrInstr -_0801FC34: .4byte gBattleMons -_0801FC38: - ldr r1, _0801FC48 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] -_0801FC40: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801FC48: .4byte gBattlescriptCurrInstr - thumb_func_end atk1C_jumpifstatus - - thumb_func_start atk1D_jumpifstatus2 -atk1D_jumpifstatus2: @ 801FC4C - push {r4,r5,lr} - ldr r5, _0801FCA8 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r5] - ldrb r4, [r2, 0x2] - ldrb r1, [r2, 0x3] - lsls r1, 8 - adds r4, r1 - ldrb r1, [r2, 0x4] - lsls r1, 16 - adds r4, r1 - ldrb r1, [r2, 0x5] - lsls r1, 24 - adds r4, r1 - ldrb r3, [r2, 0x6] - ldrb r1, [r2, 0x7] - lsls r1, 8 - adds r3, r1 - ldrb r1, [r2, 0x8] - lsls r1, 16 - adds r3, r1 - ldrb r1, [r2, 0x9] - lsls r1, 24 - adds r3, r1 - ldr r2, _0801FCAC @ =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r1, r0 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _0801FCB0 - adds r0, r1, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801FCB0 - str r3, [r5] - b _0801FCB8 - .align 2, 0 -_0801FCA8: .4byte gBattlescriptCurrInstr -_0801FCAC: .4byte gBattleMons -_0801FCB0: - ldr r1, _0801FCC0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] -_0801FCB8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801FCC0: .4byte gBattlescriptCurrInstr - thumb_func_end atk1D_jumpifstatus2 - - thumb_func_start atk1E_jumpifability -atk1E_jumpifability: @ 801FCC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r6, _0801FD18 @ =gBattlescriptCurrInstr - ldr r2, [r6] - ldrb r5, [r2, 0x2] - mov r8, r5 - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x4] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x6] - lsls r0, 24 - adds r7, r1, r0 - ldrb r0, [r2, 0x1] - cmp r0, 0x8 - bne _0801FD24 - ldr r0, _0801FD1C @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xD - adds r2, r5, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0801FDA0 - ldr r1, _0801FD20 @ =gLastUsedAbility - strb r5, [r1] - str r7, [r6] - subs r4, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - ldrb r1, [r1] - b _0801FD80 - .align 2, 0 -_0801FD18: .4byte gBattlescriptCurrInstr -_0801FD1C: .4byte gBankAttacker -_0801FD20: .4byte gLastUsedAbility -_0801FD24: - cmp r0, 0x9 - bne _0801FD5C - ldr r0, _0801FD54 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xC - adds r2, r5, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0801FDA0 - ldr r1, _0801FD58 @ =gLastUsedAbility - strb r5, [r1] - str r7, [r6] - subs r4, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - ldrb r1, [r1] - b _0801FD80 - .align 2, 0 -_0801FD54: .4byte gBankAttacker -_0801FD58: .4byte gLastUsedAbility -_0801FD5C: - ldrb r0, [r2, 0x1] - bl sub_8015150 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0801FD90 @ =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, r8 - bne _0801FDA0 - ldr r0, _0801FD94 @ =gLastUsedAbility - strb r1, [r0] - str r7, [r6] - ldrb r1, [r0] - adds r0, r4, 0 -_0801FD80: - bl RecordAbilityBattle - ldr r0, _0801FD98 @ =0x02000000 - ldr r1, _0801FD9C @ =0x000160f8 - adds r0, r1 - strb r4, [r0] - b _0801FDA6 - .align 2, 0 -_0801FD90: .4byte gBattleMons -_0801FD94: .4byte gLastUsedAbility -_0801FD98: .4byte 0x02000000 -_0801FD9C: .4byte 0x000160f8 -_0801FDA0: - ldr r0, [r6] - adds r0, 0x7 - str r0, [r6] -_0801FDA6: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk1E_jumpifability - - thumb_func_start atk1F_jumpifsideaffecting -atk1F_jumpifsideaffecting: @ 801FDB4 - push {r4-r6,lr} - ldr r0, _0801FDCC @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r4, [r0, 0x1] - cmp r4, 0x1 - bne _0801FDD4 - ldr r0, _0801FDD0 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankIdentity - b _0801FDDE - .align 2, 0 -_0801FDCC: .4byte gBattlescriptCurrInstr -_0801FDD0: .4byte gBankAttacker -_0801FDD4: - ldr r0, _0801FE14 @ =gBankTarget - ldrb r0, [r0] - bl GetBankIdentity - movs r4, 0x1 -_0801FDDE: - ands r4, r0 - ldr r6, _0801FE18 @ =gBattlescriptCurrInstr - ldr r3, [r6] - ldrb r2, [r3, 0x2] - ldrb r0, [r3, 0x3] - lsls r0, 8 - orrs r2, r0 - ldrb r1, [r3, 0x4] - ldrb r0, [r3, 0x5] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x6] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x7] - lsls r0, 24 - adds r5, r1, r0 - ldr r1, _0801FE1C @ =gSideAffecting - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _0801FE20 - str r5, [r6] - b _0801FE26 - .align 2, 0 -_0801FE14: .4byte gBankTarget -_0801FE18: .4byte gBattlescriptCurrInstr -_0801FE1C: .4byte gSideAffecting -_0801FE20: - adds r0, r3, 0 - adds r0, 0x8 - str r0, [r6] -_0801FE26: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk1F_jumpifsideaffecting - - thumb_func_start atk20_jumpifstat -atk20_jumpifstat: @ 801FE2C - push {r4,r5,lr} - movs r5, 0 - ldr r4, _0801FE60 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0801FE64 @ =gBattleMons - ldr r3, [r4] - movs r1, 0x58 - muls r0, r1 - ldrb r1, [r3, 0x3] - adds r0, r1 - adds r2, 0x18 - adds r0, r2 - ldrb r2, [r0] - ldrb r0, [r3, 0x2] - cmp r0, 0x5 - bhi _0801FEEA - lsls r0, 2 - ldr r1, _0801FE68 @ =_0801FE6C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801FE60: .4byte gBattlescriptCurrInstr -_0801FE64: .4byte gBattleMons -_0801FE68: .4byte _0801FE6C - .align 2, 0 -_0801FE6C: - .4byte _0801FE84 - .4byte _0801FE94 - .4byte _0801FEA4 - .4byte _0801FEB4 - .4byte _0801FEC4 - .4byte _0801FED8 -_0801FE84: - ldr r0, _0801FE90 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bne _0801FEEA - b _0801FEE4 - .align 2, 0 -_0801FE90: .4byte gBattlescriptCurrInstr -_0801FE94: - ldr r0, _0801FEA0 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - beq _0801FEEA - b _0801FEE4 - .align 2, 0 -_0801FEA0: .4byte gBattlescriptCurrInstr -_0801FEA4: - ldr r0, _0801FEB0 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bls _0801FEEA - b _0801FEE4 - .align 2, 0 -_0801FEB0: .4byte gBattlescriptCurrInstr -_0801FEB4: - ldr r0, _0801FEC0 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bcs _0801FEEA - b _0801FEE4 - .align 2, 0 -_0801FEC0: .4byte gBattlescriptCurrInstr -_0801FEC4: - ldr r0, _0801FED4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - ands r2, r0 - cmp r2, 0 - beq _0801FEEA - b _0801FEE4 - .align 2, 0 -_0801FED4: .4byte gBattlescriptCurrInstr -_0801FED8: - ldr r0, _0801FF0C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - ands r2, r0 - cmp r2, 0 - bne _0801FEEA -_0801FEE4: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_0801FEEA: - cmp r5, 0 - beq _0801FF10 - ldr r3, _0801FF0C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - b _0801FF18 - .align 2, 0 -_0801FF0C: .4byte gBattlescriptCurrInstr -_0801FF10: - ldr r1, _0801FF20 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x9 - str r0, [r1] -_0801FF18: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801FF20: .4byte gBattlescriptCurrInstr - thumb_func_end atk20_jumpifstat - - thumb_func_start atk21_jumpifstatus3 -atk21_jumpifstatus3: @ 801FF24 - push {r4-r6,lr} - ldr r4, _0801FF78 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r5, _0801FF7C @ =gActiveBank - strb r0, [r5] - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - adds r6, r1, r0 - ldrb r1, [r2, 0x7] - ldrb r0, [r2, 0x8] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x9] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0xA] - lsls r0, 24 - adds r3, r1, r0 - ldrb r0, [r2, 0x6] - cmp r0, 0 - beq _0801FF84 - ldr r0, _0801FF80 @ =gStatuses3 - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - ands r0, r6 - cmp r0, 0 - bne _0801FF9C - b _0801FF94 - .align 2, 0 -_0801FF78: .4byte gBattlescriptCurrInstr -_0801FF7C: .4byte gActiveBank -_0801FF80: .4byte gStatuses3 -_0801FF84: - ldr r0, _0801FF98 @ =gStatuses3 - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - ands r0, r6 - cmp r0, 0 - beq _0801FF9C -_0801FF94: - str r3, [r4] - b _0801FFA2 - .align 2, 0 -_0801FF98: .4byte gStatuses3 -_0801FF9C: - adds r0, r2, 0 - adds r0, 0xB - str r0, [r4] -_0801FFA2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk21_jumpifstatus3 - - thumb_func_start atk22_jumpiftype -atk22_jumpiftype: @ 801FFA8 - push {r4-r6,lr} - ldr r4, _0801FFF0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - lsls r0, 24 - lsrs r0, 24 - ldr r3, [r4] - ldrb r5, [r3, 0x2] - ldrb r2, [r3, 0x3] - ldrb r1, [r3, 0x4] - lsls r1, 8 - adds r2, r1 - ldrb r1, [r3, 0x5] - lsls r1, 16 - adds r2, r1 - ldrb r1, [r3, 0x6] - lsls r1, 24 - adds r6, r2, r1 - ldr r2, _0801FFF4 @ =gBattleMons - movs r1, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r5 - beq _0801FFEC - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r5 - bne _0801FFF8 -_0801FFEC: - str r6, [r4] - b _0801FFFC - .align 2, 0 -_0801FFF0: .4byte gBattlescriptCurrInstr -_0801FFF4: .4byte gBattleMons -_0801FFF8: - adds r0, r3, 0x7 - str r0, [r4] -_0801FFFC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk22_jumpiftype - - thumb_func_start atk23_getexp -atk23_getexp: @ 8020004 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - ldr r0, _0802004C @ =0x0201605c - mov r10, r0 - ldr r0, _08020050 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r1, _08020054 @ =gBank1 - strb r0, [r1] - ldr r2, _08020058 @ =gSentPokesToOpponent - movs r1, 0x2 - ands r1, r0 - lsls r1, 24 - lsrs r1, 25 - adds r1, r2 - ldrb r1, [r1] - mov r8, r1 - mov r0, r10 - subs r0, 0x4D - ldrb r0, [r0] - cmp r0, 0x6 - bls _08020040 - bl _08020996 -_08020040: - lsls r0, 2 - ldr r1, _0802005C @ =_08020060 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802004C: .4byte 0x0201605c -_08020050: .4byte gBattlescriptCurrInstr -_08020054: .4byte gBank1 -_08020058: .4byte gSentPokesToOpponent -_0802005C: .4byte _08020060 - .align 2, 0 -_08020060: - .4byte _0802007C - .4byte _080200FC - .4byte _08020216 - .4byte _0802055C - .4byte _08020648 - .4byte _08020910 - .4byte _0802096C -_0802007C: - ldr r4, _080200A8 @ =gBank1 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08020098 - ldr r0, _080200AC @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _080200B0 @ =0x00000982 - ands r0, r1 - cmp r0, 0 - beq _080200BC -_08020098: - ldr r0, _080200B4 @ =0x02000000 - ldr r1, _080200B8 @ =0x0001600f - adds r0, r1 - movs r1, 0x6 - strb r1, [r0] - bl _08020996 - .align 2, 0 -_080200A8: .4byte gBank1 -_080200AC: .4byte gBattleTypeFlags -_080200B0: .4byte 0x00000982 -_080200B4: .4byte 0x02000000 -_080200B8: .4byte 0x0001600f -_080200BC: - ldr r2, _080200E8 @ =0x02000000 - ldr r3, _080200EC @ =0x0001600f - adds r1, r2, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _080200F0 @ =0x00016113 - adds r2, r0 - ldr r3, _080200F4 @ =gBitTable - ldr r1, _080200F8 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - bl _08020996 - .align 2, 0 -_080200E8: .4byte 0x02000000 -_080200EC: .4byte 0x0001600f -_080200F0: .4byte 0x00016113 -_080200F4: .4byte gBitTable -_080200F8: .4byte gBattlePartyID -_080200FC: - movs r5, 0 - movs r7, 0 - ldr r1, _08020150 @ =gSaveBlock1 + 0x3688 - mov r9, r1 -_08020104: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08020154 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0802016A - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0802016A - ldr r0, _08020158 @ =gBitTable - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - mov r2, r8 - ands r0, r2 - cmp r0, 0 - beq _08020138 - adds r5, 0x1 -_08020138: - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0802015C - mov r3, r9 - ldrb r4, [r3] - b _08020164 - .align 2, 0 -_08020150: .4byte gSaveBlock1 + 0x3688 -_08020154: .4byte gPlayerParty -_08020158: .4byte gBitTable -_0802015C: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 -_08020164: - cmp r4, 0x19 - bne _0802016A - adds r6, 0x1 -_0802016A: - adds r7, 0x1 - cmp r7, 0x5 - ble _08020104 - ldr r3, _080201D0 @ =gBaseStats - ldr r2, _080201D4 @ =gBattleMons - ldr r0, _080201D8 @ =gBank1 - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x9] - adds r1, 0x2A - ldrb r0, [r1] - muls r0, r2 - movs r1, 0x7 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r6, 0 - beq _080201E0 - lsrs r4, r0, 17 - adds r0, r4, 0 - adds r1, r5, 0 - bl __divsi3 - mov r1, r10 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _080201B6 - movs r0, 0x1 - strh r0, [r1] -_080201B6: - ldr r5, _080201DC @ =gExpShareExp - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - strh r0, [r5] - lsls r0, 16 - cmp r0, 0 - bne _080201FA - movs r0, 0x1 - strh r0, [r5] - b _080201FA - .align 2, 0 -_080201D0: .4byte gBaseStats -_080201D4: .4byte gBattleMons -_080201D8: .4byte gBank1 -_080201DC: .4byte gExpShareExp -_080201E0: - adds r0, r1, 0 - adds r1, r5, 0 - bl __divsi3 - mov r2, r10 - strh r0, [r2] - lsls r0, 16 - cmp r0, 0 - bne _080201F6 - movs r0, 0x1 - strh r0, [r2] -_080201F6: - ldr r0, _08020248 @ =gExpShareExp - strh r6, [r0] -_080201FA: - ldr r1, _0802024C @ =0x02000000 - ldr r3, _08020250 @ =0x0001600f - adds r2, r1, r3 - ldrb r0, [r2] - adds r0, 0x1 - movs r3, 0 - strb r0, [r2] - ldr r2, _08020254 @ =0x00016018 - adds r0, r1, r2 - strb r3, [r0] - ldr r3, _08020258 @ =0x0001605f - adds r1, r3 - mov r0, r8 - strb r0, [r1] -_08020216: - ldr r0, _0802025C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _08020220 - b _08020996 -_08020220: - ldr r0, _0802024C @ =0x02000000 - ldr r1, _08020254 @ =0x00016018 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08020260 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0802026C - ldr r0, _08020264 @ =gSaveBlock1 - ldr r2, _08020268 @ =0x00003688 - adds r0, r2 - ldrb r4, [r0] - b _08020274 - .align 2, 0 -_08020248: .4byte gExpShareExp -_0802024C: .4byte 0x02000000 -_08020250: .4byte 0x0001600f -_08020254: .4byte 0x00016018 -_08020258: .4byte 0x0001605f -_0802025C: .4byte gBattleExecBuffer -_08020260: .4byte gPlayerParty -_08020264: .4byte gSaveBlock1 -_08020268: .4byte 0x00003688 -_0802026C: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 -_08020274: - ldr r5, _08020294 @ =0x02000000 - cmp r4, 0x19 - beq _080202A0 - ldr r3, _08020298 @ =0x0001605f - adds r1, r5, r3 - ldrb r0, [r1] - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - bne _080202A0 - lsrs r0, 1 - strb r0, [r1] - ldr r0, _0802029C @ =0x0001600f - adds r1, r5, r0 - b _080202C8 - .align 2, 0 -_08020294: .4byte 0x02000000 -_08020298: .4byte 0x0001605f -_0802029C: .4byte 0x0001600f -_080202A0: - ldr r1, _080202D4 @ =0x00016018 - adds r0, r5, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080202D8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - bne _080202E8 - ldr r2, _080202DC @ =0x0001605f - adds r1, r5, r2 - ldrb r0, [r1] - lsrs r0, 1 - movs r2, 0 - strb r0, [r1] - ldr r3, _080202E0 @ =0x0001600f - adds r1, r5, r3 -_080202C8: - movs r0, 0x5 - strb r0, [r1] - ldr r0, _080202E4 @ =gBattleMoveDamage - str r2, [r0] - b _08020996 - .align 2, 0 -_080202D4: .4byte 0x00016018 -_080202D8: .4byte gPlayerParty -_080202DC: .4byte 0x0001605f -_080202E0: .4byte 0x0001600f -_080202E4: .4byte gBattleMoveDamage -_080202E8: - ldr r0, _0802034C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08020316 - ldr r0, _08020350 @ =gBattleMons - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08020316 - ldr r0, _08020354 @ =0x0001601b - adds r5, r0 - ldrb r0, [r5] - cmp r0, 0 - bne _08020316 - bl sub_80325B8 - ldr r0, _08020358 @ =0x00000161 - bl PlayBGM - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] -_08020316: - ldr r5, _0802035C @ =0x02000000 - ldr r1, _08020360 @ =0x00016018 - adds r0, r5, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08020364 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08020332 - b _0802051E -_08020332: - ldr r2, _08020368 @ =0x0001605f - adds r0, r5, r2 - ldrb r0, [r0] - movs r3, 0x1 - ands r3, r0 - cmp r3, 0 - beq _08020370 - ldr r1, _0802036C @ =gBattleMoveDamage - mov r3, r10 - ldrh r0, [r3] - str r0, [r1] - mov r8, r1 - b _08020376 - .align 2, 0 -_0802034C: .4byte gBattleTypeFlags -_08020350: .4byte gBattleMons -_08020354: .4byte 0x0001601b -_08020358: .4byte 0x00000161 -_0802035C: .4byte 0x02000000 -_08020360: .4byte 0x00016018 -_08020364: .4byte gPlayerParty -_08020368: .4byte 0x0001605f -_0802036C: .4byte gBattleMoveDamage -_08020370: - ldr r0, _080203EC @ =gBattleMoveDamage - str r3, [r0] - mov r8, r0 -_08020376: - cmp r4, 0x19 - bne _08020386 - ldr r0, _080203F0 @ =gExpShareExp - ldrh r1, [r0] - mov r2, r8 - ldr r0, [r2] - adds r0, r1 - str r0, [r2] -_08020386: - cmp r4, 0x28 - bne _0802039C - mov r3, r8 - ldr r1, [r3] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - mov r1, r8 - str r0, [r1] -_0802039C: - ldr r0, _080203F4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080203B8 - ldr r4, _080203EC @ =gBattleMoveDamage - ldr r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] -_080203B8: - ldr r0, _080203F8 @ =0x02000000 - ldr r2, _080203FC @ =0x00016018 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08020400 @ =gPlayerParty - adds r0, r1 - bl IsTradedMon - lsls r0, 24 - cmp r0, 0 - beq _08020404 - ldr r4, _080203EC @ =gBattleMoveDamage - ldr r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - movs r7, 0xA5 - lsls r7, 1 - mov r8, r4 - b _0802040A - .align 2, 0 -_080203EC: .4byte gBattleMoveDamage -_080203F0: .4byte gExpShareExp -_080203F4: .4byte gBattleTypeFlags -_080203F8: .4byte 0x02000000 -_080203FC: .4byte 0x00016018 -_08020400: .4byte gPlayerParty -_08020404: - ldr r7, _0802043C @ =0x00000149 - ldr r3, _08020440 @ =gBattleMoveDamage - mov r8, r3 -_0802040A: - ldr r0, _08020444 @ =gBattleTypeFlags - ldrh r0, [r0] - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08020488 - ldr r1, _08020448 @ =gBattlePartyID - ldr r0, _0802044C @ =0x02000000 - ldr r3, _08020450 @ =0x00016018 - adds r2, r0, r3 - ldrh r1, [r1, 0x4] - adds r5, r0, 0 - ldr r4, _08020454 @ =gBitTable - ldr r3, _08020458 @ =gAbsentBankFlags - ldrb r2, [r2] - cmp r1, r2 - bne _08020460 - ldrb r1, [r3] - ldr r0, [r4, 0x8] - ands r1, r0 - cmp r1, 0 - bne _08020460 - ldr r0, _0802045C @ =0x000160a2 - adds r1, r5, r0 - b _0802047C - .align 2, 0 -_0802043C: .4byte 0x00000149 -_08020440: .4byte gBattleMoveDamage -_08020444: .4byte gBattleTypeFlags -_08020448: .4byte gBattlePartyID -_0802044C: .4byte 0x02000000 -_08020450: .4byte 0x00016018 -_08020454: .4byte gBitTable -_08020458: .4byte gAbsentBankFlags -_0802045C: .4byte 0x000160a2 -_08020460: - ldrb r2, [r3] - ldr r0, [r4] - ands r2, r0 - cmp r2, 0 - bne _08020478 - ldr r1, _08020474 @ =0x000160a2 - adds r0, r5, r1 - strb r2, [r0] - b _08020490 - .align 2, 0 -_08020474: .4byte 0x000160a2 -_08020478: - ldr r2, _08020484 @ =0x000160a2 - adds r1, r5, r2 -_0802047C: - movs r0, 0x2 - strb r0, [r1] - b _08020490 - .align 2, 0 -_08020484: .4byte 0x000160a2 -_08020488: - ldr r0, _08020530 @ =0x02000000 - ldr r3, _08020534 @ =0x000160a2 - adds r0, r3 - strb r1, [r0] -_08020490: - ldr r1, _08020538 @ =gBattleTextBuff1 - movs r3, 0 - movs r2, 0xFD - strb r2, [r1] - movs r5, 0x4 - strb r5, [r1, 0x1] - ldr r4, _08020530 @ =0x02000000 - ldr r0, _08020534 @ =0x000160a2 - adds r6, r4, r0 - ldrb r0, [r6] - strb r0, [r1, 0x2] - ldr r0, _0802053C @ =0x00016018 - adds r4, r0 - ldrb r0, [r4] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08020540 @ =gBattleTextBuff2 - strb r2, [r1] - strb r3, [r1, 0x1] - strb r7, [r1, 0x2] - movs r3, 0xFF - lsls r3, 8 - ands r7, r3 - asrs r0, r7, 8 - strb r0, [r1, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x4] - ldr r1, _08020544 @ =gBattleTextBuff3 - strb r2, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - strb r5, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - mov r0, r8 - ldr r2, [r0] - strb r2, [r1, 0x4] - adds r0, r2, 0 - ands r0, r3 - asrs r0, 8 - strb r0, [r1, 0x5] - movs r0, 0xFF - lsls r0, 16 - ands r0, r2 - asrs r0, 16 - strb r0, [r1, 0x6] - lsrs r2, 24 - strb r2, [r1, 0x7] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x8] - ldrb r1, [r6] - movs r0, 0xD - bl PrepareStringBattle - ldrb r1, [r4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08020548 @ =gPlayerParty - adds r0, r1 - ldr r3, _0802054C @ =gBattleMons - ldr r1, _08020550 @ =gBank1 - ldrb r2, [r1] - movs r1, 0x58 - muls r1, r2 - adds r1, r3 - ldrh r1, [r1] - bl MonGainEVs -_0802051E: - ldr r1, _08020530 @ =0x02000000 - ldr r3, _08020554 @ =0x0001605f - adds r2, r1, r3 - ldrb r0, [r2] - lsrs r0, 1 - strb r0, [r2] - ldr r0, _08020558 @ =0x0001600f - adds r1, r0 - b _08020618 - .align 2, 0 -_08020530: .4byte 0x02000000 -_08020534: .4byte 0x000160a2 -_08020538: .4byte gBattleTextBuff1 -_0802053C: .4byte 0x00016018 -_08020540: .4byte gBattleTextBuff2 -_08020544: .4byte gBattleTextBuff3 -_08020548: .4byte gPlayerParty -_0802054C: .4byte gBattleMons -_08020550: .4byte gBank1 -_08020554: .4byte 0x0001605f -_08020558: .4byte 0x0001600f -_0802055C: - ldr r0, _08020620 @ =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - beq _08020566 - b _08020996 -_08020566: - ldr r1, _08020624 @ =gBattleBufferB - ldr r4, _08020628 @ =0x02000000 - ldr r3, _0802062C @ =0x000160a2 - adds r3, r4 - mov r8, r3 - ldrb r0, [r3] - lsls r0, 9 - adds r0, r1 - strb r2, [r0] - ldr r0, _08020630 @ =0x00016018 - adds r7, r4, r0 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08020634 @ =gPlayerParty - adds r0, r5 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08020612 - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - beq _08020612 - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - movs r1, 0x3A - bl GetMonData - ldr r1, _08020638 @ =0x00017180 - adds r4, r1 - strh r0, [r4] - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - movs r1, 0x3B - bl GetMonData - strh r0, [r4, 0x2] - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - movs r1, 0x3C - bl GetMonData - strh r0, [r4, 0x4] - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - movs r1, 0x3D - bl GetMonData - strh r0, [r4, 0x6] - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - movs r1, 0x3E - bl GetMonData - strh r0, [r4, 0x8] - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - movs r1, 0x3F - bl GetMonData - strh r0, [r4, 0xA] - ldr r4, _0802063C @ =gActiveBank - mov r2, r8 - ldrb r0, [r2] - strb r0, [r4] - ldrb r1, [r7] - ldr r0, _08020640 @ =gBattleMoveDamage - ldrh r2, [r0] - movs r0, 0 - bl EmitExpBarUpdate - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08020612: - ldr r1, _08020628 @ =0x02000000 - ldr r3, _08020644 @ =0x0001600f - adds r1, r3 -_08020618: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08020996 - .align 2, 0 -_08020620: .4byte gBattleExecBuffer -_08020624: .4byte gBattleBufferB -_08020628: .4byte 0x02000000 -_0802062C: .4byte 0x000160a2 -_08020630: .4byte 0x00016018 -_08020634: .4byte gPlayerParty -_08020638: .4byte 0x00017180 -_0802063C: .4byte gActiveBank -_08020640: .4byte gBattleMoveDamage -_08020644: .4byte 0x0001600f -_08020648: - ldr r0, _080208AC @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _08020652 - b _08020996 -_08020652: - ldr r1, _080208B0 @ =gActiveBank - ldr r4, _080208B4 @ =0x02000000 - ldr r2, _080208B8 @ =0x000160a2 - adds r0, r4, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r2, _080208BC @ =gBattleBufferB - ldrb r3, [r1] - lsls r1, r3, 9 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x21 - beq _0802066E - b _080208F0 -_0802066E: - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0xB - beq _0802067A - b _080208F0 -_0802067A: - ldr r0, _080208C0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080206A8 - ldr r1, _080208C4 @ =gBattlePartyID - lsls r0, r3, 1 - adds r2, r0, r1 - ldr r0, _080208C8 @ =0x00016018 - adds r1, r4, r0 - ldrh r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bne _080206A8 - adds r1, r0, 0 - movs r0, 0x64 - muls r0, r1 - ldr r1, _080208CC @ =gPlayerParty - adds r0, r1 - adds r1, r3, 0 - bl sub_80324F8 -_080206A8: - ldr r1, _080208D0 @ =gBattleTextBuff1 - movs r2, 0xFD - strb r2, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r5, _080208B0 @ =gActiveBank - ldrb r0, [r5] - strb r0, [r1, 0x2] - ldr r0, _080208B4 @ =0x02000000 - ldr r3, _080208C8 @ =0x00016018 - adds r6, r0, r3 - ldrb r0, [r6] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r4, _080208D4 @ =gBattleTextBuff2 - strb r2, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - movs r0, 0x3 - strb r0, [r4, 0x3] - ldrb r0, [r6] - movs r1, 0x64 - mov r8, r1 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldr r7, _080208CC @ =gPlayerParty - adds r0, r7 - movs r1, 0x38 - bl GetMonData - strb r0, [r4, 0x4] - movs r0, 0x1 - negs r0, r0 - strb r0, [r4, 0x5] - bl b_movescr_stack_push_cursor - ldr r2, _080208D8 @ =gLeveledUpInBattle - ldr r1, _080208DC @ =gBitTable - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r1, _080208E0 @ =gBattlescriptCurrInstr - ldr r0, _080208E4 @ =BattleScript_LevelUp - str r0, [r1] - ldr r4, _080208E8 @ =gBattleMoveDamage - ldr r2, _080208BC @ =gBattleBufferB - ldrb r1, [r5] - lsls r1, 9 - adds r0, r2, 0x2 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x3 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - str r3, [r4] - ldrb r0, [r6] - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7 - movs r1, 0 - bl AdjustFriendship - ldr r0, _080208C4 @ =gBattlePartyID - ldrb r1, [r6] - ldrh r0, [r0] - cmp r0, r1 - bne _080207EC - ldr r4, _080208EC @ =gBattleMons - ldrh r0, [r4, 0x28] - cmp r0, 0 - beq _080207EC - mov r0, r8 - muls r0, r1 - adds r0, r7 - movs r1, 0x38 - bl GetMonData - adds r1, r4, 0 - adds r1, 0x2A - strb r0, [r1] - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0x39 - bl GetMonData - strh r0, [r4, 0x28] - ldrb r0, [r6] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3A - bl GetMonData - strh r0, [r4, 0x2C] - ldrb r0, [r6] - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7 - movs r1, 0x3B - bl GetMonData - strh r0, [r4, 0x2] - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0x3C - bl GetMonData - strh r0, [r4, 0x4] - ldrb r0, [r6] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3D - bl GetMonData - strh r0, [r4, 0x6] - ldrb r0, [r6] - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7 - movs r1, 0x3D - bl GetMonData - strh r0, [r4, 0x6] - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0x3E - bl GetMonData - strh r0, [r4, 0x8] - ldrb r0, [r6] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3F - bl GetMonData - strh r0, [r4, 0xA] -_080207EC: - ldr r0, _080208C4 @ =gBattlePartyID - ldr r1, _080208B4 @ =0x02000000 - ldr r3, _080208C8 @ =0x00016018 - adds r7, r1, r3 - ldrb r2, [r7] - ldrh r0, [r0, 0x4] - cmp r0, r2 - bne _080208F6 - ldr r6, _080208EC @ =gBattleMons - movs r0, 0xD8 - adds r0, r6 - mov r8, r0 - ldrh r0, [r0] - cmp r0, 0 - beq _080208F6 - ldr r0, _080208C0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080208F6 - movs r5, 0x64 - adds r0, r2, 0 - muls r0, r5 - ldr r4, _080208CC @ =gPlayerParty - adds r0, r4 - movs r1, 0x38 - bl GetMonData - adds r1, r6, 0 - adds r1, 0xDA - strb r0, [r1] - ldrb r0, [r7] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - mov r1, r8 - strh r0, [r1] - ldrb r0, [r7] - muls r0, r5 - adds r0, r4 - movs r1, 0x3A - bl GetMonData - adds r1, r6, 0 - adds r1, 0xDC - strh r0, [r1] - ldrb r0, [r7] - muls r0, r5 - adds r0, r4 - movs r1, 0x3B - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB2 - strh r0, [r1] - ldrb r0, [r7] - muls r0, r5 - adds r0, r4 - movs r1, 0x3C - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB4 - strh r0, [r1] - ldrb r0, [r7] - muls r0, r5 - adds r0, r4 - movs r1, 0x3D - bl GetMonData - movs r2, 0xB6 - adds r2, r6 - mov r8, r2 - strh r0, [r2] - ldrb r0, [r7] - muls r0, r5 - adds r0, r4 - movs r1, 0x3D - bl GetMonData - mov r3, r8 - strh r0, [r3] - ldrb r0, [r7] - muls r0, r5 - adds r0, r4 - movs r1, 0x3E - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB8 - strh r0, [r1] - b _080208F6 - .align 2, 0 -_080208AC: .4byte gBattleExecBuffer -_080208B0: .4byte gActiveBank -_080208B4: .4byte 0x02000000 -_080208B8: .4byte 0x000160a2 -_080208BC: .4byte gBattleBufferB -_080208C0: .4byte gBattleTypeFlags -_080208C4: .4byte gBattlePartyID -_080208C8: .4byte 0x00016018 -_080208CC: .4byte gPlayerParty -_080208D0: .4byte gBattleTextBuff1 -_080208D4: .4byte gBattleTextBuff2 -_080208D8: .4byte gLeveledUpInBattle -_080208DC: .4byte gBitTable -_080208E0: .4byte gBattlescriptCurrInstr -_080208E4: .4byte BattleScript_LevelUp -_080208E8: .4byte gBattleMoveDamage -_080208EC: .4byte gBattleMons -_080208F0: - ldr r1, _08020904 @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] -_080208F6: - ldr r0, _08020908 @ =0x02000000 - ldr r1, _0802090C @ =0x0001600f - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - b _08020996 - .align 2, 0 -_08020904: .4byte gBattleMoveDamage -_08020908: .4byte 0x02000000 -_0802090C: .4byte 0x0001600f -_08020910: - ldr r0, _08020924 @ =gBattleMoveDamage - ldr r0, [r0] - cmp r0, 0 - beq _08020930 - ldr r0, _08020928 @ =0x02000000 - ldr r2, _0802092C @ =0x0001600f - adds r0, r2 - movs r1, 0x3 - strb r1, [r0] - b _08020996 - .align 2, 0 -_08020924: .4byte gBattleMoveDamage -_08020928: .4byte 0x02000000 -_0802092C: .4byte 0x0001600f -_08020930: - ldr r2, _08020950 @ =0x02000000 - ldr r3, _08020954 @ =0x00016018 - adds r1, r2, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bhi _0802095C - ldr r0, _08020958 @ =0x0001600f - adds r1, r2, r0 - movs r0, 0x2 - strb r0, [r1] - b _08020996 - .align 2, 0 -_08020950: .4byte 0x02000000 -_08020954: .4byte 0x00016018 -_08020958: .4byte 0x0001600f -_0802095C: - ldr r3, _08020968 @ =0x0001600f - adds r1, r2, r3 - movs r0, 0x6 - strb r0, [r1] - b _08020996 - .align 2, 0 -_08020968: .4byte 0x0001600f -_0802096C: - ldr r0, _080209A4 @ =gBattleExecBuffer - ldr r5, [r0] - cmp r5, 0 - bne _08020996 - ldr r4, _080209A8 @ =gBattleMons - ldr r2, _080209AC @ =gBank1 - ldrb r0, [r2] - movs r1, 0x58 - muls r0, r1 - adds r0, r4 - movs r3, 0 - strh r5, [r0, 0x2E] - ldrb r0, [r2] - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - strb r3, [r0] - ldr r1, _080209B0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08020996: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080209A4: .4byte gBattleExecBuffer -_080209A8: .4byte gBattleMons -_080209AC: .4byte gBank1 -_080209B0: .4byte gBattlescriptCurrInstr - thumb_func_end atk23_getexp - - thumb_func_start atk24 -atk24: @ 80209B4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r0, _08020AF0 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _080209C6 - b _08020B46 -_080209C6: - movs r5, 0 -_080209C8: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08020AF4 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080209F8 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080209F8 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r0, r6, r0 - lsls r0, 16 - lsrs r6, r0, 16 -_080209F8: - adds r5, 0x1 - cmp r5, 0x5 - ble _080209C8 - cmp r6, 0 - bne _08020A0C - ldr r0, _08020AF8 @ =gBattleOutcome - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] -_08020A0C: - movs r6, 0 - movs r5, 0 -_08020A10: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08020AFC @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08020A40 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08020A40 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r0, r6, r0 - lsls r0, 16 - lsrs r6, r0, 16 -_08020A40: - adds r5, 0x1 - cmp r5, 0x5 - ble _08020A10 - ldr r2, _08020AF8 @ =gBattleOutcome - cmp r6, 0 - bne _08020A54 - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_08020A54: - ldrb r0, [r2] - cmp r0, 0 - bne _08020B3E - ldr r2, _08020B00 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x2 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _08020B3E - movs r2, 0 - movs r5, 0 - ldr r0, _08020B04 @ =gNoOfAllBanks - ldrb r3, [r0] - mov r12, r0 - ldr r7, _08020B08 @ =gBattlescriptCurrInstr - cmp r2, r3 - bge _08020AA0 - ldr r0, _08020B0C @ =gHitMarker - movs r1, 0x80 - lsls r1, 21 - ldr r6, [r0] - adds r4, r3, 0 - ldr r3, _08020B10 @ =gSpecialStatuses -_08020A84: - adds r0, r1, 0 - lsls r0, r5 - ands r0, r6 - cmp r0, 0 - beq _08020A98 - ldrb r0, [r3] - lsls r0, 25 - cmp r0, 0 - blt _08020A98 - adds r2, 0x1 -_08020A98: - adds r3, 0x28 - adds r5, 0x2 - cmp r5, r4 - blt _08020A84 -_08020AA0: - movs r4, 0 - movs r5, 0x1 - mov r0, r12 - ldrb r3, [r0] - cmp r5, r3 - bge _08020ADA - ldr r0, _08020B0C @ =gHitMarker - movs r1, 0x80 - lsls r1, 21 - mov r12, r1 - ldr r1, [r0] - ldr r0, _08020B10 @ =gSpecialStatuses - adds r6, r3, 0 - adds r3, r0, 0 - adds r3, 0x14 -_08020ABE: - mov r0, r12 - lsls r0, r5 - ands r0, r1 - cmp r0, 0 - beq _08020AD2 - ldrb r0, [r3] - lsls r0, 25 - cmp r0, 0 - blt _08020AD2 - adds r4, 0x1 -_08020AD2: - adds r3, 0x28 - adds r5, 0x2 - cmp r5, r6 - blt _08020ABE -_08020ADA: - mov r0, r8 - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08020B14 - adds r0, r4, r2 - cmp r0, 0x1 - bgt _08020B1C - b _08020B36 - .align 2, 0 -_08020AF0: .4byte gBattleExecBuffer -_08020AF4: .4byte gPlayerParty -_08020AF8: .4byte gBattleOutcome -_08020AFC: .4byte gEnemyParty -_08020B00: .4byte gBattleTypeFlags -_08020B04: .4byte gNoOfAllBanks -_08020B08: .4byte gBattlescriptCurrInstr -_08020B0C: .4byte gHitMarker -_08020B10: .4byte gSpecialStatuses -_08020B14: - cmp r4, 0 - beq _08020B36 - cmp r2, 0 - beq _08020B36 -_08020B1C: - ldr r2, [r7] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r7] - b _08020B46 -_08020B36: - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - b _08020B46 -_08020B3E: - ldr r1, _08020B50 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08020B46: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08020B50: .4byte gBattlescriptCurrInstr - thumb_func_end atk24 - - thumb_func_start sub_8020B54 -sub_8020B54: @ 8020B54 - ldr r1, _08020B80 @ =gBattleMoveFlags - movs r0, 0 - strb r0, [r1] - ldr r0, _08020B84 @ =0x02000000 - ldr r1, _08020B88 @ =0x0001601f - adds r0, r1 - movs r2, 0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08020B8C @ =gCritMultiplier - strb r1, [r0] - ldr r0, _08020B90 @ =gBattleCommunication - strb r2, [r0, 0x3] - strb r2, [r0, 0x6] - ldr r2, _08020B94 @ =gHitMarker - ldr r0, [r2] - subs r1, 0x42 - ands r0, r1 - ldr r1, _08020B98 @ =0xffffbfff - ands r0, r1 - str r0, [r2] - bx lr - .align 2, 0 -_08020B80: .4byte gBattleMoveFlags -_08020B84: .4byte 0x02000000 -_08020B88: .4byte 0x0001601f -_08020B8C: .4byte gCritMultiplier -_08020B90: .4byte gBattleCommunication -_08020B94: .4byte gHitMarker -_08020B98: .4byte 0xffffbfff - thumb_func_end sub_8020B54 - - thumb_func_start atk25_move_values_cleanup -atk25_move_values_cleanup: @ 8020B9C - push {lr} - bl sub_8020B54 - ldr r1, _08020BB0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08020BB0: .4byte gBattlescriptCurrInstr - thumb_func_end atk25_move_values_cleanup - - thumb_func_start atk26_set_multihit -atk26_set_multihit: @ 8020BB4 - ldr r3, _08020BC4 @ =gMultiHitCounter - ldr r2, _08020BC8 @ =gBattlescriptCurrInstr - ldr r0, [r2] - ldrb r1, [r0, 0x1] - strb r1, [r3] - adds r0, 0x2 - str r0, [r2] - bx lr - .align 2, 0 -_08020BC4: .4byte gMultiHitCounter -_08020BC8: .4byte gBattlescriptCurrInstr - thumb_func_end atk26_set_multihit - - thumb_func_start atk27_decrement_multihit -atk27_decrement_multihit: @ 8020BCC - push {lr} - ldr r1, _08020BE8 @ =gMultiHitCounter - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08020BF0 - ldr r1, _08020BEC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08020C0A - .align 2, 0 -_08020BE8: .4byte gMultiHitCounter -_08020BEC: .4byte gBattlescriptCurrInstr -_08020BF0: - ldr r3, _08020C10 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r3] -_08020C0A: - pop {r0} - bx r0 - .align 2, 0 -_08020C10: .4byte gBattlescriptCurrInstr - thumb_func_end atk27_decrement_multihit - - thumb_func_start atk28_goto -atk28_goto: @ 8020C14 - ldr r3, _08020C30 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - bx lr - .align 2, 0 -_08020C30: .4byte gBattlescriptCurrInstr - thumb_func_end atk28_goto - - thumb_func_start atk29_jumpifbyte -atk29_jumpifbyte: @ 8020C34 - push {r4-r6,lr} - ldr r3, _08020C78 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r2, [r1, 0x7] - ldrb r0, [r1, 0x8] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x9] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xA] - lsls r0, 24 - adds r2, r0 - adds r1, 0xB - str r1, [r3] - cmp r6, 0x5 - bhi _08020CCC - lsls r0, r6, 2 - ldr r1, _08020C7C @ =_08020C80 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08020C78: .4byte gBattlescriptCurrInstr -_08020C7C: .4byte _08020C80 - .align 2, 0 -_08020C80: - .4byte _08020C98 - .4byte _08020CA0 - .4byte _08020CA8 - .4byte _08020CB0 - .4byte _08020CB8 - .4byte _08020CC2 -_08020C98: - ldrb r0, [r5] - cmp r0, r4 - bne _08020CCC - b _08020CCA -_08020CA0: - ldrb r0, [r5] - cmp r0, r4 - beq _08020CCC - b _08020CCA -_08020CA8: - ldrb r0, [r5] - cmp r0, r4 - bls _08020CCC - b _08020CCA -_08020CB0: - ldrb r0, [r5] - cmp r0, r4 - bcs _08020CCC - b _08020CCA -_08020CB8: - ldrb r0, [r5] - ands r4, r0 - cmp r4, 0 - beq _08020CCC - b _08020CCA -_08020CC2: - ldrb r0, [r5] - ands r4, r0 - cmp r4, 0 - bne _08020CCC -_08020CCA: - str r2, [r3] -_08020CCC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk29_jumpifbyte - - thumb_func_start atk2A_jumpifhalfword -atk2A_jumpifhalfword: @ 8020CD4 - push {r4-r6,lr} - ldr r3, _08020D20 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r0, [r1, 0x7] - lsls r0, 8 - orrs r4, r0 - ldrb r2, [r1, 0x8] - ldrb r0, [r1, 0x9] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xA] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xB] - lsls r0, 24 - adds r2, r0 - adds r1, 0xC - str r1, [r3] - cmp r6, 0x5 - bhi _08020D74 - lsls r0, r6, 2 - ldr r1, _08020D24 @ =_08020D28 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08020D20: .4byte gBattlescriptCurrInstr -_08020D24: .4byte _08020D28 - .align 2, 0 -_08020D28: - .4byte _08020D40 - .4byte _08020D48 - .4byte _08020D50 - .4byte _08020D58 - .4byte _08020D60 - .4byte _08020D6A -_08020D40: - ldrh r0, [r5] - cmp r0, r4 - bne _08020D74 - b _08020D72 -_08020D48: - ldrh r0, [r5] - cmp r0, r4 - beq _08020D74 - b _08020D72 -_08020D50: - ldrh r0, [r5] - cmp r0, r4 - bls _08020D74 - b _08020D72 -_08020D58: - ldrh r0, [r5] - cmp r0, r4 - bcs _08020D74 - b _08020D72 -_08020D60: - ldrh r0, [r5] - ands r4, r0 - cmp r4, 0 - beq _08020D74 - b _08020D72 -_08020D6A: - ldrh r0, [r5] - ands r4, r0 - cmp r4, 0 - bne _08020D74 -_08020D72: - str r2, [r3] -_08020D74: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk2A_jumpifhalfword - - thumb_func_start atk2B_jumpifword -atk2B_jumpifword: @ 8020D7C - push {r4-r6,lr} - ldr r3, _08020DD4 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r0, [r1, 0x7] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x8] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x9] - lsls r0, 24 - orrs r4, r0 - ldrb r2, [r1, 0xA] - ldrb r0, [r1, 0xB] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xD] - lsls r0, 24 - adds r2, r0 - adds r1, 0xE - str r1, [r3] - cmp r6, 0x5 - bhi _08020E28 - lsls r0, r6, 2 - ldr r1, _08020DD8 @ =_08020DDC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08020DD4: .4byte gBattlescriptCurrInstr -_08020DD8: .4byte _08020DDC - .align 2, 0 -_08020DDC: - .4byte _08020DF4 - .4byte _08020DFC - .4byte _08020E04 - .4byte _08020E0C - .4byte _08020E14 - .4byte _08020E1E -_08020DF4: - ldr r0, [r5] - cmp r0, r4 - bne _08020E28 - b _08020E26 -_08020DFC: - ldr r0, [r5] - cmp r0, r4 - beq _08020E28 - b _08020E26 -_08020E04: - ldr r0, [r5] - cmp r0, r4 - bls _08020E28 - b _08020E26 -_08020E0C: - ldr r0, [r5] - cmp r0, r4 - bcs _08020E28 - b _08020E26 -_08020E14: - ldr r0, [r5] - ands r0, r4 - cmp r0, 0 - beq _08020E28 - b _08020E26 -_08020E1E: - ldr r0, [r5] - ands r0, r4 - cmp r0, 0 - bne _08020E28 -_08020E26: - str r2, [r3] -_08020E28: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk2B_jumpifword - - thumb_func_start atk2C_jumpifarrayequal -atk2C_jumpifarrayequal: @ 8020E30 - push {r4-r7,lr} - ldr r2, _08020E88 @ =gBattlescriptCurrInstr - ldr r3, [r2] - ldrb r1, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r5, r1, r0 - ldrb r1, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x8] - lsls r0, 24 - adds r4, r1, r0 - ldrb r6, [r3, 0x9] - ldrb r1, [r3, 0xA] - ldrb r0, [r3, 0xB] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0xC] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0xD] - lsls r0, 24 - adds r1, r0 - mov r12, r1 - movs r1, 0 - cmp r1, r6 - bcs _08020EA8 - ldrb r0, [r5] - ldrb r7, [r4] - cmp r0, r7 - beq _08020E8C - adds r0, r3, 0 - b _08020EA4 - .align 2, 0 -_08020E88: .4byte gBattlescriptCurrInstr -_08020E8C: - adds r5, 0x1 - adds r4, 0x1 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r6 - bcs _08020EA8 - ldrb r0, [r5] - ldrb r3, [r4] - cmp r0, r3 - beq _08020E8C - ldr r0, [r2] -_08020EA4: - adds r0, 0xE - str r0, [r2] -_08020EA8: - cmp r1, r6 - bne _08020EB0 - mov r7, r12 - str r7, [r2] -_08020EB0: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk2C_jumpifarrayequal - - thumb_func_start atk2D_jumpifarraynotequal -atk2D_jumpifarraynotequal: @ 8020EB8 - push {r4-r7,lr} - movs r7, 0 - ldr r3, _08020F2C @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r5, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r4, r2, r0 - ldrb r6, [r1, 0x9] - ldrb r2, [r1, 0xA] - ldrb r0, [r1, 0xB] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xD] - lsls r0, 24 - adds r2, r0 - mov r12, r2 - movs r1, 0 - cmp r7, r6 - bcs _08020F22 -_08020F06: - ldrb r0, [r5] - ldrb r2, [r4] - cmp r0, r2 - bne _08020F14 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_08020F14: - adds r5, 0x1 - adds r4, 0x1 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r6 - bcc _08020F06 -_08020F22: - cmp r7, r6 - beq _08020F30 - mov r0, r12 - b _08020F34 - .align 2, 0 -_08020F2C: .4byte gBattlescriptCurrInstr -_08020F30: - ldr r0, [r3] - adds r0, 0xE -_08020F34: - str r0, [r3] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk2D_jumpifarraynotequal - - thumb_func_start atk2E_setbyte -atk2E_setbyte: @ 8020F3C - ldr r3, _08020F60 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r2, 0x5] - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_08020F60: .4byte gBattlescriptCurrInstr - thumb_func_end atk2E_setbyte - - thumb_func_start atk2F_addbyte -atk2F_addbyte: @ 8020F64 - ldr r3, _08020F8C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r2, 0x5] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_08020F8C: .4byte gBattlescriptCurrInstr - thumb_func_end atk2F_addbyte - - thumb_func_start atk30_subbyte -atk30_subbyte: @ 8020F90 - ldr r3, _08020FB8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r1] - ldrb r2, [r2, 0x5] - subs r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_08020FB8: .4byte gBattlescriptCurrInstr - thumb_func_end atk30_subbyte - - thumb_func_start atk31_copyarray -atk31_copyarray: @ 8020FBC - push {r4-r6,lr} - ldr r3, _0802100C @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r6, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x9] - movs r2, 0 - cmp r2, r4 - bge _08021000 -_08020FF2: - adds r0, r6, r2 - adds r1, r5, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r4 - blt _08020FF2 -_08021000: - ldr r0, [r3] - adds r0, 0xA - str r0, [r3] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802100C: .4byte gBattlescriptCurrInstr - thumb_func_end atk31_copyarray - - thumb_func_start atk32_copyarray_withindex -atk32_copyarray_withindex: @ 8021010 - push {r4-r7,lr} - ldr r3, _08021078 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r7, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r6, r2, r0 - ldrb r2, [r1, 0x9] - ldrb r0, [r1, 0xA] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xB] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0xD] - movs r2, 0 - cmp r2, r4 - bge _0802106C -_0802105A: - adds r0, r7, r2 - ldrb r1, [r5] - adds r1, r2, r1 - adds r1, r6, r1 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r4 - blt _0802105A -_0802106C: - ldr r0, [r3] - adds r0, 0xE - str r0, [r3] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08021078: .4byte gBattlescriptCurrInstr - thumb_func_end atk32_copyarray_withindex - - thumb_func_start atk33_orbyte -atk33_orbyte: @ 802107C - ldr r3, _080210A4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r1] - ldrb r2, [r2, 0x5] - orrs r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_080210A4: .4byte gBattlescriptCurrInstr - thumb_func_end atk33_orbyte - - thumb_func_start atk34_orhalfword -atk34_orhalfword: @ 80210A8 - push {r4,lr} - ldr r4, _080210DC @ =gBattlescriptCurrInstr - ldr r3, [r4] - ldrb r2, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r2, r0 - ldrb r1, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2] - orrs r1, r0 - strh r1, [r2] - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080210DC: .4byte gBattlescriptCurrInstr - thumb_func_end atk34_orhalfword - - thumb_func_start atk35_orword -atk35_orword: @ 80210E0 - push {r4,lr} - ldr r4, _08021120 @ =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r3, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r3, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r3, r0 - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - ldr r0, [r4] - adds r0, 0x9 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08021120: .4byte gBattlescriptCurrInstr - thumb_func_end atk35_orword - - thumb_func_start atk36_bicbyte -atk36_bicbyte: @ 8021124 - ldr r3, _0802114C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r2, [r2, 0x5] - ldrb r0, [r1] - bics r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_0802114C: .4byte gBattlescriptCurrInstr - thumb_func_end atk36_bicbyte - - thumb_func_start atk37_bichalfword -atk37_bichalfword: @ 8021150 - push {r4,lr} - ldr r4, _08021184 @ =gBattlescriptCurrInstr - ldr r3, [r4] - ldrb r1, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r2, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - orrs r2, r0 - ldrh r0, [r1] - bics r0, r2 - strh r0, [r1] - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08021184: .4byte gBattlescriptCurrInstr - thumb_func_end atk37_bichalfword - - thumb_func_start atk38_bicword -atk38_bicword: @ 8021188 - push {r4,lr} - ldr r4, _080211C8 @ =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r3, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r3, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r3, r0 - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - ldr r0, [r3] - bics r0, r1 - str r0, [r3] - ldr r0, [r4] - adds r0, 0x9 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080211C8: .4byte gBattlescriptCurrInstr - thumb_func_end atk38_bicword - - thumb_func_start atk39_pause -atk39_pause: @ 80211CC - push {r4,r5,lr} - ldr r0, _08021200 @ =gBattleExecBuffer - ldr r4, [r0] - cmp r4, 0 - bne _080211F8 - ldr r5, _08021204 @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r3, _08021208 @ =gPauseCounterBattle - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bcc _080211F8 - strh r4, [r3] - adds r0, r2, 0x3 - str r0, [r5] -_080211F8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08021200: .4byte gBattleExecBuffer -_08021204: .4byte gBattlescriptCurrInstr -_08021208: .4byte gPauseCounterBattle - thumb_func_end atk39_pause - - thumb_func_start atk3A_waitstate -atk3A_waitstate: @ 802120C - push {lr} - ldr r0, _08021224 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0802121E - ldr r1, _08021228 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0802121E: - pop {r0} - bx r0 - .align 2, 0 -_08021224: .4byte gBattleExecBuffer -_08021228: .4byte gBattlescriptCurrInstr - thumb_func_end atk3A_waitstate - - thumb_func_start atk3B_healthbar_update -atk3B_healthbar_update: @ 802122C - push {lr} - ldr r0, _08021240 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0802124C - ldr r0, _08021244 @ =gActiveBank - ldr r1, _08021248 @ =gBankTarget - b _08021250 - .align 2, 0 -_08021240: .4byte gBattlescriptCurrInstr -_08021244: .4byte gActiveBank -_08021248: .4byte gBankTarget -_0802124C: - ldr r0, _08021274 @ =gActiveBank - ldr r1, _08021278 @ =gBankAttacker -_08021250: - ldrb r1, [r1] - strb r1, [r0] - ldr r0, _0802127C @ =gBattleMoveDamage - ldrh r1, [r0] - movs r0, 0 - bl EmitHealthBarUpdate - ldr r0, _08021274 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08021280 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08021274: .4byte gActiveBank -_08021278: .4byte gBankAttacker -_0802127C: .4byte gBattleMoveDamage -_08021280: .4byte gBattlescriptCurrInstr - thumb_func_end atk3B_healthbar_update - - thumb_func_start atk3C_return -atk3C_return: @ 8021284 - push {lr} - bl b_movescr_stack_pop_cursor - pop {r0} - bx r0 - thumb_func_end atk3C_return - - thumb_func_start atk3D_end -atk3D_end: @ 8021290 - ldr r0, _080212A4 @ =gBattleMoveFlags - movs r1, 0 - strb r1, [r0] - ldr r0, _080212A8 @ =gActiveBank - strb r1, [r0] - ldr r1, _080212AC @ =gFightStateTracker - movs r0, 0xB - strb r0, [r1] - bx lr - .align 2, 0 -_080212A4: .4byte gBattleMoveFlags -_080212A8: .4byte gActiveBank -_080212AC: .4byte gFightStateTracker - thumb_func_end atk3D_end - - thumb_func_start atk3E_end2 -atk3E_end2: @ 80212B0 - ldr r1, _080212C0 @ =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r1, _080212C4 @ =gFightStateTracker - movs r0, 0xB - strb r0, [r1] - bx lr - .align 2, 0 -_080212C0: .4byte gActiveBank -_080212C4: .4byte gFightStateTracker - thumb_func_end atk3E_end2 - - thumb_func_start atk3F_end3 -atk3F_end3: @ 80212C8 - push {lr} - bl b_movescr_stack_pop_cursor - ldr r2, _080212F0 @ =0x02017140 - adds r1, r2, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0 - beq _080212DE - subs r0, 0x1 - strb r0, [r1] -_080212DE: - ldr r0, _080212F4 @ =gBattleMainFunc - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - str r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080212F0: .4byte 0x02017140 -_080212F4: .4byte gBattleMainFunc - thumb_func_end atk3F_end3 - - thumb_func_start atk41_call -atk41_call: @ 80212F8 - push {r4,lr} - ldr r4, _08021324 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x5 - bl b_movescr_stack_push - ldr r2, [r4] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08021324: .4byte gBattlescriptCurrInstr - thumb_func_end atk41_call - - thumb_func_start atk42_jumpiftype2 -atk42_jumpiftype2: @ 8021328 - push {r4,lr} - ldr r4, _08021370 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - lsls r0, 24 - lsrs r0, 24 - ldr r3, [r4] - ldr r2, _08021374 @ =gBattleMons - movs r1, 0x58 - muls r0, r1 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r2, [r3, 0x2] - ldrb r1, [r1] - cmp r2, r1 - beq _08021356 - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - bne _08021378 -_08021356: - ldrb r1, [r3, 0x3] - ldrb r0, [r3, 0x4] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r3, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r3, 0x6] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _0802137C - .align 2, 0 -_08021370: .4byte gBattlescriptCurrInstr -_08021374: .4byte gBattleMons -_08021378: - adds r0, r3, 0x7 - str r0, [r4] -_0802137C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk42_jumpiftype2 - - thumb_func_start atk43_jumpifabilitypresent -atk43_jumpifabilitypresent: @ 8021384 - push {r4,lr} - sub sp, 0x4 - ldr r4, _080213BC @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r2, [r0, 0x1] - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _080213C0 - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _080213C6 - .align 2, 0 -_080213BC: .4byte gBattlescriptCurrInstr -_080213C0: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_080213C6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk43_jumpifabilitypresent - - thumb_func_start atk44 -atk44: @ 80213D0 - ldr r1, _080213E4 @ =0x02000000 - ldr r0, _080213E8 @ =gBankAttacker - ldrb r0, [r0] - ldr r2, _080213EC @ =0x00016060 - adds r0, r2 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - bx lr - .align 2, 0 -_080213E4: .4byte 0x02000000 -_080213E8: .4byte gBankAttacker -_080213EC: .4byte 0x00016060 - thumb_func_end atk44 - - thumb_func_start atk45_playanimation -atk45_playanimation: @ 80213F0 - push {r4-r6,lr} - ldr r5, _08021444 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r6, _08021448 @ =gActiveBank - strb r0, [r6] - ldr r2, [r5] - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x4] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x6] - lsls r0, 24 - adds r3, r1, r0 - ldrb r4, [r2, 0x2] - adds r0, r4, 0 - cmp r0, 0x1 - beq _08021426 - cmp r0, 0x11 - beq _08021426 - cmp r0, 0x2 - bne _0802144C -_08021426: - ldr r4, _08021444 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x2] - ldrh r2, [r3] - movs r0, 0 - bl EmitBattleAnimation - ldr r0, _08021448 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - b _080214AE - .align 2, 0 -_08021444: .4byte gBattlescriptCurrInstr -_08021448: .4byte gActiveBank -_0802144C: - ldr r0, _08021464 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802146C - adds r0, r2, 0x7 - bl b_movescr_stack_push - ldr r0, _08021468 @ =BattleScript_Pausex20 - b _080214AC - .align 2, 0 -_08021464: .4byte gHitMarker -_08021468: .4byte BattleScript_Pausex20 -_0802146C: - adds r0, r4, 0 - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08021498 - ldr r1, _08021490 @ =gStatuses3 - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08021494 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _08021498 - adds r0, r2, 0x7 - b _080214AC - .align 2, 0 -_08021490: .4byte gStatuses3 -_08021494: .4byte 0x000400c0 -_08021498: - ldrb r1, [r2, 0x2] - ldrh r2, [r3] - movs r0, 0 - bl EmitBattleAnimation - ldrb r0, [r6] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x7 -_080214AC: - str r0, [r5] -_080214AE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk45_playanimation - - thumb_func_start atk46_playanimation2 -atk46_playanimation2: @ 80214B4 - push {r4-r7,lr} - ldr r6, _0802151C @ =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r7, _08021520 @ =gActiveBank - strb r0, [r7] - ldr r2, [r6] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - adds r3, r1, r0 - ldrb r1, [r2, 0x6] - ldrb r0, [r2, 0x7] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x9] - lsls r0, 24 - adds r4, r1, r0 - ldrb r5, [r3] - adds r0, r5, 0 - cmp r0, 0x1 - beq _080214FE - cmp r0, 0x11 - beq _080214FE - cmp r0, 0x2 - bne _08021524 -_080214FE: - ldrb r1, [r3] - ldrh r2, [r4] - movs r0, 0 - bl EmitBattleAnimation - ldr r0, _08021520 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _0802151C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] - b _0802157A - .align 2, 0 -_0802151C: .4byte gBattlescriptCurrInstr -_08021520: .4byte gActiveBank -_08021524: - ldr r0, _08021534 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08021538 - adds r0, r2, 0 - b _08021576 - .align 2, 0 -_08021534: .4byte gHitMarker -_08021538: - adds r0, r5, 0 - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08021564 - ldr r1, _0802155C @ =gStatuses3 - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08021560 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _08021564 - adds r0, r2, 0 - b _08021576 - .align 2, 0 -_0802155C: .4byte gStatuses3 -_08021560: .4byte 0x000400c0 -_08021564: - ldrb r1, [r3] - ldrh r2, [r4] - movs r0, 0 - bl EmitBattleAnimation - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r0, [r6] -_08021576: - adds r0, 0xA - str r0, [r6] -_0802157A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk46_playanimation2 - - thumb_func_start atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues -atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues: @ 8021580 - push {r4,lr} - movs r3, 0 - ldr r0, _080215A0 @ =0x02000000 - ldr r2, _080215A4 @ =0x0001601e - adds r1, r0, r2 - ldrb r1, [r1] - movs r2, 0xF0 - ands r2, r1 - adds r4, r0, 0 - cmp r2, 0x20 - beq _080215B6 - cmp r2, 0x20 - bgt _080215A8 - cmp r2, 0x10 - beq _080215B2 - b _080215C0 - .align 2, 0 -_080215A0: .4byte 0x02000000 -_080215A4: .4byte 0x0001601e -_080215A8: - cmp r2, 0x90 - beq _080215BA - cmp r2, 0xA0 - beq _080215BE - b _080215C0 -_080215B2: - movs r3, 0xF - b _080215C0 -_080215B6: - movs r3, 0x27 - b _080215C0 -_080215BA: - movs r3, 0x16 - b _080215C0 -_080215BE: - movs r3, 0x2E -_080215C0: - ldr r1, _080215EC @ =0x0001601e - adds r0, r4, r1 - ldrb r1, [r0] - movs r0, 0xF - ands r0, r1 - adds r0, r3, r0 - subs r0, 0x1 - ldr r2, _080215F0 @ =0x000160a4 - adds r1, r4, r2 - movs r2, 0 - strb r0, [r1] - ldr r1, _080215F4 @ =0x000160a5 - adds r0, r4, r1 - strb r2, [r0] - ldr r1, _080215F8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080215EC: .4byte 0x0001601e -_080215F0: .4byte 0x000160a4 -_080215F4: .4byte 0x000160a5 -_080215F8: .4byte gBattlescriptCurrInstr - thumb_func_end atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues - - thumb_func_start atk48_playstatchangeanimation -atk48_playstatchangeanimation: @ 80215FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r7, 0 - movs r0, 0 - mov r8, r0 - movs r3, 0 - ldr r5, _08021670 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - str r3, [sp] - bl sub_8015150 - ldr r2, _08021674 @ =gActiveBank - strb r0, [r2] - ldr r0, [r5] - ldrb r4, [r0, 0x2] - ldrb r1, [r0, 0x3] - movs r0, 0x1 - ands r0, r1 - ldr r3, [sp] - cmp r0, 0 - beq _08021710 - movs r0, 0x2 - ands r0, r1 - movs r1, 0x15 - cmp r0, 0 - beq _0802163C - movs r1, 0x2D -_0802163C: - cmp r4, 0 - beq _080216E4 - movs r0, 0x1 - mov r10, r0 - ldr r0, _08021678 @ =gUnknown_02024A98 - mov r9, r0 - lsls r5, r1, 16 -_0802164A: - adds r0, r4, 0 - mov r1, r10 - ands r0, r1 - cmp r0, 0 - beq _080216D6 - ldr r0, _08021670 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0802167C - ldr r0, _08021674 @ =gActiveBank - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7, r0 - b _080216C4 - .align 2, 0 -_08021670: .4byte gBattlescriptCurrInstr -_08021674: .4byte gActiveBank -_08021678: .4byte gUnknown_02024A98 -_0802167C: - ldr r6, _08021700 @ =gActiveBank - ldrb r0, [r6] - str r3, [sp] - bl GetBankIdentity - mov r1, r10 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08021704 @ =gSideTimer - adds r0, r1 - ldrb r0, [r0, 0x2] - ldr r3, [sp] - cmp r0, 0 - bne _080216D6 - ldr r0, _08021708 @ =gBattleMons - ldrb r2, [r6] - movs r1, 0x58 - muls r2, r1 - adds r0, r2, r0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1D - beq _080216D6 - cmp r0, 0x49 - beq _080216D6 - cmp r0, 0x33 - bne _080216BA - cmp r7, 0x6 - beq _080216D6 -_080216BA: - cmp r0, 0x34 - bne _080216C2 - cmp r7, 0x1 - beq _080216D6 -_080216C2: - adds r0, r7, r2 -_080216C4: - add r0, r9 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _080216D6 - lsrs r0, r5, 16 - mov r8, r0 - adds r3, 0x1 -_080216D6: - lsrs r4, 1 - movs r1, 0x80 - lsls r1, 9 - adds r5, r1 - adds r7, 0x1 - cmp r4, 0 - bne _0802164A -_080216E4: - ldr r0, _0802170C @ =gBattlescriptCurrInstr - mov r9, r0 - cmp r3, 0x1 - ble _08021772 - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x2 - ands r0, r1 - movs r1, 0x39 - mov r8, r1 - cmp r0, 0 - beq _08021772 - movs r0, 0x3A - b _08021770 - .align 2, 0 -_08021700: .4byte gActiveBank -_08021704: .4byte gSideTimer -_08021708: .4byte gBattleMons -_0802170C: .4byte gBattlescriptCurrInstr -_08021710: - movs r0, 0x2 - ands r0, r1 - movs r1, 0xE - cmp r0, 0 - beq _0802171C - movs r1, 0x26 -_0802171C: - mov r9, r5 - cmp r4, 0 - beq _08021758 - ldr r6, _0802178C @ =gUnknown_02024A98 - adds r5, r2, 0 - lsls r2, r1, 16 -_08021728: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0802174A - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r7, r0 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xB - bgt _0802174A - lsrs r1, r2, 16 - mov r8, r1 - adds r3, 0x1 -_0802174A: - lsrs r4, 1 - movs r0, 0x80 - lsls r0, 9 - adds r2, r0 - adds r7, 0x1 - cmp r4, 0 - bne _08021728 -_08021758: - cmp r3, 0x1 - ble _08021772 - mov r1, r9 - ldr r0, [r1] - ldrb r1, [r0, 0x3] - movs r0, 0x2 - ands r0, r1 - movs r1, 0x37 - mov r8, r1 - cmp r0, 0 - beq _08021772 - movs r0, 0x38 -_08021770: - mov r8, r0 -_08021772: - mov r1, r9 - ldr r2, [r1] - ldrb r1, [r2, 0x3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08021790 - cmp r3, 0x1 - bgt _08021790 - adds r0, r2, 0x4 - mov r1, r9 - b _080217E6 - .align 2, 0 -_0802178C: .4byte gUnknown_02024A98 -_08021790: - cmp r3, 0 - beq _080217E0 - ldr r0, _080217D0 @ =0x02000000 - ldr r1, _080217D4 @ =0x000160dc - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - bne _080217E0 - movs r0, 0 - movs r1, 0x1 - mov r2, r8 - str r3, [sp] - bl EmitBattleAnimation - ldr r0, _080217D8 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r0, _080217DC @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x4 - ands r0, r1 - ldr r3, [sp] - cmp r0, 0 - beq _080217CC - cmp r3, 0x1 - ble _080217CC - movs r0, 0x1 - strb r0, [r4] -_080217CC: - ldr r1, _080217DC @ =gBattlescriptCurrInstr - b _080217E2 - .align 2, 0 -_080217D0: .4byte 0x02000000 -_080217D4: .4byte 0x000160dc -_080217D8: .4byte gActiveBank -_080217DC: .4byte gBattlescriptCurrInstr -_080217E0: - mov r1, r9 -_080217E2: - ldr r0, [r1] - adds r0, 0x4 -_080217E6: - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk48_playstatchangeanimation - - thumb_func_start sub_80217F8 -sub_80217F8: @ 80217F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r0, 0 - mov r10, r0 - ldr r0, _08021834 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x1] - str r1, [sp, 0x10] - ldrb r0, [r0, 0x2] - str r0, [sp, 0x14] - ldr r1, _08021838 @ =gBattleMons - ldr r0, _0802183C @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08021844 - ldr r1, _08021840 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x7] - b _0802184E - .align 2, 0 -_08021834: .4byte gBattlescriptCurrInstr -_08021838: .4byte gBattleMons -_0802183C: .4byte gBankAttacker -_08021840: .4byte gEnigmaBerries -_08021844: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r0, 24 -_0802184E: - str r0, [sp, 0x8] - ldr r0, _0802186C @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 1 - ldr r0, _08021870 @ =0x020160e8 - adds r1, r0 - str r1, [sp, 0xC] - subs r0, 0xCC - ldrb r0, [r0] - cmp r0, 0 - beq _080218C0 - movs r2, 0x3F - ands r2, r0 - str r2, [sp, 0x4] - b _080218D2 - .align 2, 0 -_0802186C: .4byte gBankAttacker -_08021870: .4byte 0x020160e8 -_08021874: - strb r2, [r7] - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - ldr r0, _080218AC @ =0x02000000 - ldr r3, _080218B0 @ =0x0001600c - adds r0, r3 - strb r4, [r0] - bl sub_8020B54 - ldr r2, _080218B4 @ =gUnknown_081D6BBC - mov r4, r8 - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - bl b_movescr_stack_push - ldr r1, _080218B8 @ =gBattlescriptCurrInstr - ldr r0, _080218BC @ =gUnknown_081D9B2D - bl _0802229C - .align 2, 0 -_080218AC: .4byte 0x02000000 -_080218B0: .4byte 0x0001600c -_080218B4: .4byte gUnknown_081D6BBC -_080218B8: .4byte gBattlescriptCurrInstr -_080218BC: .4byte gUnknown_081D9B2D -_080218C0: - ldr r2, _080218D8 @ =gBattleMoves - ldr r0, _080218DC @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - str r0, [sp, 0x4] -_080218D2: - ldr r5, _080218E0 @ =0x02000000 - mov r12, r5 - b _080218EE - .align 2, 0 -_080218D8: .4byte gBattleMoves -_080218DC: .4byte gCurrentMove -_080218E0: .4byte 0x02000000 -_080218E4: - mov r0, r10 - cmp r0, 0 - beq _080218EE - bl _08022286 -_080218EE: - ldr r0, _08021908 @ =0x0001600c - add r0, r12 - ldrb r0, [r0] - cmp r0, 0x11 - bls _080218FC - bl _0802224E -_080218FC: - lsls r0, 2 - ldr r1, _0802190C @ =_08021910 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08021908: .4byte 0x0001600c -_0802190C: .4byte _08021910 - .align 2, 0 -_08021910: - .4byte _08021958 - .4byte _08021A34 - .4byte _08021AF0 - .4byte _08021B20 - .4byte _08021B44 - .4byte _08021B78 - .4byte _08021B9C - .4byte _08021C40 - .4byte _08021C78 - .4byte _08021CA8 - .4byte _08021CCC - .4byte _08021D18 - .4byte _08021DAC - .4byte _08021E30 - .4byte _08021E70 - .4byte _08022068 - .4byte _080221C0 - .4byte _0802224E -_08021958: - ldr r5, _08021A08 @ =gBattleMons - ldr r2, _08021A0C @ =gBankTarget - ldrb r4, [r2] - movs r6, 0x58 - adds r3, r4, 0 - muls r3, r6 - adds r0, r5, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 16 - ands r1, r0 - cmp r1, 0 - beq _080219FE - adds r0, r3, r5 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _080219FE - ldr r0, _08021A10 @ =gBankAttacker - ldrb r1, [r0] - cmp r1, r4 - beq _080219FE - adds r0, r1, 0 - bl GetBankSide - adds r4, r0, 0 - ldr r1, _08021A0C @ =gBankTarget - ldrb r0, [r1] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _080219FE - ldr r0, _08021A14 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _080219FE - ldr r2, _08021A18 @ =gProtectStructs - ldr r4, _08021A0C @ =gBankTarget - ldrb r3, [r4] - lsls r1, r3, 4 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _080219C8 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080219FE -_080219C8: - ldr r2, _08021A1C @ =gBattleMoves - ldr r0, _08021A20 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080219FE - adds r0, r3, 0 - muls r0, r6 - adds r1, r0, r5 - ldrb r2, [r1, 0x19] - movs r0, 0x19 - ldrsb r0, [r1, r0] - cmp r0, 0xB - bgt _080219FE - adds r0, r2, 0x1 - strb r0, [r1, 0x19] - bl b_movescr_stack_push_cursor - ldr r1, _08021A24 @ =gBattlescriptCurrInstr - ldr r0, _08021A28 @ =gUnknown_081D9132 - str r0, [r1] - movs r5, 0x1 - mov r10, r5 -_080219FE: - ldr r2, _08021A2C @ =0x02000000 - ldr r0, _08021A30 @ =0x0001600c - adds r1, r2, r0 - b _08021E00 - .align 2, 0 -_08021A08: .4byte gBattleMons -_08021A0C: .4byte gBankTarget -_08021A10: .4byte gBankAttacker -_08021A14: .4byte gBattleMoveFlags -_08021A18: .4byte gProtectStructs -_08021A1C: .4byte gBattleMoves -_08021A20: .4byte gCurrentMove -_08021A24: .4byte gBattlescriptCurrInstr -_08021A28: .4byte gUnknown_081D9132 -_08021A2C: .4byte 0x02000000 -_08021A30: .4byte 0x0001600c -_08021A34: - ldr r2, _08021AD0 @ =gBattleMons - ldr r1, _08021AD4 @ =gBankTarget - ldrb r4, [r1] - movs r3, 0x58 - mov r12, r3 - mov r3, r12 - muls r3, r4 - adds r7, r2, 0 - adds r7, 0x4C - adds r6, r3, r7 - ldr r5, [r6] - movs r0, 0x20 - ands r0, r5 - cmp r0, 0 - bne _08021A54 - b _08021DFA -_08021A54: - adds r0, r3, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08021A5E - b _08021DFA -_08021A5E: - ldr r0, _08021AD8 @ =gBankAttacker - ldrb r0, [r0] - cmp r0, r4 - bne _08021A68 - b _08021DFA -_08021A68: - ldr r0, _08021ADC @ =gSpecialStatuses - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 2 - adds r0, 0xC - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _08021A7C - b _08021DFA -_08021A7C: - ldr r0, _08021AE0 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08021A8A - b _08021DFA -_08021A8A: - ldr r4, [sp, 0x4] - cmp r4, 0xA - beq _08021A92 - b _08021DFA -_08021A92: - movs r0, 0x21 - negs r0, r0 - ands r5, r0 - str r5, [r6] - ldr r4, _08021AE4 @ =gActiveBank - ldr r5, _08021AD4 @ =gBankTarget - ldrb r0, [r5] - strb r0, [r4] - ldrb r0, [r5] - mov r1, r12 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - bl b_movescr_stack_push_cursor - ldr r1, _08021AE8 @ =gBattlescriptCurrInstr - ldr r0, _08021AEC @ =gUnknown_081D955D - str r0, [r1] - movs r2, 0x1 - mov r10, r2 - b _08021DFA - .align 2, 0 -_08021AD0: .4byte gBattleMons -_08021AD4: .4byte gBankTarget -_08021AD8: .4byte gBankAttacker -_08021ADC: .4byte gSpecialStatuses -_08021AE0: .4byte gBattleMoveFlags -_08021AE4: .4byte gActiveBank -_08021AE8: .4byte gBattlescriptCurrInstr -_08021AEC: .4byte gUnknown_081D955D -_08021AF0: - ldr r0, _08021B14 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08021B0C - movs r4, 0x1 - mov r10, r4 -_08021B0C: - ldr r2, _08021B18 @ =0x02000000 - ldr r5, _08021B1C @ =0x0001600c - adds r1, r2, r5 - b _08021E00 - .align 2, 0 -_08021B14: .4byte gBankTarget -_08021B18: .4byte 0x02000000 -_08021B1C: .4byte 0x0001600c -_08021B20: - ldr r0, _08021B40 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08021B3A - b _08021DFA -_08021B3A: - movs r0, 0x1 - mov r10, r0 - b _08021DFA - .align 2, 0 -_08021B40: .4byte gBankTarget -_08021B44: - movs r0, 0 - str r0, [sp] - movs r0, 0x5 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08021B68 - movs r4, 0x1 - mov r10, r4 - ldr r5, _08021B64 @ =0x02000000 - mov r12, r5 - b _0802224E - .align 2, 0 -_08021B64: .4byte 0x02000000 -_08021B68: - ldr r2, _08021B70 @ =0x02000000 - ldr r0, _08021B74 @ =0x0001600c - adds r1, r2, r0 - b _08021E00 - .align 2, 0 -_08021B70: .4byte 0x02000000 -_08021B74: .4byte 0x0001600c -_08021B78: - ldr r0, _08021B98 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08021B92 - b _08021DFA -_08021B92: - movs r1, 0x1 - mov r10, r1 - b _08021DFA - .align 2, 0 -_08021B98: .4byte gBankAttacker -_08021B9C: - ldr r0, _08021C28 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _08021BE0 - ldr r4, [sp, 0x8] - cmp r4, 0x1D - bne _08021BE0 - ldr r0, _08021C2C @ =gUnknown_02024BE8 - ldrh r2, [r0] - adds r7, r0, 0 - cmp r2, 0xA5 - beq _08021BE0 - ldr r5, [sp, 0xC] - ldrh r1, [r5] - cmp r1, 0 - beq _08021BC8 - ldr r0, _08021C30 @ =0x0000ffff - cmp r1, r0 - bne _08021BE0 -_08021BC8: - cmp r2, 0xE2 - bne _08021BDA - ldr r0, _08021C34 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08021BDA - b _08022244 -_08021BDA: - ldrh r0, [r7] - ldr r1, [sp, 0xC] - strh r0, [r1] -_08021BE0: - movs r4, 0 - ldr r2, _08021C38 @ =gBattleMons - ldr r3, _08021C3C @ =gBankAttacker - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r2, 0xC - adds r0, r2 - ldrh r0, [r0] - ldr r5, [sp, 0xC] - ldrh r1, [r5] - mov r9, r3 - cmp r0, r1 - beq _08021C18 - mov r6, r9 - movs r3, 0x58 - adds r5, r1, 0 -_08021C02: - adds r4, 0x1 - cmp r4, 0x3 - bgt _08021C18 - lsls r0, r4, 1 - ldrb r1, [r6] - muls r1, r3 - adds r0, r1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r5 - bne _08021C02 -_08021C18: - cmp r4, 0x4 - beq _08021C1E - b _08022244 -_08021C1E: - movs r0, 0 - ldr r1, [sp, 0xC] -_08021C22: - strh r0, [r1] - b _08022244 - .align 2, 0 -_08021C28: .4byte gHitMarker -_08021C2C: .4byte gUnknown_02024BE8 -_08021C30: .4byte 0x0000ffff -_08021C34: .4byte gBattleMoveFlags -_08021C38: .4byte gBattleMons -_08021C3C: .4byte gBankAttacker -_08021C40: - movs r4, 0 - ldr r0, _08021C6C @ =gNoOfAllBanks - ldrb r2, [r0] - cmp r4, r2 - blt _08021C4C - b _08022244 -_08021C4C: - movs r5, 0 - ldr r2, _08021C70 @ =0x020160f0 - ldr r3, _08021C74 @ =gBattleMons -_08021C52: - ldrh r1, [r2] - cmp r1, 0 - beq _08021C5C - strh r1, [r3, 0x2E] - strh r5, [r2] -_08021C5C: - adds r2, 0x2 - adds r3, 0x58 - adds r4, 0x1 - ldrb r1, [r0] - cmp r4, r1 - blt _08021C52 - b _08022244 - .align 2, 0 -_08021C6C: .4byte gNoOfAllBanks -_08021C70: .4byte 0x020160f0 -_08021C74: .4byte gBattleMons -_08021C78: - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl sub_801A02C - lsls r0, 24 - cmp r0, 0 - beq _08021C98 - movs r2, 0x1 - mov r10, r2 - ldr r3, _08021C94 @ =0x02000000 - mov r12, r3 - b _0802224E - .align 2, 0 -_08021C94: .4byte 0x02000000 -_08021C98: - ldr r2, _08021CA0 @ =0x02000000 - ldr r4, _08021CA4 @ =0x0001600c - adds r1, r2, r4 - b _08021E00 - .align 2, 0 -_08021CA0: .4byte 0x02000000 -_08021CA4: .4byte 0x0001600c -_08021CA8: - movs r0, 0x4 - movs r1, 0 - movs r2, 0 - bl sub_801A02C - lsls r0, 24 - cmp r0, 0 - beq _08021CBC - movs r5, 0x1 - mov r10, r5 -_08021CBC: - ldr r2, _08021CC4 @ =0x02000000 - ldr r0, _08021CC8 @ =0x0001600c - adds r1, r2, r0 - b _08021E00 - .align 2, 0 -_08021CC4: .4byte 0x02000000 -_08021CC8: .4byte 0x0001600c -_08021CCC: - ldr r1, _08021D04 @ =gStatuses3 - ldr r0, _08021D08 @ =gBankAttacker - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08021D0C @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _08021CE2 - b _08021DFA -_08021CE2: - ldr r0, _08021D10 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08021CF0 - b _08021DFA -_08021CF0: - ldr r4, _08021D14 @ =gActiveBank - strb r2, [r4] - movs r0, 0 - movs r1, 0x1 - bl EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _08021DFA - .align 2, 0 -_08021D04: .4byte gStatuses3 -_08021D08: .4byte gBankAttacker -_08021D0C: .4byte 0x000400c0 -_08021D10: .4byte gHitMarker -_08021D14: .4byte gActiveBank -_08021D18: - ldr r0, _08021D88 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08021D44 - ldr r1, _08021D8C @ =gStatuses3 - ldr r0, _08021D90 @ =gBankAttacker - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08021D94 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _08021D44 - adds r0, r2, 0 - bl sub_8015660 - lsls r0, 24 - cmp r0, 0 - beq _08021D7E -_08021D44: - ldr r4, _08021D98 @ =gActiveBank - ldr r5, _08021D90 @ =gBankAttacker - ldrb r0, [r5] - strb r0, [r4] - movs r0, 0 - movs r1, 0 - bl EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, _08021D8C @ =gStatuses3 - ldrb r2, [r5] - lsls r2, 2 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08021D9C @ =0xfffbff3f - ands r0, r1 - str r0, [r2] - ldr r2, _08021DA0 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_08021D7E: - ldr r2, _08021DA4 @ =0x02000000 - ldr r4, _08021DA8 @ =0x0001600c - adds r1, r2, r4 - b _08021E00 - .align 2, 0 -_08021D88: .4byte gBattleMoveFlags -_08021D8C: .4byte gStatuses3 -_08021D90: .4byte gBankAttacker -_08021D94: .4byte 0x000400c0 -_08021D98: .4byte gActiveBank -_08021D9C: .4byte 0xfffbff3f -_08021DA0: .4byte gSpecialStatuses -_08021DA4: .4byte 0x02000000 -_08021DA8: .4byte 0x0001600c -_08021DAC: - ldr r2, _08021E0C @ =gSpecialStatuses - ldr r1, _08021E10 @ =gBankTarget - ldrb r3, [r1] - lsls r4, r3, 2 - adds r0, r4, r3 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _08021DFA - ldr r0, _08021E14 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r3, r0 - bcs _08021DFA - ldr r5, _08021E18 @ =gStatuses3 - adds r0, r4, r5 - ldr r0, [r0] - ldr r1, _08021E1C @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _08021DFA - ldr r4, _08021E20 @ =gActiveBank - strb r3, [r4] - movs r0, 0 - movs r1, 0 - bl EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, _08021E10 @ =gBankTarget - ldrb r2, [r0] - lsls r2, 2 - adds r2, r5 - ldr r0, [r2] - ldr r1, _08021E24 @ =0xfffbff3f - ands r0, r1 - str r0, [r2] -_08021DFA: - ldr r2, _08021E28 @ =0x02000000 - ldr r3, _08021E2C @ =0x0001600c - adds r1, r2, r3 -_08021E00: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - b _0802224E - .align 2, 0 -_08021E0C: .4byte gSpecialStatuses -_08021E10: .4byte gBankTarget -_08021E14: .4byte gNoOfAllBanks -_08021E18: .4byte gStatuses3 -_08021E1C: .4byte 0x000400c0 -_08021E20: .4byte gActiveBank -_08021E24: .4byte 0xfffbff3f -_08021E28: .4byte 0x02000000 -_08021E2C: .4byte 0x0001600c -_08021E30: - movs r4, 0 - ldr r0, _08021E60 @ =gNoOfAllBanks - ldrb r5, [r0] - cmp r4, r5 - blt _08021E3C - b _08022244 -_08021E3C: - ldr r2, _08021E64 @ =gDisableStructs - ldr r5, _08021E68 @ =0xfeffffff - adds r3, r0, 0 - ldr r1, _08021E6C @ =gUnknown_02024AD0 -_08021E44: - ldrb r0, [r2, 0xA] - cmp r0, 0 - bne _08021E50 - ldr r0, [r1] - ands r0, r5 - str r0, [r1] -_08021E50: - adds r2, 0x1C - adds r1, 0x58 - adds r4, 0x1 - ldrb r0, [r3] - cmp r4, r0 - blt _08021E44 - b _08022244 - .align 2, 0 -_08021E60: .4byte gNoOfAllBanks -_08021E64: .4byte gDisableStructs -_08021E68: .4byte 0xfeffffff -_08021E6C: .4byte gUnknown_02024AD0 -_08021E70: - ldr r1, _08021F2C @ =gHitMarker - ldr r3, [r1] - movs r0, 0x80 - lsls r0, 5 - ands r0, r3 - ldr r2, _08021F30 @ =gBankAttacker - mov r9, r2 - adds r5, r1, 0 - cmp r0, 0 - beq _08021E9A - ldr r0, _08021F34 @ =gActiveBank - ldrb r2, [r2] - strb r2, [r0] - ldr r1, _08021F38 @ =gBankTarget - ldrb r0, [r1] - mov r4, r9 - strb r0, [r4] - strb r2, [r1] - ldr r0, _08021F3C @ =0xffffefff - ands r3, r0 - str r3, [r5] -_08021E9A: - ldr r1, _08021F40 @ =gBattleMoves - ldr r2, _08021F44 @ =gUnknown_02024BE8 - ldrh r3, [r2] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - mov r8, r1 - adds r7, r2, 0 - cmp r0, 0x7F - bne _08021EBE - ldr r0, _08021F48 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08021ECA -_08021EBE: - ldr r1, _08021F4C @ =gUnknown_02024C2C - mov r2, r9 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - strh r3, [r0] -_08021ECA: - ldr r0, _08021F50 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _08021F54 @ =gBitTable - mov r3, r9 - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r3, [r0] - ands r1, r3 - adds r6, r2, 0 - cmp r1, 0 - beq _08021EE4 - b _08022244 -_08021EE4: - ldr r0, _08021F58 @ =0x000160a6 - add r0, r12 - ldrb r0, [r0] - ands r0, r3 - cmp r0, 0 - beq _08021EF2 - b _08022244 -_08021EF2: - ldrh r2, [r7] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0] - cmp r0, 0x7F - bne _08021F04 - b _08022244 -_08021F04: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _08021F68 - ldr r1, _08021F5C @ =gLastUsedMove - lsls r0, r4, 1 - adds r0, r1 - strh r2, [r0] - ldr r0, _08021F60 @ =gUnknown_02024C4C - mov r4, r9 - ldrb r1, [r4] - lsls r1, 1 - adds r1, r0 - ldr r0, _08021F64 @ =gCurrentMove - ldrh r0, [r0] - strh r0, [r1] - b _08021F82 - .align 2, 0 -_08021F2C: .4byte gHitMarker -_08021F30: .4byte gBankAttacker -_08021F34: .4byte gActiveBank -_08021F38: .4byte gBankTarget -_08021F3C: .4byte 0xffffefff -_08021F40: .4byte gBattleMoves -_08021F44: .4byte gUnknown_02024BE8 -_08021F48: .4byte gBattleMoveFlags -_08021F4C: .4byte gUnknown_02024C2C -_08021F50: .4byte gAbsentBankFlags -_08021F54: .4byte gBitTable -_08021F58: .4byte 0x000160a6 -_08021F5C: .4byte gLastUsedMove -_08021F60: .4byte gUnknown_02024C4C -_08021F64: .4byte gCurrentMove -_08021F68: - ldr r1, _08021FD0 @ =gLastUsedMove - lsls r0, r4, 1 - adds r0, r1 - ldr r1, _08021FD4 @ =0x0000ffff - strh r1, [r0] - ldr r1, _08021FD8 @ =gUnknown_02024C4C - mov r2, r9 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - strh r1, [r0] -_08021F82: - ldr r2, _08021FDC @ =gBankTarget - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r6 - ldr r0, [r0] - lsls r0, 28 - ldr r1, [r5] - ands r1, r0 - cmp r1, 0 - bne _08021FA0 - ldr r0, _08021FE0 @ =gUnknown_02024C5C - adds r0, r3, r0 - mov r3, r9 - ldrb r1, [r3] - strb r1, [r0] -_08021FA0: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0802204C - ldr r0, _08021FE4 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0802204C - ldrh r2, [r7] - ldr r0, _08021FD4 @ =0x0000ffff - cmp r2, r0 - bne _08021FEC - ldr r1, _08021FE8 @ =gMoveHitWith - ldr r4, _08021FDC @ =gBankTarget - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - b _08022244 - .align 2, 0 -_08021FD0: .4byte gLastUsedMove -_08021FD4: .4byte 0x0000ffff -_08021FD8: .4byte gUnknown_02024C4C -_08021FDC: .4byte gBankTarget -_08021FE0: .4byte gUnknown_02024C5C -_08021FE4: .4byte gBattleMoveFlags -_08021FE8: .4byte gMoveHitWith -_08021FEC: - ldr r0, _08022014 @ =gMoveHitWith - ldr r5, _08022018 @ =gBankTarget - ldrb r1, [r5] - lsls r1, 1 - adds r1, r0 - ldr r4, _0802201C @ =gCurrentMove - ldrh r0, [r4] - strh r0, [r1] - ldr r0, _08022020 @ =0x0001601c - add r0, r12 - ldrb r3, [r0] - cmp r3, 0 - beq _08022028 - ldr r0, _08022024 @ =gUnknown_02024C44 - ldrb r1, [r5] - lsls r1, 1 - adds r1, r0 - movs r0, 0x3F - ands r0, r3 - b _08021C22 - .align 2, 0 -_08022014: .4byte gMoveHitWith -_08022018: .4byte gBankTarget -_0802201C: .4byte gCurrentMove -_08022020: .4byte 0x0001601c -_08022024: .4byte gUnknown_02024C44 -_08022028: - ldr r0, _08022044 @ =gUnknown_02024C44 - ldr r1, _08022048 @ =gBankTarget - ldrb r2, [r1] - lsls r2, 1 - adds r2, r0 - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x2] - strh r0, [r2] - b _08022244 - .align 2, 0 -_08022044: .4byte gUnknown_02024C44 -_08022048: .4byte gBankTarget -_0802204C: - ldr r0, _0802205C @ =gMoveHitWith - ldr r2, _08022060 @ =gBankTarget - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldr r0, _08022064 @ =0x0000ffff - b _08021C22 - .align 2, 0 -_0802205C: .4byte gMoveHitWith -_08022060: .4byte gBankTarget -_08022064: .4byte 0x0000ffff -_08022068: - ldr r0, _0802212C @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r6, _08022130 @ =gBitTable - ldr r2, _08022134 @ =gBankAttacker - ldrb r5, [r2] - lsls r0, r5, 2 - adds r0, r6 - ldr r4, [r0] - ands r1, r4 - mov r9, r2 - cmp r1, 0 - beq _08022082 - b _08022244 -_08022082: - ldr r0, _08022138 @ =0x000160a6 - add r0, r12 - ldrb r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _08022090 - b _08022244 -_08022090: - ldr r1, _0802213C @ =gBattleMoves - ldr r4, _08022140 @ =gUnknown_02024BE8 - ldrh r3, [r4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802215C - ldr r0, _08022144 @ =gHitMarker - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _0802215C - ldr r2, _08022148 @ =gBankTarget - ldrb r0, [r2] - cmp r5, r0 - bne _080220C0 - b _08022244 -_080220C0: - adds r2, r0, 0 - lsls r0, r2, 2 - adds r0, r6 - ldr r0, [r0] - lsls r0, 28 - ands r1, r0 - cmp r1, 0 - bne _0802215C - ldr r0, _0802214C @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0802215C - lsls r0, r2, 1 - ldr r5, _08022150 @ =0x000160ac - adds r0, r5 - add r0, r12 - strb r3, [r0] - ldr r0, _08022148 @ =gBankTarget - ldrb r1, [r0] - lsls r1, 1 - ldr r2, _08022154 @ =0x000160ad - adds r1, r2 - add r1, r12 - ldrh r0, [r4] - lsrs r0, 8 - strb r0, [r1] - ldr r3, _08022148 @ =gBankTarget - ldrb r2, [r3] - lsls r2, 2 - mov r5, r9 - ldrb r0, [r5] - lsrs r0, 1 - lsls r0, 1 - ldr r1, _08022158 @ =0x00016100 - adds r0, r1 - adds r2, r0 - add r2, r12 - ldrh r0, [r4] - strb r0, [r2] - ldrb r2, [r3] - lsls r2, 2 - ldrb r0, [r5] - lsrs r0, 1 - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - adds r2, r0 - add r2, r12 - ldrh r0, [r4] - lsrs r0, 8 - strb r0, [r2] - b _08022244 - .align 2, 0 -_0802212C: .4byte gAbsentBankFlags -_08022130: .4byte gBitTable -_08022134: .4byte gBankAttacker -_08022138: .4byte 0x000160a6 -_0802213C: .4byte gBattleMoves -_08022140: .4byte gUnknown_02024BE8 -_08022144: .4byte gHitMarker -_08022148: .4byte gBankTarget -_0802214C: .4byte gBattleMoveFlags -_08022150: .4byte 0x000160ac -_08022154: .4byte 0x000160ad -_08022158: .4byte 0x00016100 -_0802215C: - mov r1, r9 - ldrb r0, [r1] - ldr r2, _080221B4 @ =gBankTarget - ldrb r2, [r2] - cmp r0, r2 - beq _08022244 - ldr r3, _080221B4 @ =gBankTarget - ldrb r0, [r3] - lsls r0, 1 - ldr r4, _080221B8 @ =0x000160ac - adds r0, r4 - add r0, r12 - movs r3, 0 - strb r3, [r0] - ldr r5, _080221B4 @ =gBankTarget - ldrb r0, [r5] - lsls r0, 1 - ldr r1, _080221BC @ =0x000160ad - adds r0, r1 - add r0, r12 - strb r3, [r0] - ldrb r2, [r5] - lsls r2, 2 - mov r4, r9 - ldrb r0, [r4] - lsrs r0, 1 - lsls r0, 1 - adds r1, 0x53 - adds r0, r1 - adds r2, r0 - add r2, r12 - strb r3, [r2] - ldrb r2, [r5] - lsls r2, 2 - ldrb r0, [r4] - lsrs r0, 1 - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - adds r2, r0 - add r2, r12 - strb r3, [r2] - b _08022244 - .align 2, 0 -_080221B4: .4byte gBankTarget -_080221B8: .4byte 0x000160ac -_080221BC: .4byte 0x000160ad -_080221C0: - ldr r5, _080222B0 @ =gHitMarker - ldr r2, [r5] - movs r0, 0x80 - lsls r0, 12 - ands r0, r2 - cmp r0, 0 - bne _08022244 - ldr r0, _080222B4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08022244 - ldr r1, _080222B8 @ =gProtectStructs - ldr r0, _080222BC @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - cmp r0, 0 - blt _08022244 - ldr r0, _080222C0 @ =gBattleMoves - mov r9, r0 - ldr r1, _080222C4 @ =gCurrentMove - mov r8, r1 - ldrh r0, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - add r1, r9 - ldrb r0, [r1, 0x6] - cmp r0, 0x8 - bne _08022244 - movs r6, 0x80 - lsls r6, 2 - adds r4, r6, 0 - ands r4, r2 - cmp r4, 0 - bne _08022244 - ldr r7, _080222C8 @ =gBankTarget - ldrb r0, [r7] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080222CC @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0802223A - bl _08021874 -_0802223A: - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - ldr r2, _080222D0 @ =0x02000000 - mov r12, r2 -_08022244: - ldr r1, _080222D4 @ =0x0001600c - add r1, r12 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0802224E: - ldr r3, [sp, 0x10] - cmp r3, 0x1 - bne _08022262 - mov r4, r10 - cmp r4, 0 - bne _08022262 - ldr r1, _080222D4 @ =0x0001600c - add r1, r12 - movs r0, 0x11 - strb r0, [r1] -_08022262: - ldr r5, [sp, 0x10] - cmp r5, 0x2 - bne _08022278 - ldr r1, _080222D4 @ =0x0001600c - add r1, r12 - ldr r0, [sp, 0x14] - ldrb r2, [r1] - cmp r0, r2 - bne _08022278 - movs r0, 0x11 - strb r0, [r1] -_08022278: - ldr r0, _080222D4 @ =0x0001600c - add r0, r12 - ldrb r0, [r0] - cmp r0, 0x11 - beq _08022286 - bl _080218E4 -_08022286: - ldr r0, _080222D4 @ =0x0001600c - add r0, r12 - ldrb r0, [r0] - cmp r0, 0x11 - bne _0802229E - mov r3, r10 - cmp r3, 0 - bne _0802229E - ldr r1, _080222D8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 -_0802229C: - str r0, [r1] -_0802229E: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080222B0: .4byte gHitMarker -_080222B4: .4byte gBattleTypeFlags -_080222B8: .4byte gProtectStructs -_080222BC: .4byte gBankAttacker -_080222C0: .4byte gBattleMoves -_080222C4: .4byte gCurrentMove -_080222C8: .4byte gBankTarget -_080222CC: .4byte gBattleMons -_080222D0: .4byte 0x02000000 -_080222D4: .4byte 0x0001600c -_080222D8: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80217F8 - - thumb_func_start atk4A_damageflags -atk4A_damageflags: @ 80222DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - movs r5, 0 - ldr r2, _08022340 @ =gBattleMoves - ldr r0, _08022344 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r8, r0 - ldr r2, _08022348 @ =gBattleMons - ldr r3, _0802234C @ =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r12, r2 - adds r7, r3, 0 - cmp r0, 0x1A - bne _08022370 - mov r1, r8 - cmp r1, 0x4 - bne _08022370 - ldr r3, _08022350 @ =gLastUsedAbility - strb r0, [r3] - ldr r2, _08022354 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x9 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08022358 @ =gMoveHitWith - ldrb r0, [r7] - lsls r0, 1 - adds r0, r1 - strh r4, [r0] - ldr r0, _0802235C @ =gBattleCommunication - mov r2, r8 - strb r2, [r0, 0x6] - ldrb r0, [r7] - ldrb r1, [r3] - bl RecordAbilityBattle - b _08022452 - .align 2, 0 -_08022340: .4byte gBattleMoves -_08022344: .4byte gCurrentMove -_08022348: .4byte gBattleMons -_0802234C: .4byte gBankTarget -_08022350: .4byte gLastUsedAbility -_08022354: .4byte gBattleMoveFlags -_08022358: .4byte gMoveHitWith -_0802235C: .4byte gBattleCommunication -_08022360: - ldr r0, _0802236C @ =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] - b _08022452 - .align 2, 0 -_0802236C: .4byte gBattleMoveFlags -_08022370: - ldr r1, _0802237C @ =gTypeEffectiveness - adds r0, r5, r1 - ldrb r0, [r0] - adds r6, r1, 0 - b _08022432 - .align 2, 0 -_0802237C: .4byte gTypeEffectiveness -_08022380: - adds r0, r5, r6 - ldrb r0, [r0] - cmp r0, r8 - bne _0802242C - adds r2, r5, 0x1 - adds r3, r2, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r0, 0x21 - ldrb r1, [r3] - adds r3, r2, 0 - ldrb r0, [r0] - cmp r1, r0 - bne _080223BE - adds r0, r5, 0x2 - adds r0, r6 - ldrb r1, [r0] - cmp r1, 0 - beq _08022360 - cmp r1, 0x5 - bne _080223B2 - movs r0, 0x4 - orrs r4, r0 -_080223B2: - cmp r1, 0x14 - bne _080223BE - movs r0, 0x2 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080223BE: - adds r2, r3, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0802242C - adds r0, 0x21 - ldrb r1, [r0] - cmp r1, r2 - beq _080223E6 - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _08022360 -_080223E6: - cmp r1, r2 - beq _080223FC - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x5 - bne _080223FC - movs r0, 0x4 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080223FC: - adds r2, r3, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0802242C - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0802242C - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x14 - bne _0802242C - movs r0, 0x2 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0802242C: - adds r5, 0x3 - adds r0, r5, r6 - ldrb r0, [r0] -_08022432: - cmp r0, 0xFF - beq _08022452 - cmp r0, 0xFE - bne _08022380 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - mov r1, r12 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0802242C -_08022452: - ldr r2, _08022500 @ =gBattleMons - ldr r0, _08022504 @ =gBankTarget - mov r8, r0 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r6, [r0] - cmp r6, 0x19 - bne _080224CE - movs r5, 0x29 - ands r5, r4 - cmp r5, 0 - bne _080224CE - ldr r0, _08022508 @ =gBankAttacker - ldrb r0, [r0] - ldr r7, _0802250C @ =gCurrentMove - ldrh r1, [r7] - bl move_weather_interaction - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _080224CE - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08022494 - movs r0, 0x6 - ands r4, r0 - cmp r4, 0x6 - bne _080224CE -_08022494: - ldr r2, _08022510 @ =gBattleMoves - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080224CE - ldr r3, _08022514 @ =gLastUsedAbility - strb r6, [r3] - ldr r2, _08022518 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802251C @ =gMoveHitWith - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - strh r5, [r0] - ldr r1, _08022520 @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - ldrb r0, [r2] - ldrb r1, [r3] - bl RecordAbilityBattle -_080224CE: - ldr r0, _08022518 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080224EC - ldr r2, _08022524 @ =gProtectStructs - ldr r0, _08022508 @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 4 - adds r1, r2 - ldrb r0, [r1, 0x1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1, 0x1] -_080224EC: - ldr r1, _08022528 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08022500: .4byte gBattleMons -_08022504: .4byte gBankTarget -_08022508: .4byte gBankAttacker -_0802250C: .4byte gCurrentMove -_08022510: .4byte gBattleMoves -_08022514: .4byte gLastUsedAbility -_08022518: .4byte gBattleMoveFlags -_0802251C: .4byte gMoveHitWith -_08022520: .4byte gBattleCommunication -_08022524: .4byte gProtectStructs -_08022528: .4byte gBattlescriptCurrInstr - thumb_func_end atk4A_damageflags - - thumb_func_start atk4B_cmd4b -atk4B_cmd4b: @ 802252C - push {r4,lr} - ldr r4, _08022568 @ =gActiveBank - ldr r0, _0802256C @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r2, _08022570 @ =gHitMarker - ldr r1, _08022574 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - ands r0, r1 - cmp r0, 0 - bne _0802255A - movs r0, 0 - movs r1, 0 - bl dp01_build_cmdbuf_x06_a - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0802255A: - ldr r1, _08022578 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08022568: .4byte gActiveBank -_0802256C: .4byte gBankAttacker -_08022570: .4byte gHitMarker -_08022574: .4byte gBitTable -_08022578: .4byte gBattlescriptCurrInstr - thumb_func_end atk4B_cmd4b - - thumb_func_start atk4C_switch1 -atk4C_switch1: @ 802257C - push {r4-r6,lr} - ldr r0, _080225D4 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _080225CC - ldr r5, _080225D8 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _080225DC @ =gActiveBank - strb r0, [r4] - ldr r3, _080225E0 @ =gBattlePartyID - ldrb r0, [r4] - lsls r1, r0, 1 - adds r1, r3 - ldr r2, _080225E4 @ =0x02000000 - ldr r6, _080225E8 @ =0x00016068 - adds r0, r6 - adds r0, r2 - ldrb r0, [r0] - strh r0, [r1] - ldr r1, _080225EC @ =gBitTable - ldrb r0, [r4] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0] - movs r0, 0 - movs r1, 0 - bl EmitGetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_080225CC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080225D4: .4byte gBattleExecBuffer -_080225D8: .4byte gBattlescriptCurrInstr -_080225DC: .4byte gActiveBank -_080225E0: .4byte gBattlePartyID -_080225E4: .4byte 0x02000000 -_080225E8: .4byte 0x00016068 -_080225EC: .4byte gBitTable - thumb_func_end atk4C_switch1 - - thumb_func_start sub_80225F0 -sub_80225F0: @ 80225F0 - push {r4-r7,lr} - sub sp, 0x58 - ldr r0, _0802274C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _080225FE - b _08022744 -_080225FE: - ldr r0, _08022750 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _08022754 @ =gActiveBank - strb r0, [r4] - ldr r6, _08022758 @ =gBattleMons - ldrb r0, [r4] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - adds r1, r6 - mov r0, sp - movs r2, 0x58 - bl memcpy - ldrb r0, [r4] - muls r0, r5 - adds r3, r0, r6 - movs r2, 0 - ldr r5, _0802275C @ =gBattleBufferB - adds r7, r4, 0 -_0802262C: - adds r0, r3, r2 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _0802262C - ldr r4, _08022758 @ =gBattleMons - ldrb r0, [r7] - movs r6, 0x58 - adds r2, r0, 0 - muls r2, r6 - adds r2, r4 - ldr r3, _08022760 @ =gBaseStats - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - adds r1, r4 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x7] - adds r1, 0x22 - strb r0, [r1] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - adds r1, r4 - ldrh r0, [r1] - ldrb r1, [r1, 0x17] - lsrs r1, 7 - bl GetAbilityBySpecies - ldrb r1, [r7] - muls r1, r6 - adds r1, r4 - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r7] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08022764 @ =gWishFutureKnock - adds r0, 0x29 - adds r0, r2, r0 - ldrb r1, [r0] - ldr r3, _08022768 @ =gBitTable - ldr r2, _0802276C @ =gBattlePartyID - ldrb r5, [r7] - lsls r0, r5, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - mov r12, r4 - cmp r1, 0 - beq _080226CA - adds r0, r5, 0 - muls r0, r6 - add r0, r12 - movs r1, 0 - strh r1, [r0, 0x2E] -_080226CA: - ldr r2, _08022770 @ =gBattleMoves - ldr r0, _08022774 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x7F - bne _08022710 - movs r2, 0 - adds r4, r7, 0 - movs r6, 0x58 - mov r5, r12 - adds r5, 0x18 - add r3, sp, 0x18 -_080226EA: - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r6 - adds r1, r2, r1 - adds r1, r5 - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x7 - ble _080226EA - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - mov r1, r12 - adds r1, 0x50 - adds r0, r1 - ldr r1, [sp, 0x50] - str r1, [r0] -_08022710: - bl SwitchInClearStructs - ldr r0, _08022778 @ =0x02000000 - ldr r3, _08022754 @ =gActiveBank - ldrb r2, [r3] - ldr r1, _0802277C @ =0x00016003 - adds r0, r1 - strb r2, [r0] - ldr r1, _08022780 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - ldr r2, _0802276C @ =gBattlePartyID - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08022750 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08022744: - add sp, 0x58 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802274C: .4byte gBattleExecBuffer -_08022750: .4byte gBattlescriptCurrInstr -_08022754: .4byte gActiveBank -_08022758: .4byte gBattleMons -_0802275C: .4byte gBattleBufferB -_08022760: .4byte gBaseStats -_08022764: .4byte gWishFutureKnock -_08022768: .4byte gBitTable -_0802276C: .4byte gBattlePartyID -_08022770: .4byte gBattleMoves -_08022774: .4byte gCurrentMove -_08022778: .4byte 0x02000000 -_0802277C: .4byte 0x00016003 -_08022780: .4byte gBattleTextBuff1 - thumb_func_end sub_80225F0 - - thumb_func_start sub_8022784 -sub_8022784: @ 8022784 - push {r4,r5,lr} - ldr r0, _0802280C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08022806 - ldr r0, _08022810 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _08022814 @ =gActiveBank - strb r0, [r4] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080227D0 - ldr r0, _08022818 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0802281C @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _080227D0 - ldr r2, _08022820 @ =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetNationalPokedexFlag -_080227D0: - ldr r2, _08022824 @ =gAbsentBankFlags - ldr r1, _08022828 @ =gBitTable - ldr r5, _08022814 @ =gActiveBank - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldrb r0, [r2] - bics r0, r1 - strb r0, [r2] - ldr r1, _0802282C @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrb r1, [r0] - ldr r4, _08022810 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r2, [r0, 0x2] - movs r0, 0 - bl sub_800C704 - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] -_08022806: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802280C: .4byte gBattleExecBuffer -_08022810: .4byte gBattlescriptCurrInstr -_08022814: .4byte gActiveBank -_08022818: .4byte gBattleTypeFlags -_0802281C: .4byte 0x00000902 -_08022820: .4byte gBattleMons -_08022824: .4byte gAbsentBankFlags -_08022828: .4byte gBitTable -_0802282C: .4byte gBattlePartyID - thumb_func_end sub_8022784 - - thumb_func_start sub_8022830 -sub_8022830: @ 8022830 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _08022894 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - movs r0, 0x7F - ands r0, r1 - bl sub_8015150 - ldr r3, _08022898 @ =gActiveBank - strb r0, [r3] - ldr r2, [r4] - ldrb r1, [r2, 0x1] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080228A8 - ldr r1, _0802289C @ =gBattleMons - ldrb r3, [r3] - movs r0, 0x58 - muls r0, r3 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080228A0 @ =0x0400e000 - ands r0, r1 - cmp r0, 0 - bne _0802287C - ldr r1, _080228A4 @ =gStatuses3 - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _080228A8 -_0802287C: - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _08022A2C - .align 2, 0 -_08022894: .4byte gBattlescriptCurrInstr -_08022898: .4byte gActiveBank -_0802289C: .4byte gBattleMons -_080228A0: .4byte 0x0400e000 -_080228A4: .4byte gStatuses3 -_080228A8: - ldr r5, _08022934 @ =gBattleTypeFlags - ldrh r1, [r5] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08022948 - ldr r4, _08022938 @ =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0802293C @ =gPlayerParty - mov r8, r1 - cmp r0, 0x1 - bne _080228CC - ldr r0, _08022940 @ =gEnemyParty - mov r8, r0 -_080228CC: - movs r5, 0 - ldrb r0, [r4] - bl sub_803FC34 - lsls r0, 24 - lsrs r0, 24 - bl sub_803FBFC - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _080228E6 - movs r5, 0x3 -_080228E6: - adds r6, r5, 0x3 - cmp r5, r6 - bge _0802292E - ldr r7, _08022944 @ =gBattlePartyID -_080228EE: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08022928 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08022928 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08022928 - ldr r0, _08022938 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - cmp r0, r5 - bne _0802292E -_08022928: - adds r5, 0x1 - cmp r5, r6 - blt _080228EE -_0802292E: - cmp r5, r6 - beq _080229FC - b _08022A24 - .align 2, 0 -_08022934: .4byte gBattleTypeFlags -_08022938: .4byte gActiveBank -_0802293C: .4byte gPlayerParty -_08022940: .4byte gEnemyParty -_08022944: .4byte gBattlePartyID -_08022948: - ldr r0, _08022978 @ =gActiveBank - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _08022988 - movs r0, 0x1 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r7, r0, 24 - ldrh r1, [r5] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0802297C - movs r0, 0x3 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r6, r0, 24 - b _0802297E - .align 2, 0 -_08022978: .4byte gActiveBank -_0802297C: - adds r6, r7, 0 -_0802297E: - ldr r0, _08022984 @ =gEnemyParty - mov r8, r0 - b _080229AE - .align 2, 0 -_08022984: .4byte gEnemyParty -_08022988: - movs r0, 0 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r7, r0, 24 - ldrh r1, [r5] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080229A8 - movs r0, 0x2 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r6, r0, 24 - b _080229AA -_080229A8: - adds r6, r7, 0 -_080229AA: - ldr r1, _08022A18 @ =gPlayerParty - mov r8, r1 -_080229AE: - movs r5, 0 -_080229B0: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080229F2 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080229F2 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080229F2 - ldr r1, _08022A1C @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - beq _080229F2 - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - bne _080229F8 -_080229F2: - adds r5, 0x1 - cmp r5, 0x5 - ble _080229B0 -_080229F8: - cmp r5, 0x6 - bne _08022A24 -_080229FC: - ldr r3, _08022A20 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08022A2C - .align 2, 0 -_08022A18: .4byte gPlayerParty -_08022A1C: .4byte gBattlePartyID -_08022A20: .4byte gBattlescriptCurrInstr -_08022A24: - ldr r1, _08022A38 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] -_08022A2C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08022A38: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8022830 - - thumb_func_start sub_8022A3C -sub_8022A3C: @ 8022A3C - push {r4,r5,lr} - sub sp, 0x4 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r4, _08022A84 @ =0x02000000 - ldr r5, _08022A88 @ =gActiveBank - ldrb r0, [r5] - ldr r3, _08022A8C @ =0x00016064 - adds r1, r0, r3 - adds r1, r4 - ldr r3, _08022A90 @ =gBattlePartyID - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1] - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - ldr r1, _08022A94 @ =0x0001606c - adds r4, r1 - adds r0, r4 - str r0, [sp] - movs r0, 0 - movs r1, 0x1 - movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f - ldrb r0, [r5] - bl MarkBufferBankForExecution - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08022A84: .4byte 0x02000000 -_08022A88: .4byte gActiveBank -_08022A8C: .4byte 0x00016064 -_08022A90: .4byte gBattlePartyID -_08022A94: .4byte 0x0001606c - thumb_func_end sub_8022A3C - - thumb_func_start atk50_openpartyscreen -atk50_openpartyscreen: @ 8022A98 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r7, 0 - movs r0, 0 - mov r9, r0 - ldr r6, _08022B44 @ =gBattlescriptCurrInstr - ldr r1, [r6] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - orrs r2, r0 - mov r8, r2 - ldrb r2, [r1, 0x1] - adds r0, r2, 0 - mov r12, r6 - cmp r0, 0x5 - beq _08022ACE - b _08022F74 -_08022ACE: - ldr r0, _08022B48 @ =gBattleTypeFlags - ldrh r0, [r0] - movs r1, 0x41 - ands r1, r0 - cmp r1, 0x1 - beq _08022BBC - ldr r1, _08022B4C @ =gActiveBank - strb r7, [r1] - ldr r0, _08022B50 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r7, r0 - bcc _08022AE8 - b _08022F62 -_08022AE8: - ldr r7, _08022B54 @ =gHitMarker - ldr r6, _08022B58 @ =gBitTable - adds r4, r1, 0 - ldr r0, _08022B5C @ =gAbsentBankFlags - mov r8, r0 -_08022AF2: - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - ands r0, r1 - cmp r0, 0 - beq _08022B94 - adds r0, r2, 0 - movs r1, 0x6 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - beq _08022B60 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - mov r2, r8 - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - bics r0, r1 - str r0, [r7] - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _08022BA2 - .align 2, 0 -_08022B44: .4byte gBattlescriptCurrInstr -_08022B48: .4byte gBattleTypeFlags -_08022B4C: .4byte gActiveBank -_08022B50: .4byte gNoOfAllBanks -_08022B54: .4byte gHitMarker -_08022B58: .4byte gBitTable -_08022B5C: .4byte gAbsentBankFlags -_08022B60: - ldr r5, _08022B90 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08022BA2 - movs r0, 0x6 - bl sub_8022A3C - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _08022BA2 - .align 2, 0 -_08022B90: .4byte gSpecialStatuses -_08022B94: - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08022BA2: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08022BB8 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08022AF2 - b _08022F62 - .align 2, 0 -_08022BB8: .4byte gNoOfAllBanks -_08022BBC: - ands r1, r0 - cmp r1, 0 - bne _08022BC4 - b _08022F62 -_08022BC4: - ldr r0, _08022C1C @ =gHitMarker - mov r8, r0 - ldr r0, [r0] - lsrs r5, r0, 28 - ldr r6, _08022C20 @ =gBitTable - ldr r0, [r6] - ands r0, r5 - cmp r0, 0 - beq _08022C7E - ldr r4, _08022C24 @ =gActiveBank - strb r7, [r4] - movs r0, 0 - movs r1, 0x6 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - beq _08022C2C - ldr r2, _08022C28 @ =gAbsentBankFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - mov r2, r8 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _08022C7E - .align 2, 0 -_08022C1C: .4byte gHitMarker -_08022C20: .4byte gBitTable -_08022C24: .4byte gActiveBank -_08022C28: .4byte gAbsentBankFlags -_08022C2C: - ldr r6, _08022C60 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08022C6C - ldr r0, _08022C64 @ =0x02000000 - ldr r1, _08022C68 @ =0x0001606a - adds r0, r1 - ldrb r0, [r0] - bl sub_8022A3C - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _08022C7E - .align 2, 0 -_08022C60: .4byte gSpecialStatuses -_08022C64: .4byte 0x02000000 -_08022C68: .4byte 0x0001606a -_08022C6C: - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution - movs r2, 0x1 - mov r9, r2 -_08022C7E: - ldr r6, _08022CD8 @ =gBitTable - ldr r0, [r6, 0x8] - ands r0, r5 - cmp r0, 0 - beq _08022D40 - ldr r0, [r6] - ands r0, r5 - cmp r0, 0 - bne _08022D40 - ldr r4, _08022CDC @ =gActiveBank - movs r0, 0x2 - strb r0, [r4] - movs r0, 0x2 - movs r1, 0x6 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - beq _08022CE8 - ldr r2, _08022CE0 @ =gAbsentBankFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _08022CE4 @ =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _08022D40 - .align 2, 0 -_08022CD8: .4byte gBitTable -_08022CDC: .4byte gActiveBank -_08022CE0: .4byte gAbsentBankFlags -_08022CE4: .4byte gHitMarker -_08022CE8: - ldr r6, _08022D1C @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08022D28 - ldr r0, _08022D20 @ =0x02000000 - ldr r1, _08022D24 @ =0x00016068 - adds r0, r1 - ldrb r0, [r0] - bl sub_8022A3C - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _08022D40 - .align 2, 0 -_08022D1C: .4byte gSpecialStatuses -_08022D20: .4byte 0x02000000 -_08022D24: .4byte 0x00016068 -_08022D28: - movs r0, 0x1 - mov r2, r9 - ands r0, r2 - cmp r0, 0 - bne _08022D40 - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08022D40: - ldr r6, _08022D90 @ =gBitTable - ldr r0, [r6, 0x4] - ands r0, r5 - cmp r0, 0 - beq _08022DF6 - ldr r4, _08022D94 @ =gActiveBank - movs r0, 0x1 - strb r0, [r4] - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - beq _08022DA0 - ldr r2, _08022D98 @ =gAbsentBankFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _08022D9C @ =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _08022DF6 - .align 2, 0 -_08022D90: .4byte gBitTable -_08022D94: .4byte gActiveBank -_08022D98: .4byte gAbsentBankFlags -_08022D9C: .4byte gHitMarker -_08022DA0: - ldr r6, _08022DD4 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08022DE0 - ldr r0, _08022DD8 @ =0x02000000 - ldr r1, _08022DDC @ =0x0001606b - adds r0, r1 - ldrb r0, [r0] - bl sub_8022A3C - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _08022DF6 - .align 2, 0 -_08022DD4: .4byte gSpecialStatuses -_08022DD8: .4byte 0x02000000 -_08022DDC: .4byte 0x0001606b -_08022DE0: - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution - movs r0, 0x2 - mov r2, r9 - orrs r2, r0 - mov r9, r2 -_08022DF6: - ldr r6, _08022E50 @ =gBitTable - ldr r0, [r6, 0xC] - ands r0, r5 - cmp r0, 0 - beq _08022EB8 - ldr r0, [r6, 0x4] - ands r0, r5 - cmp r0, 0 - bne _08022EB8 - ldr r4, _08022E54 @ =gActiveBank - movs r0, 0x3 - strb r0, [r4] - movs r0, 0x3 - movs r1, 0x6 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - beq _08022E60 - ldr r2, _08022E58 @ =gAbsentBankFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _08022E5C @ =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _08022EB8 - .align 2, 0 -_08022E50: .4byte gBitTable -_08022E54: .4byte gActiveBank -_08022E58: .4byte gAbsentBankFlags -_08022E5C: .4byte gHitMarker -_08022E60: - ldr r6, _08022E94 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08022EA0 - ldr r0, _08022E98 @ =0x02000000 - ldr r1, _08022E9C @ =0x00016069 - adds r0, r1 - ldrb r0, [r0] - bl sub_8022A3C - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _08022EB8 - .align 2, 0 -_08022E94: .4byte gSpecialStatuses -_08022E98: .4byte 0x02000000 -_08022E9C: .4byte 0x00016069 -_08022EA0: - movs r0, 0x2 - mov r2, r9 - ands r2, r0 - cmp r2, 0 - bne _08022EB8 - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08022EB8: - ldr r1, _08022EE8 @ =gSpecialStatuses - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08022F0C - adds r0, r1, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - blt _08022F0C - cmp r5, 0 - beq _08022F0C - ldr r0, _08022EEC @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r0, _08022EF0 @ =gBitTable - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08022EF8 - ldr r1, _08022EF4 @ =gActiveBank - movs r0, 0x2 - strb r0, [r1] - b _08022EFC - .align 2, 0 -_08022EE8: .4byte gSpecialStatuses -_08022EEC: .4byte gAbsentBankFlags -_08022EF0: .4byte gBitTable -_08022EF4: .4byte gActiveBank -_08022EF8: - ldr r0, _08022F3C @ =gActiveBank - strb r1, [r0] -_08022EFC: - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldr r0, _08022F3C @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution -_08022F0C: - ldr r1, _08022F40 @ =gSpecialStatuses - ldrb r0, [r1, 0x14] - lsls r0, 25 - cmp r0, 0 - blt _08022F62 - adds r0, r1, 0 - adds r0, 0x3C - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - blt _08022F62 - cmp r5, 0 - beq _08022F62 - ldr r0, _08022F44 @ =gAbsentBankFlags - ldrb r0, [r0] - ldr r1, _08022F48 @ =gBitTable - ldr r1, [r1, 0x4] - ands r0, r1 - cmp r0, 0 - beq _08022F4C - ldr r1, _08022F3C @ =gActiveBank - movs r0, 0x3 - b _08022F50 - .align 2, 0 -_08022F3C: .4byte gActiveBank -_08022F40: .4byte gSpecialStatuses -_08022F44: .4byte gAbsentBankFlags -_08022F48: .4byte gBitTable -_08022F4C: - ldr r1, _08022F6C @ =gActiveBank - movs r0, 0x1 -_08022F50: - strb r0, [r1] - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldr r0, _08022F6C @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution -_08022F62: - ldr r1, _08022F70 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - b _08023302 - .align 2, 0 -_08022F6C: .4byte gActiveBank -_08022F70: .4byte gBattlescriptCurrInstr -_08022F74: - cmp r0, 0x6 - beq _08022F7A - b _08023170 -_08022F7A: - ldr r0, _08022FF0 @ =gBattleTypeFlags - ldrh r2, [r0] - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - beq _08022F88 - b _0802310C -_08022F88: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _08022F92 - b _0802310C -_08022F92: - ldr r7, _08022FF4 @ =gHitMarker - ldr r0, [r7] - lsrs r5, r0, 28 - ldr r4, _08022FF8 @ =gBitTable - ldr r0, [r4, 0x8] - ands r0, r5 - cmp r0, 0 - beq _0802303A - ldr r0, [r4] - ands r0, r5 - cmp r0, 0 - beq _0802303A - ldr r6, _08022FFC @ =gActiveBank - movs r0, 0x2 - strb r0, [r6] - ldr r0, _08023000 @ =gBattleBufferB - ldrb r1, [r0, 0x1] - movs r0, 0x2 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - beq _08023008 - ldr r2, _08023004 @ =gAbsentBankFlags - ldrb r0, [r6] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r6] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - bics r0, r1 - str r0, [r7] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r6] - bl MarkBufferBankForExecution - b _0802303A - .align 2, 0 -_08022FF0: .4byte gBattleTypeFlags -_08022FF4: .4byte gHitMarker -_08022FF8: .4byte gBitTable -_08022FFC: .4byte gActiveBank -_08023000: .4byte gBattleBufferB -_08023004: .4byte gAbsentBankFlags -_08023008: - ldr r4, _08023098 @ =gSpecialStatuses - ldrb r0, [r6] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0802303A - ldr r0, _0802309C @ =0x02000000 - ldr r1, _080230A0 @ =0x00016068 - adds r0, r1 - ldrb r0, [r0] - bl sub_8022A3C - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] -_0802303A: - ldr r4, _080230A4 @ =gBitTable - ldr r0, [r4, 0xC] - ands r0, r5 - cmp r0, 0 - beq _080230EE - ldr r0, [r4, 0x4] - ands r5, r0 - cmp r5, 0 - beq _080230EE - ldr r5, _080230A8 @ =gActiveBank - movs r0, 0x3 - strb r0, [r5] - ldr r0, _080230AC @ =gBattleBufferB - ldr r2, _080230B0 @ =0x00000201 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x3 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - beq _080230BC - ldr r2, _080230B4 @ =gAbsentBankFlags - ldrb r0, [r5] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _080230B8 @ =gHitMarker - ldrb r0, [r5] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl dp01_build_cmdbuf_x2A_2A_2A_2A - ldrb r0, [r5] - bl MarkBufferBankForExecution - b _080230EE - .align 2, 0 -_08023098: .4byte gSpecialStatuses -_0802309C: .4byte 0x02000000 -_080230A0: .4byte 0x00016068 -_080230A4: .4byte gBitTable -_080230A8: .4byte gActiveBank -_080230AC: .4byte gBattleBufferB -_080230B0: .4byte 0x00000201 -_080230B4: .4byte gAbsentBankFlags -_080230B8: .4byte gHitMarker -_080230BC: - ldr r4, _080230FC @ =gSpecialStatuses - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _080230EE - ldr r0, _08023100 @ =0x02000000 - ldr r1, _08023104 @ =0x00016069 - adds r0, r1 - ldrb r0, [r0] - bl sub_8022A3C - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] -_080230EE: - ldr r1, _08023108 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - mov r12, r1 - b _08023110 - .align 2, 0 -_080230FC: .4byte gSpecialStatuses -_08023100: .4byte 0x02000000 -_08023104: .4byte 0x00016069 -_08023108: .4byte gBattlescriptCurrInstr -_0802310C: - adds r0, r1, 0x6 - str r0, [r6] -_08023110: - ldr r0, _08023160 @ =gHitMarker - ldr r0, [r0] - lsrs r5, r0, 28 - ldr r1, _08023164 @ =gBank1 - movs r0, 0 - strb r0, [r1] - ldr r4, _08023168 @ =gBitTable - ldr r2, [r4] - ands r2, r5 - ldr r6, _0802316C @ =gNoOfAllBanks - cmp r2, 0 - bne _0802314C - adds r7, r6, 0 - ldrb r0, [r6] - cmp r2, r0 - bcs _0802314C - adds r3, r1, 0 -_08023132: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldrb r2, [r3] - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r5 - cmp r0, 0 - bne _0802314C - ldrb r0, [r7] - cmp r2, r0 - bcc _08023132 -_0802314C: - ldrb r0, [r1] - ldrb r6, [r6] - cmp r0, r6 - beq _08023156 - b _08023302 -_08023156: - mov r1, r8 - mov r2, r12 - str r1, [r2] - b _08023302 - .align 2, 0 -_08023160: .4byte gHitMarker -_08023164: .4byte gBank1 -_08023168: .4byte gBitTable -_0802316C: .4byte gNoOfAllBanks -_08023170: - movs r0, 0x80 - ands r0, r2 - movs r5, 0x1 - cmp r0, 0 - beq _0802317C - movs r5, 0 -_0802317C: - movs r0, 0x7F - ands r0, r2 - bl sub_8015150 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080231A4 @ =gSpecialStatuses - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - bge _080231A8 - ldr r0, [r6] - adds r0, 0x6 - str r0, [r6] - b _08023302 - .align 2, 0 -_080231A4: .4byte gSpecialStatuses -_080231A8: - adds r0, r7, 0 - movs r1, 0x6 - movs r2, 0x6 - bl sub_8018018 - lsls r0, 24 - cmp r0, 0 - beq _080231F8 - ldr r2, _080231E8 @ =gActiveBank - strb r7, [r2] - ldr r3, _080231EC @ =gAbsentBankFlags - ldr r4, _080231F0 @ =gBitTable - ldrb r0, [r2] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r3] - orrs r0, r1 - strb r0, [r3] - ldr r3, _080231F4 @ =gHitMarker - ldrb r0, [r2] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r3] - bics r0, r1 - str r0, [r3] - mov r0, r8 - str r0, [r6] - b _08023302 - .align 2, 0 -_080231E8: .4byte gActiveBank -_080231EC: .4byte gAbsentBankFlags -_080231F0: .4byte gBitTable -_080231F4: .4byte gHitMarker -_080231F8: - ldr r4, _080232A0 @ =gActiveBank - strb r7, [r4] - ldr r3, _080232A4 @ =0x02000000 - ldrb r0, [r4] - ldr r2, _080232A8 @ =0x00016064 - adds r1, r0, r2 - adds r1, r3 - ldr r2, _080232AC @ =gBattlePartyID - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - ldr r1, _080232B0 @ =0x00016068 - adds r0, r1 - adds r0, r3 - ldrb r2, [r0] - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - ldr r1, _080232B4 @ =0x0001606c - adds r3, r1 - adds r0, r3 - str r0, [sp] - movs r0, 0 - adds r1, r5, 0 - movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r6] - adds r0, 0x6 - str r0, [r6] - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - bne _0802325A - ldr r1, _080232B8 @ =gBattleResults - ldrb r0, [r1, 0x2] - cmp r0, 0xFE - bhi _0802325A - adds r0, 0x1 - strb r0, [r1, 0x2] -_0802325A: - ldr r0, _080232BC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080232C4 - ldr r1, _080232A0 @ =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, _080232C0 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _08023302 - adds r4, r1, 0 -_08023276: - ldrb r0, [r4] - cmp r0, r7 - beq _0802328A - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0802328A: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _080232C0 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08023276 - b _08023302 - .align 2, 0 -_080232A0: .4byte gActiveBank -_080232A4: .4byte 0x02000000 -_080232A8: .4byte 0x00016064 -_080232AC: .4byte gBattlePartyID -_080232B0: .4byte 0x00016068 -_080232B4: .4byte 0x0001606c -_080232B8: .4byte gBattleResults -_080232BC: .4byte gBattleTypeFlags -_080232C0: .4byte gNoOfAllBanks -_080232C4: - adds r0, r7, 0 - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - ldr r4, _08023310 @ =gActiveBank - strb r0, [r4] - ldr r0, _08023314 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _08023318 @ =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080232F4 - movs r0, 0x2 - eors r3, r0 - strb r3, [r4] -_080232F4: - movs r0, 0 - movs r1, 0x2 - bl EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08023302: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08023310: .4byte gActiveBank -_08023314: .4byte gAbsentBankFlags -_08023318: .4byte gBitTable - thumb_func_end atk50_openpartyscreen - - thumb_func_start sub_802331C -sub_802331C: @ 802331C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0802334C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0802332C - b _080234FE -_0802332C: - ldr r4, _08023350 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r7, _08023354 @ =gActiveBank - strb r0, [r7] - ldr r0, [r4] - ldrb r0, [r0, 0x2] - cmp r0, 0x1 - beq _080233A0 - cmp r0, 0x1 - bgt _08023358 - cmp r0, 0 - beq _0802335E - b _080234F6 - .align 2, 0 -_0802334C: .4byte gBattleExecBuffer -_08023350: .4byte gBattlescriptCurrInstr -_08023354: .4byte gActiveBank -_08023358: - cmp r0, 0x2 - beq _080233BC - b _080234F6 -_0802335E: - movs r3, 0 - ldr r2, _08023390 @ =gNoOfAllBanks - ldrb r0, [r2] - cmp r3, r0 - blt _0802336A - b _080234F6 -_0802336A: - ldr r0, _08023394 @ =0x02000000 - ldr r1, _08023398 @ =gBattleBufferB - movs r5, 0x80 - lsls r5, 2 - adds r4, r2, 0 - ldr r6, _0802339C @ =0x00016068 - adds r2, r0, r6 -_08023378: - ldrb r0, [r1] - cmp r0, 0x22 - bne _08023382 - ldrb r0, [r1, 0x1] - strb r0, [r2] -_08023382: - adds r1, r5 - adds r2, 0x1 - adds r3, 0x1 - ldrb r0, [r4] - cmp r3, r0 - blt _08023378 - b _080234F6 - .align 2, 0 -_08023390: .4byte gNoOfAllBanks -_08023394: .4byte 0x02000000 -_08023398: .4byte gBattleBufferB -_0802339C: .4byte 0x00016068 -_080233A0: - ldr r0, _080233B8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080233AE - b _080234F6 -_080233AE: - ldrb r0, [r7] - bl sub_8012258 - b _080234F6 - .align 2, 0 -_080233B8: .4byte gBattleTypeFlags -_080233BC: - ldr r1, _08023484 @ =gBattleCommunication - ldr r4, _08023488 @ =gBattleBufferB - ldrb r0, [r7] - lsls r0, 9 - adds r2, r4, 0x1 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r6, _0802348C @ =0x02000000 - ldrb r0, [r7] - ldr r3, _08023490 @ =0x00016068 - adds r1, r0, r3 - adds r1, r6 - lsls r0, 9 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _08023494 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080234A4 - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - ldr r5, _08023498 @ =0x0001606c - adds r1, r5 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r5 - adds r1, r6 - lsls r0, 9 - adds r2, r4, 0x2 - mov r12, r2 - add r0, r12 - ldrb r2, [r0] - movs r3, 0xF0 - adds r0, r3, 0 - ands r0, r2 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - ldr r2, _0802349C @ =0x0001606d - adds r1, r2 - adds r1, r6 - lsls r0, 9 - adds r4, 0x3 - mov r8, r4 - add r0, r8 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r4, 0x2 - eors r0, r4 - lsls r1, r0, 1 - adds r1, r0 - adds r1, r5 - adds r1, r6 - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - eors r0, r4 - lsls r1, r0, 1 - adds r1, r0 - adds r1, r5 - adds r1, r6 - ldrb r0, [r7] - lsls r0, 9 - add r0, r12 - ldrb r0, [r0] - ands r3, r0 - lsrs r3, 4 - ldrb r0, [r1] - orrs r3, r0 - strb r3, [r1] - ldrb r0, [r7] - eors r4, r0 - lsls r1, r4, 1 - adds r1, r4 - ldr r3, _080234A0 @ =0x0001606e - adds r1, r3 - adds r1, r6 - ldrb r0, [r7] - lsls r0, 9 - add r0, r8 - ldrb r0, [r0] - strb r0, [r1] - b _080234AA - .align 2, 0 -_08023484: .4byte gBattleCommunication -_08023488: .4byte gBattleBufferB -_0802348C: .4byte 0x02000000 -_08023490: .4byte 0x00016068 -_08023494: .4byte gBattleTypeFlags -_08023498: .4byte 0x0001606c -_0802349C: .4byte 0x0001606d -_080234A0: .4byte 0x0001606e -_080234A4: - ldrb r0, [r7] - bl sub_8012258 -_080234AA: - ldr r1, _08023508 @ =gBattleTextBuff1 - movs r5, 0xFD - strb r5, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r4, _0802350C @ =gBattleMons - ldr r3, _08023510 @ =gBankAttacker - ldrb r0, [r3] - movs r2, 0x58 - muls r0, r2 - adds r0, r4 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - muls r0, r2 - adds r0, r4 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r2, _08023514 @ =gBattleTextBuff2 - strb r5, [r2] - movs r0, 0x7 - strb r0, [r2, 0x1] - ldr r3, _08023518 @ =gActiveBank - ldrb r0, [r3] - strb r0, [r2, 0x2] - ldr r1, _0802351C @ =gBattleBufferB - ldrb r0, [r3] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r2, 0x4] -_080234F6: - ldr r1, _08023520 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] -_080234FE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08023508: .4byte gBattleTextBuff1 -_0802350C: .4byte gBattleMons -_08023510: .4byte gBankAttacker -_08023514: .4byte gBattleTextBuff2 -_08023518: .4byte gActiveBank -_0802351C: .4byte gBattleBufferB -_08023520: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802331C - - thumb_func_start sub_8023524 -sub_8023524: @ 8023524 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r6, _08023630 @ =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _08023634 @ =gActiveBank - strb r0, [r4] - ldrb r0, [r4] - bl sub_80157C4 - ldr r2, _08023638 @ =gHitMarker - ldr r1, _0802363C @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - ldr r2, _08023640 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r4] - bl GetBankSide - ldr r5, _08023644 @ =gSideAffecting - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 2 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - bne _0802367C - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802367C - ldr r1, _08023648 @ =gBattleMons - mov r9, r1 - ldrb r2, [r4] - movs r7, 0x58 - adds r0, r2, 0 - muls r0, r7 - adds r1, r0, r1 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0802367C - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0802367C - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - beq _0802367C - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r2, [r0] - mov r1, r8 - orrs r1, r2 - strh r1, [r0] - ldrb r0, [r4] - bl GetBankSide - ldr r2, _0802364C @ =gSideTimer - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x6] - movs r1, 0x5 - subs r1, r0 - lsls r1, 25 - lsrs r1, 24 - ldr r5, _08023650 @ =gBattleMoveDamage - ldrb r0, [r4] - muls r0, r7 - add r0, r9 - ldrh r0, [r0, 0x2C] - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _08023614 - movs r0, 0x1 - str r0, [r5] -_08023614: - ldr r0, _08023654 @ =0x02000000 - ldrb r1, [r4] - ldr r2, _08023658 @ =0x00016003 - adds r0, r2 - strb r1, [r0] - bl b_movescr_stack_push_cursor - ldr r0, [r6] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08023660 - ldr r0, _0802365C @ =gUnknown_081D919F - str r0, [r6] - b _080237B6 - .align 2, 0 -_08023630: .4byte gBattlescriptCurrInstr -_08023634: .4byte gActiveBank -_08023638: .4byte gHitMarker -_0802363C: .4byte gBitTable -_08023640: .4byte gSpecialStatuses -_08023644: .4byte gSideAffecting -_08023648: .4byte gBattleMons -_0802364C: .4byte gSideTimer -_08023650: .4byte gBattleMoveDamage -_08023654: .4byte 0x02000000 -_08023658: .4byte 0x00016003 -_0802365C: .4byte gUnknown_081D919F -_08023660: - cmp r0, 0x1 - bne _08023670 - ldr r0, _0802366C @ =gUnknown_081D9171 - str r0, [r6] - b _080237B6 - .align 2, 0 -_0802366C: .4byte gUnknown_081D9171 -_08023670: - ldr r0, _08023678 @ =gUnknown_081D91CD - str r0, [r6] - b _080237B6 - .align 2, 0 -_08023678: .4byte gUnknown_081D91CD -_0802367C: - ldr r1, _08023754 @ =gBattleMons - ldr r5, _08023758 @ =gActiveBank - ldrb r2, [r5] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x36 - bne _080236A2 - ldr r1, _0802375C @ =gDisableStructs - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x18] -_080236A2: - ldrb r1, [r5] - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _080236B8 - b _080237B6 -_080236B8: - ldrb r1, [r5] - movs r0, 0 - movs r2, 0 - bl sub_801A02C - lsls r0, 24 - cmp r0, 0 - bne _080237B6 - ldrb r0, [r5] - bl GetBankSide - ldr r1, _08023760 @ =gSideAffecting - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r2, [r0] - ldr r1, _08023764 @ =0x0000fdff - ands r1, r2 - strh r1, [r0] - movs r4, 0 - ldr r0, _08023768 @ =gNoOfAllBanks - ldrb r3, [r0] - cmp r4, r3 - bge _08023706 - ldr r6, _0802376C @ =gTurnOrder - ldr r3, _08023770 @ =gUnknown_02024A76 - movs r2, 0xC - adds r1, r0, 0 -_080236F0: - adds r0, r4, r6 - ldrb r0, [r0] - ldrb r7, [r5] - cmp r0, r7 - bne _080236FE - adds r0, r4, r3 - strb r2, [r0] -_080236FE: - adds r4, 0x1 - ldrb r0, [r1] - cmp r4, r0 - blt _080236F0 -_08023706: - movs r4, 0 - ldr r0, _08023768 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bge _08023736 - ldr r5, _08023754 @ =gBattleMons -_08023712: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - ldr r1, _08023774 @ =0x020160bc - adds r0, r1 - movs r1, 0x58 - muls r1, r4 - adds r1, r5 - ldrh r1, [r1, 0x28] - strh r1, [r0] - adds r4, 0x1 - ldr r0, _08023768 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _08023712 -_08023736: - ldr r0, _08023778 @ =gBattlescriptCurrInstr - ldr r1, [r0] - ldrb r1, [r1, 0x1] - adds r5, r0, 0 - cmp r1, 0x5 - bne _080237B0 - ldr r0, _0802377C @ =gHitMarker - ldr r0, [r0] - lsrs r4, r0, 28 - ldr r1, _08023780 @ =gBank1 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r2, _08023784 @ =gBitTable - b _08023796 - .align 2, 0 -_08023754: .4byte gBattleMons -_08023758: .4byte gActiveBank -_0802375C: .4byte gDisableStructs -_08023760: .4byte gSideAffecting -_08023764: .4byte 0x0000fdff -_08023768: .4byte gNoOfAllBanks -_0802376C: .4byte gTurnOrder -_08023770: .4byte gUnknown_02024A76 -_08023774: .4byte 0x020160bc -_08023778: .4byte gBattlescriptCurrInstr -_0802377C: .4byte gHitMarker -_08023780: .4byte gBank1 -_08023784: .4byte gBitTable -_08023788: - ldr r0, _080237C4 @ =gNoOfAllBanks - ldrb r3, [r1] - ldrb r0, [r0] - cmp r3, r0 - bcs _080237B0 - adds r0, r3, 0x1 - strb r0, [r1] -_08023796: - ldrb r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r3, [r0] - adds r0, r4, 0 - ands r0, r3 - cmp r0, 0 - beq _08023788 - ldr r0, _080237C8 @ =gAbsentBankFlags - ldrb r0, [r0] - ands r0, r3 - cmp r0, 0 - bne _08023788 -_080237B0: - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_080237B6: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080237C4: .4byte gNoOfAllBanks -_080237C8: .4byte gAbsentBankFlags - thumb_func_end sub_8023524 - - thumb_func_start sub_80237CC -sub_80237CC: @ 80237CC - push {lr} - ldr r0, _080237DC @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _080237E0 - movs r0, 0 - b _080237E2 - .align 2, 0 -_080237DC: .4byte gBattlescriptCurrInstr -_080237E0: - movs r0, 0x1 -_080237E2: - bl GetBankByPlayerAI - ldr r1, _08023804 @ =gActiveBank - strb r0, [r1] - movs r0, 0 - bl dp01_build_cmdbuf_x08_8_8_8 - ldr r0, _08023804 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08023808 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08023804: .4byte gActiveBank -_08023808: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80237CC - - thumb_func_start atk54_802511C -atk54_802511C: @ 802380C - push {r4,r5,lr} - ldr r5, _0802383C @ =gActiveBank - ldr r0, _08023840 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, _08023844 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - bl EmitEffectivenessSound - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802383C: .4byte gActiveBank -_08023840: .4byte gBankAttacker -_08023844: .4byte gBattlescriptCurrInstr - thumb_func_end atk54_802511C - - thumb_func_start sub_8023848 -sub_8023848: @ 8023848 - push {r4,r5,lr} - ldr r5, _08023878 @ =gActiveBank - ldr r0, _0802387C @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, _08023880 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - bl sub_800D074 - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08023878: .4byte gActiveBank -_0802387C: .4byte gBankAttacker -_08023880: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8023848 - - thumb_func_start atk56_8025194 -atk56_8025194: @ 8023884 - push {r4,r5,lr} - ldr r5, _080238AC @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _080238B0 @ =gActiveBank - strb r0, [r4] - movs r0, 0 - bl EmitFaintingCry - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080238AC: .4byte gBattlescriptCurrInstr -_080238B0: .4byte gActiveBank - thumb_func_end atk56_8025194 - - thumb_func_start atk57_80251C4_flee -atk57_80251C4_flee: @ 80238B4 - push {r4,lr} - movs r0, 0 - bl GetBankByPlayerAI - ldr r4, _080238E0 @ =gActiveBank - strb r0, [r4] - ldr r0, _080238E4 @ =gBattleOutcome - ldrb r1, [r0] - movs r0, 0 - bl dp01_build_cmdbuf_x37_a - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _080238E8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080238E0: .4byte gActiveBank -_080238E4: .4byte gBattleOutcome -_080238E8: .4byte gBattlescriptCurrInstr - thumb_func_end atk57_80251C4_flee - - thumb_func_start atk58_cmd58 -atk58_cmd58: @ 80238EC - push {r4,r5,lr} - ldr r5, _08023918 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _0802391C @ =gActiveBank - strb r0, [r4] - movs r0, 0 - movs r1, 0x1 - bl dp01_build_cmdbuf_x06_a - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08023918: .4byte gBattlescriptCurrInstr -_0802391C: .4byte gActiveBank - thumb_func_end atk58_cmd58 - - thumb_func_start atk59_8025230 -atk59_8025230: @ 8023920 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0802399C @ =gBattlescriptCurrInstr - ldr r2, [r0] - ldrb r6, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r6, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r6, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r6, r0 - ldrb r4, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - orrs r4, r0 - ldr r0, _080239A0 @ =0x02000000 - ldr r1, _080239A4 @ =0x00016018 - adds r7, r0, r1 - ldrb r1, [r7] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080239A8 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r2, 0x9] - bl sub_803B7C8 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _080239AC @ =0x0000fffe - cmp r5, r0 - bne _08023992 - mov r9, r7 - mov r8, r5 - movs r7, 0x64 -_0802397A: - mov r3, r9 - ldrb r0, [r3] - muls r0, r7 - ldr r1, _080239A8 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - bl sub_803B7C8 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r8 - beq _0802397A -_08023992: - cmp r5, 0 - bne _080239B0 - ldr r0, _0802399C @ =gBattlescriptCurrInstr - str r4, [r0] - b _08023A58 - .align 2, 0 -_0802399C: .4byte gBattlescriptCurrInstr -_080239A0: .4byte 0x02000000 -_080239A4: .4byte 0x00016018 -_080239A8: .4byte gPlayerParty -_080239AC: .4byte 0x0000fffe -_080239B0: - ldr r0, _080239C0 @ =0x0000ffff - cmp r5, r0 - bne _080239C8 - ldr r1, _080239C4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] - b _08023A58 - .align 2, 0 -_080239C0: .4byte 0x0000ffff -_080239C4: .4byte gBattlescriptCurrInstr -_080239C8: - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, _08023A64 @ =gActiveBank - strb r0, [r1] - ldr r0, _08023A68 @ =gBattlePartyID - ldrb r2, [r1] - lsls r1, r2, 1 - adds r1, r0 - ldr r0, _08023A6C @ =0x02000000 - ldr r3, _08023A70 @ =0x00016018 - adds r0, r3 - ldrh r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bne _08023A08 - ldr r3, _08023A74 @ =gBattleMons - movs r0, 0x58 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08023A08 - adds r0, r2, r3 - adds r1, r5, 0 - bl GiveMoveToBattleMon -_08023A08: - ldr r0, _08023A78 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08023A54 - movs r0, 0x2 - bl GetBankByPlayerAI - ldr r1, _08023A64 @ =gActiveBank - strb r0, [r1] - ldr r0, _08023A68 @ =gBattlePartyID - ldrb r2, [r1] - lsls r1, r2, 1 - adds r1, r0 - ldr r0, _08023A6C @ =0x02000000 - ldr r3, _08023A70 @ =0x00016018 - adds r0, r3 - ldrh r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bne _08023A54 - ldr r3, _08023A74 @ =gBattleMons - movs r0, 0x58 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08023A54 - adds r0, r2, r3 - adds r1, r5, 0 - bl GiveMoveToBattleMon -_08023A54: - ldr r0, _08023A7C @ =gBattlescriptCurrInstr - str r6, [r0] -_08023A58: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08023A64: .4byte gActiveBank -_08023A68: .4byte gBattlePartyID -_08023A6C: .4byte 0x02000000 -_08023A70: .4byte 0x00016018 -_08023A74: .4byte gBattleMons -_08023A78: .4byte gBattleTypeFlags -_08023A7C: .4byte gBattlescriptCurrInstr - thumb_func_end atk59_8025230 - - thumb_func_start sub_8023A80 -sub_8023A80: @ 8023A80 - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_802BBD4 - ldr r4, _08023AC8 @ =gUnknown_03004210 - ldr r1, _08023ACC @ =gUnknown_08400D7A - movs r2, 0x80 - lsls r2, 1 - movs r0, 0x9 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x19 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - ldr r1, _08023AD0 @ =0x0000ffff - ldr r3, _08023AD4 @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08023AC8: .4byte gUnknown_03004210 -_08023ACC: .4byte gUnknown_08400D7A -_08023AD0: .4byte 0x0000ffff -_08023AD4: .4byte 0x00002d9f - thumb_func_end sub_8023A80 - - thumb_func_start sub_8023AD8 -sub_8023AD8: @ 8023AD8 - push {lr} - sub sp, 0x4 - movs r0, 0x1 - str r0, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_802BBD4 - bl DestroyMenuCursor - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8023AD8 - - thumb_func_start sub_8023AF8 -sub_8023AF8: @ 8023AF8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r1, _08023B24 @ =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r1, _08023B28 @ =0x02000000 - ldr r2, _08023B2C @ =0x0001601a - adds r0, r1, r2 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x5 - bls _08023B18 - b _08023E5C -_08023B18: - lsls r0, 2 - ldr r1, _08023B30 @ =_08023B34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08023B24: .4byte gActiveBank -_08023B28: .4byte 0x02000000 -_08023B2C: .4byte 0x0001601a -_08023B30: .4byte _08023B34 - .align 2, 0 -_08023B34: - .4byte _08023B4C - .4byte _08023B74 - .4byte _08023C30 - .4byte _08023C84 - .4byte _08023E38 - .4byte _08023E4C -_08023B4C: - bl sub_8023A80 - ldr r1, _08023B68 @ =0x02000000 - ldr r0, _08023B6C @ =0x0001601a - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _08023B70 @ =gBattleCommunication - strb r2, [r0, 0x1] - bl sub_802BC6C - b _08023E5C - .align 2, 0 -_08023B68: .4byte 0x02000000 -_08023B6C: .4byte 0x0001601a -_08023B70: .4byte gBattleCommunication -_08023B74: - ldr r0, _08023BFC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08023B9A - ldr r4, _08023C00 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08023B9A - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08023B9A: - ldr r0, _08023BFC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08023BC0 - ldr r4, _08023C00 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08023BC0 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08023BC0: - ldr r0, _08023BFC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08023C0C - movs r0, 0x5 - bl PlaySE - ldr r0, _08023C00 @ =gBattleCommunication - ldrb r4, [r0, 0x1] - cmp r4, 0 - bne _08023C1C - bl sub_8023AD8 - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08023C04 @ =0x02000000 - ldr r2, _08023C08 @ =0x0001601a - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - b _08023E5A - .align 2, 0 -_08023BFC: .4byte gMain -_08023C00: .4byte gBattleCommunication -_08023C04: .4byte 0x02000000 -_08023C08: .4byte 0x0001601a -_08023C0C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08023C16 - b _08023E5C -_08023C16: - movs r0, 0x5 - bl PlaySE -_08023C1C: - ldr r0, _08023C28 @ =0x02000000 - ldr r1, _08023C2C @ =0x0001601a - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - b _08023E5C - .align 2, 0 -_08023C28: .4byte 0x02000000 -_08023C2C: .4byte 0x0001601a -_08023C30: - ldr r0, _08023C68 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08023C3E - b _08023E5C -_08023C3E: - ldr r0, _08023C6C @ =gPlayerParty - ldr r2, _08023C70 @ =0x00016018 - adds r1, r5, r2 - ldrb r1, [r1] - ldr r2, _08023C74 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08023C78 @ =ReshowBattleScreenAfterMenu - ldr r4, _08023C7C @ =word_2024E82 - ldrh r4, [r4] - str r4, [sp] - bl sub_809D9F0 - ldr r0, _08023C80 @ =0x0001601a - adds r1, r5, r0 - ldrb r0, [r1] - adds r0, 0x1 - b _08023E5A - .align 2, 0 -_08023C68: .4byte gPaletteFade -_08023C6C: .4byte gPlayerParty -_08023C70: .4byte 0x00016018 -_08023C74: .4byte gPlayerPartyCount -_08023C78: .4byte ReshowBattleScreenAfterMenu -_08023C7C: .4byte word_2024E82 -_08023C80: .4byte 0x0001601a -_08023C84: - ldr r0, _08023CB4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08023C92 - b _08023E5C -_08023C92: - ldr r0, _08023CB8 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _08023CBC @ =sub_800F808 - cmp r1, r0 - beq _08023C9E - b _08023E5C -_08023C9E: - bl sub_809FA30 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bne _08023CC8 - ldr r0, _08023CC0 @ =0x02000000 - ldr r1, _08023CC4 @ =0x0001601a - adds r0, r1 - strb r5, [r0] - b _08023E5C - .align 2, 0 -_08023CB4: .4byte gPaletteFade -_08023CB8: .4byte gMain -_08023CBC: .4byte sub_800F808 -_08023CC0: .4byte 0x02000000 -_08023CC4: .4byte 0x0001601a -_08023CC8: - ldr r2, _08023D08 @ =0x02000000 - mov r9, r2 - ldr r6, _08023D0C @ =0x00016018 - add r6, r9 - ldrb r0, [r6] - movs r1, 0x64 - mov r8, r1 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldr r7, _08023D10 @ =gPlayerParty - adds r0, r7 - adds r1, r5, 0 - adds r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl IsHMMove2 - cmp r0, 0 - beq _08023D20 - ldr r0, _08023D14 @ =0x0000013f - ldr r1, _08023D18 @ =gActiveBank - ldrb r1, [r1] - bl PrepareStringBattle - ldr r1, _08023D1C @ =0x0001601a - add r1, r9 - movs r0, 0x5 - b _08023E5A - .align 2, 0 -_08023D08: .4byte 0x02000000 -_08023D0C: .4byte 0x00016018 -_08023D10: .4byte gPlayerParty -_08023D14: .4byte 0x0000013f -_08023D18: .4byte gActiveBank -_08023D1C: .4byte 0x0001601a -_08023D20: - ldr r3, _08023E10 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - ldr r1, _08023E14 @ =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - adds r1, r5, 0 - bl RemoveMonPPBonus - ldrb r0, [r6] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - ldr r7, _08023E18 @ =word_2024E82 - ldrh r1, [r7] - adds r2, r5, 0 - bl SetMonMoveSlot - ldr r0, _08023E1C @ =gBattlePartyID - ldrh r0, [r0] - ldrb r6, [r6] - cmp r0, r6 - bne _08023DB0 - ldr r4, _08023E20 @ =gBattleMons - ldr r0, [r4, 0x50] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08023DB0 - ldr r0, _08023E24 @ =gDisableStructs - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _08023E28 @ =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08023DB0 - adds r0, r4, 0 - adds r1, r5, 0 - bl RemoveBattleMonPPBonus - ldrh r1, [r7] - adds r0, r4, 0 - adds r2, r5, 0 - bl SetBattleMonMoveSlot -_08023DB0: - ldr r0, _08023E2C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08023E5C - ldr r0, _08023E1C @ =gBattlePartyID - ldr r1, _08023E30 @ =0x02000000 - ldr r2, _08023E34 @ =0x00016018 - adds r1, r2 - ldrh r0, [r0, 0x4] - ldrb r1, [r1] - cmp r0, r1 - bne _08023E5C - ldr r4, _08023E20 @ =gBattleMons - movs r1, 0x80 - lsls r1, 1 - adds r0, r4, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08023E5C - ldr r0, _08023E24 @ =gDisableStructs - adds r0, 0x50 - ldrb r1, [r0] - lsrs r1, 4 - ldr r2, _08023E28 @ =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08023E5C - adds r4, 0xB0 - adds r0, r4, 0 - adds r1, r5, 0 - bl RemoveBattleMonPPBonus - ldr r0, _08023E18 @ =word_2024E82 - ldrh r1, [r0] - adds r0, r4, 0 - adds r2, r5, 0 - bl SetBattleMonMoveSlot - b _08023E5C - .align 2, 0 -_08023E10: .4byte gBattlescriptCurrInstr -_08023E14: .4byte gBattleTextBuff2 -_08023E18: .4byte word_2024E82 -_08023E1C: .4byte gBattlePartyID -_08023E20: .4byte gBattleMons -_08023E24: .4byte gDisableStructs -_08023E28: .4byte gBitTable -_08023E2C: .4byte gBattleTypeFlags -_08023E30: .4byte 0x02000000 -_08023E34: .4byte 0x00016018 -_08023E38: - bl sub_8023AD8 - ldr r1, _08023E48 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08023E5C - .align 2, 0 -_08023E48: .4byte gBattlescriptCurrInstr -_08023E4C: - ldr r0, _08023E6C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08023E5C - ldr r2, _08023E70 @ =0x0001601a - adds r1, r5, r2 - movs r0, 0x2 -_08023E5A: - strb r0, [r1] -_08023E5C: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08023E6C: .4byte gBattleExecBuffer -_08023E70: .4byte 0x0001601a - thumb_func_end sub_8023AF8 - - thumb_func_start atk5B_80256E0 -atk5B_80256E0: @ 8023E74 - push {r4,r5,lr} - ldr r0, _08023E88 @ =0x02000000 - ldr r1, _08023E8C @ =0x0001601a - adds r5, r0, r1 - ldrb r4, [r5] - cmp r4, 0 - beq _08023E90 - cmp r4, 0x1 - beq _08023EA8 - b _08023F78 - .align 2, 0 -_08023E88: .4byte 0x02000000 -_08023E8C: .4byte 0x0001601a -_08023E90: - bl sub_8023A80 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r0, _08023EA4 @ =gBattleCommunication - strb r4, [r0, 0x1] - bl sub_802BC6C - b _08023F78 - .align 2, 0 -_08023EA4: .4byte gBattleCommunication -_08023EA8: - ldr r0, _08023F2C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08023ECE - ldr r4, _08023F30 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08023ECE - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08023ECE: - ldr r0, _08023F2C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08023EF4 - ldr r4, _08023F30 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08023EF4 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08023EF4: - ldr r0, _08023F2C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08023F4C - movs r0, 0x5 - bl PlaySE - ldr r0, _08023F30 @ =gBattleCommunication - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _08023F38 - ldr r3, _08023F34 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08023F40 - .align 2, 0 -_08023F2C: .4byte gMain -_08023F30: .4byte gBattleCommunication -_08023F34: .4byte gBattlescriptCurrInstr -_08023F38: - ldr r1, _08023F48 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08023F40: - bl sub_8023AD8 - b _08023F78 - .align 2, 0 -_08023F48: .4byte gBattlescriptCurrInstr -_08023F4C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08023F78 - movs r0, 0x5 - bl PlaySE - ldr r3, _08023F80 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - bl sub_8023AD8 -_08023F78: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08023F80: .4byte gBattlescriptCurrInstr - thumb_func_end atk5B_80256E0 - - thumb_func_start atk5C_cmd5c -atk5C_cmd5c: @ 8023F84 - push {r4,lr} - ldr r4, _08023FF0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r2, _08023FF4 @ =gActiveBank - strb r0, [r2] - ldr r0, _08023FF8 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08024008 - ldr r0, _08023FFC @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - beq _08023FD6 - ldr r1, _08024000 @ =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _08023FD6 - ldr r0, _08024004 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _08024008 -_08023FD6: - movs r0, 0 - bl EmitHitAnimation - ldr r0, _08023FF4 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08023FF0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - b _0802400E - .align 2, 0 -_08023FF0: .4byte gBattlescriptCurrInstr -_08023FF4: .4byte gActiveBank -_08023FF8: .4byte gBattleMoveFlags -_08023FFC: .4byte gHitMarker -_08024000: .4byte gBattleMons -_08024004: .4byte gDisableStructs -_08024008: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] -_0802400E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk5C_cmd5c - - thumb_func_start sub_8024014 -sub_8024014: @ 8024014 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - movs r5, 0 - ldr r0, _08024048 @ =gTrainerBattleOpponent - ldrh r2, [r0] - movs r1, 0x80 - lsls r1, 3 - cmp r2, r1 - bne _08024058 - ldr r0, _0802404C @ =0x02017000 - adds r1, r0, 0 - adds r1, 0x94 - ldrb r2, [r1] - ldr r1, _08024050 @ =0xfffff056 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r4, r2, 0 - muls r4, r0 - ldr r0, _08024054 @ =gSaveBlock1 + 0x490 - mov r8, r0 - b _08024140 - .align 2, 0 -_08024048: .4byte gTrainerBattleOpponent -_0802404C: .4byte 0x02017000 -_08024050: .4byte 0xfffff056 -_08024054: .4byte gSaveBlock1 + 0x490 -_08024058: - ldr r2, _08024074 @ =gTrainers - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r3, r0, 3 - adds r4, r3, r2 - ldrb r1, [r4] - cmp r1, 0x1 - beq _080240AE - cmp r1, 0x1 - bgt _08024078 - cmp r1, 0 - beq _08024082 - b _080240C4 - .align 2, 0 -_08024074: .4byte gTrainers -_08024078: - cmp r1, 0x2 - beq _08024098 - cmp r1, 0x3 - beq _080240AE - b _080240C4 -_08024082: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r3, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r1 - subs r0, 0x8 - b _080240C2 -_08024098: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r3, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r1 - subs r0, 0x8 - b _080240C2 -_080240AE: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r3, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - subs r0, 0x10 -_080240C2: - ldrb r5, [r0, 0x2] -_080240C4: - ldr r0, _08024120 @ =gTrainerMoney - lsls r1, r6, 2 - adds r3, r1, r0 - ldrb r1, [r3] - mov r12, r0 - lsls r4, r5, 2 - ldr r5, _08024124 @ =0x02000000 - ldr r7, _08024128 @ =gBattleTypeFlags - ldr r0, _0802412C @ =gSaveBlock1 + 0x490 - mov r8, r0 - cmp r1, 0xFF - beq _080240FE - ldr r2, _08024130 @ =gTrainers - ldr r0, _08024134 @ =gTrainerBattleOpponent - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r2, [r0, 0x1] - adds r1, r3, 0 -_080240EE: - ldrb r0, [r1] - cmp r0, r2 - beq _080240FE - adds r1, 0x4 - adds r6, 0x1 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080240EE -_080240FE: - ldr r1, _08024138 @ =0x00016056 - adds r0, r5, r1 - ldrb r0, [r0] - adds r3, r4, 0 - muls r3, r0 - lsls r0, r6, 2 - add r0, r12 - ldrb r2, [r0, 0x1] - ldrh r1, [r7] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802413C - lsls r0, r2, 1 - adds r4, r3, 0 - muls r4, r0 - b _08024140 - .align 2, 0 -_08024120: .4byte gTrainerMoney -_08024124: .4byte 0x02000000 -_08024128: .4byte gBattleTypeFlags -_0802412C: .4byte gSaveBlock1 + 0x490 -_08024130: .4byte gTrainers -_08024134: .4byte gTrainerBattleOpponent -_08024138: .4byte 0x00016056 -_0802413C: - adds r4, r3, 0 - muls r4, r2 -_08024140: - mov r0, r8 - adds r1, r4, 0 - bl sub_80B79B8 - ldr r1, _0802418C @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - movs r0, 0x4 - strb r0, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - strb r4, [r1, 0x4] - movs r0, 0xFF - lsls r0, 8 - ands r0, r4 - lsrs r0, 8 - strb r0, [r1, 0x5] - movs r0, 0xFF - lsls r0, 16 - ands r0, r4 - lsrs r0, 16 - strb r0, [r1, 0x6] - lsrs r0, r4, 24 - strb r0, [r1, 0x7] - movs r0, 0xFF - strb r0, [r1, 0x8] - ldr r1, _08024190 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802418C: .4byte gBattleTextBuff1 -_08024190: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8024014 - - thumb_func_start atk5E_8025A70 -atk5E_8025A70: @ 8024194 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _080241B8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r6, _080241BC @ =gActiveBank - strb r0, [r6] - ldr r5, _080241C0 @ =gBattleCommunication - ldrb r0, [r5] - mov r8, r4 - cmp r0, 0 - beq _080241C4 - cmp r0, 0x1 - beq _080241DC - b _08024230 - .align 2, 0 -_080241B8: .4byte gBattlescriptCurrInstr -_080241BC: .4byte gActiveBank -_080241C0: .4byte gBattleCommunication -_080241C4: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl EmitGetAttributes - ldrb r0, [r6] - bl MarkBufferBankForExecution - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08024230 -_080241DC: - ldr r0, _0802423C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08024230 - ldrb r0, [r6] - lsls r0, 9 - ldr r1, _08024240 @ =gUnknown_02024264 - adds r0, r1 - mov r12, r0 - movs r2, 0 - adds r4, r6, 0 - movs r5, 0x58 - ldr r6, _08024244 @ =gUnknown_02024AA4 - adds r7, r6, 0 - subs r7, 0x18 - mov r3, r12 - adds r3, 0xC -_080241FE: - lsls r1, r2, 1 - ldrb r0, [r4] - muls r0, r5 - adds r1, r0 - adds r1, r7 - ldrh r0, [r3] - strh r0, [r1] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r1, r2, r1 - adds r1, r6 - mov r0, r12 - adds r0, 0x24 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _080241FE - mov r1, r8 - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08024230: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802423C: .4byte gBattleExecBuffer -_08024240: .4byte gUnknown_02024264 -_08024244: .4byte gUnknown_02024AA4 - thumb_func_end atk5E_8025A70 - - thumb_func_start atk5F_8025B24 -atk5F_8025B24: @ 8024248 - push {lr} - ldr r0, _08024270 @ =gActiveBank - ldr r2, _08024274 @ =gBankAttacker - ldrb r3, [r2] - strb r3, [r0] - ldr r1, _08024278 @ =gBankTarget - ldrb r0, [r1] - strb r0, [r2] - strb r3, [r1] - ldr r2, _0802427C @ =gHitMarker - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 5 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _08024284 - ldr r0, _08024280 @ =0xffffefff - ands r1, r0 - b _08024286 - .align 2, 0 -_08024270: .4byte gActiveBank -_08024274: .4byte gBankAttacker -_08024278: .4byte gBankTarget -_0802427C: .4byte gHitMarker -_08024280: .4byte 0xffffefff -_08024284: - orrs r1, r3 -_08024286: - str r1, [r2] - ldr r1, _08024294 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08024294: .4byte gBattlescriptCurrInstr - thumb_func_end atk5F_8025B24 - - thumb_func_start atk60_cmd60 -atk60_cmd60: @ 8024298 - push {lr} - ldr r0, _080242C0 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080242B2 - ldr r0, _080242C4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl IncrementGameStat -_080242B2: - ldr r1, _080242C4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080242C0: .4byte gBankAttacker -_080242C4: .4byte gBattlescriptCurrInstr - thumb_func_end atk60_cmd60 - - thumb_func_start atk61_8025BA4 -atk61_8025BA4: @ 80242C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - ldr r0, _0802432C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0802437C - ldr r0, _08024330 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r1, _08024334 @ =gActiveBank - strb r0, [r1] - ldrb r0, [r1] - bl GetBankSide - lsls r0, 24 - ldr r1, _08024338 @ =gEnemyParty - mov r8, r1 - cmp r0, 0 - bne _080242FA - ldr r0, _0802433C @ =gPlayerParty - mov r8, r0 -_080242FA: - movs r7, 0 - add r6, sp, 0x4 - mov r5, sp -_08024300: - movs r0, 0x64 - muls r0, r7 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08024324 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _08024344 -_08024324: - ldr r0, _08024340 @ =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _08024356 - .align 2, 0 -_0802432C: .4byte gBattleExecBuffer -_08024330: .4byte gBattlescriptCurrInstr -_08024334: .4byte gActiveBank -_08024338: .4byte gEnemyParty -_0802433C: .4byte gPlayerParty -_08024340: .4byte 0x0000ffff -_08024344: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_08024356: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _08024300 - movs r0, 0 - mov r1, sp - movs r2, 0x1 - bl dp01_build_cmdbuf_x30_TODO - ldr r0, _08024388 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _0802438C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0802437C: - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08024388: .4byte gActiveBank -_0802438C: .4byte gBattlescriptCurrInstr - thumb_func_end atk61_8025BA4 - - thumb_func_start atk62_08025C6C -atk62_08025C6C: @ 8024390 - push {r4,r5,lr} - ldr r5, _080243B8 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _080243BC @ =gActiveBank - strb r0, [r4] - movs r0, 0 - bl dp01_build_cmdbuf_x31_31_31_31 - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080243B8: .4byte gBattlescriptCurrInstr -_080243BC: .4byte gActiveBank - thumb_func_end atk62_08025C6C - - thumb_func_start atk63_jumptoattack -atk63_jumptoattack: @ 80243C0 - push {r4,lr} - ldr r0, _080243D8 @ =gBattlescriptCurrInstr - ldr r1, [r0] - ldrb r1, [r1, 0x1] - adds r4, r0, 0 - cmp r1, 0 - beq _080243E4 - ldr r0, _080243DC @ =gCurrentMove - ldr r1, _080243E0 @ =gUnknown_02024BEA - ldrh r1, [r1] - strh r1, [r0] - b _080243F2 - .align 2, 0 -_080243D8: .4byte gBattlescriptCurrInstr -_080243DC: .4byte gCurrentMove -_080243E0: .4byte gUnknown_02024BEA -_080243E4: - ldr r2, _08024410 @ =gUnknown_02024BE8 - ldr r1, _08024414 @ =gCurrentMove - ldr r0, _08024418 @ =gUnknown_02024BEA - ldrh r0, [r0] - strh r0, [r1] - strh r0, [r2] - adds r0, r1, 0 -_080243F2: - ldr r3, _0802441C @ =gUnknown_081D6BBC - ldr r2, _08024420 @ =gBattleMoves - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08024410: .4byte gUnknown_02024BE8 -_08024414: .4byte gCurrentMove -_08024418: .4byte gUnknown_02024BEA -_0802441C: .4byte gUnknown_081D6BBC -_08024420: .4byte gBattleMoves - thumb_func_end atk63_jumptoattack - - thumb_func_start atk64_statusanimation -atk64_statusanimation: @ 8024424 - push {r4,lr} - ldr r0, _08024494 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0802448C - ldr r0, _08024498 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _0802449C @ =gActiveBank - strb r0, [r4] - ldr r1, _080244A0 @ =gStatuses3 - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080244A4 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _08024484 - ldr r0, _080244A8 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _08024484 - ldr r0, _080244AC @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08024484 - ldr r1, _080244B0 @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - ldr r2, [r0] - movs r0, 0 - movs r1, 0 - bl EmitStatusAnimation - ldrb r0, [r4] - bl MarkBufferBankForExecution -_08024484: - ldr r1, _08024498 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0802448C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08024494: .4byte gBattleExecBuffer -_08024498: .4byte gBattlescriptCurrInstr -_0802449C: .4byte gActiveBank -_080244A0: .4byte gStatuses3 -_080244A4: .4byte 0x000400c0 -_080244A8: .4byte gDisableStructs -_080244AC: .4byte gHitMarker -_080244B0: .4byte gBattleMons - thumb_func_end atk64_statusanimation - - thumb_func_start atk65_8025D90 -atk65_8025D90: @ 80244B4 - push {r4,r5,lr} - ldr r0, _0802453C @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08024534 - ldr r4, _08024540 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r5, _08024544 @ =gActiveBank - strb r0, [r5] - ldr r1, [r4] - ldrb r3, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - orrs r3, r0 - ldr r1, _08024548 @ =gStatuses3 - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _0802454C @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _0802452C - ldr r0, _08024550 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _0802452C - ldr r0, _08024554 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802452C - ldr r1, _08024558 @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r2, [r0] - ands r2, r3 - movs r0, 0 - movs r1, 0x1 - bl EmitStatusAnimation - ldrb r0, [r5] - bl MarkBufferBankForExecution -_0802452C: - ldr r1, _08024540 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] -_08024534: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802453C: .4byte gBattleExecBuffer -_08024540: .4byte gBattlescriptCurrInstr -_08024544: .4byte gActiveBank -_08024548: .4byte gStatuses3 -_0802454C: .4byte 0x000400c0 -_08024550: .4byte gDisableStructs -_08024554: .4byte gHitMarker -_08024558: .4byte gBattleMons - thumb_func_end atk65_8025D90 - - thumb_func_start atk66_8025E38 -atk66_8025E38: @ 802455C - push {r4,r5,lr} - ldr r0, _080245D4 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _080245CE - ldr r4, _080245D8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r5, _080245DC @ =gActiveBank - strb r0, [r5] - ldr r4, [r4] - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x4] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r4, 0x5] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r4, 0x6] - lsls r0, 24 - orrs r2, r0 - ldr r1, _080245E0 @ =gStatuses3 - ldrb r3, [r5] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080245E4 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _080245C6 - ldr r0, _080245E8 @ =gDisableStructs - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _080245C6 - ldr r0, _080245EC @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080245C6 - ldrb r1, [r4, 0x2] - movs r0, 0 - bl EmitStatusAnimation - ldrb r0, [r5] - bl MarkBufferBankForExecution -_080245C6: - ldr r1, _080245D8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x7 - str r0, [r1] -_080245CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080245D4: .4byte gBattleExecBuffer -_080245D8: .4byte gBattlescriptCurrInstr -_080245DC: .4byte gActiveBank -_080245E0: .4byte gStatuses3 -_080245E4: .4byte 0x000400c0 -_080245E8: .4byte gDisableStructs -_080245EC: .4byte gHitMarker - thumb_func_end atk66_8025E38 - - thumb_func_start atk67_8025ECC -atk67_8025ECC: @ 80245F0 - push {r4,r5,lr} - ldr r5, _08024600 @ =gBattleCommunication - ldrb r4, [r5] - cmp r4, 0 - beq _08024604 - cmp r4, 0x1 - beq _08024616 - b _08024696 - .align 2, 0 -_08024600: .4byte gBattleCommunication -_08024604: - bl sub_8023A80 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - strb r4, [r5, 0x1] - bl sub_802BC6C - b _08024696 -_08024616: - ldr r0, _08024674 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802463A - ldrb r0, [r5, 0x1] - cmp r0, 0 - beq _0802463A - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0 - strb r0, [r5, 0x1] - bl sub_802BC6C -_0802463A: - ldr r0, _08024674 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08024660 - ldr r4, _08024678 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08024660 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08024660: - ldr r0, _08024674 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802467C - ldr r1, _08024678 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x1] - b _08024684 - .align 2, 0 -_08024674: .4byte gMain -_08024678: .4byte gBattleCommunication -_0802467C: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08024696 -_08024684: - movs r0, 0x5 - bl PlaySE - bl sub_8023AD8 - ldr r1, _0802469C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08024696: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802469C: .4byte gBattlescriptCurrInstr - thumb_func_end atk67_8025ECC - - thumb_func_start sub_80246A0 -sub_80246A0: @ 80246A0 - push {r4,r5,lr} - movs r1, 0 - ldr r2, _080246CC @ =gNoOfAllBanks - ldr r5, _080246D0 @ =gBattlescriptCurrInstr - ldrb r0, [r2] - cmp r1, r0 - bge _080246BE - ldr r4, _080246D4 @ =gUnknown_02024A76 - movs r3, 0xC -_080246B2: - adds r0, r1, r4 - strb r3, [r0] - adds r1, 0x1 - ldrb r0, [r2] - cmp r1, r0 - blt _080246B2 -_080246BE: - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080246CC: .4byte gNoOfAllBanks -_080246D0: .4byte gBattlescriptCurrInstr -_080246D4: .4byte gUnknown_02024A76 - thumb_func_end sub_80246A0 - - thumb_func_start atk69_8025FE0 -atk69_8025FE0: @ 80246D8 - push {r4-r7,lr} - ldr r7, _08024700 @ =gBattleMons - ldr r6, _08024704 @ =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0802470C - ldr r1, _08024708 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _08024726 - .align 2, 0 -_08024700: .4byte gBattleMons -_08024704: .4byte gBankTarget -_08024708: .4byte gEnigmaBerries -_0802470C: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_08024726: - ldr r1, _080247E8 @ =gStringBank - ldr r5, _080247EC @ =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _08024764 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _08024764 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemBattle - ldr r2, _080247F0 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_08024764: - ldr r2, _080247F4 @ =gBattleMons - ldr r3, _080247EC @ =gBankTarget - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r1, r0 - adds r5, r2, 0 - cmp r1, 0 - bne _08024834 - ldr r2, _080247F8 @ =gBattleMoves - ldr r0, _080247FC @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x65 - beq _080247B6 - ldr r0, _08024800 @ =gProtectStructs - lsls r1, r4, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - blt _080247B6 - ldr r0, _080247F0 @ =gSpecialStatuses - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _08024834 -_080247B6: - ldrb r0, [r3] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - ldrh r1, [r0, 0x28] - ldr r2, _08024804 @ =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _08024834 - subs r0, r1, 0x1 - str r0, [r2] - ldr r1, _08024800 @ =gProtectStructs - ldrb r3, [r3] - lsls r0, r3, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _0802480C - ldr r0, _08024808 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _08024834 - .align 2, 0 -_080247E8: .4byte gStringBank -_080247EC: .4byte gBankTarget -_080247F0: .4byte gSpecialStatuses -_080247F4: .4byte gBattleMons -_080247F8: .4byte gBattleMoves -_080247FC: .4byte gCurrentMove -_08024800: .4byte gProtectStructs -_08024804: .4byte gBattleMoveDamage -_08024808: .4byte gBattleMoveFlags -_0802480C: - ldr r0, _08024844 @ =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _08024834 - ldr r2, _08024848 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802484C @ =gLastUsedItem - adds r0, r3, 0 - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_08024834: - ldr r1, _08024850 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08024844: .4byte gSpecialStatuses -_08024848: .4byte gBattleMoveFlags -_0802484C: .4byte gLastUsedItem -_08024850: .4byte gBattlescriptCurrInstr - thumb_func_end atk69_8025FE0 - - thumb_func_start atk6A_stash_item_for_side -atk6A_stash_item_for_side: @ 8024854 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _080248B0 @ =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r5, _080248B4 @ =gActiveBank - strb r0, [r5] - ldrb r4, [r5] - lsls r1, r4, 1 - ldr r0, _080248B8 @ =0x020160cc - adds r1, r0 - ldr r2, _080248BC @ =gBattleMons - movs r3, 0x58 - adds r0, r4, 0 - muls r0, r3 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - ldrb r0, [r5] - muls r0, r3 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x2E] - ldrb r0, [r5] - muls r0, r3 - adds r2, 0x2E - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080248B0: .4byte gBattlescriptCurrInstr -_080248B4: .4byte gActiveBank -_080248B8: .4byte 0x020160cc -_080248BC: .4byte gBattleMons - thumb_func_end atk6A_stash_item_for_side - - thumb_func_start sub_80248C0 -sub_80248C0: @ 80248C0 - ldr r1, _080248EC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - ldr r2, _080248F0 @ =gBankAttacker - ldrb r0, [r2] - strb r0, [r1, 0x2] - ldr r3, _080248F4 @ =gBattlePartyID - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _080248F8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_080248EC: .4byte gBattleTextBuff1 -_080248F0: .4byte gBankAttacker -_080248F4: .4byte gBattlePartyID -_080248F8: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80248C0 - - thumb_func_start sub_80248FC -sub_80248FC: @ 80248FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r1, 0 - movs r7, 0 - ldr r0, _08024928 @ =0x02000000 - mov r10, r0 - ldr r4, _0802492C @ =0x0001609c - add r4, r10 - ldrb r0, [r4] - cmp r0, 0x1 - bne _0802491C - b _08024AF4 -_0802491C: - cmp r0, 0x1 - bgt _08024930 - cmp r0, 0 - beq _0802493E - b _08024C38 - .align 2, 0 -_08024928: .4byte 0x02000000 -_0802492C: .4byte 0x0001609c -_08024930: - cmp r0, 0x2 - bne _08024936 - b _08024C04 -_08024936: - cmp r0, 0x3 - bne _0802493C - b _08024C30 -_0802493C: - b _08024C38 -_0802493E: - str r1, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0x1D - movs r3, 0x7 - bl sub_802BBD4 - ldr r0, _0802499C @ =gStringVar4 - ldr r1, _080249A0 @ =gUnknown_08400D9F - bl StringCopy - adds r5, r0, 0 - movs r1, 0 - mov r8, r1 -_0802495A: - movs r2, 0 - mov r9, r2 - ldr r0, _080249A4 @ =gUnknown_0840165C - mov r1, r8 - lsls r4, r1, 2 - adds r0, r4, r0 - ldr r1, [r0] - adds r0, r5, 0 - bl StringAppend - adds r5, r0, 0 - ldr r0, _080249A8 @ =0x02000000 - ldr r2, _080249AC @ =0x00016018 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080249B0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080249B4 @ =gLevelUpStatBoxStats - add r1, r8 - ldrb r1, [r1] - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - mov r0, r8 - cmp r0, 0x5 - bhi _08024A1A - ldr r0, _080249B8 @ =_080249BC - adds r0, r4, r0 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802499C: .4byte gStringVar4 -_080249A0: .4byte gUnknown_08400D9F -_080249A4: .4byte gUnknown_0840165C -_080249A8: .4byte 0x02000000 -_080249AC: .4byte 0x00016018 -_080249B0: .4byte gPlayerParty -_080249B4: .4byte gLevelUpStatBoxStats -_080249B8: .4byte _080249BC - .align 2, 0 -_080249BC: - .4byte _080249D4 - .4byte _080249E0 - .4byte _080249EC - .4byte _080249F8 - .4byte _08024A04 - .4byte _08024A10 -_080249D4: - ldr r0, _080249DC @ =0x02017180 - ldrh r0, [r0] - b _08024A14 - .align 2, 0 -_080249DC: .4byte 0x02017180 -_080249E0: - ldr r0, _080249E8 @ =0x02017180 - ldrh r0, [r0, 0x8] - b _08024A14 - .align 2, 0 -_080249E8: .4byte 0x02017180 -_080249EC: - ldr r0, _080249F4 @ =0x02017180 - ldrh r0, [r0, 0x2] - b _08024A14 - .align 2, 0 -_080249F4: .4byte 0x02017180 -_080249F8: - ldr r0, _08024A00 @ =0x02017180 - ldrh r0, [r0, 0xA] - b _08024A14 - .align 2, 0 -_08024A00: .4byte 0x02017180 -_08024A04: - ldr r0, _08024A0C @ =0x02017180 - ldrh r0, [r0, 0x4] - b _08024A14 - .align 2, 0 -_08024A0C: .4byte 0x02017180 -_08024A10: - ldr r0, _08024A54 @ =0x02017180 - ldrh r0, [r0, 0x6] -_08024A14: - subs r0, r1, r0 - lsls r0, 16 - lsrs r7, r0, 16 -_08024A1A: - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, 0 - bge _08024A2C - negs r0, r0 - lsls r0, 16 - lsrs r7, r0, 16 - movs r1, 0x1 - add r9, r1 -_08024A2C: - movs r0, 0xFC - strb r0, [r5] - movs r0, 0x13 - strb r0, [r5, 0x1] - movs r1, 0x1 - mov r2, r8 - ands r1, r2 - lsls r0, r1, 3 - adds r0, r1 - adds r0, 0x5 - lsls r0, 3 - adds r0, 0x6 - strb r0, [r5, 0x2] - adds r5, 0x3 - mov r0, r9 - cmp r0, 0 - beq _08024A5C - ldr r1, _08024A58 @ =gUnknown_08400DAC - b _08024A5E - .align 2, 0 -_08024A54: .4byte 0x02017180 -_08024A58: .4byte gUnknown_08400DAC -_08024A5C: - ldr r1, _08024AA4 @ =gUnknown_08400DAA -_08024A5E: - adds r0, r5, 0 - bl StringCopy - adds r5, r0, 0 - movs r6, 0xFC - strb r6, [r5] - movs r4, 0x14 - strb r4, [r5, 0x1] - movs r0, 0x6 - strb r0, [r5, 0x2] - adds r5, 0x3 - lsls r1, r7, 16 - asrs r1, 16 - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - strb r6, [r5] - strb r4, [r5, 0x1] - movs r0, 0 - strb r0, [r5, 0x2] - adds r5, 0x3 - movs r0, 0x1 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _08024AA8 - movs r0, 0xFE - strb r0, [r5] - movs r0, 0xFF - strb r0, [r5, 0x1] - adds r5, 0x1 - b _08024AB8 - .align 2, 0 -_08024AA4: .4byte gUnknown_08400DAA -_08024AA8: - strb r6, [r5] - movs r0, 0x11 - strb r0, [r5, 0x1] - movs r0, 0x8 - strb r0, [r5, 0x2] - adds r5, 0x3 - movs r0, 0xFF - strb r0, [r5] -_08024AB8: - movs r2, 0x1 - add r8, r2 - mov r0, r8 - cmp r0, 0x5 - bgt _08024AC4 - b _0802495A -_08024AC4: - ldr r4, _08024AE4 @ =gUnknown_03004210 - ldr r1, _08024AE8 @ =gStringVar4 - adds r2, 0xFF - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0xC - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - ldr r1, _08024AEC @ =0x02000000 - ldr r2, _08024AF0 @ =0x0001609c - adds r1, r2 - b _08024BEA - .align 2, 0 -_08024AE4: .4byte gUnknown_03004210 -_08024AE8: .4byte gStringVar4 -_08024AEC: .4byte 0x02000000 -_08024AF0: .4byte 0x0001609c -_08024AF4: - ldr r0, _08024B94 @ =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0 - bne _08024AFE - b _08024C38 -_08024AFE: - movs r0, 0x5 - bl PlaySE - ldr r0, _08024B98 @ =gStringVar4 - ldr r1, _08024B9C @ =gUnknown_08400D9F - bl StringCopy - adds r5, r0, 0 - movs r0, 0 - mov r8, r0 - mov r9, r0 - movs r6, 0xFC - movs r7, 0x14 - ldr r1, _08024BA0 @ =0x00016018 - add r10, r1 -_08024B1C: - ldr r1, _08024BA4 @ =gUnknown_0840165C - mov r2, r8 - lsls r0, r2, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r5, 0 - bl StringAppend - adds r5, r0, 0 - mov r0, r10 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08024BA8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08024BAC @ =gLevelUpStatBoxStats - add r1, r8 - ldrb r1, [r1] - bl GetMonData - adds r1, r0, 0 - strb r6, [r5] - movs r0, 0x13 - strb r0, [r5, 0x1] - movs r4, 0x1 - mov r2, r8 - ands r4, r2 - lsls r0, r4, 3 - adds r0, r4 - adds r0, 0x5 - lsls r0, 3 - adds r0, 0x6 - strb r0, [r5, 0x2] - adds r5, 0x3 - strb r6, [r5] - strb r7, [r5, 0x1] - movs r0, 0x6 - strb r0, [r5, 0x2] - adds r5, 0x3 - lsls r1, 16 - asrs r1, 16 - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - strb r6, [r5] - strb r7, [r5, 0x1] - mov r0, r9 - strb r0, [r5, 0x2] - adds r5, 0x3 - cmp r4, 0 - beq _08024BB0 - movs r0, 0xFE - strb r0, [r5] - movs r0, 0xFF - strb r0, [r5, 0x1] - adds r5, 0x1 - b _08024BC0 - .align 2, 0 -_08024B94: .4byte gMain -_08024B98: .4byte gStringVar4 -_08024B9C: .4byte gUnknown_08400D9F -_08024BA0: .4byte 0x00016018 -_08024BA4: .4byte gUnknown_0840165C -_08024BA8: .4byte gPlayerParty -_08024BAC: .4byte gLevelUpStatBoxStats -_08024BB0: - strb r6, [r5] - movs r0, 0x11 - strb r0, [r5, 0x1] - movs r0, 0x8 - strb r0, [r5, 0x2] - adds r5, 0x3 - movs r0, 0xFF - strb r0, [r5] -_08024BC0: - movs r1, 0x1 - add r8, r1 - mov r2, r8 - cmp r2, 0x5 - ble _08024B1C - ldr r4, _08024BF4 @ =gUnknown_03004210 - ldr r1, _08024BF8 @ =gStringVar4 - movs r2, 0x80 - lsls r2, 1 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0xC - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - ldr r1, _08024BFC @ =0x02000000 - ldr r0, _08024C00 @ =0x0001609c - adds r1, r0 -_08024BEA: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08024C38 - .align 2, 0 -_08024BF4: .4byte gUnknown_03004210 -_08024BF8: .4byte gStringVar4 -_08024BFC: .4byte 0x02000000 -_08024C00: .4byte 0x0001609c -_08024C04: - ldr r0, _08024C2C @ =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0 - beq _08024C38 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - str r0, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0x1D - movs r3, 0x7 - bl sub_802BBD4 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08024C38 - .align 2, 0 -_08024C2C: .4byte gMain -_08024C30: - ldr r1, _08024C48 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08024C38: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08024C48: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80248FC - - thumb_func_start sub_8024C4C -sub_8024C4C: @ 8024C4C - push {lr} - bl sub_80156DC - ldr r1, _08024C60 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08024C60: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8024C4C - - thumb_func_start atk6E_state0_side_becomes_attacker -atk6E_state0_side_becomes_attacker: @ 8024C64 - push {lr} - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, _08024C7C @ =gBankAttacker - strb r0, [r1] - ldr r1, _08024C80 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08024C7C: .4byte gBankAttacker -_08024C80: .4byte gBattlescriptCurrInstr - thumb_func_end atk6E_state0_side_becomes_attacker - - thumb_func_start atk6F_8026810 -atk6F_8026810: @ 8024C84 - push {r4,r5,lr} - ldr r5, _08024CB0 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r4, _08024CB4 @ =gActiveBank - strb r0, [r4] - movs r0, 0 - movs r1, 0 - bl EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08024CB0: .4byte gBattlescriptCurrInstr -_08024CB4: .4byte gActiveBank - thumb_func_end atk6F_8026810 - - thumb_func_start atk70_record_ability_usage_of_side -atk70_record_ability_usage_of_side: @ 8024CB8 - push {r4,lr} - ldr r4, _08024CE0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r1, _08024CE4 @ =gActiveBank - strb r0, [r1] - ldrb r0, [r1] - ldr r1, _08024CE8 @ =gLastUsedAbility - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08024CE0: .4byte gBattlescriptCurrInstr -_08024CE4: .4byte gActiveBank -_08024CE8: .4byte gLastUsedAbility - thumb_func_end atk70_record_ability_usage_of_side - - thumb_func_start sub_8024CEC -sub_8024CEC: @ 8024CEC - ldr r2, _08024D0C @ =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x2 - strb r0, [r2, 0x1] - ldr r0, _08024D10 @ =word_2024E82 - ldrh r1, [r0] - strb r1, [r2, 0x2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r2, 0x3] - movs r0, 0xFF - strb r0, [r2, 0x4] - bx lr - .align 2, 0 -_08024D0C: .4byte gBattleTextBuff2 -_08024D10: .4byte word_2024E82 - thumb_func_end sub_8024CEC - - thumb_func_start atk71_80268A0 -atk71_80268A0: @ 8024D14 - push {lr} - bl sub_8024CEC - ldr r1, _08024D28 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08024D28: .4byte gBattlescriptCurrInstr - thumb_func_end atk71_80268A0 - - thumb_func_start atk72_flee -atk72_flee: @ 8024D2C - push {lr} - ldr r0, _08024D58 @ =gBank1 - ldrb r0, [r0] - bl sub_8014AB8 - lsls r0, 24 - cmp r0, 0 - beq _08024D60 - ldr r3, _08024D5C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08024D68 - .align 2, 0 -_08024D58: .4byte gBank1 -_08024D5C: .4byte gBattlescriptCurrInstr -_08024D60: - ldr r1, _08024D6C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08024D68: - pop {r0} - bx r0 - .align 2, 0 -_08024D6C: .4byte gBattlescriptCurrInstr - thumb_func_end atk72_flee - - thumb_func_start atk73_cmd73 -atk73_cmd73: @ 8024D70 - push {r4,r5,lr} - ldr r0, _08024DC0 @ =gBattleTypeFlags - ldrh r0, [r0] - movs r5, 0x1 - ands r5, r0 - cmp r5, 0 - bne _08024E12 - ldr r0, _08024DC4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r1, _08024DC8 @ =gActiveBank - strb r0, [r1] - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08024DCC @ =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r4, [r1, 0x28] - movs r0, 0x64 - muls r0, r4 - ldrh r1, [r1, 0x2C] - bl __divsi3 - cmp r0, 0 - bne _08024DAE - movs r0, 0x1 -_08024DAE: - cmp r0, 0x45 - bgt _08024DB6 - cmp r4, 0 - bne _08024DD8 -_08024DB6: - ldr r0, _08024DD0 @ =0x02000000 - ldr r1, _08024DD4 @ =0x000160c1 - adds r0, r1 - strb r5, [r0] - b _08024E12 - .align 2, 0 -_08024DC0: .4byte gBattleTypeFlags -_08024DC4: .4byte gBattlescriptCurrInstr -_08024DC8: .4byte gActiveBank -_08024DCC: .4byte gBattleMons -_08024DD0: .4byte 0x02000000 -_08024DD4: .4byte 0x000160c1 -_08024DD8: - cmp r0, 0x27 - ble _08024DF0 - ldr r0, _08024DE8 @ =0x02000000 - ldr r1, _08024DEC @ =0x000160c1 - adds r0, r1 - movs r1, 0x1 - b _08024E10 - .align 2, 0 -_08024DE8: .4byte 0x02000000 -_08024DEC: .4byte 0x000160c1 -_08024DF0: - cmp r0, 0x9 - ble _08024E08 - ldr r0, _08024E00 @ =0x02000000 - ldr r1, _08024E04 @ =0x000160c1 - adds r0, r1 - movs r1, 0x2 - b _08024E10 - .align 2, 0 -_08024E00: .4byte 0x02000000 -_08024E04: .4byte 0x000160c1 -_08024E08: - ldr r0, _08024E20 @ =0x02000000 - ldr r1, _08024E24 @ =0x000160c1 - adds r0, r1 - movs r1, 0x3 -_08024E10: - strb r1, [r0] -_08024E12: - ldr r1, _08024E28 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08024E20: .4byte 0x02000000 -_08024E24: .4byte 0x000160c1 -_08024E28: .4byte gBattlescriptCurrInstr - thumb_func_end atk73_cmd73 - - thumb_func_start atk74_hp_tresholds_2 -atk74_hp_tresholds_2: @ 8024E2C - push {r4-r7,lr} - ldr r0, _08024E8C @ =gBattleTypeFlags - ldrh r0, [r0] - movs r7, 0x1 - ands r7, r0 - cmp r7, 0 - bne _08024ED0 - ldr r0, _08024E90 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl sub_8015150 - adds r4, r0, 0 - ldr r0, _08024E94 @ =gActiveBank - strb r4, [r0] - movs r0, 0x1 - eors r4, r0 - lsls r4, 24 - lsrs r4, 24 - ldr r6, _08024E98 @ =0x02000000 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - ldr r1, _08024E9C @ =0x000160bc - adds r0, r1 - adds r0, r6 - ldrb r5, [r0] - ldr r1, _08024EA0 @ =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r4, [r0, 0x28] - subs r1, r5, r4 - movs r0, 0x64 - muls r0, r1 - adds r1, r5, 0 - bl __divsi3 - adds r1, r0, 0 - cmp r4, r5 - bcc _08024EA8 - ldr r1, _08024EA4 @ =0x000160c1 - adds r0, r6, r1 - strb r7, [r0] - b _08024ED0 - .align 2, 0 -_08024E8C: .4byte gBattleTypeFlags -_08024E90: .4byte gBattlescriptCurrInstr -_08024E94: .4byte gActiveBank -_08024E98: .4byte 0x02000000 -_08024E9C: .4byte 0x000160bc -_08024EA0: .4byte gBattleMons -_08024EA4: .4byte 0x000160c1 -_08024EA8: - cmp r0, 0x1D - bgt _08024EB8 - ldr r0, _08024EB4 @ =0x000160c1 - adds r1, r6, r0 - movs r0, 0x1 - b _08024ECE - .align 2, 0 -_08024EB4: .4byte 0x000160c1 -_08024EB8: - cmp r1, 0x45 - bgt _08024EC8 - ldr r0, _08024EC4 @ =0x000160c1 - adds r1, r6, r0 - movs r0, 0x2 - b _08024ECE - .align 2, 0 -_08024EC4: .4byte 0x000160c1 -_08024EC8: - ldr r0, _08024EE0 @ =0x000160c1 - adds r1, r6, r0 - movs r0, 0x3 -_08024ECE: - strb r0, [r1] -_08024ED0: - ldr r1, _08024EE4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08024EE0: .4byte 0x000160c1 -_08024EE4: .4byte gBattlescriptCurrInstr - thumb_func_end atk74_hp_tresholds_2 - - thumb_func_start atk75_8026A58 -atk75_8026A58: @ 8024EE8 - push {lr} - sub sp, 0x4 - ldr r2, _08024F28 @ =gBankInMenu - ldr r1, _08024F2C @ =gBankAttacker - ldrb r0, [r1] - strb r0, [r2] - ldr r2, _08024F30 @ =gBattlePartyID - ldrb r0, [r1] - lsls r0, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r1, _08024F34 @ =gEnemyParty - adds r0, r1 - ldr r1, _08024F38 @ =gLastUsedItem - ldrh r1, [r1] - lsls r2, 24 - lsrs r2, 24 - movs r3, 0x1 - str r3, [sp] - movs r3, 0 - bl sub_803E1B0 - ldr r1, _08024F3C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08024F28: .4byte gBankInMenu -_08024F2C: .4byte gBankAttacker -_08024F30: .4byte gBattlePartyID -_08024F34: .4byte gEnemyParty -_08024F38: .4byte gLastUsedItem -_08024F3C: .4byte gBattlescriptCurrInstr - thumb_func_end atk75_8026A58 - - thumb_func_start sub_8024F40 -sub_8024F40: @ 8024F40 - push {r4-r6,lr} - ldr r4, _08024F64 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r1, _08024F68 @ =gActiveBank - strb r0, [r1] - ldr r0, [r4] - ldrb r0, [r0, 0x2] - cmp r0, 0x6 - bls _08024F5A - b _08025112 -_08024F5A: - lsls r0, 2 - ldr r1, _08024F6C @ =_08024F70 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08024F64: .4byte gBattlescriptCurrInstr -_08024F68: .4byte gActiveBank -_08024F6C: .4byte _08024F70 - .align 2, 0 -_08024F70: - .4byte _08024F8C - .4byte _08024F9C - .4byte _08024FFC - .4byte _0802500C - .4byte _08025024 - .4byte _08025060 - .4byte _08025098 -_08024F8C: - ldr r0, _08024F98 @ =gActiveBank - ldrb r0, [r0] - bl CancelMultiTurnMoves - b _08025112 - .align 2, 0 -_08024F98: .4byte gActiveBank -_08024F9C: - ldr r1, _08024FD8 @ =gBankAttacker - ldr r4, _08024FDC @ =gBankTarget - ldrb r0, [r4] - strb r0, [r1] - ldrb r0, [r1] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08024FE0 @ =gSideTimer - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r2 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _08024FE8 - ldr r1, _08024FE4 @ =gBattleMons - ldrb r2, [r2, 0x9] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08024FE8 - strb r2, [r4] - b _08025112 - .align 2, 0 -_08024FD8: .4byte gBankAttacker -_08024FDC: .4byte gBankTarget -_08024FE0: .4byte gSideTimer -_08024FE4: .4byte gBattleMons -_08024FE8: - ldr r0, _08024FF4 @ =gBankTarget - ldr r1, _08024FF8 @ =gActiveBank - ldrb r1, [r1] - strb r1, [r0] - b _08025112 - .align 2, 0 -_08024FF4: .4byte gBankTarget -_08024FF8: .4byte gActiveBank -_08024FFC: - bl CanRunFromBattle - ldr r1, _08025008 @ =gBattleCommunication - strb r0, [r1] - b _08025112 - .align 2, 0 -_08025008: .4byte gBattleCommunication -_0802500C: - ldr r0, _0802501C @ =gCurrentMove - ldrh r0, [r0] - movs r1, 0 - bl sub_801B5C0 - ldr r1, _08025020 @ =gBankTarget - strb r0, [r1] - b _08025112 - .align 2, 0 -_0802501C: .4byte gCurrentMove -_08025020: .4byte gBankTarget -_08025024: - ldr r2, _08025044 @ =gHitMarker - ldr r1, _08025048 @ =gBitTable - ldr r0, _0802504C @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r0, 28 - ldr r2, [r2] - ands r2, r0 - cmp r2, 0 - beq _08025054 - ldr r1, _08025050 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] - b _08025112 - .align 2, 0 -_08025044: .4byte gHitMarker -_08025048: .4byte gBitTable -_0802504C: .4byte gActiveBank -_08025050: .4byte gBattleCommunication -_08025054: - ldr r0, _0802505C @ =gBattleCommunication - strb r2, [r0] - b _08025112 - .align 2, 0 -_0802505C: .4byte gBattleCommunication -_08025060: - ldr r4, _08025090 @ =gSpecialStatuses - ldr r3, _08025094 @ =gActiveBank - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _08025112 - .align 2, 0 -_08025090: .4byte gSpecialStatuses -_08025094: .4byte gActiveBank -_08025098: - ldr r3, _080250B8 @ =gBattlePartyID - ldr r0, _080250BC @ =0x02000000 - ldr r1, _080250C0 @ =0x00016018 - adds r0, r1 - ldrh r2, [r3] - ldrb r1, [r0] - cmp r2, r1 - beq _080250B2 - ldrh r0, [r3, 0x4] - cmp r0, r1 - bne _08025112 - cmp r2, r0 - bne _080250C8 -_080250B2: - ldr r1, _080250C4 @ =gActiveBank - movs r0, 0 - b _080250CC - .align 2, 0 -_080250B8: .4byte gBattlePartyID -_080250BC: .4byte 0x02000000 -_080250C0: .4byte 0x00016018 -_080250C4: .4byte gActiveBank -_080250C8: - ldr r1, _08025120 @ =gActiveBank - movs r0, 0x2 -_080250CC: - strb r0, [r1] - adds r5, r1, 0 - ldrb r2, [r5] - lsls r1, r2, 1 - ldr r0, _08025124 @ =0x020160e8 - adds r4, r1, r0 - movs r3, 0 - ldr r1, _08025128 @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - ldrh r2, [r4] - cmp r0, r2 - beq _0802510A - adds r6, r5, 0 - movs r5, 0x58 - adds r2, r1, 0 -_080250F2: - adds r3, 0x1 - cmp r3, 0x3 - bgt _0802510A - lsls r1, r3, 1 - ldrb r0, [r6] - muls r0, r5 - adds r1, r0 - adds r1, r2 - ldrh r0, [r1] - ldrh r1, [r4] - cmp r0, r1 - bne _080250F2 -_0802510A: - cmp r3, 0x4 - bne _08025112 - movs r0, 0 - strh r0, [r4] -_08025112: - ldr r1, _0802512C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08025120: .4byte gActiveBank -_08025124: .4byte 0x020160e8 -_08025128: .4byte gBattleMons -_0802512C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8024F40 - - thumb_func_start atk77_setprotect -atk77_setprotect: @ 8025130 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0x1 - ldr r2, _080251FC @ =gUnknown_02024C4C - ldr r1, _08025200 @ =gBankAttacker - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r2 - ldrh r0, [r0] - mov r8, r1 - ldr r7, _08025204 @ =gDisableStructs - cmp r0, 0xB6 - beq _08025160 - cmp r0, 0xC5 - beq _08025160 - cmp r0, 0xCB - beq _08025160 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r7 - movs r1, 0 - strb r1, [r0, 0x8] -_08025160: - ldr r0, _08025208 @ =gCurrentMoveTurn - ldrb r1, [r0] - ldr r0, _0802520C @ =gNoOfAllBanks - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _08025170 - movs r6, 0 -_08025170: - ldr r2, _08025210 @ =gProtectSuccessRates - mov r5, r8 - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r4, [r0, 0x8] - lsls r4, 1 - adds r4, r2 - bl Random - ldrh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bls _08025224 - cmp r6, 0 - beq _08025224 - ldr r4, _08025214 @ =gBattleMoves - ldr r3, _08025218 @ =gCurrentMove - ldrh r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - cmp r0, 0x6F - bne _080251C0 - ldr r0, _0802521C @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r1, _08025220 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] -_080251C0: - ldrh r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - cmp r0, 0x74 - bne _080251E6 - ldr r0, _0802521C @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - ldr r1, _08025220 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_080251E6: - mov r1, r8 - ldrb r0, [r1] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] - b _08025246 - .align 2, 0 -_080251FC: .4byte gUnknown_02024C4C -_08025200: .4byte gBankAttacker -_08025204: .4byte gDisableStructs -_08025208: .4byte gCurrentMoveTurn -_0802520C: .4byte gNoOfAllBanks -_08025210: .4byte gProtectSuccessRates -_08025214: .4byte gBattleMoves -_08025218: .4byte gCurrentMove -_0802521C: .4byte gProtectStructs -_08025220: .4byte gBattleCommunication -_08025224: - ldr r2, _08025258 @ =gDisableStructs - ldr r0, _0802525C @ =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x8] - ldr r1, _08025260 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - ldr r2, _08025264 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_08025246: - ldr r1, _08025268 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08025258: .4byte gDisableStructs -_0802525C: .4byte gBankAttacker -_08025260: .4byte gBattleCommunication -_08025264: .4byte gBattleMoveFlags -_08025268: .4byte gBattlescriptCurrInstr - thumb_func_end atk77_setprotect - - thumb_func_start atk78_faintifabilitynotdamp -atk78_faintifabilitynotdamp: @ 802526C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08025328 @ =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - bne _08025370 - ldr r1, _0802532C @ =gBankTarget - strb r2, [r1] - ldr r0, _08025330 @ =gNoOfAllBanks - ldrb r3, [r0] - adds r5, r1, 0 - mov r8, r0 - ldr r6, _08025334 @ =gBattleMons - cmp r2, r3 - bcs _080252B8 - adds r0, r6, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x6 - beq _080252B8 - adds r2, r3, 0 - adds r4, r6, 0 - movs r3, 0x58 -_0802529C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r2 - bcs _080252B8 - ldrb r0, [r5] - muls r0, r3 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x6 - bne _0802529C -_080252B8: - ldrb r0, [r5] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bne _08025354 - ldr r4, _08025338 @ =gActiveBank - ldr r7, _0802533C @ =gBankAttacker - ldrb r0, [r7] - strb r0, [r4] - ldr r2, _08025340 @ =gBattleMoveDamage - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r6 - ldrh r0, [r0, 0x28] - str r0, [r2] - ldr r1, _08025344 @ =0x00007fff - movs r0, 0 - bl EmitHealthBarUpdate - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _08025348 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - movs r0, 0 - strb r0, [r5] - mov r2, r8 - ldrb r0, [r2] - cmp r0, 0 - beq _08025370 - adds r3, r5, 0 - ldrb r5, [r7] - ldr r7, _0802534C @ =gBitTable - adds r4, r0, 0 - ldr r6, _08025350 @ =gAbsentBankFlags -_08025304: - ldrb r2, [r3] - cmp r2, r5 - beq _0802531A - ldrb r0, [r6] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r7 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _08025370 -_0802531A: - adds r0, r2, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcc _08025304 - b _08025370 - .align 2, 0 -_08025328: .4byte gBattleExecBuffer -_0802532C: .4byte gBankTarget -_08025330: .4byte gNoOfAllBanks -_08025334: .4byte gBattleMons -_08025338: .4byte gActiveBank -_0802533C: .4byte gBankAttacker -_08025340: .4byte gBattleMoveDamage -_08025344: .4byte 0x00007fff -_08025348: .4byte gBattlescriptCurrInstr -_0802534C: .4byte gBitTable -_08025350: .4byte gAbsentBankFlags -_08025354: - ldr r1, _0802537C @ =gLastUsedAbility - movs r0, 0x6 - strb r0, [r1] - ldrb r0, [r5] - movs r1, 0x58 - muls r1, r0 - adds r1, r6 - adds r1, 0x20 - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r1, _08025380 @ =gBattlescriptCurrInstr - ldr r0, _08025384 @ =gUnknown_081D9834 - str r0, [r1] -_08025370: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802537C: .4byte gLastUsedAbility -_08025380: .4byte gBattlescriptCurrInstr -_08025384: .4byte gUnknown_081D9834 - thumb_func_end atk78_faintifabilitynotdamp - - thumb_func_start atk79_setuserhptozero -atk79_setuserhptozero: @ 8025388 - push {r4,lr} - sub sp, 0x4 - ldr r0, _080253D4 @ =gBattleExecBuffer - ldr r3, [r0] - cmp r3, 0 - bne _080253CC - ldr r4, _080253D8 @ =gActiveBank - ldr r0, _080253DC @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r1, _080253E0 @ =gBattleMons - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r0, r1 - strh r3, [r0, 0x28] - ldrb r0, [r4] - muls r0, r2 - adds r1, 0x28 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2A - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _080253E4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080253CC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080253D4: .4byte gBattleExecBuffer -_080253D8: .4byte gActiveBank -_080253DC: .4byte gBankAttacker -_080253E0: .4byte gBattleMons -_080253E4: .4byte gBattlescriptCurrInstr - thumb_func_end atk79_setuserhptozero - - thumb_func_start sub_80253E8 -sub_80253E8: @ 80253E8 - push {r4-r7,lr} - ldr r3, _08025460 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r4, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r4, r0 - ldr r0, _08025464 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - adds r7, r3, 0 - cmp r0, 0 - beq _08025480 - ldr r0, _08025468 @ =gBankTarget - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r2, _0802546C @ =gBankAttacker - lsls r1, 24 - lsrs r1, 24 - adds r3, r0, 0 - ldr r6, _08025470 @ =gAbsentBankFlags - ldr r5, _08025474 @ =gBitTable - ldr r0, _08025478 @ =gNoOfAllBanks - mov r12, r0 - ldrb r0, [r2] - cmp r1, r0 - bne _0802543E -_0802542E: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r2] - cmp r0, r1 - beq _0802542E -_0802543E: - ldrb r0, [r6] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _0802542E - ldrb r0, [r3] - mov r2, r12 - ldrb r2, [r2] - cmp r0, r2 - bcc _0802547C - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - b _08025484 - .align 2, 0 -_08025460: .4byte gBattlescriptCurrInstr -_08025464: .4byte gBattleTypeFlags -_08025468: .4byte gBankTarget -_0802546C: .4byte gBankAttacker -_08025470: .4byte gAbsentBankFlags -_08025474: .4byte gBitTable -_08025478: .4byte gNoOfAllBanks -_0802547C: - str r4, [r7] - b _08025484 -_08025480: - adds r0, r2, 0x5 - str r0, [r3] -_08025484: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80253E8 - - thumb_func_start sub_802548C -sub_802548C: @ 802548C - push {r4-r6,lr} - ldr r4, _080254E8 @ =gBattlescriptCurrInstr - ldr r1, [r4] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldrb r0, [r1, 0x5] - ldr r3, _080254EC @ =gBankTarget - cmp r0, 0x1 - bne _080254B4 - ldr r0, _080254F0 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r3] -_080254B4: - ldr r1, _080254F4 @ =gBattleMoveDamage - ldr r6, _080254F8 @ =gBattleMons - ldrb r0, [r3] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _080254CE - movs r0, 0x1 - str r0, [r1] -_080254CE: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldrb r0, [r3] - muls r0, r5 - adds r0, r6 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - bne _080254FC - str r2, [r4] - b _08025502 - .align 2, 0 -_080254E8: .4byte gBattlescriptCurrInstr -_080254EC: .4byte gBankTarget -_080254F0: .4byte gBankAttacker -_080254F4: .4byte gBattleMoveDamage -_080254F8: .4byte gBattleMons -_080254FC: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_08025502: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_802548C - - thumb_func_start sub_8025508 -sub_8025508: @ 8025508 - push {r4-r7,lr} - ldr r3, _0802556C @ =0x02000000 - ldr r4, _08025570 @ =gBankAttacker - ldrb r2, [r4] - lsls r1, r2, 1 - ldr r5, _08025574 @ =0x000160ac - adds r0, r1, r5 - adds r0, r3 - ldrb r7, [r0] - ldr r0, _08025578 @ =0x000160ad - adds r1, r0 - adds r1, r3 - ldrb r0, [r1] - lsls r0, 8 - orrs r7, r0 - lsls r2, 2 - ldr r1, _0802557C @ =0x00016100 - adds r0, r2, r1 - adds r0, r3 - ldrb r6, [r0] - adds r5, 0x55 - adds r0, r2, r5 - adds r0, r3 - ldrb r0, [r0] - lsls r0, 8 - orrs r6, r0 - adds r1, 0x2 - adds r0, r2, r1 - adds r0, r3 - ldrb r5, [r0] - ldr r0, _08025580 @ =0x00016103 - adds r2, r0 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 8 - orrs r5, r0 - cmp r7, 0 - beq _08025594 - ldr r0, _08025584 @ =0x0000ffff - cmp r7, r0 - beq _08025594 - ldr r2, _08025588 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0802558C @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, _08025590 @ =gCurrentMove - strh r7, [r4] - b _0802565C - .align 2, 0 -_0802556C: .4byte 0x02000000 -_08025570: .4byte gBankAttacker -_08025574: .4byte 0x000160ac -_08025578: .4byte 0x000160ad -_0802557C: .4byte 0x00016100 -_08025580: .4byte 0x00016103 -_08025584: .4byte 0x0000ffff -_08025588: .4byte gHitMarker -_0802558C: .4byte 0xfffffbff -_08025590: .4byte gCurrentMove -_08025594: - cmp r6, 0 - beq _08025644 - cmp r5, 0 - beq _08025618 - ldr r0, _080255C4 @ =0x0000ffff - cmp r6, r0 - beq _08025618 - cmp r5, r0 - beq _08025618 - ldr r2, _080255C8 @ =gHitMarker - ldr r0, [r2] - ldr r1, _080255CC @ =0xfffffbff - ands r0, r1 - str r0, [r2] - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080255D4 - ldr r0, _080255D0 @ =gCurrentMove - strh r6, [r0] - b _080255D8 - .align 2, 0 -_080255C4: .4byte 0x0000ffff -_080255C8: .4byte gHitMarker -_080255CC: .4byte 0xfffffbff -_080255D0: .4byte gCurrentMove -_080255D4: - ldr r0, _08025604 @ =gCurrentMove - strh r5, [r0] -_080255D8: - adds r5, r0, 0 - ldrh r0, [r5] - movs r1, 0 - bl sub_801B5C0 - ldr r1, _08025608 @ =gBankTarget - strb r0, [r1] - ldr r4, _0802560C @ =gBattlescriptCurrInstr - ldr r3, _08025610 @ =gUnknown_081D6BBC - ldr r2, _08025614 @ =gBattleMoves - ldrh r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r4] - b _080256C0 - .align 2, 0 -_08025604: .4byte gCurrentMove -_08025608: .4byte gBankTarget -_0802560C: .4byte gBattlescriptCurrInstr -_08025610: .4byte gUnknown_081D6BBC -_08025614: .4byte gBattleMoves -_08025618: - cmp r6, 0 - beq _08025644 - ldr r0, _08025634 @ =0x0000ffff - cmp r6, r0 - beq _08025644 - ldr r2, _08025638 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0802563C @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, _08025640 @ =gCurrentMove - strh r6, [r4] - b _0802565C - .align 2, 0 -_08025634: .4byte 0x0000ffff -_08025638: .4byte gHitMarker -_0802563C: .4byte 0xfffffbff -_08025640: .4byte gCurrentMove -_08025644: - cmp r5, 0 - beq _080256A4 - ldr r0, _08025684 @ =0x0000ffff - cmp r5, r0 - beq _080256A4 - ldr r2, _08025688 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0802568C @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, _08025690 @ =gCurrentMove - strh r5, [r4] -_0802565C: - ldrh r0, [r4] - movs r1, 0 - bl sub_801B5C0 - ldr r1, _08025694 @ =gBankTarget - strb r0, [r1] - ldr r5, _08025698 @ =gBattlescriptCurrInstr - ldr r3, _0802569C @ =gUnknown_081D6BBC - ldr r2, _080256A0 @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r5] - b _080256C0 - .align 2, 0 -_08025684: .4byte 0x0000ffff -_08025688: .4byte gHitMarker -_0802568C: .4byte 0xfffffbff -_08025690: .4byte gCurrentMove -_08025694: .4byte gBankTarget -_08025698: .4byte gBattlescriptCurrInstr -_0802569C: .4byte gUnknown_081D6BBC -_080256A0: .4byte gBattleMoves -_080256A4: - ldr r2, _080256C8 @ =gSpecialStatuses - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r1, _080256CC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080256C0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080256C8: .4byte gSpecialStatuses -_080256CC: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8025508 - - thumb_func_start sub_80256D0 -sub_80256D0: @ 80256D0 - push {lr} - ldr r2, _080256F0 @ =gBattleWeather - ldrh r0, [r2] - movs r1, 0x7 - ands r1, r0 - cmp r1, 0 - beq _080256FC - ldr r2, _080256F4 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080256F8 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _0802570C - .align 2, 0 -_080256F0: .4byte gBattleWeather -_080256F4: .4byte gBattleMoveFlags -_080256F8: .4byte gBattleCommunication -_080256FC: - movs r0, 0x1 - strh r0, [r2] - ldr r0, _08025718 @ =gBattleCommunication - strb r1, [r0, 0x5] - ldr r0, _0802571C @ =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_0802570C: - ldr r1, _08025720 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08025718: .4byte gBattleCommunication -_0802571C: .4byte gWishFutureKnock -_08025720: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80256D0 - - thumb_func_start atk7E_setreflect -atk7E_setreflect: @ 8025724 - push {r4-r6,lr} - ldr r5, _08025754 @ =gBankAttacker - ldrb r0, [r5] - bl GetBankIdentity - ldr r6, _08025758 @ =gSideAffecting - movs r4, 0x1 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r6 - ldrh r1, [r1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08025764 - ldr r2, _0802575C @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08025760 @ =gBattleCommunication - movs r0, 0 - b _080257C4 - .align 2, 0 -_08025754: .4byte gBankAttacker -_08025758: .4byte gSideAffecting -_0802575C: .4byte gBattleMoveFlags -_08025760: .4byte gBattleCommunication -_08025764: - ldrb r0, [r5] - bl GetBankIdentity - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r6 - ldrh r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r5] - bl GetBankIdentity - ldr r2, _080257B4 @ =gSideTimer - adds r1, r4, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strb r1, [r0] - ldr r0, _080257B8 @ =gBattleTypeFlags - ldrh r1, [r0] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080257C0 - movs r0, 0x1 - bl CountAliveMons - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _080257C0 - ldr r0, _080257BC @ =gBattleCommunication - strb r1, [r0, 0x5] - b _080257C6 - .align 2, 0 -_080257B4: .4byte gSideTimer -_080257B8: .4byte gBattleTypeFlags -_080257BC: .4byte gBattleCommunication -_080257C0: - ldr r1, _080257D4 @ =gBattleCommunication - movs r0, 0x1 -_080257C4: - strb r0, [r1, 0x5] -_080257C6: - ldr r1, _080257D8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080257D4: .4byte gBattleCommunication -_080257D8: .4byte gBattlescriptCurrInstr - thumb_func_end atk7E_setreflect - - thumb_func_start sub_80257DC -sub_80257DC: @ 80257DC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r7, _0802581C @ =gBattleMoveFlags - ldrb r5, [r7] - movs r0, 0x29 - ands r0, r5 - cmp r0, 0 - bne _0802580E - ldr r0, _08025820 @ =gStatuses3 - mov r9, r0 - ldr r1, _08025824 @ =gBankTarget - mov r8, r1 - ldrb r4, [r1] - lsls r0, r4, 2 - mov r2, r9 - adds r6, r0, r2 - ldr r2, [r6] - movs r0, 0x4 - mov r12, r0 - adds r3, r2, 0 - ands r3, r0 - cmp r3, 0 - beq _0802582C -_0802580E: - movs r0, 0x1 - orrs r0, r5 - strb r0, [r7] - ldr r1, _08025828 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _0802587C - .align 2, 0 -_0802581C: .4byte gBattleMoveFlags -_08025820: .4byte gStatuses3 -_08025824: .4byte gBankTarget -_08025828: .4byte gBattleCommunication -_0802582C: - ldr r1, _08025858 @ =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r1, r0, r1 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xC - beq _08025848 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xC - bne _08025860 -_08025848: - movs r0, 0x1 - orrs r0, r5 - strb r0, [r7] - ldr r1, _0802585C @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _0802587C - .align 2, 0 -_08025858: .4byte gBattleMons -_0802585C: .4byte gBattleCommunication -_08025860: - ldr r0, _08025890 @ =gBankAttacker - ldrb r0, [r0] - orrs r2, r0 - str r2, [r6] - mov r2, r8 - ldrb r1, [r2] - lsls r1, 2 - add r1, r9 - ldr r0, [r1] - mov r2, r12 - orrs r0, r2 - str r0, [r1] - ldr r0, _08025894 @ =gBattleCommunication - strb r3, [r0, 0x5] -_0802587C: - ldr r1, _08025898 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08025890: .4byte gBankAttacker -_08025894: .4byte gBattleCommunication -_08025898: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80257DC - - thumb_func_start atk80_manipulatedamage -atk80_manipulatedamage: @ 802589C - push {r4,lr} - ldr r1, _080258B4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - ldrb r2, [r0, 0x1] - adds r4, r1, 0 - cmp r2, 0x1 - beq _080258CC - cmp r2, 0x1 - bgt _080258B8 - cmp r2, 0 - beq _080258BE - b _0802590C - .align 2, 0 -_080258B4: .4byte gBattlescriptCurrInstr -_080258B8: - cmp r2, 0x2 - beq _08025904 - b _0802590C -_080258BE: - ldr r1, _080258C8 @ =gBattleMoveDamage - ldr r0, [r1] - negs r0, r0 - b _0802590A - .align 2, 0 -_080258C8: .4byte gBattleMoveDamage -_080258CC: - ldr r3, _080258F8 @ =gBattleMoveDamage - ldr r0, [r3] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - str r0, [r3] - cmp r0, 0 - bne _080258DE - str r2, [r3] -_080258DE: - ldr r2, _080258FC @ =gBattleMons - ldr r0, _08025900 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r1, r0, 1 - ldr r0, [r3] - cmp r1, r0 - bge _0802590C - str r1, [r3] - b _0802590C - .align 2, 0 -_080258F8: .4byte gBattleMoveDamage -_080258FC: .4byte gBattleMons -_08025900: .4byte gBankTarget -_08025904: - ldr r1, _08025918 @ =gBattleMoveDamage - ldr r0, [r1] - lsls r0, 1 -_0802590A: - str r0, [r1] -_0802590C: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08025918: .4byte gBattleMoveDamage - thumb_func_end atk80_manipulatedamage - - thumb_func_start atk81_setrest -atk81_setrest: @ 802591C - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, _08025974 @ =gBattlescriptCurrInstr - mov r12, r0 - ldr r1, [r0] - ldrb r6, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r6, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r6, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r6, r0 - ldr r5, _08025978 @ =gActiveBank - ldr r2, _0802597C @ =gBankTarget - ldr r0, _08025980 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r2] - strb r0, [r5] - ldr r4, _08025984 @ =gBattleMoveDamage - ldr r1, _08025988 @ =gBattleMons - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - adds r0, r1 - ldrh r0, [r0, 0x2C] - negs r0, r0 - str r0, [r4] - ldrb r0, [r2] - adds r4, r0, 0 - muls r4, r3 - adds r0, r4, r1 - ldrh r3, [r0, 0x28] - adds r7, r5, 0 - adds r5, r2, 0 - adds r2, r1, 0 - ldrh r0, [r0, 0x2C] - cmp r3, r0 - bne _0802598C - mov r0, r12 - str r6, [r0] - b _080259DC - .align 2, 0 -_08025974: .4byte gBattlescriptCurrInstr -_08025978: .4byte gActiveBank -_0802597C: .4byte gBankTarget -_08025980: .4byte gBankAttacker -_08025984: .4byte gBattleMoveDamage -_08025988: .4byte gBattleMons -_0802598C: - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0xF8 - ands r1, r0 - cmp r1, 0 - beq _080259A8 - ldr r1, _080259A4 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _080259AC - .align 2, 0 -_080259A4: .4byte gBattleCommunication -_080259A8: - ldr r0, _080259E4 @ =gBattleCommunication - strb r1, [r0, 0x5] -_080259AC: - ldrb r0, [r5] - movs r3, 0x58 - muls r0, r3 - adds r2, 0x4C - adds r0, r2 - movs r1, 0x3 - str r1, [r0] - ldrb r0, [r7] - muls r0, r3 - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r1, _080259E8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080259DC: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080259E4: .4byte gBattleCommunication -_080259E8: .4byte gBattlescriptCurrInstr - thumb_func_end atk81_setrest - - thumb_func_start atk82_jumpifnotfirstturn -atk82_jumpifnotfirstturn: @ 80259EC - push {r4,r5,lr} - ldr r5, _08025A20 @ =gBattlescriptCurrInstr - ldr r4, [r5] - ldrb r3, [r4, 0x1] - ldrb r0, [r4, 0x2] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r4, 0x3] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r4, 0x4] - lsls r0, 24 - orrs r3, r0 - ldr r2, _08025A24 @ =gDisableStructs - ldr r0, _08025A28 @ =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x16] - cmp r0, 0 - beq _08025A2C - adds r0, r4, 0x5 - str r0, [r5] - b _08025A2E - .align 2, 0 -_08025A20: .4byte gBattlescriptCurrInstr -_08025A24: .4byte gDisableStructs -_08025A28: .4byte gBankAttacker -_08025A2C: - str r3, [r5] -_08025A2E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end atk82_jumpifnotfirstturn - - thumb_func_start sub_8025A34 -sub_8025A34: @ 8025A34 - ldr r1, _08025A40 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_08025A40: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8025A34 - - thumb_func_start sub_8025A44 -sub_8025A44: @ 8025A44 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r0, _08025A9C @ =gNoOfAllBanks - ldrb r1, [r0] - mov r8, r0 - cmp r2, r1 - bge _08025AB8 - ldr r0, _08025AA0 @ =gBattleMons - mov r12, r0 - movs r0, 0x58 - muls r0, r3 - add r0, r12 - adds r5, r0, 0 - adds r5, 0x20 - ldr r6, _08025AA4 @ =0x02016003 - movs r3, 0 - ldr r7, _08025AA8 @ =gBattleCommunication - adds r4, r1, 0 -_08025A70: - mov r0, r12 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - beq _08025AB0 - ldrb r0, [r5] - cmp r0, 0x2B - beq _08025AB0 - movs r3, 0 - strb r2, [r6] - ldr r1, _08025AAC @ =gBankTarget - ldrb r0, [r1] - cmp r0, 0xFF - beq _08025AD0 - cmp r0, r2 - beq _08025AC4 - movs r0, 0x1 - strb r0, [r7, 0x5] - b _08025AB8 - .align 2, 0 -_08025A9C: .4byte gNoOfAllBanks -_08025AA0: .4byte gBattleMons -_08025AA4: .4byte 0x02016003 -_08025AA8: .4byte gBattleCommunication -_08025AAC: .4byte gBankTarget -_08025AB0: - adds r3, 0x58 - adds r2, 0x1 - cmp r2, r4 - blt _08025A70 -_08025AB8: - mov r1, r8 - ldrb r1, [r1] - cmp r2, r1 - beq _08025AD4 - movs r0, 0x1 - b _08025AD6 -_08025AC4: - ldr r0, _08025ACC @ =gBattleCommunication - strb r3, [r0, 0x5] - b _08025AB8 - .align 2, 0 -_08025ACC: .4byte gBattleCommunication -_08025AD0: - strb r2, [r1] - b _08025AB8 -_08025AD4: - movs r0, 0 -_08025AD6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8025A44 - - thumb_func_start sub_8025AE0 -sub_8025AE0: @ 8025AE0 - push {r4-r6,lr} - ldr r5, _08025B0C @ =gBattlescriptCurrInstr - ldr r1, [r5] - ldrb r4, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r4, r0 - ldr r6, _08025B10 @ =gBankTarget - ldrb r0, [r6] - bl sub_8025A44 - lsls r0, 24 - cmp r0, 0 - beq _08025B14 - str r4, [r5] - b _08025B56 - .align 2, 0 -_08025B0C: .4byte gBattlescriptCurrInstr -_08025B10: .4byte gBankTarget -_08025B14: - ldr r1, _08025B44 @ =gBattleMons - ldrb r3, [r6] - movs r0, 0x58 - muls r0, r3 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - adds r1, r0, 0 - cmp r1, 0xF - beq _08025B2C - cmp r1, 0x48 - bne _08025B50 -_08025B2C: - ldr r2, _08025B48 @ =gLastUsedAbility - strb r0, [r2] - ldr r1, _08025B4C @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - str r4, [r5] - ldrb r1, [r2] - adds r0, r3, 0 - bl RecordAbilityBattle - b _08025B56 - .align 2, 0 -_08025B44: .4byte gBattleMons -_08025B48: .4byte gLastUsedAbility -_08025B4C: .4byte gBattleCommunication -_08025B50: - ldr r0, [r5] - adds r0, 0x5 - str r0, [r5] -_08025B56: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8025AE0 - - thumb_func_start sub_8025B5C -sub_8025B5C: @ 8025B5C - push {r4,r5,lr} - ldr r5, _08025B84 @ =gDisableStructs - ldr r4, _08025B88 @ =gBankAttacker - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x9] - cmp r0, 0x3 - bne _08025B94 - ldr r2, _08025B8C @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08025B90 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08025BBE - .align 2, 0 -_08025B84: .4byte gDisableStructs -_08025B88: .4byte gBankAttacker -_08025B8C: .4byte gBattleMoveFlags -_08025B90: .4byte gBattleCommunication -_08025B94: - adds r0, 0x1 - movs r3, 0 - strb r0, [r1, 0x9] - ldr r2, _08025BCC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x1 - strb r0, [r2, 0x1] - strb r0, [r2, 0x2] - strb r0, [r2, 0x3] - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x9] - strb r0, [r2, 0x4] - movs r0, 0xFF - strb r0, [r2, 0x5] - ldr r0, _08025BD0 @ =gBattleCommunication - strb r3, [r0, 0x5] -_08025BBE: - ldr r1, _08025BD4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025BCC: .4byte gBattleTextBuff1 -_08025BD0: .4byte gBattleCommunication -_08025BD4: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8025B5C - - thumb_func_start atk86_stockpiletobasedamage -atk86_stockpiletobasedamage: @ 8025BD8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r3, _08025C10 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldr r7, _08025C14 @ =gDisableStructs - ldr r6, _08025C18 @ =gBankAttacker - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _08025C1C - str r2, [r3] - b _08025CC2 - .align 2, 0 -_08025C10: .4byte gBattlescriptCurrInstr -_08025C14: .4byte gDisableStructs -_08025C18: .4byte gBankAttacker -_08025C1C: - ldr r0, _08025CD0 @ =gBattleCommunication - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - beq _08025CA8 - ldr r0, _08025CD4 @ =gBattleMoveDamage - mov r8, r0 - ldr r4, _08025CD8 @ =gSideAffecting - ldr r5, _08025CDC @ =gBankTarget - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldrb r0, [r6] - movs r4, 0x58 - muls r0, r4 - ldr r2, _08025CE0 @ =gBattleMons - adds r0, r2 - ldrb r1, [r5] - muls r1, r4 - adds r1, r2 - ldr r2, _08025CE4 @ =gCurrentMove - ldrh r2, [r2] - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - ldrb r4, [r6] - str r4, [sp, 0x8] - ldrb r4, [r5] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldrb r2, [r6] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r7 - ldrb r1, [r1, 0x9] - adds r3, r0, 0 - muls r3, r1 - mov r1, r8 - str r3, [r1] - ldr r2, _08025CE8 @ =0x02000000 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x9] - ldr r1, _08025CEC @ =0x00016002 - adds r2, r1 - strb r0, [r2] - ldr r1, _08025CF0 @ =gProtectStructs - ldrb r0, [r6] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _08025CA8 - lsls r0, r3, 4 - subs r0, r3 - movs r1, 0xA - bl __divsi3 - mov r1, r8 - str r0, [r1] -_08025CA8: - ldr r2, _08025CF4 @ =gDisableStructs - ldr r0, _08025CF8 @ =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x9] - ldr r1, _08025CFC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08025CC2: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08025CD0: .4byte gBattleCommunication -_08025CD4: .4byte gBattleMoveDamage -_08025CD8: .4byte gSideAffecting -_08025CDC: .4byte gBankTarget -_08025CE0: .4byte gBattleMons -_08025CE4: .4byte gCurrentMove -_08025CE8: .4byte 0x02000000 -_08025CEC: .4byte 0x00016002 -_08025CF0: .4byte gProtectStructs -_08025CF4: .4byte gDisableStructs -_08025CF8: .4byte gBankAttacker -_08025CFC: .4byte gBattlescriptCurrInstr - thumb_func_end atk86_stockpiletobasedamage - - thumb_func_start sub_8025D00 -sub_8025D00: @ 8025D00 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _08025D40 @ =gBattlescriptCurrInstr - ldr r1, [r7] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldr r0, _08025D44 @ =gDisableStructs - mov r8, r0 - ldr r6, _08025D48 @ =gBankAttacker - ldrb r3, [r6] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - mov r1, r8 - adds r4, r0, r1 - ldrb r1, [r4, 0x9] - cmp r1, 0 - bne _08025D50 - str r2, [r7] - ldr r0, _08025D4C @ =gBattleCommunication - strb r1, [r0, 0x5] - b _08025DD0 - .align 2, 0 -_08025D40: .4byte gBattlescriptCurrInstr -_08025D44: .4byte gDisableStructs -_08025D48: .4byte gBankAttacker -_08025D4C: .4byte gBattleCommunication -_08025D50: - ldr r1, _08025D74 @ =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, r0, r1 - ldrh r0, [r1, 0x2C] - ldrh r3, [r1, 0x28] - cmp r0, r3 - bne _08025D80 - movs r0, 0 - strb r0, [r4, 0x9] - str r2, [r7] - ldr r1, _08025D78 @ =gBankTarget - ldrb r0, [r6] - strb r0, [r1] - ldr r1, _08025D7C @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08025DD0 - .align 2, 0 -_08025D74: .4byte gBattleMons -_08025D78: .4byte gBankTarget -_08025D7C: .4byte gBattleCommunication -_08025D80: - ldr r5, _08025DDC @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - ldrb r1, [r4, 0x9] - movs r2, 0x3 - subs r2, r1 - movs r4, 0x1 - adds r1, r4, 0 - lsls r1, r2 - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _08025D9C - str r4, [r5] -_08025D9C: - ldr r0, [r5] - negs r0, r0 - str r0, [r5] - ldr r2, _08025DE0 @ =0x02000000 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x9] - ldr r1, _08025DE4 @ =0x00016002 - adds r2, r1 - movs r3, 0 - strb r0, [r2] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - strb r3, [r0, 0x9] - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - ldr r1, _08025DE8 @ =gBankTarget - ldrb r0, [r6] - strb r0, [r1] -_08025DD0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08025DDC: .4byte gBattleMoveDamage -_08025DE0: .4byte 0x02000000 -_08025DE4: .4byte 0x00016002 -_08025DE8: .4byte gBankTarget - thumb_func_end sub_8025D00 - - thumb_func_start atk88_negativedamage -atk88_negativedamage: @ 8025DEC - push {lr} - ldr r2, _08025E14 @ =gBattleMoveDamage - ldr r0, _08025E18 @ =gHP_dealt - ldr r0, [r0] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - negs r0, r0 - str r0, [r2] - cmp r0, 0 - bne _08025E08 - movs r0, 0x1 - negs r0, r0 - str r0, [r2] -_08025E08: - ldr r1, _08025E1C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08025E14: .4byte gBattleMoveDamage -_08025E18: .4byte gHP_dealt -_08025E1C: .4byte gBattlescriptCurrInstr - thumb_func_end atk88_negativedamage - - thumb_func_start sub_8025E20 -sub_8025E20: @ 8025E20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r3 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r0, 0 - mov r9, r0 - mov r10, r0 - movs r0, 0x40 - ands r0, r5 - cmp r0, 0 - beq _08025E54 - ldr r0, _08025E4C @ =gActiveBank - ldr r1, _08025E50 @ =gBankAttacker - b _08025E58 - .align 2, 0 -_08025E4C: .4byte gActiveBank -_08025E50: .4byte gBankAttacker -_08025E54: - ldr r0, _08025EF8 @ =gActiveBank - ldr r1, _08025EFC @ =gBankTarget -_08025E58: - ldrb r1, [r1] - strb r1, [r0] - movs r0, 0xBF - ands r5, r0 - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - beq _08025E72 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08025E72: - movs r0, 0x7F - ands r5, r0 - movs r0, 0x20 - ands r0, r5 - cmp r0, 0 - beq _08025E88 - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 -_08025E88: - movs r0, 0xDF - ands r5, r0 - ldr r1, _08025F00 @ =gBattleTextBuff1 - movs r4, 0 - movs r2, 0xFD - strb r2, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - strb r7, [r1, 0x2] - movs r3, 0x1 - negs r3, r3 - mov r12, r3 - movs r0, 0xFF - strb r0, [r1, 0x3] - lsls r0, r6, 24 - cmp r0, 0 - blt _08025EAC - b _080261B0 -_08025EAC: - ldr r4, _08025F04 @ =gSideTimer - ldr r1, _08025EF8 @ =gActiveBank - ldrb r0, [r1] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _08025F54 - mov r2, r9 - cmp r2, 0 - bne _08025F54 - ldr r0, _08025F08 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08025F84 - cmp r5, 0x1 - bne _08025F74 - ldr r4, _08025F0C @ =gSpecialStatuses - ldr r3, _08025EF8 @ =gActiveBank - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _08025F14 - ldr r0, _08025F10 @ =gBattlescriptCurrInstr - mov r4, r8 - str r4, [r0] - b _08025F74 - .align 2, 0 -_08025EF8: .4byte gActiveBank -_08025EFC: .4byte gBankTarget -_08025F00: .4byte gBattleTextBuff1 -_08025F04: .4byte gSideTimer -_08025F08: .4byte gCurrentMove -_08025F0C: .4byte gSpecialStatuses -_08025F10: .4byte gBattlescriptCurrInstr -_08025F14: - mov r0, r8 - bl b_movescr_stack_push - ldr r0, _08025F40 @ =0x02000000 - ldr r6, _08025F44 @ =gActiveBank - ldrb r1, [r6] - ldr r2, _08025F48 @ =0x00016003 - adds r0, r2 - strb r1, [r0] - ldr r1, _08025F4C @ =gBattlescriptCurrInstr - ldr r0, _08025F50 @ =gUnknown_081D9128 - str r0, [r1] - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08025F74 - .align 2, 0 -_08025F40: .4byte 0x02000000 -_08025F44: .4byte gActiveBank -_08025F48: .4byte 0x00016003 -_08025F4C: .4byte gBattlescriptCurrInstr -_08025F50: .4byte gUnknown_081D9128 -_08025F54: - ldr r0, _08025F78 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08025F84 - mov r3, r10 - cmp r3, 0x1 - beq _08025F84 - movs r0, 0 - bl sub_801C108 - lsls r0, 24 - cmp r0, 0 - beq _08025F84 - ldr r1, _08025F7C @ =gBattlescriptCurrInstr - ldr r0, _08025F80 @ =BattleScript_1D83D6 - str r0, [r1] -_08025F74: - movs r0, 0x1 - b _080262A4 - .align 2, 0 -_08025F78: .4byte gCurrentMove -_08025F7C: .4byte gBattlescriptCurrInstr -_08025F80: .4byte BattleScript_1D83D6 -_08025F84: - ldr r2, _08025FCC @ =gBattleMons - ldr r1, _08025FD0 @ =gActiveBank - ldrb r3, [r1] - movs r4, 0x58 - adds r0, r3, 0 - muls r0, r4 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r10, r2 - cmp r0, 0x1D - beq _08025FA0 - cmp r0, 0x49 - bne _08026040 -_08025FA0: - mov r0, r9 - cmp r0, 0 - bne _08026040 - ldr r0, _08025FD4 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08026040 - cmp r5, 0x1 - bne _08025F74 - ldr r4, _08025FD8 @ =gSpecialStatuses - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _08025FE0 - ldr r0, _08025FDC @ =gBattlescriptCurrInstr - mov r1, r8 - str r1, [r0] - b _08025F74 - .align 2, 0 -_08025FCC: .4byte gBattleMons -_08025FD0: .4byte gActiveBank -_08025FD4: .4byte gCurrentMove -_08025FD8: .4byte gSpecialStatuses -_08025FDC: .4byte gBattlescriptCurrInstr -_08025FE0: - mov r0, r8 - bl b_movescr_stack_push - ldr r0, _08026028 @ =0x02000000 - ldr r2, _0802602C @ =gActiveBank - ldrb r1, [r2] - ldr r3, _08026030 @ =0x00016003 - adds r0, r3 - strb r1, [r0] - ldr r1, _08026034 @ =gBattlescriptCurrInstr - ldr r0, _08026038 @ =gUnknown_081D989B - str r0, [r1] - ldr r1, _0802603C @ =gLastUsedAbility - ldrb r0, [r2] - movs r6, 0x58 - muls r0, r6 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r0, _0802602C @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08025F74 - .align 2, 0 -_08026028: .4byte 0x02000000 -_0802602C: .4byte gActiveBank -_08026030: .4byte 0x00016003 -_08026034: .4byte gBattlescriptCurrInstr -_08026038: .4byte gUnknown_081D989B -_0802603C: .4byte gLastUsedAbility -_08026040: - ldr r1, _08026090 @ =gActiveBank - ldrb r0, [r1] - movs r4, 0x58 - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x33 - bne _080260A8 - mov r2, r9 - cmp r2, 0 - bne _080260A8 - cmp r7, 0x6 - bne _080260A8 - cmp r5, 0x1 - bne _08025F74 - mov r0, r8 - bl b_movescr_stack_push - ldr r0, _08026094 @ =0x02000000 - ldr r3, _08026090 @ =gActiveBank - ldrb r1, [r3] - ldr r6, _08026098 @ =0x00016003 - adds r0, r6 - strb r1, [r0] - ldr r1, _0802609C @ =gBattlescriptCurrInstr - ldr r0, _080260A0 @ =gUnknown_081D9903 - str r0, [r1] - ldr r1, _080260A4 @ =gLastUsedAbility - ldrb r0, [r3] - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r3] - ldrb r1, [r1] - bl RecordAbilityBattle - b _08025F74 - .align 2, 0 -_08026090: .4byte gActiveBank -_08026094: .4byte 0x02000000 -_08026098: .4byte 0x00016003 -_0802609C: .4byte gBattlescriptCurrInstr -_080260A0: .4byte gUnknown_081D9903 -_080260A4: .4byte gLastUsedAbility -_080260A8: - ldr r1, _080260FC @ =gActiveBank - ldrb r0, [r1] - movs r4, 0x58 - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x34 - bne _08026114 - mov r2, r9 - cmp r2, 0 - bne _08026114 - cmp r7, 0x1 - bne _08026114 - cmp r5, 0x1 - beq _080260CA - b _08025F74 -_080260CA: - mov r0, r8 - bl b_movescr_stack_push - ldr r0, _08026100 @ =0x02000000 - ldr r3, _080260FC @ =gActiveBank - ldrb r1, [r3] - ldr r6, _08026104 @ =0x00016003 - adds r0, r6 - strb r1, [r0] - ldr r1, _08026108 @ =gBattlescriptCurrInstr - ldr r0, _0802610C @ =gUnknown_081D9903 - str r0, [r1] - ldr r1, _08026110 @ =gLastUsedAbility - ldrb r0, [r3] - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r3] - ldrb r1, [r1] - bl RecordAbilityBattle - b _08025F74 - .align 2, 0 -_080260FC: .4byte gActiveBank -_08026100: .4byte 0x02000000 -_08026104: .4byte 0x00016003 -_08026108: .4byte gBattlescriptCurrInstr -_0802610C: .4byte gUnknown_081D9903 -_08026110: .4byte gLastUsedAbility -_08026114: - ldr r0, _080261A0 @ =gActiveBank - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x13 - bne _0802612C - cmp r5, 0 - bne _0802612C - b _08025F74 -_0802612C: - lsls r0, r6, 24 - asrs r0, 28 - movs r1, 0x7 - ands r0, r1 - negs r0, r0 - lsls r0, 24 - ldr r3, _080261A4 @ =gBattleTextBuff2 - movs r4, 0 - movs r1, 0xFD - strb r1, [r3] - movs r2, 0x1 - lsrs r6, r0, 24 - asrs r0, 24 - subs r1, 0xFF - cmp r0, r1 - bne _08026156 - strb r4, [r3, 0x1] - movs r0, 0xD3 - strb r0, [r3, 0x2] - strb r4, [r3, 0x3] - movs r2, 0x4 -_08026156: - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xD4 - strb r0, [r1] - adds r2, 0x1 - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xFF - strb r0, [r1] - ldr r1, _080261A0 @ =gActiveBank - ldrb r2, [r1] - movs r0, 0x58 - muls r0, r2 - adds r0, r7, r0 - mov r1, r10 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08026206 - movs r1, 0 - ldr r0, _080261A8 @ =gBankTarget - ldrb r0, [r0] - ldr r3, _080261AC @ =gBattleCommunication - mov r8, r3 - cmp r0, r2 - bne _0802619A - movs r1, 0x1 -_0802619A: - mov r4, r8 - strb r1, [r4, 0x5] - b _08026234 - .align 2, 0 -_080261A0: .4byte gActiveBank -_080261A4: .4byte gBattleTextBuff2 -_080261A8: .4byte gBankTarget -_080261AC: .4byte gBattleCommunication -_080261B0: - asrs r6, r0, 28 - movs r0, 0x7 - ands r6, r0 - ldr r3, _08026210 @ =gBattleTextBuff2 - strb r2, [r3] - movs r2, 0x1 - cmp r6, 0x2 - bne _080261CA - strb r4, [r3, 0x1] - movs r0, 0xD1 - strb r0, [r3, 0x2] - strb r4, [r3, 0x3] - movs r2, 0x4 -_080261CA: - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xD2 - strb r0, [r1] - adds r2, 0x1 - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - ldrb r0, [r1] - mov r2, r12 - orrs r0, r2 - strb r0, [r1] - ldr r2, _08026214 @ =gBattleMons - ldr r4, _08026218 @ =gActiveBank - ldrb r3, [r4] - movs r0, 0x58 - muls r0, r3 - adds r0, r7, r0 - adds r1, r2, 0 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - mov r10, r2 - cmp r0, 0xC - bne _08026220 -_08026206: - ldr r1, _0802621C @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - mov r8, r1 - b _08026234 - .align 2, 0 -_08026210: .4byte gBattleTextBuff2 -_08026214: .4byte gBattleMons -_08026218: .4byte gActiveBank -_0802621C: .4byte gBattleCommunication -_08026220: - movs r1, 0 - ldr r0, _080262B4 @ =gBankTarget - ldrb r0, [r0] - ldr r2, _080262B8 @ =gBattleCommunication - mov r8, r2 - cmp r0, r3 - bne _08026230 - movs r1, 0x1 -_08026230: - mov r3, r8 - strb r1, [r3, 0x5] -_08026234: - ldr r2, _080262BC @ =gActiveBank - ldrb r0, [r2] - movs r4, 0x58 - adds r1, r0, 0 - muls r1, r4 - adds r1, r7, r1 - mov r3, r10 - adds r3, 0x18 - adds r1, r3 - lsls r0, r6, 24 - asrs r0, 24 - ldrb r6, [r1] - adds r0, r6 - strb r0, [r1] - ldrb r0, [r2] - muls r0, r4 - adds r0, r7, r0 - adds r1, r0, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0 - bge _08026264 - movs r0, 0 - strb r0, [r1] -_08026264: - ldr r1, _080262BC @ =gActiveBank - ldrb r0, [r1] - muls r0, r4 - adds r0, r7, r0 - adds r1, r0, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0xC - ble _0802627A - movs r0, 0xC - strb r0, [r1] -_0802627A: - mov r2, r8 - ldrb r0, [r2, 0x5] - cmp r0, 0x2 - bne _080262A2 - movs r3, 0x1 - ands r3, r5 - cmp r3, 0 - beq _08026294 - ldr r0, _080262C0 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] -_08026294: - mov r4, r8 - ldrb r0, [r4, 0x5] - cmp r0, 0x2 - bne _080262A2 - cmp r3, 0 - bne _080262A2 - b _08025F74 -_080262A2: - movs r0, 0 -_080262A4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080262B4: .4byte gBankTarget -_080262B8: .4byte gBattleCommunication -_080262BC: .4byte gActiveBank -_080262C0: .4byte gBattleMoveFlags - thumb_func_end sub_8025E20 - - thumb_func_start atk89_statbuffchange -atk89_statbuffchange: @ 80262C4 - push {r4,r5,lr} - ldr r5, _0802630C @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r3, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r3, r0 - ldr r0, _08026310 @ =0x02000000 - ldr r1, _08026314 @ =0x0001601e - adds r0, r1 - ldrb r4, [r0] - movs r0, 0xF0 - ands r0, r4 - lsls r0, 24 - asrs r0, 24 - movs r1, 0xF - ands r1, r4 - ldrb r2, [r2, 0x1] - bl sub_8025E20 - lsls r0, 24 - cmp r0, 0 - bne _08026304 - ldr r0, [r5] - adds r0, 0x6 - str r0, [r5] -_08026304: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802630C: .4byte gBattlescriptCurrInstr -_08026310: .4byte 0x02000000 -_08026314: .4byte 0x0001601e - thumb_func_end atk89_statbuffchange - - thumb_func_start atk8A_normalisebuffs -atk8A_normalisebuffs: @ 8026318 - push {r4-r7,lr} - movs r2, 0 - ldr r0, _08026360 @ =gNoOfAllBanks - ldrb r1, [r0] - ldr r0, _08026364 @ =gBattlescriptCurrInstr - mov r12, r0 - cmp r2, r1 - bge _08026350 - ldr r0, _08026368 @ =gBattleMons - movs r4, 0x6 - adds r5, r1, 0 - movs r7, 0x58 - adds r6, r0, 0 - adds r6, 0x18 -_08026334: - adds r3, r2, 0x1 - movs r1, 0x7 - adds r0, r2, 0 - muls r0, r7 - adds r0, r6 - adds r0, 0x7 -_08026340: - strb r4, [r0] - subs r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _08026340 - adds r2, r3, 0 - cmp r2, r5 - blt _08026334 -_08026350: - mov r1, r12 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08026360: .4byte gNoOfAllBanks -_08026364: .4byte gBattlescriptCurrInstr -_08026368: .4byte gBattleMons - thumb_func_end atk8A_normalisebuffs - - thumb_func_start atk8B_setbide -atk8B_setbide: @ 802636C - push {r4,r5,lr} - ldr r4, _080263C4 @ =gBattleMons - ldr r3, _080263C8 @ =gBankAttacker - ldrb r0, [r3] - movs r5, 0x58 - adds r2, r0, 0 - muls r2, r5 - adds r4, 0x50 - adds r2, r4 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - ldr r1, _080263CC @ =gLockedMove - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, _080263D0 @ =gCurrentMove - ldrh r1, [r1] - movs r2, 0 - strh r1, [r0] - ldr r1, _080263D4 @ =gTakenDmg - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - str r2, [r0] - ldrb r0, [r3] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 2 - orrs r0, r2 - str r0, [r1] - ldr r1, _080263D8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080263C4: .4byte gBattleMons -_080263C8: .4byte gBankAttacker -_080263CC: .4byte gLockedMove -_080263D0: .4byte gCurrentMove -_080263D4: .4byte gTakenDmg -_080263D8: .4byte gBattlescriptCurrInstr - thumb_func_end atk8B_setbide - - thumb_func_start atk8C_confuseifrepeatingattackends -atk8C_confuseifrepeatingattackends: @ 80263DC - push {lr} - ldr r1, _0802640C @ =gBattleMons - ldr r0, _08026410 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 4 - ands r0, r1 - cmp r0, 0 - bne _080263FE - ldr r1, _08026414 @ =gBattleCommunication - movs r0, 0x75 - strb r0, [r1, 0x3] -_080263FE: - ldr r1, _08026418 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802640C: .4byte gBattleMons -_08026410: .4byte gBankAttacker -_08026414: .4byte gBattleCommunication -_08026418: .4byte gBattlescriptCurrInstr - thumb_func_end atk8C_confuseifrepeatingattackends - - thumb_func_start atk8D_setloopcounter -atk8D_setloopcounter: @ 802641C - push {r4,r5,lr} - ldr r0, _08026430 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x1] - cmp r1, 0 - beq _08026438 - ldr r0, _08026434 @ =gMultiHitCounter - strb r1, [r0] - b _08026452 - .align 2, 0 -_08026430: .4byte gBattlescriptCurrInstr -_08026434: .4byte gMultiHitCounter -_08026438: - ldr r4, _08026460 @ =gMultiHitCounter - bl Random - movs r5, 0x3 - ands r0, r5 - strb r0, [r4] - cmp r0, 0x1 - bls _0802644E - bl Random - ands r0, r5 -_0802644E: - adds r0, 0x2 - strb r0, [r4] -_08026452: - ldr r1, _08026464 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08026460: .4byte gMultiHitCounter -_08026464: .4byte gBattlescriptCurrInstr - thumb_func_end atk8D_setloopcounter - - thumb_func_start sub_8026468 -sub_8026468: @ 8026468 - push {r4,lr} - ldr r1, _080264A8 @ =0x02000000 - ldr r0, _080264AC @ =0x000160e0 - adds r2, r1, r0 - movs r3, 0 - movs r0, 0xFD - strb r0, [r2] - ldr r2, _080264B0 @ =0x000160e1 - adds r0, r1, r2 - movs r2, 0x1 - strb r2, [r0] - ldr r4, _080264B4 @ =0x000160e2 - adds r0, r1, r4 - strb r2, [r0] - adds r4, 0x1 - adds r0, r1, r4 - strb r2, [r0] - ldr r2, _080264B8 @ =0x000160e4 - adds r0, r1, r2 - strb r3, [r0] - adds r4, 0x2 - adds r1, r4 - movs r0, 0xFF - strb r0, [r1] - ldr r1, _080264BC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080264A8: .4byte 0x02000000 -_080264AC: .4byte 0x000160e0 -_080264B0: .4byte 0x000160e1 -_080264B4: .4byte 0x000160e2 -_080264B8: .4byte 0x000160e4 -_080264BC: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8026468 - - thumb_func_start sub_80264C0 -sub_80264C0: @ 80264C0 - push {r4-r7,lr} - ldr r6, _080264F4 @ =gBattleMons - ldr r7, _080264F8 @ =gBankAttacker - ldrb r0, [r7] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - adds r1, r6 - adds r1, 0x2A - ldr r4, _080264FC @ =gBankTarget - ldrb r3, [r4] - adds r0, r3, 0 - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bcc _0802650C - ldr r0, _08026500 @ =0x02000000 - ldr r2, _08026504 @ =0x00016064 - adds r1, r3, r2 - adds r1, r0 - ldr r2, _08026508 @ =gBattlePartyID - lsls r0, r3, 1 - b _08026568 - .align 2, 0 -_080264F4: .4byte gBattleMons -_080264F8: .4byte gBankAttacker -_080264FC: .4byte gBankTarget -_08026500: .4byte 0x02000000 -_08026504: .4byte 0x00016064 -_08026508: .4byte gBattlePartyID -_0802650C: - bl Random - movs r3, 0xFF - ands r3, r0 - ldrb r0, [r7] - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r2, [r0] - ldrb r4, [r4] - adds r0, r4, 0 - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r0] - adds r2, r1 - adds r0, r3, 0 - muls r0, r2 - asrs r0, 8 - adds r0, 0x1 - lsrs r1, 2 - cmp r0, r1 - bhi _0802655C - ldr r3, _08026558 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - movs r0, 0 - b _08026576 - .align 2, 0 -_08026558: .4byte gBattlescriptCurrInstr -_0802655C: - ldr r0, _0802657C @ =0x02000000 - ldr r2, _08026580 @ =0x00016064 - adds r1, r4, r2 - adds r1, r0 - ldr r2, _08026584 @ =gBattlePartyID - lsls r0, r4, 1 -_08026568: - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r1, _08026588 @ =gBattlescriptCurrInstr - ldr r0, _0802658C @ =gUnknown_081D90FC - str r0, [r1] - movs r0, 0x1 -_08026576: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0802657C: .4byte 0x02000000 -_08026580: .4byte 0x00016064 -_08026584: .4byte gBattlePartyID -_08026588: .4byte gBattlescriptCurrInstr -_0802658C: .4byte gUnknown_081D90FC - thumb_func_end sub_80264C0 - - thumb_func_start sub_8026590 -sub_8026590: @ 8026590 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _08026628 @ =gBattleTypeFlags - ldrh r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080265A4 - b _0802687C -_080265A4: - ldr r5, _0802662C @ =gBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - ldr r1, _08026630 @ =gEnemyParty - mov r8, r1 - cmp r0, 0 - bne _080265BA - ldr r2, _08026634 @ =gPlayerParty - mov r8, r2 -_080265BA: - ldrh r1, [r4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08026638 - movs r7, 0 - movs r6, 0 - ldrb r0, [r5] - bl sub_803FC34 - lsls r0, 24 - lsrs r0, 24 - bl sub_803FBFC - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _080265E0 - movs r6, 0x3 -_080265E0: - adds r5, r6, 0 - adds r0, r5, 0x3 - cmp r5, r0 - bge _08026678 -_080265E8: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0802661A - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0802661A - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0802661A - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_0802661A: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0x3 - cmp r5, r0 - blt _080265E8 - b _08026678 - .align 2, 0 -_08026628: .4byte gBattleTypeFlags -_0802662C: .4byte gBankTarget -_08026630: .4byte gEnemyParty -_08026634: .4byte gPlayerParty -_08026638: - movs r7, 0 - movs r5, 0 -_0802663C: - movs r0, 0x64 - muls r0, r5 - mov r2, r8 - adds r4, r2, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0802666E - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0802666E - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0802666E - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_0802666E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0802663C -_08026678: - cmp r7, 0x1 - bhi _08026688 - ldr r0, _080266BC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x41 - ands r0, r1 - cmp r0, 0x1 - bne _080266A0 -_08026688: - cmp r7, 0x2 - bhi _080266C4 - ldr r0, _080266BC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080266C4 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080266C4 -_080266A0: - ldr r3, _080266C0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08026880 - .align 2, 0 -_080266BC: .4byte gBattleTypeFlags -_080266C0: .4byte gBattlescriptCurrInstr -_080266C4: - bl sub_80264C0 - lsls r0, 24 - cmp r0, 0 - bne _080266D0 - b _08026880 -_080266D0: - ldr r0, _08026710 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08026774 -_080266DC: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08026714 @ =gBankTarget - ldrb r0, [r0] - bl sub_803FC34 - lsls r0, 24 - lsrs r0, 24 - bl sub_803FBFC - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _08026718 - adds r0, r6, 0x3 - lsls r0, 24 - lsrs r5, r0, 24 - b _0802671A - .align 2, 0 -_08026710: .4byte gBattleTypeFlags -_08026714: .4byte gBankTarget -_08026718: - adds r5, r6, 0 -_0802671A: - ldr r4, _0802676C @ =gBattlePartyID - ldr r0, _08026770 @ =gBankTarget - ldrb r2, [r0] - lsls r1, r2, 1 - adds r1, r4 - lsls r0, r5, 16 - lsrs r3, r0, 16 - ldrh r1, [r1] - cmp r3, r1 - beq _080266DC - movs r0, 0x2 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r4 - ldrh r0, [r0] - cmp r3, r0 - beq _080266DC - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080266DC - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _080266DC - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080266DC - b _08026832 - .align 2, 0 -_0802676C: .4byte gBattlePartyID -_08026770: .4byte gBankTarget -_08026774: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080267E4 - ldr r6, _080267DC @ =gBattlePartyID -_0802677E: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080267E0 @ =gBankTarget - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r6 - adds r2, r5, 0 - ldrh r0, [r0] - cmp r2, r0 - beq _0802677E - movs r0, 0x2 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r6 - ldrh r0, [r0] - cmp r2, r0 - beq _0802677E - movs r0, 0x64 - muls r0, r5 - mov r2, r8 - adds r4, r2, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0802677E - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _0802677E - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0802677E - b _08026832 - .align 2, 0 -_080267DC: .4byte gBattlePartyID -_080267E0: .4byte gBankTarget -_080267E4: - ldr r6, _0802686C @ =gBattlePartyID -_080267E6: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08026870 @ =gBankTarget - ldrb r0, [r0] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - cmp r5, r0 - beq _080267E6 - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080267E6 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _080267E6 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080267E6 -_08026832: - ldr r0, _08026874 @ =0x02000000 - ldr r4, _08026870 @ =gBankTarget - ldrb r1, [r4] - ldr r2, _08026878 @ =0x00016068 - adds r1, r2 - adds r1, r0 - strb r5, [r1] - bl IsLinkDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08026850 - ldrb r0, [r4] - bl sub_8012258 -_08026850: - ldrb r0, [r4] - adds r1, r5, 0 - movs r2, 0 - bl sub_8094B6C - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_8094B6C - b _08026880 - .align 2, 0 -_0802686C: .4byte gBattlePartyID -_08026870: .4byte gBankTarget -_08026874: .4byte 0x02000000 -_08026878: .4byte 0x00016068 -_0802687C: - bl sub_80264C0 -_08026880: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8026590 - - thumb_func_start sub_802688C -sub_802688C: @ 802688C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - ldr r2, _08026920 @ =gBattleMons - ldr r3, _08026924 @ =gBankAttacker - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r1, r2, 0 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - mov r8, r2 - cmp r0, 0 - beq _080268CE - movs r5, 0x58 - adds r2, r1, 0 -_080268B4: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080268CE - lsls r1, r6, 1 - ldrb r0, [r3] - muls r0, r5 - adds r1, r0 - adds r1, r2 - ldrh r0, [r1] - cmp r0, 0 - bne _080268B4 -_080268CE: - movs r3, 0 - cmp r3, r6 - bcs _08026950 - ldr r0, _08026928 @ =gBattleMoves - mov r10, r0 - ldr r5, _08026920 @ =gBattleMons - mov r12, r5 - ldr r7, _08026924 @ =gBankAttacker - ldrb r0, [r7] - movs r4, 0x58 - adds r5, r0, 0 - muls r5, r4 - movs r0, 0xC - add r0, r12 - mov r9, r0 -_080268EC: - lsls r0, r3, 1 - adds r0, r5 - add r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrb r2, [r0, 0x2] - cmp r2, 0x9 - bne _0802692E - mov r0, r8 - adds r1, r5, r0 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _0802691A - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _0802692C -_0802691A: - movs r2, 0x7 - b _0802692E - .align 2, 0 -_08026920: .4byte gBattleMons -_08026924: .4byte gBankAttacker -_08026928: .4byte gBattleMoves -_0802692C: - movs r2, 0 -_0802692E: - ldrb r0, [r7] - muls r0, r4 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r2, r1 - beq _08026946 - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - bne _08026950 -_08026946: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r6 - bcc _080268EC -_08026950: - cmp r3, r6 - bne _08026974 - ldr r3, _08026970 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08026A18 - .align 2, 0 -_08026970: .4byte gBattlescriptCurrInstr -_08026974: - movs r7, 0x3 - ldr r5, _080269CC @ =gBattleMoves - mov r9, r5 -_0802697A: - bl Random - adds r3, r0, 0 - ands r3, r7 - cmp r3, r6 - bcs _0802697A - ldr r4, _080269D0 @ =gBattleMons - lsls r1, r3, 1 - ldr r3, _080269D4 @ =gBankAttacker - ldrb r2, [r3] - movs r0, 0x58 - adds r5, r2, 0 - muls r5, r0 - adds r1, r5 - adds r0, r4, 0 - adds r0, 0xC - adds r1, r0 - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r2, [r0, 0x2] - mov r8, r4 - adds r4, r3, 0 - cmp r2, 0x9 - bne _080269DA - mov r0, r8 - adds r2, r5, r0 - adds r0, r2, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _080269C8 - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _080269D8 -_080269C8: - movs r2, 0x7 - b _080269DA - .align 2, 0 -_080269CC: .4byte gBattleMoves -_080269D0: .4byte gBattleMons -_080269D4: .4byte gBankAttacker -_080269D8: - movs r2, 0 -_080269DA: - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - add r0, r8 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r5, [r1] - cmp r2, r5 - beq _0802697A - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - beq _0802697A - strb r2, [r1] - ldrb r0, [r4] - muls r0, r3 - add r0, r8 - adds r0, 0x22 - strb r2, [r0] - ldr r1, _08026A28 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, _08026A2C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08026A18: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08026A28: .4byte gBattleTextBuff1 -_08026A2C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802688C - - thumb_func_start atk91_givemoney -atk91_givemoney: @ 8026A30 - push {r4,lr} - ldr r0, _08026A8C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08026AAC - ldr r4, _08026A90 @ =gPaydayMoney - ldrh r0, [r4] - cmp r0, 0 - beq _08026AAC - ldr r0, _08026A94 @ =gSaveBlock1 + 0x490 - ldrh r2, [r4] - ldr r1, _08026A98 @ =0x02000000 - ldr r3, _08026A9C @ =0x00016056 - adds r1, r3 - ldrb r1, [r1] - muls r1, r2 - bl sub_80B79B8 - ldr r1, _08026AA0 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - movs r0, 0x2 - strb r0, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - ldrh r2, [r4] - strb r2, [r1, 0x4] - movs r0, 0xFF - lsls r0, 8 - ands r0, r2 - lsrs r0, 8 - strb r0, [r1, 0x5] - movs r0, 0xFF - strb r0, [r1, 0x6] - ldr r4, _08026AA4 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl b_movescr_stack_push - ldr r0, _08026AA8 @ =gUnknown_081D95DB - str r0, [r4] - b _08026AB4 - .align 2, 0 -_08026A8C: .4byte gBattleTypeFlags -_08026A90: .4byte gPaydayMoney -_08026A94: .4byte gSaveBlock1 + 0x490 -_08026A98: .4byte 0x02000000 -_08026A9C: .4byte 0x00016056 -_08026AA0: .4byte gBattleTextBuff1 -_08026AA4: .4byte gBattlescriptCurrInstr -_08026AA8: .4byte gUnknown_081D95DB -_08026AAC: - ldr r1, _08026ABC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08026AB4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08026ABC: .4byte gBattlescriptCurrInstr - thumb_func_end atk91_givemoney - - thumb_func_start atk92_setlightscreen -atk92_setlightscreen: @ 8026AC0 - push {r4-r6,lr} - ldr r4, _08026AF0 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankIdentity - ldr r6, _08026AF4 @ =gSideAffecting - movs r5, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r6 - ldrh r1, [r1] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08026B00 - ldr r2, _08026AF8 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08026AFC @ =gBattleCommunication - movs r0, 0 - b _08026B60 - .align 2, 0 -_08026AF0: .4byte gBankAttacker -_08026AF4: .4byte gSideAffecting -_08026AF8: .4byte gBattleMoveFlags -_08026AFC: .4byte gBattleCommunication -_08026B00: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r6 - ldrh r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r4] - bl GetBankIdentity - ldr r2, _08026B50 @ =gSideTimer - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strb r1, [r0, 0x1] - ldr r0, _08026B54 @ =gBattleTypeFlags - ldrh r1, [r0] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08026B5C - movs r0, 0x1 - bl CountAliveMons - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08026B5C - ldr r1, _08026B58 @ =gBattleCommunication - movs r0, 0x4 - b _08026B60 - .align 2, 0 -_08026B50: .4byte gSideTimer -_08026B54: .4byte gBattleTypeFlags -_08026B58: .4byte gBattleCommunication -_08026B5C: - ldr r1, _08026B70 @ =gBattleCommunication - movs r0, 0x3 -_08026B60: - strb r0, [r1, 0x5] - ldr r1, _08026B74 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08026B70: .4byte gBattleCommunication -_08026B74: .4byte gBattlescriptCurrInstr - thumb_func_end atk92_setlightscreen - - thumb_func_start sub_8026B78 -sub_8026B78: @ 8026B78 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r7, _08026BA8 @ =gBattleMons - ldr r6, _08026BAC @ =gBankTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08026BB4 - ldr r1, _08026BB0 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _08026BCE - .align 2, 0 -_08026BA8: .4byte gBattleMons -_08026BAC: .4byte gBankTarget -_08026BB0: .4byte gEnigmaBerries -_08026BB4: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_08026BCE: - ldr r1, _08026C4C @ =gStringBank - ldr r5, _08026C50 @ =gBankTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _08026C0C - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _08026C0C - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemBattle - ldr r2, _08026C54 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_08026C0C: - ldr r0, _08026C58 @ =gBattleMons - mov r8, r0 - ldr r1, _08026C50 @ =gBankTarget - ldrb r2, [r1] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - mov r3, r8 - adds r5, r0, r3 - adds r0, r5, 0 - adds r0, 0x20 - ldrb r3, [r0] - mov r10, r8 - cmp r3, 0x5 - bne _08026C6C - ldr r2, _08026C5C @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r0, _08026C60 @ =gLastUsedAbility - strb r3, [r0] - ldr r1, _08026C64 @ =gBattlescriptCurrInstr - ldr r0, _08026C68 @ =gUnknown_081D9826 - str r0, [r1] - ldr r1, _08026C50 @ =gBankTarget - ldrb r0, [r1] - movs r1, 0x5 - bl RecordAbilityBattle - b _08026E40 - .align 2, 0 -_08026C4C: .4byte gStringBank -_08026C50: .4byte gBankTarget -_08026C54: .4byte gSpecialStatuses -_08026C58: .4byte gBattleMons -_08026C5C: .4byte gBattleMoveFlags -_08026C60: .4byte gLastUsedAbility -_08026C64: .4byte gBattlescriptCurrInstr -_08026C68: .4byte gUnknown_081D9826 -_08026C6C: - ldr r1, _08026CE0 @ =gStatuses3 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x18 - ands r0, r1 - cmp r0, 0 - bne _08026CF4 - ldr r1, _08026CE4 @ =gBattleMoves - ldr r0, _08026CE8 @ =gCurrentMove - ldrh r0, [r0] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r7, _08026CEC @ =gBankAttacker - ldrb r0, [r7] - muls r0, r6 - add r0, r10 - adds r0, 0x2A - ldrb r0, [r0] - adds r1, r5, 0 - adds r1, 0x2A - ldrb r1, [r1] - subs r0, r1 - ldrb r2, [r2, 0x3] - adds r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x1 - cmp r0, r4 - bge _08026CDC - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - add r1, r10 - adds r1, 0x2A - ldr r2, _08026CF0 @ =gBankTarget - ldrb r0, [r2] - muls r0, r6 - add r0, r10 - adds r0, 0x2A - ldrb r1, [r1] - movs r4, 0x1 - ldrb r0, [r0] - cmp r1, r0 - bcs _08026D20 -_08026CDC: - mov r10, r8 - b _08026DE0 - .align 2, 0 -_08026CE0: .4byte gStatuses3 -_08026CE4: .4byte gBattleMoves -_08026CE8: .4byte gCurrentMove -_08026CEC: .4byte gBankAttacker -_08026CF0: .4byte gBankTarget -_08026CF4: - ldr r0, _08026D4C @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldr r2, _08026D50 @ =gBankAttacker - ldrb r0, [r1, 0x15] - movs r4, 0 - ldrb r3, [r2] - cmp r0, r3 - bne _08026D20 - ldrb r0, [r2] - muls r0, r6 - add r0, r10 - adds r0, 0x2A - adds r1, r5, 0 - adds r1, 0x2A - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _08026D20 - movs r4, 0x1 -_08026D20: - cmp r4, 0 - beq _08026DE0 - ldr r0, _08026D54 @ =gProtectStructs - ldr r1, _08026D58 @ =gBankTarget - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - bge _08026D64 - ldr r1, _08026D5C @ =gBattleMoveDamage - movs r0, 0x58 - muls r0, r2 - add r0, r10 - ldrh r0, [r0, 0x28] - subs r0, 0x1 - str r0, [r1] - ldr r2, _08026D60 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x40 - b _08026DC6 - .align 2, 0 -_08026D4C: .4byte gDisableStructs -_08026D50: .4byte gBankAttacker -_08026D54: .4byte gProtectStructs -_08026D58: .4byte gBankTarget -_08026D5C: .4byte gBattleMoveDamage -_08026D60: .4byte gBattleMoveFlags -_08026D64: - ldr r0, _08026DA0 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _08026DB4 - ldr r1, _08026DA4 @ =gBattleMoveDamage - movs r3, 0x58 - adds r0, r2, 0 - muls r0, r3 - add r0, r10 - ldrh r0, [r0, 0x28] - subs r0, 0x1 - str r0, [r1] - ldr r2, _08026DA8 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08026DAC @ =gLastUsedItem - ldr r2, _08026DB0 @ =gBankTarget - ldrb r0, [r2] - muls r0, r3 - add r0, r10 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - b _08026DCA - .align 2, 0 -_08026DA0: .4byte gSpecialStatuses -_08026DA4: .4byte gBattleMoveDamage -_08026DA8: .4byte gBattleMoveFlags -_08026DAC: .4byte gLastUsedItem -_08026DB0: .4byte gBankTarget -_08026DB4: - ldr r1, _08026DD4 @ =gBattleMoveDamage - movs r0, 0x58 - muls r0, r2 - add r0, r10 - ldrh r0, [r0, 0x28] - str r0, [r1] - ldr r2, _08026DD8 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x10 -_08026DC6: - orrs r0, r1 - strb r0, [r2] -_08026DCA: - ldr r1, _08026DDC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08026E40 - .align 2, 0 -_08026DD4: .4byte gBattleMoveDamage -_08026DD8: .4byte gBattleMoveFlags -_08026DDC: .4byte gBattlescriptCurrInstr -_08026DE0: - ldr r2, _08026E10 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r0, _08026E14 @ =gBankAttacker - ldrb r0, [r0] - movs r2, 0x58 - adds r1, r0, 0 - muls r1, r2 - add r1, r10 - adds r1, 0x2A - ldr r3, _08026E18 @ =gBankTarget - ldrb r0, [r3] - muls r0, r2 - add r0, r10 - adds r0, 0x2A - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bcc _08026E20 - ldr r1, _08026E1C @ =gBattleCommunication - movs r0, 0 - b _08026E24 - .align 2, 0 -_08026E10: .4byte gBattleMoveFlags -_08026E14: .4byte gBankAttacker -_08026E18: .4byte gBankTarget -_08026E1C: .4byte gBattleCommunication -_08026E20: - ldr r1, _08026E50 @ =gBattleCommunication - movs r0, 0x1 -_08026E24: - strb r0, [r1, 0x5] - ldr r3, _08026E54 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08026E40: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08026E50: .4byte gBattleCommunication -_08026E54: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8026B78 - - thumb_func_start atk94_gethalfcurrentenemyhp -atk94_gethalfcurrentenemyhp: @ 8026E58 - push {lr} - ldr r3, _08026E84 @ =gBattleMoveDamage - ldr r2, _08026E88 @ =gBattleMons - ldr r0, _08026E8C @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - lsrs r0, 1 - str r0, [r3] - cmp r0, 0 - bne _08026E76 - movs r0, 0x1 - str r0, [r3] -_08026E76: - ldr r1, _08026E90 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08026E84: .4byte gBattleMoveDamage -_08026E88: .4byte gBattleMons -_08026E8C: .4byte gBankTarget -_08026E90: .4byte gBattlescriptCurrInstr - thumb_func_end atk94_gethalfcurrentenemyhp - - thumb_func_start sub_8026E94 -sub_8026E94: @ 8026E94 - push {lr} - ldr r2, _08026EB4 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _08026EC0 - ldr r2, _08026EB8 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08026EBC @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08026ED2 - .align 2, 0 -_08026EB4: .4byte gBattleWeather -_08026EB8: .4byte gBattleMoveFlags -_08026EBC: .4byte gBattleCommunication -_08026EC0: - movs r0, 0x8 - strh r0, [r2] - ldr r1, _08026EE0 @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x5] - ldr r0, _08026EE4 @ =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_08026ED2: - ldr r1, _08026EE8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08026EE0: .4byte gBattleCommunication -_08026EE4: .4byte gWishFutureKnock -_08026EE8: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8026E94 - - thumb_func_start sub_8026EEC -sub_8026EEC: @ 8026EEC - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08026F0A - b _0802701C -_08026F0A: - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08026F20 - b _0802701C -_08026F20: - ldr r2, _08026F94 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x18 - ands r0, r1 - adds r4, r2, 0 - ldr r5, _08026F98 @ =gBankAttacker - cmp r0, 0 - beq _08026FAE - ldr r0, _08026F9C @ =gBattleMons - ldrb r2, [r5] - movs r1, 0x58 - muls r1, r2 - adds r3, r1, r0 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x5 - beq _08026FA8 - cmp r0, 0x8 - beq _08026FA8 - cmp r0, 0x4 - beq _08026FA8 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x5 - beq _08026FA8 - cmp r0, 0x8 - beq _08026FA8 - cmp r0, 0x4 - beq _08026FA8 - adds r0, r3, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x8 - beq _08026FA8 - ldr r0, _08026FA0 @ =gStatuses3 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08026FA8 - movs r0, 0x80 - lsls r0, 11 - ands r1, r0 - cmp r1, 0 - bne _08026FA8 - ldr r1, _08026FA4 @ =gBattleMoveDamage - ldrh r0, [r3, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08026FAE - movs r0, 0x1 - b _08026FAC - .align 2, 0 -_08026F94: .4byte gBattleWeather -_08026F98: .4byte gBankAttacker -_08026F9C: .4byte gBattleMons -_08026FA0: .4byte gStatuses3 -_08026FA4: .4byte gBattleMoveDamage -_08026FA8: - ldr r1, _08027004 @ =gBattleMoveDamage - movs r0, 0 -_08026FAC: - str r0, [r1] -_08026FAE: - ldrh r1, [r4] - movs r4, 0x80 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08027024 - ldr r1, _08027008 @ =gBattleMons - ldrb r3, [r5] - movs r0, 0x58 - muls r0, r3 - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xF - beq _08027010 - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xF - beq _08027010 - ldr r0, _0802700C @ =gStatuses3 - lsls r1, r3, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - bne _08027010 - movs r0, 0x80 - lsls r0, 11 - ands r1, r0 - cmp r1, 0 - bne _08027010 - ldr r1, _08027004 @ =gBattleMoveDamage - ldrh r0, [r2, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08027024 - movs r0, 0x1 - str r0, [r1] - b _08027024 - .align 2, 0 -_08027004: .4byte gBattleMoveDamage -_08027008: .4byte gBattleMons -_0802700C: .4byte gStatuses3 -_08027010: - ldr r1, _08027018 @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - b _08027024 - .align 2, 0 -_08027018: .4byte gBattleMoveDamage -_0802701C: - ldr r1, _08027050 @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - ldr r5, _08027054 @ =gBankAttacker -_08027024: - ldr r0, _08027058 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _0802705C @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0802703E - ldr r1, _08027050 @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] -_0802703E: - ldr r1, _08027060 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08027050: .4byte gBattleMoveDamage -_08027054: .4byte gBankAttacker -_08027058: .4byte gAbsentBankFlags -_0802705C: .4byte gBitTable -_08027060: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8026EEC - - thumb_func_start sub_8027064 -sub_8027064: @ 8027064 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08027090 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0802709C - ldr r1, _08027094 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08027098 @ =gPlayerParty - b _080270AC - .align 2, 0 -_08027090: .4byte gBankAttacker -_08027094: .4byte gBattlePartyID -_08027098: .4byte gPlayerParty -_0802709C: - ldr r1, _080270D0 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080270D4 @ =gEnemyParty -_080270AC: - adds r5, r1, r0 - ldr r4, _080270D8 @ =gBankTarget - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080270E0 - ldr r1, _080270D0 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080270DC @ =gPlayerParty - b _080270F0 - .align 2, 0 -_080270D0: .4byte gBattlePartyID -_080270D4: .4byte gEnemyParty -_080270D8: .4byte gBankTarget -_080270DC: .4byte gPlayerParty -_080270E0: - ldr r1, _0802714C @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08027150 @ =gEnemyParty -_080270F0: - adds r4, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - mov r9, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r7, r0, 0 - ldr r5, _08027154 @ =gBankTarget - ldrb r0, [r5] - movs r6, 0x58 - muls r0, r6 - ldr r1, _08027158 @ =gBattleMons - adds r0, r1 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0xC - bne _08027168 - ldr r1, _0802715C @ =gBattlescriptCurrInstr - ldr r0, _08027160 @ =gUnknown_081D98C9 - str r0, [r1] - ldr r0, _08027164 @ =gLastUsedAbility - strb r2, [r0] - ldrb r0, [r5] - movs r1, 0xC - bl RecordAbilityBattle - b _0802721C - .align 2, 0 -_0802714C: .4byte gBattlePartyID -_08027150: .4byte gEnemyParty -_08027154: .4byte gBankTarget -_08027158: .4byte gBattleMons -_0802715C: .4byte gBattlescriptCurrInstr -_08027160: .4byte gUnknown_081D98C9 -_08027164: .4byte gLastUsedAbility -_08027168: - mov r0, r10 - mov r1, r9 - bl GetGenderFromSpeciesAndPersonality - adds r4, r0, 0 - mov r0, r8 - adds r1, r7, 0 - bl GetGenderFromSpeciesAndPersonality - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _080271CA - ldr r1, _080271E8 @ =gStatuses3 - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080271EC @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _080271CA - adds r0, r2, 0 - muls r0, r6 - ldr r4, _080271F0 @ =gBattleMons - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0xF0 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - bne _080271CA - mov r0, r10 - mov r1, r9 - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080271CA - mov r0, r8 - adds r1, r7, 0 - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080271F8 -_080271CA: - ldr r3, _080271F4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802721C - .align 2, 0 -_080271E8: .4byte gStatuses3 -_080271EC: .4byte 0x000400c0 -_080271F0: .4byte gBattleMons -_080271F4: .4byte gBattlescriptCurrInstr -_080271F8: - ldrb r0, [r5] - adds r2, r0, 0 - muls r2, r6 - adds r2, r4 - ldr r1, _0802722C @ =gBitTable - ldr r0, _08027230 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 16 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r1, _08027234 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802721C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802722C: .4byte gBitTable -_08027230: .4byte gBankAttacker -_08027234: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8027064 - - thumb_func_start sub_8027238 -sub_8027238: @ 8027238 - push {r4-r7,lr} - ldr r0, _08027280 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _08027324 - ldr r5, _08027284 @ =gBattlescriptCurrInstr - ldr r1, [r5] - ldrb r0, [r1, 0x1] - cmp r0, 0x4 - beq _08027290 - bl sub_8015150 - ldr r4, _08027288 @ =gActiveBank - strb r0, [r4] - ldr r3, _0802728C @ =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl EmitStatusIconUpdate - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - b _08027324 - .align 2, 0 -_08027280: .4byte gBattleExecBuffer -_08027284: .4byte gBattlescriptCurrInstr -_08027288: .4byte gActiveBank -_0802728C: .4byte gBattleMons -_08027290: - ldr r4, _0802732C @ =gActiveBank - ldr r5, _08027330 @ =gBankAttacker - ldrb r0, [r5] - strb r0, [r4] - ldr r6, _08027334 @ =gAbsentBankFlags - ldrb r1, [r6] - ldr r7, _08027338 @ =gBitTable - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080272CC - ldr r3, _0802733C @ =gBattleMons - movs r0, 0x58 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl EmitStatusIconUpdate - ldrb r0, [r4] - bl MarkBufferBankForExecution -_080272CC: - ldr r0, _08027340 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802731C - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - strb r0, [r4] - ldrb r1, [r6] - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802731C - ldr r3, _0802733C @ =gBattleMons - movs r0, 0x58 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl EmitStatusIconUpdate - ldrb r0, [r4] - bl MarkBufferBankForExecution -_0802731C: - ldr r1, _08027344 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08027324: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802732C: .4byte gActiveBank -_08027330: .4byte gBankAttacker -_08027334: .4byte gAbsentBankFlags -_08027338: .4byte gBitTable -_0802733C: .4byte gBattleMons -_08027340: .4byte gBattleTypeFlags -_08027344: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8027238 - - thumb_func_start sub_8027348 -sub_8027348: @ 8027348 - push {r4-r6,lr} - ldr r6, _08027378 @ =gSideTimer - ldr r4, _0802737C @ =gBankAttacker - ldrb r0, [r4] - bl GetBankIdentity - movs r5, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _08027388 - ldr r2, _08027380 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r0, _08027384 @ =gBattleCommunication - strb r5, [r0, 0x5] - b _080273C0 - .align 2, 0 -_08027378: .4byte gSideTimer -_0802737C: .4byte gBankAttacker -_08027380: .4byte gBattleMoveFlags -_08027384: .4byte gBattleCommunication -_08027388: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x5 - strb r1, [r0, 0x2] - ldrb r0, [r4] - bl GetBankIdentity - ldr r2, _080273D0 @ =gSideAffecting - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - movs r3, 0 - orrs r0, r2 - strh r0, [r1] - ldr r0, _080273D4 @ =gBattleCommunication - strb r3, [r0, 0x5] -_080273C0: - ldr r1, _080273D8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080273D0: .4byte gSideAffecting -_080273D4: .4byte gBattleCommunication -_080273D8: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8027348 - - thumb_func_start atk9A_setincreasedcriticalchance -atk9A_setincreasedcriticalchance: @ 80273DC - push {lr} - ldr r1, _0802740C @ =gBattleMons - ldr r0, _08027410 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r3, 0x80 - lsls r3, 13 - adds r2, r1, 0 - ands r2, r3 - cmp r2, 0 - beq _0802741C - ldr r2, _08027414 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08027418 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08027424 - .align 2, 0 -_0802740C: .4byte gBattleMons -_08027410: .4byte gBankAttacker -_08027414: .4byte gBattleMoveFlags -_08027418: .4byte gBattleCommunication -_0802741C: - orrs r1, r3 - str r1, [r0] - ldr r0, _08027430 @ =gBattleCommunication - strb r2, [r0, 0x5] -_08027424: - ldr r1, _08027434 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08027430: .4byte gBattleCommunication -_08027434: .4byte gBattlescriptCurrInstr - thumb_func_end atk9A_setincreasedcriticalchance - - thumb_func_start atk9B_transformdataexecution -atk9B_transformdataexecution: @ 8027438 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _08027490 @ =gUnknown_02024BE8 - ldr r2, _08027494 @ =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _08027498 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r7, _0802749C @ =gBattleMons - ldr r0, _080274A0 @ =gBankTarget - mov r12, r0 - ldrb r1, [r0] - movs r6, 0x58 - adds r0, r1, 0 - muls r0, r6 - adds r5, r7, 0 - adds r5, 0x50 - adds r0, r5 - ldr r0, [r0] - movs r4, 0x80 - lsls r4, 14 - ands r0, r4 - cmp r0, 0 - bne _0802747E - ldr r0, _080274A4 @ =gStatuses3 - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - ldr r0, _080274A8 @ =0x000400c0 - ands r2, r0 - cmp r2, 0 - beq _080274B4 -_0802747E: - ldr r2, _080274AC @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080274B0 @ =gBattleCommunication - movs r0, 0x1 - b _080275C8 - .align 2, 0 -_08027490: .4byte gUnknown_02024BE8 -_08027494: .4byte 0x0000ffff -_08027498: .4byte gBattlescriptCurrInstr -_0802749C: .4byte gBattleMons -_080274A0: .4byte gBankTarget -_080274A4: .4byte gStatuses3 -_080274A8: .4byte 0x000400c0 -_080274AC: .4byte gBattleMoveFlags -_080274B0: .4byte gBattleCommunication -_080274B4: - ldr r3, _08027588 @ =gBankAttacker - ldrb r0, [r3] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - ldr r0, [r1] - orrs r0, r4 - str r0, [r1] - ldr r4, _0802758C @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x4] - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xB] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - mov r2, r12 - ldrb r1, [r2] - muls r1, r6 - adds r2, r7, 0 - adds r2, 0x48 - adds r1, r2 - ldr r1, [r1] - str r1, [r0] - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x18] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x18] - ldr r1, _08027590 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - mov r2, r12 - ldrb r0, [r2] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r2] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldrb r0, [r3] - muls r0, r6 - adds r5, r0, r7 - ldrb r0, [r2] - muls r0, r6 - adds r2, r0, r7 - movs r4, 0 - adds r6, r3, 0 - ldr r0, _08027594 @ =gActiveBank - mov r8, r0 -_0802754C: - adds r0, r5, r4 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x23 - bls _0802754C - movs r4, 0 - ldr r7, _08027598 @ =gBattleMoves - ldr r3, _0802759C @ =gUnknown_02024A8C - adds r5, r3, 0 - adds r5, 0x18 -_08027564: - lsls r1, r4, 1 - ldrb r2, [r6] - movs r0, 0x58 - muls r2, r0 - adds r1, r2 - adds r1, r3 - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r1, [r0, 0x4] - cmp r1, 0x4 - bhi _080275A0 - adds r0, r4, r2 - adds r0, r5 - b _080275A6 - .align 2, 0 -_08027588: .4byte gBankAttacker -_0802758C: .4byte gDisableStructs -_08027590: .4byte gBattleTextBuff1 -_08027594: .4byte gActiveBank -_08027598: .4byte gBattleMoves -_0802759C: .4byte gUnknown_02024A8C -_080275A0: - adds r0, r4, r2 - adds r0, r5 - movs r1, 0x5 -_080275A6: - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x3 - ble _08027564 - ldrb r0, [r6] - mov r1, r8 - strb r0, [r1] - movs r0, 0 - movs r1, 0x2 - bl EmitResetActionMoveSelection - mov r2, r8 - ldrb r0, [r2] - bl MarkBufferBankForExecution - ldr r1, _080275D4 @ =gBattleCommunication - movs r0, 0 -_080275C8: - strb r0, [r1, 0x5] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080275D4: .4byte gBattleCommunication - thumb_func_end atk9B_transformdataexecution - - thumb_func_start sub_80275D8 -sub_80275D8: @ 80275D8 - push {r4-r7,lr} - ldr r7, _08027608 @ =gBattleMons - ldr r6, _0802760C @ =gBankAttacker - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r3, r0, r7 - ldrh r0, [r3, 0x2C] - lsrs r1, r0, 2 - adds r2, r1, 0 - cmp r1, 0 - bne _080275F2 - movs r2, 0x1 -_080275F2: - ldrh r0, [r3, 0x28] - cmp r0, r2 - bhi _08027618 - ldr r1, _08027610 @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - ldr r1, _08027614 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _0802766C - .align 2, 0 -_08027608: .4byte gBattleMons -_0802760C: .4byte gBankAttacker -_08027610: .4byte gBattleMoveDamage -_08027614: .4byte gBattleCommunication -_08027618: - ldr r4, _0802767C @ =gBattleMoveDamage - str r1, [r4] - cmp r1, 0 - bne _08027624 - movs r0, 0x1 - str r0, [r4] -_08027624: - ldrb r0, [r6] - adds r2, r0, 0 - muls r2, r5 - adds r3, r7, 0 - adds r3, 0x50 - adds r2, r3 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 17 - orrs r0, r1 - str r0, [r2] - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r3 - ldr r0, [r1] - ldr r2, _08027680 @ =0xffff1fff - ands r0, r2 - str r0, [r1] - ldr r2, _08027684 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, [r4] - movs r2, 0 - strb r1, [r0, 0xA] - ldr r0, _08027688 @ =gBattleCommunication - strb r2, [r0, 0x5] - ldr r2, _0802768C @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 1 - orrs r0, r1 - str r0, [r2] -_0802766C: - ldr r1, _08027690 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802767C: .4byte gBattleMoveDamage -_08027680: .4byte 0xffff1fff -_08027684: .4byte gDisableStructs -_08027688: .4byte gBattleCommunication -_0802768C: .4byte gHitMarker -_08027690: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80275D8 - - thumb_func_start sub_8027694 -sub_8027694: @ 8027694 - push {r4,r5,lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r3, 0 - ldr r0, _080276D4 @ =gUnknown_081FACFE - ldrh r1, [r0] - ldr r4, _080276D8 @ =0x0000fffe - adds r5, r0, 0 - cmp r1, r4 - beq _080276BC - cmp r1, r2 - beq _080276BC - adds r1, r5, 0 -_080276AE: - adds r1, 0x2 - adds r3, 0x1 - ldrh r0, [r1] - cmp r0, r4 - beq _080276BC - cmp r0, r2 - bne _080276AE -_080276BC: - lsls r0, r3, 1 - adds r0, r5 - ldrh r1, [r0] - ldr r0, _080276D8 @ =0x0000fffe - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080276D4: .4byte gUnknown_081FACFE -_080276D8: .4byte 0x0000fffe - thumb_func_end sub_8027694 - - thumb_func_start atk9D_copyattack -atk9D_copyattack: @ 80276DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _08027754 @ =gUnknown_02024BE8 - ldr r1, _08027758 @ =0x0000ffff - adds r7, r1, 0 - strh r7, [r0] - ldr r5, _0802775C @ =gLastUsedMove - ldr r6, _08027760 @ =gBankTarget - ldrb r0, [r6] - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - bl sub_8027694 - lsls r0, 24 - cmp r0, 0 - bne _08027736 - ldr r3, _08027764 @ =gBattleMons - ldr r2, _08027768 @ =gBankAttacker - ldrb r1, [r2] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 14 - ands r1, r0 - mov r12, r3 - mov r9, r2 - cmp r1, 0 - bne _08027736 - ldrb r0, [r6] - lsls r0, 1 - adds r0, r5 - ldrh r1, [r0] - cmp r1, 0 - beq _08027736 - cmp r1, r7 - bne _08027770 -_08027736: - ldr r3, _0802776C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080278A8 - .align 2, 0 -_08027754: .4byte gUnknown_02024BE8 -_08027758: .4byte 0x0000ffff -_0802775C: .4byte gLastUsedMove -_08027760: .4byte gBankTarget -_08027764: .4byte gBattleMons -_08027768: .4byte gBankAttacker -_0802776C: .4byte gBattlescriptCurrInstr -_08027770: - movs r2, 0 - mov r3, r12 - adds r3, 0xC - adds r0, r4, r3 - ldrh r0, [r0] - ldr r4, _08027800 @ =gBattlescriptCurrInstr - mov r10, r4 - cmp r0, r1 - beq _080277AA - mov r8, r3 - adds r7, r5, 0 - adds r5, r6, 0 - mov r4, r9 - movs r3, 0x58 -_0802778C: - adds r2, 0x1 - cmp r2, 0x3 - bgt _080277AA - lsls r1, r2, 1 - ldrb r0, [r4] - muls r0, r3 - adds r1, r0 - add r1, r8 - ldrb r0, [r5] - lsls r0, 1 - adds r0, r7 - ldrh r1, [r1] - ldrh r0, [r0] - cmp r1, r0 - bne _0802778C -_080277AA: - cmp r2, 0x4 - bne _0802788C - ldr r5, _08027804 @ =gCurrMovePos - ldrb r1, [r5] - lsls r1, 1 - mov r2, r9 - ldrb r0, [r2] - movs r6, 0x58 - muls r0, r6 - adds r1, r0 - mov r0, r12 - adds r0, 0xC - adds r1, r0 - ldr r2, _08027808 @ =gLastUsedMove - ldr r3, _0802780C @ =gBankTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - ldr r4, _08027810 @ =gBattleMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r4, [r0, 0x4] - cmp r4, 0x4 - bhi _08027814 - mov r1, r9 - ldrb r0, [r1] - muls r0, r6 - ldrb r1, [r5] - adds r0, r1 - mov r1, r12 - adds r1, 0x24 - adds r0, r1 - strb r4, [r0] - b _08027828 - .align 2, 0 -_08027800: .4byte gBattlescriptCurrInstr -_08027804: .4byte gCurrMovePos -_08027808: .4byte gLastUsedMove -_0802780C: .4byte gBankTarget -_08027810: .4byte gBattleMoves -_08027814: - mov r4, r9 - ldrb r0, [r4] - muls r0, r6 - ldrb r1, [r5] - adds r0, r1 - mov r1, r12 - adds r1, 0x24 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] -_08027828: - ldr r1, _08027880 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08027884 @ =gDisableStructs - mov r2, r9 - ldrb r0, [r2] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r4, [r2, 0x18] - lsrs r3, r4, 4 - ldr r1, _08027888 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - orrs r1, r3 - lsls r1, 4 - movs r0, 0xF - ands r0, r4 - orrs r0, r1 - strb r0, [r2, 0x18] - mov r4, r10 - ldr r0, [r4] - adds r0, 0x5 - str r0, [r4] - b _080278A8 - .align 2, 0 -_08027880: .4byte gBattleTextBuff1 -_08027884: .4byte gDisableStructs -_08027888: .4byte gBitTable -_0802788C: - mov r0, r10 - ldr r2, [r0] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - mov r2, r10 - str r1, [r2] -_080278A8: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk9D_copyattack - - thumb_func_start sub_80278B8 -sub_80278B8: @ 80278B8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _08027938 @ =gCurrentMove - movs r6, 0xB1 - lsls r6, 1 - ldr r5, _0802793C @ =gUnknown_081FACFE - ldr r0, _08027940 @ =gBattlescriptCurrInstr - mov r8, r0 -_080278CA: - bl Random - ldr r2, _08027944 @ =0x000001ff - adds r1, r2, 0 - ands r0, r1 - adds r0, 0x1 - strh r0, [r7] - cmp r0, r6 - bhi _080278CA - movs r0, 0x3 -_080278DE: - subs r0, 0x1 - cmp r0, 0 - bge _080278DE - ldr r4, _08027938 @ =gCurrentMove - ldrh r2, [r4] - ldr r3, _08027948 @ =0x0000ffff - subs r0, r5, 0x2 -_080278EC: - adds r0, 0x2 - ldrh r1, [r0] - cmp r1, r2 - beq _080278F8 - cmp r1, r3 - bne _080278EC -_080278F8: - ldr r0, _08027948 @ =0x0000ffff - cmp r1, r0 - bne _080278CA - ldr r2, _0802794C @ =gHitMarker - ldr r0, [r2] - ldr r1, _08027950 @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r3, _08027954 @ =gUnknown_081D6BBC - ldr r2, _08027958 @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - mov r1, r8 - str r0, [r1] - ldrh r0, [r4] - movs r1, 0 - bl sub_801B5C0 - ldr r1, _0802795C @ =gBankTarget - strb r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08027938: .4byte gCurrentMove -_0802793C: .4byte gUnknown_081FACFE -_08027940: .4byte gBattlescriptCurrInstr -_08027944: .4byte 0x000001ff -_08027948: .4byte 0x0000ffff -_0802794C: .4byte gHitMarker -_08027950: .4byte 0xfffffbff -_08027954: .4byte gUnknown_081D6BBC -_08027958: .4byte gBattleMoves -_0802795C: .4byte gBankTarget - thumb_func_end sub_80278B8 - - thumb_func_start sub_8027960 -sub_8027960: @ 8027960 - ldr r3, _08027980 @ =gBattleMoveDamage - ldr r2, _08027984 @ =gBattleMons - ldr r0, _08027988 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r0, [r0] - str r0, [r3] - ldr r1, _0802798C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_08027980: .4byte gBattleMoveDamage -_08027984: .4byte gBattleMons -_08027988: .4byte gBankAttacker -_0802798C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8027960 - - thumb_func_start atkA0_psywavedamageeffect -atkA0_psywavedamageeffect: @ 8027990 - push {r4,lr} - movs r4, 0xF -_08027994: - bl Random - adds r3, r4, 0 - ands r3, r0 - cmp r3, 0xA - bgt _08027994 - lsls r0, r3, 2 - adds r0, r3 - lsls r3, r0, 1 - ldr r4, _080279D4 @ =gBattleMoveDamage - ldr r2, _080279D8 @ =gBattleMons - ldr r0, _080279DC @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - adds r0, r3, 0 - adds r0, 0x32 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - ldr r1, _080279E0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080279D4: .4byte gBattleMoveDamage -_080279D8: .4byte gBattleMons -_080279DC: .4byte gBankAttacker -_080279E0: .4byte gBattlescriptCurrInstr - thumb_func_end atkA0_psywavedamageeffect - - thumb_func_start atkA1_counterdamagecalculator -atkA1_counterdamagecalculator: @ 80279E4 - push {r4-r6,lr} - ldr r4, _08027A54 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _08027A58 @ =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r5 - ldrb r0, [r0, 0xC] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r0, r5, 0x4 - adds r0, r1, r0 - ldr r3, [r0] - cmp r3, 0 - beq _08027A98 - cmp r6, r2 - beq _08027A98 - ldr r6, _08027A5C @ =gBattleMons - adds r0, r1, r5 - ldrb r0, [r0, 0xC] - movs r4, 0x58 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08027A98 - ldr r1, _08027A60 @ =gBattleMoveDamage - lsls r0, r3, 1 - str r0, [r1] - ldr r1, _08027A64 @ =gSideTimer - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _08027A6C - ldrb r1, [r1, 0x9] - adds r0, r1, 0 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08027A6C - ldr r0, _08027A68 @ =gBankTarget - strb r1, [r0] - b _08027A7C - .align 2, 0 -_08027A54: .4byte gBankAttacker -_08027A58: .4byte gProtectStructs -_08027A5C: .4byte gBattleMons -_08027A60: .4byte gBattleMoveDamage -_08027A64: .4byte gSideTimer -_08027A68: .4byte gBankTarget -_08027A6C: - ldr r2, _08027A88 @ =gBankTarget - ldr r1, _08027A8C @ =gProtectStructs - ldr r0, _08027A90 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r2] -_08027A7C: - ldr r1, _08027A94 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08027AC8 - .align 2, 0 -_08027A88: .4byte gBankTarget -_08027A8C: .4byte gProtectStructs -_08027A90: .4byte gBankAttacker -_08027A94: .4byte gBattlescriptCurrInstr -_08027A98: - ldr r2, _08027AD0 @ =gSpecialStatuses - ldr r0, _08027AD4 @ =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, _08027AD8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08027AC8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08027AD0: .4byte gSpecialStatuses -_08027AD4: .4byte gBankAttacker -_08027AD8: .4byte gBattlescriptCurrInstr - thumb_func_end atkA1_counterdamagecalculator - - thumb_func_start atkA2_mirrorcoatdamagecalculator -atkA2_mirrorcoatdamagecalculator: @ 8027ADC - push {r4-r6,lr} - ldr r4, _08027B4C @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _08027B50 @ =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r5 - ldrb r0, [r0, 0xD] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r0, r5, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r3, [r0] - cmp r3, 0 - beq _08027B90 - cmp r6, r2 - beq _08027B90 - ldr r6, _08027B54 @ =gBattleMons - adds r0, r1, r5 - ldrb r0, [r0, 0xD] - movs r4, 0x58 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08027B90 - ldr r1, _08027B58 @ =gBattleMoveDamage - lsls r0, r3, 1 - str r0, [r1] - ldr r1, _08027B5C @ =gSideTimer - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _08027B64 - ldrb r1, [r1, 0x9] - adds r0, r1, 0 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08027B64 - ldr r0, _08027B60 @ =gBankTarget - strb r1, [r0] - b _08027B74 - .align 2, 0 -_08027B4C: .4byte gBankAttacker -_08027B50: .4byte gProtectStructs -_08027B54: .4byte gBattleMons -_08027B58: .4byte gBattleMoveDamage -_08027B5C: .4byte gSideTimer -_08027B60: .4byte gBankTarget -_08027B64: - ldr r2, _08027B80 @ =gBankTarget - ldr r1, _08027B84 @ =gProtectStructs - ldr r0, _08027B88 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0xD] - strb r0, [r2] -_08027B74: - ldr r1, _08027B8C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08027BC0 - .align 2, 0 -_08027B80: .4byte gBankTarget -_08027B84: .4byte gProtectStructs -_08027B88: .4byte gBankAttacker -_08027B8C: .4byte gBattlescriptCurrInstr -_08027B90: - ldr r2, _08027BC8 @ =gSpecialStatuses - ldr r0, _08027BCC @ =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, _08027BD0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08027BC0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08027BC8: .4byte gSpecialStatuses -_08027BCC: .4byte gBankAttacker -_08027BD0: .4byte gBattlescriptCurrInstr - thumb_func_end atkA2_mirrorcoatdamagecalculator - - thumb_func_start atkA3_disablelastusedattack -atkA3_disablelastusedattack: @ 8027BD4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r4, 0 - ldr r2, _08027CD4 @ =gBattleMons - ldr r3, _08027CD8 @ =gBankTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r7, r2, 0 - adds r7, 0xC - adds r0, r7 - ldr r5, _08027CDC @ =gLastUsedMove - lsls r1, 1 - adds r1, r5 - ldrh r0, [r0] - mov r9, r2 - adds r6, r3, 0 - ldr r2, _08027CE0 @ =gDisableStructs - mov r8, r2 - ldrh r1, [r1] - cmp r0, r1 - beq _08027C28 - mov r12, r6 - movs r3, 0x58 -_08027C08: - adds r4, 0x1 - cmp r4, 0x3 - bgt _08027C28 - lsls r2, r4, 1 - mov r0, r12 - ldrb r1, [r0] - adds r0, r1, 0 - muls r0, r3 - adds r2, r0 - adds r2, r7 - lsls r1, 1 - adds r1, r5 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _08027C08 -_08027C28: - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - ldrh r0, [r0, 0x4] - cmp r0, 0 - bne _08027CEC - cmp r4, 0x4 - beq _08027CEC - movs r5, 0x58 - adds r0, r1, 0 - muls r0, r5 - adds r0, r4, r0 - mov r1, r9 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08027CEC - ldr r1, _08027CE4 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - lsls r2, r4, 1 - ldrb r0, [r6] - muls r0, r5 - adds r0, r2, r0 - mov r3, r9 - adds r3, 0xC - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r2, r0 - adds r0, r3 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - muls r1, r5 - adds r2, r1 - adds r2, r3 - ldrh r1, [r2] - strh r1, [r0, 0x4] - bl Random - ldrb r2, [r6] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r8 - movs r2, 0x3 - ands r2, r0 - adds r2, 0x2 - ldrb r3, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xB] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r8 - ldrb r3, [r1, 0xB] - lsls r2, r3, 28 - lsrs r2, 24 - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xB] - ldr r1, _08027CE8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08027D06 - .align 2, 0 -_08027CD4: .4byte gBattleMons -_08027CD8: .4byte gBankTarget -_08027CDC: .4byte gLastUsedMove -_08027CE0: .4byte gDisableStructs -_08027CE4: .4byte gBattleTextBuff1 -_08027CE8: .4byte gBattlescriptCurrInstr -_08027CEC: - ldr r3, _08027D14 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08027D06: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08027D14: .4byte gBattlescriptCurrInstr - thumb_func_end atkA3_disablelastusedattack - - thumb_func_start atkA4_setencore -atkA4_setencore: @ 8027D18 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r3, _08027E0C @ =gBattleMons - ldr r4, _08027E10 @ =gBankTarget - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r6, r3, 0 - adds r6, 0xC - adds r0, r6 - ldr r2, _08027E14 @ =gLastUsedMove - lsls r1, 1 - adds r1, r2 - ldrh r0, [r0] - mov r10, r3 - mov r8, r2 - ldr r2, _08027E18 @ =gDisableStructs - mov r9, r2 - ldrh r1, [r1] - cmp r0, r1 - beq _08027D72 - mov r12, r4 - adds r7, r6, 0 - mov r6, r8 - movs r3, 0x58 -_08027D52: - adds r5, 0x1 - cmp r5, 0x3 - bgt _08027D72 - lsls r2, r5, 1 - mov r0, r12 - ldrb r1, [r0] - adds r0, r1, 0 - muls r0, r3 - adds r2, r0 - adds r2, r7 - lsls r1, 1 - adds r1, r6 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _08027D52 -_08027D72: - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r2, [r0] - cmp r2, 0xA5 - beq _08027D86 - cmp r2, 0xE3 - beq _08027D86 - cmp r2, 0x77 - bne _08027D88 -_08027D86: - movs r5, 0x4 -_08027D88: - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r2, r9 - adds r3, r0, r2 - ldrh r0, [r3, 0x6] - cmp r0, 0 - bne _08027E20 - cmp r5, 0x4 - beq _08027E20 - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - adds r0, r5, r2 - mov r1, r10 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08027E20 - lsls r0, r5, 1 - adds r0, r2 - subs r1, 0x18 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r3, 0x6] - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - strb r5, [r0, 0xC] - bl Random - ldrb r2, [r4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r9 - movs r2, 0x3 - ands r2, r0 - adds r2, 0x3 - ldrb r3, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xE] - ldrb r0, [r4] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r9 - ldrb r3, [r1, 0xE] - lsls r2, r3, 28 - lsrs r2, 24 - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xE] - ldr r1, _08027E1C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08027E3A - .align 2, 0 -_08027E0C: .4byte gBattleMons -_08027E10: .4byte gBankTarget -_08027E14: .4byte gLastUsedMove -_08027E18: .4byte gDisableStructs -_08027E1C: .4byte gBattlescriptCurrInstr -_08027E20: - ldr r3, _08027E48 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08027E3A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08027E48: .4byte gBattlescriptCurrInstr - thumb_func_end atkA4_setencore - - thumb_func_start sub_8027E4C -sub_8027E4C: @ 8027E4C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r7, _08027EEC @ =gBattleMons - ldr r0, _08027EF0 @ =gBankTarget - mov r8, r0 - ldrb r0, [r0] - movs r6, 0x58 - adds r2, r0, 0 - muls r2, r6 - adds r0, r7, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _08027F18 - ldr r1, _08027EF4 @ =gBankAttacker - mov r12, r1 - ldrb r0, [r1] - muls r0, r6 - adds r0, r7 - ldrh r4, [r0, 0x28] - adds r0, r2, r7 - ldrh r2, [r0, 0x28] - adds r4, r2 - asrs r4, 1 - ldr r5, _08027EF8 @ =gBattleMoveDamage - mov r9, r5 - subs r2, r4 - str r2, [r5] - ldr r3, _08027EFC @ =0x02000000 - ldr r1, _08027F00 @ =0x00016014 - adds r0, r3, r1 - strb r2, [r0] - movs r0, 0xFF - lsls r0, 8 - ands r0, r2 - asrs r0, 8 - ldr r5, _08027F04 @ =0x00016015 - adds r1, r3, r5 - strb r0, [r1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r2 - asrs r0, 16 - adds r5, 0x1 - adds r1, r3, r5 - strb r0, [r1] - lsrs r2, 24 - ldr r0, _08027F08 @ =0x00016017 - adds r3, r0 - strb r2, [r3] - mov r1, r12 - ldrb r0, [r1] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0, 0x28] - subs r0, r4 - mov r5, r9 - str r0, [r5] - ldr r2, _08027F0C @ =gSpecialStatuses - mov r0, r8 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r1, _08027F10 @ =0x0000ffff - str r1, [r0] - ldr r1, _08027F14 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08027F32 - .align 2, 0 -_08027EEC: .4byte gBattleMons -_08027EF0: .4byte gBankTarget -_08027EF4: .4byte gBankAttacker -_08027EF8: .4byte gBattleMoveDamage -_08027EFC: .4byte 0x02000000 -_08027F00: .4byte 0x00016014 -_08027F04: .4byte 0x00016015 -_08027F08: .4byte 0x00016017 -_08027F0C: .4byte gSpecialStatuses -_08027F10: .4byte 0x0000ffff -_08027F14: .4byte gBattlescriptCurrInstr -_08027F18: - ldr r3, _08027F40 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08027F32: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08027F40: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8027E4C - - thumb_func_start sub_8027F44 -sub_8027F44: @ 8027F44 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _08027FA8 @ =gMoveHitWith - ldr r4, _08027FAC @ =gBankAttacker - ldrb r0, [r4] - lsls r0, 1 - adds r2, r0, r1 - ldrh r1, [r2] - cmp r1, 0 - beq _08027F8C - ldr r0, _08027FB0 @ =0x0000ffff - cmp r1, r0 - beq _08027F8C - ldrh r0, [r2] - bl sub_8028350 - lsls r0, 24 - cmp r0, 0 - beq _08028024 - ldr r2, _08027FB4 @ =gProtectStructs - ldrb r0, [r4] - lsls r1, r0, 4 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08028024 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08028024 -_08027F8C: - ldr r3, _08027FB8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08028110 - .align 2, 0 -_08027FA8: .4byte gMoveHitWith -_08027FAC: .4byte gBankAttacker -_08027FB0: .4byte 0x0000ffff -_08027FB4: .4byte gProtectStructs -_08027FB8: .4byte gBattlescriptCurrInstr -_08027FBC: - mov r0, r12 - strb r5, [r0] - mov r1, r10 - ldrb r0, [r1] - muls r0, r2 - adds r0, r7 - adds r0, 0x22 - strb r5, [r0] - ldr r1, _08027FE0 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r5, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, _08027FE4 @ =gBattlescriptCurrInstr - b _08028012 - .align 2, 0 -_08027FE0: .4byte gBattleTextBuff1 -_08027FE4: .4byte gBattlescriptCurrInstr -_08027FE8: - mov r0, r8 - adds r0, 0x1 - adds r0, r3 - ldrb r2, [r0] - strb r2, [r4] - mov r4, r10 - ldrb r0, [r4] - muls r0, r6 - ldr r7, _0802801C @ =gBattleMons - adds r0, r7 - adds r0, 0x22 - strb r2, [r0] - ldr r1, _08028020 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - mov r1, r12 -_08028012: - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08028110 - .align 2, 0 -_0802801C: .4byte gBattleMons -_08028020: .4byte gBattleTextBuff1 -_08028024: - movs r4, 0 - mov r8, r4 - movs r7, 0x7F - mov r9, r7 -_0802802C: - bl Random - mov r4, r9 - ands r4, r0 - cmp r4, 0x70 - bhi _0802802C - lsls r0, r4, 1 - adds r4, r0, r4 - ldr r6, _08028120 @ =gTypeEffectiveness - adds r3, r4, r6 - ldr r1, _08028124 @ =gUnknown_02024C44 - ldr r2, _08028128 @ =gBankAttacker - ldrb r5, [r2] - lsls r0, r5, 1 - adds r0, r1 - ldrb r1, [r3] - mov r10, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _08028088 - adds r0, r4, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _08028088 - ldr r7, _0802812C @ =gBattleMons - movs r2, 0x58 - adds r0, r5, 0 - muls r0, r2 - adds r3, r0, r7 - movs r0, 0x21 - adds r0, r3 - mov r12, r0 - adds r0, r4, 0x1 - adds r0, r6 - ldrb r5, [r0] - mov r1, r12 - ldrb r0, [r1] - adds r1, r5, 0 - cmp r0, r1 - beq _08028088 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - bne _08027FBC -_08028088: - movs r7, 0x1 - add r8, r7 - ldr r0, _08028130 @ =0x000003e7 - cmp r8, r0 - ble _0802802C - movs r0, 0 - mov r8, r0 - ldr r1, _08028134 @ =gBattlescriptCurrInstr - mov r12, r1 - ldr r3, _08028120 @ =gTypeEffectiveness - adds r0, r4, 0x1 - adds r0, r3 - mov r9, r0 - adds r5, r3, 0 -_080280A4: - ldrb r1, [r5] - cmp r1, 0xFF - bgt _080280AE - cmp r1, 0xFE - bge _080280E8 -_080280AE: - mov r4, r10 - ldrb r2, [r4] - lsls r0, r2, 1 - ldr r7, _08028124 @ =gUnknown_02024C44 - adds r0, r7 - ldrh r0, [r0] - cmp r1, r0 - bne _080280E8 - ldrb r0, [r5, 0x2] - cmp r0, 0x5 - bhi _080280E8 - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - ldr r1, _0802812C @ =gBattleMons - adds r2, r0, r1 - adds r4, r2, 0 - adds r4, 0x21 - ldrb r0, [r4] - mov r7, r9 - ldrb r1, [r7] - cmp r0, r1 - beq _080280E8 - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - beq _080280E8 - b _08027FE8 -_080280E8: - adds r5, 0x3 - movs r0, 0x3 - add r8, r0 - ldr r0, _08028138 @ =0x0000014f - cmp r8, r0 - bls _080280A4 - mov r1, r12 - ldr r2, [r1] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - mov r4, r12 - str r1, [r4] -_08028110: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028120: .4byte gTypeEffectiveness -_08028124: .4byte gUnknown_02024C44 -_08028128: .4byte gBankAttacker -_0802812C: .4byte gBattleMons -_08028130: .4byte 0x000003e7 -_08028134: .4byte gBattlescriptCurrInstr -_08028138: .4byte 0x0000014f - thumb_func_end sub_8027F44 - - thumb_func_start atkA7_setalwayshitflag -atkA7_setalwayshitflag: @ 802813C - push {r4,lr} - ldr r4, _08028180 @ =gStatuses3 - ldr r3, _08028184 @ =gBankTarget - ldrb r1, [r3] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x19 - negs r2, r2 - ands r0, r2 - str r0, [r1] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x10 - orrs r0, r2 - str r0, [r1] - ldr r2, _08028188 @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _0802818C @ =gBankAttacker - ldrb r1, [r1] - strb r1, [r0, 0x15] - ldr r1, _08028190 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08028180: .4byte gStatuses3 -_08028184: .4byte gBankTarget -_08028188: .4byte gDisableStructs -_0802818C: .4byte gBankAttacker -_08028190: .4byte gBattlescriptCurrInstr - thumb_func_end atkA7_setalwayshitflag - - thumb_func_start atkA8_copymovepermanently -atkA8_copymovepermanently: @ 8028194 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - ldr r0, _080282F4 @ =gUnknown_02024BE8 - ldr r1, _080282F8 @ =0x0000ffff - adds r5, r1, 0 - strh r5, [r0] - ldr r3, _080282FC @ =gBattleMons - ldr r2, _08028300 @ =gBankAttacker - ldrb r1, [r2] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 14 - ands r1, r0 - mov r12, r3 - mov r10, r2 - cmp r1, 0 - beq _080281CC - b _08028320 -_080281CC: - ldr r0, _08028304 @ =gUnknown_02024C2C - ldr r2, _08028308 @ =gBankTarget - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldrh r1, [r1] - mov r9, r0 - mov r8, r2 - cmp r1, 0xA5 - bne _080281E2 - b _08028320 -_080281E2: - cmp r1, 0 - bne _080281E8 - b _08028320 -_080281E8: - cmp r1, r5 - bne _080281EE - b _08028320 -_080281EE: - cmp r1, 0xA6 - bne _080281F4 - b _08028320 -_080281F4: - movs r7, 0 - mov r5, r9 - mov r0, r12 - adds r0, 0xC - adds r1, r4, r0 - mov r3, r8 -_08028200: - ldrh r2, [r1] - cmp r2, 0xA6 - beq _08028212 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r2, r0 - beq _0802821A -_08028212: - adds r1, 0x2 - adds r7, 0x1 - cmp r7, 0x3 - ble _08028200 -_0802821A: - cmp r7, 0x4 - beq _08028220 - b _08028320 -_08028220: - ldr r4, _0802830C @ =gCurrMovePos - ldrb r1, [r4] - lsls r1, 1 - mov r2, r10 - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - adds r1, r0 - mov r6, r12 - adds r6, 0xC - adds r1, r6 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - strh r0, [r1] - mov r1, r10 - ldrb r0, [r1] - adds r2, r0, 0 - muls r2, r3 - ldrb r4, [r4] - adds r2, r4 - mov r5, r12 - adds r5, 0x24 - adds r2, r5 - ldr r4, _08028310 @ =gBattleMoves - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - add r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x4] - strb r0, [r2] - ldr r1, _08028314 @ =gActiveBank - mov r2, r10 - ldrb r0, [r2] - strb r0, [r1] - movs r7, 0 - ldrb r0, [r2] - muls r0, r3 - adds r4, r0, r5 - adds r3, r0, 0 - add r2, sp, 0x4 - add r5, sp, 0xC -_08028282: - adds r0, r3, r6 - ldrh r0, [r0] - strh r0, [r2] - adds r1, r5, r7 - ldrb r0, [r4] - strb r0, [r1] - adds r4, 0x1 - adds r3, 0x2 - adds r2, 0x2 - adds r7, 0x1 - cmp r7, 0x3 - ble _08028282 - add r2, sp, 0x4 - mov r0, r10 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r0, 0x3B - ldrb r0, [r0] - strb r0, [r2, 0xC] - str r2, [sp] - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - movs r3, 0x10 - bl EmitSetAttributes - ldr r0, _08028314 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08028318 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldr r3, _08028304 @ =gUnknown_02024C2C - ldr r2, _08028308 @ =gBankTarget - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _0802831C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802833A - .align 2, 0 -_080282F4: .4byte gUnknown_02024BE8 -_080282F8: .4byte 0x0000ffff -_080282FC: .4byte gBattleMons -_08028300: .4byte gBankAttacker -_08028304: .4byte gUnknown_02024C2C -_08028308: .4byte gBankTarget -_0802830C: .4byte gCurrMovePos -_08028310: .4byte gBattleMoves -_08028314: .4byte gActiveBank -_08028318: .4byte gBattleTextBuff1 -_0802831C: .4byte gBattlescriptCurrInstr -_08028320: - ldr r3, _0802834C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802833A: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802834C: .4byte gBattlescriptCurrInstr - thumb_func_end atkA8_copymovepermanently - - thumb_func_start sub_8028350 -sub_8028350: @ 8028350 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08028380 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0x91 - beq _0802837A - cmp r0, 0x27 - beq _0802837A - cmp r0, 0x4B - beq _0802837A - cmp r0, 0x97 - beq _0802837A - cmp r0, 0x9B - beq _0802837A - cmp r0, 0x1A - bne _08028384 -_0802837A: - movs r0, 0x1 - b _08028386 - .align 2, 0 -_08028380: .4byte gBattleMoves -_08028384: - movs r0, 0 -_08028386: - pop {r1} - bx r1 - thumb_func_end sub_8028350 - - thumb_func_start sub_802838C -sub_802838C: @ 802838C - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080283AA - cmp r1, 0xD6 - beq _080283AA - movs r0, 0x89 - lsls r0, 1 - cmp r1, r0 - beq _080283AA - cmp r1, 0x77 - beq _080283AA - cmp r1, 0x76 - bne _080283AE -_080283AA: - movs r0, 0x1 - b _080283B0 -_080283AE: - movs r0, 0 -_080283B0: - pop {r1} - bx r1 - thumb_func_end sub_802838C - - thumb_func_start move_weather_interaction -move_weather_interaction: @ 80283B4 - push {lr} - lsls r1, 16 - lsrs r2, r1, 16 - ldr r1, _0802840C @ =gBattleMoves - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x97 - bne _080283D8 - ldr r0, _08028410 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _08028418 -_080283D8: - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x91 - beq _080283FA - cmp r0, 0x27 - beq _080283FA - cmp r0, 0x4B - beq _080283FA - cmp r0, 0x97 - beq _080283FA - cmp r0, 0x9B - beq _080283FA - cmp r0, 0x1A - bne _08028418 -_080283FA: - ldr r0, _08028414 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 20 - ands r0, r1 - cmp r0, 0 - beq _08028418 - movs r0, 0x1 - b _0802841A - .align 2, 0 -_0802840C: .4byte gBattleMoves -_08028410: .4byte gBattleWeather -_08028414: .4byte gHitMarker -_08028418: - movs r0, 0x2 -_0802841A: - pop {r1} - bx r1 - thumb_func_end move_weather_interaction - - thumb_func_start sub_8028420 -sub_8028420: @ 8028420 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - movs r5, 0 - ldr r0, _080284B0 @ =gBankAttacker - mov r9, r0 - movs r1, 0x58 - mov r8, r1 - ldr r7, _080284B4 @ =gUnknown_02024A8C - movs r0, 0x84 - lsls r0, 1 - mov r10, r0 -_0802843E: - lsls r4, r5, 1 - mov r1, r9 - ldrb r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r4, r0 - adds r0, r7 - ldrh r0, [r0] - bl sub_802838C - lsls r0, 24 - cmp r0, 0 - bne _0802847E - mov r1, r9 - ldrb r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r4, r0 - adds r0, r7 - ldrh r1, [r0] - cmp r1, r10 - beq _0802847E - cmp r1, 0xFD - beq _0802847E - adds r0, r1, 0 - bl sub_8028350 - lsls r0, 24 - cmp r0, 0 - beq _0802848C -_0802847E: - ldr r1, _080284B8 @ =gBitTable - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_0802848C: - adds r5, 0x1 - cmp r5, 0x3 - ble _0802843E - ldr r0, _080284B0 @ =gBankAttacker - ldrb r0, [r0] - adds r1, r6, 0 - movs r2, 0xFD - bl sub_8015A98 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bne _080284C0 - ldr r1, _080284BC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08028524 - .align 2, 0 -_080284B0: .4byte gBankAttacker -_080284B4: .4byte gUnknown_02024A8C -_080284B8: .4byte gBitTable -_080284BC: .4byte gBattlescriptCurrInstr -_080284C0: - movs r7, 0x3 - ldr r4, _08028534 @ =gBitTable -_080284C4: - bl Random - adds r5, r7, 0 - ands r5, r0 - lsls r0, r5, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r6 - cmp r0, 0 - bne _080284C4 - ldr r4, _08028538 @ =gUnknown_02024BEA - ldr r2, _0802853C @ =gBattleMons - lsls r1, r5, 1 - ldr r0, _08028540 @ =gBankAttacker - ldrb r3, [r0] - movs r0, 0x58 - muls r0, r3 - adds r1, r0 - adds r2, 0xC - adds r1, r2 - ldrh r0, [r1] - strh r0, [r4] - ldr r0, _08028544 @ =gCurrMovePos - strb r5, [r0] - ldr r2, _08028548 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0802854C @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldrh r0, [r4] - movs r1, 0 - bl sub_801B5C0 - ldr r1, _08028550 @ =gBankTarget - strb r0, [r1] - ldr r3, _08028554 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08028524: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028534: .4byte gBitTable -_08028538: .4byte gUnknown_02024BEA -_0802853C: .4byte gBattleMons -_08028540: .4byte gBankAttacker -_08028544: .4byte gCurrMovePos -_08028548: .4byte gHitMarker -_0802854C: .4byte 0xfffffbff -_08028550: .4byte gBankTarget -_08028554: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028420 - - thumb_func_start sub_8028558 -sub_8028558: @ 8028558 - ldr r1, _0802857C @ =gBattleMons - ldr r0, _08028580 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 18 - orrs r0, r1 - str r0, [r2] - ldr r1, _08028584 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802857C: .4byte gBattleMons -_08028580: .4byte gBankAttacker -_08028584: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028558 - - thumb_func_start b_feature_update_destiny_bond -b_feature_update_destiny_bond: @ 8028588 - push {r4,r5,lr} - ldr r0, _080285D8 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080285DC @ =gBankTarget - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080285E0 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _080285D2 - cmp r5, r3 - beq _080285D2 - ldr r2, _080285E4 @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _080285D2 - movs r0, 0x40 - orrs r1, r0 - str r1, [r2] -_080285D2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080285D8: .4byte gBankAttacker -_080285DC: .4byte gBankTarget -_080285E0: .4byte gBattleMons -_080285E4: .4byte gHitMarker - thumb_func_end b_feature_update_destiny_bond - - thumb_func_start atkAB_802A458 -atkAB_802A458: @ 80285E8 - push {lr} - bl b_feature_update_destiny_bond - ldr r1, _080285FC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080285FC: .4byte gBattlescriptCurrInstr - thumb_func_end atkAB_802A458 - - thumb_func_start atkAC_remaininghptopower -atkAC_remaininghptopower: @ 8028600 - push {lr} - ldr r2, _08028654 @ =gBattleMons - ldr r0, _08028658 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - movs r2, 0x28 - ldrsh r0, [r1, r2] - movs r2, 0x2C - ldrsh r1, [r1, r2] - movs r2, 0x30 - bl GetScaledHPFraction - lsls r0, 24 - lsrs r1, r0, 24 - movs r3, 0 - ldr r0, _0802865C @ =gUnknown_081FAD26 - ldrb r2, [r0] - cmp r1, r2 - ble _0802863A - adds r2, r0, 0 -_0802862C: - adds r3, 0x2 - cmp r3, 0xB - bgt _0802863A - adds r0, r3, r2 - ldrb r0, [r0] - cmp r1, r0 - bgt _0802862C -_0802863A: - ldr r2, _08028660 @ =gDynamicBasePower - ldr r1, _0802865C @ =gUnknown_081FAD26 - adds r0, r3, 0x1 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r2] - ldr r1, _08028664 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08028654: .4byte gBattleMons -_08028658: .4byte gBankAttacker -_0802865C: .4byte gUnknown_081FAD26 -_08028660: .4byte gDynamicBasePower -_08028664: .4byte gBattlescriptCurrInstr - thumb_func_end atkAC_remaininghptopower - - thumb_func_start sub_8028668 -sub_8028668: @ 8028668 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, _080287F8 @ =gLastUsedMove - ldr r1, _080287FC @ =gBankTarget - ldrb r2, [r1] - lsls r0, r2, 1 - adds r0, r4 - ldrh r3, [r0] - mov r8, r1 - cmp r3, 0 - bne _08028688 - b _08028828 -_08028688: - ldr r0, _08028800 @ =0x0000ffff - cmp r3, r0 - bne _08028690 - b _08028828 -_08028690: - ldr r1, _08028804 @ =gStatuses3 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08028808 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _080286A2 - b _08028828 -_080286A2: - movs r7, 0 - ldr r0, _0802880C @ =gBattleMons - movs r1, 0x58 - muls r1, r2 - adds r2, r0, 0 - adds r2, 0xC - adds r1, r2 - ldrh r1, [r1] - cmp r3, r1 - beq _080286DA - adds r6, r4, 0 - mov r5, r8 - adds r4, r2, 0 - movs r3, 0x58 -_080286BE: - adds r7, 0x1 - cmp r7, 0x3 - bgt _080286DA - ldrb r0, [r5] - lsls r2, r0, 1 - adds r2, r6 - lsls r1, r7, 1 - muls r0, r3 - adds r1, r0 - adds r1, r4 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _080286BE -_080286DA: - cmp r7, 0x4 - bne _080286E0 - b _08028828 -_080286E0: - mov r4, r8 - ldrb r0, [r4] - movs r1, 0x58 - mov r9, r1 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7, r0 - ldr r1, _0802880C @ =gBattleMons - adds r1, 0x24 - mov r10, r1 - add r0, r10 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _08028700 - b _08028828 -_08028700: - bl Random - movs r1, 0x3 - ands r1, r0 - adds r6, r1, 0x2 - ldrb r0, [r4] - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7, r0 - add r0, r10 - ldrb r0, [r0] - cmp r0, r6 - bge _0802871E - adds r6, r0, 0 -_0802871E: - ldr r1, _08028810 @ =gBattleTextBuff1 - movs r5, 0xFD - strb r5, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldr r2, _080287F8 @ =gLastUsedMove - mov r3, r8 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r4, _08028814 @ =gBattleTextBuff2 - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - strb r5, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - strb r0, [r4, 0x3] - strb r6, [r4, 0x4] - subs r0, 0x2 - strb r0, [r4, 0x5] - mov r1, r8 - ldrb r0, [r1] - mov r1, r9 - muls r1, r0 - adds r1, r7, r1 - add r1, r10 - ldrb r0, [r1] - subs r0, r6 - strb r0, [r1] - ldr r4, _08028818 @ =gActiveBank - mov r3, r8 - ldrb r0, [r3] - strb r0, [r4] - ldr r1, _0802881C @ =gDisableStructs - ldrb r3, [r4] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _08028820 @ =gBitTable - lsls r0, r7, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080287D2 - mov r2, r9 - muls r2, r3 - ldr r0, _0802880C @ =gBattleMons - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _080287D2 - adds r1, r7, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - mov r3, r10 - adds r0, r2, r3 - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution -_080287D2: - ldr r1, _08028824 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r1, _0802880C @ =gBattleMons - ldr r0, _080287FC @ =gBankTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r7, r0 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08028842 - adds r0, r2, 0 - bl CancelMultiTurnMoves - b _08028842 - .align 2, 0 -_080287F8: .4byte gLastUsedMove -_080287FC: .4byte gBankTarget -_08028800: .4byte 0x0000ffff -_08028804: .4byte gStatuses3 -_08028808: .4byte 0x000400c0 -_0802880C: .4byte gBattleMons -_08028810: .4byte gBattleTextBuff1 -_08028814: .4byte gBattleTextBuff2 -_08028818: .4byte gActiveBank -_0802881C: .4byte gDisableStructs -_08028820: .4byte gBitTable -_08028824: .4byte gBattlescriptCurrInstr -_08028828: - ldr r3, _08028854 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08028842: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028854: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028668 - - thumb_func_start sub_8028858 -sub_8028858: @ 8028858 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - movs r4, 0 - str r4, [sp, 0x4] - movs r7, 0 - ldr r0, _080288AC @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xD7 - beq _08028872 - b _08028A26 -_08028872: - ldr r5, _080288B0 @ =gBattleCommunication - strb r7, [r5, 0x5] - ldr r6, _080288B4 @ =gBankAttacker - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - ldr r1, _080288B8 @ =gEnemyParty - mov r9, r1 - cmp r0, 0 - bne _0802888C - ldr r2, _080288BC @ =gPlayerParty - mov r9, r2 -_0802888C: - ldr r4, _080288C0 @ =gBattleMons - ldrb r3, [r6] - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r0, r2, r4 - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0x2B - beq _080288C4 - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r2, r0 - str r7, [r0] - b _080288D4 - .align 2, 0 -_080288AC: .4byte gCurrentMove -_080288B0: .4byte gBattleCommunication -_080288B4: .4byte gBankAttacker -_080288B8: .4byte gEnemyParty -_080288BC: .4byte gPlayerParty -_080288C0: .4byte gBattleMons -_080288C4: - ldrb r1, [r1] - adds r0, r3, 0 - bl RecordAbilityBattle - ldrb r0, [r5, 0x5] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r5, 0x5] -_080288D4: - ldr r4, _08028934 @ =gActiveBank - ldr r0, _08028938 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankIdentity - movs r6, 0x2 - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - ldr r1, _0802893C @ =0x02000000 - ldr r2, _08028940 @ =0x00016003 - adds r1, r2 - strb r0, [r1] - strb r0, [r4] - ldr r0, _08028944 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08028964 - ldr r0, _08028948 @ =gAbsentBankFlags - ldrb r2, [r0] - ldr r1, _0802894C @ =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _08028964 - ldr r5, _08028950 @ =gBattleMons - movs r0, 0x58 - adds r4, r3, 0 - muls r4, r0 - adds r0, r4, r5 - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0x2B - beq _08028954 - adds r0, r5, 0 - adds r0, 0x4C - adds r0, r4, r0 - str r2, [r0] - b _08028964 - .align 2, 0 -_08028934: .4byte gActiveBank -_08028938: .4byte gBankAttacker -_0802893C: .4byte 0x02000000 -_08028940: .4byte 0x00016003 -_08028944: .4byte gBattleTypeFlags -_08028948: .4byte gAbsentBankFlags -_0802894C: .4byte gBitTable -_08028950: .4byte gBattleMons -_08028954: - ldrb r1, [r1] - adds r0, r3, 0 - bl RecordAbilityBattle - ldr r1, _080289AC @ =gBattleCommunication - ldrb r0, [r1, 0x5] - orrs r0, r6 - strb r0, [r1, 0x5] -_08028964: - movs r6, 0 - ldr r0, _080289B0 @ =gBattleMons - mov r8, r0 -_0802896A: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - add r4, r9 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - lsls r0, 24 - lsrs r4, r0, 24 - cmp r5, 0 - beq _08028A1E - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - beq _08028A1E - ldr r2, _080289B4 @ =gBattlePartyID - ldr r0, _080289B8 @ =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r6 - bne _080289BC - movs r0, 0x58 - muls r0, r1 - b _080289EC - .align 2, 0 -_080289AC: .4byte gBattleCommunication -_080289B0: .4byte gBattleMons -_080289B4: .4byte gBattlePartyID -_080289B8: .4byte gBankAttacker -_080289BC: - ldr r0, _080289F4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08028A04 - ldr r0, _080289F8 @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r6 - bne _08028A04 - ldr r0, _080289FC @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _08028A00 @ =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08028A04 - movs r0, 0x58 - muls r0, r3 -_080289EC: - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - b _08028A10 - .align 2, 0 -_080289F4: .4byte gBattleTypeFlags -_080289F8: .4byte gActiveBank -_080289FC: .4byte gAbsentBankFlags -_08028A00: .4byte gBitTable -_08028A04: - adds r0, r5, 0 - adds r1, r4, 0 - bl GetAbilityBySpecies - lsls r0, 24 - lsrs r0, 24 -_08028A10: - cmp r0, 0x2B - beq _08028A1E - movs r0, 0x1 - lsls r0, r6 - orrs r7, r0 - lsls r0, r7, 24 - lsrs r7, r0, 24 -_08028A1E: - adds r6, 0x1 - cmp r6, 0x5 - ble _0802896A - b _08028A7E -_08028A26: - ldr r1, _08028AB4 @ =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - movs r7, 0x3F - ldr r2, _08028AB8 @ =gBattleMons - ldr r1, _08028ABC @ =gBankAttacker - ldrb r0, [r1] - movs r6, 0x58 - muls r0, r6 - adds r5, r2, 0 - adds r5, 0x4C - adds r0, r5 - str r4, [r0] - ldrb r0, [r1] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - ldr r3, _08028AC0 @ =gActiveBank - strb r0, [r3] - ldr r0, _08028AC4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08028A7E - ldr r0, _08028AC8 @ =gAbsentBankFlags - ldrb r2, [r0] - ldr r1, _08028ACC @ =gBitTable - ldrb r3, [r3] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _08028A7E - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - str r2, [r0] -_08028A7E: - ldr r4, _08028AC0 @ =gActiveBank - ldr r0, _08028ABC @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - add r1, sp, 0x4 - str r1, [sp] - movs r0, 0 - movs r1, 0x28 - adds r2, r7, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _08028AD0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028AB4: .4byte gBattleCommunication -_08028AB8: .4byte gBattleMons -_08028ABC: .4byte gBankAttacker -_08028AC0: .4byte gActiveBank -_08028AC4: .4byte gBattleTypeFlags -_08028AC8: .4byte gAbsentBankFlags -_08028ACC: .4byte gBitTable -_08028AD0: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028858 - - thumb_func_start sub_8028AD4 -sub_8028AD4: @ 8028AD4 - push {r4-r7,lr} - ldr r7, _08028B24 @ =gBattleMons - ldr r0, _08028B28 @ =gBankTarget - ldrb r3, [r0] - movs r6, 0x58 - adds r1, r3, 0 - muls r1, r6 - adds r0, r7, 0 - adds r0, 0x50 - adds r4, r1, r0 - ldr r2, [r4] - movs r5, 0x80 - lsls r5, 21 - adds r0, r2, 0 - ands r0, r5 - cmp r0, 0 - bne _08028B06 - ldr r1, _08028B2C @ =gStatuses3 - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08028B30 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _08028B38 -_08028B06: - ldr r3, _08028B34 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08028B5C - .align 2, 0 -_08028B24: .4byte gBattleMons -_08028B28: .4byte gBankTarget -_08028B2C: .4byte gStatuses3 -_08028B30: .4byte 0x000400c0 -_08028B34: .4byte gBattlescriptCurrInstr -_08028B38: - orrs r2, r5 - str r2, [r4] - ldr r1, _08028B64 @ =gBattleMoveDamage - ldr r0, _08028B68 @ =gBankAttacker - ldrb r0, [r0] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _08028B54 - movs r0, 0x1 - str r0, [r1] -_08028B54: - ldr r1, _08028B6C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08028B5C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028B64: .4byte gBattleMoveDamage -_08028B68: .4byte gBankAttacker -_08028B6C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028AD4 - - thumb_func_start sub_8028B70 -sub_8028B70: @ 8028B70 - push {r4,lr} - ldr r4, _08028BC4 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08028BC8 @ =gSideTimer - lsls r2, r0, 1 - adds r0, r2, r0 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3, 0x6] - cmp r0, 0x3 - bne _08028BD4 - ldr r2, _08028BCC @ =gSpecialStatuses - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, _08028BD0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08028BEE - .align 2, 0 -_08028BC4: .4byte gBankAttacker -_08028BC8: .4byte gSideTimer -_08028BCC: .4byte gSpecialStatuses -_08028BD0: .4byte gBattlescriptCurrInstr -_08028BD4: - ldr r1, _08028BF4 @ =gSideAffecting - adds r1, r2, r1 - ldrh r2, [r1] - movs r0, 0x10 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r3, 0x6] - adds r0, 0x1 - strb r0, [r3, 0x6] - ldr r1, _08028BF8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08028BEE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08028BF4: .4byte gSideAffecting -_08028BF8: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028B70 - - thumb_func_start sub_8028BFC -sub_8028BFC: @ 8028BFC - ldr r1, _08028C20 @ =gBattleMons - ldr r0, _08028C24 @ =gBankTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 22 - orrs r0, r1 - str r0, [r2] - ldr r1, _08028C28 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_08028C20: .4byte gBattleMons -_08028C24: .4byte gBankTarget -_08028C28: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028BFC - - thumb_func_start atkB2_setperishsong -atkB2_setperishsong: @ 8028C2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - movs r3, 0 - ldr r0, _08028C70 @ =gNoOfAllBanks - adds r7, r0, 0 - ldr r0, _08028C74 @ =gBankAttacker - mov r8, r0 - ldrb r1, [r7] - cmp r6, r1 - bge _08028C98 - movs r5, 0x20 - ldr r0, _08028C78 @ =gBattleMons - mov r12, r0 - ldr r0, _08028C7C @ =gDisableStructs - adds r4, r0, 0 - adds r4, 0xF - ldr r2, _08028C80 @ =gStatuses3 -_08028C54: - ldr r1, [r2] - adds r0, r1, 0 - ands r0, r5 - cmp r0, 0 - bne _08028C6C - movs r0, 0x58 - muls r0, r3 - add r0, r12 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - bne _08028C84 -_08028C6C: - adds r6, 0x1 - b _08028C8C - .align 2, 0 -_08028C70: .4byte gNoOfAllBanks -_08028C74: .4byte gBankAttacker -_08028C78: .4byte gBattleMons -_08028C7C: .4byte gDisableStructs -_08028C80: .4byte gStatuses3 -_08028C84: - orrs r1, r5 - str r1, [r2] - movs r0, 0x33 - strb r0, [r4] -_08028C8C: - adds r4, 0x1C - adds r2, 0x4 - adds r3, 0x1 - ldrb r0, [r7] - cmp r3, r0 - blt _08028C54 -_08028C98: - mov r1, r8 - ldrb r0, [r1] - bl sub_80153D0 - ldr r0, _08028CC4 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - bne _08028CCC - ldr r3, _08028CC8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08028CD4 - .align 2, 0 -_08028CC4: .4byte gNoOfAllBanks -_08028CC8: .4byte gBattlescriptCurrInstr -_08028CCC: - ldr r1, _08028CE0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08028CD4: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028CE0: .4byte gBattlescriptCurrInstr - thumb_func_end atkB2_setperishsong - - thumb_func_start atkB3_rolloutdamagecalculation -atkB3_rolloutdamagecalculation: @ 8028CE4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08028D08 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08028D18 - ldr r0, _08028D0C @ =gBankAttacker - ldrb r0, [r0] - bl CancelMultiTurnMoves - ldr r1, _08028D10 @ =gBattlescriptCurrInstr - ldr r0, _08028D14 @ =BattleScript_1D6F74 - str r0, [r1] - b _08028E30 - .align 2, 0 -_08028D08: .4byte gBattleMoveFlags -_08028D0C: .4byte gBankAttacker -_08028D10: .4byte gBattlescriptCurrInstr -_08028D14: .4byte BattleScript_1D6F74 -_08028D18: - ldr r2, _08028E3C @ =gBattleMons - ldr r1, _08028E40 @ =gBankAttacker - ldrb r3, [r1] - movs r5, 0x58 - adds r0, r3, 0 - muls r0, r5 - adds r4, r2, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r7, 0x80 - lsls r7, 5 - ands r0, r7 - adds r6, r1, 0 - mov r9, r2 - ldr r1, _08028E44 @ =gDisableStructs - mov r12, r1 - ldr r2, _08028E48 @ =gCurrentMove - mov r8, r2 - cmp r0, 0 - bne _08028D8A - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - add r0, r12 - ldrb r2, [r0, 0x11] - movs r1, 0x10 - negs r1, r1 - ands r1, r2 - movs r2, 0x5 - orrs r1, r2 - strb r1, [r0, 0x11] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r2, [r0, 0x11] - movs r1, 0xF - ands r1, r2 - movs r2, 0x50 - orrs r1, r2 - strb r1, [r0, 0x11] - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - orrs r0, r7 - str r0, [r1] - ldr r1, _08028E4C @ =gLockedMove - ldrb r0, [r6] - lsls r0, 1 - adds r0, r1 - mov r2, r8 - ldrh r1, [r2] - strh r1, [r0] -_08028D8A: - ldrb r0, [r6] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - add r2, r12 - ldrb r3, [r2, 0x11] - lsls r1, r3, 28 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x11] - cmp r1, 0 - bne _08028DBE - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - ldr r2, _08028E50 @ =0xffffefff - ands r0, r2 - str r0, [r1] -_08028DBE: - ldr r3, _08028E54 @ =gDynamicBasePower - ldr r2, _08028E58 @ =gBattleMoves - mov r0, r8 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r3] - movs r2, 0x1 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r1, r12 - adds r4, r0, r1 - ldrb r0, [r4, 0x11] - lsls r0, 28 - lsrs r0, 28 - movs r1, 0x5 - subs r1, r0 - ldr r7, _08028E5C @ =gBattlescriptCurrInstr - adds r5, r3, 0 - cmp r2, r1 - bge _08028E0C - adds r1, r5, 0 - adds r3, r4, 0 - movs r4, 0x5 -_08028DF8: - ldrh r0, [r1] - lsls r0, 1 - strh r0, [r1] - adds r2, 0x1 - ldrb r0, [r3, 0x11] - lsls r0, 28 - lsrs r0, 28 - subs r0, r4, r0 - cmp r2, r0 - blt _08028DF8 -_08028E0C: - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - mov r1, r9 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 23 - ands r0, r1 - cmp r0, 0 - beq _08028E2A - ldrh r0, [r5] - lsls r0, 1 - strh r0, [r5] -_08028E2A: - ldr r0, [r7] - adds r0, 0x1 - str r0, [r7] -_08028E30: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028E3C: .4byte gBattleMons -_08028E40: .4byte gBankAttacker -_08028E44: .4byte gDisableStructs -_08028E48: .4byte gCurrentMove -_08028E4C: .4byte gLockedMove -_08028E50: .4byte 0xffffefff -_08028E54: .4byte gDynamicBasePower -_08028E58: .4byte gBattleMoves -_08028E5C: .4byte gBattlescriptCurrInstr - thumb_func_end atkB3_rolloutdamagecalculation - - thumb_func_start atkB4_jumpifconfusedandattackmaxed -atkB4_jumpifconfusedandattackmaxed: @ 8028E60 - push {r4,r5,lr} - ldr r5, _08028EB0 @ =gBattleMons - ldr r0, _08028EB4 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r5, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - ldr r4, _08028EB8 @ =gBattlescriptCurrInstr - cmp r0, 0 - beq _08028EBC - ldr r2, [r4] - ldrb r0, [r2, 0x1] - adds r0, r3 - adds r1, r5, 0 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xC - bne _08028EBC - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _08028EC2 - .align 2, 0 -_08028EB0: .4byte gBattleMons -_08028EB4: .4byte gBankTarget -_08028EB8: .4byte gBattlescriptCurrInstr -_08028EBC: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_08028EC2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end atkB4_jumpifconfusedandattackmaxed - - thumb_func_start sub_8028EC8 -sub_8028EC8: @ 8028EC8 - push {r4,r5,lr} - ldr r0, _08028EF0 @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _08028F04 - ldr r2, _08028EF4 @ =gDisableStructs - ldr r0, _08028EF8 @ =gBankAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x10] - ldr r1, _08028EFC @ =gBattlescriptCurrInstr - ldr r0, _08028F00 @ =BattleScript_1D6F74 - str r0, [r1] - b _08028F5C - .align 2, 0 -_08028EF0: .4byte gBattleMoveFlags -_08028EF4: .4byte gDisableStructs -_08028EF8: .4byte gBankAttacker -_08028EFC: .4byte gBattlescriptCurrInstr -_08028F00: .4byte BattleScript_1D6F74 -_08028F04: - ldr r5, _08028F64 @ =gDisableStructs - ldr r4, _08028F68 @ =gBankAttacker - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x10] - cmp r0, 0x5 - beq _08028F1C - adds r0, 0x1 - strb r0, [r1, 0x10] -_08028F1C: - ldr r3, _08028F6C @ =gDynamicBasePower - ldr r2, _08028F70 @ =gBattleMoves - ldr r0, _08028F74 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r3] - movs r2, 0x1 - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r4, _08028F78 @ =gBattlescriptCurrInstr - ldrb r1, [r0, 0x10] - cmp r2, r1 - bge _08028F56 - adds r1, r3, 0 - adds r3, r0, 0 -_08028F48: - ldrh r0, [r1] - lsls r0, 1 - strh r0, [r1] - adds r2, 0x1 - ldrb r0, [r3, 0x10] - cmp r2, r0 - blt _08028F48 -_08028F56: - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] -_08028F5C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08028F64: .4byte gDisableStructs -_08028F68: .4byte gBankAttacker -_08028F6C: .4byte gDynamicBasePower -_08028F70: .4byte gBattleMoves -_08028F74: .4byte gCurrentMove -_08028F78: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028EC8 - - thumb_func_start atkB6_happinesstodamagecalculation -atkB6_happinesstodamagecalculation: @ 8028F7C - push {r4,lr} - ldr r2, _08028FA8 @ =gBattleMoves - ldr r0, _08028FAC @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x79 - bne _08028FBC - ldr r4, _08028FB0 @ =gDynamicBasePower - ldr r2, _08028FB4 @ =gBattleMons - ldr r0, _08028FB8 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2B - ldrb r1, [r0] - b _08028FD2 - .align 2, 0 -_08028FA8: .4byte gBattleMoves -_08028FAC: .4byte gCurrentMove -_08028FB0: .4byte gDynamicBasePower -_08028FB4: .4byte gBattleMons -_08028FB8: .4byte gBankAttacker -_08028FBC: - ldr r4, _08028FF0 @ =gDynamicBasePower - ldr r2, _08028FF4 @ =gBattleMons - ldr r0, _08028FF8 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2B - ldrb r0, [r0] - movs r1, 0xFF - subs r1, r0 -_08028FD2: - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - movs r1, 0x19 - bl __divsi3 - strh r0, [r4] - ldr r1, _08028FFC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08028FF0: .4byte gDynamicBasePower -_08028FF4: .4byte gBattleMons -_08028FF8: .4byte gBankAttacker -_08028FFC: .4byte gBattlescriptCurrInstr - thumb_func_end atkB6_happinesstodamagecalculation - - thumb_func_start atkB7_presentdamagecalculation -atkB7_presentdamagecalculation: @ 8029000 - push {r4,lr} - bl Random - movs r4, 0xFF - ands r4, r0 - cmp r4, 0x65 - bgt _0802901C - ldr r1, _08029018 @ =gDynamicBasePower - movs r0, 0x28 - strh r0, [r1] - b _0802905E - .align 2, 0 -_08029018: .4byte gDynamicBasePower -_0802901C: - cmp r4, 0xB1 - bgt _0802902C - ldr r1, _08029028 @ =gDynamicBasePower - movs r0, 0x50 - strh r0, [r1] - b _0802905E - .align 2, 0 -_08029028: .4byte gDynamicBasePower -_0802902C: - cmp r4, 0xCB - bgt _0802903C - ldr r1, _08029038 @ =gDynamicBasePower - movs r0, 0x78 - strh r0, [r1] - b _0802905E - .align 2, 0 -_08029038: .4byte gDynamicBasePower -_0802903C: - ldr r3, _08029068 @ =gBattleMoveDamage - ldr r2, _0802906C @ =gBattleMons - ldr r0, _08029070 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r0, 2 - str r0, [r3] - cmp r0, 0 - bne _08029058 - movs r0, 0x1 - str r0, [r3] -_08029058: - ldr r0, [r3] - negs r0, r0 - str r0, [r3] -_0802905E: - cmp r4, 0xCB - bgt _0802907C - ldr r1, _08029074 @ =gBattlescriptCurrInstr - ldr r0, _08029078 @ =BattleScript_1D6F44 - b _080290AC - .align 2, 0 -_08029068: .4byte gBattleMoveDamage -_0802906C: .4byte gBattleMons -_08029070: .4byte gBankTarget -_08029074: .4byte gBattlescriptCurrInstr -_08029078: .4byte BattleScript_1D6F44 -_0802907C: - ldr r2, _08029098 @ =gBattleMons - ldr r0, _0802909C @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0, 0x2C] - ldrh r0, [r0, 0x28] - cmp r1, r0 - bne _080290A8 - ldr r1, _080290A0 @ =gBattlescriptCurrInstr - ldr r0, _080290A4 @ =BattleScript_1D83B5 - b _080290AC - .align 2, 0 -_08029098: .4byte gBattleMons -_0802909C: .4byte gBankTarget -_080290A0: .4byte gBattlescriptCurrInstr -_080290A4: .4byte BattleScript_1D83B5 -_080290A8: - ldr r1, _080290B4 @ =gBattlescriptCurrInstr - ldr r0, _080290B8 @ =BattleScript_1D839B -_080290AC: - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080290B4: .4byte gBattlescriptCurrInstr -_080290B8: .4byte BattleScript_1D839B - thumb_func_end atkB7_presentdamagecalculation - - thumb_func_start sub_80290BC -sub_80290BC: @ 80290BC - push {r4-r6,lr} - ldr r4, _080290F0 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankIdentity - ldr r6, _080290F4 @ =gSideAffecting - movs r5, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r6 - ldrh r1, [r1] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08029100 - ldr r2, _080290F8 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080290FC @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - b _08029132 - .align 2, 0 -_080290F0: .4byte gBankAttacker -_080290F4: .4byte gSideAffecting -_080290F8: .4byte gBattleMoveFlags -_080290FC: .4byte gBattleCommunication -_08029100: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r6 - ldrh r0, [r1] - movs r2, 0x20 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r4] - bl GetBankIdentity - ldr r2, _08029140 @ =gSideTimer - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strb r1, [r0, 0x7] - ldr r0, _08029144 @ =gBattleCommunication - strb r1, [r0, 0x5] -_08029132: - ldr r1, _08029148 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08029140: .4byte gSideTimer -_08029144: .4byte gBattleCommunication -_08029148: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80290BC - - thumb_func_start atkB9_magnitudedamagecalculation -atkB9_magnitudedamagecalculation: @ 802914C - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bgt _08029178 - ldr r1, _08029174 @ =gDynamicBasePower - movs r0, 0xA - strh r0, [r1] - movs r3, 0x4 - b _080291E4 - .align 2, 0 -_08029174: .4byte gDynamicBasePower -_08029178: - cmp r3, 0xE - bgt _0802918C - ldr r1, _08029188 @ =gDynamicBasePower - movs r0, 0x1E - strh r0, [r1] - movs r3, 0x5 - b _080291E4 - .align 2, 0 -_08029188: .4byte gDynamicBasePower -_0802918C: - cmp r3, 0x22 - bgt _080291A0 - ldr r1, _0802919C @ =gDynamicBasePower - movs r0, 0x32 - strh r0, [r1] - movs r3, 0x6 - b _080291E4 - .align 2, 0 -_0802919C: .4byte gDynamicBasePower -_080291A0: - cmp r3, 0x40 - bgt _080291B4 - ldr r1, _080291B0 @ =gDynamicBasePower - movs r0, 0x46 - strh r0, [r1] - movs r3, 0x7 - b _080291E4 - .align 2, 0 -_080291B0: .4byte gDynamicBasePower -_080291B4: - cmp r3, 0x54 - bgt _080291C8 - ldr r1, _080291C4 @ =gDynamicBasePower - movs r0, 0x5A - strh r0, [r1] - movs r3, 0x8 - b _080291E4 - .align 2, 0 -_080291C4: .4byte gDynamicBasePower -_080291C8: - cmp r3, 0x5E - bgt _080291DC - ldr r1, _080291D8 @ =gDynamicBasePower - movs r0, 0x6E - strh r0, [r1] - movs r3, 0x9 - b _080291E4 - .align 2, 0 -_080291D8: .4byte gDynamicBasePower -_080291DC: - ldr r1, _08029250 @ =gDynamicBasePower - movs r0, 0x96 - strh r0, [r1] - movs r3, 0xA -_080291E4: - ldr r1, _08029254 @ =gBattleTextBuff1 - movs r2, 0 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - strb r0, [r1, 0x2] - movs r0, 0x2 - strb r0, [r1, 0x3] - strb r3, [r1, 0x4] - movs r0, 0xFF - strb r0, [r1, 0x5] - ldr r1, _08029258 @ =gBankTarget - strb r2, [r1] - ldr r0, _0802925C @ =gNoOfAllBanks - ldrb r3, [r0] - adds r6, r1, 0 - ldr r0, _08029260 @ =gBattlescriptCurrInstr - mov r8, r0 - cmp r2, r3 - bcs _0802923C - adds r4, r6, 0 - ldr r0, _08029264 @ =gBankAttacker - ldrb r5, [r0] - ldr r1, _08029268 @ =gBitTable - mov r12, r1 - ldr r7, _0802926C @ =gAbsentBankFlags -_0802921A: - ldrb r2, [r4] - cmp r2, r5 - beq _08029230 - ldrb r0, [r7] - ldrb r1, [r6] - lsls r1, 2 - add r1, r12 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _0802923C -_08029230: - adds r0, r2, 0x1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r3 - bcc _0802921A -_0802923C: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029250: .4byte gDynamicBasePower -_08029254: .4byte gBattleTextBuff1 -_08029258: .4byte gBankTarget -_0802925C: .4byte gNoOfAllBanks -_08029260: .4byte gBattlescriptCurrInstr -_08029264: .4byte gBankAttacker -_08029268: .4byte gBitTable -_0802926C: .4byte gAbsentBankFlags - thumb_func_end atkB9_magnitudedamagecalculation - - thumb_func_start sub_8029270 -sub_8029270: @ 8029270 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _08029294 @ =gMultiHitCounter - ldrb r0, [r0] - cmp r0, 0x1 - bne _080292A0 - ldr r0, _08029298 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0802929C - movs r0, 0x1 - b _080292BA - .align 2, 0 -_08029294: .4byte gMultiHitCounter -_08029298: .4byte gBankAttacker -_0802929C: - movs r0, 0 - b _080292BA -_080292A0: - ldr r0, _080292B4 @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080292B8 - movs r0, 0x3 - b _080292BA - .align 2, 0 -_080292B4: .4byte gBankAttacker -_080292B8: - movs r0, 0x2 -_080292BA: - bl GetBankByPlayerAI - ldr r1, _0802937C @ =gBankTarget - strb r0, [r1] - ldr r0, _08029380 @ =gActionForBanks - ldr r1, _0802937C @ =gBankTarget - mov r9, r1 - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _080293BC - ldr r5, _08029384 @ =gBankAttacker - ldr r0, _08029388 @ =0x02000000 - ldr r2, _0802938C @ =0x00016010 - adds r1, r3, r2 - adds r1, r0 - ldrb r2, [r5] - mov r10, r0 - ldrb r1, [r1] - cmp r2, r1 - bne _080293BC - ldr r4, _08029390 @ =gBattleMons - movs r2, 0x58 - adds r0, r3, 0 - muls r0, r2 - adds r1, r4, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x27 - ands r0, r1 - cmp r0, 0 - bne _080293BC - ldrb r0, [r5] - muls r0, r2 - adds r0, r4 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _080293BC - ldr r0, _08029394 @ =gDisableStructs - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x18] - lsls r0, 31 - cmp r0, 0 - bne _080293BC - ldr r0, _08029398 @ =gChosenMovesByBanks - lsls r1, r3, 1 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0xE4 - bne _080293BC - movs r1, 0 - ldr r0, _0802939C @ =gNoOfAllBanks - ldr r7, _080293A0 @ =gCurrentMove - mov r8, r7 - ldr r2, _080293A4 @ =gHitMarker - mov r12, r2 - ldrb r7, [r0] - cmp r1, r7 - bge _0802935A - ldr r6, _080293A8 @ =gTurnOrder - mov r5, r9 - ldr r4, _080293AC @ =gUnknown_02024A76 - movs r3, 0xB - adds r2, r0, 0 -_08029344: - adds r0, r1, r6 - ldrb r0, [r0] - ldrb r7, [r5] - cmp r0, r7 - bne _08029352 - adds r0, r1, r4 - strb r3, [r0] -_08029352: - adds r1, 0x1 - ldrb r0, [r2] - cmp r1, r0 - blt _08029344 -_0802935A: - movs r0, 0xE4 - mov r1, r8 - strh r0, [r1] - ldr r2, _080293B0 @ =gBattlescriptCurrInstr - ldr r0, [r2] - adds r0, 0x5 - str r0, [r2] - ldr r1, _080293B4 @ =0x00016002 - add r1, r10 - movs r0, 0x1 - strb r0, [r1] - mov r7, r12 - ldr r0, [r7] - ldr r1, _080293B8 @ =0xfffffbff - ands r0, r1 - str r0, [r7] - b _080293D6 - .align 2, 0 -_0802937C: .4byte gBankTarget -_08029380: .4byte gActionForBanks -_08029384: .4byte gBankAttacker -_08029388: .4byte 0x02000000 -_0802938C: .4byte 0x00016010 -_08029390: .4byte gBattleMons -_08029394: .4byte gDisableStructs -_08029398: .4byte gChosenMovesByBanks -_0802939C: .4byte gNoOfAllBanks -_080293A0: .4byte gCurrentMove -_080293A4: .4byte gHitMarker -_080293A8: .4byte gTurnOrder -_080293AC: .4byte gUnknown_02024A76 -_080293B0: .4byte gBattlescriptCurrInstr -_080293B4: .4byte 0x00016002 -_080293B8: .4byte 0xfffffbff -_080293BC: - ldr r3, _080293E4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_080293D6: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080293E4: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8029270 - - thumb_func_start sub_80293E8 -sub_80293E8: @ 80293E8 - push {lr} - ldr r2, _08029408 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08029414 - ldr r2, _0802940C @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08029410 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08029426 - .align 2, 0 -_08029408: .4byte gBattleWeather -_0802940C: .4byte gBattleMoveFlags -_08029410: .4byte gBattleCommunication -_08029414: - movs r0, 0x20 - strh r0, [r2] - ldr r1, _08029434 @ =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r0, _08029438 @ =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_08029426: - ldr r1, _0802943C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08029434: .4byte gBattleCommunication -_08029438: .4byte gWishFutureKnock -_0802943C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80293E8 - - thumb_func_start atkBC_maxattackhalvehp -atkBC_maxattackhalvehp: @ 8029440 - push {r4,r5,lr} - ldr r5, _0802948C @ =gBattleMons - ldr r4, _08029490 @ =gBankAttacker - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - adds r2, r0, r5 - ldrh r0, [r2, 0x2C] - lsrs r1, r0, 1 - cmp r1, 0 - bne _08029458 - movs r1, 0x1 -_08029458: - movs r0, 0x19 - ldrsb r0, [r2, r0] - cmp r0, 0xB - bgt _0802949C - ldrh r0, [r2, 0x28] - cmp r0, r1 - bls _0802949C - movs r0, 0xC - strb r0, [r2, 0x19] - ldr r1, _08029494 @ =gBattleMoveDamage - ldrb r0, [r4] - muls r0, r3 - adds r0, r5 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _08029480 - movs r0, 0x1 - str r0, [r1] -_08029480: - ldr r1, _08029498 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _080294B6 - .align 2, 0 -_0802948C: .4byte gBattleMons -_08029490: .4byte gBankAttacker -_08029494: .4byte gBattleMoveDamage -_08029498: .4byte gBattlescriptCurrInstr -_0802949C: - ldr r3, _080294BC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_080294B6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080294BC: .4byte gBattlescriptCurrInstr - thumb_func_end atkBC_maxattackhalvehp - - thumb_func_start atkBD_copyfoestats -atkBD_copyfoestats: @ 80294C0 - push {r4-r7,lr} - movs r2, 0 - ldr r7, _080294F8 @ =gBattlescriptCurrInstr - ldr r6, _080294FC @ =gBankAttacker - movs r4, 0x58 - ldr r3, _08029500 @ =gUnknown_02024A98 - ldr r5, _08029504 @ =gBankTarget -_080294CE: - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r4 - adds r1, r2, r1 - adds r1, r3 - ldrb r0, [r5] - muls r0, r4 - adds r0, r2, r0 - adds r0, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x7 - ble _080294CE - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080294F8: .4byte gBattlescriptCurrInstr -_080294FC: .4byte gBankAttacker -_08029500: .4byte gUnknown_02024A98 -_08029504: .4byte gBankTarget - thumb_func_end atkBD_copyfoestats - - thumb_func_start atkBE_breakfree -atkBE_breakfree: @ 8029508 - push {r4,r5,lr} - ldr r1, _08029570 @ =gBattleMons - ldr r5, _08029574 @ =gBankAttacker - ldrb r2, [r5] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r3, r0, r1 - ldr r1, [r3] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08029594 - ldr r0, _08029578 @ =0xffff1fff - ands r1, r0 - str r1, [r3] - ldr r1, _0802957C @ =gBankTarget - ldr r2, _08029580 @ =0x02000000 - ldrb r0, [r5] - ldr r3, _08029584 @ =0x00016020 - adds r0, r3 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _08029588 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r5] - lsls r0, 1 - subs r3, 0x1C - adds r0, r3 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r5] - lsls r0, 1 - adds r3, 0x1 - adds r0, r3 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - bl b_movescr_stack_push_cursor - ldr r1, _0802958C @ =gBattlescriptCurrInstr - ldr r0, _08029590 @ =gUnknown_081D92C2 - b _0802963E - .align 2, 0 -_08029570: .4byte gBattleMons -_08029574: .4byte gBankAttacker -_08029578: .4byte 0xffff1fff -_0802957C: .4byte gBankTarget -_08029580: .4byte 0x02000000 -_08029584: .4byte 0x00016020 -_08029588: .4byte gBattleTextBuff1 -_0802958C: .4byte gBattlescriptCurrInstr -_08029590: .4byte gUnknown_081D92C2 -_08029594: - ldr r4, _080295C8 @ =gStatuses3 - lsls r0, r2, 2 - adds r3, r0, r4 - ldr r1, [r3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080295D4 - movs r0, 0x5 - negs r0, r0 - ands r1, r0 - str r1, [r3] - ldrb r1, [r5] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x4 - negs r2, r2 - ands r0, r2 - str r0, [r1] - bl b_movescr_stack_push_cursor - ldr r1, _080295CC @ =gBattlescriptCurrInstr - ldr r0, _080295D0 @ =gUnknown_081D92C9 - b _0802963E - .align 2, 0 -_080295C8: .4byte gStatuses3 -_080295CC: .4byte gBattlescriptCurrInstr -_080295D0: .4byte gUnknown_081D92C9 -_080295D4: - adds r0, r2, 0 - bl GetBankSide - ldr r4, _08029624 @ =gSideAffecting - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08029638 - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r2, [r0] - ldr r1, _08029628 @ =0x0000ffef - ands r1, r2 - movs r4, 0 - strh r1, [r0] - ldrb r0, [r5] - bl GetBankSide - ldr r2, _0802962C @ =gSideTimer - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - strb r4, [r1, 0x6] - bl b_movescr_stack_push_cursor - ldr r1, _08029630 @ =gBattlescriptCurrInstr - ldr r0, _08029634 @ =gUnknown_081D92D0 - b _0802963E - .align 2, 0 -_08029624: .4byte gSideAffecting -_08029628: .4byte 0x0000ffef -_0802962C: .4byte gSideTimer -_08029630: .4byte gBattlescriptCurrInstr -_08029634: .4byte gUnknown_081D92D0 -_08029638: - ldr r1, _08029648 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_0802963E: - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08029648: .4byte gBattlescriptCurrInstr - thumb_func_end atkBE_breakfree - - thumb_func_start sub_802964C -sub_802964C: @ 802964C - ldr r1, _08029670 @ =gBattleMons - ldr r0, _08029674 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 23 - orrs r0, r1 - str r0, [r2] - ldr r1, _08029678 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_08029670: .4byte gBattleMons -_08029674: .4byte gBankAttacker -_08029678: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802964C - - thumb_func_start atkC0_recoverbasedonsunlight -atkC0_recoverbasedonsunlight: @ 802967C - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, _080296E8 @ =gBankTarget - ldr r5, _080296EC @ =gBankAttacker - ldrb r0, [r5] - strb r0, [r1] - ldr r7, _080296F0 @ =gBattleMons - ldrb r0, [r5] - movs r6, 0x58 - muls r0, r6 - adds r0, r7 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - beq _0802975C - ldr r4, _080296F4 @ =gBattleWeather - ldrh r0, [r4] - cmp r0, 0 - beq _080296CE - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080296CE - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _080296FC -_080296CE: - ldr r3, _080296F8 @ =gBattleMoveDamage - ldr r2, _080296F0 @ =gBattleMons - ldr r0, _080296EC @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r3] - adds r1, r3, 0 - b _08029736 - .align 2, 0 -_080296E8: .4byte gBankTarget -_080296EC: .4byte gBankAttacker -_080296F0: .4byte gBattleMons -_080296F4: .4byte gBattleWeather -_080296F8: .4byte gBattleMoveDamage -_080296FC: - ldrh r1, [r4] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08029728 - ldr r4, _08029724 @ =gBattleMoveDamage - ldrb r0, [r5] - muls r0, r6 - adds r0, r7 - ldrh r1, [r0, 0x2C] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r1, 0x1E - bl __divsi3 - str r0, [r4] - adds r1, r4, 0 - b _08029736 - .align 2, 0 -_08029724: .4byte gBattleMoveDamage -_08029728: - ldr r1, _08029754 @ =gBattleMoveDamage - ldrb r0, [r5] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0, 0x2C] - lsrs r0, 2 - str r0, [r1] -_08029736: - adds r2, r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _08029742 - movs r0, 0x1 - str r0, [r2] -_08029742: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldr r1, _08029758 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08029776 - .align 2, 0 -_08029754: .4byte gBattleMoveDamage -_08029758: .4byte gBattlescriptCurrInstr -_0802975C: - ldr r3, _08029780 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08029776: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029780: .4byte gBattlescriptCurrInstr - thumb_func_end atkC0_recoverbasedonsunlight - - thumb_func_start sub_8029784 -sub_8029784: @ 8029784 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _08029894 @ =gBattleMons - ldr r0, _08029898 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r4, r2 - ldrb r0, [r4, 0x14] - mov r10, r0 - mov r7, r10 - lsls r7, 27 - adds r0, r7, 0 - lsrs r0, 27 - mov r10, r0 - movs r1, 0x2 - mov r2, r10 - ands r2, r1 - asrs r2, 1 - ldrh r7, [r4, 0x14] - mov r9, r7 - mov r0, r9 - lsls r0, 22 - mov r9, r0 - lsrs r3, r0, 27 - adds r0, r1, 0 - ands r0, r3 - orrs r2, r0 - ldrb r7, [r4, 0x15] - mov r8, r7 - mov r0, r8 - lsls r0, 25 - mov r8, r0 - lsrs r3, r0, 27 - adds r0, r1, 0 - ands r0, r3 - lsls r0, 1 - orrs r2, r0 - ldr r6, [r4, 0x14] - lsls r6, 12 - lsrs r3, r6, 27 - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - ldrh r5, [r4, 0x16] - lsls r5, 23 - lsrs r3, r5, 27 - adds r0, r1, 0 - ands r0, r3 - lsls r0, 3 - orrs r2, r0 - ldrb r3, [r4, 0x17] - lsls r3, 26 - lsrs r0, r3, 27 - ands r1, r0 - lsls r1, 4 - orrs r2, r1 - movs r1, 0x1 - adds r4, r1, 0 - mov r7, r10 - ands r4, r7 - mov r0, r9 - lsrs r0, 27 - mov r9, r0 - adds r0, r1, 0 - mov r7, r9 - ands r0, r7 - lsls r0, 1 - orrs r4, r0 - mov r0, r8 - lsrs r0, 27 - mov r8, r0 - adds r0, r1, 0 - mov r7, r8 - ands r0, r7 - lsls r0, 2 - orrs r4, r0 - lsrs r6, 27 - adds r0, r1, 0 - ands r0, r6 - lsls r0, 3 - orrs r4, r0 - lsrs r5, 27 - adds r0, r1, 0 - ands r0, r5 - lsls r0, 4 - orrs r4, r0 - lsrs r3, 27 - ands r1, r3 - lsls r1, 5 - orrs r4, r1 - ldr r5, _0802989C @ =gDynamicBasePower - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - movs r1, 0x3F - bl __divsi3 - adds r0, 0x1E - strh r0, [r5] - ldr r5, _080298A0 @ =0x02000000 - lsls r0, r4, 4 - subs r0, r4 - movs r1, 0x3F - bl __divsi3 - adds r1, r0, 0x1 - ldr r0, _080298A4 @ =0x0001601c - adds r5, r0 - strb r1, [r5] - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0x8 - bls _08029876 - adds r0, r1, 0x1 - strb r0, [r5] -_08029876: - ldrb r0, [r5] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r5] - ldr r1, _080298A8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029894: .4byte gBattleMons -_08029898: .4byte gBankAttacker -_0802989C: .4byte gDynamicBasePower -_080298A0: .4byte 0x02000000 -_080298A4: .4byte 0x0001601c -_080298A8: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8029784 - - thumb_func_start atkC2_selectnexttarget -atkC2_selectnexttarget: @ 80298AC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08029908 @ =gBankTarget - movs r1, 0 - strb r1, [r0] - ldr r1, _0802990C @ =gNoOfAllBanks - ldrb r1, [r1] - adds r6, r0, 0 - ldr r0, _08029910 @ =gBattlescriptCurrInstr - mov r8, r0 - cmp r1, 0 - beq _080298F6 - adds r3, r6, 0 - ldr r0, _08029914 @ =gBankAttacker - ldrb r5, [r0] - ldr r0, _08029918 @ =gBitTable - mov r12, r0 - adds r4, r1, 0 - ldr r7, _0802991C @ =gAbsentBankFlags -_080298D4: - ldrb r2, [r3] - cmp r2, r5 - beq _080298EA - ldrb r0, [r7] - ldrb r1, [r6] - lsls r1, 2 - add r1, r12 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _080298F6 -_080298EA: - adds r0, r2, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcc _080298D4 -_080298F6: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029908: .4byte gBankTarget -_0802990C: .4byte gNoOfAllBanks -_08029910: .4byte gBattlescriptCurrInstr -_08029914: .4byte gBankAttacker -_08029918: .4byte gBitTable -_0802991C: .4byte gAbsentBankFlags - thumb_func_end atkC2_selectnexttarget - - thumb_func_start atkC3_setfutureattack -atkC3_setfutureattack: @ 8029920 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r0, _08029958 @ =gWishFutureKnock - mov r8, r0 - ldr r7, _0802995C @ =gBankTarget - ldrb r1, [r7] - adds r0, r1, r0 - ldrb r6, [r0] - cmp r6, 0 - beq _08029964 - ldr r3, _08029960 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08029A2E - .align 2, 0 -_08029958: .4byte gWishFutureKnock -_0802995C: .4byte gBankTarget -_08029960: .4byte gBattlescriptCurrInstr -_08029964: - lsls r1, 1 - mov r0, r8 - adds r0, 0x18 - adds r1, r0 - ldr r2, _08029A04 @ =gCurrentMove - mov r9, r2 - ldrh r0, [r2] - strh r0, [r1] - mov r0, r8 - adds r0, 0x4 - ldrb r4, [r7] - adds r0, r4 - ldr r5, _08029A08 @ =gBankAttacker - ldrb r1, [r5] - strb r1, [r0] - ldrb r0, [r7] - add r0, r8 - movs r1, 0x3 - strb r1, [r0] - ldr r4, _08029A0C @ =gSideAffecting - ldrb r0, [r7] - bl GetBankIdentity - movs r1, 0x1 - mov r10, r1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldrb r0, [r5] - movs r4, 0x58 - muls r0, r4 - ldr r2, _08029A10 @ =gBattleMons - adds r0, r2 - ldrb r1, [r7] - muls r1, r4 - adds r1, r2 - mov r4, r9 - ldrh r2, [r4] - str r6, [sp] - str r6, [sp, 0x4] - ldrb r4, [r5] - str r4, [sp, 0x8] - ldrb r4, [r7] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldrb r1, [r7] - lsls r1, 2 - mov r2, r8 - adds r2, 0x8 - adds r1, r2 - str r0, [r1] - ldr r1, _08029A14 @ =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _080299F2 - ldrb r4, [r7] - lsls r4, 2 - adds r4, r2 - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_080299F2: - mov r0, r9 - ldrh r1, [r0] - ldr r0, _08029A18 @ =0x00000161 - cmp r1, r0 - bne _08029A20 - ldr r0, _08029A1C @ =gBattleCommunication - mov r1, r10 - strb r1, [r0, 0x5] - b _08029A26 - .align 2, 0 -_08029A04: .4byte gCurrentMove -_08029A08: .4byte gBankAttacker -_08029A0C: .4byte gSideAffecting -_08029A10: .4byte gBattleMons -_08029A14: .4byte gProtectStructs -_08029A18: .4byte 0x00000161 -_08029A1C: .4byte gBattleCommunication -_08029A20: - ldr r1, _08029A40 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] -_08029A26: - ldr r1, _08029A44 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08029A2E: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029A40: .4byte gBattleCommunication -_08029A44: .4byte gBattlescriptCurrInstr - thumb_func_end atkC3_setfutureattack - - thumb_func_start atkC4_802B910 -atkC4_802B910: @ 8029A48 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08029A8C @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r7, _08029A90 @ =gEnemyParty - cmp r0, 0 - bne _08029A62 - ldr r7, _08029A94 @ =gPlayerParty -_08029A62: - ldr r2, _08029A98 @ =gBattleMons - ldr r0, _08029A9C @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08029AA4 - ldr r3, _08029AA0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - b _08029C40 - .align 2, 0 -_08029A8C: .4byte gBankAttacker -_08029A90: .4byte gEnemyParty -_08029A94: .4byte gPlayerParty -_08029A98: .4byte gBattleMons -_08029A9C: .4byte gBankTarget -_08029AA0: .4byte gBattlescriptCurrInstr -_08029AA4: - ldr r6, _08029BE0 @ =gBattleCommunication - ldrb r0, [r6] - mov r8, r0 - cmp r0, 0x5 - bls _08029AB0 - b _08029C0C -_08029AB0: - adds r4, r6, 0 - movs r5, 0x64 -_08029AB4: - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08029AF8 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08029AF8 - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08029AF8 - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x37 - bl GetMonData - cmp r0, 0 - beq _08029B08 -_08029AF8: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - adds r6, r4, 0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _08029AB4 -_08029B08: - ldr r1, _08029BE0 @ =gBattleCommunication - mov r9, r1 - ldrb r2, [r1] - cmp r2, 0x5 - bhi _08029C0C - ldr r1, _08029BE4 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r6, _08029BE8 @ =gBankAttacker - ldrb r0, [r6] - strb r0, [r1, 0x2] - strb r2, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08029BEC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x9 - str r0, [r1] - ldr r2, _08029BF0 @ =gBattleMoveDamage - mov r8, r2 - ldr r5, _08029BF4 @ =gBaseStats - mov r1, r9 - ldrb r0, [r1] - movs r4, 0x64 - muls r0, r4 - adds r0, r7, r0 - movs r1, 0xB - bl GetMonData - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r3, [r1, 0x1] - mov r2, r8 - str r3, [r2] - ldr r2, _08029BF8 @ =gBattleMoves - ldr r0, _08029BFC @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - muls r0, r3 - mov r1, r8 - str r0, [r1] - mov r2, r9 - ldrb r0, [r2] - muls r0, r4 - adds r0, r7, r0 - movs r1, 0x38 - bl GetMonData - lsls r0, 1 - movs r1, 0x5 - bl __udivsi3 - adds r0, 0x2 - mov r2, r8 - ldr r1, [r2] - muls r0, r1 - str r0, [r2] - ldr r3, _08029C00 @ =gBattleMons - ldr r1, _08029C04 @ =gBankTarget - ldrb r2, [r1] - movs r1, 0x58 - muls r1, r2 - adds r1, r3 - ldrh r2, [r1] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r5 - ldrb r1, [r1, 0x2] - bl __divsi3 - mov r1, r8 - str r0, [r1] - movs r1, 0x32 - bl __divsi3 - adds r2, r0, 0x2 - mov r0, r8 - str r2, [r0] - ldr r1, _08029C08 @ =gProtectStructs - ldrb r0, [r6] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _08029BD4 - lsls r0, r2, 4 - subs r0, r2 - movs r1, 0xA - bl __divsi3 - mov r1, r8 - str r0, [r1] -_08029BD4: - mov r2, r9 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _08029C46 - .align 2, 0 -_08029BE0: .4byte gBattleCommunication -_08029BE4: .4byte gBattleTextBuff1 -_08029BE8: .4byte gBankAttacker -_08029BEC: .4byte gBattlescriptCurrInstr -_08029BF0: .4byte gBattleMoveDamage -_08029BF4: .4byte gBaseStats -_08029BF8: .4byte gBattleMoves -_08029BFC: .4byte gCurrentMove -_08029C00: .4byte gBattleMons -_08029C04: .4byte gBankTarget -_08029C08: .4byte gProtectStructs -_08029C0C: - mov r0, r8 - cmp r0, 0 - beq _08029C2C - ldr r3, _08029C28 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - b _08029C40 - .align 2, 0 -_08029C28: .4byte gBattlescriptCurrInstr -_08029C2C: - ldr r3, _08029C54 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x8] -_08029C40: - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08029C46: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029C54: .4byte gBattlescriptCurrInstr - thumb_func_end atkC4_802B910 - - thumb_func_start atkC5_hidepreattack -atkC5_hidepreattack: @ 8029C58 - push {lr} - ldr r0, _08029C6C @ =gCurrentMove - ldrh r1, [r0] - cmp r1, 0x5B - beq _08029C98 - cmp r1, 0x5B - bgt _08029C70 - cmp r1, 0x13 - beq _08029C7C - b _08029CC4 - .align 2, 0 -_08029C6C: .4byte gCurrentMove -_08029C70: - ldr r0, _08029C8C @ =0x00000123 - cmp r1, r0 - beq _08029CB0 - adds r0, 0x31 - cmp r1, r0 - bne _08029CC4 -_08029C7C: - ldr r2, _08029C90 @ =gStatuses3 - ldr r0, _08029C94 @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x40 - b _08029CC0 - .align 2, 0 -_08029C8C: .4byte 0x00000123 -_08029C90: .4byte gStatuses3 -_08029C94: .4byte gBankAttacker -_08029C98: - ldr r2, _08029CA8 @ =gStatuses3 - ldr r0, _08029CAC @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - b _08029CC0 - .align 2, 0 -_08029CA8: .4byte gStatuses3 -_08029CAC: .4byte gBankAttacker -_08029CB0: - ldr r2, _08029CD0 @ =gStatuses3 - ldr r0, _08029CD4 @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 11 -_08029CC0: - orrs r0, r2 - str r0, [r1] -_08029CC4: - ldr r1, _08029CD8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08029CD0: .4byte gStatuses3 -_08029CD4: .4byte gBankAttacker -_08029CD8: .4byte gBattlescriptCurrInstr - thumb_func_end atkC5_hidepreattack - - thumb_func_start atkC6_unhidepostattack -atkC6_unhidepostattack: @ 8029CDC - push {lr} - ldr r0, _08029CF0 @ =gCurrentMove - ldrh r1, [r0] - cmp r1, 0x5B - beq _08029D20 - cmp r1, 0x5B - bgt _08029CF4 - cmp r1, 0x13 - beq _08029D00 - b _08029D4E - .align 2, 0 -_08029CF0: .4byte gCurrentMove -_08029CF4: - ldr r0, _08029D14 @ =0x00000123 - cmp r1, r0 - beq _08029D3C - adds r0, 0x31 - cmp r1, r0 - bne _08029D4E -_08029D00: - ldr r2, _08029D18 @ =gStatuses3 - ldr r0, _08029D1C @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x41 - negs r2, r2 - b _08029D4A - .align 2, 0 -_08029D14: .4byte 0x00000123 -_08029D18: .4byte gStatuses3 -_08029D1C: .4byte gBankAttacker -_08029D20: - ldr r2, _08029D34 @ =gStatuses3 - ldr r0, _08029D38 @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x81 - negs r2, r2 - b _08029D4A - .align 2, 0 -_08029D34: .4byte gStatuses3 -_08029D38: .4byte gBankAttacker -_08029D3C: - ldr r2, _08029D5C @ =gStatuses3 - ldr r0, _08029D60 @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - ldr r2, _08029D64 @ =0xfffbffff -_08029D4A: - ands r0, r2 - str r0, [r1] -_08029D4E: - ldr r1, _08029D68 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08029D5C: .4byte gStatuses3 -_08029D60: .4byte gBankAttacker -_08029D64: .4byte 0xfffbffff -_08029D68: .4byte gBattlescriptCurrInstr - thumb_func_end atkC6_unhidepostattack - - thumb_func_start atkC7_setminimize -atkC7_setminimize: @ 8029D6C - push {lr} - ldr r0, _08029D9C @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _08029D90 - ldr r2, _08029DA0 @ =gStatuses3 - ldr r0, _08029DA4 @ =gBankAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 1 - orrs r0, r2 - str r0, [r1] -_08029D90: - ldr r1, _08029DA8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08029D9C: .4byte gHitMarker -_08029DA0: .4byte gStatuses3 -_08029DA4: .4byte gBankAttacker -_08029DA8: .4byte gBattlescriptCurrInstr - thumb_func_end atkC7_setminimize - - thumb_func_start sub_8029DAC -sub_8029DAC: @ 8029DAC - push {lr} - ldr r3, _08029DD0 @ =gBattleWeather - ldrh r1, [r3] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08029DDC - ldr r2, _08029DD4 @ =gBattleMoveFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08029DD8 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08029DEA - .align 2, 0 -_08029DD0: .4byte gBattleWeather -_08029DD4: .4byte gBattleMoveFlags -_08029DD8: .4byte gBattleCommunication -_08029DDC: - strh r2, [r3] - ldr r0, _08029DF8 @ =gBattleCommunication - movs r1, 0x5 - strb r1, [r0, 0x5] - ldr r0, _08029DFC @ =gWishFutureKnock - adds r0, 0x28 - strb r1, [r0] -_08029DEA: - ldr r1, _08029E00 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08029DF8: .4byte gBattleCommunication -_08029DFC: .4byte gWishFutureKnock -_08029E00: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8029DAC - - thumb_func_start atkC9_jumpifattackandspecialattackcannotfall -atkC9_jumpifattackandspecialattackcannotfall: @ 8029E04 - push {r4,lr} - ldr r2, _08029E48 @ =gBattleMons - ldr r0, _08029E4C @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - movs r0, 0x19 - ldrsb r0, [r1, r0] - adds r3, r2, 0 - cmp r0, 0 - bne _08029E58 - movs r0, 0x1C - ldrsb r0, [r1, r0] - cmp r0, 0 - bne _08029E58 - ldr r0, _08029E50 @ =gBattleCommunication - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - beq _08029E58 - ldr r3, _08029E54 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08029E84 - .align 2, 0 -_08029E48: .4byte gBattleMons -_08029E4C: .4byte gBankTarget -_08029E50: .4byte gBattleCommunication -_08029E54: .4byte gBattlescriptCurrInstr -_08029E58: - ldr r4, _08029E8C @ =gActiveBank - ldr r0, _08029E90 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r2, _08029E94 @ =gBattleMoveDamage - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - str r0, [r2] - ldr r1, _08029E98 @ =0x00007fff - movs r0, 0 - bl EmitHealthBarUpdate - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _08029E9C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08029E84: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08029E8C: .4byte gActiveBank -_08029E90: .4byte gBankAttacker -_08029E94: .4byte gBattleMoveDamage -_08029E98: .4byte 0x00007fff -_08029E9C: .4byte gBattlescriptCurrInstr - thumb_func_end atkC9_jumpifattackandspecialattackcannotfall - - thumb_func_start atkCA_setforcedtarget -atkCA_setforcedtarget: @ 8029EA0 - push {r4,r5,lr} - ldr r4, _08029EE0 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - ldr r5, _08029EE4 @ =gSideTimer - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - movs r0, 0x1 - strb r0, [r1, 0x8] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r4] - strb r0, [r1, 0x9] - ldr r1, _08029EE8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08029EE0: .4byte gBankAttacker -_08029EE4: .4byte gSideTimer -_08029EE8: .4byte gBattlescriptCurrInstr - thumb_func_end atkCA_setforcedtarget - - thumb_func_start atkCB_setcharge -atkCB_setcharge: @ 8029EEC - push {r4,lr} - ldr r0, _08029F40 @ =gStatuses3 - ldr r3, _08029F44 @ =gBankAttacker - ldrb r1, [r3] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 2 - orrs r0, r2 - str r0, [r1] - ldr r4, _08029F48 @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x12] - movs r1, 0x10 - negs r1, r1 - ands r1, r2 - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x12] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x12] - movs r1, 0xF - ands r1, r2 - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0, 0x12] - ldr r1, _08029F4C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08029F40: .4byte gStatuses3 -_08029F44: .4byte gBankAttacker -_08029F48: .4byte gDisableStructs -_08029F4C: .4byte gBattlescriptCurrInstr - thumb_func_end atkCB_setcharge - - thumb_func_start atkCC_callterrainattack -atkCC_callterrainattack: @ 8029F50 - push {r4,lr} - ldr r2, _08029FA0 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08029FA4 @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, _08029FA8 @ =gCurrentMove - ldr r1, _08029FAC @ =gNaturePowerMoves - ldr r0, _08029FB0 @ =gBattleTerrain - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0 - bl sub_801B5C0 - ldr r1, _08029FB4 @ =gBankTarget - strb r0, [r1] - ldr r3, _08029FB8 @ =gUnknown_081D6BBC - ldr r2, _08029FBC @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - bl b_movescr_stack_push - ldr r1, _08029FC0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08029FA0: .4byte gHitMarker -_08029FA4: .4byte 0xfffffbff -_08029FA8: .4byte gCurrentMove -_08029FAC: .4byte gNaturePowerMoves -_08029FB0: .4byte gBattleTerrain -_08029FB4: .4byte gBankTarget -_08029FB8: .4byte gUnknown_081D6BBC -_08029FBC: .4byte gBattleMoves -_08029FC0: .4byte gBattlescriptCurrInstr - thumb_func_end atkCC_callterrainattack - - thumb_func_start atkCD_cureifburnedparalysedorpoisoned -atkCD_cureifburnedparalysedorpoisoned: @ 8029FC4 - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, _0802A010 @ =gBattleMons - ldr r3, _0802A014 @ =gBankAttacker - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - adds r5, r1, 0 - adds r5, 0x4C - adds r2, r0, r5 - ldr r0, [r2] - movs r1, 0xD8 - ands r0, r1 - cmp r0, 0 - beq _0802A020 - movs r0, 0 - str r0, [r2] - ldr r1, _0802A018 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r4, _0802A01C @ =gActiveBank - ldrb r0, [r3] - strb r0, [r4] - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r4] - bl MarkBufferBankForExecution - b _0802A03A - .align 2, 0 -_0802A010: .4byte gBattleMons -_0802A014: .4byte gBankAttacker -_0802A018: .4byte gBattlescriptCurrInstr -_0802A01C: .4byte gActiveBank -_0802A020: - ldr r3, _0802A044 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A03A: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802A044: .4byte gBattlescriptCurrInstr - thumb_func_end atkCD_cureifburnedparalysedorpoisoned - - thumb_func_start atkCE_settorment -atkCE_settorment: @ 802A048 - push {lr} - ldr r1, _0802A080 @ =gBattleMons - ldr r0, _0802A084 @ =gBankTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 24 - cmp r1, 0 - bge _0802A08C - ldr r3, _0802A088 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802A098 - .align 2, 0 -_0802A080: .4byte gBattleMons -_0802A084: .4byte gBankTarget -_0802A088: .4byte gBattlescriptCurrInstr -_0802A08C: - orrs r1, r2 - str r1, [r0] - ldr r1, _0802A09C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802A098: - pop {r0} - bx r0 - .align 2, 0 -_0802A09C: .4byte gBattlescriptCurrInstr - thumb_func_end atkCE_settorment - - thumb_func_start atkCF_jumpifnodamage -atkCF_jumpifnodamage: @ 802A0A0 - push {lr} - ldr r2, _0802A0CC @ =gProtectStructs - ldr r0, _0802A0D0 @ =gBankAttacker - ldrb r0, [r0] - lsls r1, r0, 4 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0802A0C0 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802A0D8 -_0802A0C0: - ldr r1, _0802A0D4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802A0F2 - .align 2, 0 -_0802A0CC: .4byte gProtectStructs -_0802A0D0: .4byte gBankAttacker -_0802A0D4: .4byte gBattlescriptCurrInstr -_0802A0D8: - ldr r3, _0802A0F8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A0F2: - pop {r0} - bx r0 - .align 2, 0 -_0802A0F8: .4byte gBattlescriptCurrInstr - thumb_func_end atkCF_jumpifnodamage - - thumb_func_start atkD0_settaunt -atkD0_settaunt: @ 802A0FC - push {r4,lr} - ldr r4, _0802A140 @ =gDisableStructs - ldr r3, _0802A144 @ =gBankTarget - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r2, r1, r4 - ldrb r1, [r2, 0x13] - lsls r0, r1, 28 - cmp r0, 0 - bne _0802A14C - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x13] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x13] - movs r1, 0xF - ands r1, r2 - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0, 0x13] - ldr r1, _0802A148 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802A166 - .align 2, 0 -_0802A140: .4byte gDisableStructs -_0802A144: .4byte gBankTarget -_0802A148: .4byte gBattlescriptCurrInstr -_0802A14C: - ldr r3, _0802A16C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A166: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802A16C: .4byte gBattlescriptCurrInstr - thumb_func_end atkD0_settaunt - - thumb_func_start sub_802A170 -sub_802A170: @ 802A170 - push {r4,lr} - ldr r4, _0802A1D8 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - ldr r3, _0802A1DC @ =gBankTarget - strb r0, [r3] - ldr r0, _0802A1E0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802A1F4 - ldr r0, _0802A1E4 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _0802A1E8 @ =gBitTable - ldrb r3, [r3] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802A1F4 - ldr r1, _0802A1EC @ =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - blt _0802A1F4 - lsls r0, r3, 4 - adds r2, r0, r1 - ldrb r1, [r2] - lsls r0, r1, 28 - cmp r0, 0 - blt _0802A1F4 - movs r0, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802A1F0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802A20E - .align 2, 0 -_0802A1D8: .4byte gBankAttacker -_0802A1DC: .4byte gBankTarget -_0802A1E0: .4byte gBattleTypeFlags -_0802A1E4: .4byte gAbsentBankFlags -_0802A1E8: .4byte gBitTable -_0802A1EC: .4byte gProtectStructs -_0802A1F0: .4byte gBattlescriptCurrInstr -_0802A1F4: - ldr r3, _0802A214 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A20E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802A214: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802A170 - - thumb_func_start sub_802A218 -sub_802A218: @ 802A218 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0802A30C @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802A24C - ldr r0, _0802A310 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0802A314 @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _0802A24C - ldr r0, _0802A318 @ =gTrainerBattleOpponent - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _0802A2EE -_0802A24C: - ldr r4, _0802A30C @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0802A310 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0802A314 @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _0802A290 - ldr r0, _0802A318 @ =gTrainerBattleOpponent - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0802A290 - ldr r0, _0802A31C @ =gWishFutureKnock - adds r0, 0x29 - adds r0, r2, r0 - ldrb r1, [r0] - ldr r3, _0802A320 @ =gBitTable - ldr r2, _0802A324 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802A2EE -_0802A290: - ldr r0, _0802A328 @ =gBattleMons - mov r9, r0 - ldr r1, _0802A30C @ =gBankAttacker - ldrb r4, [r1] - movs r2, 0x58 - mov r8, r2 - mov r0, r8 - muls r0, r4 - mov r3, r9 - adds r5, r0, r3 - ldrh r3, [r5, 0x2E] - adds r1, r3, 0 - cmp r1, 0 - bne _0802A2BE - ldr r0, _0802A32C @ =gBankTarget - ldrb r0, [r0] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - add r0, r9 - ldrh r0, [r0, 0x2E] - cmp r0, 0 - beq _0802A2EE -_0802A2BE: - cmp r1, 0xAF - beq _0802A2EE - ldr r7, _0802A32C @ =gBankTarget - ldrb r0, [r7] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - mov r1, r9 - adds r2, r0, r1 - ldrh r1, [r2, 0x2E] - cmp r1, 0xAF - beq _0802A2EE - adds r0, r3, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bls _0802A2EE - adds r0, r1, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bhi _0802A334 -_0802A2EE: - ldr r3, _0802A330 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802A49A - .align 2, 0 -_0802A30C: .4byte gBankAttacker -_0802A310: .4byte gBattleTypeFlags -_0802A314: .4byte 0x00000902 -_0802A318: .4byte gTrainerBattleOpponent -_0802A31C: .4byte gWishFutureKnock -_0802A320: .4byte gBitTable -_0802A324: .4byte gBattlePartyID -_0802A328: .4byte gBattleMons -_0802A32C: .4byte gBankTarget -_0802A330: .4byte gBattlescriptCurrInstr -_0802A334: - adds r0, r2, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3C - bne _0802A36C - ldr r1, _0802A360 @ =gBattlescriptCurrInstr - ldr r0, _0802A364 @ =BattleScript_NoItemSteal - str r0, [r1] - ldr r1, _0802A368 @ =gLastUsedAbility - ldrb r0, [r7] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - add r0, r9 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - ldrb r1, [r1] - bl RecordAbilityBattle - b _0802A49A - .align 2, 0 -_0802A360: .4byte gBattlescriptCurrInstr -_0802A364: .4byte BattleScript_NoItemSteal -_0802A368: .4byte gLastUsedAbility -_0802A36C: - lsls r0, r4, 1 - ldr r4, _0802A458 @ =0x020160f0 - adds r6, r0, r4 - ldrh r5, [r5, 0x2E] - mov r10, r5 - strh r1, [r6] - ldr r3, _0802A45C @ =gBankAttacker - ldrb r0, [r3] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0 - strh r1, [r0, 0x2E] - ldrb r0, [r7] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - add r0, r9 - mov r3, r10 - strh r3, [r0, 0x2E] - ldr r5, _0802A460 @ =gActiveBank - ldr r1, _0802A45C @ =gBankAttacker - ldrb r0, [r1] - strb r0, [r5] - str r6, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldr r2, _0802A45C @ =gBankAttacker - ldrb r0, [r2] - bl MarkBufferBankForExecution - ldrb r0, [r7] - strb r0, [r5] - ldrb r0, [r7] - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - mov r1, r9 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r0, _0802A464 @ =0xfffe9f10 - adds r4, r0 - ldrb r0, [r7] - lsls r0, 1 - ldr r2, _0802A468 @ =0x000160e8 - adds r0, r2 - adds r0, r4 - movs r1, 0 - strb r1, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _0802A46C @ =0x000160e9 - adds r0, r1 - adds r0, r4 - movs r3, 0 - strb r3, [r0] - ldr r3, _0802A45C @ =gBankAttacker - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - adds r0, r4 - movs r2, 0 - strb r2, [r0] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - adds r0, r4 - strb r2, [r0] - ldr r1, _0802A470 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r1, _0802A474 @ =gBattleTextBuff1 - movs r3, 0xFD - strb r3, [r1] - movs r2, 0xA - strb r2, [r1, 0x1] - ldrh r0, [r6] - strb r0, [r1, 0x2] - ldrh r0, [r6] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _0802A478 @ =gBattleTextBuff2 - strb r3, [r1] - strb r2, [r1, 0x1] - mov r3, r10 - strb r3, [r1, 0x2] - mov r2, r10 - lsrs r0, r2, 8 - strb r0, [r1, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x4] - cmp r2, 0 - beq _0802A480 - ldrh r0, [r6] - cmp r0, 0 - beq _0802A494 - ldr r1, _0802A47C @ =gBattleCommunication - movs r0, 0x2 - b _0802A498 - .align 2, 0 -_0802A458: .4byte 0x020160f0 -_0802A45C: .4byte gBankAttacker -_0802A460: .4byte gActiveBank -_0802A464: .4byte 0xfffe9f10 -_0802A468: .4byte 0x000160e8 -_0802A46C: .4byte 0x000160e9 -_0802A470: .4byte gBattlescriptCurrInstr -_0802A474: .4byte gBattleTextBuff1 -_0802A478: .4byte gBattleTextBuff2 -_0802A47C: .4byte gBattleCommunication -_0802A480: - ldrh r0, [r6] - cmp r0, 0 - beq _0802A494 - ldr r0, _0802A490 @ =gBattleCommunication - movs r3, 0 - strb r3, [r0, 0x5] - b _0802A49A - .align 2, 0 -_0802A490: .4byte gBattleCommunication -_0802A494: - ldr r1, _0802A4AC @ =gBattleCommunication - movs r0, 0x1 -_0802A498: - strb r0, [r1, 0x5] -_0802A49A: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802A4AC: .4byte gBattleCommunication - thumb_func_end sub_802A218 - - thumb_func_start sub_802A4B0 -sub_802A4B0: @ 802A4B0 - push {r4,lr} - ldr r3, _0802A4F0 @ =gBattleMons - ldr r4, _0802A4F4 @ =gBankTarget - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r1, [r0] - adds r0, r1, 0 - cmp r0, 0 - beq _0802A504 - cmp r0, 0x19 - beq _0802A504 - ldr r0, _0802A4F8 @ =gBankAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - strb r1, [r0] - ldr r1, _0802A4FC @ =gLastUsedAbility - ldrb r0, [r4] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _0802A500 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802A51E - .align 2, 0 -_0802A4F0: .4byte gBattleMons -_0802A4F4: .4byte gBankTarget -_0802A4F8: .4byte gBankAttacker -_0802A4FC: .4byte gLastUsedAbility -_0802A500: .4byte gBattlescriptCurrInstr -_0802A504: - ldr r3, _0802A524 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A51E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802A524: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802A4B0 - - thumb_func_start atkD4_802C408 -atkD4_802C408: @ 802A528 - push {r4-r7,lr} - ldr r7, _0802A53C @ =gBattlescriptCurrInstr - ldr r2, [r7] - ldrb r3, [r2, 0x1] - cmp r3, 0 - beq _0802A540 - cmp r3, 0x1 - beq _0802A578 - b _0802A5F4 - .align 2, 0 -_0802A53C: .4byte gBattlescriptCurrInstr -_0802A540: - ldr r1, _0802A56C @ =gWishFutureKnock - ldr r4, _0802A570 @ =gBankAttacker - adds r0, r1, 0 - adds r0, 0x20 - ldrb r5, [r4] - adds r3, r0, r5 - ldrb r0, [r3] - cmp r0, 0 - bne _0802A5C4 - movs r0, 0x2 - strb r0, [r3] - ldrb r0, [r4] - adds r1, 0x24 - adds r1, r0, r1 - ldr r2, _0802A574 @ =gBattlePartyID - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x6 - b _0802A5F2 - .align 2, 0 -_0802A56C: .4byte gWishFutureKnock -_0802A570: .4byte gBankAttacker -_0802A574: .4byte gBattlePartyID -_0802A578: - ldr r1, _0802A5DC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r4, _0802A5E0 @ =gBankTarget - ldrb r0, [r4] - strb r0, [r1, 0x2] - ldr r0, _0802A5E4 @ =gWishFutureKnock - adds r0, 0x24 - ldrb r5, [r4] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _0802A5E8 @ =gBattleMoveDamage - ldr r6, _0802A5EC @ =gBattleMons - ldrb r0, [r4] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _0802A5B0 - str r3, [r1] -_0802A5B0: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldrb r0, [r4] - muls r0, r5 - adds r0, r6 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - bne _0802A5F0 -_0802A5C4: - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r7] - b _0802A5F4 - .align 2, 0 -_0802A5DC: .4byte gBattleTextBuff1 -_0802A5E0: .4byte gBankTarget -_0802A5E4: .4byte gWishFutureKnock -_0802A5E8: .4byte gBattleMoveDamage -_0802A5EC: .4byte gBattleMons -_0802A5F0: - adds r0, r2, 0x6 -_0802A5F2: - str r0, [r7] -_0802A5F4: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atkD4_802C408 - - thumb_func_start sub_802A5FC -sub_802A5FC: @ 802A5FC - push {lr} - ldr r1, _0802A634 @ =gStatuses3 - ldr r0, _0802A638 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0802A640 - ldr r3, _0802A63C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802A64C - .align 2, 0 -_0802A634: .4byte gStatuses3 -_0802A638: .4byte gBankAttacker -_0802A63C: .4byte gBattlescriptCurrInstr -_0802A640: - orrs r1, r3 - str r1, [r2] - ldr r1, _0802A650 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802A64C: - pop {r0} - bx r0 - .align 2, 0 -_0802A650: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802A5FC - - thumb_func_start atkD6_doubledamagedealtifdamaged -atkD6_doubledamagedealtifdamaged: @ 802A654 - push {lr} - ldr r3, _0802A6A4 @ =gProtectStructs - ldr r0, _0802A6A8 @ =gBankAttacker - ldrb r0, [r0] - lsls r2, r0, 4 - adds r0, r3, 0x4 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802A674 - adds r0, r2, r3 - ldr r1, _0802A6AC @ =gBankTarget - ldrb r0, [r0, 0xC] - ldrb r1, [r1] - cmp r0, r1 - beq _0802A68C -_0802A674: - adds r0, r3, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802A696 - adds r0, r2, r3 - ldr r1, _0802A6AC @ =gBankTarget - ldrb r0, [r0, 0xD] - ldrb r1, [r1] - cmp r0, r1 - bne _0802A696 -_0802A68C: - ldr r0, _0802A6B0 @ =0x02000000 - ldr r1, _0802A6B4 @ =0x0001601f - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] -_0802A696: - ldr r1, _0802A6B8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802A6A4: .4byte gProtectStructs -_0802A6A8: .4byte gBankAttacker -_0802A6AC: .4byte gBankTarget -_0802A6B0: .4byte 0x02000000 -_0802A6B4: .4byte 0x0001601f -_0802A6B8: .4byte gBattlescriptCurrInstr - thumb_func_end atkD6_doubledamagedealtifdamaged - - thumb_func_start sub_802A6BC -sub_802A6BC: @ 802A6BC - push {r4,lr} - ldr r1, _0802A700 @ =gStatuses3 - ldr r0, _0802A704 @ =gBankTarget - ldrb r3, [r0] - lsls r0, r3, 2 - adds r4, r0, r1 - ldr r2, [r4] - movs r0, 0xC0 - lsls r0, 5 - ands r0, r2 - cmp r0, 0 - bne _0802A6E4 - ldr r1, _0802A708 @ =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, 0x4C - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0802A710 -_0802A6E4: - ldr r3, _0802A70C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802A720 - .align 2, 0 -_0802A700: .4byte gStatuses3 -_0802A704: .4byte gBankTarget -_0802A708: .4byte gBattleMons -_0802A70C: .4byte gBattlescriptCurrInstr -_0802A710: - movs r0, 0x80 - lsls r0, 5 - orrs r2, r0 - str r2, [r4] - ldr r1, _0802A728 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802A720: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802A728: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802A6BC - - thumb_func_start atkD8_setdamagetohealthdifference -atkD8_setdamagetohealthdifference: @ 802A72C - push {lr} - ldr r2, _0802A768 @ =gBattleMons - ldr r0, _0802A76C @ =gBankTarget - ldrb r0, [r0] - movs r1, 0x58 - muls r0, r1 - adds r3, r0, r2 - ldr r0, _0802A770 @ =gBankAttacker - ldrb r0, [r0] - muls r0, r1 - adds r1, r0, r2 - ldrh r0, [r3, 0x28] - ldrh r2, [r1, 0x28] - cmp r0, r2 - bhi _0802A778 - ldr r3, _0802A774 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802A78A - .align 2, 0 -_0802A768: .4byte gBattleMons -_0802A76C: .4byte gBankTarget -_0802A770: .4byte gBankAttacker -_0802A774: .4byte gBattlescriptCurrInstr -_0802A778: - ldr r2, _0802A790 @ =gBattleMoveDamage - ldrh r0, [r3, 0x28] - ldrh r1, [r1, 0x28] - subs r0, r1 - str r0, [r2] - ldr r1, _0802A794 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802A78A: - pop {r0} - bx r0 - .align 2, 0 -_0802A790: .4byte gBattleMoveDamage -_0802A794: .4byte gBattlescriptCurrInstr - thumb_func_end atkD8_setdamagetohealthdifference - - thumb_func_start atkD9_scaledamagebyhealthratio -atkD9_scaledamagebyhealthratio: @ 802A798 - push {r4,lr} - ldr r4, _0802A7E4 @ =gDynamicBasePower - ldrh r0, [r4] - cmp r0, 0 - bne _0802A7D4 - ldr r2, _0802A7E8 @ =gBattleMoves - ldr r0, _0802A7EC @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r3, [r0, 0x1] - ldr r2, _0802A7F0 @ =gBattleMons - ldr r0, _0802A7F4 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r0, [r1, 0x28] - muls r0, r3 - ldrh r1, [r1, 0x2C] - bl __divsi3 - strh r0, [r4] - lsls r0, 16 - cmp r0, 0 - bne _0802A7D4 - movs r0, 0x1 - strh r0, [r4] -_0802A7D4: - ldr r1, _0802A7F8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802A7E4: .4byte gDynamicBasePower -_0802A7E8: .4byte gBattleMoves -_0802A7EC: .4byte gCurrentMove -_0802A7F0: .4byte gBattleMons -_0802A7F4: .4byte gBankAttacker -_0802A7F8: .4byte gBattlescriptCurrInstr - thumb_func_end atkD9_scaledamagebyhealthratio - - thumb_func_start atkDA_abilityswap -atkDA_abilityswap: @ 802A7FC - push {r4-r6,lr} - ldr r5, _0802A860 @ =gBattleMons - ldr r0, _0802A864 @ =gBankAttacker - ldrb r0, [r0] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r1, [r2] - cmp r1, 0 - bne _0802A824 - ldr r0, _0802A868 @ =gBankTarget - ldrb r0, [r0] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _0802A844 -_0802A824: - cmp r1, 0x19 - beq _0802A844 - ldr r6, _0802A868 @ =gBankTarget - ldrb r0, [r6] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - ldrb r3, [r0] - cmp r3, 0x19 - beq _0802A844 - ldr r0, _0802A86C @ =gBattleMoveFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0802A874 -_0802A844: - ldr r3, _0802A870 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802A88A - .align 2, 0 -_0802A860: .4byte gBattleMons -_0802A864: .4byte gBankAttacker -_0802A868: .4byte gBankTarget -_0802A86C: .4byte gBattleMoveFlags -_0802A870: .4byte gBattlescriptCurrInstr -_0802A874: - ldrb r1, [r2] - strb r3, [r2] - ldrb r0, [r6] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - strb r1, [r0] - ldr r1, _0802A890 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802A88A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802A890: .4byte gBattlescriptCurrInstr - thumb_func_end atkDA_abilityswap - - thumb_func_start atkDB_imprisoneffect -atkDB_imprisoneffect: @ 802A894 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r0, 0 - mov r8, r0 - ldr r1, _0802A8B8 @ =gStatuses3 - ldr r0, _0802A8BC @ =gBankAttacker - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _0802A8E8 - b _0802A95E - .align 2, 0 -_0802A8B8: .4byte gStatuses3 -_0802A8BC: .4byte gBankAttacker -_0802A8C0: - ldr r0, _0802A8E0 @ =gStatuses3 - mov r2, r9 - ldrb r1, [r2] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 6 - orrs r0, r2 - str r0, [r1] - ldr r1, _0802A8E4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802A956 - .align 2, 0 -_0802A8E0: .4byte gStatuses3 -_0802A8E4: .4byte gBattlescriptCurrInstr -_0802A8E8: - adds r0, r2, 0 - bl sub_801529C - movs r6, 0 - b _0802A94E -_0802A8F2: - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r8, r0 - beq _0802A948 - movs r4, 0 - ldr r7, _0802A984 @ =gBankAttacker - mov r9, r7 - ldr r0, _0802A988 @ =gBattleMons - mov r12, r0 - mov r1, r9 - ldrb r0, [r1] - mov r2, r12 - adds r2, 0xC - movs r1, 0x58 - muls r0, r1 - adds r3, r0, r2 - adds r5, r6, 0 - muls r5, r1 -_0802A91C: - movs r2, 0 - ldrh r1, [r3] - mov r0, r12 - adds r0, 0xC - adds r0, r5, r0 -_0802A926: - ldrh r7, [r0] - cmp r1, r7 - bne _0802A930 - cmp r1, 0 - bne _0802A938 -_0802A930: - adds r0, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _0802A926 -_0802A938: - cmp r2, 0x4 - bne _0802A944 - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0802A91C -_0802A944: - cmp r4, 0x4 - bne _0802A8C0 -_0802A948: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0802A94E: - ldr r0, _0802A98C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - bcc _0802A8F2 -_0802A956: - ldr r0, _0802A98C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r6, r0 - bne _0802A978 -_0802A95E: - ldr r3, _0802A990 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A978: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802A984: .4byte gBankAttacker -_0802A988: .4byte gBattleMons -_0802A98C: .4byte gNoOfAllBanks -_0802A990: .4byte gBattlescriptCurrInstr - thumb_func_end atkDB_imprisoneffect - - thumb_func_start atkDC_setgrudge -atkDC_setgrudge: @ 802A994 - push {lr} - ldr r1, _0802A9CC @ =gStatuses3 - ldr r0, _0802A9D0 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 7 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0802A9D8 - ldr r3, _0802A9D4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802A9E4 - .align 2, 0 -_0802A9CC: .4byte gStatuses3 -_0802A9D0: .4byte gBankAttacker -_0802A9D4: .4byte gBattlescriptCurrInstr -_0802A9D8: - orrs r1, r3 - str r1, [r2] - ldr r1, _0802A9E8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802A9E4: - pop {r0} - bx r0 - .align 2, 0 -_0802A9E8: .4byte gBattlescriptCurrInstr - thumb_func_end atkDC_setgrudge - - thumb_func_start atkDD_weightdamagecalculation -atkDD_weightdamagecalculation: @ 802A9EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r5, 0 - ldr r2, _0802AA50 @ =gWeightDamage - ldrh r0, [r2] - ldr r1, _0802AA54 @ =0x0000ffff - cmp r0, r1 - beq _0802AA64 - adds r6, r2, 0 - ldr r0, _0802AA58 @ =gBattleMons - mov r8, r0 - adds r7, r1, 0 - adds r4, r6, 0 -_0802AA08: - ldr r0, _0802AA5C @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetPokedexHeightWeight - ldrh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bhi _0802AA36 - adds r4, 0x4 - adds r5, 0x2 - ldrh r0, [r4] - cmp r0, r7 - bne _0802AA08 -_0802AA36: - lsls r0, r5, 1 - adds r0, r6 - ldrh r1, [r0] - ldr r0, _0802AA54 @ =0x0000ffff - cmp r1, r0 - beq _0802AA64 - ldr r0, _0802AA60 @ =gDynamicBasePower - adds r1, r5, 0x1 - lsls r1, 1 - adds r1, r6 - ldrh r1, [r1] - strh r1, [r0] - b _0802AA6A - .align 2, 0 -_0802AA50: .4byte gWeightDamage -_0802AA54: .4byte 0x0000ffff -_0802AA58: .4byte gBattleMons -_0802AA5C: .4byte gBankTarget -_0802AA60: .4byte gDynamicBasePower -_0802AA64: - ldr r1, _0802AA7C @ =gDynamicBasePower - movs r0, 0x78 - strh r0, [r1] -_0802AA6A: - ldr r1, _0802AA80 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802AA7C: .4byte gDynamicBasePower -_0802AA80: .4byte gBattlescriptCurrInstr - thumb_func_end atkDD_weightdamagecalculation - - thumb_func_start atkDE_asistattackselect -atkDE_asistattackselect: @ 802AA84 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r10, r0 - ldr r0, _0802AB9C @ =gBankAttacker - ldrb r0, [r0] - bl GetBankIdentity - movs r1, 0x1 - ands r1, r0 - ldr r0, _0802ABA0 @ =gPlayerParty - str r0, [sp] - cmp r1, 0 - beq _0802AAAC - ldr r1, _0802ABA4 @ =gEnemyParty - str r1, [sp] -_0802AAAC: - movs r2, 0 -_0802AAAE: - ldr r1, _0802ABA8 @ =gBattlePartyID - ldr r0, _0802AB9C @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - adds r1, r2, 0x1 - str r1, [sp, 0x4] - ldrh r0, [r0] - cmp r2, r0 - beq _0802AB54 - movs r0, 0x64 - adds r6, r2, 0 - muls r6, r0 - ldr r0, [sp] - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0802AB54 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0802AB54 - movs r5, 0 - ldr r1, _0802ABAC @ =0x0000ffff - mov r8, r1 - mov r9, r6 - mov r1, r10 - lsls r0, r1, 1 - ldr r1, _0802ABB0 @ =0x02016024 - adds r6, r0, r1 -_0802AAF8: - movs r7, 0 - adds r1, r5, 0 - adds r1, 0xD - ldr r0, [sp] - add r0, r9 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_802838C - lsls r0, 24 - adds r1, r5, 0x1 - cmp r0, 0 - bne _0802AB4E - ldr r0, _0802ABB4 @ =gUnknown_081FACFE - ldrh r2, [r0] - adds r3, r0, 0 - cmp r2, r8 - beq _0802AB42 - cmp r4, r2 - beq _0802AB38 - ldr r5, _0802ABAC @ =0x0000ffff - adds r2, r3, 0 -_0802AB2A: - adds r2, 0x2 - adds r7, 0x1 - ldrh r0, [r2] - cmp r0, r5 - beq _0802AB42 - cmp r4, r0 - bne _0802AB2A -_0802AB38: - lsls r0, r7, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r8 - bne _0802AB4E -_0802AB42: - cmp r4, 0 - beq _0802AB4E - strh r4, [r6] - adds r6, 0x2 - movs r0, 0x1 - add r10, r0 -_0802AB4E: - adds r5, r1, 0 - cmp r5, 0x3 - ble _0802AAF8 -_0802AB54: - ldr r2, [sp, 0x4] - cmp r2, 0x5 - ble _0802AAAE - mov r1, r10 - cmp r1, 0 - beq _0802ABCC - ldr r2, _0802ABB8 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0802ABBC @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, _0802ABC0 @ =gUnknown_02024BEA - bl Random - movs r1, 0xFF - ands r1, r0 - mov r0, r10 - muls r0, r1 - asrs r0, 8 - lsls r0, 1 - ldr r1, _0802ABB0 @ =0x02016024 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0 - bl sub_801B5C0 - ldr r1, _0802ABC4 @ =gBankTarget - strb r0, [r1] - ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802ABE6 - .align 2, 0 -_0802AB9C: .4byte gBankAttacker -_0802ABA0: .4byte gPlayerParty -_0802ABA4: .4byte gEnemyParty -_0802ABA8: .4byte gBattlePartyID -_0802ABAC: .4byte 0x0000ffff -_0802ABB0: .4byte 0x02016024 -_0802ABB4: .4byte gUnknown_081FACFE -_0802ABB8: .4byte gHitMarker -_0802ABBC: .4byte 0xfffffbff -_0802ABC0: .4byte gUnknown_02024BEA -_0802ABC4: .4byte gBankTarget -_0802ABC8: .4byte gBattlescriptCurrInstr -_0802ABCC: - ldr r3, _0802ABF8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802ABE6: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802ABF8: .4byte gBattlescriptCurrInstr - thumb_func_end atkDE_asistattackselect - - thumb_func_start atkDF_setmagiccoat -atkDF_setmagiccoat: @ 802ABFC - push {lr} - ldr r1, _0802AC44 @ =gBankTarget - ldr r3, _0802AC48 @ =gBankAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r2, _0802AC4C @ =gSpecialStatuses - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r0, _0802AC50 @ =gCurrentMoveTurn - ldrb r1, [r0] - ldr r0, _0802AC54 @ =gNoOfAllBanks - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _0802AC5C - ldr r3, _0802AC58 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802AC74 - .align 2, 0 -_0802AC44: .4byte gBankTarget -_0802AC48: .4byte gBankAttacker -_0802AC4C: .4byte gSpecialStatuses -_0802AC50: .4byte gCurrentMoveTurn -_0802AC54: .4byte gNoOfAllBanks -_0802AC58: .4byte gBattlescriptCurrInstr -_0802AC5C: - ldr r0, _0802AC78 @ =gProtectStructs - ldrb r1, [r3] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x10 - orrs r0, r2 - strb r0, [r1] - ldr r1, _0802AC7C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802AC74: - pop {r0} - bx r0 - .align 2, 0 -_0802AC78: .4byte gProtectStructs -_0802AC7C: .4byte gBattlescriptCurrInstr - thumb_func_end atkDF_setmagiccoat - - thumb_func_start atkE0_setstealstatchange -atkE0_setstealstatchange: @ 802AC80 - push {lr} - ldr r2, _0802ACC4 @ =gSpecialStatuses - ldr r3, _0802ACC8 @ =gBankAttacker - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r0, _0802ACCC @ =gCurrentMoveTurn - ldrb r1, [r0] - ldr r0, _0802ACD0 @ =gNoOfAllBanks - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _0802ACD8 - ldr r3, _0802ACD4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802ACEE - .align 2, 0 -_0802ACC4: .4byte gSpecialStatuses -_0802ACC8: .4byte gBankAttacker -_0802ACCC: .4byte gCurrentMoveTurn -_0802ACD0: .4byte gNoOfAllBanks -_0802ACD4: .4byte gBattlescriptCurrInstr -_0802ACD8: - ldr r0, _0802ACF4 @ =gProtectStructs - ldrb r1, [r3] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] - ldr r1, _0802ACF8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802ACEE: - pop {r0} - bx r0 - .align 2, 0 -_0802ACF4: .4byte gProtectStructs -_0802ACF8: .4byte gBattlescriptCurrInstr - thumb_func_end atkE0_setstealstatchange - - thumb_func_start atkE1_802CBE4 -atkE1_802CBE4: @ 802ACFC - push {r4-r6,lr} - ldr r4, _0802ADA0 @ =0x02000000 - ldr r1, _0802ADA4 @ =0x000160dd - adds r0, r4, r1 - ldrb r0, [r0] - subs r1, 0xDA - adds r4, r1 - strb r0, [r4] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _0802ADA8 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x9 - strb r0, [r2, 0x1] - ldr r3, _0802ADAC @ =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2, 0x2] - movs r0, 0xFF - strb r0, [r2, 0x3] - ldr r2, _0802ADB0 @ =gBankTarget - ldr r1, _0802ADB4 @ =gNoOfAllBanks - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bcs _0802AD84 - adds r4, r2, 0 - ldr r6, _0802ADB8 @ =gBitTable -_0802AD44: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - beq _0802AD66 - ldr r0, _0802ADBC @ =gAbsentBankFlags - ldrb r1, [r0] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ands r1, r0 - ldr r2, _0802ADB4 @ =gNoOfAllBanks - cmp r1, 0 - beq _0802AD7A -_0802AD66: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _0802ADB4 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - adds r2, r1, 0 - ldrb r1, [r2] - cmp r0, r1 - bcc _0802AD44 -_0802AD7A: - ldr r0, _0802ADB0 @ =gBankTarget - ldrb r0, [r0] - ldrb r2, [r2] - cmp r0, r2 - bcc _0802ADC4 -_0802AD84: - ldr r3, _0802ADC0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802ADCC - .align 2, 0 -_0802ADA0: .4byte 0x02000000 -_0802ADA4: .4byte 0x000160dd -_0802ADA8: .4byte gBattleTextBuff1 -_0802ADAC: .4byte gBattleMons -_0802ADB0: .4byte gBankTarget -_0802ADB4: .4byte gNoOfAllBanks -_0802ADB8: .4byte gBitTable -_0802ADBC: .4byte gAbsentBankFlags -_0802ADC0: .4byte gBattlescriptCurrInstr -_0802ADC4: - ldr r1, _0802ADD4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802ADCC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802ADD4: .4byte gBattlescriptCurrInstr - thumb_func_end atkE1_802CBE4 - - thumb_func_start sub_802ADD8 -sub_802ADD8: @ 802ADD8 - push {r4-r7,lr} - sub sp, 0x4 - ldr r6, _0802AE44 @ =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r5, _0802AE48 @ =gActiveBank - strb r0, [r5] - ldr r4, _0802AE4C @ =gBattleMons - ldrb r0, [r5] - movs r1, 0x58 - mov r12, r1 - mov r1, r12 - muls r1, r0 - adds r0, r1, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1E - bne _0802AE34 - adds r4, 0x4C - adds r1, r4 - movs r0, 0 - str r0, [r1] - ldr r2, _0802AE50 @ =gBitTable - ldr r1, _0802AE54 @ =0x02000000 - ldrb r3, [r5] - ldr r7, _0802AE58 @ =0x00016064 - adds r0, r3, r7 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0] - mov r0, r12 - muls r0, r3 - adds r0, r4 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r3, 0x4 - bl EmitSetAttributes - ldrb r0, [r5] - bl MarkBufferBankForExecution -_0802AE34: - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802AE44: .4byte gBattlescriptCurrInstr -_0802AE48: .4byte gActiveBank -_0802AE4C: .4byte gBattleMons -_0802AE50: .4byte gBitTable -_0802AE54: .4byte 0x02000000 -_0802AE58: .4byte 0x00016064 - thumb_func_end sub_802ADD8 - - thumb_func_start atkE3_jumpiffainted -atkE3_jumpiffainted: @ 802AE5C - push {r4,lr} - ldr r4, _0802AE98 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl sub_8015150 - ldr r1, _0802AE9C @ =gActiveBank - strb r0, [r1] - ldr r2, _0802AEA0 @ =gBattleMons - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0802AEA4 - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _0802AEAA - .align 2, 0 -_0802AE98: .4byte gBattlescriptCurrInstr -_0802AE9C: .4byte gActiveBank -_0802AEA0: .4byte gBattleMons -_0802AEA4: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_0802AEAA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atkE3_jumpiffainted - - thumb_func_start sub_802AEB0 -sub_802AEB0: @ 802AEB0 - push {lr} - ldr r0, _0802AEC4 @ =gBattleTerrain - ldrb r0, [r0] - cmp r0, 0x7 - bhi _0802AF4C - lsls r0, 2 - ldr r1, _0802AEC8 @ =_0802AECC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802AEC4: .4byte gBattleTerrain -_0802AEC8: .4byte _0802AECC - .align 2, 0 -_0802AECC: - .4byte _0802AEEC - .4byte _0802AEF8 - .4byte _0802AF04 - .4byte _0802AF10 - .4byte _0802AF1C - .4byte _0802AF28 - .4byte _0802AF34 - .4byte _0802AF40 -_0802AEEC: - ldr r1, _0802AEF4 @ =gBattleCommunication - movs r0, 0x2 - b _0802AF50 - .align 2, 0 -_0802AEF4: .4byte gBattleCommunication -_0802AEF8: - ldr r1, _0802AF00 @ =gBattleCommunication - movs r0, 0x1 - b _0802AF50 - .align 2, 0 -_0802AF00: .4byte gBattleCommunication -_0802AF04: - ldr r1, _0802AF0C @ =gBattleCommunication - movs r0, 0x1B - b _0802AF50 - .align 2, 0 -_0802AF0C: .4byte gBattleCommunication -_0802AF10: - ldr r1, _0802AF18 @ =gBattleCommunication - movs r0, 0x17 - b _0802AF50 - .align 2, 0 -_0802AF18: .4byte gBattleCommunication -_0802AF1C: - ldr r1, _0802AF24 @ =gBattleCommunication - movs r0, 0x16 - b _0802AF50 - .align 2, 0 -_0802AF24: .4byte gBattleCommunication -_0802AF28: - ldr r1, _0802AF30 @ =gBattleCommunication - movs r0, 0x18 - b _0802AF50 - .align 2, 0 -_0802AF30: .4byte gBattleCommunication -_0802AF34: - ldr r1, _0802AF3C @ =gBattleCommunication - movs r0, 0x7 - b _0802AF50 - .align 2, 0 -_0802AF3C: .4byte gBattleCommunication -_0802AF40: - ldr r1, _0802AF48 @ =gBattleCommunication - movs r0, 0x8 - b _0802AF50 - .align 2, 0 -_0802AF48: .4byte gBattleCommunication -_0802AF4C: - ldr r1, _0802AF60 @ =gBattleCommunication - movs r0, 0x5 -_0802AF50: - strb r0, [r1, 0x3] - ldr r1, _0802AF64 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802AF60: .4byte gBattleCommunication -_0802AF64: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802AEB0 - - thumb_func_start sub_802AF68 -sub_802AF68: @ 802AF68 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r7, 0 - ldr r0, _0802AFB4 @ =gBaseStats - mov r9, r0 - ldr r1, _0802AFB8 @ =gPickupItems - mov r8, r1 -_0802AF7A: - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _0802AFBC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - cmp r0, 0 - beq _0802AFC0 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x17] - b _0802AFCA - .align 2, 0 -_0802AFB4: .4byte gBaseStats -_0802AFB8: .4byte gPickupItems -_0802AFBC: .4byte gPlayerParty -_0802AFC0: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x16] -_0802AFCA: - adds r4, r7, 0x1 - cmp r0, 0x35 - bne _0802B032 - cmp r5, 0 - beq _0802B032 - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - beq _0802B032 - cmp r6, 0 - bne _0802B032 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _0802B032 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - mov r1, r8 - ldrh r0, [r1, 0x2] - cmp r0, r3 - bgt _0802B020 - adds r1, 0x2 -_0802B012: - adds r1, 0x4 - adds r2, 0x2 - cmp r2, 0x11 - bgt _0802B020 - ldrh r0, [r1] - cmp r0, r3 - ble _0802B012 -_0802B020: - movs r0, 0x64 - muls r0, r7 - ldr r1, _0802B04C @ =gPlayerParty - adds r0, r1 - lsls r2, 1 - add r2, r8 - movs r1, 0xC - bl SetMonData -_0802B032: - adds r7, r4, 0 - cmp r7, 0x5 - ble _0802AF7A - ldr r1, _0802B050 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B04C: .4byte gPlayerParty -_0802B050: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802AF68 - - thumb_func_start atkE6_castform_transform -atkE6_castform_transform: @ 802B054 - push {r4,lr} - ldr r4, _0802B0A8 @ =gActiveBank - ldr r3, _0802B0AC @ =0x02000000 - ldr r1, _0802B0B0 @ =0x00016003 - adds r0, r3, r1 - ldrb r0, [r0] - strb r0, [r4] - ldr r1, _0802B0B4 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0802B086 - ldr r0, _0802B0B8 @ =0x0001609b - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x80 - orrs r0, r1 - strb r0, [r2] -_0802B086: - ldr r1, _0802B0B8 @ =0x0001609b - adds r0, r3, r1 - ldrb r2, [r0] - movs r0, 0 - movs r1, 0 - bl EmitBattleAnimation - ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _0802B0BC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802B0A8: .4byte gActiveBank -_0802B0AC: .4byte 0x02000000 -_0802B0B0: .4byte 0x00016003 -_0802B0B4: .4byte gBattleMons -_0802B0B8: .4byte 0x0001609b -_0802B0BC: .4byte gBattlescriptCurrInstr - thumb_func_end atkE6_castform_transform - - thumb_func_start atkE7_castform_switch -atkE7_castform_switch: @ 802B0C0 - push {r4,r5,lr} - ldr r1, _0802B0F4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r5, _0802B0F8 @ =0x02000000 - ldr r1, _0802B0FC @ =0x00016003 - adds r0, r5, r1 - ldrb r0, [r0] - bl castform_switch - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0802B0EC - ldr r0, _0802B100 @ =gUnknown_081D977D - bl b_push_move_exec - subs r1, r4, 0x1 - ldr r2, _0802B104 @ =0x0001609b - adds r0, r5, r2 - strb r1, [r0] -_0802B0EC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802B0F4: .4byte gBattlescriptCurrInstr -_0802B0F8: .4byte 0x02000000 -_0802B0FC: .4byte 0x00016003 -_0802B100: .4byte gUnknown_081D977D -_0802B104: .4byte 0x0001609b - thumb_func_end atkE7_castform_switch - - thumb_func_start atkE8_settypebasedhalvers -atkE8_settypebasedhalvers: @ 802B108 - push {r4,lr} - movs r4, 0 - ldr r2, _0802B144 @ =gBattleMoves - ldr r0, _0802B148 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0xC9 - bne _0802B158 - ldr r1, _0802B14C @ =gStatuses3 - ldr r0, _0802B150 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 9 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - bne _0802B17C - orrs r1, r3 - str r1, [r2] - ldr r0, _0802B154 @ =gBattleCommunication - strb r4, [r0, 0x5] - b _0802B180 - .align 2, 0 -_0802B144: .4byte gBattleMoves -_0802B148: .4byte gCurrentMove -_0802B14C: .4byte gStatuses3 -_0802B150: .4byte gBankAttacker -_0802B154: .4byte gBattleCommunication -_0802B158: - ldr r1, _0802B18C @ =gStatuses3 - ldr r0, _0802B190 @ =gBankAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 10 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - bne _0802B17C - orrs r1, r3 - str r1, [r2] - ldr r1, _0802B194 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - movs r4, 0x1 -_0802B17C: - cmp r4, 0 - beq _0802B19C -_0802B180: - ldr r1, _0802B198 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802B1B6 - .align 2, 0 -_0802B18C: .4byte gStatuses3 -_0802B190: .4byte gBankAttacker -_0802B194: .4byte gBattleCommunication -_0802B198: .4byte gBattlescriptCurrInstr -_0802B19C: - ldr r3, _0802B1BC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802B1B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802B1BC: .4byte gBattlescriptCurrInstr - thumb_func_end atkE8_settypebasedhalvers - - thumb_func_start sub_802B1C0 -sub_802B1C0: @ 802B1C0 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0802B276 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0802B276 - ldr r3, _0802B218 @ =gBattleWeather - ldrb r0, [r3] - ldr r2, _0802B21C @ =0x02000000 - cmp r0, 0 - beq _0802B202 - ldr r0, _0802B220 @ =0x0001601f - adds r1, r2, r0 - movs r0, 0x2 - strb r0, [r1] -_0802B202: - ldrh r1, [r3] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0802B228 - ldr r0, _0802B224 @ =0x0001601c - adds r1, r2, r0 - movs r0, 0x8B - strb r0, [r1] - b _0802B276 - .align 2, 0 -_0802B218: .4byte gBattleWeather -_0802B21C: .4byte 0x02000000 -_0802B220: .4byte 0x0001601f -_0802B224: .4byte 0x0001601c -_0802B228: - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _0802B240 - ldr r0, _0802B23C @ =0x0001601c - adds r1, r2, r0 - movs r0, 0x85 - strb r0, [r1] - b _0802B276 - .align 2, 0 -_0802B23C: .4byte 0x0001601c -_0802B240: - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0802B258 - ldr r0, _0802B254 @ =0x0001601c - adds r1, r2, r0 - movs r0, 0x8A - strb r0, [r1] - b _0802B276 - .align 2, 0 -_0802B254: .4byte 0x0001601c -_0802B258: - movs r3, 0x80 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0802B270 - ldr r0, _0802B26C @ =0x0001601c - adds r1, r2, r0 - movs r0, 0x8F - strb r0, [r1] - b _0802B276 - .align 2, 0 -_0802B26C: .4byte 0x0001601c -_0802B270: - ldr r1, _0802B284 @ =0x0001601c - adds r0, r2, r1 - strb r3, [r0] -_0802B276: - ldr r1, _0802B288 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0802B284: .4byte 0x0001601c -_0802B288: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802B1C0 - - thumb_func_start atkEA_recycleitem -atkEA_recycleitem: @ 802B28C - push {r4-r7,lr} - sub sp, 0x4 - ldr r7, _0802B2F0 @ =gActiveBank - ldr r0, _0802B2F4 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r7] - ldrb r2, [r7] - lsls r1, r2, 1 - ldr r0, _0802B2F8 @ =0x020160cc - adds r6, r1, r0 - ldrh r5, [r6] - cmp r5, 0 - beq _0802B308 - ldr r4, _0802B2FC @ =gBattleMons - movs r3, 0x58 - adds r0, r2, 0 - muls r0, r3 - adds r0, r4 - ldrh r0, [r0, 0x2E] - cmp r0, 0 - bne _0802B308 - ldr r1, _0802B300 @ =gLastUsedItem - strh r5, [r1] - strh r0, [r6] - ldrb r0, [r7] - muls r0, r3 - adds r0, r4 - ldrh r1, [r1] - strh r1, [r0, 0x2E] - ldrb r0, [r7] - muls r0, r3 - adds r1, r4, 0 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl EmitSetAttributes - ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r1, _0802B304 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802B322 - .align 2, 0 -_0802B2F0: .4byte gActiveBank -_0802B2F4: .4byte gBankAttacker -_0802B2F8: .4byte 0x020160cc -_0802B2FC: .4byte gBattleMons -_0802B300: .4byte gLastUsedItem -_0802B304: .4byte gBattlescriptCurrInstr -_0802B308: - ldr r3, _0802B32C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802B322: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B32C: .4byte gBattlescriptCurrInstr - thumb_func_end atkEA_recycleitem - - thumb_func_start atkEB_settypetoterrain -atkEB_settypetoterrain: @ 802B330 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0802B3A0 @ =gBattleMons - mov r8, r0 - ldr r7, _0802B3A4 @ =gBankAttacker - ldrb r0, [r7] - movs r6, 0x58 - muls r0, r6 - mov r1, r8 - adds r3, r0, r1 - movs r0, 0x21 - adds r0, r3 - mov r12, r0 - ldr r5, _0802B3A8 @ =gTerrainToType - ldr r4, _0802B3AC @ =gBattleTerrain - ldrb r0, [r4] - adds r0, r5 - ldrb r2, [r0] - mov r1, r12 - ldrb r0, [r1] - adds r1, r2, 0 - cmp r0, r1 - beq _0802B3B8 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - beq _0802B3B8 - mov r0, r12 - strb r2, [r0] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - add r1, r8 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - adds r1, 0x22 - strb r0, [r1] - ldr r1, _0802B3B0 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, _0802B3B4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802B3D2 - .align 2, 0 -_0802B3A0: .4byte gBattleMons -_0802B3A4: .4byte gBankAttacker -_0802B3A8: .4byte gTerrainToType -_0802B3AC: .4byte gBattleTerrain -_0802B3B0: .4byte gBattleTextBuff1 -_0802B3B4: .4byte gBattlescriptCurrInstr -_0802B3B8: - ldr r3, _0802B3DC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802B3D2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B3DC: .4byte gBattlescriptCurrInstr - thumb_func_end atkEB_settypetoterrain - - thumb_func_start sub_802B3E0 -sub_802B3E0: @ 802B3E0 - push {r4,r5,lr} - ldr r5, _0802B45C @ =gBankAttacker - ldrb r0, [r5] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - ldr r4, _0802B460 @ =gActiveBank - strb r0, [r4] - ldr r0, _0802B464 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802B490 - ldr r0, _0802B468 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _0802B46C @ =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802B490 - ldr r0, _0802B470 @ =gActionForBanks - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0802B490 - ldr r1, _0802B474 @ =gChosenMovesByBanks - lsls r0, r3, 1 - adds r0, r1 - ldrh r2, [r0] - cmp r2, 0xE4 - bne _0802B490 - ldr r0, _0802B478 @ =gUnknown_02024A76 - adds r0, r3, r0 - movs r1, 0xB - strb r1, [r0] - ldr r0, _0802B47C @ =gCurrentMove - strh r2, [r0] - ldr r1, _0802B480 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r1, _0802B484 @ =0x02000000 - ldr r0, _0802B488 @ =0x00016002 - adds r2, r1, r0 - movs r0, 0x1 - strb r0, [r2] - ldrb r0, [r5] - ldr r2, _0802B48C @ =0x000160a7 - adds r1, r2 - strb r0, [r1] - ldrb r0, [r4] - strb r0, [r5] - b _0802B4AA - .align 2, 0 -_0802B45C: .4byte gBankAttacker -_0802B460: .4byte gActiveBank -_0802B464: .4byte gBattleTypeFlags -_0802B468: .4byte gAbsentBankFlags -_0802B46C: .4byte gBitTable -_0802B470: .4byte gActionForBanks -_0802B474: .4byte gChosenMovesByBanks -_0802B478: .4byte gUnknown_02024A76 -_0802B47C: .4byte gCurrentMove -_0802B480: .4byte gBattlescriptCurrInstr -_0802B484: .4byte 0x02000000 -_0802B488: .4byte 0x00016002 -_0802B48C: .4byte 0x000160a7 -_0802B490: - ldr r3, _0802B4B0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802B4AA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802B4B0: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802B3E0 - - thumb_func_start sub_802B4B4 -sub_802B4B4: @ 802B4B4 - push {r4,r5,lr} - ldr r1, _0802B4DC @ =gEffectBank - ldr r3, _0802B4E0 @ =gBankAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r2, _0802B4E4 @ =gBankTarget - lsls r0, 24 - lsrs r0, 24 - adds r4, r1, 0 - ldrb r1, [r2] - cmp r0, r1 - bne _0802B4F0 - ldr r0, _0802B4E8 @ =0x02000000 - ldr r5, _0802B4EC @ =0x00016003 - adds r1, r0, r5 - ldrb r1, [r1] - strb r1, [r2] - strb r1, [r3] - b _0802B4FA - .align 2, 0 -_0802B4DC: .4byte gEffectBank -_0802B4E0: .4byte gBankAttacker -_0802B4E4: .4byte gBankTarget -_0802B4E8: .4byte 0x02000000 -_0802B4EC: .4byte 0x00016003 -_0802B4F0: - ldr r0, _0802B510 @ =0x02000000 - ldr r3, _0802B514 @ =0x00016003 - adds r1, r0, r3 - ldrb r1, [r1] - strb r1, [r2] -_0802B4FA: - ldrb r1, [r4] - ldr r5, _0802B514 @ =0x00016003 - adds r0, r5 - strb r1, [r0] - ldr r1, _0802B518 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802B510: .4byte 0x02000000 -_0802B514: .4byte 0x00016003 -_0802B518: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802B4B4 - - thumb_func_start sub_802B51C -sub_802B51C: @ 802B51C - push {r4,lr} - ldr r0, _0802B56C @ =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0802B570 @ =gSideTimer - lsls r3, r0, 1 - adds r0, r3, r0 - lsls r0, 2 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - bne _0802B544 - ldrb r2, [r4, 0x1] - cmp r2, 0 - beq _0802B58C -_0802B544: - ldr r2, _0802B574 @ =gSideAffecting - adds r2, r3, r2 - ldrh r1, [r2] - ldr r0, _0802B578 @ =0x0000fffe - ands r0, r1 - movs r3, 0 - ldr r1, _0802B57C @ =0x0000fffd - ands r0, r1 - strh r0, [r2] - strb r3, [r4] - strb r3, [r4, 0x1] - ldr r0, _0802B580 @ =0x02000000 - ldr r2, _0802B584 @ =0x00016002 - adds r1, r0, r2 - movs r2, 0x1 - strb r2, [r1] - ldr r3, _0802B588 @ =0x000160a1 - adds r0, r3 - b _0802B598 - .align 2, 0 -_0802B56C: .4byte gBankAttacker -_0802B570: .4byte gSideTimer -_0802B574: .4byte gSideAffecting -_0802B578: .4byte 0x0000fffe -_0802B57C: .4byte 0x0000fffd -_0802B580: .4byte 0x02000000 -_0802B584: .4byte 0x00016002 -_0802B588: .4byte 0x000160a1 -_0802B58C: - ldr r0, _0802B5A8 @ =0x02000000 - ldr r3, _0802B5AC @ =0x00016002 - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _0802B5B0 @ =0x000160a1 - adds r0, r1 -_0802B598: - strb r2, [r0] - ldr r1, _0802B5B4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802B5A8: .4byte 0x02000000 -_0802B5AC: .4byte 0x00016002 -_0802B5B0: .4byte 0x000160a1 -_0802B5B4: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802B51C - - thumb_func_start sub_802B5B8 -sub_802B5B8: @ 802B5B8 - push {r4-r7,lr} - movs r4, 0 - ldr r0, _0802B5F8 @ =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0802B5C6 - b _0802B94E -_0802B5C6: - ldr r5, _0802B5FC @ =gActiveBank - ldr r0, _0802B600 @ =gBankAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r6, _0802B604 @ =gBankTarget - movs r1, 0x1 - eors r0, r1 - strb r0, [r6] - ldr r0, _0802B608 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0802B614 - movs r0, 0 - movs r1, 0x5 - bl dp01_build_cmdbuf_x0D_a - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, _0802B60C @ =gBattlescriptCurrInstr - ldr r0, _0802B610 @ =gUnknown_081D9F35 - b _0802B94C - .align 2, 0 -_0802B5F8: .4byte gBattleExecBuffer -_0802B5FC: .4byte gActiveBank -_0802B600: .4byte gBankAttacker -_0802B604: .4byte gBankTarget -_0802B608: .4byte gBattleTypeFlags -_0802B60C: .4byte gBattlescriptCurrInstr -_0802B610: .4byte gUnknown_081D9F35 -_0802B614: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0802B63C - movs r0, 0 - movs r1, 0x4 - bl dp01_build_cmdbuf_x0D_a - ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, _0802B634 @ =gBattlescriptCurrInstr - ldr r0, _0802B638 @ =gUnknown_081D9F00 - b _0802B94C - .align 2, 0 -_0802B634: .4byte gBattlescriptCurrInstr -_0802B638: .4byte gUnknown_081D9F00 -_0802B63C: - ldr r0, _0802B660 @ =gLastUsedItem - ldrh r0, [r0] - cmp r0, 0x5 - bne _0802B66C - ldr r0, _0802B664 @ =0x02000000 - ldr r1, _0802B668 @ =0x00016089 - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 8 - subs r0, r1 - movs r1, 0x64 - bl __divsi3 - lsls r0, 24 - lsrs r5, r0, 24 - b _0802B684 - .align 2, 0 -_0802B660: .4byte gLastUsedItem -_0802B664: .4byte 0x02000000 -_0802B668: .4byte 0x00016089 -_0802B66C: - ldr r3, _0802B6A0 @ =gBaseStats - ldr r2, _0802B6A4 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r5, [r0, 0x8] -_0802B684: - ldr r2, _0802B6A8 @ =gLastUsedItem - ldrh r0, [r2] - cmp r0, 0x5 - bhi _0802B68E - b _0802B784 -_0802B68E: - subs r0, 0x6 - cmp r0, 0x6 - bls _0802B696 - b _0802B78E -_0802B696: - lsls r0, 2 - ldr r1, _0802B6AC @ =_0802B6B0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802B6A0: .4byte gBaseStats -_0802B6A4: .4byte gBattleMons -_0802B6A8: .4byte gLastUsedItem -_0802B6AC: .4byte _0802B6B0 - .align 2, 0 -_0802B6B0: - .4byte _0802B6CC - .4byte _0802B6FC - .4byte _0802B70E - .4byte _0802B73C - .4byte _0802B76C - .4byte _0802B72E - .4byte _0802B72E -_0802B6CC: - ldr r2, _0802B6F4 @ =gBattleMons - ldr r0, _0802B6F8 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0xB - beq _0802B760 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xB - beq _0802B760 - cmp r1, 0x6 - beq _0802B760 - cmp r0, 0x6 - beq _0802B760 - b _0802B72E - .align 2, 0 -_0802B6F4: .4byte gBattleMons -_0802B6F8: .4byte gBankTarget -_0802B6FC: - bl sav1_map_get_light_level - lsls r0, 24 - lsrs r0, 24 - movs r4, 0xA - cmp r0, 0x5 - bne _0802B78E - movs r4, 0x23 - b _0802B78E -_0802B70E: - ldr r2, _0802B734 @ =gBattleMons - ldr r0, _0802B738 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - cmp r1, 0x27 - bhi _0802B72E - movs r0, 0x28 - subs r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bhi _0802B78E -_0802B72E: - movs r4, 0xA - b _0802B78E - .align 2, 0 -_0802B734: .4byte gBattleMons -_0802B738: .4byte gBankTarget -_0802B73C: - ldr r2, _0802B764 @ =gBattleMons - ldr r0, _0802B768 @ =gBankTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetNationalPokedexFlag - lsls r0, 24 - movs r4, 0xA - cmp r0, 0 - beq _0802B78E -_0802B760: - movs r4, 0x1E - b _0802B78E - .align 2, 0 -_0802B764: .4byte gBattleMons -_0802B768: .4byte gBankTarget -_0802B76C: - ldr r0, _0802B780 @ =gBattleResults - ldrb r0, [r0, 0x13] - adds r0, 0xA - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x28 - bls _0802B78E - movs r4, 0x28 - b _0802B78E - .align 2, 0 -_0802B780: .4byte gBattleResults -_0802B784: - ldr r1, _0802B7F4 @ =gBallCatchBonuses - ldrh r0, [r2] - subs r0, 0x2 - adds r0, r1 - ldrb r4, [r0] -_0802B78E: - adds r0, r5, 0 - muls r0, r4 - movs r1, 0xA - bl __divsi3 - ldr r5, _0802B7F8 @ =gBattleMons - ldr r1, _0802B7FC @ =gBankTarget - ldrb r1, [r1] - movs r7, 0x58 - adds r4, r1, 0 - muls r4, r7 - adds r3, r4, r5 - ldrh r2, [r3, 0x2C] - lsls r1, r2, 1 - adds r1, r2 - ldrh r2, [r3, 0x28] - lsls r2, 1 - subs r2, r1, r2 - muls r0, r2 - bl __divsi3 - adds r6, r0, 0 - adds r5, 0x4C - adds r4, r5 - ldr r4, [r4] - movs r0, 0x27 - ands r0, r4 - cmp r0, 0 - beq _0802B7CA - lsls r6, 1 -_0802B7CA: - ands r4, r7 - cmp r4, 0 - beq _0802B7DC - lsls r0, r6, 4 - subs r0, r6 - movs r1, 0xA - bl __udivsi3 - adds r6, r0, 0 -_0802B7DC: - ldr r1, _0802B800 @ =gLastUsedItem - ldrh r0, [r1] - cmp r0, 0x5 - beq _0802B81C - cmp r0, 0x1 - bne _0802B808 - ldr r0, _0802B804 @ =gBattleResults - ldrb r1, [r0, 0x5] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x5] - b _0802B81C - .align 2, 0 -_0802B7F4: .4byte gBallCatchBonuses -_0802B7F8: .4byte gBattleMons -_0802B7FC: .4byte gBankTarget -_0802B800: .4byte gLastUsedItem -_0802B804: .4byte gBattleResults -_0802B808: - ldr r0, _0802B860 @ =gBattleResults - ldrh r1, [r1] - adds r0, r1 - adds r1, r0, 0 - adds r1, 0x34 - ldrb r0, [r1] - cmp r0, 0xFE - bhi _0802B81C - adds r0, 0x1 - strb r0, [r1] -_0802B81C: - cmp r6, 0xFE - bls _0802B880 - movs r0, 0 - movs r1, 0x4 - bl dp01_build_cmdbuf_x0D_a - ldr r0, _0802B864 @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _0802B868 @ =gBattlescriptCurrInstr - ldr r0, _0802B86C @ =gUnknown_081D9EC2 - str r0, [r1] - ldr r1, _0802B870 @ =gBattlePartyID - ldr r0, _0802B874 @ =gBankTarget - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802B878 @ =gEnemyParty - adds r0, r1 - ldr r2, _0802B87C @ =gLastUsedItem - movs r1, 0x26 - bl SetMonData - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - beq _0802B90E - b _0802B938 - .align 2, 0 -_0802B860: .4byte gBattleResults -_0802B864: .4byte gActiveBank -_0802B868: .4byte gBattlescriptCurrInstr -_0802B86C: .4byte gUnknown_081D9EC2 -_0802B870: .4byte gBattlePartyID -_0802B874: .4byte gBankTarget -_0802B878: .4byte gEnemyParty -_0802B87C: .4byte gLastUsedItem -_0802B880: - movs r0, 0xFF - lsls r0, 16 - adds r1, r6, 0 - bl __udivsi3 - bl Sqrt - lsls r0, 16 - lsrs r0, 16 - bl Sqrt - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _0802B8A8 @ =0x000ffff0 - adds r1, r6, 0 - bl __udivsi3 - adds r6, r0, 0 - movs r4, 0 - b _0802B8B2 - .align 2, 0 -_0802B8A8: .4byte 0x000ffff0 -_0802B8AC: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0802B8B2: - cmp r4, 0x3 - bhi _0802B8C2 - bl Random - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcc _0802B8AC -_0802B8C2: - ldr r5, _0802B918 @ =gLastUsedItem - ldrh r0, [r5] - cmp r0, 0x1 - bne _0802B8CC - movs r4, 0x4 -_0802B8CC: - movs r0, 0 - adds r1, r4, 0 - bl dp01_build_cmdbuf_x0D_a - ldr r0, _0802B91C @ =gActiveBank - ldrb r0, [r0] - bl MarkBufferBankForExecution - cmp r4, 0x4 - bne _0802B944 - ldr r1, _0802B920 @ =gBattlescriptCurrInstr - ldr r0, _0802B924 @ =gUnknown_081D9EC2 - str r0, [r1] - ldr r1, _0802B928 @ =gBattlePartyID - ldr r0, _0802B92C @ =gBankTarget - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802B930 @ =gEnemyParty - adds r0, r1 - movs r1, 0x26 - adds r2, r5, 0 - bl SetMonData - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _0802B938 -_0802B90E: - ldr r1, _0802B934 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - b _0802B94E - .align 2, 0 -_0802B918: .4byte gLastUsedItem -_0802B91C: .4byte gActiveBank -_0802B920: .4byte gBattlescriptCurrInstr -_0802B924: .4byte gUnknown_081D9EC2 -_0802B928: .4byte gBattlePartyID -_0802B92C: .4byte gBankTarget -_0802B930: .4byte gEnemyParty -_0802B934: .4byte gBattleCommunication -_0802B938: - ldr r1, _0802B940 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _0802B94E - .align 2, 0 -_0802B940: .4byte gBattleCommunication -_0802B944: - ldr r0, _0802B954 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, _0802B958 @ =gBattlescriptCurrInstr - ldr r0, _0802B95C @ =gUnknown_081D9F0A -_0802B94C: - str r0, [r1] -_0802B94E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B954: .4byte gBattleCommunication -_0802B958: .4byte gBattlescriptCurrInstr -_0802B95C: .4byte gUnknown_081D9F0A - thumb_func_end sub_802B5B8 - - thumb_func_start sub_802B960 -sub_802B960: @ 802B960 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - ldr r0, _0802B9C8 @ =gBattlePartyID - mov r9, r0 - ldr r5, _0802B9CC @ =gBankAttacker - ldrb r0, [r5] - movs r4, 0x1 - eors r0, r4 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r6, _0802B9D0 @ =gEnemyParty - adds r0, r6 - bl GiveMonToPlayer - ldr r2, _0802B9D4 @ =gBattleResults - ldr r1, _0802B9D8 @ =gBattleMons - ldrb r0, [r5] - eors r4, r0 - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2, 0x28] - lsls r4, 1 - add r4, r9 - ldrh r0, [r4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - adds r2, 0x2A - movs r1, 0x2 - bl GetMonData - ldr r1, _0802B9DC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802B9C8: .4byte gBattlePartyID -_0802B9CC: .4byte gBankAttacker -_0802B9D0: .4byte gEnemyParty -_0802B9D4: .4byte gBattleResults -_0802B9D8: .4byte gBattleMons -_0802B9DC: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802B960 - - thumb_func_start sub_802B9E0 -sub_802B9E0: @ 802B9E0 - push {r4-r6,lr} - ldr r4, _0802BA20 @ =gBattleMons - ldr r6, _0802BA24 @ =gBankTarget - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r0, r4 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetNationalPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _0802BA2C - ldr r3, _0802BA28 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802BA82 - .align 2, 0 -_0802BA20: .4byte gBattleMons -_0802BA24: .4byte gBankTarget -_0802BA28: .4byte gBattlescriptCurrInstr -_0802BA2C: - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetNationalPokedexFlag - ldrb r0, [r6] - adds r2, r0, 0 - muls r2, r5 - adds r0, r2, r4 - ldrh r0, [r0] - cmp r0, 0xC9 - bne _0802BA5C - ldr r0, _0802BA88 @ =gSaveBlock2 - adds r1, r4, 0 - adds r1, 0x48 - adds r1, r2, r1 - ldr r1, [r1] - str r1, [r0, 0x1C] -_0802BA5C: - ldrb r0, [r6] - adds r2, r0, 0 - muls r2, r5 - adds r0, r2, r4 - ldrh r1, [r0] - movs r0, 0x9A - lsls r0, 1 - cmp r1, r0 - bne _0802BA7A - ldr r0, _0802BA88 @ =gSaveBlock2 - adds r1, r4, 0 - adds r1, 0x48 - adds r1, r2, r1 - ldr r1, [r1] - str r1, [r0, 0x20] -_0802BA7A: - ldr r1, _0802BA8C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802BA82: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802BA88: .4byte gSaveBlock2 -_0802BA8C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802B9E0 - - thumb_func_start sub_802BA90 -sub_802BA90: @ 802BA90 - push {r4-r7,lr} - sub sp, 0x4 - ldr r7, _0802BAA8 @ =gBattleCommunication - ldrb r1, [r7] - cmp r1, 0x1 - beq _0802BAC6 - cmp r1, 0x1 - bgt _0802BAAC - cmp r1, 0 - beq _0802BAB8 - b _0802BBC4 - .align 2, 0 -_0802BAA8: .4byte gBattleCommunication -_0802BAAC: - cmp r1, 0x2 - beq _0802BB10 - cmp r1, 0x3 - bne _0802BAB6 - b _0802BBB0 -_0802BAB6: - b _0802BBC4 -_0802BAB8: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - b _0802BB6E -_0802BAC6: - ldr r0, _0802BB04 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802BBC4 - ldr r4, _0802BB08 @ =gBattleMons - ldr r6, _0802BB0C @ =gBankTarget - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r0, r4 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r6] - adds r2, r1, 0 - muls r2, r5 - adds r1, r4, 0 - adds r1, 0x54 - adds r1, r2, r1 - ldr r1, [r1] - adds r4, 0x48 - adds r2, r4 - ldr r2, [r2] - bl sub_809070C - strb r0, [r7, 0x1] - b _0802BB72 - .align 2, 0 -_0802BB04: .4byte gPaletteFade -_0802BB08: .4byte gBattleMons -_0802BB0C: .4byte gBankTarget -_0802BB10: - ldr r0, _0802BB7C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802BBC4 - ldr r0, _0802BB80 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0802BB84 @ =sub_800F808 - cmp r1, r0 - bne _0802BBC4 - ldr r2, _0802BB88 @ =gTasks - ldrb r1, [r7, 0x1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r4, [r0, 0x4] - cmp r4, 0 - bne _0802BBC4 - ldr r0, _0802BB8C @ =gBattleTerrainTiles_Building - ldr r1, _0802BB90 @ =0x06008000 - bl LZDecompressVram - ldr r0, _0802BB94 @ =gBattleTerrainTilemap_Building - ldr r1, _0802BB98 @ =0x0600d000 - bl LZDecompressVram - ldr r0, _0802BB9C @ =gBattleTerrainPalette_BattleTower - movs r1, 0x20 - movs r2, 0x60 - bl LoadCompressedPalette - ldr r1, _0802BBA0 @ =REG_BG3CNT - ldr r2, _0802BBA4 @ =0x00005a0b - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0802BBA8 @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0802BBAC @ =0x0000fffc - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 -_0802BB6E: - bl BeginNormalPaletteFade -_0802BB72: - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - b _0802BBC4 - .align 2, 0 -_0802BB7C: .4byte gPaletteFade -_0802BB80: .4byte gMain -_0802BB84: .4byte sub_800F808 -_0802BB88: .4byte gTasks -_0802BB8C: .4byte gBattleTerrainTiles_Building -_0802BB90: .4byte 0x06008000 -_0802BB94: .4byte gBattleTerrainTilemap_Building -_0802BB98: .4byte 0x0600d000 -_0802BB9C: .4byte gBattleTerrainPalette_BattleTower -_0802BBA0: .4byte REG_BG3CNT -_0802BBA4: .4byte 0x00005a0b -_0802BBA8: .4byte gUnknown_030041B0 -_0802BBAC: .4byte 0x0000fffc -_0802BBB0: - ldr r0, _0802BBCC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802BBC4 - ldr r1, _0802BBD0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0802BBC4: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802BBCC: .4byte gPaletteFade -_0802BBD0: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802BA90 - - thumb_func_start sub_802BBD4 -sub_802BBD4: @ 802BBD4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, [sp, 0x20] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r12, r1 - lsls r2, 24 - lsrs r5, r2, 24 - lsls r3, 24 - lsrs r7, r3, 24 - lsls r4, 24 - lsrs r4, 24 - mov r8, r4 - mov r2, r12 - cmp r2, r7 - bgt _0802BC5A - lsls r1, r6, 1 - ldr r0, _0802BC20 @ =0x0600c000 - adds r1, r0 - mov r9, r1 -_0802BC06: - adds r1, r6, 0 - adds r0, r2, 0x1 - mov r10, r0 - cmp r1, r5 - bgt _0802BC54 - lsls r0, r2, 6 - mov r4, r9 - adds r3, r4, r0 -_0802BC16: - cmp r2, r12 - bne _0802BC28 - ldr r0, _0802BC24 @ =0x00001022 - b _0802BC36 - .align 2, 0 -_0802BC20: .4byte 0x0600c000 -_0802BC24: .4byte 0x00001022 -_0802BC28: - cmp r2, r7 - bne _0802BC34 - ldr r0, _0802BC30 @ =0x00001028 - b _0802BC36 - .align 2, 0 -_0802BC30: .4byte 0x00001028 -_0802BC34: - ldr r0, _0802BC68 @ =0x00001025 -_0802BC36: - cmp r1, r6 - beq _0802BC42 - adds r0, 0x1 - cmp r1, r5 - bne _0802BC42 - adds r0, 0x1 -_0802BC42: - mov r4, r8 - cmp r4, 0 - beq _0802BC4A - movs r0, 0 -_0802BC4A: - strh r0, [r3] - adds r3, 0x2 - adds r1, 0x1 - cmp r1, r5 - ble _0802BC16 -_0802BC54: - mov r2, r10 - cmp r2, r7 - ble _0802BC06 -_0802BC5A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802BC68: .4byte 0x00001025 - thumb_func_end sub_802BBD4 - - thumb_func_start sub_802BC6C -sub_802BC6C: @ 802BC6C - push {lr} - ldr r0, _0802BC88 @ =gBattleCommunication - ldrb r1, [r0, 0x1] - lsls r1, 28 - movs r0, 0x90 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xC8 - bl sub_814A880 - pop {r0} - bx r0 - .align 2, 0 -_0802BC88: .4byte gBattleCommunication - thumb_func_end sub_802BC6C - - thumb_func_start nullsub_6 -nullsub_6: @ 802BC8C - bx lr - thumb_func_end nullsub_6 - - thumb_func_start atkF3_receive_new_pokemon_maybe -atkF3_receive_new_pokemon_maybe: @ 802BC90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, _0802BCB4 @ =gBattleCommunication - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x4 - bls _0802BCA8 - b _0802BEDA -_0802BCA8: - lsls r0, r1, 2 - ldr r1, _0802BCB8 @ =_0802BCBC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802BCB4: .4byte gBattleCommunication -_0802BCB8: .4byte _0802BCBC - .align 2, 0 -_0802BCBC: - .4byte _0802BCD0 - .4byte _0802BCEC - .4byte _0802BD84 - .4byte _0802BE50 - .4byte _0802BEA4 -_0802BCD0: - bl sub_8023A80 - ldr r0, _0802BCE8 @ =gBattleCommunication - ldrb r1, [r0] - adds r1, 0x1 - movs r2, 0 - strb r1, [r0] - strb r2, [r0, 0x1] - bl sub_802BC6C - b _0802BEDA - .align 2, 0 -_0802BCE8: .4byte gBattleCommunication -_0802BCEC: - ldr r0, _0802BD60 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802BD10 - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _0802BD10 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_802BC6C -_0802BD10: - ldr r0, _0802BD60 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802BD36 - ldr r4, _0802BD64 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _0802BD36 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_802BC6C -_0802BD36: - ldr r0, _0802BD60 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802BD68 - movs r0, 0x5 - bl PlaySE - ldr r1, _0802BD64 @ =gBattleCommunication - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0802BD7A - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x3 - bl BeginFastPaletteFade - b _0802BEDA - .align 2, 0 -_0802BD60: .4byte gMain -_0802BD64: .4byte gBattleCommunication -_0802BD68: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0802BD72 - b _0802BEDA -_0802BD72: - movs r0, 0x5 - bl PlaySE - ldr r1, _0802BD80 @ =gBattleCommunication -_0802BD7A: - movs r0, 0x4 - strb r0, [r1] - b _0802BEDA - .align 2, 0 -_0802BD80: .4byte gBattleCommunication -_0802BD84: - ldr r0, _0802BE34 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802BD92 - b _0802BEDA -_0802BD92: - ldr r7, _0802BE38 @ =gBattlePartyID - ldr r0, _0802BE3C @ =gBankAttacker - mov r10, r0 - ldrb r0, [r0] - movs r4, 0x1 - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r1, 0x64 - mov r9, r1 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _0802BE40 @ =gEnemyParty - mov r8, r1 - add r0, r8 - movs r1, 0x2 - ldr r2, _0802BE44 @ =0x02016079 - bl GetMonData - mov r1, r10 - ldrb r0, [r1] - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - movs r1, 0xB - bl GetMonData - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - mov r1, r10 - ldrb r0, [r1] - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - bl GetMonGender - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - mov r1, r10 - ldrb r0, [r1] - eors r4, r0 - lsls r4, 1 - adds r4, r7 - ldrh r0, [r4] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - movs r1, 0 - movs r2, 0 - bl GetMonData - str r0, [sp] - ldr r0, _0802BE48 @ =sub_800F808 - str r0, [sp, 0x4] - movs r0, 0x2 - ldr r1, _0802BE44 @ =0x02016079 - adds r2, r6, 0 - adds r3, r5, 0 - bl DoNamingScreen - ldr r1, _0802BE4C @ =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0802BEDA - .align 2, 0 -_0802BE34: .4byte gPaletteFade -_0802BE38: .4byte gBattlePartyID -_0802BE3C: .4byte gBankAttacker -_0802BE40: .4byte gEnemyParty -_0802BE44: .4byte 0x02016079 -_0802BE48: .4byte sub_800F808 -_0802BE4C: .4byte gBattleCommunication -_0802BE50: - ldr r0, _0802BE88 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0802BE8C @ =sub_800F808 - cmp r1, r0 - bne _0802BEDA - ldr r0, _0802BE90 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802BEDA - ldr r2, _0802BE94 @ =gBattlePartyID - ldr r0, _0802BE98 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802BE9C @ =gEnemyParty - adds r0, r1 - ldr r2, _0802BEA0 @ =0x02016079 - movs r1, 0x2 - bl SetMonData - b _0802BEC0 - .align 2, 0 -_0802BE88: .4byte gMain -_0802BE8C: .4byte sub_800F808 -_0802BE90: .4byte gPaletteFade -_0802BE94: .4byte gBattlePartyID -_0802BE98: .4byte gBankAttacker -_0802BE9C: .4byte gEnemyParty -_0802BEA0: .4byte 0x02016079 -_0802BEA4: - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _0802BEC0 - ldr r1, _0802BEBC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802BEDA - .align 2, 0 -_0802BEBC: .4byte gBattlescriptCurrInstr -_0802BEC0: - ldr r3, _0802BEEC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802BEDA: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802BEEC: .4byte gBattlescriptCurrInstr - thumb_func_end atkF3_receive_new_pokemon_maybe - - thumb_func_start sub_802BEF0 -sub_802BEF0: @ 802BEF0 - ldr r2, _0802BF10 @ =gBattleMons - ldr r0, _0802BF14 @ =gBankAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldr r0, _0802BF18 @ =gBattleMoveDamage - ldr r2, [r0] - ldrh r0, [r1, 0x28] - subs r0, r2 - strh r0, [r1, 0x28] - ldr r1, _0802BF1C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802BF10: .4byte gBattleMons -_0802BF14: .4byte gBankAttacker -_0802BF18: .4byte gBattleMoveDamage -_0802BF1C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802BEF0 - - thumb_func_start sub_802BF20 -sub_802BF20: @ 802BF20 - ldr r1, _0802BF3C @ =gBattleMons - ldr r0, _0802BF40 @ =gBankAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - movs r1, 0 - str r1, [r0] - ldr r1, _0802BF44 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802BF3C: .4byte gBattleMons -_0802BF40: .4byte gBankAttacker -_0802BF44: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802BF20 - - thumb_func_start sub_802BF48 -sub_802BF48: @ 802BF48 - ldr r1, _0802BF50 @ =gFightStateTracker - movs r0, 0xC - strb r0, [r1] - bx lr - .align 2, 0 -_0802BF50: .4byte gFightStateTracker - thumb_func_end sub_802BF48 - - thumb_func_start sub_802BF54 -sub_802BF54: @ 802BF54 - ldr r1, _0802BF64 @ =gFightStateTracker - movs r0, 0xC - strb r0, [r1] - ldr r1, _0802BF68 @ =gCurrentMoveTurn - ldr r0, _0802BF6C @ =gNoOfAllBanks - ldrb r0, [r0] - strb r0, [r1] - bx lr - .align 2, 0 -_0802BF64: .4byte gFightStateTracker -_0802BF68: .4byte gCurrentMoveTurn -_0802BF6C: .4byte gNoOfAllBanks - thumb_func_end sub_802BF54 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_5.s b/asm/battle_5.s deleted file mode 100644 index b72266193..000000000 --- a/asm/battle_5.s +++ /dev/null @@ -1,4591 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_91 -nullsub_91: @ 802BF70 - bx lr - thumb_func_end nullsub_91 - - thumb_func_start SetBankFuncToPlayerBufferRunCommand -SetBankFuncToPlayerBufferRunCommand: @ 802BF74 - ldr r1, _0802BF8C @ =gBattleBankFunc - ldr r0, _0802BF90 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802BF94 @ =PlayerBufferRunCommand - str r1, [r0] - ldr r1, _0802BF98 @ =gDoingBattleAnim - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_0802BF8C: .4byte gBattleBankFunc -_0802BF90: .4byte gActiveBank -_0802BF94: .4byte PlayerBufferRunCommand -_0802BF98: .4byte gDoingBattleAnim - thumb_func_end SetBankFuncToPlayerBufferRunCommand - - thumb_func_start PlayerBufferExecCompleted -PlayerBufferExecCompleted: @ 802BF9C - push {r4,lr} - sub sp, 0x4 - ldr r1, _0802BFDC @ =gBattleBankFunc - ldr r4, _0802BFE0 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802BFE4 @ =PlayerBufferRunCommand - str r1, [r0] - ldr r0, _0802BFE8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802BFF0 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl dp01_prepare_buffer_wireless_probably - ldr r1, _0802BFEC @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _0802C002 - .align 2, 0 -_0802BFDC: .4byte gBattleBankFunc -_0802BFE0: .4byte gActiveBank -_0802BFE4: .4byte PlayerBufferRunCommand -_0802BFE8: .4byte gBattleTypeFlags -_0802BFEC: .4byte gBattleBufferA -_0802BFF0: - ldr r2, _0802C00C @ =gBattleExecBuffer - ldr r1, _0802C010 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_0802C002: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C00C: .4byte gBattleExecBuffer -_0802C010: .4byte gBitTable - thumb_func_end PlayerBufferExecCompleted - - thumb_func_start PlayerBufferRunCommand -PlayerBufferRunCommand: @ 802C014 - push {lr} - ldr r2, _0802C048 @ =gBattleExecBuffer - ldr r1, _0802C04C @ =gBitTable - ldr r0, _0802C050 @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0802C060 - ldr r0, _0802C054 @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _0802C05C - ldr r0, _0802C058 @ =gPlayerBufferCommands - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _0802C060 - .align 2, 0 -_0802C048: .4byte gBattleExecBuffer -_0802C04C: .4byte gBitTable -_0802C050: .4byte gActiveBank -_0802C054: .4byte gBattleBufferA -_0802C058: .4byte gPlayerBufferCommands -_0802C05C: - bl PlayerBufferExecCompleted -_0802C060: - pop {r0} - bx r0 - thumb_func_end PlayerBufferRunCommand - - thumb_func_start bx_0802E404 -bx_0802E404: @ 802C064 - push {lr} - ldr r2, _0802C08C @ =gSprites - ldr r1, _0802C090 @ =gObjectBankIDs - ldr r0, _0802C094 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0802C086 - bl PlayerBufferExecCompleted -_0802C086: - pop {r0} - bx r0 - .align 2, 0 -_0802C08C: .4byte gSprites -_0802C090: .4byte gObjectBankIDs -_0802C094: .4byte gActiveBank - thumb_func_end bx_0802E404 - - thumb_func_start sub_802C098 -sub_802C098: @ 802C098 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _0802C0FC @ =gBattleBufferA - ldr r4, _0802C100 @ =gActiveBank - ldrb r0, [r4] - lsls r2, r0, 9 - adds r1, r7, 0x2 - adds r1, r2, r1 - ldrb r5, [r1] - adds r1, r7, 0x3 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r5, r1 - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldr r0, _0802C104 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802C13E - movs r0, 0x5 - bl PlaySE - bl DestroyMenuCursor - ldr r1, _0802C108 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0802C11C - cmp r0, 0x1 - bgt _0802C10C - cmp r0, 0 - beq _0802C116 - b _0802C138 - .align 2, 0 -_0802C0FC: .4byte gBattleBufferA -_0802C100: .4byte gActiveBank -_0802C104: .4byte gMain -_0802C108: .4byte gActionSelectionCursor -_0802C10C: - cmp r0, 0x2 - beq _0802C122 - cmp r0, 0x3 - beq _0802C12E - b _0802C138 -_0802C116: - movs r0, 0x1 - movs r1, 0 - b _0802C126 -_0802C11C: - movs r0, 0x1 - movs r1, 0x1 - b _0802C126 -_0802C122: - movs r0, 0x1 - movs r1, 0x2 -_0802C126: - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - b _0802C138 -_0802C12E: - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb -_0802C138: - bl PlayerBufferExecCompleted - b _0802C2AC -_0802C13E: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802C178 - ldr r5, _0802C174 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0802C158 - b _0802C2AC -_0802C158: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _0802C200 - .align 2, 0 -_0802C174: .4byte gActionSelectionCursor -_0802C178: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802C1B0 - ldr r5, _0802C1AC @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802C192 - b _0802C2AC -_0802C192: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _0802C200 - .align 2, 0 -_0802C1AC: .4byte gActionSelectionCursor -_0802C1B0: - movs r0, 0x40 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - beq _0802C1D0 - ldr r5, _0802C1CC @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C2AC - b _0802C1E8 - .align 2, 0 -_0802C1CC: .4byte gActionSelectionCursor -_0802C1D0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802C218 - ldr r5, _0802C214 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0802C2AC -_0802C1E8: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 -_0802C200: - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3E4 - b _0802C2AC - .align 2, 0 -_0802C214: .4byte gActionSelectionCursor -_0802C218: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C2A0 - ldr r6, _0802C294 @ =gBattleTypeFlags - ldrh r1, [r6] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802C2AC - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0802C2AC - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, _0802C298 @ =gAbsentBankFlags - ldrb r1, [r1] - ldr r2, _0802C29C @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802C2AC - ldrh r1, [r6] - mov r0, r8 - ands r0, r1 - cmp r0, 0 - bne _0802C2AC - ldrb r0, [r4] - lsls r0, 9 - adds r1, r7, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0802C278 - cmp r5, 0xC - bhi _0802C2AC - adds r0, r5, 0 - movs r1, 0x1 - bl AddBagItem -_0802C278: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0xC - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl PlayerBufferExecCompleted - bl DestroyMenuCursor - b _0802C2AC - .align 2, 0 -_0802C294: .4byte gBattleTypeFlags -_0802C298: .4byte gAbsentBankFlags -_0802C29C: .4byte gBitTable -_0802C2A0: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0802C2AC - bl sub_804454C -_0802C2AC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802C098 - - thumb_func_start unref_sub_802C2B8 -unref_sub_802C2B8: @ 802C2B8 - push {r4,lr} - ldr r4, _0802C2E0 @ =gActiveBank - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - ldrb r0, [r4] - movs r1, 0 - bl dp11b_obj_free - ldr r1, _0802C2E4 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802C2E8 @ =sub_802C2EC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C2E0: .4byte gActiveBank -_0802C2E4: .4byte gBattleBankFunc -_0802C2E8: .4byte sub_802C2EC - thumb_func_end unref_sub_802C2B8 - - thumb_func_start sub_802C2EC -sub_802C2EC: @ 802C2EC - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _0802C384 @ =gUnknown_081FAE7C - mov r0, sp - movs r2, 0x4 - bl memcpy - ldr r0, _0802C388 @ =gUnknown_03004344 - ldrb r0, [r0] - movs r1, 0x1 - movs r2, 0xF - movs r3, 0x1 - bl dp11b_obj_instanciate - movs r4, 0 - ldr r0, _0802C38C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _0802C32E -_0802C312: - ldr r0, _0802C388 @ =gUnknown_03004344 - ldrb r0, [r0] - cmp r4, r0 - beq _0802C324 - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0x1 - bl dp11b_obj_free -_0802C324: - adds r4, 0x1 - ldr r0, _0802C38C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0802C312 -_0802C32E: - ldr r0, _0802C390 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802C3A8 - bl DestroyMenuCursor - movs r0, 0x5 - bl PlaySE - ldr r2, _0802C394 @ =gSprites - ldr r1, _0802C398 @ =gObjectBankIDs - ldr r4, _0802C388 @ =gUnknown_03004344 - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C39C @ =sub_8010574 - str r1, [r0] - ldr r1, _0802C3A0 @ =gMoveSelectionCursor - ldr r0, _0802C3A4 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldrb r0, [r4] - lsls r0, 8 - orrs r2, r0 - movs r0, 0x1 - movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - bl PlayerBufferExecCompleted - b _0802C658 - .align 2, 0 -_0802C384: .4byte gUnknown_081FAE7C -_0802C388: .4byte gUnknown_03004344 -_0802C38C: .4byte gNoOfAllBanks -_0802C390: .4byte gMain -_0802C394: .4byte gSprites -_0802C398: .4byte gObjectBankIDs -_0802C39C: .4byte sub_8010574 -_0802C3A0: .4byte gMoveSelectionCursor -_0802C3A4: .4byte gActiveBank -_0802C3A8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C41C - movs r0, 0x5 - bl PlaySE - ldr r2, _0802C400 @ =gSprites - ldr r1, _0802C404 @ =gObjectBankIDs - ldr r5, _0802C408 @ =gUnknown_03004344 - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C40C @ =sub_8010574 - str r1, [r0] - ldr r1, _0802C410 @ =gBattleBankFunc - ldr r4, _0802C414 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802C418 @ =sub_802C68C - str r1, [r0] - ldrb r0, [r4] - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r5] - movs r1, 0x1 - bl dp11b_obj_free - b _0802C658 - .align 2, 0 -_0802C400: .4byte gSprites -_0802C404: .4byte gObjectBankIDs -_0802C408: .4byte gUnknown_03004344 -_0802C40C: .4byte sub_8010574 -_0802C410: .4byte gBattleBankFunc -_0802C414: .4byte gActiveBank -_0802C418: .4byte sub_802C68C -_0802C41C: - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _0802C426 - b _0802C540 -_0802C426: - movs r0, 0x5 - bl PlaySE - ldr r2, _0802C458 @ =gSprites - ldr r1, _0802C45C @ =gObjectBankIDs - ldr r3, _0802C460 @ =gUnknown_03004344 - ldrb r0, [r3] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C464 @ =sub_8010574 - str r1, [r0] - adds r5, r3, 0 -_0802C448: - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r1, r0, 24 - movs r4, 0 - mov r0, sp - b _0802C472 - .align 2, 0 -_0802C458: .4byte gSprites -_0802C45C: .4byte gObjectBankIDs -_0802C460: .4byte gUnknown_03004344 -_0802C464: .4byte sub_8010574 -_0802C468: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0802C478 - mov r2, sp - adds r0, r2, r4 -_0802C472: - ldrb r0, [r0] - cmp r1, r0 - bne _0802C468 -_0802C478: - subs r4, 0x1 - cmp r4, 0 - bge _0802C480 - movs r4, 0x3 -_0802C480: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl GetBankByPlayerAI - strb r0, [r5] - ldr r1, _0802C4B4 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - beq _0802C478 - movs r4, 0 - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802C4FE - cmp r0, 0x1 - bgt _0802C4B8 - cmp r0, 0 - beq _0802C4C2 - b _0802C500 - .align 2, 0 -_0802C4B4: .4byte gNoOfAllBanks -_0802C4B8: - cmp r0, 0x2 - beq _0802C4C2 - cmp r0, 0x3 - beq _0802C4FE - b _0802C500 -_0802C4C2: - ldr r2, _0802C520 @ =gActiveBank - ldrb r0, [r2] - ldrb r1, [r5] - cmp r0, r1 - bne _0802C4FE - ldr r1, _0802C524 @ =gBattlePartyID - ldrb r2, [r2] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802C528 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802C52C @ =gMoveSelectionCursor - adds r2, r1 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - ldr r2, _0802C530 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x6] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C500 -_0802C4FE: - adds r4, 0x1 -_0802C500: - ldr r0, _0802C534 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _0802C538 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - ldr r0, _0802C53C @ =gUnknown_03004344 - cmp r1, 0 - beq _0802C518 - movs r4, 0 -_0802C518: - cmp r4, 0 - beq _0802C448 - b _0802C640 - .align 2, 0 -_0802C520: .4byte gActiveBank -_0802C524: .4byte gBattlePartyID -_0802C528: .4byte gPlayerParty -_0802C52C: .4byte gMoveSelectionCursor -_0802C530: .4byte gBattleMoves -_0802C534: .4byte gAbsentBankFlags -_0802C538: .4byte gBitTable -_0802C53C: .4byte gUnknown_03004344 -_0802C540: - movs r0, 0x90 - ands r0, r1 - cmp r0, 0 - bne _0802C54A - b _0802C658 -_0802C54A: - movs r0, 0x5 - bl PlaySE - ldr r2, _0802C57C @ =gSprites - ldr r1, _0802C580 @ =gObjectBankIDs - ldr r3, _0802C584 @ =gUnknown_03004344 - ldrb r0, [r3] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C588 @ =sub_8010574 - str r1, [r0] - adds r5, r3, 0 -_0802C56C: - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r1, r0, 24 - movs r4, 0 - mov r0, sp - b _0802C596 - .align 2, 0 -_0802C57C: .4byte gSprites -_0802C580: .4byte gObjectBankIDs -_0802C584: .4byte gUnknown_03004344 -_0802C588: .4byte sub_8010574 -_0802C58C: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0802C59C - mov r2, sp - adds r0, r2, r4 -_0802C596: - ldrb r0, [r0] - cmp r1, r0 - bne _0802C58C -_0802C59C: - adds r4, 0x1 - cmp r4, 0x3 - ble _0802C5A4 - movs r4, 0 -_0802C5A4: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl GetBankByPlayerAI - strb r0, [r5] - ldr r1, _0802C5D8 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - beq _0802C59C - movs r4, 0 - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802C622 - cmp r0, 0x1 - bgt _0802C5DC - cmp r0, 0 - beq _0802C5E6 - b _0802C624 - .align 2, 0 -_0802C5D8: .4byte gNoOfAllBanks -_0802C5DC: - cmp r0, 0x2 - beq _0802C5E6 - cmp r0, 0x3 - beq _0802C622 - b _0802C624 -_0802C5E6: - ldr r2, _0802C660 @ =gActiveBank - ldrb r0, [r2] - ldrb r1, [r5] - cmp r0, r1 - bne _0802C622 - ldr r1, _0802C664 @ =gBattlePartyID - ldrb r2, [r2] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802C668 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802C66C @ =gMoveSelectionCursor - adds r2, r1 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - ldr r2, _0802C670 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x6] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C624 -_0802C622: - adds r4, 0x1 -_0802C624: - ldr r0, _0802C674 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _0802C678 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - ldr r0, _0802C67C @ =gUnknown_03004344 - cmp r1, 0 - beq _0802C63C - movs r4, 0 -_0802C63C: - cmp r4, 0 - beq _0802C56C -_0802C640: - ldr r2, _0802C680 @ =gSprites - ldr r1, _0802C684 @ =gObjectBankIDs - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C688 @ =sub_8010520 - str r1, [r0] -_0802C658: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802C660: .4byte gActiveBank -_0802C664: .4byte gBattlePartyID -_0802C668: .4byte gPlayerParty -_0802C66C: .4byte gMoveSelectionCursor -_0802C670: .4byte gBattleMoves -_0802C674: .4byte gAbsentBankFlags -_0802C678: .4byte gBitTable -_0802C67C: .4byte gUnknown_03004344 -_0802C680: .4byte gSprites -_0802C684: .4byte gObjectBankIDs -_0802C688: .4byte sub_8010520 - thumb_func_end sub_802C2EC - - thumb_func_start sub_802C68C -sub_802C68C: @ 802C68C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r0, 0 - mov r8, r0 - ldr r7, _0802C6E4 @ =gActiveBank - ldrb r2, [r7] - lsls r0, r2, 9 - ldr r1, _0802C6E8 @ =gUnknown_02023A64 - adds r6, r0, r1 - ldr r0, _0802C6EC @ =gMain - ldrh r1, [r0, 0x2E] - movs r5, 0x1 - adds r4, r5, 0 - ands r4, r1 - cmp r4, 0 - bne _0802C6B2 - b _0802C864 -_0802C6B2: - movs r0, 0x5 - bl PlaySE - ldr r1, _0802C6F0 @ =gMoveSelectionCursor - ldrb r0, [r7] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r1, r6, r0 - ldrh r0, [r1] - cmp r0, 0xAE - bne _0802C6F4 - ldrb r0, [r6, 0x12] - movs r4, 0 - cmp r0, 0x7 - beq _0802C702 - ldrb r1, [r6, 0x13] - movs r0, 0x7 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - asrs r4, r0, 31 - movs r0, 0x10 - ands r4, r0 - b _0802C702 - .align 2, 0 -_0802C6E4: .4byte gActiveBank -_0802C6E8: .4byte gUnknown_02023A64 -_0802C6EC: .4byte gMain -_0802C6F0: .4byte gMoveSelectionCursor -_0802C6F4: - ldr r2, _0802C714 @ =gBattleMoves - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r4, [r0, 0x6] -_0802C702: - movs r0, 0x10 - ands r0, r4 - cmp r0, 0 - beq _0802C720 - ldr r0, _0802C718 @ =gUnknown_03004344 - ldr r1, _0802C71C @ =gActiveBank - ldrb r1, [r1] - strb r1, [r0] - b _0802C73A - .align 2, 0 -_0802C714: .4byte gBattleMoves -_0802C718: .4byte gUnknown_03004344 -_0802C71C: .4byte gActiveBank -_0802C720: - ldr r0, _0802C764 @ =gActiveBank - ldrb r0, [r0] - bl GetBankIdentity - adds r1, r0, 0 - movs r2, 0x1 - movs r0, 0x1 - ands r0, r1 - eors r0, r2 - bl GetBankByPlayerAI - ldr r1, _0802C768 @ =gUnknown_03004344 - strb r0, [r1] -_0802C73A: - ldr r3, _0802C76C @ =gBattleBufferA - ldr r5, _0802C764 @ =gActiveBank - ldrb r2, [r5] - lsls r1, r2, 9 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0802C770 - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _0802C7B2 - adds r0, r3, 0x2 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0802C7B2 - movs r2, 0x1 - add r8, r2 - b _0802C7B2 - .align 2, 0 -_0802C764: .4byte gActiveBank -_0802C768: .4byte gUnknown_03004344 -_0802C76C: .4byte gBattleBufferA -_0802C770: - movs r0, 0x7D - ands r0, r4 - cmp r0, 0 - bne _0802C77C - movs r0, 0x1 - add r8, r0 -_0802C77C: - ldr r0, _0802C7D0 @ =gMoveSelectionCursor - adds r0, r2, r0 - adds r1, r6, 0 - adds r1, 0x8 - ldrb r0, [r0] - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0802C7B8 - movs r0, 0x12 - ands r0, r4 - cmp r0, 0 - bne _0802C7B2 - movs r0, 0 - bl CountAliveMons - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0802C7B2 - ldrb r0, [r5] - bl sub_803C434 - ldr r1, _0802C7D4 @ =gUnknown_03004344 - strb r0, [r1] - movs r2, 0 - mov r8, r2 -_0802C7B2: - mov r0, r8 - cmp r0, 0 - bne _0802C7DC -_0802C7B8: - bl DestroyMenuCursor - ldr r1, _0802C7D0 @ =gMoveSelectionCursor - ldr r0, _0802C7D8 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r0, _0802C7D4 @ =gUnknown_03004344 - ldrb r0, [r0] - lsls r0, 8 - orrs r2, r0 - b _0802C888 - .align 2, 0 -_0802C7D0: .4byte gMoveSelectionCursor -_0802C7D4: .4byte gUnknown_03004344 -_0802C7D8: .4byte gActiveBank -_0802C7DC: - ldr r1, _0802C7F8 @ =gBattleBankFunc - ldr r2, _0802C7FC @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802C800 @ =sub_802C2EC - str r1, [r0] - movs r0, 0x12 - ands r4, r0 - cmp r4, 0 - beq _0802C808 - ldr r1, _0802C804 @ =gUnknown_03004344 - ldrb r0, [r2] - b _0802C838 - .align 2, 0 -_0802C7F8: .4byte gBattleBankFunc -_0802C7FC: .4byte gActiveBank -_0802C800: .4byte sub_802C2EC -_0802C804: .4byte gUnknown_03004344 -_0802C808: - movs r0, 0x1 - bl GetBankByPlayerAI - ldr r1, _0802C828 @ =gAbsentBankFlags - ldrb r1, [r1] - ldr r2, _0802C82C @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0802C830 - movs r0, 0x3 - b _0802C832 - .align 2, 0 -_0802C828: .4byte gAbsentBankFlags -_0802C82C: .4byte gBitTable -_0802C830: - movs r0, 0x1 -_0802C832: - bl GetBankByPlayerAI - ldr r1, _0802C854 @ =gUnknown_03004344 -_0802C838: - strb r0, [r1] - ldr r2, _0802C858 @ =gSprites - ldr r1, _0802C85C @ =gObjectBankIDs - ldr r0, _0802C854 @ =gUnknown_03004344 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C860 @ =sub_8010520 - b _0802CA36 - .align 2, 0 -_0802C854: .4byte gUnknown_03004344 -_0802C858: .4byte gSprites -_0802C85C: .4byte gObjectBankIDs -_0802C860: .4byte sub_8010520 -_0802C864: - movs r6, 0x2 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0802C8A4 - bl DestroyMenuCursor - movs r0, 0x5 - bl PlaySE - ldr r0, _0802C898 @ =gUnknown_030042A4 - strh r4, [r0] - ldr r1, _0802C89C @ =gUnknown_030042A0 - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _0802C8A0 @ =0x0000ffff -_0802C888: - movs r0, 0x1 - movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb - bl PlayerBufferExecCompleted - b _0802CA38 - .align 2, 0 -_0802C898: .4byte gUnknown_030042A4 -_0802C89C: .4byte gUnknown_030042A0 -_0802C8A0: .4byte 0x0000ffff -_0802C8A4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802C8D4 - ldr r4, _0802C8D0 @ =gMoveSelectionCursor - adds r2, r4 - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0802C8BC - b _0802CA38 -_0802C8BC: - ldrb r0, [r2] - bl nullsub_7 - ldrb r1, [r7] - adds r1, r4 - ldrb r0, [r1] - movs r2, 0x1 - eors r0, r2 - b _0802C976 - .align 2, 0 -_0802C8D0: .4byte gMoveSelectionCursor -_0802C8D4: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802C914 - ldr r4, _0802C90C @ =gMoveSelectionCursor - adds r3, r2, r4 - ldrb r2, [r3] - movs r6, 0x1 - adds r0, r5, 0 - ands r0, r2 - cmp r0, 0 - beq _0802C8EE - b _0802CA38 -_0802C8EE: - ldr r1, _0802C910 @ =gUnknown_03004348 - adds r0, r6, 0 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcc _0802C8FC - b _0802CA38 -_0802C8FC: - ldrb r0, [r3] - bl nullsub_7 - ldrb r1, [r7] - adds r1, r4 - ldrb r0, [r1] - eors r0, r6 - b _0802C976 - .align 2, 0 -_0802C90C: .4byte gMoveSelectionCursor -_0802C910: .4byte gUnknown_03004348 -_0802C914: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802C944 - ldr r4, _0802C940 @ =gMoveSelectionCursor - adds r2, r4 - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _0802C92C - b _0802CA38 -_0802C92C: - ldrb r0, [r2] - bl nullsub_7 - ldrb r1, [r7] - adds r1, r4 - ldrb r0, [r1] - movs r2, 0x2 - eors r0, r2 - b _0802C976 - .align 2, 0 -_0802C940: .4byte gMoveSelectionCursor -_0802C944: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802C99C - ldr r4, _0802C994 @ =gMoveSelectionCursor - adds r3, r2, r4 - ldrb r2, [r3] - movs r5, 0x2 - adds r0, r6, 0 - ands r0, r2 - cmp r0, 0 - bne _0802CA38 - ldr r1, _0802C998 @ =gUnknown_03004348 - adds r0, r5, 0 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802CA38 - ldrb r0, [r3] - bl nullsub_7 - ldrb r1, [r7] - adds r1, r4 - ldrb r0, [r1] - eors r0, r5 -_0802C976: - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3B4 - bl sub_802E220 - bl sub_802E2D4 - b _0802CA38 - .align 2, 0 -_0802C994: .4byte gMoveSelectionCursor -_0802C998: .4byte gUnknown_03004348 -_0802C99C: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802CA38 - ldr r0, _0802C9D8 @ =gUnknown_03004348 - ldrb r0, [r0] - cmp r0, 0x1 - bls _0802CA38 - ldr r0, _0802C9DC @ =gBattleTypeFlags - ldrh r1, [r0] - adds r0, r6, 0 - ands r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0802CA38 - ldr r4, _0802C9E0 @ =gMoveSelectionCursor - adds r0, r2, r4 - ldrb r0, [r0] - ldr r1, _0802C9E4 @ =gUnknown_081FAE80 - bl sub_802E12C - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0802C9EC - ldr r0, _0802C9E8 @ =gUnknown_03004344 - strb r5, [r0] - b _0802C9F4 - .align 2, 0 -_0802C9D8: .4byte gUnknown_03004348 -_0802C9DC: .4byte gBattleTypeFlags -_0802C9E0: .4byte gMoveSelectionCursor -_0802C9E4: .4byte gUnknown_081FAE80 -_0802C9E8: .4byte gUnknown_03004344 -_0802C9EC: - ldr r1, _0802CA44 @ =gUnknown_03004344 - adds r0, 0x1 - strb r0, [r1] - adds r0, r1, 0 -_0802C9F4: - ldrb r0, [r0] - movs r1, 0x1B - bl sub_802E3B4 - ldr r4, _0802CA48 @ =gUnknown_03004210 - ldr r1, _0802CA4C @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x37 - bl FillWindowRect - ldr r1, _0802CA50 @ =gUnknown_08400D89 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - ldr r1, _0802CA54 @ =gBattleBankFunc - ldr r0, _0802CA58 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802CA5C @ =sub_802CA60 -_0802CA36: - str r1, [r0] -_0802CA38: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802CA44: .4byte gUnknown_03004344 -_0802CA48: .4byte gUnknown_03004210 -_0802CA4C: .4byte 0x00001016 -_0802CA50: .4byte gUnknown_08400D89 -_0802CA54: .4byte gBattleBankFunc -_0802CA58: .4byte gActiveBank -_0802CA5C: .4byte sub_802CA60 - thumb_func_end sub_802C68C - - thumb_func_start sub_802CA60 -sub_802CA60: @ 802CA60 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - ldr r0, _0802CDEC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x5 - ands r0, r1 - cmp r0, 0 - bne _0802CA7A - b _0802CE78 -_0802CA7A: - movs r0, 0x5 - bl PlaySE - ldr r0, _0802CDF0 @ =gMoveSelectionCursor - mov r10, r0 - ldr r1, _0802CDF4 @ =gActiveBank - mov r8, r1 - ldrb r1, [r1] - adds r2, r1, r0 - ldr r5, _0802CDF8 @ =gUnknown_03004344 - ldrb r0, [r2] - ldrb r3, [r5] - cmp r0, r3 - bne _0802CA98 - b _0802CE14 -_0802CA98: - lsls r1, 9 - ldr r0, _0802CDFC @ =gUnknown_02023A64 - adds r1, r0 - mov r9, r1 - ldrb r1, [r2] - lsls r1, 1 - add r1, r9 - ldrh r6, [r1] - ldrb r0, [r5] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - strh r0, [r1] - ldrb r0, [r5] - lsls r0, 1 - add r0, r9 - strh r6, [r0] - mov r1, r8 - ldrb r0, [r1] - add r0, r10 - ldrb r1, [r0] - mov r7, r9 - adds r7, 0x8 - adds r1, r7, r1 - ldrb r6, [r1] - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r5] - adds r0, r7, r0 - strb r6, [r0] - mov r2, r8 - ldrb r0, [r2] - add r0, r10 - ldrb r1, [r0] - mov r2, r9 - adds r2, 0xC - adds r1, r2, r1 - ldrb r6, [r1] - ldrb r0, [r5] - adds r0, r2, r0 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r5] - adds r2, r0 - strb r6, [r2] - mov r3, r8 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r2, _0802CE00 @ =gDisableStructs - adds r6, r0, r2 - ldrb r4, [r6, 0x18] - lsls r3, r4, 24 - lsrs r2, r3, 28 - ldr r0, _0802CE04 @ =gBitTable - mov r12, r0 - add r1, r10 - ldrb r0, [r1] - lsls r0, 2 - add r0, r12 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _0802CB52 - lsrs r1, r3, 28 - bics r1, r0 - lsls r1, 4 - movs r2, 0xF - adds r0, r2, 0 - ands r0, r4 - orrs r0, r1 - strb r0, [r6, 0x18] - mov r1, r8 - ldrb r0, [r1] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r3, _0802CE00 @ =gDisableStructs - adds r1, r3 - ldrb r4, [r1, 0x18] - lsrs r3, r4, 4 - ldrb r0, [r5] - lsls r0, 2 - add r0, r12 - ldr r0, [r0] - orrs r0, r3 - lsls r0, 4 - ands r2, r4 - orrs r2, r0 - strb r2, [r1, 0x18] -_0802CB52: - bl sub_802E1B0 - movs r6, 0 - mov r12, r7 - mov r5, sp - adds r5, 0x20 - str r5, [sp, 0x28] - ldr r2, _0802CE08 @ =gBattleMons - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r4, r0, 0 - adds r4, 0x3B - mov r7, r8 - mov r10, r2 - movs r5, 0x3 -_0802CB76: - mov r3, sp - adds r3, r6 - adds r3, 0x8 - ldrb r1, [r4] - lsls r2, r6, 1 - adds r0, r5, 0 - lsls r0, r2 - ands r1, r0 - asrs r1, r2 - strb r1, [r3] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CB76 - ldr r1, _0802CDF0 @ =gMoveSelectionCursor - ldrb r0, [r7] - adds r0, r1 - ldrb r0, [r0] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - ldr r2, [sp, 0x28] - strb r0, [r2] - ldrb r0, [r7] - adds r0, r1 - ldrb r0, [r0] - mov r2, sp - adds r2, r0 - adds r2, 0x8 - ldr r1, _0802CDF8 @ =gUnknown_03004344 - ldrb r0, [r1] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - movs r3, 0 - strb r0, [r2] - ldrb r0, [r1] - mov r1, sp - adds r1, r0 - adds r1, 0x8 - ldr r5, [sp, 0x28] - ldrb r0, [r5] - strb r0, [r1] - strb r3, [r5] - movs r6, 0 - ldr r2, [sp, 0x28] -_0802CBD0: - mov r0, sp - adds r0, r6 - adds r0, 0x8 - ldrb r1, [r0] - lsls r0, r6, 1 - lsls r1, r0 - ldrb r0, [r2] - orrs r0, r1 - strb r0, [r2] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CBD0 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r10 - adds r0, 0x3B - ldr r2, [sp, 0x28] - ldrb r1, [r2] - strb r1, [r0] - movs r6, 0 - adds r4, r7, 0 - movs r3, 0x58 - movs r5, 0x24 - add r5, r10 - mov r8, r5 - mov r2, r9 - mov r7, r10 - adds r7, 0xC - mov r5, r12 -_0802CC0C: - lsls r1, r6, 1 - ldrb r0, [r4] - muls r0, r3 - adds r1, r0 - adds r1, r7 - ldrh r0, [r2] - strh r0, [r1] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r3 - adds r1, r6, r1 - add r1, r8 - adds r0, r5, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CC0C - ldr r2, _0802CDF4 @ =gActiveBank - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - mov r1, r10 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - beq _0802CC4E - b _0802CE1C -_0802CC4E: - movs r6, 0 - mov r0, sp - adds r0, 0xC - str r0, [sp, 0x24] - add r1, sp, 0x14 - mov r10, r1 - ldr r3, _0802CE0C @ =gBattlePartyID - mov r9, r3 - mov r8, r2 - movs r7, 0x64 - ldr r5, _0802CE10 @ =gPlayerParty - adds r4, r0, 0 -_0802CC66: - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - adds r0, r5 - adds r1, r6, 0 - adds r1, 0xD - bl GetMonData - strh r0, [r4] - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - adds r0, r5 - adds r1, r6, 0 - adds r1, 0x11 - bl GetMonData - mov r3, r10 - adds r1, r3, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CC66 - ldr r1, _0802CE0C @ =gBattlePartyID - ldr r0, _0802CDF4 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802CE10 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - ldr r5, [sp, 0x28] - strb r0, [r5] - movs r6, 0 - movs r5, 0x3 - ldr r4, [sp, 0x28] -_0802CCC6: - mov r3, sp - adds r3, r6 - adds r3, 0x8 - lsls r2, r6, 1 - adds r1, r5, 0 - lsls r1, r2 - ldrb r0, [r4] - ands r0, r1 - asrs r0, r2 - strb r0, [r3] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CCC6 - ldr r4, _0802CDF0 @ =gMoveSelectionCursor - ldr r3, _0802CDF4 @ =gActiveBank - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - lsls r1, 1 - ldr r0, [sp, 0x24] - adds r1, r0, r1 - ldrh r6, [r1] - ldr r2, _0802CDF8 @ =gUnknown_03004344 - ldrb r0, [r2] - lsls r0, 1 - ldr r5, [sp, 0x24] - adds r0, r5, r0 - ldrh r0, [r0] - movs r5, 0 - strh r0, [r1] - ldrb r0, [r2] - lsls r0, 1 - ldr r1, [sp, 0x24] - adds r0, r1, r0 - strh r6, [r0] - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - add r1, r10 - ldrb r6, [r1] - ldrb r0, [r2] - add r0, r10 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - add r0, r10 - strb r6, [r0] - ldrb r0, [r3] - adds r0, r4 - ldrb r0, [r0] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - ldr r1, [sp, 0x28] - strb r0, [r1] - ldrb r0, [r3] - adds r0, r4 - ldrb r0, [r0] - mov r1, sp - adds r1, r0 - adds r1, 0x8 - ldrb r0, [r2] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - mov r1, sp - adds r1, r0 - adds r1, 0x8 - ldr r2, [sp, 0x28] - ldrb r0, [r2] - strb r0, [r1] - strb r5, [r2] - movs r6, 0 - ldr r2, [sp, 0x28] -_0802CD5E: - mov r0, sp - adds r0, r6 - adds r0, 0x8 - ldrb r1, [r0] - lsls r0, r6, 1 - lsls r1, r0 - ldrb r0, [r2] - orrs r0, r1 - strb r0, [r2] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CD5E - movs r6, 0 - ldr r3, _0802CE0C @ =gBattlePartyID - mov r10, r3 - ldr r5, _0802CDF4 @ =gActiveBank - mov r9, r5 - movs r0, 0x64 - mov r8, r0 - ldr r7, _0802CE10 @ =gPlayerParty - ldr r5, [sp, 0x24] - adds r5, 0x8 - ldr r4, [sp, 0x24] -_0802CD8C: - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - add r0, r10 - ldrh r0, [r0] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - adds r1, r6, 0 - adds r1, 0xD - adds r2, r4, 0 - bl SetMonData - mov r3, r9 - ldrb r0, [r3] - lsls r0, 1 - add r0, r10 - ldrh r0, [r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - adds r1, r6, 0 - adds r1, 0x11 - adds r2, r5, 0 - bl SetMonData - adds r5, 0x1 - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CD8C - ldr r1, _0802CE0C @ =gBattlePartyID - ldr r0, _0802CDF4 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802CE10 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - ldr r2, [sp, 0x28] - bl SetMonData - b _0802CE1C - .align 2, 0 -_0802CDEC: .4byte gMain -_0802CDF0: .4byte gMoveSelectionCursor -_0802CDF4: .4byte gActiveBank -_0802CDF8: .4byte gUnknown_03004344 -_0802CDFC: .4byte gUnknown_02023A64 -_0802CE00: .4byte gDisableStructs -_0802CE04: .4byte gBitTable -_0802CE08: .4byte gBattleMons -_0802CE0C: .4byte gBattlePartyID -_0802CE10: .4byte gPlayerParty -_0802CE14: - ldrb r0, [r5] - ldr r1, _0802CF20 @ =gUnknown_08400D49 - bl sub_802E12C -_0802CE1C: - ldr r1, _0802CF24 @ =gBattleBankFunc - ldr r2, _0802CF28 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802CF2C @ =sub_802C68C - str r1, [r0] - ldr r3, _0802CF30 @ =gMoveSelectionCursor - ldrb r0, [r2] - adds r0, r3 - ldr r1, _0802CF34 @ =gUnknown_03004344 - ldrb r1, [r1] - strb r1, [r0] - ldrb r0, [r2] - adds r0, r3 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3B4 - ldr r4, _0802CF38 @ =gUnknown_03004210 - ldr r1, _0802CF3C @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x37 - bl FillWindowRect - ldr r1, _0802CF40 @ =gUnknown_08400D38 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - bl sub_802E220 - bl sub_802E2D4 -_0802CE78: - ldr r6, _0802CF44 @ =gMain - ldrh r1, [r6, 0x2E] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - beq _0802CEF0 - movs r0, 0x5 - bl PlaySE - ldr r0, _0802CF34 @ =gUnknown_03004344 - ldrb r0, [r0] - bl nullsub_7 - ldr r5, _0802CF30 @ =gMoveSelectionCursor - ldr r4, _0802CF28 @ =gActiveBank - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3B4 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - ldr r1, _0802CF20 @ =gUnknown_08400D49 - bl sub_802E12C - ldr r1, _0802CF24 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802CF2C @ =sub_802C68C - str r1, [r0] - ldr r4, _0802CF38 @ =gUnknown_03004210 - ldr r1, _0802CF3C @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x37 - bl FillWindowRect - ldr r1, _0802CF40 @ =gUnknown_08400D38 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - bl sub_802E220 - bl sub_802E2D4 -_0802CEF0: - ldrh r1, [r6, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802CF8C - ldr r3, _0802CF34 @ =gUnknown_03004344 - ldrb r2, [r3] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _0802CF8C - ldr r0, _0802CF30 @ =gMoveSelectionCursor - ldr r1, _0802CF28 @ =gActiveBank - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - cmp r2, r5 - bne _0802CF48 - ldrb r0, [r1] - movs r1, 0x1D - bl sub_802E3B4 - b _0802CF4E - .align 2, 0 -_0802CF20: .4byte gUnknown_08400D49 -_0802CF24: .4byte gBattleBankFunc -_0802CF28: .4byte gActiveBank -_0802CF2C: .4byte sub_802C68C -_0802CF30: .4byte gMoveSelectionCursor -_0802CF34: .4byte gUnknown_03004344 -_0802CF38: .4byte gUnknown_03004210 -_0802CF3C: .4byte 0x00001016 -_0802CF40: .4byte gUnknown_08400D38 -_0802CF44: .4byte gMain -_0802CF48: - ldrb r0, [r3] - bl nullsub_7 -_0802CF4E: - ldr r4, _0802CF78 @ =gUnknown_03004344 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802CF7C @ =gMoveSelectionCursor - ldr r0, _0802CF80 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802CF84 - adds r0, r1, 0 - movs r1, 0 - bl sub_802E3B4 - b _0802CF8C - .align 2, 0 -_0802CF78: .4byte gUnknown_03004344 -_0802CF7C: .4byte gMoveSelectionCursor -_0802CF80: .4byte gActiveBank -_0802CF84: - ldrb r0, [r4] - movs r1, 0x1B - bl sub_802E3B4 -_0802CF8C: - ldr r0, _0802CFC8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802D020 - ldr r3, _0802CFCC @ =gUnknown_03004344 - ldrb r2, [r3] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _0802D020 - ldr r1, _0802CFD0 @ =gUnknown_03004348 - movs r0, 0x1 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802D020 - ldr r0, _0802CFD4 @ =gMoveSelectionCursor - ldr r1, _0802CFD8 @ =gActiveBank - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - cmp r2, r0 - bne _0802CFDC - ldrb r0, [r1] - movs r1, 0x1D - bl sub_802E3B4 - b _0802CFE2 - .align 2, 0 -_0802CFC8: .4byte gMain -_0802CFCC: .4byte gUnknown_03004344 -_0802CFD0: .4byte gUnknown_03004348 -_0802CFD4: .4byte gMoveSelectionCursor -_0802CFD8: .4byte gActiveBank -_0802CFDC: - ldrb r0, [r3] - bl nullsub_7 -_0802CFE2: - ldr r4, _0802D00C @ =gUnknown_03004344 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802D010 @ =gMoveSelectionCursor - ldr r0, _0802D014 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802D018 - adds r0, r1, 0 - movs r1, 0 - bl sub_802E3B4 - b _0802D020 - .align 2, 0 -_0802D00C: .4byte gUnknown_03004344 -_0802D010: .4byte gMoveSelectionCursor -_0802D014: .4byte gActiveBank -_0802D018: - ldrb r0, [r4] - movs r1, 0x1B - bl sub_802E3B4 -_0802D020: - ldr r0, _0802D050 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802D0A4 - ldr r3, _0802D054 @ =gUnknown_03004344 - ldrb r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0802D0A4 - ldr r0, _0802D058 @ =gMoveSelectionCursor - ldr r1, _0802D05C @ =gActiveBank - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - cmp r2, r5 - bne _0802D060 - ldrb r0, [r1] - movs r1, 0x1D - bl sub_802E3B4 - b _0802D066 - .align 2, 0 -_0802D050: .4byte gMain -_0802D054: .4byte gUnknown_03004344 -_0802D058: .4byte gMoveSelectionCursor -_0802D05C: .4byte gActiveBank -_0802D060: - ldrb r0, [r3] - bl nullsub_7 -_0802D066: - ldr r4, _0802D090 @ =gUnknown_03004344 - ldrb r0, [r4] - movs r1, 0x2 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802D094 @ =gMoveSelectionCursor - ldr r0, _0802D098 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802D09C - adds r0, r1, 0 - movs r1, 0 - bl sub_802E3B4 - b _0802D0A4 - .align 2, 0 -_0802D090: .4byte gUnknown_03004344 -_0802D094: .4byte gMoveSelectionCursor -_0802D098: .4byte gActiveBank -_0802D09C: - ldrb r0, [r4] - movs r1, 0x1B - bl sub_802E3B4 -_0802D0A4: - ldr r0, _0802D0E0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802D138 - ldr r3, _0802D0E4 @ =gUnknown_03004344 - ldrb r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - bne _0802D138 - ldr r1, _0802D0E8 @ =gUnknown_03004348 - movs r0, 0x2 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802D138 - ldr r0, _0802D0EC @ =gMoveSelectionCursor - ldr r1, _0802D0F0 @ =gActiveBank - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - cmp r2, r0 - bne _0802D0F4 - ldrb r0, [r1] - movs r1, 0x1D - bl sub_802E3B4 - b _0802D0FA - .align 2, 0 -_0802D0E0: .4byte gMain -_0802D0E4: .4byte gUnknown_03004344 -_0802D0E8: .4byte gUnknown_03004348 -_0802D0EC: .4byte gMoveSelectionCursor -_0802D0F0: .4byte gActiveBank -_0802D0F4: - ldrb r0, [r3] - bl nullsub_7 -_0802D0FA: - ldr r4, _0802D124 @ =gUnknown_03004344 - ldrb r0, [r4] - movs r1, 0x2 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802D128 @ =gMoveSelectionCursor - ldr r0, _0802D12C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802D130 - adds r0, r1, 0 - movs r1, 0 - bl sub_802E3B4 - b _0802D138 - .align 2, 0 -_0802D124: .4byte gUnknown_03004344 -_0802D128: .4byte gMoveSelectionCursor -_0802D12C: .4byte gActiveBank -_0802D130: - ldrb r0, [r4] - movs r1, 0x1B - bl sub_802E3B4 -_0802D138: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802CA60 - - thumb_func_start sub_802D148 -sub_802D148: @ 802D148 - push {lr} - ldr r0, _0802D178 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0802D174 - movs r0, 0x5A - bl m4aSongNumStop - ldr r3, _0802D17C @ =gMain - ldr r0, _0802D180 @ =0x0000043d - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _0802D184 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r3] - ldr r0, _0802D188 @ =c2_8011A1C - bl SetMainCallback2 -_0802D174: - pop {r0} - bx r0 - .align 2, 0 -_0802D178: .4byte gReceivedRemoteLinkPlayers -_0802D17C: .4byte gMain -_0802D180: .4byte 0x0000043d -_0802D184: .4byte gPreBattleCallback1 -_0802D188: .4byte c2_8011A1C - thumb_func_end sub_802D148 - - thumb_func_start sub_802D18C -sub_802D18C: @ 802D18C - push {lr} - ldr r0, _0802D1BC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802D1F2 - ldr r0, _0802D1C0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802D1D0 - bl sub_800832C - ldr r1, _0802D1C4 @ =gBattleBankFunc - ldr r0, _0802D1C8 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802D1CC @ =sub_802D148 - str r1, [r0] - b _0802D1F2 - .align 2, 0 -_0802D1BC: .4byte gPaletteFade -_0802D1C0: .4byte gBattleTypeFlags -_0802D1C4: .4byte gBattleBankFunc -_0802D1C8: .4byte gActiveBank -_0802D1CC: .4byte sub_802D148 -_0802D1D0: - movs r0, 0x5A - bl m4aSongNumStop - ldr r2, _0802D1F8 @ =gMain - ldr r0, _0802D1FC @ =0x0000043d - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _0802D200 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_0802D1F2: - pop {r0} - bx r0 - .align 2, 0 -_0802D1F8: .4byte gMain -_0802D1FC: .4byte 0x0000043d -_0802D200: .4byte gPreBattleCallback1 - thumb_func_end sub_802D18C - - thumb_func_start sub_802D204 -sub_802D204: @ 802D204 - push {lr} - ldr r2, _0802D22C @ =gSprites - ldr r1, _0802D230 @ =gObjectBankIDs - ldr r0, _0802D234 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802D238 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D228 - bl PlayerBufferExecCompleted -_0802D228: - pop {r0} - bx r0 - .align 2, 0 -_0802D22C: .4byte gSprites -_0802D230: .4byte gObjectBankIDs -_0802D234: .4byte gActiveBank -_0802D238: .4byte SpriteCallbackDummy - thumb_func_end sub_802D204 - - thumb_func_start sub_802D23C -sub_802D23C: @ 802D23C - push {lr} - ldr r2, _0802D264 @ =gSprites - ldr r1, _0802D268 @ =gObjectBankIDs - ldr r0, _0802D26C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802D270 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D260 - bl PlayerBufferExecCompleted -_0802D260: - pop {r0} - bx r0 - .align 2, 0 -_0802D264: .4byte gSprites -_0802D268: .4byte gObjectBankIDs -_0802D26C: .4byte gActiveBank -_0802D270: .4byte SpriteCallbackDummy - thumb_func_end sub_802D23C - - thumb_func_start sub_802D274 -sub_802D274: @ 802D274 - push {r4-r6,lr} - ldr r6, _0802D2CC @ =gSprites - ldr r5, _0802D2D0 @ =gObjectBankIDs - ldr r4, _0802D2D4 @ =gActiveBank - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, [r0] - ldr r0, _0802D2D8 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D2C6 - ldr r0, _0802D2DC @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - bl nullsub_10 - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl FreeSpriteOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - bl PlayerBufferExecCompleted -_0802D2C6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D2CC: .4byte gSprites -_0802D2D0: .4byte gObjectBankIDs -_0802D2D4: .4byte gActiveBank -_0802D2D8: .4byte SpriteCallbackDummy -_0802D2DC: .4byte gSaveBlock2 - thumb_func_end sub_802D274 - - thumb_func_start sub_802D2E0 -sub_802D2E0: @ 802D2E0 - push {lr} - ldr r3, _0802D314 @ =gActiveBank - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, _0802D318 @ =0x02017810 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0802D310 - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0 - strb r0, [r1, 0x9] - bl PlayerBufferExecCompleted -_0802D310: - pop {r0} - bx r0 - .align 2, 0 -_0802D314: .4byte gActiveBank -_0802D318: .4byte 0x02017810 - thumb_func_end sub_802D2E0 - - thumb_func_start sub_802D31C -sub_802D31C: @ 802D31C - push {r4-r7,lr} - movs r6, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802D340 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802D374 - ldr r0, _0802D360 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802D374 -_0802D340: - ldr r2, _0802D364 @ =gSprites - ldr r1, _0802D368 @ =gHealthboxIDs - ldr r0, _0802D36C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802D370 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D3AA - b _0802D3A8 - .align 2, 0 -_0802D360: .4byte gBattleTypeFlags -_0802D364: .4byte gSprites -_0802D368: .4byte gHealthboxIDs -_0802D36C: .4byte gActiveBank -_0802D370: .4byte SpriteCallbackDummy -_0802D374: - ldr r2, _0802D45C @ =gSprites - ldr r5, _0802D460 @ =gHealthboxIDs - ldr r0, _0802D464 @ =gActiveBank - ldrb r3, [r0] - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r4, [r0] - ldr r0, _0802D468 @ =SpriteCallbackDummy - cmp r4, r0 - bne _0802D3AA - movs r0, 0x2 - eors r3, r0 - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, r4 - bne _0802D3AA -_0802D3A8: - movs r6, 0x1 -_0802D3AA: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _0802D3B6 - movs r6, 0 -_0802D3B6: - cmp r6, 0 - bne _0802D3BC - b _0802D4DA -_0802D3BC: - ldr r7, _0802D464 @ =gActiveBank - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r5, _0802D46C @ =0x02017810 - adds r4, r0, r5 - ldrb r1, [r4, 0x1] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D3D8 - b _0802D4DA -_0802D3D8: - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0802D4DA - ldrb r1, [r4] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _0802D470 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _0802D474 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802D47C - ldr r0, _0802D478 @ =gMPlay_BGM - bl m4aMPlayContinue - b _0802D488 - .align 2, 0 -_0802D45C: .4byte gSprites -_0802D460: .4byte gHealthboxIDs -_0802D464: .4byte gActiveBank -_0802D468: .4byte SpriteCallbackDummy -_0802D46C: .4byte 0x02017810 -_0802D470: .4byte 0x000027f9 -_0802D474: .4byte gBattleTypeFlags -_0802D478: .4byte gMPlay_BGM -_0802D47C: - ldr r0, _0802D4E0 @ =gMPlay_BGM - ldr r1, _0802D4E4 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_0802D488: - ldr r7, _0802D4E8 @ =gBattlePartyID - ldr r4, _0802D4EC @ =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0802D4F0 @ =gPlayerParty - adds r0, r5 - bl sub_80324F8 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802D4BE - ldrb r0, [r4] - movs r1, 0x2 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - bl sub_80324F8 -_0802D4BE: - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802D4F4 @ =0x02017810 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0, 0x9] - ldr r1, _0802D4F8 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802D4FC @ =sub_802D2E0 - str r1, [r0] -_0802D4DA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D4E0: .4byte gMPlay_BGM -_0802D4E4: .4byte 0x0000ffff -_0802D4E8: .4byte gBattlePartyID -_0802D4EC: .4byte gActiveBank -_0802D4F0: .4byte gPlayerParty -_0802D4F4: .4byte 0x02017810 -_0802D4F8: .4byte gBattleBankFunc -_0802D4FC: .4byte sub_802D2E0 - thumb_func_end sub_802D31C - - thumb_func_start sub_802D500 -sub_802D500: @ 802D500 - push {r4-r7,lr} - ldr r5, _0802D654 @ =gActiveBank - ldrb r2, [r5] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r4, _0802D658 @ =0x02017810 - adds r0, r4 - ldrb r1, [r0] - movs r7, 0x88 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D530 - ldr r0, _0802D65C @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802D660 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_0802D530: - ldrb r0, [r5] - movs r6, 0x2 - adds r2, r6, 0 - eors r2, r0 - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D55E - ldr r0, _0802D65C @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802D660 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_0802D55E: - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r3, 0x8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D64C - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D64C - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802D5EE - ldr r0, _0802D664 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802D5EE - ldr r1, _0802D668 @ =gUnknown_0300434C - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802D66C @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _0802D670 @ =gHealthboxIDs - ldrb r0, [r5] - adds r1, r6, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0802D65C @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802D660 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - eors r0, r6 - bl sub_804777C - ldrb r0, [r5] - eors r0, r6 - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC -_0802D5EE: - ldr r1, _0802D668 @ =gUnknown_0300434C - ldr r4, _0802D654 @ =gActiveBank - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802D66C @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _0802D670 @ =gHealthboxIDs - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _0802D65C @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802D660 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r4] - bl sub_804777C - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - ldr r2, _0802D674 @ =0x02017840 - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _0802D678 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802D67C @ =sub_802D31C - str r1, [r0] -_0802D64C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D654: .4byte gActiveBank -_0802D658: .4byte 0x02017810 -_0802D65C: .4byte gBattlePartyID -_0802D660: .4byte gPlayerParty -_0802D664: .4byte gBattleTypeFlags -_0802D668: .4byte gUnknown_0300434C -_0802D66C: .4byte gSprites -_0802D670: .4byte gHealthboxIDs -_0802D674: .4byte 0x02017840 -_0802D678: .4byte gBattleBankFunc -_0802D67C: .4byte sub_802D31C - thumb_func_end sub_802D500 - - thumb_func_start sub_802D680 -sub_802D680: @ 802D680 - push {r4-r6,lr} - ldr r2, _0802D710 @ =gSprites - ldr r0, _0802D714 @ =gHealthboxIDs - ldr r6, _0802D718 @ =gActiveBank - ldrb r3, [r6] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802D71C @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D708 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r5, _0802D720 @ =0x02017810 - adds r2, r0, r5 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802D708 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrb r0, [r6] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _0802D724 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldrb r2, [r6] - lsls r0, r2, 2 - adds r1, r5, 0 - subs r1, 0x10 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802D6FC - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl move_anim_start_t4 -_0802D6FC: - ldr r0, _0802D728 @ =gBattleBankFunc - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _0802D72C @ =sub_802D730 - str r0, [r1] -_0802D708: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D710: .4byte gSprites -_0802D714: .4byte gHealthboxIDs -_0802D718: .4byte gActiveBank -_0802D71C: .4byte SpriteCallbackDummy -_0802D720: .4byte 0x02017810 -_0802D724: .4byte 0x000027f9 -_0802D728: .4byte gBattleBankFunc -_0802D72C: .4byte sub_802D730 - thumb_func_end sub_802D680 - - thumb_func_start sub_802D730 -sub_802D730: @ 802D730 - push {r4,lr} - ldr r4, _0802D780 @ =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802D784 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802D77A - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _0802D77A - ldr r0, _0802D788 @ =gMPlay_BGM - ldr r1, _0802D78C @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r2, _0802D790 @ =gBattlePartyID - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802D794 @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - bl PlayerBufferExecCompleted -_0802D77A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802D780: .4byte gActiveBank -_0802D784: .4byte 0x02017810 -_0802D788: .4byte gMPlay_BGM -_0802D78C: .4byte 0x0000ffff -_0802D790: .4byte gBattlePartyID -_0802D794: .4byte gPlayerParty - thumb_func_end sub_802D730 - - thumb_func_start sub_802D798 -sub_802D798: @ 802D798 - push {r4-r6,lr} - ldr r5, _0802D844 @ =gActiveBank - ldrb r2, [r5] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r6, _0802D848 @ =0x02017810 - adds r0, r6 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _0802D7C6 - ldr r0, _0802D84C @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802D850 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_0802D7C6: - ldr r4, _0802D854 @ =gSprites - ldr r0, _0802D858 @ =gUnknown_0300434C - ldrb r2, [r5] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _0802D85C @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D83C - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0802D83C - adds r0, r3, r4 - bl DestroySprite - ldr r4, _0802D860 @ =gHealthboxIDs - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0802D84C @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802D850 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - bl sub_804777C - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC - ldrb r0, [r5] - bl sub_8031F88 - ldr r1, _0802D864 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802D868 @ =sub_802D680 - str r1, [r0] -_0802D83C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D844: .4byte gActiveBank -_0802D848: .4byte 0x02017810 -_0802D84C: .4byte gBattlePartyID -_0802D850: .4byte gPlayerParty -_0802D854: .4byte gSprites -_0802D858: .4byte gUnknown_0300434C -_0802D85C: .4byte SpriteCallbackDummy -_0802D860: .4byte gHealthboxIDs -_0802D864: .4byte gBattleBankFunc -_0802D868: .4byte sub_802D680 - thumb_func_end sub_802D798 - - thumb_func_start c3_0802FDF4 -c3_0802FDF4: @ 802D86C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _0802D88E - ldr r0, _0802D894 @ =gMPlay_BGM - ldr r1, _0802D898 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - adds r0, r4, 0 - bl DestroyTask -_0802D88E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802D894: .4byte gMPlay_BGM -_0802D898: .4byte 0x0000ffff - thumb_func_end c3_0802FDF4 - - thumb_func_start bx_t1_healthbar_update -bx_t1_healthbar_update: @ 802D89C - push {r4-r6,lr} - ldr r5, _0802D8DC @ =gActiveBank - ldrb r0, [r5] - ldr r6, _0802D8E0 @ =gHealthboxIDs - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl sub_8045C78 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl sub_8043DFC - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0802D8E4 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl sub_80440EC - b _0802D8FE - .align 2, 0 -_0802D8DC: .4byte gActiveBank -_0802D8E0: .4byte gHealthboxIDs -_0802D8E4: - ldr r2, _0802D904 @ =gBattlePartyID - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802D908 @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - bl PlayerBufferExecCompleted -_0802D8FE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D904: .4byte gBattlePartyID -_0802D908: .4byte gPlayerParty - thumb_func_end bx_t1_healthbar_update - - thumb_func_start sub_802D90C -sub_802D90C: @ 802D90C - push {lr} - ldr r0, _0802D920 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _0802D91A - bl PlayerBufferExecCompleted -_0802D91A: - pop {r0} - bx r0 - .align 2, 0 -_0802D920: .4byte gUnknown_03004210 - thumb_func_end sub_802D90C - - thumb_func_start sub_802D924 -sub_802D924: @ 802D924 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _0802DA24 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r8, r0 - ldrb r0, [r0, 0x8] - mov r10, r0 - mov r1, r8 - ldrb r7, [r1, 0xC] - str r7, [sp, 0x8] - ldrh r2, [r1, 0xA] - str r2, [sp, 0xC] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802D96A - ldr r1, _0802DA28 @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r10, r0 - bne _0802D96A - b _0802DA80 -_0802D96A: - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - ldr r0, _0802DA2C @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - ldr r3, _0802DA30 @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _0802DA34 @ =gBaseStats - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x13] - movs r1, 0xCA - lsls r1, 1 - muls r1, r2 - adds r4, r1 - adds r4, r3 - ldr r2, [r4] - str r2, [sp] - ldr r3, [sp, 0xC] - lsls r1, r3, 16 - asrs r1, 16 - adds r0, r1 - cmp r0, r2 - bcc _0802DA58 - adds r0, r6, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r6, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - ldr r0, [sp, 0xC] - subs r2, r0, r2 - ldr r4, _0802DA38 @ =gActiveBank - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl dp01_build_cmdbuf_x21_a_bb - strb r5, [r4] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802DA40 - ldr r2, _0802DA28 @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r2 - mov r1, r10 - ldrh r0, [r0] - cmp r1, r0 - beq _0802DA1E - movs r0, 0x2 - eors r7, r0 - lsls r0, r7, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _0802DA40 -_0802DA1E: - ldr r0, _0802DA3C @ =sub_802DCB0 - b _0802DA82 - .align 2, 0 -_0802DA24: .4byte gTasks -_0802DA28: .4byte gBattlePartyID -_0802DA2C: .4byte gPlayerParty -_0802DA30: .4byte gExperienceTables -_0802DA34: .4byte gBaseStats -_0802DA38: .4byte gActiveBank -_0802DA3C: .4byte sub_802DCB0 -_0802DA40: - ldr r0, _0802DA50 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldr r0, _0802DA54 @ =sub_802DDC4 - b _0802DA84 - .align 2, 0 -_0802DA50: .4byte gTasks -_0802DA54: .4byte sub_802DDC4 -_0802DA58: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r6, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _0802DA78 @ =gBattleBankFunc - ldr r3, [sp, 0x8] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, _0802DA7C @ =sub_802D90C - str r1, [r0] - mov r0, r9 - bl DestroyTask - b _0802DA86 - .align 2, 0 -_0802DA78: .4byte gBattleBankFunc -_0802DA7C: .4byte sub_802D90C -_0802DA80: - ldr r0, _0802DA98 @ =sub_802DA9C -_0802DA82: - mov r1, r8 -_0802DA84: - str r0, [r1] -_0802DA86: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802DA98: .4byte sub_802DA9C - thumb_func_end sub_802D924 - - thumb_func_start sub_802DA9C -sub_802DA9C: @ 802DA9C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0802DB54 @ =gTasks - lsls r2, r0, 2 - mov r8, r2 - add r8, r0 - mov r0, r8 - lsls r0, 3 - mov r8, r0 - add r8, r1 - mov r2, r8 - ldrb r1, [r2, 0x8] - movs r0, 0xA - ldrsh r2, [r2, r0] - mov r9, r2 - mov r2, r8 - ldrb r2, [r2, 0xC] - mov r10, r2 - movs r0, 0x64 - adds r6, r1, 0 - muls r6, r0 - ldr r0, _0802DB58 @ =gPlayerParty - adds r6, r0 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - adds r3, r0, 0 - ldr r6, _0802DB5C @ =gExperienceTables - lsls r1, r4, 2 - ldr r2, _0802DB60 @ =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r2 - adds r1, r0 - adds r1, r6 - ldr r1, [r1] - subs r3, r1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r0 - adds r4, r6 - ldr r2, [r4] - subs r2, r1 - ldr r0, _0802DB64 @ =gHealthboxIDs - add r0, r10 - ldrb r1, [r0] - mov r0, r9 - negs r0, r0 - str r0, [sp] - mov r0, r10 - bl sub_8043D84 - movs r0, 0x21 - bl PlaySE - ldr r0, _0802DB68 @ =sub_802DB6C - mov r1, r8 - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802DB54: .4byte gTasks -_0802DB58: .4byte gPlayerParty -_0802DB5C: .4byte gExperienceTables -_0802DB60: .4byte gBaseStats -_0802DB64: .4byte gHealthboxIDs -_0802DB68: .4byte sub_802DB6C - thumb_func_end sub_802DA9C - - thumb_func_start sub_802DB6C -sub_802DB6C: @ 802DB6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _0802DB98 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrh r1, [r6, 0x1C] - movs r2, 0x1C - ldrsh r0, [r6, r2] - cmp r0, 0xC - bgt _0802DB9C - adds r0, r1, 0x1 - strh r0, [r6, 0x1C] - b _0802DC98 - .align 2, 0 -_0802DB98: .4byte gTasks -_0802DB9C: - ldrb r0, [r6, 0x8] - mov r9, r0 - ldrh r2, [r6, 0xA] - mov r10, r2 - ldrb r7, [r6, 0xC] - ldr r5, _0802DC64 @ =gHealthboxIDs - adds r5, r7, r5 - ldrb r1, [r5] - adds r0, r7, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8045C78 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - bl sub_8043DFC - lsls r4, 16 - asrs r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _0802DC98 - movs r0, 0x21 - bl m4aSongNumStop - movs r0, 0x64 - mov r1, r9 - muls r1, r0 - ldr r0, _0802DC68 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r3, _0802DC6C @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _0802DC70 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r1 - adds r4, r0 - adds r4, r3 - ldr r1, [r4] - str r1, [sp] - mov r2, r10 - lsls r0, r2, 16 - asrs r4, r0, 16 - ldr r0, [sp, 0x4] - adds r0, r4 - cmp r0, r1 - blt _0802DC7C - adds r0, r5, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - subs r2, r4, r2 - ldr r4, _0802DC74 @ =gActiveBank - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl dp01_build_cmdbuf_x21_a_bb - strb r5, [r4] - ldr r0, _0802DC78 @ =sub_802DCB0 - str r0, [r6] - b _0802DC98 - .align 2, 0 -_0802DC64: .4byte gHealthboxIDs -_0802DC68: .4byte gPlayerParty -_0802DC6C: .4byte gExperienceTables -_0802DC70: .4byte gBaseStats -_0802DC74: .4byte gActiveBank -_0802DC78: .4byte sub_802DCB0 -_0802DC7C: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r5, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _0802DCA8 @ =gBattleBankFunc - lsls r0, r7, 2 - adds r0, r1 - ldr r1, _0802DCAC @ =sub_802D90C - str r1, [r0] - mov r0, r8 - bl DestroyTask -_0802DC98: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802DCA8: .4byte gBattleBankFunc -_0802DCAC: .4byte sub_802D90C - thumb_func_end sub_802DB6C - - thumb_func_start sub_802DCB0 -sub_802DCB0: @ 802DCB0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0802DD04 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrb r4, [r0, 0xC] - ldrb r6, [r0, 0x8] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802DCE4 - ldr r1, _0802DD08 @ =gBattlePartyID - movs r0, 0x2 - adds r2, r4, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - bne _0802DCE4 - adds r4, r2, 0 -_0802DCE4: - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r4, 0 - movs r3, 0 - bl move_anim_start_t4 - ldr r0, _0802DD04 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0802DD0C @ =sub_802DD10 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802DD04: .4byte gTasks -_0802DD08: .4byte gBattlePartyID -_0802DD0C: .4byte sub_802DD10 - thumb_func_end sub_802DCB0 - - thumb_func_start sub_802DD10 -sub_802DD10: @ 802DD10 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0802DD78 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r2, r0, r1 - ldrb r5, [r2, 0xC] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - ldr r1, _0802DD7C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802DDAE - ldrb r4, [r2, 0x8] - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _0802DD80 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x38 - bl GetMonData - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802DD8C - ldr r1, _0802DD84 @ =gBattlePartyID - movs r0, 0x2 - adds r2, r5, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _0802DD8C - ldr r0, _0802DD88 @ =gHealthboxIDs - adds r0, r2, r0 - ldrb r0, [r0] - adds r1, r7, 0 - movs r2, 0 - bl sub_8045A5C - b _0802DDA0 - .align 2, 0 -_0802DD78: .4byte gTasks -_0802DD7C: .4byte 0x02017810 -_0802DD80: .4byte gPlayerParty -_0802DD84: .4byte gBattlePartyID -_0802DD88: .4byte gHealthboxIDs -_0802DD8C: - ldr r0, _0802DDB4 @ =gHealthboxIDs - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x64 - muls r1, r4 - ldr r2, _0802DDB8 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C -_0802DDA0: - ldr r0, _0802DDBC @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0802DDC0 @ =sub_802DDC4 - str r0, [r1] -_0802DDAE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802DDB4: .4byte gHealthboxIDs -_0802DDB8: .4byte gPlayerParty -_0802DDBC: .4byte gTasks -_0802DDC0: .4byte sub_802DDC4 - thumb_func_end sub_802DD10 - - thumb_func_start sub_802DDC4 -sub_802DDC4: @ 802DDC4 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0802DE00 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldrb r1, [r4, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802DE04 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - ldrb r0, [r4, 0xC] - ldr r1, _0802DE08 @ =gBattleBankFunc - lsls r0, 2 - adds r0, r1 - ldr r1, _0802DE0C @ =sub_802D90C - str r1, [r0] - adds r0, r5, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802DE00: .4byte gTasks -_0802DE04: .4byte gPlayerParty -_0802DE08: .4byte gBattleBankFunc -_0802DE0C: .4byte sub_802D90C - thumb_func_end sub_802DDC4 - - thumb_func_start sub_802DE10 -sub_802DE10: @ 802DE10 - push {r4-r6,lr} - ldr r6, _0802DE94 @ =gSprites - ldr r5, _0802DE98 @ =gObjectBankIDs - ldr r4, _0802DE9C @ =gActiveBank - ldrb r2, [r4] - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r3, 0x22 - ldrsh r1, [r0, r3] - movs r3, 0x26 - ldrsh r0, [r0, r3] - adds r1, r0 - cmp r1, 0xA0 - ble _0802DE8C - ldr r1, _0802DEA0 @ =gBattlePartyID - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802DEA4 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl nullsub_9 - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r1, _0802DEA8 @ =gHealthboxIDs - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl PlayerBufferExecCompleted -_0802DE8C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802DE94: .4byte gSprites -_0802DE98: .4byte gObjectBankIDs -_0802DE9C: .4byte gActiveBank -_0802DEA0: .4byte gBattlePartyID -_0802DEA4: .4byte gPlayerParty -_0802DEA8: .4byte gHealthboxIDs - thumb_func_end sub_802DE10 - - thumb_func_start sub_802DEAC -sub_802DEAC: @ 802DEAC - push {r4-r6,lr} - ldr r6, _0802DF04 @ =gActiveBank - ldrb r2, [r6] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _0802DF08 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802DEFC - ldr r5, _0802DF0C @ =gObjectBankIDs - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0802DF10 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _0802DF14 @ =gHealthboxIDs - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl PlayerBufferExecCompleted -_0802DEFC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802DF04: .4byte gActiveBank -_0802DF08: .4byte 0x02017810 -_0802DF0C: .4byte gObjectBankIDs -_0802DF10: .4byte gSprites -_0802DF14: .4byte gHealthboxIDs - thumb_func_end sub_802DEAC - - thumb_func_start sub_802DF18 -sub_802DF18: @ 802DF18 - push {lr} - ldr r0, _0802DF2C @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _0802DF26 - bl PlayerBufferExecCompleted -_0802DF26: - pop {r0} - bx r0 - .align 2, 0 -_0802DF2C: .4byte gUnknown_03004210 - thumb_func_end sub_802DF18 - - thumb_func_start sub_802DF30 -sub_802DF30: @ 802DF30 - push {r4,lr} - ldr r0, _0802DF70 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802DF6A - ldr r1, _0802DF74 @ =gBattleBankFunc - ldr r2, _0802DF78 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802DF7C @ =sub_802DF88 - str r1, [r0] - ldr r3, _0802DF80 @ =gTasks - ldr r1, _0802DF84 @ =gUnknown_0300434C - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldrb r4, [r1, 0x8] - bl DestroyTask - adds r0, r4, 0 - bl sub_8094E20 -_0802DF6A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802DF70: .4byte gPaletteFade -_0802DF74: .4byte gBattleBankFunc -_0802DF78: .4byte gActiveBank -_0802DF7C: .4byte sub_802DF88 -_0802DF80: .4byte gTasks -_0802DF84: .4byte gUnknown_0300434C - thumb_func_end sub_802DF30 - - thumb_func_start sub_802DF88 -sub_802DF88: @ 802DF88 - push {lr} - ldr r0, _0802DFB8 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0802DFBC @ =sub_800F808 - cmp r1, r0 - bne _0802DFF8 - ldr r0, _0802DFC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802DFF8 - ldr r0, _0802DFC4 @ =gUnknown_0202E8F4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0802DFD0 - ldr r0, _0802DFC8 @ =gUnknown_0202E8F5 - ldrb r1, [r0] - ldr r2, _0802DFCC @ =gUnknown_02038470 - movs r0, 0x1 - bl dp01_build_cmdbuf_x22_a_three_bytes - b _0802DFDA - .align 2, 0 -_0802DFB8: .4byte gMain -_0802DFBC: .4byte sub_800F808 -_0802DFC0: .4byte gPaletteFade -_0802DFC4: .4byte gUnknown_0202E8F4 -_0802DFC8: .4byte gUnknown_0202E8F5 -_0802DFCC: .4byte gUnknown_02038470 -_0802DFD0: - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes -_0802DFDA: - ldr r1, _0802DFFC @ =gBattleBufferA - ldr r0, _0802E000 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _0802DFF4 - bl b_link_standby_message -_0802DFF4: - bl PlayerBufferExecCompleted -_0802DFF8: - pop {r0} - bx r0 - .align 2, 0 -_0802DFFC: .4byte gBattleBufferA -_0802E000: .4byte gActiveBank - thumb_func_end sub_802DF88 - - thumb_func_start sub_802E004 -sub_802E004: @ 802E004 - push {lr} - ldr r0, _0802E02C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802E028 - ldr r1, _0802E030 @ =gBattleBankFunc - ldr r0, _0802E034 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802E038 @ =sub_802E03C - str r1, [r0] - bl nullsub_14 - bl sub_80A6DCC -_0802E028: - pop {r0} - bx r0 - .align 2, 0 -_0802E02C: .4byte gPaletteFade -_0802E030: .4byte gBattleBankFunc -_0802E034: .4byte gActiveBank -_0802E038: .4byte sub_802E03C - thumb_func_end sub_802E004 - - thumb_func_start sub_802E03C -sub_802E03C: @ 802E03C - push {lr} - ldr r0, _0802E068 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0802E06C @ =sub_800F808 - cmp r1, r0 - bne _0802E062 - ldr r0, _0802E070 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802E062 - ldr r0, _0802E074 @ =gScriptItemId - ldrh r1, [r0] - movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 - bl PlayerBufferExecCompleted -_0802E062: - pop {r0} - bx r0 - .align 2, 0 -_0802E068: .4byte gMain -_0802E06C: .4byte sub_800F808 -_0802E070: .4byte gPaletteFade -_0802E074: .4byte gScriptItemId - thumb_func_end sub_802E03C - - thumb_func_start bx_wait_t1 -bx_wait_t1: @ 802E078 - push {lr} - ldr r0, _0802E0A4 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - beq _0802E09A - ldr r0, _0802E0A8 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802E0AC @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802E09E -_0802E09A: - bl PlayerBufferExecCompleted -_0802E09E: - pop {r0} - bx r0 - .align 2, 0 -_0802E0A4: .4byte gDoingBattleAnim -_0802E0A8: .4byte gActiveBank -_0802E0AC: .4byte 0x02017810 - thumb_func_end bx_wait_t1 - - thumb_func_start bx_blink_t1 -bx_blink_t1: @ 802E0B0 - push {r4,lr} - ldr r1, _0802E0EC @ =gObjectBankIDs - ldr r0, _0802E0F0 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _0802E0F4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _0802E0FC - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _0802E0F8 @ =gDoingBattleAnim - strb r3, [r0] - bl PlayerBufferExecCompleted - b _0802E126 - .align 2, 0 -_0802E0EC: .4byte gObjectBankIDs -_0802E0F0: .4byte gActiveBank -_0802E0F4: .4byte gSprites -_0802E0F8: .4byte gDoingBattleAnim -_0802E0FC: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0802E120 - 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] -_0802E120: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_0802E126: - pop {r4} - pop {r0} - bx r0 - thumb_func_end bx_blink_t1 - - thumb_func_start sub_802E12C -sub_802E12C: @ 802E12C - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r0, _0802E180 @ =gActiveBank - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _0802E184 @ =gUnknown_02023A64 - adds r4, r0 - ldr r5, _0802E188 @ =gDisplayedStringBattle - adds r0, r5, 0 - bl StringCopy - lsls r0, r6, 1 - adds r4, r0 - ldrh r1, [r4] - movs r0, 0xD - muls r1, r0 - ldr r0, _0802E18C @ =gMoveNames - adds r1, r0 - adds r0, r5, 0 - bl StringAppend - ldr r4, _0802E190 @ =gUnknown_03004210 - adds r1, r5, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 18 - movs r2, 0xC0 - lsls r2, 18 - adds r0, r2 - lsrs r2, r0, 16 - movs r0, 0x1 - ands r0, r6 - movs r3, 0x1 - cmp r0, 0 - beq _0802E176 - movs r3, 0xB -_0802E176: - cmp r6, 0x1 - bgt _0802E194 - movs r0, 0x37 - b _0802E196 - .align 2, 0 -_0802E180: .4byte gActiveBank -_0802E184: .4byte gUnknown_02023A64 -_0802E188: .4byte gDisplayedStringBattle -_0802E18C: .4byte gMoveNames -_0802E190: .4byte gUnknown_03004210 -_0802E194: - movs r0, 0x39 -_0802E196: - str r0, [sp] - adds r0, r4, 0 - bl InitWindow - ldr r0, _0802E1AC @ =gUnknown_03004210 - bl sub_8002F44 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802E1AC: .4byte gUnknown_03004210 - thumb_func_end sub_802E12C - - thumb_func_start sub_802E1B0 -sub_802E1B0: @ 802E1B0 - push {r4-r6,lr} - sub sp, 0x8 - ldr r0, _0802E208 @ =gActiveBank - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _0802E20C @ =gUnknown_02023A64 - adds r4, r0 - ldr r5, _0802E210 @ =gUnknown_03004348 - movs r0, 0 - strb r0, [r5] - ldr r0, _0802E214 @ =gUnknown_03004210 - ldr r1, _0802E218 @ =0x00001016 - movs r2, 0x14 - str r2, [sp] - movs r2, 0x3A - str r2, [sp, 0x4] - movs r2, 0x1 - movs r3, 0x37 - bl FillWindowRect - movs r6, 0 -_0802E1DA: - lsls r0, r6, 24 - lsrs r0, 24 - bl nullsub_7 - adds r0, r6, 0 - ldr r1, _0802E21C @ =gUnknown_08400D49 - bl sub_802E12C - ldrh r0, [r4] - cmp r0, 0 - beq _0802E1F6 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] -_0802E1F6: - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802E1DA - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802E208: .4byte gActiveBank -_0802E20C: .4byte gUnknown_02023A64 -_0802E210: .4byte gUnknown_03004348 -_0802E214: .4byte gUnknown_03004210 -_0802E218: .4byte 0x00001016 -_0802E21C: .4byte gUnknown_08400D49 - thumb_func_end sub_802E1B0 - - thumb_func_start sub_802E220 -sub_802E220: @ 802E220 - push {r4-r6,lr} - sub sp, 0x4 - ldr r4, _0802E2B8 @ =gBattleBufferA - ldr r6, _0802E2BC @ =gActiveBank - ldrb r0, [r6] - lsls r1, r0, 9 - adds r0, r4, 0x2 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0802E2B0 - adds r4, 0x4 - adds r4, r1, r4 - ldr r2, _0802E2C0 @ =gDisplayedStringBattle - ldr r1, _0802E2C4 @ =gUnknown_08400D49 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - movs r1, 0xFC - strb r1, [r2] - movs r0, 0x11 - strb r0, [r2, 0x1] - movs r0, 0x2 - strb r0, [r2, 0x2] - adds r2, 0x3 - strb r1, [r2] - movs r0, 0x14 - strb r0, [r2, 0x1] - movs r0, 0x6 - strb r0, [r2, 0x2] - adds r2, 0x3 - ldr r5, _0802E2C8 @ =gMoveSelectionCursor - ldrb r1, [r6] - adds r1, r5 - adds r0, r4, 0 - adds r0, 0x8 - ldrb r1, [r1] - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r2, r0, 0 - movs r0, 0xBA - strb r0, [r2] - adds r2, 0x1 - ldrb r0, [r6] - adds r0, r5 - adds r4, 0xC - ldrb r0, [r0] - adds r4, r0 - ldrb r1, [r4] - adds r0, r2, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r4, _0802E2CC @ =gUnknown_03004210 - ldr r1, _0802E2C0 @ =gDisplayedStringBattle - ldr r2, _0802E2D0 @ =0x000002a2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x19 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 -_0802E2B0: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802E2B8: .4byte gBattleBufferA -_0802E2BC: .4byte gActiveBank -_0802E2C0: .4byte gDisplayedStringBattle -_0802E2C4: .4byte gUnknown_08400D49 -_0802E2C8: .4byte gMoveSelectionCursor -_0802E2CC: .4byte gUnknown_03004210 -_0802E2D0: .4byte 0x000002a2 - thumb_func_end sub_802E220 - - thumb_func_start sub_802E2D4 -sub_802E2D4: @ 802E2D4 - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, _0802E314 @ =gBattleBufferA - ldr r5, _0802E318 @ =gActiveBank - ldrb r0, [r5] - lsls r1, r0, 9 - adds r0, r4, 0x2 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0802E328 - ldr r4, _0802E31C @ =gUnknown_03004210 - ldr r1, _0802E320 @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x37 - bl FillWindowRect - ldr r1, _0802E324 @ =gUnknown_08400D52 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x13 - bl InitWindow - b _0802E388 - .align 2, 0 -_0802E314: .4byte gBattleBufferA -_0802E318: .4byte gActiveBank -_0802E31C: .4byte gUnknown_03004210 -_0802E320: .4byte 0x00001016 -_0802E324: .4byte gUnknown_08400D52 -_0802E328: - adds r4, 0x4 - adds r4, r1, r4 - ldr r3, _0802E398 @ =gDisplayedStringBattle - ldr r1, _0802E39C @ =gUnknown_08400D49 - adds r0, r3, 0 - bl StringCopy - adds r3, r0, 0 - ldr r2, _0802E3A0 @ =gBattleMoves - ldr r1, _0802E3A4 @ =gMoveSelectionCursor - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r0 - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _0802E3A8 @ =gTypeNames - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - ldr r4, _0802E3AC @ =gUnknown_03004210 - ldr r1, _0802E3B0 @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x39 - bl FillWindowRect - ldr r1, _0802E398 @ =gDisplayedStringBattle - movs r2, 0xB0 - lsls r2, 2 - movs r0, 0x39 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow -_0802E388: - ldr r0, _0802E3AC @ =gUnknown_03004210 - bl sub_8002F44 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802E398: .4byte gDisplayedStringBattle -_0802E39C: .4byte gUnknown_08400D49 -_0802E3A0: .4byte gBattleMoves -_0802E3A4: .4byte gMoveSelectionCursor -_0802E3A8: .4byte gTypeNames -_0802E3AC: .4byte gUnknown_03004210 -_0802E3B0: .4byte 0x00001016 - thumb_func_end sub_802E2D4 - - thumb_func_start sub_802E3B4 -sub_802E3B4: @ 802E3B4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x48 - bl sub_814A958 - ldr r1, _0802E3DC @ =gUnknown_081FAE89 - lsls r4, 1 - adds r0, r4, r1 - ldrb r0, [r0] - adds r1, 0x1 - adds r4, r1 - ldrb r1, [r4] - bl sub_814A880 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802E3DC: .4byte gUnknown_081FAE89 - thumb_func_end sub_802E3B4 - - thumb_func_start nullsub_7 -nullsub_7: @ 802E3E0 - bx lr - thumb_func_end nullsub_7 - - thumb_func_start sub_802E3E4 -sub_802E3E4: @ 802E3E4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2A - bl sub_814A958 - ldr r1, _0802E40C @ =gUnknown_081FAE91 - lsls r4, 1 - adds r0, r4, r1 - ldrb r0, [r0] - adds r1, 0x1 - adds r4, r1 - ldrb r1, [r4] - bl sub_814A880 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802E40C: .4byte gUnknown_081FAE91 - thumb_func_end sub_802E3E4 - - thumb_func_start nullsub_8 -nullsub_8: @ 802E410 - bx lr - thumb_func_end nullsub_8 - - thumb_func_start sub_802E414 -sub_802E414: @ 802E414 - push {lr} - ldr r0, _0802E420 @ =ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0802E420: .4byte ReshowBattleScreenAfterMenu - thumb_func_end sub_802E414 - - thumb_func_start sub_802E424 -sub_802E424: @ 802E424 - push {lr} - ldr r0, _0802E430 @ =ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0802E430: .4byte ReshowBattleScreenAfterMenu - thumb_func_end sub_802E424 - - thumb_func_start sub_802E434 -sub_802E434: @ 802E434 - push {lr} - ldr r0, _0802E458 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802E45C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0802E452 - bl PlayerBufferExecCompleted -_0802E452: - pop {r0} - bx r0 - .align 2, 0 -_0802E458: .4byte gActiveBank -_0802E45C: .4byte 0x02017810 - thumb_func_end sub_802E434 - - thumb_func_start sub_802E460 -sub_802E460: @ 802E460 - push {lr} - ldr r0, _0802E484 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802E488 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0802E47E - bl PlayerBufferExecCompleted -_0802E47E: - pop {r0} - bx r0 - .align 2, 0 -_0802E484: .4byte gActiveBank -_0802E488: .4byte 0x02017810 - thumb_func_end sub_802E460 - - thumb_func_start b_link_standby_message -b_link_standby_message: @ 802E48C - push {lr} - sub sp, 0x4 - ldr r0, _0802E4BC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802E4B6 - ldr r0, _0802E4C0 @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _0802E4C4 @ =gUnknown_030042A0 - strh r1, [r0] - ldr r0, _0802E4C8 @ =gUnknown_03004210 - ldr r1, _0802E4CC @ =gUnknown_08400CE0 - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 -_0802E4B6: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0802E4BC: .4byte gBattleTypeFlags -_0802E4C0: .4byte gUnknown_030042A4 -_0802E4C4: .4byte gUnknown_030042A0 -_0802E4C8: .4byte gUnknown_03004210 -_0802E4CC: .4byte gUnknown_08400CE0 - thumb_func_end b_link_standby_message - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_9.s b/asm/battle_9.s index fffb56dc9..e92c2db33 100644 --- a/asm/battle_9.s +++ b/asm/battle_9.s @@ -6,8 +6,8 @@ .text - thumb_func_start ai_switch_perish_song -ai_switch_perish_song: @ 8035FEC + thumb_func_start AI_SwitchIfPerishSong +AI_SwitchIfPerishSong: @ 8035FEC push {lr} ldr r1, _08036038 @ =gStatuses3 ldr r0, _0803603C @ =gActiveBank @@ -41,7 +41,7 @@ ai_switch_perish_song: @ 8035FEC movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl Emitcmd33 movs r0, 0x1 b _0803604E .align 2, 0 @@ -55,10 +55,10 @@ _0803604C: _0803604E: pop {r1} bx r1 - thumb_func_end ai_switch_perish_song + thumb_func_end AI_SwitchIfPerishSong - thumb_func_start sub_8036054 -sub_8036054: @ 8036054 + thumb_func_start AI_SwitchIfWonderguard +AI_SwitchIfWonderguard: @ 8036054 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -86,7 +86,7 @@ _08036070: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl Emitcmd33 movs r0, 0x1 b _080361CA .align 2, 0 @@ -136,7 +136,7 @@ _080360D8: ldrh r1, [r4] mov r3, r8 ldrb r2, [r3] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -211,7 +211,7 @@ _0803617C: beq _080361BC ldrh r1, [r5] ldrb r2, [r7] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -250,7 +250,7 @@ _080361D8: .4byte gBattleMons _080361DC: .4byte gActiveBank _080361E0: .4byte gEnemyParty _080361E4: .4byte gBattlePartyID - thumb_func_end sub_8036054 + thumb_func_end AI_SwitchIfWonderguard thumb_func_start sub_80361E8 sub_80361E8: @ 80361E8 @@ -410,7 +410,7 @@ _0803630C: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl Emitcmd33 movs r0, 0x1 b _08036402 .align 2, 0 @@ -521,8 +521,8 @@ _08036402: bx r1 thumb_func_end sub_80361E8 - thumb_func_start ai_switchout_natural_cure -ai_switchout_natural_cure: @ 8036410 + thumb_func_start AI_SwitchIfNaturalCure +AI_SwitchIfNaturalCure: @ 8036410 push {r4,r5,lr} ldr r3, _08036468 @ =gBattleMons ldr r5, _0803646C @ =gActiveBank @@ -634,7 +634,7 @@ _080364E0: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl Emitcmd33 _080364FE: movs r0, 0x1 _08036500: @@ -645,7 +645,7 @@ _08036500: _08036508: .4byte gActiveBank _0803650C: .4byte 0x02000000 _08036510: .4byte 0x000160c8 - thumb_func_end ai_switchout_natural_cure + thumb_func_end AI_SwitchIfNaturalCure thumb_func_start ai_has_super_effective_move_on_field ai_has_super_effective_move_on_field: @ 8036514 @@ -693,7 +693,7 @@ _08036550: ldrh r1, [r5] mov r3, r9 ldrb r2, [r3] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -770,7 +770,7 @@ _080365F2: ldrh r1, [r5] mov r3, r9 ldrb r2, [r3] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -808,8 +808,8 @@ _08036654: .4byte gBattleMons _08036658: .4byte gActiveBank thumb_func_end ai_has_super_effective_move_on_field - thumb_func_start ai_is_too_invested_in_stat_buffs -ai_is_too_invested_in_stat_buffs: @ 803665C + thumb_func_start AI_AreStatsRaised +AI_AreStatsRaised: @ 803665C push {r4,lr} movs r4, 0 ldr r1, _0803669C @ =gBattleMons @@ -848,7 +848,7 @@ _08036696: .align 2, 0 _0803669C: .4byte gBattleMons _080366A0: .4byte gActiveBank - thumb_func_end ai_is_too_invested_in_stat_buffs + thumb_func_end AI_AreStatsRaised thumb_func_start sub_80366A4 sub_80366A4: @ 80366A4 @@ -958,7 +958,7 @@ _08036768: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl Emitcmd33 movs r0, 0x1 b _080368DA .align 2, 0 @@ -1061,7 +1061,7 @@ _08036850: adds r0, r1 ldrh r0, [r0] adds r1, r4, 0 - bl ai_rate_move + bl AI_TypeCalc ldr r1, [sp] ands r1, r0 cmp r1, 0 @@ -1096,7 +1096,7 @@ _0803688E: beq _080368CA ldrh r1, [r5] ldrb r2, [r7] - bl ai_rate_move + bl AI_TypeCalc lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 @@ -1140,8 +1140,8 @@ _080368FC: .4byte gBattleMons _08036900: .4byte gEnemyParty thumb_func_end sub_80366A4 - thumb_func_start sub_8036904 -sub_8036904: @ 8036904 + thumb_func_start AI_ShouldSwitch +AI_ShouldSwitch: @ 8036904 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1331,11 +1331,11 @@ _08036A7E: mov r2, r8 cmp r2, 0 beq _08036AFC - bl ai_switch_perish_song + bl AI_SwitchIfPerishSong lsls r0, 24 cmp r0, 0 bne _08036AE4 - bl sub_8036054 + bl AI_SwitchIfWonderguard lsls r0, 24 cmp r0, 0 bne _08036AE4 @@ -1343,7 +1343,7 @@ _08036A7E: lsls r0, 24 cmp r0, 0 bne _08036AE4 - bl ai_switchout_natural_cure + bl AI_SwitchIfNaturalCure lsls r0, 24 cmp r0, 0 bne _08036AE4 @@ -1352,7 +1352,7 @@ _08036A7E: lsls r0, 24 cmp r0, 0 bne _08036AFC - bl ai_is_too_invested_in_stat_buffs + bl AI_AreStatsRaised lsls r0, 24 cmp r0, 0 bne _08036AFC @@ -1386,7 +1386,7 @@ _08036AFE: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_8036904 + thumb_func_end AI_ShouldSwitch thumb_func_start sub_8036B0C sub_8036B0C: @ 8036B0C @@ -1399,7 +1399,7 @@ sub_8036B0C: @ 8036B0C bne _08036B1C b _08036C2E _08036B1C: - bl sub_8036904 + bl AI_ShouldSwitch lsls r0, 24 cmp r0, 0 bne _08036B28 @@ -1521,7 +1521,7 @@ _08036C18: .4byte 0x00016068 _08036C1C: .4byte gActiveBank _08036C20: .4byte 0x000160c8 _08036C24: - bl sub_803708C + bl AI_ShouldUseItem lsls r0, 24 cmp r0, 0 bne _08036C40 @@ -1533,7 +1533,7 @@ _08036C2E: lsls r2, 8 movs r0, 0x1 movs r1, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl Emitcmd33 _08036C40: pop {r4-r6} pop {r0} @@ -2083,8 +2083,8 @@ _08037086: bx r1 thumb_func_end ai_identify_item_effect - thumb_func_start sub_803708C -sub_803708C: @ 803708C + thumb_func_start AI_ShouldUseItem +AI_ShouldUseItem: @ 803708C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2623,7 +2623,7 @@ _080374AE: movs r0, 0x1 movs r1, 0x1 movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb + bl Emitcmd33 ldr r1, _080374DC @ =0x02000000 ldr r0, _080374E0 @ =gActiveBank ldrb r0, [r0] @@ -2665,1416 +2665,6 @@ _080374FA: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_803708C - - thumb_func_start nullsub_47 -nullsub_47: @ 803750C - bx lr - thumb_func_end nullsub_47 - - thumb_func_start SetBankFuncToLinkOpponentBufferRunCommand -SetBankFuncToLinkOpponentBufferRunCommand: @ 8037510 - ldr r1, _08037520 @ =gBattleBankFunc - ldr r0, _08037524 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037528 @ =sub_803752C - str r1, [r0] - bx lr - .align 2, 0 -_08037520: .4byte gBattleBankFunc -_08037524: .4byte gActiveBank -_08037528: .4byte sub_803752C - thumb_func_end SetBankFuncToLinkOpponentBufferRunCommand - - thumb_func_start sub_803752C -sub_803752C: @ 803752C - push {lr} - ldr r2, _08037560 @ =gBattleExecBuffer - ldr r1, _08037564 @ =gBitTable - ldr r0, _08037568 @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08037578 - ldr r0, _0803756C @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _08037574 - ldr r0, _08037570 @ =gLinkOpponentBufferCommands - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _08037578 - .align 2, 0 -_08037560: .4byte gBattleExecBuffer -_08037564: .4byte gBitTable -_08037568: .4byte gActiveBank -_0803756C: .4byte gBattleBufferA -_08037570: .4byte gLinkOpponentBufferCommands -_08037574: - bl dp01_tbl4_exec_completed -_08037578: - pop {r0} - bx r0 - thumb_func_end sub_803752C - - thumb_func_start sub_803757C -sub_803757C: @ 803757C - push {lr} - ldr r2, _080375A4 @ =gSprites - ldr r1, _080375A8 @ =gObjectBankIDs - ldr r0, _080375AC @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080375B0 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080375A0 - bl dp01_tbl4_exec_completed -_080375A0: - pop {r0} - bx r0 - .align 2, 0 -_080375A4: .4byte gSprites -_080375A8: .4byte gObjectBankIDs -_080375AC: .4byte gActiveBank -_080375B0: .4byte SpriteCallbackDummy - thumb_func_end sub_803757C - - thumb_func_start sub_80375B4 -sub_80375B4: @ 80375B4 - push {r4-r6,lr} - ldr r4, _0803762C @ =gSprites - ldr r6, _08037630 @ =gObjectBankIDs - ldr r5, _08037634 @ =gActiveBank - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r2, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r2, r0 - ldr r1, [r0] - ldr r0, _08037638 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08037624 - adds r0, r2, r4 - ldrh r0, [r0, 0x6] - bl sub_8031B74 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x38] - ldr r2, _0803763C @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _08037640 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - bl dp01_tbl4_exec_completed -_08037624: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803762C: .4byte gSprites -_08037630: .4byte gObjectBankIDs -_08037634: .4byte gActiveBank -_08037638: .4byte SpriteCallbackDummy -_0803763C: .4byte 0x000003ff -_08037640: .4byte 0xfffffc00 - thumb_func_end sub_80375B4 - - thumb_func_start sub_8037644 -sub_8037644: @ 8037644 - push {lr} - ldr r3, _08037678 @ =gActiveBank - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, _0803767C @ =0x02017810 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08037674 - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0 - strb r0, [r1, 0x9] - bl dp01_tbl4_exec_completed -_08037674: - pop {r0} - bx r0 - .align 2, 0 -_08037678: .4byte gActiveBank -_0803767C: .4byte 0x02017810 - thumb_func_end sub_8037644 - - thumb_func_start sub_8037680 -sub_8037680: @ 8037680 - push {r4-r7,lr} - movs r6, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080376A4 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080376D8 - ldr r0, _080376C4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080376D8 -_080376A4: - ldr r2, _080376C8 @ =gSprites - ldr r1, _080376CC @ =gHealthboxIDs - ldr r0, _080376D0 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080376D4 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0803770E - b _0803770C - .align 2, 0 -_080376C4: .4byte gBattleTypeFlags -_080376C8: .4byte gSprites -_080376CC: .4byte gHealthboxIDs -_080376D0: .4byte gActiveBank -_080376D4: .4byte SpriteCallbackDummy -_080376D8: - ldr r2, _080377D8 @ =gSprites - ldr r5, _080377DC @ =gHealthboxIDs - ldr r0, _080377E0 @ =gActiveBank - ldrb r3, [r0] - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r4, [r0] - ldr r0, _080377E4 @ =SpriteCallbackDummy - cmp r4, r0 - bne _0803770E - movs r0, 0x2 - eors r3, r0 - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, r4 - bne _0803770E -_0803770C: - movs r6, 0x1 -_0803770E: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _0803771A - movs r6, 0 -_0803771A: - cmp r6, 0 - bne _08037720 - b _08037822 -_08037720: - ldr r7, _080377E0 @ =gActiveBank - ldrb r0, [r7] - bl GetBankIdentity - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1 - bne _080377B4 - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r5, _080377E8 @ =0x02017810 - adds r4, r0, r5 - ldrb r1, [r4, 0x1] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08037822 - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08037822 - ldrb r1, [r4] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _080377EC @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag -_080377B4: - ldr r0, _080377F0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080377F8 - ldrb r0, [r7] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08037804 - ldr r0, _080377F4 @ =gMPlay_BGM - bl m4aMPlayContinue - b _08037804 - .align 2, 0 -_080377D8: .4byte gSprites -_080377DC: .4byte gHealthboxIDs -_080377E0: .4byte gActiveBank -_080377E4: .4byte SpriteCallbackDummy -_080377E8: .4byte 0x02017810 -_080377EC: .4byte 0x000027f9 -_080377F0: .4byte gBattleTypeFlags -_080377F4: .4byte gMPlay_BGM -_080377F8: - ldr r0, _08037828 @ =gMPlay_BGM - ldr r1, _0803782C @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_08037804: - ldr r2, _08037830 @ =gActiveBank - ldrb r1, [r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08037834 @ =0x02017810 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0, 0x9] - ldr r1, _08037838 @ =gBattleBankFunc - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803783C @ =sub_8037644 - str r1, [r0] -_08037822: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08037828: .4byte gMPlay_BGM -_0803782C: .4byte 0x0000ffff -_08037830: .4byte gActiveBank -_08037834: .4byte 0x02017810 -_08037838: .4byte gBattleBankFunc -_0803783C: .4byte sub_8037644 - thumb_func_end sub_8037680 - - thumb_func_start sub_8037840 -sub_8037840: @ 8037840 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r6, _08037A48 @ =gActiveBank - ldrb r2, [r6] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r5, _08037A4C @ =0x02017810 - adds r0, r5 - ldrb r1, [r0] - movs r4, 0x88 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _08037878 - ldr r0, _08037A50 @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08037A54 @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08037878: - ldrb r0, [r6] - movs r7, 0x2 - adds r2, r7, 0 - eors r2, r0 - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080378A6 - ldr r0, _08037A50 @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08037A54 @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_080378A6: - ldrb r2, [r6] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - movs r3, 0x8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080378BE - b _08037A3A -_080378BE: - adds r1, r2, 0 - eors r1, r7 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080378DA - b _08037A3A -_080378DA: - ldr r0, _08037A58 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803791A - adds r0, r2, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0803791A - ldrb r0, [r6] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r1, 0x9] - adds r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803790E - b _08037A3A -_0803790E: - ldrb r1, [r6] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strb r4, [r0, 0x9] -_0803791A: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080379B2 - ldr r0, _08037A58 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080379B2 - ldr r1, _08037A5C @ =gUnknown_0300434C - ldr r5, _08037A48 @ =gActiveBank - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08037A60 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r0, _08037A64 @ =gHealthboxIDs - mov r8, r0 - ldrb r0, [r5] - adds r1, r4, 0 - eors r1, r0 - mov r2, r8 - adds r0, r1, r2 - ldrb r0, [r0] - ldr r2, _08037A50 @ =gBattlePartyID - mov r10, r2 - lsls r1, 1 - add r1, r10 - ldrh r1, [r1] - movs r2, 0x64 - mov r9, r2 - mov r2, r9 - muls r2, r1 - adds r1, r2, 0 - ldr r6, _08037A54 @ =gEnemyParty - adds r1, r6 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - eors r0, r4 - bl sub_804777C - ldrb r0, [r5] - eors r0, r4 - add r0, r8 - ldrb r0, [r0] - bl sub_8043DFC - ldrb r0, [r5] - eors r4, r0 - lsls r0, r4, 1 - add r0, r10 - ldrh r0, [r0] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 -_080379B2: - ldr r1, _08037A5C @ =gUnknown_0300434C - ldr r4, _08037A48 @ =gActiveBank - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08037A60 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _08037A64 @ =gHealthboxIDs - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _08037A50 @ =gBattlePartyID - mov r9, r2 - lsls r1, 1 - add r1, r9 - ldrh r1, [r1] - movs r2, 0x64 - mov r8, r2 - mov r2, r8 - muls r2, r1 - adds r1, r2, 0 - ldr r6, _08037A54 @ =gEnemyParty - adds r1, r6 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r4] - bl sub_804777C - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - ldrb r5, [r4] - lsls r0, r5, 1 - add r0, r9 - ldrh r0, [r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_8032984 - ldr r2, _08037A68 @ =0x02017840 - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _08037A6C @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037A70 @ =sub_8037680 - str r1, [r0] -_08037A3A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08037A48: .4byte gActiveBank -_08037A4C: .4byte 0x02017810 -_08037A50: .4byte gBattlePartyID -_08037A54: .4byte gEnemyParty -_08037A58: .4byte gBattleTypeFlags -_08037A5C: .4byte gUnknown_0300434C -_08037A60: .4byte gSprites -_08037A64: .4byte gHealthboxIDs -_08037A68: .4byte 0x02017840 -_08037A6C: .4byte gBattleBankFunc -_08037A70: .4byte sub_8037680 - thumb_func_end sub_8037840 - - thumb_func_start sub_8037A74 -sub_8037A74: @ 8037A74 - push {r4-r7,lr} - ldr r2, _08037ACC @ =gSprites - ldr r0, _08037AD0 @ =gObjectBankIDs - ldr r7, _08037AD4 @ =gActiveBank - ldrb r3, [r7] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - lsrs r2, r0, 31 - cmp r2, 0x1 - bne _08037B18 - movs r4, 0x24 - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _08037B18 - lsls r4, r3, 1 - adds r0, r4, r3 - lsls r0, 2 - ldr r6, _08037AD8 @ =0x02017810 - adds r1, r0, r6 - ldrb r5, [r1] - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - bne _08037AE4 - ldr r0, _08037ADC @ =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08037AE0 @ =gEnemyParty - adds r1, r0 - adds r0, r3, 0 - bl sub_8141828 - b _08037B18 - .align 2, 0 -_08037ACC: .4byte gSprites -_08037AD0: .4byte gObjectBankIDs -_08037AD4: .4byte gActiveBank -_08037AD8: .4byte 0x02017810 -_08037ADC: .4byte gBattlePartyID -_08037AE0: .4byte gEnemyParty -_08037AE4: - ldrb r0, [r1, 0x1] - ands r2, r0 - cmp r2, 0 - beq _08037B18 - movs r0, 0x7F - ands r0, r5 - strb r0, [r1] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _08037B20 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - bl dp01_tbl4_exec_completed -_08037B18: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08037B20: .4byte 0x000027f9 - thumb_func_end sub_8037A74 - - thumb_func_start sub_8037B24 -sub_8037B24: @ 8037B24 - push {r4-r6,lr} - ldr r6, _08037B64 @ =gActiveBank - ldrb r0, [r6] - ldr r5, _08037B68 @ =gHealthboxIDs - adds r1, r0, r5 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl sub_8045C78 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r6] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08037B6C - ldrb r0, [r6] - adds r0, r5 - ldrb r0, [r0] - movs r2, 0 - bl sub_80440EC - b _08037B70 - .align 2, 0 -_08037B64: .4byte gActiveBank -_08037B68: .4byte gHealthboxIDs -_08037B6C: - bl dp01_tbl4_exec_completed -_08037B70: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8037B24 - - thumb_func_start sub_8037B78 -sub_8037B78: @ 8037B78 - push {lr} - ldr r2, _08037BAC @ =gSprites - ldr r0, _08037BB0 @ =gObjectBankIDs - ldr r1, _08037BB4 @ =gActiveBank - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _08037BA6 - ldr r0, _08037BB8 @ =gHealthboxIDs - adds r0, r3, r0 - ldrb r0, [r0] - bl sub_8043DB0 - bl dp01_tbl4_exec_completed -_08037BA6: - pop {r0} - bx r0 - .align 2, 0 -_08037BAC: .4byte gSprites -_08037BB0: .4byte gObjectBankIDs -_08037BB4: .4byte gActiveBank -_08037BB8: .4byte gHealthboxIDs - thumb_func_end sub_8037B78 - - thumb_func_start sub_8037BBC -sub_8037BBC: @ 8037BBC - push {r4-r6,lr} - ldr r6, _08037C18 @ =gActiveBank - ldrb r2, [r6] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _08037C1C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08037C12 - ldr r5, _08037C20 @ =gObjectBankIDs - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08037C24 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldrb r0, [r6] - bl sub_8032A08 - ldr r1, _08037C28 @ =gHealthboxIDs - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl dp01_tbl4_exec_completed -_08037C12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08037C18: .4byte gActiveBank -_08037C1C: .4byte 0x02017810 -_08037C20: .4byte gObjectBankIDs -_08037C24: .4byte gSprites -_08037C28: .4byte gHealthboxIDs - thumb_func_end sub_8037BBC - - thumb_func_start sub_8037C2C -sub_8037C2C: @ 8037C2C - push {lr} - ldr r0, _08037C40 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _08037C3A - bl dp01_tbl4_exec_completed -_08037C3A: - pop {r0} - bx r0 - .align 2, 0 -_08037C40: .4byte gUnknown_03004210 - thumb_func_end sub_8037C2C - - thumb_func_start dp01t_0F_4_move_anim -dp01t_0F_4_move_anim: @ 8037C44 - push {r4,lr} - ldr r1, _08037C80 @ =gObjectBankIDs - ldr r0, _08037C84 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _08037C88 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _08037C90 - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _08037C8C @ =gDoingBattleAnim - strb r3, [r0] - bl dp01_tbl4_exec_completed - b _08037CBA - .align 2, 0 -_08037C80: .4byte gObjectBankIDs -_08037C84: .4byte gActiveBank -_08037C88: .4byte gSprites -_08037C8C: .4byte gDoingBattleAnim -_08037C90: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08037CB4 - 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] -_08037CB4: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_08037CBA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end dp01t_0F_4_move_anim - - thumb_func_start sub_8037CC0 -sub_8037CC0: @ 8037CC0 - push {r4,lr} - ldr r2, _08037D10 @ =gSprites - ldr r0, _08037D14 @ =gHealthboxIDs - ldr r4, _08037D18 @ =gActiveBank - ldrb r3, [r4] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08037D1C @ =SpriteCallbackDummy - cmp r1, r0 - bne _08037D08 - lsls r0, r3, 2 - ldr r1, _08037D20 @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08037CFC - adds r0, r3, 0 - adds r1, r3, 0 - adds r2, r3, 0 - movs r3, 0x6 - bl move_anim_start_t4 -_08037CFC: - ldr r0, _08037D24 @ =gBattleBankFunc - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _08037D28 @ =sub_8037D2C - str r0, [r1] -_08037D08: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08037D10: .4byte gSprites -_08037D14: .4byte gHealthboxIDs -_08037D18: .4byte gActiveBank -_08037D1C: .4byte SpriteCallbackDummy -_08037D20: .4byte 0x02017800 -_08037D24: .4byte gBattleBankFunc -_08037D28: .4byte sub_8037D2C - thumb_func_end sub_8037CC0 - - thumb_func_start sub_8037D2C -sub_8037D2C: @ 8037D2C - push {lr} - ldr r0, _08037D58 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08037D5C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08037D52 - ldr r0, _08037D60 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - bl dp01_tbl4_exec_completed -_08037D52: - pop {r0} - bx r0 - .align 2, 0 -_08037D58: .4byte gActiveBank -_08037D5C: .4byte 0x02017810 -_08037D60: .4byte c3_0802FDF4 - thumb_func_end sub_8037D2C - - thumb_func_start sub_8037D64 -sub_8037D64: @ 8037D64 - push {r4,r5,lr} - ldr r5, _08037E08 @ =gActiveBank - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r3, _08037E0C @ =0x02017810 - adds r2, r0, r3 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08037E00 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _08037E10 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r1, _08037E14 @ =gObjectBankIDs - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08037E18 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - ldr r4, _08037E1C @ =gHealthboxIDs - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _08037E20 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08037E24 @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - bl sub_804777C - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC - ldrb r0, [r5] - bl sub_8031F88 - ldr r1, _08037E28 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037E2C @ =sub_8037CC0 - str r1, [r0] -_08037E00: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08037E08: .4byte gActiveBank -_08037E0C: .4byte 0x02017810 -_08037E10: .4byte 0x000027f9 -_08037E14: .4byte gObjectBankIDs -_08037E18: .4byte gSprites -_08037E1C: .4byte gHealthboxIDs -_08037E20: .4byte gBattlePartyID -_08037E24: .4byte gEnemyParty -_08037E28: .4byte gBattleBankFunc -_08037E2C: .4byte sub_8037CC0 - thumb_func_end sub_8037D64 - - thumb_func_start sub_8037E30 -sub_8037E30: @ 8037E30 - push {r4-r6,lr} - ldr r5, _08037ECC @ =gActiveBank - ldrb r2, [r5] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r6, _08037ED0 @ =0x02017810 - adds r0, r6 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _08037E5E - ldr r0, _08037ED4 @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08037ED8 @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08037E5E: - ldr r4, _08037EDC @ =gSprites - ldr r0, _08037EE0 @ =gUnknown_0300434C - ldrb r2, [r5] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _08037EE4 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08037EC4 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08037EC4 - adds r0, r3, r4 - bl DestroySprite - ldrb r4, [r5] - ldr r1, _08037ED4 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08037ED8 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 - ldr r1, _08037EE8 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037EEC @ =sub_8037D64 - str r1, [r0] -_08037EC4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08037ECC: .4byte gActiveBank -_08037ED0: .4byte 0x02017810 -_08037ED4: .4byte gBattlePartyID -_08037ED8: .4byte gEnemyParty -_08037EDC: .4byte gSprites -_08037EE0: .4byte gUnknown_0300434C -_08037EE4: .4byte SpriteCallbackDummy -_08037EE8: .4byte gBattleBankFunc -_08037EEC: .4byte sub_8037D64 - thumb_func_end sub_8037E30 - - thumb_func_start sub_8037EF0 -sub_8037EF0: @ 8037EF0 - push {lr} - ldr r0, _08037F20 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08037F1C - movs r0, 0x5A - bl m4aSongNumStop - ldr r3, _08037F24 @ =gMain - ldr r0, _08037F28 @ =0x0000043d - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _08037F2C @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r3] - ldr r0, _08037F30 @ =c2_8011A1C - bl SetMainCallback2 -_08037F1C: - pop {r0} - bx r0 - .align 2, 0 -_08037F20: .4byte gReceivedRemoteLinkPlayers -_08037F24: .4byte gMain -_08037F28: .4byte 0x0000043d -_08037F2C: .4byte gPreBattleCallback1 -_08037F30: .4byte c2_8011A1C - thumb_func_end sub_8037EF0 - - thumb_func_start sub_8037F34 -sub_8037F34: @ 8037F34 - push {lr} - ldr r0, _08037F64 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08037F9A - ldr r0, _08037F68 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08037F78 - bl sub_800832C - ldr r1, _08037F6C @ =gBattleBankFunc - ldr r0, _08037F70 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037F74 @ =sub_8037EF0 - str r1, [r0] - b _08037F9A - .align 2, 0 -_08037F64: .4byte gPaletteFade -_08037F68: .4byte gBattleTypeFlags -_08037F6C: .4byte gBattleBankFunc -_08037F70: .4byte gActiveBank -_08037F74: .4byte sub_8037EF0 -_08037F78: - movs r0, 0x5A - bl m4aSongNumStop - ldr r2, _08037FA0 @ =gMain - ldr r0, _08037FA4 @ =0x0000043d - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _08037FA8 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_08037F9A: - pop {r0} - bx r0 - .align 2, 0 -_08037FA0: .4byte gMain -_08037FA4: .4byte 0x0000043d -_08037FA8: .4byte gPreBattleCallback1 - thumb_func_end sub_8037F34 - - thumb_func_start sub_8037FAC -sub_8037FAC: @ 8037FAC - push {lr} - ldr r0, _08037FD0 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08037FD4 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08037FCA - bl dp01_tbl4_exec_completed -_08037FCA: - pop {r0} - bx r0 - .align 2, 0 -_08037FD0: .4byte gActiveBank -_08037FD4: .4byte 0x02017810 - thumb_func_end sub_8037FAC - - thumb_func_start sub_8037FD8 -sub_8037FD8: @ 8037FD8 - push {lr} - ldr r0, _08037FFC @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08038000 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08037FF6 - bl dp01_tbl4_exec_completed -_08037FF6: - pop {r0} - bx r0 - .align 2, 0 -_08037FFC: .4byte gActiveBank -_08038000: .4byte 0x02017810 - thumb_func_end sub_8037FD8 - - thumb_func_start dp01_tbl4_exec_completed -dp01_tbl4_exec_completed: @ 8038004 - push {r4,lr} - sub sp, 0x4 - ldr r1, _08038044 @ =gBattleBankFunc - ldr r4, _08038048 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803804C @ =sub_803752C - str r1, [r0] - ldr r0, _08038050 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08038058 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl dp01_prepare_buffer_wireless_probably - ldr r1, _08038054 @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _0803806A - .align 2, 0 -_08038044: .4byte gBattleBankFunc -_08038048: .4byte gActiveBank -_0803804C: .4byte sub_803752C -_08038050: .4byte gBattleTypeFlags -_08038054: .4byte gBattleBufferA -_08038058: - ldr r2, _08038074 @ =gBattleExecBuffer - ldr r1, _08038078 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_0803806A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08038074: .4byte gBattleExecBuffer -_08038078: .4byte gBitTable - thumb_func_end dp01_tbl4_exec_completed + thumb_func_end AI_ShouldUseItem .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_807B69C.s b/asm/battle_anim_807B69C.s deleted file mode 100644 index e34f47f1c..000000000 --- a/asm/battle_anim_807B69C.s +++ /dev/null @@ -1,960 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start unref_sub_807B69C -unref_sub_807B69C: @ 807B69C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0807B740 @ =gObjectBankIDs - adds r0, r4, r0 - ldrb r6, [r0] - ldr r0, _0807B744 @ =sub_807B7E0 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _0807B748 @ =gBattleAnimPicTable + (136 * 8) - bl LoadCompressedObjectPic - ldr r0, _0807B74C @ =gBattleAnimPaletteTable + (136 * 8) - bl LoadCompressedObjectPalette - ldr r1, _0807B750 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - strh r4, [r1, 0x8] - cmp r5, 0 - beq _0807B75C - movs r0, 0x1F - strh r0, [r1, 0xA] - movs r5, 0 - lsls r0, r6, 4 - ldr r7, _0807B754 @ =gSprites - adds r0, r6 - lsls r0, 2 - adds r6, r0, r7 -_0807B6F0: - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r6, 0x22] - adds r2, 0x20 - lsls r2, 16 - asrs r2, 16 - ldr r0, _0807B758 @ =gSpriteTemplate_83931F8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r7 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 4 - adds r0, r1 - strh r0, [r3, 0x2E] - movs r0, 0xFF - lsls r0, 8 - strh r0, [r3, 0x30] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - cmp r5, 0x4 - bls _0807B734 - movs r0, 0x15 - strh r0, [r3, 0x3A] -_0807B734: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _0807B6F0 - b _0807B7BC - .align 2, 0 -_0807B740: .4byte gObjectBankIDs -_0807B744: .4byte sub_807B7E0 -_0807B748: .4byte gBattleAnimPicTable + (136 * 8) -_0807B74C: .4byte gBattleAnimPaletteTable + (136 * 8) -_0807B750: .4byte gTasks -_0807B754: .4byte gSprites -_0807B758: .4byte gSpriteTemplate_83931F8 -_0807B75C: - movs r0, 0xF8 - lsls r0, 7 - strh r0, [r1, 0xA] - movs r5, 0 - lsls r0, r6, 4 - ldr r7, _0807B7D8 @ =gSprites - adds r0, r6 - lsls r0, 2 - adds r6, r0, r7 -_0807B76E: - movs r2, 0x20 - ldrsh r1, [r6, r2] - ldrh r2, [r6, 0x22] - subs r2, 0x20 - lsls r2, 16 - asrs r2, 16 - ldr r0, _0807B7DC @ =gSpriteTemplate_83931F8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r7 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 4 - adds r0, r1 - strh r0, [r3, 0x2E] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r3, 0x30] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - cmp r5, 0x4 - bls _0807B7B2 - movs r0, 0x15 - strh r0, [r3, 0x3A] -_0807B7B2: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _0807B76E -_0807B7BC: - ldr r0, _0807B7D8 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0807B7D8: .4byte gSprites -_0807B7DC: .4byte gSpriteTemplate_83931F8 - thumb_func_end unref_sub_807B69C - - thumb_func_start sub_807B7E0 -sub_807B7E0: @ 807B7E0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0807B838 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0xC] - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x2 - bne _0807B866 - movs r0, 0 - strh r0, [r4, 0xC] - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldrb r2, [r4, 0x10] - ldrh r3, [r4, 0xA] - movs r1, 0x10 - bl BlendPalette - ldrh r2, [r4, 0x12] - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0807B83C - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _0807B86A - movs r0, 0x1 - eors r0, r2 - strh r0, [r4, 0x12] - b _0807B86A - .align 2, 0 -_0807B838: .4byte gTasks -_0807B83C: - ldrh r1, [r4, 0x10] - subs r0, r1, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bge _0807B86A - strh r1, [r4, 0x10] - movs r0, 0x1 - eors r0, r2 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _0807B86A - adds r0, r5, 0 - bl DestroyTask - b _0807B86A -_0807B866: - adds r0, r1, 0x1 - strh r0, [r4, 0xC] -_0807B86A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_807B7E0 - - thumb_func_start sub_807B870 -sub_807B870: @ 807B870 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x3A] - movs r3, 0x3A - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _0807B89C - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - ldr r1, _0807B898 @ =sub_807B8A4 - str r1, [r2, 0x1C] - adds r0, r2, 0 - bl _call_via_r1 - b _0807B8A0 - .align 2, 0 -_0807B898: .4byte sub_807B8A4 -_0807B89C: - subs r0, r1, 0x1 - strh r0, [r2, 0x3A] -_0807B8A0: - pop {r0} - bx r0 - thumb_func_end sub_807B870 - - thumb_func_start sub_807B8A4 -sub_807B8A4: @ 807B8A4 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _0807B8D0 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D - b _0807B8D6 -_0807B8D0: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F -_0807B8D6: - strb r0, [r1] - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x34 - bne _0807B918 - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0807B912 - adds r0, r4, 0 - bl DestroySpriteAndFreeResources - b _0807B918 -_0807B912: - adds r0, r4, 0 - bl DestroySprite -_0807B918: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807B8A4 - - thumb_func_start sub_807B920 -sub_807B920: @ 807B920 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _0807B9B0 @ =gBattleAnimEnemyMonIndex - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 8 - ldr r1, _0807B9B4 @ =0xffe00000 - adds r0, r1 - lsrs r5, r0, 16 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 8 - ldr r2, _0807B9B8 @ =0xffdc0000 - adds r0, r2 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0807B95E - lsls r0, r5, 16 - ldr r1, _0807B9BC @ =0xfffa0000 - adds r0, r1 - lsrs r5, r0, 16 -_0807B95E: - ldr r1, _0807B9C0 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0807B9C4 @ =gSpriteTemplate_83931E0 - lsls r1, r5, 16 - asrs r1, 16 - lsls r2, r4, 16 - asrs r2, 16 - movs r3, 0x4 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _0807B9C8 @ =gSprites - adds r0, r1 - ldr r1, _0807B9CC @ =gSubspriteTables_83931D8 - bl SetSubspriteTables - ldr r1, _0807B9D0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x26] - ldr r1, _0807B9D4 @ =sub_807B9D8 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807B9B0: .4byte gBattleAnimEnemyMonIndex -_0807B9B4: .4byte 0xffe00000 -_0807B9B8: .4byte 0xffdc0000 -_0807B9BC: .4byte 0xfffa0000 -_0807B9C0: .4byte REG_BLDCNT -_0807B9C4: .4byte gSpriteTemplate_83931E0 -_0807B9C8: .4byte gSprites -_0807B9CC: .4byte gSubspriteTables_83931D8 -_0807B9D0: .4byte gTasks -_0807B9D4: .4byte sub_807B9D8 - thumb_func_end sub_807B920 - - thumb_func_start sub_807B9D8 -sub_807B9D8: @ 807B9D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0807BA04 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - adds r2, r0, 0 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0807BA0C - ldr r0, _0807BA08 @ =sub_807BA24 - str r0, [r1] - movs r0, 0 - strh r0, [r1, 0xA] - b _0807BA1C - .align 2, 0 -_0807BA04: .4byte gTasks -_0807BA08: .4byte sub_807BA24 -_0807BA0C: - lsls r0, r2, 24 - lsrs r0, 24 - ldr r2, _0807BA20 @ =REG_BLDALPHA - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - strh r1, [r2] -_0807BA1C: - pop {r0} - bx r0 - .align 2, 0 -_0807BA20: .4byte REG_BLDALPHA - thumb_func_end sub_807B9D8 - - thumb_func_start sub_807BA24 -sub_807BA24: @ 807BA24 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0807BABC @ =0x0000271a - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0807BAC0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0xA] - adds r1, r0, 0x1 - strh r1, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - ble _0807BAB4 - ldrh r0, [r5, 0xC] - adds r0, 0x1 - movs r6, 0 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _0807BAB4 - ldr r3, _0807BAC4 @ =gPlttBufferFaded - lsls r2, 4 - mov r12, r2 - ldr r1, _0807BAC8 @ =0x0000010d - add r1, r12 - lsls r1, 1 - adds r1, r3 - ldrh r4, [r1] - movs r2, 0x87 - lsls r2, 1 - add r2, r12 - lsls r2, 1 - adds r2, r3 - ldrh r0, [r2] - strh r0, [r1] - ldr r0, _0807BACC @ =0x0000010f - add r0, r12 - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - strh r1, [r2] - strh r4, [r0] - strh r6, [r5, 0xC] - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _0807BAB4 - strh r6, [r5, 0xE] - strh r6, [r5, 0xA] - ldrh r0, [r5, 0x10] - adds r0, 0x1 - strh r0, [r5, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _0807BAB4 - movs r0, 0x9 - strh r0, [r5, 0xA] - ldr r0, _0807BAD0 @ =sub_807BAD4 - str r0, [r5] -_0807BAB4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807BABC: .4byte 0x0000271a -_0807BAC0: .4byte gTasks -_0807BAC4: .4byte gPlttBufferFaded -_0807BAC8: .4byte 0x0000010d -_0807BACC: .4byte 0x0000010f -_0807BAD0: .4byte sub_807BAD4 - thumb_func_end sub_807BA24 - - thumb_func_start sub_807BAD4 -sub_807BAD4: @ 807BAD4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0807BB04 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r0, [r2, 0xA] - subs r0, 0x1 - adds r3, r0, 0 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0807BB0C - ldr r0, _0807BB08 @ =sub_807BB24 - str r0, [r2] - movs r0, 0 - strh r0, [r2, 0xA] - b _0807BB1C - .align 2, 0 -_0807BB04: .4byte gTasks -_0807BB08: .4byte sub_807BB24 -_0807BB0C: - lsls r0, r3, 24 - lsrs r0, 24 - ldr r2, _0807BB20 @ =REG_BLDALPHA - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - strh r1, [r2] -_0807BB1C: - pop {r0} - bx r0 - .align 2, 0 -_0807BB20: .4byte REG_BLDALPHA - thumb_func_end sub_807BAD4 - - thumb_func_start sub_807BB24 -sub_807BB24: @ 807BB24 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - ldr r1, _0807BB64 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - movs r3, 0 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x25 - bne _0807BB6C - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _0807BB68 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _0807BB7E - .align 2, 0 -_0807BB64: .4byte gTasks -_0807BB68: .4byte gSprites -_0807BB6C: - cmp r0, 0x27 - bne _0807BB7E - ldr r0, _0807BB84 @ =REG_BLDCNT - strh r3, [r0] - adds r0, 0x2 - strh r3, [r0] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_0807BB7E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807BB84: .4byte REG_BLDCNT - thumb_func_end sub_807BB24 - - thumb_func_start sub_807BB88 -sub_807BB88: @ 807BB88 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r3, 0 - ldr r0, _0807BBA8 @ =0x02017840 - ldrh r0, [r0] - subs r0, 0xF - cmp r0, 0x2B - bls _0807BB9C - b _0807BD20 -_0807BB9C: - lsls r0, 2 - ldr r1, _0807BBAC @ =_0807BBB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807BBA8: .4byte 0x02017840 -_0807BBAC: .4byte _0807BBB0 - .align 2, 0 -_0807BBB0: - .4byte _0807BC60 - .4byte _0807BC66 - .4byte _0807BC6C - .4byte _0807BC72 - .4byte _0807BC78 - .4byte _0807BC7E - .4byte _0807BC84 - .4byte _0807BC8A - .4byte _0807BC90 - .4byte _0807BC96 - .4byte _0807BC9C - .4byte _0807BCA2 - .4byte _0807BCA8 - .4byte _0807BCAE - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BCB4 - .4byte _0807BCB8 - .4byte _0807BCBC - .4byte _0807BCC0 - .4byte _0807BCC4 - .4byte _0807BCC8 - .4byte _0807BCCC - .4byte _0807BCD0 - .4byte _0807BCD8 - .4byte _0807BCE0 - .4byte _0807BCE8 - .4byte _0807BCF0 - .4byte _0807BCF8 - .4byte _0807BD00 - .4byte _0807BD20 - .4byte _0807BD20 - .4byte _0807BD08 - .4byte _0807BD0C - .4byte _0807BD10 - .4byte _0807BD18 -_0807BC60: - movs r5, 0 - movs r2, 0 - b _0807BD28 -_0807BC66: - movs r5, 0 - movs r2, 0x1 - b _0807BD28 -_0807BC6C: - movs r5, 0 - movs r2, 0x3 - b _0807BD28 -_0807BC72: - movs r5, 0 - movs r2, 0x5 - b _0807BD28 -_0807BC78: - movs r5, 0 - movs r2, 0x6 - b _0807BD28 -_0807BC7E: - movs r5, 0 - movs r2, 0x2 - b _0807BD28 -_0807BC84: - movs r5, 0 - movs r2, 0x4 - b _0807BD28 -_0807BC8A: - movs r5, 0x1 - movs r2, 0 - b _0807BD28 -_0807BC90: - movs r5, 0x1 - movs r2, 0x1 - b _0807BD28 -_0807BC96: - movs r5, 0x1 - movs r2, 0x3 - b _0807BD28 -_0807BC9C: - movs r5, 0x1 - movs r2, 0x5 - b _0807BD28 -_0807BCA2: - movs r5, 0x1 - movs r2, 0x6 - b _0807BD28 -_0807BCA8: - movs r5, 0x1 - movs r2, 0x2 - b _0807BD28 -_0807BCAE: - movs r5, 0x1 - movs r2, 0x4 - b _0807BD28 -_0807BCB4: - movs r5, 0 - b _0807BCD2 -_0807BCB8: - movs r5, 0 - b _0807BCDA -_0807BCBC: - movs r5, 0 - b _0807BCE2 -_0807BCC0: - movs r5, 0 - b _0807BCEA -_0807BCC4: - movs r5, 0 - b _0807BCF2 -_0807BCC8: - movs r5, 0 - b _0807BCFA -_0807BCCC: - movs r5, 0 - b _0807BD02 -_0807BCD0: - movs r5, 0x1 -_0807BCD2: - movs r2, 0 - movs r3, 0x1 - b _0807BD28 -_0807BCD8: - movs r5, 0x1 -_0807BCDA: - movs r2, 0x1 - movs r3, 0x1 - b _0807BD28 -_0807BCE0: - movs r5, 0x1 -_0807BCE2: - movs r2, 0x3 - movs r3, 0x1 - b _0807BD28 -_0807BCE8: - movs r5, 0x1 -_0807BCEA: - movs r2, 0x5 - movs r3, 0x1 - b _0807BD28 -_0807BCF0: - movs r5, 0x1 -_0807BCF2: - movs r2, 0x6 - movs r3, 0x1 - b _0807BD28 -_0807BCF8: - movs r5, 0x1 -_0807BCFA: - movs r2, 0x2 - movs r3, 0x1 - b _0807BD28 -_0807BD00: - movs r5, 0x1 -_0807BD02: - movs r2, 0x4 - movs r3, 0x1 - b _0807BD28 -_0807BD08: - movs r5, 0 - b _0807BD12 -_0807BD0C: - movs r5, 0 - b _0807BD1A -_0807BD10: - movs r5, 0x1 -_0807BD12: - movs r2, 0xFF - movs r3, 0 - b _0807BD28 -_0807BD18: - movs r5, 0x1 -_0807BD1A: - movs r2, 0xFF - movs r3, 0x1 - b _0807BD28 -_0807BD20: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _0807BD4A -_0807BD28: - ldr r0, _0807BD50 @ =gBattleAnimArgs - movs r1, 0 - strh r5, [r0] - strh r2, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r3, [r0, 0x8] - ldr r1, _0807BD54 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0807BD58 @ =sub_80E32E0 - str r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_0807BD4A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807BD50: .4byte gBattleAnimArgs -_0807BD54: .4byte gTasks -_0807BD58: .4byte sub_80E32E0 - thumb_func_end sub_807BB88 - - thumb_func_start move_anim_start_t2 -move_anim_start_t2: @ 807BD5C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _0807BD98 @ =gBattleAnimPlayerMonIndex - strb r4, [r0] - ldr r0, _0807BD9C @ =gBattleAnimEnemyMonIndex - strb r4, [r0] - ldr r0, _0807BDA0 @ =gBattleAnims_StatusConditions - movs r2, 0 - bl DoMoveAnim - ldr r0, _0807BDA4 @ =sub_807BDAC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0807BDA8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807BD98: .4byte gBattleAnimPlayerMonIndex -_0807BD9C: .4byte gBattleAnimEnemyMonIndex -_0807BDA0: .4byte gBattleAnims_StatusConditions -_0807BDA4: .4byte sub_807BDAC -_0807BDA8: .4byte gTasks - thumb_func_end move_anim_start_t2 - - thumb_func_start sub_807BDAC -sub_807BDAC: @ 807BDAC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807BDF0 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _0807BDF4 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _0807BDEA - ldr r1, _0807BDF8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _0807BDFC @ =0x02017810 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0807BDEA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807BDF0: .4byte gAnimScriptCallback -_0807BDF4: .4byte gAnimScriptActive -_0807BDF8: .4byte gTasks -_0807BDFC: .4byte 0x02017810 - thumb_func_end sub_807BDAC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index fd5b9fb88..7b506ac24 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -23,7 +23,7 @@ sub_80CA710: @ 80CA710 strh r0, [r4, 0x2E] ldrh r0, [r5, 0x6] strh r0, [r4, 0x30] - ldr r0, _080CA748 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CA748 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -34,7 +34,7 @@ sub_80CA710: @ 80CA710 b _080CA74E .align 2, 0 _080CA744: .4byte gBattleAnimArgs -_080CA748: .4byte gBattleAnimPlayerMonIndex +_080CA748: .4byte gBattleAnimBankAttacker _080CA74C: ldrh r0, [r5, 0x8] _080CA74E: @@ -101,7 +101,7 @@ sub_80CA7B0: @ 80CA7B0 ldr r0, _080CA7F0 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] - ldr r5, _080CA7F4 @ =gBattleAnimPlayerMonIndex + ldr r5, _080CA7F4 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -118,13 +118,13 @@ sub_80CA7B0: @ 80CA7B0 str r0, [r4, 0x1C] ldr r1, _080CA7FC @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080CA7F0: .4byte gBattleAnimArgs -_080CA7F4: .4byte gBattleAnimPlayerMonIndex +_080CA7F4: .4byte gBattleAnimBankAttacker _080CA7F8: .4byte sub_8078B34 _080CA7FC: .4byte move_anim_8074EE0 thumb_func_end sub_80CA7B0 @@ -141,7 +141,7 @@ sub_80CA800: @ 80CA800 bl StartSpriteAnim ldrh r0, [r5, 0x4] strh r0, [r4, 0x2E] - ldr r5, _080CA84C @ =gBattleAnimEnemyMonIndex + ldr r5, _080CA84C @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -158,13 +158,13 @@ sub_80CA800: @ 80CA800 str r0, [r4, 0x1C] ldr r1, _080CA854 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080CA848: .4byte gBattleAnimArgs -_080CA84C: .4byte gBattleAnimEnemyMonIndex +_080CA84C: .4byte gBattleAnimBankTarget _080CA850: .4byte sub_8078B34 _080CA854: .4byte move_anim_8072740 thumb_func_end sub_80CA800 @@ -180,7 +180,7 @@ sub_80CA858: @ 80CA858 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] - ldr r5, _080CA8AC @ =gBattleAnimEnemyMonIndex + ldr r5, _080CA8AC @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -208,7 +208,7 @@ sub_80CA858: @ 80CA858 bx r0 .align 2, 0 _080CA8A8: .4byte gBattleAnimArgs -_080CA8AC: .4byte gBattleAnimEnemyMonIndex +_080CA8AC: .4byte gBattleAnimBankTarget _080CA8B0: .4byte sub_80CA8B4 thumb_func_end sub_80CA858 @@ -228,15 +228,15 @@ _080CA8CA: ldrsh r0, [r4, r1] cmp r0, 0x7F ble _080CA8E4 - ldr r0, _080CA8E0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CA8E0 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079E90 adds r0, 0x1 b _080CA8EE .align 2, 0 -_080CA8E0: .4byte gBattleAnimEnemyMonIndex +_080CA8E0: .4byte gBattleAnimBankTarget _080CA8E4: - ldr r0, _080CA924 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CA924 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079E90 adds r0, 0x6 @@ -268,7 +268,7 @@ _080CA91E: pop {r0} bx r0 .align 2, 0 -_080CA924: .4byte gBattleAnimEnemyMonIndex +_080CA924: .4byte gBattleAnimBankTarget thumb_func_end sub_80CA8B4 thumb_func_start sub_80CA928 @@ -305,7 +305,7 @@ sub_80CA928: @ 80CA928 strh r0, [r1, 0x4] strh r2, [r1, 0x6] ldr r4, _080CA9A0 @ =gSpriteTemplate_83D631C - ldr r0, _080CA9A4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CA9A4 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079E90 adds r3, r0, 0 @@ -331,7 +331,7 @@ _080CA990: _080CA998: .4byte gTasks _080CA99C: .4byte gBattleAnimArgs _080CA9A0: .4byte gSpriteTemplate_83D631C -_080CA9A4: .4byte gBattleAnimEnemyMonIndex +_080CA9A4: .4byte gBattleAnimBankTarget thumb_func_end sub_80CA928 thumb_func_start sub_80CA9A8 @@ -343,7 +343,7 @@ sub_80CA9A8: @ 80CA9A8 ldr r6, _080CA9EC @ =gBattleAnimArgs ldrh r0, [r6, 0x6] strh r0, [r4, 0x2E] - ldr r5, _080CA9F0 @ =gBattleAnimPlayerMonIndex + ldr r5, _080CA9F0 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -367,7 +367,7 @@ sub_80CA9A8: @ 80CA9A8 bx r0 .align 2, 0 _080CA9EC: .4byte gBattleAnimArgs -_080CA9F0: .4byte gBattleAnimPlayerMonIndex +_080CA9F0: .4byte gBattleAnimBankAttacker _080CA9F4: .4byte sub_80CA9F8 thumb_func_end sub_80CA9A8 @@ -399,7 +399,7 @@ sub_80CAA14: @ 80CAA14 ands r1, r0 adds r0, r5, 0 bl StartSpriteAnim - ldr r4, _080CAA5C @ =gBattleAnimPlayerMonIndex + ldr r4, _080CAA5C @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -421,7 +421,7 @@ sub_80CAA14: @ 80CAA14 subs r0, 0x14 b _080CAA64 .align 2, 0 -_080CAA5C: .4byte gBattleAnimPlayerMonIndex +_080CAA5C: .4byte gBattleAnimBankAttacker _080CAA60: ldrh r0, [r5, 0x20] adds r0, 0x14 @@ -436,7 +436,7 @@ _080CAA64: strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, _080CAAC4 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CAAC4 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -469,7 +469,7 @@ _080CAA64: pop {r0} bx r0 .align 2, 0 -_080CAAC4: .4byte gBattleAnimEnemyMonIndex +_080CAAC4: .4byte gBattleAnimBankTarget _080CAAC8: .4byte sub_80CAACC thumb_func_end sub_80CAA14 @@ -522,7 +522,7 @@ sub_80CAB18: @ 80CAB18 adds r6, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _080CAB78 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CAB78 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -536,7 +536,7 @@ _080CAB38: ldr r4, _080CAB7C @ =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] - ldr r5, _080CAB80 @ =gBattleAnimEnemyMonIndex + ldr r5, _080CAB80 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0 bl sub_8077ABC @@ -563,9 +563,9 @@ _080CAB38: pop {r0} bx r0 .align 2, 0 -_080CAB78: .4byte gBattleAnimPlayerMonIndex +_080CAB78: .4byte gBattleAnimBankAttacker _080CAB7C: .4byte gBattleAnimArgs -_080CAB80: .4byte gBattleAnimEnemyMonIndex +_080CAB80: .4byte gBattleAnimBankTarget _080CAB84: .4byte sub_80CAB88 thumb_func_end sub_80CAB18 @@ -589,7 +589,7 @@ sub_80CAB88: @ 80CAB88 str r0, [r4, 0x1C] ldr r1, _080CABBC @ =sub_80CABC0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _080CABB2: pop {r4} pop {r0} @@ -619,7 +619,7 @@ sub_80CABC0: @ 80CABC0 str r0, [r4, 0x1C] ldr r1, _080CABF4 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -693,7 +693,7 @@ sub_80CAC44: @ 80CAC44 lsrs r0, 16 cmp r0, 0x7F bhi _080CAC98 - ldr r0, _080CAC94 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CAC94 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 movs r1, 0x3 @@ -706,9 +706,9 @@ sub_80CAC44: @ 80CAC44 orrs r0, r1 b _080CACBC .align 2, 0 -_080CAC94: .4byte gBattleAnimEnemyMonIndex +_080CAC94: .4byte gBattleAnimBankTarget _080CAC98: - ldr r0, _080CACE8 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CACE8 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 adds r0, 0x1 @@ -749,7 +749,7 @@ _080CACE0: pop {r0} bx r0 .align 2, 0 -_080CACE8: .4byte gBattleAnimEnemyMonIndex +_080CACE8: .4byte gBattleAnimBankTarget thumb_func_end sub_80CAC44 thumb_func_start sub_80CACEC @@ -770,7 +770,7 @@ _080CAD06: bl DestroyAnimVisualTask b _080CAD4A _080CAD0E: - ldr r0, _080CAD2C @ =gBattleAnimEnemyMonIndex + ldr r0, _080CAD2C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -784,7 +784,7 @@ _080CAD0E: strb r1, [r0] b _080CAD44 .align 2, 0 -_080CAD2C: .4byte gBattleAnimEnemyMonIndex +_080CAD2C: .4byte gBattleAnimBankTarget _080CAD30: .4byte REG_BG2CNT _080CAD34: ldr r2, _080CAD50 @ =REG_BG1CNT @@ -820,7 +820,7 @@ sub_80CAD54: @ 80CAD54 strh r0, [r4, 0x32] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] - ldr r0, _080CADA0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CADA0 @ =gBattleAnimBankAttacker ldrb r0, [r0] movs r1, 0x3 bl sub_8077ABC @@ -842,7 +842,7 @@ sub_80CAD54: @ 80CAD54 bx r0 .align 2, 0 _080CAD9C: .4byte gBattleAnimArgs -_080CADA0: .4byte gBattleAnimPlayerMonIndex +_080CADA0: .4byte gBattleAnimBankAttacker _080CADA4: .4byte sub_80CADA8 thumb_func_end sub_80CAD54 @@ -875,15 +875,15 @@ sub_80CADA8: @ 80CADA8 lsrs r0, 16 cmp r0, 0x7F bhi _080CADF4 - ldr r0, _080CADF0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CADF0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079E90 subs r0, 0x1 b _080CADFE .align 2, 0 -_080CADF0: .4byte gBattleAnimPlayerMonIndex +_080CADF0: .4byte gBattleAnimBankAttacker _080CADF4: - ldr r0, _080CAE10 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CAE10 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079E90 adds r0, 0x1 @@ -898,7 +898,7 @@ _080CADFE: strh r0, [r4, 0x38] b _080CAE1A .align 2, 0 -_080CAE10: .4byte gBattleAnimPlayerMonIndex +_080CAE10: .4byte gBattleAnimBankAttacker _080CAE14: adds r0, r4, 0 bl move_anim_8072740 @@ -922,7 +922,7 @@ sub_80CAE20: @ 80CAE20 strh r0, [r4, 0x32] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] - ldr r0, _080CAE6C @ =gBattleAnimPlayerMonIndex + ldr r0, _080CAE6C @ =gBattleAnimBankAttacker ldrb r0, [r0] movs r1, 0x3 bl sub_8077ABC @@ -944,7 +944,7 @@ sub_80CAE20: @ 80CAE20 bx r0 .align 2, 0 _080CAE68: .4byte gBattleAnimArgs -_080CAE6C: .4byte gBattleAnimPlayerMonIndex +_080CAE6C: .4byte gBattleAnimBankAttacker _080CAE70: .4byte sub_80CAE74 thumb_func_end sub_80CAE20 @@ -1007,7 +1007,7 @@ _080CAED2: sub_80CAED8: @ 80CAED8 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080CAF14 @ =gBattleAnimPlayerMonIndex + ldr r5, _080CAF14 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -1033,7 +1033,7 @@ sub_80CAED8: @ 80CAED8 pop {r0} bx r0 .align 2, 0 -_080CAF14: .4byte gBattleAnimPlayerMonIndex +_080CAF14: .4byte gBattleAnimBankAttacker _080CAF18: .4byte gBattleAnimArgs _080CAF1C: .4byte sub_80CAF20 thumb_func_end sub_80CAED8 @@ -1087,7 +1087,7 @@ _080CAF68: sub_80CAF6C: @ 80CAF6C push {r4,lr} adds r4, r0, 0 - ldr r0, _080CAF8C @ =gBattleAnimPlayerMonIndex + ldr r0, _080CAF8C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1100,7 +1100,7 @@ sub_80CAF6C: @ 80CAF6C negs r0, r0 b _080CAF9A .align 2, 0 -_080CAF8C: .4byte gBattleAnimPlayerMonIndex +_080CAF8C: .4byte gBattleAnimBankAttacker _080CAF90: movs r1, 0x2E ldrsh r0, [r4, r1] @@ -1142,7 +1142,7 @@ sub_80CAFD0: @ 80CAFD0 adds r5, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _080CB024 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CB024 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1160,7 +1160,7 @@ _080CAFF0: ldrsh r0, [r6, r1] cmp r0, 0 bne _080CB030 - ldr r4, _080CB02C @ =gBattleAnimEnemyMonIndex + ldr r4, _080CB02C @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -1178,11 +1178,11 @@ _080CAFF0: adds r0, r6 b _080CB050 .align 2, 0 -_080CB024: .4byte gBattleAnimPlayerMonIndex +_080CB024: .4byte gBattleAnimBankAttacker _080CB028: .4byte gBattleAnimArgs -_080CB02C: .4byte gBattleAnimEnemyMonIndex +_080CB02C: .4byte gBattleAnimBankTarget _080CB030: - ldr r0, _080CB07C @ =gBattleAnimEnemyMonIndex + ldr r0, _080CB07C @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -1204,11 +1204,11 @@ _080CB050: strh r0, [r5, 0x38] adds r0, r5, 0 bl sub_80786EC - ldr r0, _080CB084 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CB084 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide adds r4, r0, 0 - ldr r0, _080CB07C @ =gBattleAnimEnemyMonIndex + ldr r0, _080CB07C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 @@ -1218,9 +1218,9 @@ _080CB050: movs r0, 0x1 b _080CB08A .align 2, 0 -_080CB07C: .4byte gBattleAnimEnemyMonIndex +_080CB07C: .4byte gBattleAnimBankTarget _080CB080: .4byte gBattleAnimArgs -_080CB084: .4byte gBattleAnimPlayerMonIndex +_080CB084: .4byte gBattleAnimBankAttacker _080CB088: movs r0, 0 _080CB08A: @@ -1338,7 +1338,7 @@ sub_80CB144: @ 80CB144 lsrs r0, 24 cmp r0, 0x1 bne _080CB170 - ldr r0, _080CB198 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CB198 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -1367,7 +1367,7 @@ _080CB170: pop {r0} bx r0 .align 2, 0 -_080CB198: .4byte gBattleAnimEnemyMonIndex +_080CB198: .4byte gBattleAnimBankTarget _080CB19C: .4byte gBattleAnimArgs _080CB1A0: .4byte sub_80CB1A4 thumb_func_end sub_80CB144 @@ -1426,7 +1426,7 @@ _080CB1E0: ldrsh r0, [r4, r1] cmp r0, 0x7F bgt _080CB220 - ldr r0, _080CB21C @ =gBattleAnimEnemyMonIndex + ldr r0, _080CB21C @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 lsls r0, 24 @@ -1434,9 +1434,9 @@ _080CB1E0: subs r0, 0x1 b _080CB22E .align 2, 0 -_080CB21C: .4byte gBattleAnimEnemyMonIndex +_080CB21C: .4byte gBattleAnimBankTarget _080CB220: - ldr r0, _080CB258 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CB258 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 lsls r0, 24 @@ -1465,7 +1465,7 @@ _080CB252: pop {r0} bx r0 .align 2, 0 -_080CB258: .4byte gBattleAnimEnemyMonIndex +_080CB258: .4byte gBattleAnimBankTarget thumb_func_end sub_80CB1A4 thumb_func_start sub_80CB25C @@ -1514,7 +1514,7 @@ sub_80CB298: @ 80CB298 ands r0, r1 strb r0, [r2] movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0x2E] @@ -1535,7 +1535,7 @@ sub_80CB2D4: @ 80CB2D4 push {r4,lr} adds r4, r0, 0 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 @@ -1596,7 +1596,7 @@ sub_80CB340: @ 80CB340 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r2, r0, 24 ldr r1, _080CB36C @ =gSprites @@ -1650,7 +1650,7 @@ sub_80CB3A8: @ 80CB3A8 lsls r4, 24 lsrs r4, 24 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 @@ -1671,7 +1671,7 @@ sub_80CB3A8: @ 80CB3A8 lsls r1, 16 asrs r1, 24 strh r1, [r5, 0x24] - ldr r0, _080CB430 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CB430 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1709,7 +1709,7 @@ _080CB420: .align 2, 0 _080CB428: .4byte gTasks _080CB42C: .4byte gSprites -_080CB430: .4byte gBattleAnimEnemyMonIndex +_080CB430: .4byte gBattleAnimBankTarget _080CB434: .4byte sub_80CB438 thumb_func_end sub_80CB3A8 @@ -1734,7 +1734,7 @@ sub_80CB438: @ 80CB438 cmp r5, 0 bne _080CB4A8 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -1800,7 +1800,7 @@ sub_80CB4CC: @ 80CB4CC beq _080CB538 b _080CB58A _080CB4DE: - ldr r6, _080CB530 @ =gBattleAnimEnemyMonIndex + ldr r6, _080CB530 @ =gBattleAnimBankTarget ldrb r0, [r6] bl GetBankSide lsls r0, 24 @@ -1840,7 +1840,7 @@ _080CB4F6: strh r0, [r5, 0x2E] b _080CB58A .align 2, 0 -_080CB530: .4byte gBattleAnimEnemyMonIndex +_080CB530: .4byte gBattleAnimBankTarget _080CB534: .4byte gBattleAnimArgs _080CB538: adds r2, r5, 0 @@ -1862,7 +1862,7 @@ _080CB538: bl ChangeSpriteAffineAnim movs r0, 0x19 strh r0, [r5, 0x2E] - ldr r4, _080CB590 @ =gBattleAnimPlayerMonIndex + ldr r4, _080CB590 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -1879,13 +1879,13 @@ _080CB538: str r0, [r5, 0x1C] ldr r1, _080CB598 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _080CB58A: pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080CB590: .4byte gBattleAnimPlayerMonIndex +_080CB590: .4byte gBattleAnimBankAttacker _080CB594: .4byte sub_8078CC0 _080CB598: .4byte move_anim_8072740 thumb_func_end sub_80CB4CC @@ -1898,7 +1898,7 @@ sub_80CB59C: @ 80CB59C ldrsh r0, [r5, r1] cmp r0, 0 bne _080CB608 - ldr r4, _080CB614 @ =gBattleAnimPlayerMonIndex + ldr r4, _080CB614 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -1950,7 +1950,7 @@ _080CB608: pop {r0} bx r0 .align 2, 0 -_080CB614: .4byte gBattleAnimPlayerMonIndex +_080CB614: .4byte gBattleAnimBankAttacker _080CB618: .4byte gBattleAnimArgs _080CB61C: .4byte sub_80CB710 thumb_func_end sub_80CB59C @@ -1964,7 +1964,7 @@ sub_80CB620: @ 80CB620 push {r4-r6} sub sp, 0x4 mov r9, r0 - ldr r4, _080CB6FC @ =gBattleAnimPlayerMonIndex + ldr r4, _080CB6FC @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -1979,7 +1979,7 @@ sub_80CB620: @ 80CB620 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r6, _080CB700 @ =gBattleAnimEnemyMonIndex + ldr r6, _080CB700 @ =gBattleAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_8077ABC @@ -2060,8 +2060,8 @@ sub_80CB620: @ 80CB620 pop {r0} bx r0 .align 2, 0 -_080CB6FC: .4byte gBattleAnimPlayerMonIndex -_080CB700: .4byte gBattleAnimEnemyMonIndex +_080CB6FC: .4byte gBattleAnimBankAttacker +_080CB700: .4byte gBattleAnimBankTarget _080CB704: .4byte gBattleAnimArgs _080CB708: .4byte sub_80CB710 _080CB70C: .4byte gUnknown_03000728 @@ -2123,7 +2123,7 @@ sub_80CB768: @ 80CB768 ldrsh r0, [r6, r1] cmp r0, 0 bne _080CB7A8 - ldr r5, _080CB7E4 @ =gBattleAnimPlayerMonIndex + ldr r5, _080CB7E4 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -2178,7 +2178,7 @@ _080CB7DE: pop {r0} bx r0 .align 2, 0 -_080CB7E4: .4byte gBattleAnimPlayerMonIndex +_080CB7E4: .4byte gBattleAnimBankAttacker _080CB7E8: .4byte gBattleAnimArgs thumb_func_end sub_80CB768 @@ -2380,7 +2380,7 @@ sub_80CB94C: @ 80CB94C adds r5, r0, 0 movs r1, 0 bl sub_80787B0 - ldr r4, _080CB994 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CB994 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -2391,7 +2391,7 @@ sub_80CB94C: @ 80CB94C bl sub_8077ABC lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _080CB998 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CB998 @ =gBattleAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 eors r0, r1 @@ -2408,8 +2408,8 @@ sub_80CB94C: @ 80CB94C movs r0, 0x1 b _080CB9AE .align 2, 0 -_080CB994: .4byte gBattleAnimEnemyMonIndex -_080CB998: .4byte gBattleAnimPlayerMonIndex +_080CB994: .4byte gBattleAnimBankTarget +_080CB998: .4byte gBattleAnimBankAttacker _080CB99C: strh r6, [r5, 0x3A] adds r0, r2, 0 @@ -2487,7 +2487,7 @@ _080CBA20: sub_80CBA28: @ 80CBA28 push {r4-r6,lr} adds r5, r0, 0 - ldr r4, _080CBA64 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CBA64 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x1 bl sub_8077ABC @@ -2513,7 +2513,7 @@ sub_80CBA28: @ 80CBA28 ldr r0, _080CBA68 @ =sub_80CB8E8 b _080CBA96 .align 2, 0 -_080CBA64: .4byte gBattleAnimEnemyMonIndex +_080CBA64: .4byte gBattleAnimBankTarget _080CBA68: .4byte sub_80CB8E8 _080CBA6C: movs r0, 0xFF @@ -2589,7 +2589,7 @@ sub_80CBAE8: @ 80CBAE8 adds r5, r0, 0 movs r1, 0 bl sub_8078764 - ldr r4, _080CBB30 @ =gBattleAnimPlayerMonIndex + ldr r4, _080CBB30 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -2600,7 +2600,7 @@ sub_80CBAE8: @ 80CBAE8 bl sub_8077ABC lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _080CBB34 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CBB34 @ =gBattleAnimBankTarget ldrb r1, [r0] movs r0, 0x2 eors r0, r1 @@ -2617,8 +2617,8 @@ sub_80CBAE8: @ 80CBAE8 movs r0, 0x1 b _080CBB4A .align 2, 0 -_080CBB30: .4byte gBattleAnimPlayerMonIndex -_080CBB34: .4byte gBattleAnimEnemyMonIndex +_080CBB30: .4byte gBattleAnimBankAttacker +_080CBB34: .4byte gBattleAnimBankTarget _080CBB38: strh r6, [r5, 0x3A] adds r0, r2, 0 @@ -3002,7 +3002,7 @@ sub_80CBDF4: @ 80CBDF4 lsls r0, 3 ldr r1, _080CBF48 @ =gTasks adds r5, r0, r1 - ldr r4, _080CBF4C @ =gBattleAnimEnemyMonIndex + ldr r4, _080CBF4C @ =gBattleAnimBankTarget ldrb r0, [r4] bl sub_8079E90 lsls r0, 24 @@ -3156,7 +3156,7 @@ _080CBE94: bx r0 .align 2, 0 _080CBF48: .4byte gTasks -_080CBF4C: .4byte gBattleAnimEnemyMonIndex +_080CBF4C: .4byte gBattleAnimBankTarget _080CBF50: .4byte gSpriteTemplate_83D6884 _080CBF54: .4byte gSprites _080CBF58: .4byte sub_80CBF5C @@ -3832,13 +3832,13 @@ sub_80CC474: @ 80CC474 ldrsh r0, [r0, r1] cmp r0, 0 bne _080CC490 - ldr r0, _080CC48C @ =gBattleAnimPlayerMonIndex + ldr r0, _080CC48C @ =gBattleAnimBankAttacker b _080CC492 .align 2, 0 _080CC488: .4byte gBattleAnimArgs -_080CC48C: .4byte gBattleAnimPlayerMonIndex +_080CC48C: .4byte gBattleAnimBankAttacker _080CC490: - ldr r0, _080CC4B0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CC4B0 @ =gBattleAnimBankTarget _080CC492: ldrb r6, [r0] adds r0, r6, 0 @@ -3854,7 +3854,7 @@ _080CC492: ldr r0, _080CC4B8 @ =0x0000fff0 b _080CC4CC .align 2, 0 -_080CC4B0: .4byte gBattleAnimEnemyMonIndex +_080CC4B0: .4byte gBattleAnimBankTarget _080CC4B4: .4byte gBattleAnimArgs _080CC4B8: .4byte 0x0000fff0 _080CC4BC: @@ -3923,7 +3923,7 @@ _080CC518: strb r0, [r4, 0x5] b _080CC56C _080CC534: - ldr r0, _080CC578 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CC578 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x3 bl sub_8077ABC @@ -3933,7 +3933,7 @@ _080CC534: adds r0, r7 strh r0, [r4, 0x22] movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId _080CC54E: adds r0, r6, 0 bl sub_8079ED4 @@ -3956,7 +3956,7 @@ _080CC56C: pop {r0} bx r0 .align 2, 0 -_080CC578: .4byte gBattleAnimEnemyMonIndex +_080CC578: .4byte gBattleAnimBankTarget _080CC57C: .4byte sub_80CC580 thumb_func_end sub_80CC474 @@ -4149,12 +4149,12 @@ _080CC6E8: ldrsh r0, [r1, r3] cmp r0, 0 bne _080CC6F8 - ldr r4, _080CC6F4 @ =gBattleAnimPlayerMonIndex + ldr r4, _080CC6F4 @ =gBattleAnimBankAttacker b _080CC6FA .align 2, 0 -_080CC6F4: .4byte gBattleAnimPlayerMonIndex +_080CC6F4: .4byte gBattleAnimBankAttacker _080CC6F8: - ldr r4, _080CC734 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CC734 @ =gBattleAnimBankTarget _080CC6FA: ldrb r0, [r4] movs r1, 0x2 @@ -4184,7 +4184,7 @@ _080CC6FA: strh r2, [r6, 0x3A] b _080CC74C .align 2, 0 -_080CC734: .4byte gBattleAnimEnemyMonIndex +_080CC734: .4byte gBattleAnimBankTarget _080CC738: .4byte gBattleAnimArgs _080CC73C: strh r5, [r6, 0x20] @@ -4317,7 +4317,7 @@ _080CC826: sub_80CC82C: @ 80CC82C push {r4,lr} adds r4, r0, 0 - ldr r0, _080CC84C @ =gBattleAnimPlayerMonIndex + ldr r0, _080CC84C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4331,7 +4331,7 @@ sub_80CC82C: @ 80CC82C ldrh r0, [r2, 0x2] b _080CC860 .align 2, 0 -_080CC84C: .4byte gBattleAnimPlayerMonIndex +_080CC84C: .4byte gBattleAnimBankAttacker _080CC850: .4byte gBattleAnimArgs _080CC854: ldr r0, _080CC878 @ =gBattleAnimArgs @@ -4348,7 +4348,7 @@ _080CC860: str r0, [r4, 0x1C] ldr r1, _080CC880 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -4362,7 +4362,7 @@ _080CC880: .4byte move_anim_8072740 sub_80CC884: @ 80CC884 push {r4,r5,lr} adds r5, r0, 0 - ldr r0, _080CC8BC @ =gBattleAnimPlayerMonIndex + ldr r0, _080CC8BC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4387,7 +4387,7 @@ _080CC89E: pop {r0} bx r0 .align 2, 0 -_080CC8BC: .4byte gBattleAnimPlayerMonIndex +_080CC8BC: .4byte gBattleAnimBankAttacker _080CC8C0: .4byte sub_80CC810 _080CC8C4: .4byte gBattleAnimArgs thumb_func_end sub_80CC884 @@ -4418,7 +4418,7 @@ sub_80CC8C8: @ 80CC8C8 bl StartSpriteAffineAnim ldr r1, _080CC90C @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CC910 @ =sub_8078504 str r0, [r4, 0x1C] pop {r4} @@ -4434,7 +4434,7 @@ _080CC910: .4byte sub_8078504 sub_80CC914: @ 80CC914 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _080CC964 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CC964 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -4470,7 +4470,7 @@ _080CC948: strh r0, [r5, 0x20] b _080CC984 .align 2, 0 -_080CC964: .4byte gBattleAnimEnemyMonIndex +_080CC964: .4byte gBattleAnimBankTarget _080CC968: .4byte sub_80CCB00 _080CC96C: .4byte gBattleAnimArgs _080CC970: @@ -4535,7 +4535,7 @@ sub_80CC9BC: @ 80CC9BC .align 2, 0 _080CC9D8: .4byte gBattleAnimArgs _080CC9DC: - ldr r5, _080CC9F8 @ =gBattleAnimEnemyMonIndex + ldr r5, _080CC9F8 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r4, 0x2 eors r0, r4 @@ -4548,9 +4548,9 @@ _080CC9DC: adds r0, r4, 0 b _080CCA68 .align 2, 0 -_080CC9F8: .4byte gBattleAnimEnemyMonIndex +_080CC9F8: .4byte gBattleAnimBankTarget _080CC9FC: - ldr r5, _080CCA54 @ =gBattleAnimEnemyMonIndex + ldr r5, _080CCA54 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0 bl sub_8077ABC @@ -4566,7 +4566,7 @@ _080CC9FC: mov r8, r2 mov r1, r8 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080CCA72 @@ -4590,9 +4590,9 @@ _080CC9FC: lsrs r4, r0, 1 b _080CCA72 .align 2, 0 -_080CCA54: .4byte gBattleAnimEnemyMonIndex +_080CCA54: .4byte gBattleAnimBankTarget _080CCA58: - ldr r4, _080CCAA4 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CCAA4 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -4607,7 +4607,7 @@ _080CCA68: _080CCA72: strh r7, [r6, 0x20] strh r4, [r6, 0x22] - ldr r0, _080CCAA4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CCAA4 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4631,7 +4631,7 @@ _080CCA8A: strh r0, [r6, 0x20] b _080CCAC4 .align 2, 0 -_080CCAA4: .4byte gBattleAnimEnemyMonIndex +_080CCAA4: .4byte gBattleAnimBankTarget _080CCAA8: .4byte sub_80CCB00 _080CCAAC: .4byte gBattleAnimArgs _080CCAB0: @@ -4723,7 +4723,7 @@ _080CCB26: bne _080CCB5C ldr r1, _080CCB64 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 movs r0, 0x3 strh r0, [r4, 0x2E] ldr r0, _080CCB68 @ =sub_80782D8 @@ -4861,7 +4861,7 @@ sub_80CCC50: @ 80CCC50 ldr r4, _080CCC70 @ =gBattleAnimArgs ldrh r0, [r4, 0x4] strh r0, [r5, 0x2E] - ldr r0, _080CCC74 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CCC74 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4873,7 +4873,7 @@ sub_80CCC50: @ 80CCC50 b _080CCC7E .align 2, 0 _080CCC70: .4byte gBattleAnimArgs -_080CCC74: .4byte gBattleAnimPlayerMonIndex +_080CCC74: .4byte gBattleAnimBankAttacker _080CCC78: ldrh r0, [r4] ldrh r1, [r5, 0x20] @@ -4977,7 +4977,7 @@ sub_80CCD24: @ 80CCD24 adds r0, 0x8 strh r0, [r1, 0x2] _080CCD3A: - ldr r6, _080CCD9C @ =gBattleAnimPlayerMonIndex + ldr r6, _080CCD9C @ =gBattleAnimBankAttacker ldrb r0, [r6] movs r1, 0 bl sub_8077EE4 @@ -5022,7 +5022,7 @@ _080CCD78: b _080CCDB8 .align 2, 0 _080CCD98: .4byte gBattleAnimArgs -_080CCD9C: .4byte gBattleAnimPlayerMonIndex +_080CCD9C: .4byte gBattleAnimBankAttacker _080CCDA0: ldrb r0, [r6] bl sub_8079ED4 @@ -5207,7 +5207,7 @@ _080CCF00: .4byte sub_807861C sub_80CCF04: @ 80CCF04 push {r4-r6,lr} adds r4, r0, 0 - ldr r6, _080CCF5C @ =gBattleAnimEnemyMonIndex + ldr r6, _080CCF5C @ =gBattleAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_8077ABC @@ -5248,7 +5248,7 @@ sub_80CCF04: @ 80CCF04 pop {r0} bx r0 .align 2, 0 -_080CCF5C: .4byte gBattleAnimEnemyMonIndex +_080CCF5C: .4byte gBattleAnimBankTarget _080CCF60: .4byte 0x0000ffe8 _080CCF64: .4byte REG_BLDCNT _080CCF68: .4byte REG_BLDALPHA @@ -5531,7 +5531,7 @@ _080CD154: strh r0, [r4, 0x32] ldr r1, _080CD188 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CD18C @ =sub_8078394 str r0, [r4, 0x1C] pop {r4,r5} @@ -5552,13 +5552,13 @@ sub_80CD190: @ 80CD190 ldrsh r0, [r0, r1] cmp r0, 0 bne _080CD1AC - ldr r0, _080CD1A8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CD1A8 @ =gBattleAnimBankAttacker b _080CD1AE .align 2, 0 _080CD1A4: .4byte gBattleAnimArgs -_080CD1A8: .4byte gBattleAnimPlayerMonIndex +_080CD1A8: .4byte gBattleAnimBankAttacker _080CD1AC: - ldr r0, _080CD1F0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CD1F0 @ =gBattleAnimBankTarget _080CD1AE: ldrb r6, [r0] bl IsDoubleBattle @@ -5568,7 +5568,7 @@ _080CD1AE: movs r1, 0x2 adds r0, r6, 0 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080CD1F8 @@ -5590,7 +5590,7 @@ _080CD1AE: strh r0, [r5, 0x22] b _080CD248 .align 2, 0 -_080CD1F0: .4byte gBattleAnimEnemyMonIndex +_080CD1F0: .4byte gBattleAnimBankTarget _080CD1F4: .4byte gBattleAnimArgs _080CD1F8: ldr r4, _080CD218 @ =gBattleAnimArgs @@ -5640,7 +5640,7 @@ _080CD248: strh r0, [r5, 0x32] ldr r1, _080CD26C @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CD270 @ =sub_8078394 str r0, [r5, 0x1C] pop {r4-r6} @@ -5657,7 +5657,7 @@ sub_80CD274: @ 80CD274 push {r4,lr} adds r4, r0, 0 bl sub_8078650 - ldr r0, _080CD2A0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CD2A0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -5674,7 +5674,7 @@ sub_80CD274: @ 80CD274 strh r0, [r4, 0x22] b _080CD2C2 .align 2, 0 -_080CD2A0: .4byte gBattleAnimPlayerMonIndex +_080CD2A0: .4byte gBattleAnimBankAttacker _080CD2A4: .4byte gBattleAnimArgs _080CD2A8: ldr r2, _080CD2CC @ =gBattleAnimArgs @@ -5749,7 +5749,7 @@ sub_80CD328: @ 80CD328 push {r4,lr} adds r4, r0, 0 bl sub_8078650 - ldr r0, _080CD358 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CD358 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -5768,7 +5768,7 @@ sub_80CD328: @ 80CD328 strh r0, [r4, 0x34] b _080CD37E .align 2, 0 -_080CD358: .4byte gBattleAnimPlayerMonIndex +_080CD358: .4byte gBattleAnimBankAttacker _080CD35C: .4byte gBattleAnimArgs _080CD360: ldr r2, _080CD388 @ =gBattleAnimArgs @@ -5850,7 +5850,7 @@ sub_80CD3E0: @ 80CD3E0 ldr r1, _080CD400 @ =sub_80782D8 str r1, [r0, 0x1C] ldr r1, _080CD404 @ =sub_80CD408 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 @@ -5877,7 +5877,7 @@ _080CD41E: str r0, [r5, 0x1C] ldr r1, _080CD434 @ =sub_80CD408 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 b _080CD49E .align 2, 0 _080CD430: .4byte sub_80782D8 @@ -5917,7 +5917,7 @@ _080CD438: str r0, [r5, 0x1C] ldr r1, _080CD4B4 @ =sub_80CD4B8 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 movs r1, 0x80 lsls r1, 1 adds r0, r1, 0 @@ -5960,7 +5960,7 @@ sub_80CD4B8: @ 80CD4B8 str r0, [r2, 0x1C] ldr r1, _080CD4DC @ =sub_80CD4EC adds r0, r2, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 b _080CD4E4 .align 2, 0 _080CD4D8: .4byte sub_80782D8 @@ -5990,7 +5990,7 @@ sub_80CD4EC: @ 80CD4EC str r0, [r5, 0x1C] ldr r1, _080CD510 @ =sub_80CD5A8 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 b _080CD594 .align 2, 0 _080CD50C: .4byte sub_80782D8 @@ -6043,7 +6043,7 @@ _080CD54C: strh r1, [r5, 0x24] movs r0, 0x6 strh r0, [r5, 0x2E] - ldr r4, _080CD59C @ =gBattleAnimEnemyMonIndex + ldr r4, _080CD59C @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -6062,13 +6062,13 @@ _080CD54C: str r0, [r5, 0x1C] ldr r1, _080CD5A4 @ =sub_80CD654 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _080CD594: pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_080CD59C: .4byte gBattleAnimEnemyMonIndex +_080CD59C: .4byte gBattleAnimBankTarget _080CD5A0: .4byte sub_8078B34 _080CD5A4: .4byte sub_80CD654 thumb_func_end sub_80CD4EC @@ -6376,7 +6376,7 @@ sub_80CD7CC: @ 80CD7CC adds r4, r0, 0 movs r0, 0x6 strh r0, [r4, 0x2E] - ldr r5, _080CD80C @ =gBattleAnimPlayerMonIndex + ldr r5, _080CD80C @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -6397,14 +6397,14 @@ _080CD7EA: strh r0, [r4, 0x34] ldr r1, _080CD814 @ =sub_80CD81C adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CD818 @ =sub_8078458 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080CD80C: .4byte gBattleAnimPlayerMonIndex +_080CD80C: .4byte gBattleAnimBankAttacker _080CD810: .4byte gObjectBankIDs _080CD814: .4byte sub_80CD81C _080CD818: .4byte sub_8078458 @@ -6419,7 +6419,7 @@ sub_80CD81C: @ 80CD81C cmp r6, 0 bne _080CD858 ldr r1, _080CD898 @ =gObjectBankIDs - ldr r4, _080CD89C @ =gBattleAnimPlayerMonIndex + ldr r4, _080CD89C @ =gBattleAnimBankAttacker ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -6475,7 +6475,7 @@ _080CD892: bx r0 .align 2, 0 _080CD898: .4byte gObjectBankIDs -_080CD89C: .4byte gBattleAnimPlayerMonIndex +_080CD89C: .4byte gBattleAnimBankAttacker _080CD8A0: .4byte 0xfffffd00 _080CD8A4: .4byte sub_80CD9B8 thumb_func_end sub_80CD81C @@ -6486,7 +6486,7 @@ sub_80CD8A8: @ 80CD8A8 adds r4, r0, 0 movs r0, 0x4 strh r0, [r4, 0x2E] - ldr r5, _080CD8E8 @ =gBattleAnimPlayerMonIndex + ldr r5, _080CD8E8 @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -6507,14 +6507,14 @@ _080CD8C6: strh r0, [r4, 0x34] ldr r1, _080CD8F0 @ =sub_80CD9B8 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CD8F4 @ =sub_8078458 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080CD8E8: .4byte gBattleAnimPlayerMonIndex +_080CD8E8: .4byte gBattleAnimBankAttacker _080CD8EC: .4byte gObjectBankIDs _080CD8F0: .4byte sub_80CD9B8 _080CD8F4: .4byte sub_8078458 @@ -6551,7 +6551,7 @@ sub_80CD91C: @ 80CD91C cmp r0, 0 bne _080CD96C ldr r1, _080CD958 @ =gObjectBankIDs - ldr r4, _080CD95C @ =gBattleAnimPlayerMonIndex + ldr r4, _080CD95C @ =gBattleAnimBankAttacker ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -6574,7 +6574,7 @@ sub_80CD91C: @ 80CD91C b _080CD96A .align 2, 0 _080CD958: .4byte gObjectBankIDs -_080CD95C: .4byte gBattleAnimPlayerMonIndex +_080CD95C: .4byte gBattleAnimBankAttacker _080CD960: movs r0, 0x80 lsls r0, 3 @@ -6660,7 +6660,7 @@ _080CD9EA: _080CD9F0: strh r5, [r4, 0x30] ldr r1, _080CDA74 @ =gObjectBankIDs - ldr r2, _080CDA78 @ =gBattleAnimPlayerMonIndex + ldr r2, _080CDA78 @ =gBattleAnimBankAttacker ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] @@ -6724,7 +6724,7 @@ _080CDA2E: b _080CDAC2 .align 2, 0 _080CDA74: .4byte gObjectBankIDs -_080CDA78: .4byte gBattleAnimPlayerMonIndex +_080CDA78: .4byte gBattleAnimBankAttacker _080CDA7C: .4byte 0xfffffe00 _080CDA80: ldrh r0, [r4, 0x36] @@ -6773,7 +6773,7 @@ sub_80CDAC8: @ 80CDAC8 lsls r0, 3 adds r5, r0, r1 ldr r1, _080CDB10 @ =gObjectBankIDs - ldr r2, _080CDB14 @ =gBattleAnimPlayerMonIndex + ldr r2, _080CDB14 @ =gBattleAnimBankAttacker ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] @@ -6798,7 +6798,7 @@ sub_80CDAC8: @ 80CDAC8 .align 2, 0 _080CDB0C: .4byte gTasks _080CDB10: .4byte gObjectBankIDs -_080CDB14: .4byte gBattleAnimPlayerMonIndex +_080CDB14: .4byte gBattleAnimBankAttacker _080CDB18: .4byte gBattleAnimArgs _080CDB1C: strh r1, [r5, 0xC] @@ -7134,13 +7134,13 @@ sub_80CDD74: @ 80CDD74 ldrsh r0, [r6, r1] cmp r0, 0 bne _080CDD90 - ldr r4, _080CDD8C @ =gBattleAnimPlayerMonIndex + ldr r4, _080CDD8C @ =gBattleAnimBankAttacker b _080CDD92 .align 2, 0 _080CDD88: .4byte gBattleAnimArgs -_080CDD8C: .4byte gBattleAnimPlayerMonIndex +_080CDD8C: .4byte gBattleAnimBankAttacker _080CDD90: - ldr r4, _080CDDD0 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CDDD0 @ =gBattleAnimBankTarget _080CDD92: ldrb r0, [r4] movs r1, 0x2 @@ -7163,14 +7163,14 @@ _080CDD92: strh r0, [r5, 0x30] ldr r1, _080CDDD4 @ =sub_80CDEC0 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CDDD8 @ =sub_8078600 str r0, [r5, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080CDDD0: .4byte gBattleAnimEnemyMonIndex +_080CDDD0: .4byte gBattleAnimBankTarget _080CDDD4: .4byte sub_80CDEC0 _080CDDD8: .4byte sub_8078600 thumb_func_end sub_80CDD74 @@ -7179,7 +7179,7 @@ _080CDDD8: .4byte sub_8078600 sub_80CDDDC: @ 80CDDDC push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080CDE14 @ =gBattleAnimEnemyMonIndex + ldr r5, _080CDE14 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -7196,14 +7196,14 @@ sub_80CDDDC: @ 80CDDDC strh r0, [r4, 0x22] ldr r1, _080CDE1C @ =sub_80CDE78 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CDE20 @ =sub_8078600 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080CDE14: .4byte gBattleAnimEnemyMonIndex +_080CDE14: .4byte gBattleAnimBankTarget _080CDE18: .4byte 0x0000ffd0 _080CDE1C: .4byte sub_80CDE78 _080CDE20: .4byte sub_8078600 @@ -7213,7 +7213,7 @@ _080CDE20: .4byte sub_8078600 sub_80CDE24: @ 80CDE24 push {r4-r6,lr} adds r4, r0, 0 - ldr r5, _080CDE68 @ =gBattleAnimEnemyMonIndex + ldr r5, _080CDE68 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -7243,7 +7243,7 @@ sub_80CDE24: @ 80CDE24 pop {r0} bx r0 .align 2, 0 -_080CDE68: .4byte gBattleAnimEnemyMonIndex +_080CDE68: .4byte gBattleAnimBankTarget _080CDE6C: .4byte gBattleAnimArgs _080CDE70: .4byte 0x0000ffd0 _080CDE74: .4byte sub_80CDEC0 @@ -7268,7 +7268,7 @@ sub_80CDE78: @ 80CDE78 strh r0, [r4, 0x32] ldr r1, _080CDEA8 @ =sub_80CDEB0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CDEAC @ =sub_8078364 str r0, [r4, 0x1C] _080CDEA2: @@ -7343,13 +7343,13 @@ sub_80CDF0C: @ 80CDF0C ldrsh r0, [r6, r1] cmp r0, 0 bne _080CDF28 - ldr r4, _080CDF24 @ =gBattleAnimPlayerMonIndex + ldr r4, _080CDF24 @ =gBattleAnimBankAttacker b _080CDF2A .align 2, 0 _080CDF20: .4byte gBattleAnimArgs -_080CDF24: .4byte gBattleAnimPlayerMonIndex +_080CDF24: .4byte gBattleAnimBankAttacker _080CDF28: - ldr r4, _080CDF64 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CDF64 @ =gBattleAnimBankTarget _080CDF2A: ldrb r0, [r4] movs r1, 0 @@ -7378,7 +7378,7 @@ _080CDF2A: pop {r0} bx r0 .align 2, 0 -_080CDF64: .4byte gBattleAnimEnemyMonIndex +_080CDF64: .4byte gBattleAnimBankTarget _080CDF68: .4byte gBattleAnimArgs _080CDF6C: .4byte sub_80CDF70 thumb_func_end sub_80CDF0C @@ -7424,7 +7424,7 @@ _080CDFAC: sub_80CDFB0: @ 80CDFB0 push {r4-r6,lr} adds r4, r0, 0 - ldr r6, _080CDFF8 @ =gBattleAnimPlayerMonIndex + ldr r6, _080CDFF8 @ =gBattleAnimBankAttacker ldrb r0, [r6] movs r1, 0x2 bl sub_8077ABC @@ -7456,7 +7456,7 @@ sub_80CDFB0: @ 80CDFB0 pop {r0} bx r0 .align 2, 0 -_080CDFF8: .4byte gBattleAnimPlayerMonIndex +_080CDFF8: .4byte gBattleAnimBankAttacker _080CDFFC: .4byte sub_80CE000 thumb_func_end sub_80CDFB0 @@ -7551,7 +7551,7 @@ sub_80CE09C: @ 80CE09C ldrsh r0, [r6, r1] cmp r0, 0 bne _080CE0E6 - ldr r4, _080CE0FC @ =gBattleAnimPlayerMonIndex + ldr r4, _080CE0FC @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -7593,7 +7593,7 @@ _080CE0F6: pop {r0} bx r0 .align 2, 0 -_080CE0FC: .4byte gBattleAnimPlayerMonIndex +_080CE0FC: .4byte gBattleAnimBankAttacker _080CE100: .4byte gBattleAnimArgs _080CE104: .4byte 0x0000ffff thumb_func_end sub_80CE09C @@ -7708,7 +7708,7 @@ _080CE1C0: strb r0, [r2] movs r0, 0x1E strh r0, [r5, 0x2E] - ldr r4, _080CE204 @ =gBattleAnimPlayerMonIndex + ldr r4, _080CE204 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -7725,13 +7725,13 @@ _080CE1C0: str r0, [r5, 0x1C] ldr r1, _080CE20C @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _080CE1FC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080CE204: .4byte gBattleAnimPlayerMonIndex +_080CE204: .4byte gBattleAnimBankAttacker _080CE208: .4byte sub_8078B34 _080CE20C: .4byte move_anim_8072740 thumb_func_end sub_80CE1AC @@ -7926,7 +7926,7 @@ _080CE366: sub_80CE36C: @ 80CE36C push {r4,lr} adds r4, r0, 0 - ldr r0, _080CE3A4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CE3A4 @ =gBattleAnimBankAttacker ldrb r0, [r0] movs r1, 0x2 bl sub_8077ABC @@ -7951,7 +7951,7 @@ sub_80CE36C: @ 80CE36C pop {r0} bx r0 .align 2, 0 -_080CE3A4: .4byte gBattleAnimPlayerMonIndex +_080CE3A4: .4byte gBattleAnimBankAttacker _080CE3A8: .4byte gBattleAnimArgs _080CE3AC: .4byte sub_80CE3B0 thumb_func_end sub_80CE36C @@ -8339,7 +8339,7 @@ _080CE68E: strh r0, [r5, 0x2E] ldrh r0, [r6, 0x4] strh r0, [r5, 0x30] - ldr r4, _080CE6F8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CE6F8 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -8384,10 +8384,10 @@ _080CE68E: b _080CE726 .align 2, 0 _080CE6F4: .4byte gBattleAnimArgs -_080CE6F8: .4byte gBattleAnimEnemyMonIndex +_080CE6F8: .4byte gBattleAnimBankTarget _080CE6FC: .4byte 0xffffec00 _080CE700: - ldr r0, _080CE740 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CE740 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -8417,7 +8417,7 @@ _080CE726: strh r0, [r5, 0x38] b _080CE784 .align 2, 0 -_080CE740: .4byte gBattleAnimPlayerMonIndex +_080CE740: .4byte gBattleAnimBankAttacker _080CE744: .4byte 0xfffff600 _080CE748: ldrh r0, [r5, 0x20] @@ -8515,7 +8515,7 @@ sub_80CE7E0: @ 80CE7E0 ldr r1, _080CE870 @ =gTasks adds r6, r0, r1 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x8] @@ -8615,7 +8615,7 @@ _080CE8B4: _080CE8C6: ldr r0, _080CE8E8 @ =sub_80CE910 str r0, [r6] - ldr r0, _080CE8EC @ =gBattleAnimPlayerMonIndex + ldr r0, _080CE8EC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -8630,7 +8630,7 @@ _080CE8C6: .align 2, 0 _080CE8E4: .4byte sub_80CE974 _080CE8E8: .4byte sub_80CE910 -_080CE8EC: .4byte gBattleAnimPlayerMonIndex +_080CE8EC: .4byte gBattleAnimBankAttacker _080CE8F0: .4byte 0x0000fdff _080CE8F4: movs r2, 0x80 @@ -8664,7 +8664,7 @@ sub_80CE910: @ 80CE910 ldrsh r0, [r0, r1] cmp r0, 0 bne _080CE968 - ldr r0, _080CE948 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CE948 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -8679,7 +8679,7 @@ sub_80CE910: @ 80CE910 b _080CE956 .align 2, 0 _080CE944: .4byte gTasks -_080CE948: .4byte gBattleAnimPlayerMonIndex +_080CE948: .4byte gBattleAnimBankAttacker _080CE94C: movs r0, 0x80 lsls r0, 19 @@ -8782,7 +8782,7 @@ sub_80CEA04: @ 80CEA04 push {r4,lr} adds r4, r0, 0 ldr r1, _080CEA18 @ =move_anim_8072740 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CEA1C @ =sub_8078600 str r0, [r4, 0x1C] pop {r4} @@ -8964,7 +8964,7 @@ _080CEB48: _080CEB64: .4byte gBattleAnimArgs _080CEB68: .4byte gUnknown_083D712C _080CEB6C: - ldr r4, _080CEBBC @ =gBattleAnimEnemyMonIndex + ldr r4, _080CEBBC @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -9002,7 +9002,7 @@ _080CEB86: pop {r0} bx r0 .align 2, 0 -_080CEBBC: .4byte gBattleAnimEnemyMonIndex +_080CEBBC: .4byte gBattleAnimBankTarget _080CEBC0: .4byte sub_80CEC1C thumb_func_end sub_80CEB0C @@ -9165,7 +9165,7 @@ _080CECE4: .4byte gUnknown_083D712C sub_80CECE8: @ 80CECE8 push {r4-r7,lr} adds r6, r0, 0 - ldr r7, _080CED6C @ =gBattleAnimPlayerMonIndex + ldr r7, _080CED6C @ =gBattleAnimBankAttacker ldrb r0, [r7] bl GetBankSide lsls r0, 24 @@ -9225,7 +9225,7 @@ _080CED06: pop {r0} bx r0 .align 2, 0 -_080CED6C: .4byte gBattleAnimPlayerMonIndex +_080CED6C: .4byte gBattleAnimBankAttacker _080CED70: .4byte gBattleAnimArgs _080CED74: .4byte sub_80CED78 thumb_func_end sub_80CECE8 @@ -9316,7 +9316,7 @@ _080CEE10: .4byte gBattleAnimArgs _080CEE14: ldr r6, _080CEE50 @ =0x0000fff0 _080CEE16: - ldr r4, _080CEE54 @ =gBattleAnimPlayerMonIndex + ldr r4, _080CEE54 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -9337,13 +9337,13 @@ _080CEE16: str r0, [r5, 0x1C] ldr r1, _080CEE5C @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080CEE50: .4byte 0x0000fff0 -_080CEE54: .4byte gBattleAnimPlayerMonIndex +_080CEE54: .4byte gBattleAnimBankAttacker _080CEE58: .4byte sub_80782D8 _080CEE5C: .4byte move_anim_8072740 thumb_func_end sub_80CEDF0 @@ -9519,13 +9519,13 @@ sub_80CEF9C: @ 80CEF9C ldrsh r0, [r0, r1] cmp r0, 0 bne _080CEFB8 - ldr r0, _080CEFB4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CEFB4 @ =gBattleAnimBankAttacker b _080CEFBA .align 2, 0 _080CEFB0: .4byte gBattleAnimArgs -_080CEFB4: .4byte gBattleAnimPlayerMonIndex +_080CEFB4: .4byte gBattleAnimBankAttacker _080CEFB8: - ldr r0, _080CEFF8 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CEFF8 @ =gBattleAnimBankTarget _080CEFBA: ldrb r4, [r0] adds r0, r4, 0 @@ -9547,14 +9547,14 @@ _080CEFBA: bl StartSpriteAnim ldr r1, _080CF000 @ =sub_80CF008 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CF004 @ =sub_8078600 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080CEFF8: .4byte gBattleAnimEnemyMonIndex +_080CEFF8: .4byte gBattleAnimBankTarget _080CEFFC: .4byte gBattleAnimArgs _080CF000: .4byte sub_80CF008 _080CF004: .4byte sub_8078600 @@ -9572,7 +9572,7 @@ sub_80CF008: @ 80CF008 bne _080CF030 ldr r1, _080CF038 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldrh r1, [r4, 0x30] lsls r1, 24 lsrs r1, 24 @@ -9598,13 +9598,13 @@ sub_80CF040: @ 80CF040 ldrsh r0, [r0, r1] cmp r0, 0 bne _080CF05C - ldr r0, _080CF058 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CF058 @ =gBattleAnimBankAttacker b _080CF05E .align 2, 0 _080CF054: .4byte gBattleAnimArgs -_080CF058: .4byte gBattleAnimPlayerMonIndex +_080CF058: .4byte gBattleAnimBankAttacker _080CF05C: - ldr r0, _080CF07C @ =gBattleAnimEnemyMonIndex + ldr r0, _080CF07C @ =gBattleAnimBankTarget _080CF05E: ldrb r0, [r0] adds r1, r4, 0 @@ -9613,14 +9613,14 @@ _080CF05E: strh r0, [r4, 0x2E] ldr r1, _080CF080 @ =sub_80CF088 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CF084 @ =sub_80785E4 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 -_080CF07C: .4byte gBattleAnimEnemyMonIndex +_080CF07C: .4byte gBattleAnimBankTarget _080CF080: .4byte sub_80CF088 _080CF084: .4byte sub_80785E4 thumb_func_end sub_80CF040 @@ -9641,7 +9641,7 @@ sub_80CF088: @ 80CF088 bl StartSpriteAffineAnim ldr r1, _080CF0B4 @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CF0B8 @ =sub_80785E4 str r0, [r4, 0x1C] _080CF0AE: @@ -9662,13 +9662,13 @@ sub_80CF0BC: @ 80CF0BC ldrsh r0, [r0, r1] cmp r0, 0 bne _080CF0D8 - ldr r0, _080CF0D4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CF0D4 @ =gBattleAnimBankAttacker b _080CF0DA .align 2, 0 _080CF0D0: .4byte gBattleAnimArgs -_080CF0D4: .4byte gBattleAnimPlayerMonIndex +_080CF0D4: .4byte gBattleAnimBankAttacker _080CF0D8: - ldr r0, _080CF12C @ =gBattleAnimEnemyMonIndex + ldr r0, _080CF12C @ =gBattleAnimBankTarget _080CF0DA: ldrb r5, [r0] adds r0, r5, 0 @@ -9702,14 +9702,14 @@ _080CF102: strh r6, [r4, 0x36] ldr r1, _080CF130 @ =sub_80CF138 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CF134 @ =sub_80785E4 str r0, [r4, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080CF12C: .4byte gBattleAnimEnemyMonIndex +_080CF12C: .4byte gBattleAnimBankTarget _080CF130: .4byte sub_80CF138 _080CF134: .4byte sub_80785E4 thumb_func_end sub_80CF0BC @@ -9808,13 +9808,13 @@ sub_80CF1C8: @ 80CF1C8 ldrsh r0, [r0, r1] cmp r0, 0 bne _080CF1E4 - ldr r0, _080CF1E0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CF1E0 @ =gBattleAnimBankAttacker b _080CF1E6 .align 2, 0 _080CF1DC: .4byte gBattleAnimArgs -_080CF1E0: .4byte gBattleAnimPlayerMonIndex +_080CF1E0: .4byte gBattleAnimBankAttacker _080CF1E4: - ldr r0, _080CF208 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CF208 @ =gBattleAnimBankTarget _080CF1E6: ldrb r4, [r0] adds r0, r4, 0 @@ -9831,7 +9831,7 @@ _080CF1E6: movs r0, 0x2 b _080CF216 .align 2, 0 -_080CF208: .4byte gBattleAnimEnemyMonIndex +_080CF208: .4byte gBattleAnimBankTarget _080CF20C: adds r0, r5, 0 movs r1, 0x1 @@ -9868,7 +9868,7 @@ sub_80CF228: @ 80CF228 bl StartSpriteAnim ldr r1, _080CF25C @ =sub_80CF264 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080CF260 @ =sub_8078600 str r0, [r4, 0x1C] _080CF256: @@ -9922,7 +9922,7 @@ sub_80CF280: @ 80CF280 strh r0, [r4, 0x36] ldr r1, _080CF2C8 @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r1, _080CF2CC @ =sub_8078278 str r1, [r4, 0x1C] adds r0, r4, 0 @@ -9945,13 +9945,13 @@ sub_80CF2D0: @ 80CF2D0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080CF2EC - ldr r0, _080CF2E8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CF2E8 @ =gBattleAnimBankAttacker b _080CF2EE .align 2, 0 _080CF2E4: .4byte gBattleAnimArgs -_080CF2E8: .4byte gBattleAnimPlayerMonIndex +_080CF2E8: .4byte gBattleAnimBankAttacker _080CF2EC: - ldr r0, _080CF308 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CF308 @ =gBattleAnimBankTarget _080CF2EE: ldrb r0, [r0] adds r1, r4, 0 @@ -9965,7 +9965,7 @@ _080CF2EE: pop {r0} bx r0 .align 2, 0 -_080CF308: .4byte gBattleAnimEnemyMonIndex +_080CF308: .4byte gBattleAnimBankTarget _080CF30C: .4byte sub_80CF310 thumb_func_end sub_80CF2D0 @@ -10075,7 +10075,7 @@ _080CF3C0: .4byte gSprites sub_80CF3C4: @ 80CF3C4 push {r4-r6,lr} adds r5, r0, 0 - ldr r4, _080CF40C @ =gBattleAnimPlayerMonIndex + ldr r4, _080CF40C @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -10089,7 +10089,7 @@ sub_80CF3C4: @ 80CF3C4 lsrs r0, 24 strh r0, [r5, 0x22] ldr r1, _080CF410 @ =gObjectBankIDs - ldr r0, _080CF414 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CF414 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r6, [r0] @@ -10106,9 +10106,9 @@ sub_80CF3C4: @ 80CF3C4 adds r1, r0, 0 b _080CF426 .align 2, 0 -_080CF40C: .4byte gBattleAnimPlayerMonIndex +_080CF40C: .4byte gBattleAnimBankAttacker _080CF410: .4byte gObjectBankIDs -_080CF414: .4byte gBattleAnimEnemyMonIndex +_080CF414: .4byte gBattleAnimBankTarget _080CF418: .4byte gBattleAnimArgs _080CF41C: ldr r1, _080CF450 @ =gBattleAnimArgs @@ -10159,7 +10159,7 @@ sub_80CF458: @ 80CF458 str r0, [r4, 0x1C] ldr r1, _080CF48C @ =sub_80CF490 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -10182,7 +10182,7 @@ sub_80CF490: @ 80CF490 ldr r1, _080CF4B0 @ =sub_8078B34 str r1, [r0, 0x1C] ldr r1, _080CF4B4 @ =sub_80CF4B8 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 @@ -10217,7 +10217,7 @@ sub_80CF4D8: @ 80CF4D8 lsls r4, 24 lsrs r4, 24 ldr r1, _080CF504 @ =gObjectBankIDs - ldr r0, _080CF508 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CF508 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -10235,7 +10235,7 @@ sub_80CF4D8: @ 80CF4D8 bx r0 .align 2, 0 _080CF504: .4byte gObjectBankIDs -_080CF508: .4byte gBattleAnimPlayerMonIndex +_080CF508: .4byte gBattleAnimBankAttacker _080CF50C: .4byte gTasks _080CF510: .4byte sub_80CF514 thumb_func_end sub_80CF4D8 @@ -10246,7 +10246,7 @@ sub_80CF514: @ 80CF514 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080CF544 @ =gObjectBankIDs - ldr r0, _080CF548 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CF548 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r1, r0, r1 ldrb r4, [r1] @@ -10267,7 +10267,7 @@ sub_80CF514: @ 80CF514 b _080CF55E .align 2, 0 _080CF544: .4byte gObjectBankIDs -_080CF548: .4byte gBattleAnimPlayerMonIndex +_080CF548: .4byte gBattleAnimBankAttacker _080CF54C: .4byte gTasks _080CF550: ldr r2, _080CF590 @ =gTasks @@ -10382,7 +10382,7 @@ sub_80CF610: @ 80CF610 ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r0, _080CF65C @ =gBattleAnimPlayerMonIndex + ldr r0, _080CF65C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -10404,7 +10404,7 @@ sub_80CF610: @ 80CF610 b _080CF674 .align 2, 0 _080CF658: .4byte gBattleAnimArgs -_080CF65C: .4byte gBattleAnimPlayerMonIndex +_080CF65C: .4byte gBattleAnimBankAttacker _080CF660: movs r1, 0x4 ldrsh r0, [r5, r1] @@ -10421,7 +10421,7 @@ _080CF674: str r0, [r4, 0x1C] ldr r1, _080CF68C @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -10440,7 +10440,7 @@ sub_80CF690: @ 80CF690 str r0, [r4, 0x1C] ldr r1, _080CF6B0 @ =sub_80CF6B4 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -10462,7 +10462,7 @@ sub_80CF6B4: @ 80CF6B4 ldr r1, _080CF6D4 @ =sub_8078B34 str r1, [r0, 0x1C] ldr r1, _080CF6D8 @ =move_anim_8072740 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 @@ -10489,7 +10489,7 @@ sub_80CF6DC: @ 80CF6DC .align 2, 0 _080CF6FC: .4byte gBattleAnimArgs _080CF700: - ldr r0, _080CF7C8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CF7C8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -10509,7 +10509,7 @@ _080CF722: adds r0, r5, 0 movs r1, 0x1 bl sub_80787B0 - ldr r4, _080CF7D0 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CF7D0 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -10575,7 +10575,7 @@ _080CF794: str r0, [r5, 0x1C] ldr r1, _080CF7DC @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 add sp, 0x4 pop {r3} mov r8, r3 @@ -10583,9 +10583,9 @@ _080CF794: pop {r0} bx r0 .align 2, 0 -_080CF7C8: .4byte gBattleAnimPlayerMonIndex +_080CF7C8: .4byte gBattleAnimBankAttacker _080CF7CC: .4byte gBattleAnimArgs -_080CF7D0: .4byte gBattleAnimEnemyMonIndex +_080CF7D0: .4byte gBattleAnimBankTarget _080CF7D4: .4byte 0xffffa000 _080CF7D8: .4byte sub_8078B34 _080CF7DC: .4byte move_anim_8072740 @@ -11068,7 +11068,7 @@ _080CFB68: b _080CFBCA _080CFB70: ldr r1, _080CFBB4 @ =gBanksBySide - ldr r0, _080CFBB8 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CFBB8 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -11102,7 +11102,7 @@ _080CFB70: b _080CFBC8 .align 2, 0 _080CFBB4: .4byte gBanksBySide -_080CFBB8: .4byte gBattleAnimEnemyMonIndex +_080CFBB8: .4byte gBattleAnimBankTarget _080CFBBC: .4byte gTasks _080CFBC0: .4byte gBattleAnimArgs _080CFBC4: @@ -11111,7 +11111,7 @@ _080CFBC4: _080CFBC8: strh r0, [r2, 0x4] _080CFBCA: - ldr r5, _080CFC24 @ =gBattleAnimPlayerMonIndex + ldr r5, _080CFC24 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_8077ABC @@ -11137,11 +11137,11 @@ _080CFBCA: ands r0, r1 cmp r0, 0 beq _080CFC34 - ldr r4, _080CFC30 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CFC30 @ =gBattleAnimBankTarget ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080CFC34 @@ -11152,13 +11152,13 @@ _080CFBCA: bl sub_807A3FC b _080CFC56 .align 2, 0 -_080CFC24: .4byte gBattleAnimPlayerMonIndex +_080CFC24: .4byte gBattleAnimBankAttacker _080CFC28: .4byte gTasks _080CFC2C: .4byte gBattleTypeFlags -_080CFC30: .4byte gBattleAnimEnemyMonIndex +_080CFC30: .4byte gBattleAnimBankTarget _080CFC34: mov r5, sp - ldr r4, _080CFC90 @ =gBattleAnimEnemyMonIndex + ldr r4, _080CFC90 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -11203,7 +11203,7 @@ _080CFC56: subs r0, r2, r1 b _080CFC9E .align 2, 0 -_080CFC90: .4byte gBattleAnimEnemyMonIndex +_080CFC90: .4byte gBattleAnimBankTarget _080CFC94: .4byte gTasks _080CFC98: .4byte gBattleAnimArgs _080CFC9C: @@ -11301,7 +11301,7 @@ _080CFD3C: asrs r0, 16 cmp r0, 0x3F ble _080CFDB4 - ldr r0, _080CFD84 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CFD84 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079E90 lsls r0, 24 @@ -11315,14 +11315,14 @@ _080CFD3C: .align 2, 0 _080CFD7C: .4byte gTasks _080CFD80: .4byte gBattleAnimArgs -_080CFD84: .4byte gBattleAnimEnemyMonIndex +_080CFD84: .4byte gBattleAnimBankTarget _080CFD88: .4byte 0x0000ffc0 _080CFD8C: lsls r0, r1, 16 asrs r0, 16 cmp r0, 0x3F ble _080CFDB4 - ldr r0, _080CFDAC @ =gBattleAnimEnemyMonIndex + ldr r0, _080CFDAC @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079E90 lsls r0, 24 @@ -11334,10 +11334,10 @@ _080CFD8C: adds r0, r1 b _080CFDC4 .align 2, 0 -_080CFDAC: .4byte gBattleAnimEnemyMonIndex +_080CFDAC: .4byte gBattleAnimBankTarget _080CFDB0: .4byte 0x0000ffc0 _080CFDB4: - ldr r0, _080CFDF0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080CFDF0 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079E90 lsls r0, 24 @@ -11369,7 +11369,7 @@ _080CFDDC: pop {r0} bx r0 .align 2, 0 -_080CFDF0: .4byte gBattleAnimEnemyMonIndex +_080CFDF0: .4byte gBattleAnimBankTarget _080CFDF4: .4byte gTasks _080CFDF8: .4byte sub_80CFA20 thumb_func_end sub_80CFB04 @@ -11466,7 +11466,7 @@ sub_80CFE9C: @ 80CFE9C adds r5, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r4, _080CFF3C @ =gBattleAnimEnemyMonIndex + ldr r4, _080CFF3C @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -11482,7 +11482,7 @@ sub_80CFE9C: @ 80CFE9C adds r0, r1 lsls r0, 16 lsrs r7, r0, 16 - ldr r0, _080CFF44 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CFF44 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11530,15 +11530,15 @@ _080CFEE0: str r0, [r5, 0x1C] ldr r1, _080CFF4C @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_080CFF3C: .4byte gBattleAnimEnemyMonIndex +_080CFF3C: .4byte gBattleAnimBankTarget _080CFF40: .4byte gBattleAnimArgs -_080CFF44: .4byte gBattleAnimPlayerMonIndex +_080CFF44: .4byte gBattleAnimBankAttacker _080CFF48: .4byte sub_8078C00 _080CFF4C: .4byte move_anim_8072740 thumb_func_end sub_80CFE9C @@ -11568,7 +11568,7 @@ sub_80CFF68: @ 80CFF68 lsls r0, 16 asrs r0, 24 strh r0, [r4, 0x24] - ldr r0, _080CFFD4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080CFFD4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11613,7 +11613,7 @@ _080CFFCC: pop {r0} bx r0 .align 2, 0 -_080CFFD4: .4byte gBattleAnimPlayerMonIndex +_080CFFD4: .4byte gBattleAnimBankAttacker thumb_func_end sub_80CFF68 thumb_func_start sub_80CFFD8 @@ -11624,7 +11624,7 @@ sub_80CFFD8: @ 80CFFD8 bl sub_80787B0 movs r0, 0x14 strh r0, [r4, 0x2E] - ldr r5, _080D0024 @ =gBattleAnimEnemyMonIndex + ldr r5, _080D0024 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -11647,12 +11647,12 @@ sub_80CFFD8: @ 80CFFD8 strb r0, [r2] ldr r1, _080D002C @ =sub_80D0030 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080D0024: .4byte gBattleAnimEnemyMonIndex +_080D0024: .4byte gBattleAnimBankTarget _080D0028: .4byte sub_8078B34 _080D002C: .4byte sub_80D0030 thumb_func_end sub_80CFFD8 @@ -11781,7 +11781,7 @@ sub_80D0118: @ 80D0118 adds r4, r0, 0 movs r1, 0 bl sub_80787B0 - ldr r0, _080D0168 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D0168 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11806,7 +11806,7 @@ _080D0136: str r0, [r4, 0x1C] ldr r1, _080D0174 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 @@ -11814,7 +11814,7 @@ _080D0136: pop {r0} bx r0 .align 2, 0 -_080D0168: .4byte gBattleAnimPlayerMonIndex +_080D0168: .4byte gBattleAnimBankAttacker _080D016C: .4byte gBattleAnimArgs _080D0170: .4byte sub_8078114 _080D0174: .4byte move_anim_8072740 @@ -11856,7 +11856,7 @@ _080D01A4: strh r0, [r5, 0x22] movs r0, 0x6 strh r0, [r5, 0x2E] - ldr r4, _080D0200 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D0200 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -11875,7 +11875,7 @@ _080D01A4: str r0, [r5, 0x1C] ldr r1, _080D0208 @ =sub_80D020C adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r3} mov r8, r3 pop {r4-r7} @@ -11885,7 +11885,7 @@ _080D01A4: _080D01F4: .4byte 0x0000ffe0 _080D01F8: .4byte 0x0000fff0 _080D01FC: .4byte gBattleAnimArgs -_080D0200: .4byte gBattleAnimEnemyMonIndex +_080D0200: .4byte gBattleAnimBankTarget _080D0204: .4byte sub_8078B34 _080D0208: .4byte sub_80D020C thumb_func_end sub_80D0178 @@ -11949,7 +11949,7 @@ _080D025C: movs r0, 0x6 strh r0, [r5, 0x2E] strh r1, [r5, 0x30] - ldr r4, _080D02C8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D02C8 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -11984,7 +11984,7 @@ _080D025C: _080D02BC: .4byte 0x0000ffe0 _080D02C0: .4byte 0x0000fff0 _080D02C4: .4byte gBattleAnimArgs -_080D02C8: .4byte gBattleAnimEnemyMonIndex +_080D02C8: .4byte gBattleAnimBankTarget _080D02CC: .4byte sub_80D02D0 thumb_func_end sub_80D0228 @@ -12125,7 +12125,7 @@ sub_80D03C4: @ 80D03C4 lsls r5, 24 lsrs r5, 24 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -12185,7 +12185,7 @@ sub_80D0428: @ 80D0428 cmp r1, r0 bne _080D0478 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -12223,7 +12223,7 @@ sub_80D0488: @ 80D0488 ldr r0, _080D04D4 @ =gTasks adds r4, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r5, 0 @@ -12238,7 +12238,7 @@ sub_80D0488: @ 80D0488 strh r0, [r4, 0x10] strh r5, [r4, 0x12] strh r5, [r4, 0x14] - ldr r0, _080D04D8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D04D8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079E90 lsls r0, 24 @@ -12251,7 +12251,7 @@ sub_80D0488: @ 80D0488 bx r0 .align 2, 0 _080D04D4: .4byte gTasks -_080D04D8: .4byte gBattleAnimPlayerMonIndex +_080D04D8: .4byte gBattleAnimBankAttacker _080D04DC: .4byte sub_80D04E0 thumb_func_end sub_80D0488 @@ -12593,7 +12593,7 @@ _080D0770: .4byte gTasks _080D0774: .4byte gBattleAnimArgs _080D0778: ldrb r0, [r5] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -12775,7 +12775,7 @@ sub_80D08C8: @ 80D08C8 ldr r0, _080D08F8 @ =gTasks adds r4, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -12821,7 +12821,7 @@ _080D092C: .4byte gTasks sub_80D0930: @ 80D0930 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080D0960 @ =gBattleAnimPlayerMonIndex + ldr r5, _080D0960 @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -12840,7 +12840,7 @@ sub_80D0930: @ 80D0930 movs r0, 0x40 b _080D097E .align 2, 0 -_080D0960: .4byte gBattleAnimPlayerMonIndex +_080D0960: .4byte gBattleAnimBankAttacker _080D0964: adds r0, r4, 0 movs r1, 0x1 @@ -12855,7 +12855,7 @@ _080D0964: ldr r0, _080D09B0 @ =0x0000ffc0 _080D097E: strh r0, [r4, 0x30] - ldr r0, _080D09B4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D09B4 @ =gBattleAnimBankAttacker ldrb r0, [r0] movs r1, 0x3 bl sub_8077ABC @@ -12870,7 +12870,7 @@ _080D097E: strh r1, [r4, 0x36] ldr r1, _080D09B8 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D09BC @ =sub_8078394 str r0, [r4, 0x1C] pop {r4,r5} @@ -12878,7 +12878,7 @@ _080D097E: bx r0 .align 2, 0 _080D09B0: .4byte 0x0000ffc0 -_080D09B4: .4byte gBattleAnimPlayerMonIndex +_080D09B4: .4byte gBattleAnimBankAttacker _080D09B8: .4byte move_anim_8072740 _080D09BC: .4byte sub_8078394 thumb_func_end sub_80D0930 @@ -12892,13 +12892,13 @@ sub_80D09C0: @ 80D09C0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D09DC - ldr r0, _080D09D8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D09D8 @ =gBattleAnimBankAttacker b _080D09DE .align 2, 0 _080D09D4: .4byte gBattleAnimArgs -_080D09D8: .4byte gBattleAnimPlayerMonIndex +_080D09D8: .4byte gBattleAnimBankAttacker _080D09DC: - ldr r0, _080D0A3C @ =gBattleAnimEnemyMonIndex + ldr r0, _080D0A3C @ =gBattleAnimBankTarget _080D09DE: ldrb r5, [r0] adds r0, r5, 0 @@ -12939,14 +12939,14 @@ _080D09F8: _080D0A2A: ldr r1, _080D0A44 @ =move_anim_8074EE0 adds r0, r6, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D0A48 @ =sub_80785E4 str r0, [r6, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080D0A3C: .4byte gBattleAnimEnemyMonIndex +_080D0A3C: .4byte gBattleAnimBankTarget _080D0A40: .4byte gBattleAnimArgs _080D0A44: .4byte move_anim_8074EE0 _080D0A48: .4byte sub_80785E4 @@ -12963,7 +12963,7 @@ sub_80D0A4C: @ 80D0A4C ldr r0, _080D0A80 @ =gTasks adds r4, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -13019,7 +13019,7 @@ sub_80D0AB8: @ 80D0AB8 ldr r0, _080D0B2C @ =gTasks adds r4, r1, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r2, 0 @@ -13050,7 +13050,7 @@ sub_80D0AB8: @ 80D0AB8 strh r2, [r4, 0x18] movs r0, 0x2 strh r0, [r4, 0x1A] - ldr r0, _080D0B34 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D0B34 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -13070,7 +13070,7 @@ _080D0B22: .align 2, 0 _080D0B2C: .4byte gTasks _080D0B30: .4byte gSprites -_080D0B34: .4byte gBattleAnimPlayerMonIndex +_080D0B34: .4byte gBattleAnimBankAttacker _080D0B38: .4byte sub_80D0B3C thumb_func_end sub_80D0AB8 @@ -13260,7 +13260,7 @@ sub_80D0C88: @ 80D0C88 lsls r1, 3 ldr r0, _080D0CD8 @ =gTasks adds r5, r1, r0 - ldr r4, _080D0CDC @ =gBattleAnimEnemyMonIndex + ldr r4, _080D0CDC @ =gBattleAnimBankTarget ldrb r0, [r4] bl sub_8077FC0 lsls r0, 24 @@ -13290,7 +13290,7 @@ sub_80D0C88: @ 80D0C88 b _080D0CF0 .align 2, 0 _080D0CD8: .4byte gTasks -_080D0CDC: .4byte gBattleAnimEnemyMonIndex +_080D0CDC: .4byte gBattleAnimBankTarget _080D0CE0: .4byte gUnknown_030042C0 _080D0CE4: .4byte REG_BG1HOFS _080D0CE8: @@ -13472,7 +13472,7 @@ _080D0E2C: .4byte gUnknown_03004DC0 sub_80D0E30: @ 80D0E30 push {r4-r6,lr} adds r4, r0, 0 - ldr r6, _080D0E84 @ =gBattleAnimEnemyMonIndex + ldr r6, _080D0E84 @ =gBattleAnimBankTarget ldrb r0, [r6] movs r1, 0 bl sub_8077ABC @@ -13509,7 +13509,7 @@ sub_80D0E30: @ 80D0E30 pop {r0} bx r0 .align 2, 0 -_080D0E84: .4byte gBattleAnimEnemyMonIndex +_080D0E84: .4byte gBattleAnimBankTarget _080D0E88: .4byte sub_80D0E8C thumb_func_end sub_80D0E30 @@ -13709,13 +13709,13 @@ sub_80D0FD8: @ 80D0FD8 adds r1, r0, 0 cmp r2, 0 bne _080D1004 - ldr r0, _080D1000 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D1000 @ =gBattleAnimBankAttacker b _080D1006 .align 2, 0 _080D0FFC: .4byte gBattleAnimArgs -_080D1000: .4byte gBattleAnimPlayerMonIndex +_080D1000: .4byte gBattleAnimBankAttacker _080D1004: - ldr r0, _080D1040 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D1040 @ =gBattleAnimBankTarget _080D1006: ldrb r5, [r0] ldrb r1, [r1, 0x6] @@ -13729,7 +13729,7 @@ _080D1006: movs r1, 0x2 adds r0, r5, 0 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D107E @@ -13744,7 +13744,7 @@ _080D1006: movs r1, 0 b _080D1048 .align 2, 0 -_080D1040: .4byte gBattleAnimEnemyMonIndex +_080D1040: .4byte gBattleAnimBankTarget _080D1044: adds r0, r5, 0 movs r1, 0x2 @@ -13826,18 +13826,18 @@ sub_80D10B8: @ 80D10B8 ldrsh r0, [r0, r2] cmp r0, 0 bne _080D10F0 - ldr r0, _080D10E8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D10E8 @ =gBattleAnimBankAttacker ldrb r7, [r0] - ldr r0, _080D10EC @ =gBattleAnimEnemyMonIndex + ldr r0, _080D10EC @ =gBattleAnimBankTarget b _080D10F6 .align 2, 0 _080D10E4: .4byte gBattleAnimArgs -_080D10E8: .4byte gBattleAnimPlayerMonIndex -_080D10EC: .4byte gBattleAnimEnemyMonIndex +_080D10E8: .4byte gBattleAnimBankAttacker +_080D10EC: .4byte gBattleAnimBankTarget _080D10F0: - ldr r0, _080D1110 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D1110 @ =gBattleAnimBankTarget ldrb r7, [r0] - ldr r0, _080D1114 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D1114 @ =gBattleAnimBankAttacker _080D10F6: ldrb r0, [r0] mov r8, r0 @@ -13852,8 +13852,8 @@ _080D10F6: str r1, [sp, 0x4] b _080D1124 .align 2, 0 -_080D1110: .4byte gBattleAnimEnemyMonIndex -_080D1114: .4byte gBattleAnimPlayerMonIndex +_080D1110: .4byte gBattleAnimBankTarget +_080D1114: .4byte gBattleAnimBankAttacker _080D1118: .4byte gBattleAnimArgs _080D111C: movs r2, 0x2 @@ -13881,7 +13881,7 @@ _080D1124: mov r4, r8 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D1170 @@ -13925,7 +13925,7 @@ _080D1180: movs r0, 0x2 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D1204 @@ -14002,7 +14002,7 @@ _080D121A: mov r0, r8 movs r1, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D127C @@ -14139,7 +14139,7 @@ sub_80D1368: @ 80D1368 adds r4, r0, 0 movs r1, 0 bl sub_80787B0 - ldr r0, _080D139C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D139C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -14161,7 +14161,7 @@ _080D1384: pop {r0} bx r0 .align 2, 0 -_080D139C: .4byte gBattleAnimPlayerMonIndex +_080D139C: .4byte gBattleAnimBankAttacker _080D13A0: .4byte 0x0000ff60 _080D13A4: .4byte gBattleAnimArgs _080D13A8: .4byte sub_80D13AC @@ -14184,7 +14184,7 @@ sub_80D13AC: @ 80D13AC strh r0, [r4, 0x24] subs r2, 0x20 strh r2, [r4, 0x2E] - ldr r0, _080D1418 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D1418 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -14223,7 +14223,7 @@ _080D1410: pop {r0} bx r0 .align 2, 0 -_080D1418: .4byte gBattleAnimPlayerMonIndex +_080D1418: .4byte gBattleAnimBankAttacker _080D141C: .4byte 0x0000ff60 _080D1420: .4byte sub_80D1424 thumb_func_end sub_80D13AC @@ -14449,7 +14449,7 @@ sub_80D15A4: @ 80D15A4 ldr r0, _080D15D4 @ =gTasks adds r4, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -14531,7 +14531,7 @@ sub_80D1638: @ 80D1638 strh r0, [r4, 0xE] movs r0, 0x3 strh r0, [r4, 0x20] - ldr r0, _080D1670 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D1670 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -14543,7 +14543,7 @@ sub_80D1638: @ 80D1638 b _080D167E .align 2, 0 _080D166C: .4byte gTasks -_080D1670: .4byte gBattleAnimEnemyMonIndex +_080D1670: .4byte gBattleAnimBankTarget _080D1674: .4byte 0x0000ffff _080D1678: movs r0, 0x1 @@ -14552,7 +14552,7 @@ _080D1678: _080D167E: strh r0, [r4, 0x24] movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -14745,7 +14745,7 @@ sub_80D17C4: @ 80D17C4 movs r0, 0x2 strh r0, [r4, 0x24] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -14888,7 +14888,7 @@ sub_80D18D4: @ 80D18D4 strh r0, [r4, 0x16] strh r0, [r4, 0x18] strh r0, [r4, 0x22] - ldr r5, _080D1928 @ =gBattleAnimPlayerMonIndex + ldr r5, _080D1928 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_8077ABC @@ -14908,7 +14908,7 @@ sub_80D18D4: @ 80D18D4 bx r0 .align 2, 0 _080D1924: .4byte gTasks -_080D1928: .4byte gBattleAnimPlayerMonIndex +_080D1928: .4byte gBattleAnimBankAttacker _080D192C: .4byte sub_80D1930 thumb_func_end sub_80D18D4 @@ -15171,7 +15171,7 @@ _080D1AF4: adds r1, r0 _080D1B1C: adds r0, r4, 0 - bl sub_800D238 + bl LZDecompressWram movs r5, 0 _080D1B24: lsls r4, r5, 5 @@ -15293,7 +15293,7 @@ sub_80D1C08: @ 80D1C08 adds r5, r0, 0 movs r1, 0 bl sub_80787B0 - ldr r6, _080D1C70 @ =gBattleAnimPlayerMonIndex + ldr r6, _080D1C70 @ =gBattleAnimBankAttacker ldrb r0, [r6] bl GetBankSide lsls r0, 24 @@ -15327,7 +15327,7 @@ _080D1C28: str r0, [r5, 0x1C] ldr r1, _080D1C7C @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldrb r1, [r4, 0xA] ldrb r2, [r4, 0xC] adds r0, r5, 0 @@ -15336,7 +15336,7 @@ _080D1C28: pop {r0} bx r0 .align 2, 0 -_080D1C70: .4byte gBattleAnimPlayerMonIndex +_080D1C70: .4byte gBattleAnimBankAttacker _080D1C74: .4byte gBattleAnimArgs _080D1C78: .4byte sub_8078B34 _080D1C7C: .4byte move_anim_8072740 @@ -15569,7 +15569,7 @@ sub_80D1E38: @ 80D1E38 lsrs r0, 24 adds r6, r0, 0 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080D1E88 @ =gTasks @@ -15585,7 +15585,7 @@ sub_80D1E38: @ 80D1E38 cmp r0, 0x1 bne _080D1E94 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -15638,7 +15638,7 @@ sub_80D1EC8: @ 80D1EC8 lsrs r0, 24 adds r6, r0, 0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080D1F18 @ =gTasks @@ -15654,7 +15654,7 @@ sub_80D1EC8: @ 80D1EC8 cmp r0, 0x1 bne _080D1F24 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -15710,7 +15710,7 @@ sub_80D1F58: @ 80D1F58 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] - ldr r5, _080D1F9C @ =gBattleAnimEnemyMonIndex + ldr r5, _080D1F9C @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -15733,7 +15733,7 @@ sub_80D1F58: @ 80D1F58 pop {r0} bx r0 .align 2, 0 -_080D1F9C: .4byte gBattleAnimEnemyMonIndex +_080D1F9C: .4byte gBattleAnimBankTarget _080D1FA0: .4byte sub_80D1FA4 thumb_func_end sub_80D1F58 @@ -15853,7 +15853,7 @@ sub_80D2064: @ 80D2064 ldr r1, _080D208C @ =sub_80782D8 str r1, [r0, 0x1C] ldr r1, _080D2090 @ =sub_80D2094 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 @@ -16330,7 +16330,7 @@ _080D2450: .4byte 0x040000d4 _080D2454: .4byte 0x85000400 _080D2458: .4byte gBattleAnimBackgroundTilemap_ScaryFaceContest _080D245C: - ldr r0, _080D2478 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D2478 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -16343,7 +16343,7 @@ _080D246E: bl LZDecompressVram b _080D2488 .align 2, 0 -_080D2478: .4byte gBattleAnimEnemyMonIndex +_080D2478: .4byte gBattleAnimBankTarget _080D247C: .4byte gBattleAnimBackgroundTilemap_ScaryFacePlayer _080D2480: ldr r0, _080D24CC @ =gBattleAnimBackgroundTilemap_ScaryFaceOpponent @@ -16621,7 +16621,7 @@ _080D26A0: .4byte REG_BLDCNT sub_80D26A4: @ 80D26A4 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080D26F8 @ =gBattleAnimPlayerMonIndex + ldr r5, _080D26F8 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -16658,7 +16658,7 @@ sub_80D26A4: @ 80D26A4 pop {r0} bx r0 .align 2, 0 -_080D26F8: .4byte gBattleAnimPlayerMonIndex +_080D26F8: .4byte gBattleAnimBankAttacker _080D26FC: .4byte gBattleAnimArgs _080D2700: .4byte sub_80D2704 thumb_func_end sub_80D26A4 @@ -16779,7 +16779,7 @@ _080D27DC: .4byte 0x0000ffff sub_80D27E0: @ 80D27E0 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _080D2828 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D2828 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -16809,7 +16809,7 @@ sub_80D27E0: @ 80D27E0 pop {r0} bx r0 .align 2, 0 -_080D2828: .4byte gBattleAnimPlayerMonIndex +_080D2828: .4byte gBattleAnimBankAttacker _080D282C: .4byte gBattleAnimArgs _080D2830: .4byte sub_80D2834 thumb_func_end sub_80D27E0 @@ -16887,7 +16887,7 @@ _080D28A8: sub_80D28AC: @ 80D28AC push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _080D28F8 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D28F8 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -16919,7 +16919,7 @@ sub_80D28AC: @ 80D28AC pop {r0} bx r0 .align 2, 0 -_080D28F8: .4byte gBattleAnimPlayerMonIndex +_080D28F8: .4byte gBattleAnimBankAttacker _080D28FC: .4byte gBattleAnimArgs _080D2900: .4byte sub_80D287C thumb_func_end sub_80D28AC @@ -17179,7 +17179,7 @@ sub_80D2ABC: @ 80D2ABC adds r0, r4, 0 movs r1, 0 bl StartSpriteAnim - ldr r0, _080D2BBC @ =gBattleAnimEnemyMonIndex + ldr r0, _080D2BBC @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079E90 subs r0, 0x1 @@ -17291,7 +17291,7 @@ _080D2B80: b _080D2BD2 .align 2, 0 _080D2BB8: .4byte gBattleAnimArgs -_080D2BBC: .4byte gBattleAnimEnemyMonIndex +_080D2BBC: .4byte gBattleAnimBankTarget _080D2BC0: .4byte 0x0000ffff _080D2BC4: adds r2, r4, 0 @@ -17375,12 +17375,12 @@ _080D2C54: ldrsh r0, [r1, r2] cmp r0, 0 bne _080D2C64 - ldr r4, _080D2C60 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D2C60 @ =gBattleAnimBankAttacker b _080D2C66 .align 2, 0 -_080D2C60: .4byte gBattleAnimPlayerMonIndex +_080D2C60: .4byte gBattleAnimBankAttacker _080D2C64: - ldr r4, _080D2C94 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D2C94 @ =gBattleAnimBankTarget _080D2C66: ldrb r0, [r4] movs r1, 0x2 @@ -17404,7 +17404,7 @@ _080D2C66: adds r0, 0x20 b _080D2CA0 .align 2, 0 -_080D2C94: .4byte gBattleAnimEnemyMonIndex +_080D2C94: .4byte gBattleAnimBankTarget _080D2C98: .4byte gBattleAnimArgs _080D2C9C: ldrh r0, [r5, 0x20] @@ -17467,7 +17467,7 @@ sub_80D2CF8: @ 80D2CF8 lsrs r5, 24 ldr r0, _080D2D2C @ =gBattleAnimArgs ldrb r0, [r0] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -17524,13 +17524,13 @@ sub_80D2D68: @ 80D2D68 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D2D84 - ldr r0, _080D2D80 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D2D80 @ =gBattleAnimBankAttacker b _080D2D86 .align 2, 0 _080D2D7C: .4byte gBattleAnimArgs -_080D2D80: .4byte gBattleAnimPlayerMonIndex +_080D2D80: .4byte gBattleAnimBankAttacker _080D2D84: - ldr r0, _080D2E1C @ =gBattleAnimEnemyMonIndex + ldr r0, _080D2E1C @ =gBattleAnimBankTarget _080D2D86: ldrb r6, [r0] adds r0, r6, 0 @@ -17607,7 +17607,7 @@ _080D2DF0: pop {r0} bx r0 .align 2, 0 -_080D2E1C: .4byte gBattleAnimEnemyMonIndex +_080D2E1C: .4byte gBattleAnimBankTarget _080D2E20: .4byte gBattleAnimArgs _080D2E24: .4byte 0x000003ff _080D2E28: .4byte 0xfffffc00 @@ -17882,11 +17882,11 @@ sub_80D3014: @ 80D3014 ands r0, r1 cmp r0, 0 beq _080D3060 - ldr r4, _080D305C @ =gBattleAnimPlayerMonIndex + ldr r4, _080D305C @ =gBattleAnimBankAttacker ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D3060 @@ -17906,9 +17906,9 @@ sub_80D3014: @ 80D3014 b _080D3080 .align 2, 0 _080D3058: .4byte gBattleTypeFlags -_080D305C: .4byte gBattleAnimPlayerMonIndex +_080D305C: .4byte gBattleAnimBankAttacker _080D3060: - ldr r4, _080D30A0 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D30A0 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -17934,12 +17934,12 @@ _080D3080: str r0, [r5, 0x1C] ldr r1, _080D30A8 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080D30A0: .4byte gBattleAnimPlayerMonIndex +_080D30A0: .4byte gBattleAnimBankAttacker _080D30A4: .4byte sub_8078B34 _080D30A8: .4byte move_anim_8072740 thumb_func_end sub_80D3014 @@ -18099,7 +18099,7 @@ _080D31C2: sub_80D31C8: @ 80D31C8 push {r4-r6,lr} adds r6, r0, 0 - ldr r5, _080D31F0 @ =gBattleAnimPlayerMonIndex + ldr r5, _080D31F0 @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -18115,7 +18115,7 @@ sub_80D31C8: @ 80D31C8 subs r0, r1 b _080D320A .align 2, 0 -_080D31F0: .4byte gBattleAnimPlayerMonIndex +_080D31F0: .4byte gBattleAnimBankAttacker _080D31F4: .4byte gBattleAnimArgs _080D31F8: ldrb r0, [r5] @@ -18142,7 +18142,7 @@ _080D320A: movs r1, 0x40 orrs r0, r1 strb r0, [r2] - ldr r0, _080D32D4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D32D4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -18158,7 +18158,7 @@ _080D3240: strh r0, [r6, 0x2E] ldrh r0, [r6, 0x20] strh r0, [r6, 0x30] - ldr r4, _080D32D8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D32D8 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -18220,8 +18220,8 @@ _080D3240: bx r0 .align 2, 0 _080D32D0: .4byte gBattleAnimArgs -_080D32D4: .4byte gBattleAnimPlayerMonIndex -_080D32D8: .4byte gBattleAnimEnemyMonIndex +_080D32D4: .4byte gBattleAnimBankAttacker +_080D32D8: .4byte gBattleAnimBankTarget _080D32DC: .4byte SpriteCallbackDummy _080D32E0: .4byte gSprites _080D32E4: .4byte sub_80D32E8 @@ -18309,7 +18309,7 @@ sub_80D3370: @ 80D3370 ldr r1, _080D3390 @ =sub_8078600 str r1, [r0, 0x1C] ldr r1, _080D3394 @ =sub_80D3398 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 @@ -18325,7 +18325,7 @@ sub_80D3398: @ 80D3398 ldr r1, _080D33AC @ =sub_80782D8 str r1, [r0, 0x1C] ldr r1, _080D33B0 @ =move_anim_8074EE0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 @@ -18339,7 +18339,7 @@ sub_80D33B4: @ 80D33B4 adds r5, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _080D33DC @ =gBattleAnimPlayerMonIndex + ldr r0, _080D33DC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -18353,7 +18353,7 @@ sub_80D33B4: @ 80D33B4 adds r7, r1, 0 b _080D33EA .align 2, 0 -_080D33DC: .4byte gBattleAnimPlayerMonIndex +_080D33DC: .4byte gBattleAnimBankAttacker _080D33E0: .4byte gBattleAnimArgs _080D33E4: ldr r0, _080D3440 @ =gBattleAnimArgs @@ -18364,7 +18364,7 @@ _080D33EA: strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, _080D3444 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D3444 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -18400,7 +18400,7 @@ _080D33EA: bx r0 .align 2, 0 _080D3440: .4byte gBattleAnimArgs -_080D3444: .4byte gBattleAnimEnemyMonIndex +_080D3444: .4byte gBattleAnimBankTarget _080D3448: .4byte sub_80D344C thumb_func_end sub_80D33B4 @@ -18551,7 +18551,7 @@ sub_80D3554: @ 80D3554 strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, _080D35BC @ =gBattleAnimEnemyMonIndex + ldr r4, _080D35BC @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -18590,7 +18590,7 @@ sub_80D3554: @ 80D3554 strh r0, [r5, 0x3C] b _080D35C8 .align 2, 0 -_080D35BC: .4byte gBattleAnimEnemyMonIndex +_080D35BC: .4byte gBattleAnimBankTarget _080D35C0: .4byte gBattleAnimArgs _080D35C4: lsls r0, r1, 8 @@ -18711,7 +18711,7 @@ _080D3694: .4byte gTasks sub_80D3698: @ 80D3698 push {r4-r7,lr} adds r4, r0, 0 - ldr r7, _080D36E4 @ =gBattleAnimPlayerMonIndex + ldr r7, _080D36E4 @ =gBattleAnimBankAttacker ldrb r0, [r7] movs r1, 0 bl sub_8077ABC @@ -18743,7 +18743,7 @@ sub_80D3698: @ 80D3698 strh r0, [r4, 0x24] b _080D36F4 .align 2, 0 -_080D36E4: .4byte gBattleAnimPlayerMonIndex +_080D36E4: .4byte gBattleAnimBankAttacker _080D36E8: .4byte 0x0000fff6 _080D36EC: strh r6, [r4, 0x24] @@ -18787,11 +18787,11 @@ _080D3722: sub_80D3728: @ 80D3728 push {r4-r7,lr} adds r6, r0, 0 - ldr r5, _080D37E8 @ =gBattleAnimPlayerMonIndex + ldr r5, _080D37E8 @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankSide adds r4, r0, 0 - ldr r0, _080D37EC @ =gBattleAnimEnemyMonIndex + ldr r0, _080D37EC @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 @@ -18839,7 +18839,7 @@ _080D3786: _080D3790: adds r0, r6, 0 bl sub_80787B0 - ldr r0, _080D37E8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D37E8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -18851,7 +18851,7 @@ _080D3790: _080D37AA: ldrh r0, [r5, 0x8] strh r0, [r6, 0x2E] - ldr r4, _080D37EC @ =gBattleAnimEnemyMonIndex + ldr r4, _080D37EC @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -18872,13 +18872,13 @@ _080D37AA: str r0, [r6, 0x1C] ldr r1, _080D37F8 @ =move_anim_8072740 adds r0, r6, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_080D37E8: .4byte gBattleAnimPlayerMonIndex -_080D37EC: .4byte gBattleAnimEnemyMonIndex +_080D37E8: .4byte gBattleAnimBankAttacker +_080D37EC: .4byte gBattleAnimBankTarget _080D37F0: .4byte gBattleAnimArgs _080D37F4: .4byte sub_8078B34 _080D37F8: .4byte move_anim_8072740 @@ -18904,7 +18904,7 @@ sub_80D37FC: @ 80D37FC str r0, [r4, 0x1C] ldr r1, _080D3834 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -19080,7 +19080,7 @@ _080D3920: movs r1, 0x4 orrs r0, r1 strb r0, [r2] - ldr r0, _080D39A0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D39A0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -19095,7 +19095,7 @@ _080D3990: .4byte 0x00003f42 _080D3994: .4byte REG_BG1CNT _080D3998: .4byte 0x040000d4 _080D399C: .4byte 0x85000400 -_080D39A0: .4byte gBattleAnimPlayerMonIndex +_080D39A0: .4byte gBattleAnimBankAttacker _080D39A4: .4byte gUnknown_08E70968 _080D39A8: ldr r0, _080D39B4 @ =gUnknown_08E70C38 @@ -19203,7 +19203,7 @@ _080D3A88: .4byte gUnknown_030042C0 _080D3A8C: .4byte 0x0000ffd0 _080D3A90: .4byte gUnknown_030041B4 _080D3A94: - ldr r0, _080D3AC4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -19226,7 +19226,7 @@ _080D3A94: strh r1, [r7, 0xE] b _080D3AEE .align 2, 0 -_080D3AC4: .4byte gBattleAnimPlayerMonIndex +_080D3AC4: .4byte gBattleAnimBankAttacker _080D3AC8: .4byte 0x0000ff20 _080D3ACC: .4byte gUnknown_030042C0 _080D3AD0: .4byte gUnknown_030041B4 @@ -20048,7 +20048,7 @@ sub_80D40F4: @ 80D40F4 ldr r0, _080D4144 @ =gTasks adds r4, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -20374,7 +20374,7 @@ _080D438A: thumb_func_start sub_80D4394 sub_80D4394: @ 80D4394 push {r4,r5,lr} - ldr r4, _080D43B8 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D43B8 @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -20390,7 +20390,7 @@ sub_80D4394: @ 80D4394 ldr r0, _080D43C0 @ =gPlayerParty b _080D43D8 .align 2, 0 -_080D43B8: .4byte gBattleAnimPlayerMonIndex +_080D43B8: .4byte gBattleAnimBankAttacker _080D43BC: .4byte gBattlePartyID _080D43C0: .4byte gPlayerParty _080D43C4: @@ -20451,7 +20451,7 @@ sub_80D4418: @ 80D4418 lsls r1, 24 lsrs r1, 24 str r1, [sp] - ldr r4, _080D4520 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D4520 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -20571,7 +20571,7 @@ _080D44EA: pop {r0} bx r0 .align 2, 0 -_080D4520: .4byte gBattleAnimPlayerMonIndex +_080D4520: .4byte gBattleAnimBankAttacker _080D4524: .4byte gSpriteTemplate_83D9378 _080D4528: .4byte gSprites thumb_func_end sub_80D4418 @@ -20681,7 +20681,7 @@ sub_80D45D8: @ 80D45D8 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xA] - ldr r0, _080D460C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D460C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -20693,7 +20693,7 @@ sub_80D45D8: @ 80D45D8 b _080D4616 .align 2, 0 _080D4608: .4byte gTasks -_080D460C: .4byte gBattleAnimPlayerMonIndex +_080D460C: .4byte gBattleAnimBankAttacker _080D4610: movs r0, 0x10 strh r0, [r4, 0x10] @@ -21079,7 +21079,7 @@ sub_80D48F4: @ 80D48F4 lsls r1, 3 ldr r0, _080D4978 @ =gTasks adds r5, r1, r0 - ldr r4, _080D497C @ =gBattleAnimPlayerMonIndex + ldr r4, _080D497C @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -21136,7 +21136,7 @@ _080D494C: bx r0 .align 2, 0 _080D4978: .4byte gTasks -_080D497C: .4byte gBattleAnimPlayerMonIndex +_080D497C: .4byte gBattleAnimBankAttacker _080D4980: .4byte 0x0000ffe0 _080D4984: .4byte sub_80D4988 thumb_func_end sub_80D48F4 @@ -21556,7 +21556,7 @@ sub_80D4CA4: @ 80D4CA4 adds r4, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r5, _080D4CE0 @ =gBattleAnimEnemyMonIndex + ldr r5, _080D4CE0 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -21580,7 +21580,7 @@ sub_80D4CA4: @ 80D4CA4 pop {r0} bx r0 .align 2, 0 -_080D4CE0: .4byte gBattleAnimEnemyMonIndex +_080D4CE0: .4byte gBattleAnimBankTarget _080D4CE4: .4byte gBattleAnimArgs _080D4CE8: .4byte sub_80D4CEC thumb_func_end sub_80D4CA4 @@ -21734,7 +21734,7 @@ _080D4DF2: strh r0, [r4, 0x2E] mov r0, r9 strh r0, [r4, 0x30] - ldr r0, _080D4E3C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D4E3C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079E90 subs r0, 0x1 @@ -21750,7 +21750,7 @@ _080D4DF2: .align 2, 0 _080D4E34: .4byte gSpriteTemplate_83D9420 _080D4E38: .4byte gSprites -_080D4E3C: .4byte gBattleAnimPlayerMonIndex +_080D4E3C: .4byte gBattleAnimBankAttacker _080D4E40: strh r7, [r4, 0x32] _080D4E42: @@ -21792,7 +21792,7 @@ _080D4E68: strh r0, [r4, 0x2E] mov r0, r9 strh r0, [r4, 0x30] - ldr r0, _080D4EB4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D4EB4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079E90 subs r0, 0x1 @@ -21808,7 +21808,7 @@ _080D4E68: .align 2, 0 _080D4EAC: .4byte gSpriteTemplate_83D9420 _080D4EB0: .4byte gSprites -_080D4EB4: .4byte gBattleAnimPlayerMonIndex +_080D4EB4: .4byte gBattleAnimBankAttacker _080D4EB8: strh r7, [r4, 0x32] _080D4EBA: @@ -21847,7 +21847,7 @@ sub_80D4ED8: @ 80D4ED8 strh r0, [r4, 0x36] ldr r1, _080D4F10 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r1, _080D4F14 @ =sub_8078174 str r1, [r4, 0x1C] adds r0, r4, 0 @@ -21884,7 +21884,7 @@ sub_80D4F18: @ 80D4F18 str r0, [r4, 0x1C] ldr r1, _080D4F58 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -21899,7 +21899,7 @@ sub_80D4F5C: @ 80D4F5C push {r4,lr} adds r4, r0, 0 bl sub_8078650 - ldr r0, _080D4F90 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D4F90 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -21920,7 +21920,7 @@ sub_80D4F5C: @ 80D4F5C adds r1, r2, 0 b _080D4FAE .align 2, 0 -_080D4F90: .4byte gBattleAnimPlayerMonIndex +_080D4F90: .4byte gBattleAnimBankAttacker _080D4F94: .4byte gBattleAnimArgs _080D4F98: ldr r1, _080D4FC4 @ =gBattleAnimArgs @@ -21955,7 +21955,7 @@ _080D4FC8: .4byte sub_80D5038 sub_80D4FCC: @ 80D4FCC push {r4,lr} adds r4, r0, 0 - ldr r0, _080D4FF8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D4FF8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -21975,7 +21975,7 @@ sub_80D4FCC: @ 80D4FCC adds r1, r2, 0 b _080D5018 .align 2, 0 -_080D4FF8: .4byte gBattleAnimPlayerMonIndex +_080D4FF8: .4byte gBattleAnimBankAttacker _080D4FFC: .4byte gBattleAnimArgs _080D5000: ldr r1, _080D5030 @ =gBattleAnimArgs @@ -22047,7 +22047,7 @@ sub_80D5074: @ 80D5074 push {r4,lr} adds r4, r0, 0 bl sub_8078650 - ldr r0, _080D5098 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D5098 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -22060,7 +22060,7 @@ sub_80D5074: @ 80D5074 strh r1, [r4, 0x20] b _080D50B2 .align 2, 0 -_080D5098: .4byte gBattleAnimPlayerMonIndex +_080D5098: .4byte gBattleAnimBankAttacker _080D509C: .4byte gBattleAnimArgs _080D50A0: ldr r0, _080D50E0 @ =gBattleAnimArgs @@ -22194,7 +22194,7 @@ sub_80D517C: @ 80D517C ldr r1, _080D51A0 @ =sub_8078B34 str r1, [r0, 0x1C] ldr r1, _080D51A4 @ =move_anim_8072740 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 @@ -22206,11 +22206,11 @@ _080D51A4: .4byte move_anim_8072740 sub_80D51A8: @ 80D51A8 push {r4-r6,lr} adds r6, r0, 0 - ldr r5, _080D5200 @ =gBattleAnimPlayerMonIndex + ldr r5, _080D5200 @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankSide adds r4, r0, 0 - ldr r0, _080D5204 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D5204 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 @@ -22245,8 +22245,8 @@ _080D51EE: pop {r0} bx r0 .align 2, 0 -_080D5200: .4byte gBattleAnimPlayerMonIndex -_080D5204: .4byte gBattleAnimEnemyMonIndex +_080D5200: .4byte gBattleAnimBankAttacker +_080D5204: .4byte gBattleAnimBankTarget _080D5208: .4byte gBattleAnimArgs _080D520C: .4byte sub_8079534 thumb_func_end sub_80D51A8 @@ -22305,7 +22305,7 @@ sub_80D5254: @ 80D5254 strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, _080D52A4 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D52A4 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -22329,7 +22329,7 @@ _080D529E: pop {r0} bx r0 .align 2, 0 -_080D52A4: .4byte gBattleAnimEnemyMonIndex +_080D52A4: .4byte gBattleAnimBankTarget _080D52A8: .4byte sub_80D52AC thumb_func_end sub_80D5254 @@ -22343,7 +22343,7 @@ sub_80D52AC: @ 80D52AC beq _080D52F4 movs r4, 0 strh r4, [r6, 0x2E] - ldr r5, _080D52EC @ =gBattleAnimEnemyMonIndex + ldr r5, _080D52EC @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -22364,7 +22364,7 @@ sub_80D52AC: @ 80D52AC bl _call_via_r1 b _080D531E .align 2, 0 -_080D52EC: .4byte gBattleAnimEnemyMonIndex +_080D52EC: .4byte gBattleAnimBankTarget _080D52F0: .4byte sub_80D5324 _080D52F4: movs r1, 0x3C @@ -22457,7 +22457,7 @@ sub_80D5374: @ 80D5374 strh r0, [r4, 0x32] ldr r1, _080D53AC @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D53B0 @ =sub_8078364 str r0, [r4, 0x1C] pop {r4} @@ -22490,7 +22490,7 @@ sub_80D53B4: @ 80D53B4 str r0, [r4, 0x1C] ldr r1, _080D53F0 @ =sub_80D53F4 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -22577,7 +22577,7 @@ sub_80D5470: @ 80D5470 ldr r0, _080D54D0 @ =gTasks adds r4, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r5, 0 @@ -22595,7 +22595,7 @@ sub_80D5470: @ 80D5470 adds r0, r2 ldrh r0, [r0, 0x22] strh r0, [r4, 0x10] - ldr r0, _080D54D8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D54D8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -22615,7 +22615,7 @@ sub_80D5470: @ 80D5470 .align 2, 0 _080D54D0: .4byte gTasks _080D54D4: .4byte gSprites -_080D54D8: .4byte gBattleAnimPlayerMonIndex +_080D54D8: .4byte gBattleAnimBankAttacker _080D54DC: .4byte sub_80D54E0 thumb_func_end sub_80D5470 @@ -23021,7 +23021,7 @@ sub_80D57C4: @ 80D57C4 lsls r0, 2 adds r0, r1 ldrh r4, [r0, 0x20] - ldr r0, _080D5818 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D5818 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23035,7 +23035,7 @@ sub_80D57C4: @ 80D57C4 b _080D5826 .align 2, 0 _080D5814: .4byte gSprites -_080D5818: .4byte gBattleAnimPlayerMonIndex +_080D5818: .4byte gBattleAnimBankAttacker _080D581C: adds r0, r4, 0 adds r0, 0x10 @@ -23203,7 +23203,7 @@ sub_80D5940: @ 80D5940 adds r0, r2 lsls r0, 16 lsrs r4, r0, 16 - ldr r0, _080D597C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D597C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23215,7 +23215,7 @@ sub_80D5940: @ 80D5940 b _080D5986 .align 2, 0 _080D5978: .4byte gSprites -_080D597C: .4byte gBattleAnimPlayerMonIndex +_080D597C: .4byte gBattleAnimBankAttacker _080D5980: lsls r0, r4, 16 movs r1, 0xB0 @@ -23466,7 +23466,7 @@ _080D5B28: bl StartSpriteAnim ldrh r0, [r4, 0x4] strh r0, [r5, 0x3C] - ldr r0, _080D5B54 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D5B54 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23476,12 +23476,12 @@ _080D5B28: b _080D5B5A .align 2, 0 _080D5B50: .4byte gBattleAnimArgs -_080D5B54: .4byte gBattleAnimPlayerMonIndex +_080D5B54: .4byte gBattleAnimBankAttacker _080D5B58: ldr r0, _080D5B78 @ =0x0000fffc _080D5B5A: strh r0, [r5, 0x36] - ldr r0, _080D5B7C @ =gBattleAnimEnemyMonIndex + ldr r0, _080D5B7C @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 movs r1, 0x3 @@ -23496,12 +23496,12 @@ _080D5B5A: b _080D5BD6 .align 2, 0 _080D5B78: .4byte 0x0000fffc -_080D5B7C: .4byte gBattleAnimEnemyMonIndex +_080D5B7C: .4byte gBattleAnimBankTarget _080D5B80: ldrh r0, [r5, 0x30] adds r0, 0xC0 strh r0, [r5, 0x30] - ldr r0, _080D5BA0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D5BA0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23513,7 +23513,7 @@ _080D5B80: negs r0, r0 b _080D5BAA .align 2, 0 -_080D5BA0: .4byte gBattleAnimPlayerMonIndex +_080D5BA0: .4byte gBattleAnimBankAttacker _080D5BA4: ldrh r0, [r5, 0x30] lsls r0, 16 @@ -23579,7 +23579,7 @@ _080D5BDE: lsls r0, 1 strh r0, [r5, 0x2E] strh r1, [r5, 0x30] - ldr r4, _080D5C54 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D5C54 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -23603,7 +23603,7 @@ _080D5C4E: pop {r0} bx r0 .align 2, 0 -_080D5C54: .4byte gBattleAnimEnemyMonIndex +_080D5C54: .4byte gBattleAnimBankTarget _080D5C58: .4byte sub_80D5C5C thumb_func_end sub_80D5B0C @@ -23715,7 +23715,7 @@ _080D5CD8: lsrs r0, 16 cmp r0, 0x83 bls _080D5D5C - ldr r0, _080D5D58 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D5D58 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 movs r1, 0x3 @@ -23732,9 +23732,9 @@ _080D5CD8: _080D5D4C: .4byte gBattleAnimArgs _080D5D50: .4byte gMain _080D5D54: .4byte 0x0000043d -_080D5D58: .4byte gBattleAnimEnemyMonIndex +_080D5D58: .4byte gBattleAnimBankTarget _080D5D5C: - ldr r0, _080D5D80 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D5D80 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 lsls r0, 24 @@ -23751,7 +23751,7 @@ _080D5D5C: strb r1, [r4, 0x5] b _080D5DA0 .align 2, 0 -_080D5D80: .4byte gBattleAnimEnemyMonIndex +_080D5D80: .4byte gBattleAnimBankTarget _080D5D84: adds r0, r2, 0 subs r0, 0x40 @@ -23813,7 +23813,7 @@ sub_80D5DDC: @ 80D5DDC lsls r1, 3 ldr r0, _080D5E3C @ =gTasks adds r4, r1, r0 - ldr r0, _080D5E40 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D5E40 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -23825,22 +23825,22 @@ sub_80D5DDC: @ 80D5DDC movs r1, 0x1 _080D5E02: strh r1, [r4, 0x20] - ldr r0, _080D5E44 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D5E44 @ =gBattleAnimBankTarget ldrb r1, [r0] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 adds r0, 0x1 strh r0, [r4, 0x22] movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x24] movs r0, 0x3 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -23851,8 +23851,8 @@ _080D5E02: bx r0 .align 2, 0 _080D5E3C: .4byte gTasks -_080D5E40: .4byte gBattleAnimPlayerMonIndex -_080D5E44: .4byte gBattleAnimEnemyMonIndex +_080D5E40: .4byte gBattleAnimBankAttacker +_080D5E44: .4byte gBattleAnimBankTarget _080D5E48: .4byte sub_80D5E4C thumb_func_end sub_80D5DDC @@ -24222,7 +24222,7 @@ _080D60EA: adds r0, 0x1 strh r0, [r2, 0x8] ldr r1, _080D6114 @ =gObjectBankIDs - ldr r0, _080D6118 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D6118 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r6, [r0] @@ -24238,7 +24238,7 @@ _080D60EA: _080D610C: .4byte gTasks _080D6110: .4byte gBattleAnimArgs _080D6114: .4byte gObjectBankIDs -_080D6118: .4byte gBattleAnimEnemyMonIndex +_080D6118: .4byte gBattleAnimBankTarget _080D611C: .4byte gUnknown_083D9794 _080D6120: ldr r4, _080D616C @ =gUnknown_083D97A4 @@ -24331,7 +24331,7 @@ _080D61C4: .4byte gSprites sub_80D61C8: @ 80D61C8 push {r4,lr} adds r4, r0, 0 - ldr r0, _080D61E8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D61E8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -24344,7 +24344,7 @@ sub_80D61C8: @ 80D61C8 strh r1, [r4, 0x20] b _080D61FC .align 2, 0 -_080D61E8: .4byte gBattleAnimPlayerMonIndex +_080D61E8: .4byte gBattleAnimBankAttacker _080D61EC: .4byte gBattleAnimArgs _080D61F0: ldr r1, _080D6210 @ =gBattleAnimArgs @@ -24389,7 +24389,7 @@ _080D622E: sub_80D6234: @ 80D6234 push {r4,lr} adds r4, r0, 0 - ldr r0, _080D6254 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D6254 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -24402,7 +24402,7 @@ sub_80D6234: @ 80D6234 strh r1, [r4, 0x20] b _080D6266 .align 2, 0 -_080D6254: .4byte gBattleAnimPlayerMonIndex +_080D6254: .4byte gBattleAnimBankAttacker _080D6258: .4byte gBattleAnimArgs _080D625C: ldr r0, _080D6270 @ =gBattleAnimArgs @@ -24442,7 +24442,7 @@ _080D628E: sub_80D6294: @ 80D6294 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _080D62D8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D62D8 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -24455,7 +24455,7 @@ sub_80D6294: @ 80D6294 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - ldr r0, _080D62DC @ =gBattleAnimPlayerMonIndex + ldr r0, _080D62DC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -24472,8 +24472,8 @@ sub_80D6294: @ 80D6294 strh r0, [r5, 0x22] b _080D62F8 .align 2, 0 -_080D62D8: .4byte gBattleAnimEnemyMonIndex -_080D62DC: .4byte gBattleAnimPlayerMonIndex +_080D62D8: .4byte gBattleAnimBankTarget +_080D62DC: .4byte gBattleAnimBankAttacker _080D62E0: .4byte gBattleAnimArgs _080D62E4: ldr r0, _080D631C @ =gBattleAnimArgs @@ -24497,7 +24497,7 @@ _080D62F8: strh r0, [r5, 0x34] ldr r1, _080D6320 @ =move_anim_8074EE0 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D6324 @ =sub_8078114 str r0, [r5, 0x1C] pop {r4,r5} @@ -24532,46 +24532,46 @@ _080D6344: beq _080D637C b _080D63A0 _080D634E: - ldr r0, _080D6354 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D6354 @ =gBattleAnimBankAttacker b _080D63A2 .align 2, 0 -_080D6354: .4byte gBattleAnimPlayerMonIndex +_080D6354: .4byte gBattleAnimBankAttacker _080D6358: - ldr r4, _080D6370 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D6370 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r6, 0x2 eors r0, r6 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _080D6374 ldrb r4, [r4] b _080D63A4 .align 2, 0 -_080D6370: .4byte gBattleAnimPlayerMonIndex +_080D6370: .4byte gBattleAnimBankAttacker _080D6374: ldrb r0, [r4] adds r4, r6, 0 eors r4, r0 b _080D63A4 _080D637C: - ldr r0, _080D6398 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D6398 @ =gBattleAnimBankAttacker ldrb r0, [r0] movs r4, 0x2 eors r0, r4 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D63A0 - ldr r0, _080D639C @ =gBattleAnimEnemyMonIndex + ldr r0, _080D639C @ =gBattleAnimBankTarget ldrb r0, [r0] eors r4, r0 b _080D63A4 .align 2, 0 -_080D6398: .4byte gBattleAnimPlayerMonIndex -_080D639C: .4byte gBattleAnimEnemyMonIndex +_080D6398: .4byte gBattleAnimBankAttacker +_080D639C: .4byte gBattleAnimBankTarget _080D63A0: - ldr r0, _080D63C4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D63C4 @ =gBattleAnimBankTarget _080D63A2: ldrb r4, [r0] _080D63A4: @@ -24590,7 +24590,7 @@ _080D63A4: movs r1, 0x1 b _080D63DE .align 2, 0 -_080D63C4: .4byte gBattleAnimEnemyMonIndex +_080D63C4: .4byte gBattleAnimBankTarget _080D63C8: .4byte gBattleAnimArgs _080D63CC: adds r0, r4, 0 @@ -24698,7 +24698,7 @@ sub_80D648C: @ 80D648C strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] - ldr r6, _080D6504 @ =gBattleAnimEnemyMonIndex + ldr r6, _080D6504 @ =gBattleAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_8077ABC @@ -24744,7 +24744,7 @@ sub_80D648C: @ 80D648C bx r0 .align 2, 0 _080D6500: .4byte gBattleAnimArgs -_080D6504: .4byte gBattleAnimEnemyMonIndex +_080D6504: .4byte gBattleAnimBankTarget _080D6508: .4byte 0x000003ff _080D650C: .4byte 0xfffffc00 _080D6510: .4byte sub_80D6514 @@ -24866,7 +24866,7 @@ sub_80D65DC: @ 80D65DC ands r0, r1 cmp r0, 0 beq _080D65FE - ldr r0, _080D664C @ =gBattleAnimEnemyMonIndex + ldr r0, _080D664C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -24878,7 +24878,7 @@ _080D65FE: negs r0, r0 strh r0, [r1, 0x2] _080D6606: - ldr r5, _080D664C @ =gBattleAnimEnemyMonIndex + ldr r5, _080D664C @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -24909,7 +24909,7 @@ _080D6606: .align 2, 0 _080D6644: .4byte gMain _080D6648: .4byte 0x0000043d -_080D664C: .4byte gBattleAnimEnemyMonIndex +_080D664C: .4byte gBattleAnimBankTarget _080D6650: .4byte gBattleAnimArgs _080D6654: .4byte sub_80D658C thumb_func_end sub_80D65DC @@ -24928,13 +24928,13 @@ sub_80D6658: @ 80D6658 ands r0, r1 cmp r0, 0 beq _080D667C - ldr r0, _080D6678 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D6678 @ =gBattleAnimBankTarget b _080D667E .align 2, 0 _080D6674: .4byte gBattleAnimArgs -_080D6678: .4byte gBattleAnimEnemyMonIndex +_080D6678: .4byte gBattleAnimBankTarget _080D667C: - ldr r0, _080D670C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D670C @ =gBattleAnimBankAttacker _080D667E: ldrb r6, [r0] ldr r0, _080D6710 @ =gMain @@ -25005,7 +25005,7 @@ _080D66A4: pop {r0} bx r0 .align 2, 0 -_080D670C: .4byte gBattleAnimPlayerMonIndex +_080D670C: .4byte gBattleAnimBankAttacker _080D6710: .4byte gMain _080D6714: .4byte 0x0000043d _080D6718: .4byte gBattleAnimArgs @@ -25126,7 +25126,7 @@ _080D67F6: str r0, [r4, 0x1C] ldr r1, _080D6818 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -25142,7 +25142,7 @@ sub_80D681C: @ 80D681C adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r6, _080D6864 @ =gBattleAnimEnemyMonIndex + ldr r6, _080D6864 @ =gBattleAnimBankTarget ldrb r0, [r6] movs r1, 0 bl sub_8077ABC @@ -25173,7 +25173,7 @@ sub_80D681C: @ 80D681C pop {r0} bx r0 .align 2, 0 -_080D6864: .4byte gBattleAnimEnemyMonIndex +_080D6864: .4byte gBattleAnimBankTarget _080D6868: .4byte gTasks _080D686C: .4byte gBattleAnimArgs _080D6870: .4byte sub_80D6874 @@ -25556,14 +25556,14 @@ sub_80D6B3C: @ 80D6B3C ldrsh r0, [r0, r1] cmp r0, 0 bne _080D6B68 - ldr r4, _080D6B64 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D6B64 @ =gBattleAnimBankAttacker b _080D6B6A .align 2, 0 _080D6B5C: .4byte gTasks _080D6B60: .4byte gBattleAnimArgs -_080D6B64: .4byte gBattleAnimPlayerMonIndex +_080D6B64: .4byte gBattleAnimBankAttacker _080D6B68: - ldr r4, _080D6BAC @ =gBattleAnimEnemyMonIndex + ldr r4, _080D6BAC @ =gBattleAnimBankTarget _080D6B6A: ldrb r0, [r4] movs r1, 0x2 @@ -25596,7 +25596,7 @@ _080D6B6A: pop {r0} bx r0 .align 2, 0 -_080D6BAC: .4byte gBattleAnimEnemyMonIndex +_080D6BAC: .4byte gBattleAnimBankTarget _080D6BB0: .4byte gBattleAnimArgs _080D6BB4: .4byte sub_80D6BB8 thumb_func_end sub_80D6B3C @@ -25681,7 +25681,7 @@ sub_80D6BB8: @ 80D6BB8 bl obj_translate_based_on_private_1_2_3_4 ldr r1, _080D6CB0 @ =sub_80D6D00 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D6CB4 @ =sub_8078600 str r0, [r4, 0x1C] ldrh r0, [r5, 0x1A] @@ -25790,13 +25790,13 @@ sub_80D6D18: @ 80D6D18 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D6D34 - ldr r4, _080D6D30 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D6D30 @ =gBattleAnimBankAttacker b _080D6D36 .align 2, 0 _080D6D2C: .4byte gBattleAnimArgs -_080D6D30: .4byte gBattleAnimPlayerMonIndex +_080D6D30: .4byte gBattleAnimBankAttacker _080D6D34: - ldr r4, _080D6D64 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D6D64 @ =gBattleAnimBankTarget _080D6D36: ldrb r0, [r4] movs r1, 0x2 @@ -25812,14 +25812,14 @@ _080D6D36: strh r0, [r5, 0x22] ldr r1, _080D6D68 @ =move_anim_8074EE0 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D6D6C @ =sub_80785E4 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080D6D64: .4byte gBattleAnimEnemyMonIndex +_080D6D64: .4byte gBattleAnimBankTarget _080D6D68: .4byte move_anim_8074EE0 _080D6D6C: .4byte sub_80785E4 thumb_func_end sub_80D6D18 @@ -25833,13 +25833,13 @@ sub_80D6D70: @ 80D6D70 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D6D8C - ldr r4, _080D6D88 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D6D88 @ =gBattleAnimBankAttacker b _080D6D8E .align 2, 0 _080D6D84: .4byte gBattleAnimArgs -_080D6D88: .4byte gBattleAnimPlayerMonIndex +_080D6D88: .4byte gBattleAnimBankAttacker _080D6D8C: - ldr r4, _080D6DC8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D6DC8 @ =gBattleAnimBankTarget _080D6D8E: ldrb r0, [r4] movs r1, 0x2 @@ -25860,14 +25860,14 @@ _080D6D8E: strh r0, [r5, 0x26] ldr r1, _080D6DD0 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D6DD4 @ =sub_8078600 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080D6DC8: .4byte gBattleAnimEnemyMonIndex +_080D6DC8: .4byte gBattleAnimBankTarget _080D6DCC: .4byte gBattleAnimArgs _080D6DD0: .4byte move_anim_8072740 _080D6DD4: .4byte sub_8078600 @@ -25879,7 +25879,7 @@ sub_80D6DD8: @ 80D6DD8 adds r5, r0, 0 movs r1, 0x1 bl StartSpriteAffineAnim - ldr r4, _080D6E30 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D6E30 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -25893,7 +25893,7 @@ sub_80D6DD8: @ 80D6DD8 lsrs r0, 24 strh r0, [r5, 0x22] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x3A] @@ -25916,7 +25916,7 @@ _080D6E26: pop {r0} bx r0 .align 2, 0 -_080D6E30: .4byte gBattleAnimPlayerMonIndex +_080D6E30: .4byte gBattleAnimBankAttacker _080D6E34: .4byte sub_80D6E38 thumb_func_end sub_80D6DD8 @@ -26006,12 +26006,12 @@ _080D6ECE: b _080D7000 _080D6ED0: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r6, 0 strh r0, [r5, 0x26] - ldr r4, _080D6F04 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D6F04 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -26028,7 +26028,7 @@ _080D6ED0: movs r0, 0x2 b _080D6F12 .align 2, 0 -_080D6F04: .4byte gBattleAnimPlayerMonIndex +_080D6F04: .4byte gBattleAnimBankAttacker _080D6F08: .4byte 0x0000ffe0 _080D6F0C: movs r0, 0x20 @@ -26193,7 +26193,7 @@ _080D7034: _080D703A: b _080D718E _080D703C: - ldr r4, _080D707C @ =gBattleAnimPlayerMonIndex + ldr r4, _080D707C @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -26225,7 +26225,7 @@ _080D7052: ldr r0, _080D7084 @ =0x0000fff0 b _080D70F0 .align 2, 0 -_080D707C: .4byte gBattleAnimPlayerMonIndex +_080D707C: .4byte gBattleAnimBankAttacker _080D7080: .4byte gBattleAnimArgs _080D7084: .4byte 0x0000fff0 _080D7088: @@ -26254,7 +26254,7 @@ _080D70B0: movs r0, 0x78 subs r0, r1 strh r0, [r5, 0xE] - ldr r4, _080D70E4 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D70E4 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x3 bl sub_8077ABC @@ -26273,7 +26273,7 @@ _080D70B0: strh r0, [r5, 0x10] b _080D7126 .align 2, 0 -_080D70E4: .4byte gBattleAnimEnemyMonIndex +_080D70E4: .4byte gBattleAnimBankTarget _080D70E8: ldr r0, _080D710C @ =0x0000fff0 strh r0, [r5, 0xE] @@ -26506,7 +26506,7 @@ sub_80D727C: @ 80D727C beq _080D72C0 b _080D72D4 _080D728E: - ldr r4, _080D72BC @ =gBattleAnimPlayerMonIndex + ldr r4, _080D72BC @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -26527,7 +26527,7 @@ _080D728E: strh r0, [r5, 0x2E] b _080D72D4 .align 2, 0 -_080D72BC: .4byte gBattleAnimPlayerMonIndex +_080D72BC: .4byte gBattleAnimBankAttacker _080D72C0: adds r0, r5, 0 adds r0, 0x3F @@ -26576,7 +26576,7 @@ _080D7308: .4byte _080D7444 .4byte _080D7454 _080D731C: - ldr r4, _080D73A0 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D73A0 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -26591,7 +26591,7 @@ _080D731C: strh r0, [r5, 0x16] movs r0, 0x4 strh r0, [r5, 0x18] - ldr r0, _080D73A4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D73A4 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x2 bl sub_8077ABC @@ -26636,8 +26636,8 @@ _080D731C: adds r0, 0x1 b _080D7466 .align 2, 0 -_080D73A0: .4byte gBattleAnimPlayerMonIndex -_080D73A4: .4byte gBattleAnimEnemyMonIndex +_080D73A0: .4byte gBattleAnimBankAttacker +_080D73A4: .4byte gBattleAnimBankTarget _080D73A8: .4byte 0x0000ffff _080D73AC: ldrh r0, [r5, 0xA] @@ -26934,7 +26934,7 @@ _080D75C4: beq _080D7640 b _080D764E _080D75CA: - ldr r0, _080D7614 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D7614 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_8077ABC @@ -26956,7 +26956,7 @@ _080D75E4: bgt _080D75E4 strh r1, [r5, 0x24] _080D75F4: - ldr r4, _080D7614 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D7614 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -26971,7 +26971,7 @@ _080D75F4: strh r0, [r5, 0x20] b _080D7638 .align 2, 0 -_080D7614: .4byte gBattleAnimEnemyMonIndex +_080D7614: .4byte gBattleAnimBankTarget _080D7618: ldrh r0, [r5, 0xA] adds r0, 0x1 @@ -27121,7 +27121,7 @@ sub_80D7704: @ 80D7704 ands r0, r2 orrs r0, r1 strh r0, [r5, 0x4] - ldr r4, _080D7814 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D7814 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -27134,7 +27134,7 @@ sub_80D7704: @ 80D7704 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r4, _080D7818 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D7818 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -27235,8 +27235,8 @@ _080D77DE: .align 2, 0 _080D780C: .4byte 0x000003ff _080D7810: .4byte 0xfffffc00 -_080D7814: .4byte gBattleAnimEnemyMonIndex -_080D7818: .4byte gBattleAnimPlayerMonIndex +_080D7814: .4byte gBattleAnimBankTarget +_080D7818: .4byte gBattleAnimBankAttacker _080D781C: .4byte gBattleAnimArgs _080D7820: lsls r1, r3, 16 @@ -27365,7 +27365,7 @@ sub_80D78EC: @ 80D78EC strh r0, [r4, 0x36] ldr r1, _080D7924 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r1, _080D7928 @ =sub_8078174 str r1, [r4, 0x1C] adds r0, r4, 0 @@ -27385,14 +27385,14 @@ sub_80D792C: @ 80D792C adds r4, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _080D7960 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D7960 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x2 bl sub_8077ABC lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] - ldr r0, _080D7964 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D7964 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -27405,8 +27405,8 @@ sub_80D792C: @ 80D792C strh r1, [r4, 0x32] b _080D7976 .align 2, 0 -_080D7960: .4byte gBattleAnimEnemyMonIndex -_080D7964: .4byte gBattleAnimPlayerMonIndex +_080D7960: .4byte gBattleAnimBankTarget +_080D7964: .4byte gBattleAnimBankAttacker _080D7968: .4byte gBattleAnimArgs _080D796C: ldr r0, _080D79A4 @ =gBattleAnimArgs @@ -27415,7 +27415,7 @@ _080D796C: adds r0, r1 strh r0, [r4, 0x32] _080D7976: - ldr r0, _080D79A8 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D79A8 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x3 bl sub_8077ABC @@ -27429,7 +27429,7 @@ _080D7976: strh r0, [r4, 0x2E] ldr r1, _080D79AC @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D79B0 @ =sub_8078B34 str r0, [r4, 0x1C] pop {r4} @@ -27437,7 +27437,7 @@ _080D7976: bx r0 .align 2, 0 _080D79A4: .4byte gBattleAnimArgs -_080D79A8: .4byte gBattleAnimEnemyMonIndex +_080D79A8: .4byte gBattleAnimBankTarget _080D79AC: .4byte move_anim_8072740 _080D79B0: .4byte sub_8078B34 thumb_func_end sub_80D792C @@ -27458,7 +27458,7 @@ sub_80D79B4: @ 80D79B4 .align 2, 0 _080D79CC: .4byte gBattleAnimArgs _080D79D0: - ldr r0, _080D7A18 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D7A18 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -27466,7 +27466,7 @@ _080D79D0: adds r3, 0x22 movs r1, 0x1 bl sub_807A3FC - ldr r0, _080D7A1C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D7A1C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -27487,15 +27487,15 @@ _080D79F6: _080D7A06: ldr r1, _080D7A20 @ =sub_80D7A28 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D7A24 @ =sub_80785E4 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080D7A18: .4byte gBattleAnimEnemyMonIndex -_080D7A1C: .4byte gBattleAnimPlayerMonIndex +_080D7A18: .4byte gBattleAnimBankTarget +_080D7A1C: .4byte gBattleAnimBankAttacker _080D7A20: .4byte sub_80D7A28 _080D7A24: .4byte sub_80785E4 thumb_func_end sub_80D79B4 @@ -27551,7 +27551,7 @@ sub_80D7A64: @ 80D7A64 ldrsh r0, [r6, r1] cmp r0, 0 bne _080D7AB4 - ldr r4, _080D7AB0 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D7AB0 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -27569,9 +27569,9 @@ sub_80D7A64: @ 80D7A64 b _080D7AC6 .align 2, 0 _080D7AAC: .4byte gBattleAnimArgs -_080D7AB0: .4byte gBattleAnimEnemyMonIndex +_080D7AB0: .4byte gBattleAnimBankTarget _080D7AB4: - ldr r0, _080D7AE0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D7AE0 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -27580,7 +27580,7 @@ _080D7AB4: movs r1, 0x1 bl sub_807A3FC _080D7AC6: - ldr r0, _080D7AE4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D7AE4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -27593,8 +27593,8 @@ _080D7AC6: strh r1, [r5, 0x32] b _080D7AF6 .align 2, 0 -_080D7AE0: .4byte gBattleAnimEnemyMonIndex -_080D7AE4: .4byte gBattleAnimPlayerMonIndex +_080D7AE0: .4byte gBattleAnimBankTarget +_080D7AE4: .4byte gBattleAnimBankAttacker _080D7AE8: .4byte gBattleAnimArgs _080D7AEC: ldr r0, _080D7B94 @ =gBattleAnimArgs @@ -27678,7 +27678,7 @@ _080D7B76: bge _080D7B76 str r6, [r5, 0x1C] adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 add sp, 0x10 pop {r4-r7} pop {r0} @@ -27706,7 +27706,7 @@ sub_80D7BA0: @ 80D7BA0 strh r5, [r4, 0x24] movs r0, 0x80 strh r0, [r4, 0x2E] - ldr r0, _080D7BFC @ =gBattleAnimPlayerMonIndex + ldr r0, _080D7BFC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -27735,7 +27735,7 @@ _080D7BD0: pop {r0} bx r0 .align 2, 0 -_080D7BFC: .4byte gBattleAnimPlayerMonIndex +_080D7BFC: .4byte gBattleAnimBankAttacker _080D7C00: .4byte 0x0000ffec _080D7C04: .4byte sub_80D7C08 thumb_func_end sub_80D7BA0 @@ -27744,7 +27744,7 @@ _080D7C04: .4byte sub_80D7C08 sub_80D7C08: @ 80D7C08 push {r4,lr} adds r4, r0, 0 - ldr r0, _080D7C5C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D7C5C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -27782,7 +27782,7 @@ _080D7C1E: strh r0, [r4, 0x38] b _080D7C82 .align 2, 0 -_080D7C5C: .4byte gBattleAnimPlayerMonIndex +_080D7C5C: .4byte gBattleAnimBankAttacker _080D7C60: .4byte 0x0000ffec _080D7C64: ldrh r0, [r4, 0x24] @@ -27866,7 +27866,7 @@ sub_80D7CD4: @ 80D7CD4 ldrsh r0, [r1, r2] cmp r0, 0 bne _080D7D20 - ldr r4, _080D7D1C @ =gBattleAnimEnemyMonIndex + ldr r4, _080D7D1C @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -27882,9 +27882,9 @@ sub_80D7CD4: @ 80D7CD4 b _080D7D32 .align 2, 0 _080D7D18: .4byte gBattleAnimArgs -_080D7D1C: .4byte gBattleAnimEnemyMonIndex +_080D7D1C: .4byte gBattleAnimBankTarget _080D7D20: - ldr r0, _080D7D50 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D7D50 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -27893,7 +27893,7 @@ _080D7D20: movs r1, 0x1 bl sub_807A3FC _080D7D32: - ldr r0, _080D7D54 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D7D54 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -27907,8 +27907,8 @@ _080D7D32: adds r1, r0, 0 b _080D7D66 .align 2, 0 -_080D7D50: .4byte gBattleAnimEnemyMonIndex -_080D7D54: .4byte gBattleAnimPlayerMonIndex +_080D7D50: .4byte gBattleAnimBankTarget +_080D7D54: .4byte gBattleAnimBankAttacker _080D7D58: .4byte gBattleAnimArgs _080D7D5C: ldr r1, _080D7E10 @ =gBattleAnimArgs @@ -28088,7 +28088,7 @@ sub_80D7E88: @ 80D7E88 .align 2, 0 _080D7EA8: .4byte gBattleAnimArgs _080D7EAC: - ldr r0, _080D7EEC @ =gBattleAnimEnemyMonIndex + ldr r0, _080D7EEC @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -28096,7 +28096,7 @@ _080D7EAC: adds r3, 0x22 movs r1, 0 bl sub_807A3FC - ldr r0, _080D7EF0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D7EF0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -28120,8 +28120,8 @@ _080D7EE2: strh r0, [r4, 0x2E] b _080D7F08 .align 2, 0 -_080D7EEC: .4byte gBattleAnimEnemyMonIndex -_080D7EF0: .4byte gBattleAnimPlayerMonIndex +_080D7EEC: .4byte gBattleAnimBankTarget +_080D7EF0: .4byte gBattleAnimBankAttacker _080D7EF4: adds r0, r4, 0 adds r0, 0x3F @@ -28158,7 +28158,7 @@ sub_80D7F10: @ 80D7F10 .align 2, 0 _080D7F30: .4byte gBattleAnimArgs _080D7F34: - ldr r4, _080D7F5C @ =gBattleAnimPlayerMonIndex + ldr r4, _080D7F5C @ =gBattleAnimBankAttacker ldrb r0, [r4] adds r2, r5, 0 adds r2, 0x20 @@ -28176,7 +28176,7 @@ _080D7F34: subs r0, r1 b _080D7F66 .align 2, 0 -_080D7F5C: .4byte gBattleAnimPlayerMonIndex +_080D7F5C: .4byte gBattleAnimBankAttacker _080D7F60: ldrh r0, [r6] ldrh r1, [r5, 0x20] @@ -28189,11 +28189,11 @@ _080D7F66: adds r0, r1 strh r0, [r5, 0x22] _080D7F72: - ldr r0, _080D7F7C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D7F7C @ =gBattleAnimBankAttacker b _080D7FD0 .align 2, 0 _080D7F78: .4byte gBattleAnimArgs -_080D7F7C: .4byte gBattleAnimPlayerMonIndex +_080D7F7C: .4byte gBattleAnimBankAttacker _080D7F80: movs r1, 0xA ldrsh r0, [r6, r1] @@ -28204,7 +28204,7 @@ _080D7F80: bl sub_8078764 b _080D7FCE _080D7F92: - ldr r4, _080D7FB8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D7FB8 @ =gBattleAnimBankTarget ldrb r0, [r4] adds r2, r5, 0 adds r2, 0x20 @@ -28222,7 +28222,7 @@ _080D7F92: subs r0, r1 b _080D7FC2 .align 2, 0 -_080D7FB8: .4byte gBattleAnimEnemyMonIndex +_080D7FB8: .4byte gBattleAnimBankTarget _080D7FBC: ldrh r0, [r6] ldrh r1, [r5, 0x20] @@ -28235,7 +28235,7 @@ _080D7FC2: adds r0, r1 strh r0, [r5, 0x22] _080D7FCE: - ldr r0, _080D7FF0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D7FF0 @ =gBattleAnimBankTarget _080D7FD0: ldrb r0, [r0] strh r0, [r5, 0x3C] @@ -28253,12 +28253,12 @@ _080D7FE8: b _080D7FF6 .align 2, 0 _080D7FEC: .4byte gBattleAnimArgs -_080D7FF0: .4byte gBattleAnimEnemyMonIndex +_080D7FF0: .4byte gBattleAnimBankTarget _080D7FF4: movs r0, 0x40 _080D7FF6: strh r0, [r5, 0x3A] - ldr r0, _080D803C @ =gBattleAnimEnemyMonIndex + ldr r0, _080D803C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -28291,7 +28291,7 @@ _080D800C: pop {r0} bx r0 .align 2, 0 -_080D803C: .4byte gBattleAnimEnemyMonIndex +_080D803C: .4byte gBattleAnimBankTarget _080D8040: .4byte gBattleAnimArgs _080D8044: .4byte sub_80D8048 thumb_func_end sub_80D7F10 @@ -28742,7 +28742,7 @@ _080D83DC: .4byte REG_BLDCNT sub_80D83E0: @ 80D83E0 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080D840C @ =gBattleAnimPlayerMonIndex + ldr r5, _080D840C @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -28761,7 +28761,7 @@ sub_80D83E0: @ 80D83E0 pop {r0} bx r0 .align 2, 0 -_080D840C: .4byte gBattleAnimPlayerMonIndex +_080D840C: .4byte gBattleAnimBankAttacker _080D8410: .4byte sub_807941C thumb_func_end sub_80D83E0 @@ -29129,13 +29129,13 @@ sub_80D8700: @ 80D8700 ldr r6, _080D87E8 @ =gBattleAnimArgs ldrh r0, [r6] strh r0, [r5, 0x2E] - ldr r0, _080D87EC @ =gBattleAnimPlayerMonIndex + ldr r0, _080D87EC @ =gBattleAnimBankAttacker mov r8, r0 ldrb r0, [r0] movs r1, 0x2 bl sub_8077ABC adds r4, r0, 0 - ldr r7, _080D87F0 @ =gBattleAnimEnemyMonIndex + ldr r7, _080D87F0 @ =gBattleAnimBankTarget ldrb r0, [r7] movs r1, 0x2 bl sub_8077ABC @@ -29178,7 +29178,7 @@ _080D8734: cmp r0, 0 bne _080D8790 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _080D87F8 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -29196,7 +29196,7 @@ _080D8790: movs r0, 0x1 strh r0, [r5, 0x3A] _080D8794: - ldr r4, _080D87EC @ =gBattleAnimPlayerMonIndex + ldr r4, _080D87EC @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -29218,7 +29218,7 @@ _080D8794: ldrh r1, [r5, 0x20] adds r0, r1 strh r0, [r5, 0x30] - ldr r4, _080D87F0 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D87F0 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -29236,8 +29236,8 @@ _080D8794: b _080D8824 .align 2, 0 _080D87E8: .4byte gBattleAnimArgs -_080D87EC: .4byte gBattleAnimPlayerMonIndex -_080D87F0: .4byte gBattleAnimEnemyMonIndex +_080D87EC: .4byte gBattleAnimBankAttacker +_080D87F0: .4byte gBattleAnimBankTarget _080D87F4: .4byte gBanksBySide _080D87F8: .4byte gSprites _080D87FC: @@ -29245,7 +29245,7 @@ _080D87FC: ldrh r1, [r5, 0x20] adds r0, r1 strh r0, [r5, 0x30] - ldr r4, _080D886C @ =gBattleAnimEnemyMonIndex + ldr r4, _080D886C @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -29295,7 +29295,7 @@ _080D8858: pop {r0} bx r0 .align 2, 0 -_080D886C: .4byte gBattleAnimEnemyMonIndex +_080D886C: .4byte gBattleAnimBankTarget _080D8870: .4byte sub_80D8874 thumb_func_end sub_80D8700 @@ -29357,7 +29357,7 @@ _080D88C8: _080D88D6: movs r5, 0x50 strh r5, [r4, 0x2E] - ldr r6, _080D8928 @ =gBattleAnimEnemyMonIndex + ldr r6, _080D8928 @ =gBattleAnimBankTarget ldrb r0, [r6] movs r1, 0 bl sub_8077ABC @@ -29396,7 +29396,7 @@ _080D88D6: strh r0, [r4, 0x38] b _080D893A .align 2, 0 -_080D8928: .4byte gBattleAnimEnemyMonIndex +_080D8928: .4byte gBattleAnimBankTarget _080D892C: .4byte gMain _080D8930: .4byte 0x0000043d _080D8934: .4byte gBanksBySide @@ -29545,7 +29545,7 @@ _080D8A12: cmp r0, 0 beq _080D8A78 ldr r1, _080D8A70 @ =gBanksBySide - ldr r0, _080D8A74 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D8A74 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -29560,7 +29560,7 @@ _080D8A12: _080D8A68: .4byte gMain _080D8A6C: .4byte 0x0000043d _080D8A70: .4byte gBanksBySide -_080D8A74: .4byte gBattleAnimEnemyMonIndex +_080D8A74: .4byte gBattleAnimBankTarget _080D8A78: ldr r0, _080D8A90 @ =0x0000fff0 _080D8A7A: @@ -29764,7 +29764,7 @@ sub_80D8BA8: @ 80D8BA8 lsls r0, 24 lsrs r5, r0, 24 adds r0, r5, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D8C94 @@ -30089,7 +30089,7 @@ _080D8E6A: ldr r6, _080D8ED0 @ =gBattleAnimArgs ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] - ldr r0, _080D8ED4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D8ED4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30099,7 +30099,7 @@ _080D8E6A: negs r0, r0 strh r0, [r6, 0x4] _080D8E92: - ldr r4, _080D8ED8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D8ED8 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -30128,8 +30128,8 @@ _080D8E92: .align 2, 0 _080D8ECC: .4byte gDisableStructMoveAnim _080D8ED0: .4byte gBattleAnimArgs -_080D8ED4: .4byte gBattleAnimPlayerMonIndex -_080D8ED8: .4byte gBattleAnimEnemyMonIndex +_080D8ED4: .4byte gBattleAnimBankAttacker +_080D8ED8: .4byte gBattleAnimBankTarget _080D8EDC: .4byte sub_80D8EE0 thumb_func_end unc_080B06FC @@ -30148,7 +30148,7 @@ sub_80D8EE0: @ 80D8EE0 str r0, [r4, 0x1C] ldr r1, _080D8F0C @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _080D8F02: pop {r4} pop {r0} @@ -30296,7 +30296,7 @@ unc_080B08A0: @ 80D8FF0 str r0, [r4, 0x1C] ldr r1, _080D9028 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -30315,7 +30315,7 @@ sub_80D902C: @ 80D902C ldrsh r0, [r4, r1] cmp r0, 0x1 bne _080D9054 - ldr r0, _080D9074 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9074 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30341,7 +30341,7 @@ _080D9054: bx r0 .align 2, 0 _080D9070: .4byte gBattleAnimArgs -_080D9074: .4byte gBattleAnimPlayerMonIndex +_080D9074: .4byte gBattleAnimBankAttacker thumb_func_end sub_80D902C thumb_func_start sub_80D9078 @@ -30398,7 +30398,7 @@ _080D90D0: str r0, [r5, 0x1C] ldr r1, _080D90F0 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -30421,13 +30421,13 @@ sub_80D90F4: @ 80D90F4 mov r9, r0 cmp r1, 0 bne _080D9118 - ldr r0, _080D9114 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9114 @ =gBattleAnimBankAttacker b _080D911A .align 2, 0 _080D9110: .4byte gBattleAnimArgs -_080D9114: .4byte gBattleAnimPlayerMonIndex +_080D9114: .4byte gBattleAnimBankAttacker _080D9118: - ldr r0, _080D9260 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9260 @ =gBattleAnimBankTarget _080D911A: ldrb r0, [r0] mov r8, r0 @@ -30584,7 +30584,7 @@ _080D9250: pop {r0} bx r0 .align 2, 0 -_080D9260: .4byte gBattleAnimEnemyMonIndex +_080D9260: .4byte gBattleAnimBankTarget _080D9264: .4byte gBanksBySide _080D9268: .4byte 0xfff00000 _080D926C: .4byte gBattleAnimSpriteTemplate_83DB4A8 @@ -30675,7 +30675,7 @@ _080D9306: str r0, [r4, 0x1C] ldr r1, _080D9324 @ =sub_80D9328 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -30716,7 +30716,7 @@ sub_80D9328: @ 80D9328 str r0, [r5, 0x1C] ldr r1, _080D9374 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _080D9368: pop {r4-r6} pop {r0} @@ -30730,10 +30730,10 @@ _080D9374: .4byte move_anim_8072740 sub_80D9378: @ 80D9378 push {r4-r6,lr} adds r6, r0, 0 - ldr r0, _080D93F4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D93F4 @ =gBattleAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 - ldr r2, _080D93F8 @ =gBattleAnimEnemyMonIndex + ldr r2, _080D93F8 @ =gBattleAnimBankTarget eors r0, r1 ldrb r1, [r2] cmp r0, r1 @@ -30753,7 +30753,7 @@ _080D93A4: adds r0, r6, 0 movs r1, 0x1 bl sub_8078764 - ldr r0, _080D93F4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D93F4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -30789,8 +30789,8 @@ _080D93C2: pop {r0} bx r0 .align 2, 0 -_080D93F4: .4byte gBattleAnimPlayerMonIndex -_080D93F8: .4byte gBattleAnimEnemyMonIndex +_080D93F4: .4byte gBattleAnimBankAttacker +_080D93F8: .4byte gBattleAnimBankTarget _080D93FC: .4byte gBattleAnimArgs _080D9400: .4byte sub_80D9404 thumb_func_end sub_80D9378 @@ -30842,7 +30842,7 @@ sub_80D943C: @ 80D943C str r0, [r4, 0x1C] ldr r1, _080D9470 @ =sub_80D9474 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -30870,7 +30870,7 @@ sub_80D9474: @ 80D9474 str r0, [r4, 0x1C] ldr r1, _080D94A4 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -30913,7 +30913,7 @@ sub_80D94CC: @ 80D94CC bne _080D9510 movs r0, 0x6 strh r0, [r5, 0x2E] - ldr r4, _080D9518 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D9518 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -30930,13 +30930,13 @@ sub_80D94CC: @ 80D94CC str r0, [r5, 0x1C] ldr r1, _080D9520 @ =sub_80D9524 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _080D9510: pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080D9518: .4byte gBattleAnimEnemyMonIndex +_080D9518: .4byte gBattleAnimBankTarget _080D951C: .4byte sub_8078B34 _080D9520: .4byte sub_80D9524 thumb_func_end sub_80D94CC @@ -30949,7 +30949,7 @@ sub_80D9524: @ 80D9524 ldr r1, _080D9538 @ =sub_80782D8 str r1, [r0, 0x1C] ldr r1, _080D953C @ =move_anim_8072740 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 @@ -31040,13 +31040,13 @@ sub_80D95D0: @ 80D95D0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080D95EC - ldr r4, _080D95E8 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D95E8 @ =gBattleAnimBankAttacker b _080D95EE .align 2, 0 _080D95E4: .4byte gBattleAnimArgs -_080D95E8: .4byte gBattleAnimPlayerMonIndex +_080D95E8: .4byte gBattleAnimBankAttacker _080D95EC: - ldr r4, _080D9634 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D9634 @ =gBattleAnimBankTarget _080D95EE: ldrb r0, [r4] movs r1, 0 @@ -31082,7 +31082,7 @@ _080D95EE: pop {r0} bx r0 .align 2, 0 -_080D9634: .4byte gBattleAnimEnemyMonIndex +_080D9634: .4byte gBattleAnimBankTarget _080D9638: .4byte gBattleAnimArgs _080D963C: .4byte sub_80D9640 thumb_func_end sub_80D95D0 @@ -31165,7 +31165,7 @@ sub_80D96B8: @ 80D96B8 ldrsh r0, [r6, r1] cmp r0, 0 bne _080D96E4 - ldr r4, _080D96E0 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D96E0 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -31176,9 +31176,9 @@ sub_80D96B8: @ 80D96B8 b _080D96F6 .align 2, 0 _080D96DC: .4byte gBattleAnimArgs -_080D96E0: .4byte gBattleAnimPlayerMonIndex +_080D96E0: .4byte gBattleAnimBankAttacker _080D96E4: - ldr r4, _080D9740 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D9740 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -31224,7 +31224,7 @@ _080D96F6: beq _080D975A b _080D978A .align 2, 0 -_080D9740: .4byte gBattleAnimEnemyMonIndex +_080D9740: .4byte gBattleAnimBankTarget _080D9744: .4byte gBattleAnimArgs _080D9748: .4byte 0x000003ff _080D974C: .4byte 0xfffffc00 @@ -31322,7 +31322,7 @@ sub_80D97CC: @ 80D97CC lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - ldr r0, _080D9820 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9820 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079ED4 movs r1, 0x3 @@ -31334,15 +31334,15 @@ sub_80D97CC: @ 80D97CC ands r0, r2 orrs r0, r1 strb r0, [r5, 0x5] - ldr r0, _080D9824 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9824 @ =gBattleAnimBankTarget b _080D9844 .align 2, 0 _080D9818: .4byte gBattleAnimArgs _080D981C: .4byte gBankAttacker -_080D9820: .4byte gBattleAnimPlayerMonIndex -_080D9824: .4byte gBattleAnimEnemyMonIndex +_080D9820: .4byte gBattleAnimBankAttacker +_080D9824: .4byte gBattleAnimBankTarget _080D9828: - ldr r0, _080D9860 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9860 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 movs r1, 0x3 @@ -31354,7 +31354,7 @@ _080D9828: ands r0, r2 orrs r0, r1 strb r0, [r5, 0x5] - ldr r0, _080D9864 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9864 @ =gBattleAnimBankAttacker _080D9844: ldrb r0, [r0] strh r0, [r5, 0x3C] @@ -31370,8 +31370,8 @@ _080D9844: pop {r0} bx r0 .align 2, 0 -_080D9860: .4byte gBattleAnimEnemyMonIndex -_080D9864: .4byte gBattleAnimPlayerMonIndex +_080D9860: .4byte gBattleAnimBankTarget +_080D9864: .4byte gBattleAnimBankAttacker _080D9868: .4byte sub_80D986C thumb_func_end sub_80D97CC @@ -31415,7 +31415,7 @@ sub_80D986C: @ 80D986C bl obj_translate_based_on_private_1_2_3_4 ldr r1, _080D98D0 @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D98D4 @ =sub_8078BB8 str r0, [r4, 0x1C] _080D98C6: @@ -31515,7 +31515,7 @@ _080D997E: strh r0, [r7, 0x2E] b _080D99DC _080D9986: - ldr r4, _080D99E8 @ =gBattleAnimPlayerMonIndex + ldr r4, _080D99E8 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -31528,7 +31528,7 @@ _080D9986: adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r2, _080D99EC @ =gBattleAnimEnemyMonIndex + ldr r2, _080D99EC @ =gBattleAnimBankTarget mov r8, r2 ldrb r0, [r2] movs r1, 0x2 @@ -31561,8 +31561,8 @@ _080D99DC: pop {r0} bx r0 .align 2, 0 -_080D99E8: .4byte gBattleAnimPlayerMonIndex -_080D99EC: .4byte gBattleAnimEnemyMonIndex +_080D99E8: .4byte gBattleAnimBankAttacker +_080D99EC: .4byte gBattleAnimBankTarget _080D99F0: .4byte sub_80D99F4 thumb_func_end sub_80D9934 @@ -31627,19 +31627,19 @@ sub_80D9A38: @ 80D9A38 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - ldr r0, _080D9A74 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9A74 @ =gBattleAnimBankTarget ldrb r4, [r0] - ldr r0, _080D9A78 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9A78 @ =gBattleAnimBankAttacker b _080D9A82 .align 2, 0 _080D9A6C: .4byte gBattleAnimArgs _080D9A70: .4byte gBankAttacker -_080D9A74: .4byte gBattleAnimEnemyMonIndex -_080D9A78: .4byte gBattleAnimPlayerMonIndex +_080D9A74: .4byte gBattleAnimBankTarget +_080D9A78: .4byte gBattleAnimBankAttacker _080D9A7C: - ldr r0, _080D9AB4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9AB4 @ =gBattleAnimBankAttacker ldrb r4, [r0] - ldr r0, _080D9AB8 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9AB8 @ =gBattleAnimBankTarget _080D9A82: ldrb r0, [r0] bl sub_8079ED4 @@ -31665,8 +31665,8 @@ _080D9A82: subs r0, 0x47 b _080D9AD6 .align 2, 0 -_080D9AB4: .4byte gBattleAnimPlayerMonIndex -_080D9AB8: .4byte gBattleAnimEnemyMonIndex +_080D9AB4: .4byte gBattleAnimBankAttacker +_080D9AB8: .4byte gBattleAnimBankTarget _080D9ABC: adds r0, r4, 0 bl GetBankSide @@ -31707,7 +31707,7 @@ _080D9ADC: bl obj_translate_based_on_private_1_2_3_4 ldr r1, _080D9B1C @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080D9B20 @ =sub_8078BB8 str r0, [r5, 0x1C] pop {r4,r5} @@ -31743,7 +31743,7 @@ _080D9B3A: sub_80D9B48: @ 80D9B48 push {r4-r6,lr} adds r5, r0, 0 - ldr r4, _080D9BC4 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D9BC4 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -31802,7 +31802,7 @@ _080D9BA6: pop {r0} bx r0 .align 2, 0 -_080D9BC4: .4byte gBattleAnimEnemyMonIndex +_080D9BC4: .4byte gBattleAnimBankTarget _080D9BC8: .4byte gBattleAnimArgs _080D9BCC: .4byte gUnknown_0202F7C4 _080D9BD0: .4byte sub_80D9B24 @@ -31837,7 +31837,7 @@ _080D9BF8: bl StartSpriteAnim b _080D9C22 _080D9C0C: - ldr r0, _080D9C34 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9C34 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -31851,12 +31851,12 @@ _080D9C22: str r0, [r4, 0x1C] ldr r1, _080D9C3C @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 .align 2, 0 -_080D9C34: .4byte gBattleAnimPlayerMonIndex +_080D9C34: .4byte gBattleAnimBankAttacker _080D9C38: .4byte sub_8078600 _080D9C3C: .4byte move_anim_8072740 thumb_func_end sub_80D9BD4 @@ -31952,7 +31952,7 @@ _080D9CDE: ldrh r1, [r4, 0x1C] adds r0, r1 strh r0, [r4, 0x1C] - ldr r0, _080D9D0C @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9D0C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -31968,7 +31968,7 @@ _080D9CDE: adds r7, r1, 0 b _080D9D24 .align 2, 0 -_080D9D0C: .4byte gBattleAnimEnemyMonIndex +_080D9D0C: .4byte gBattleAnimBankTarget _080D9D10: .4byte gUnknown_030041B0 _080D9D14: ldr r2, _080D9D64 @ =gUnknown_030041B0 @@ -32034,7 +32034,7 @@ _080D9D86: bl sub_80787B0 ldrh r0, [r4, 0x4] strh r0, [r5, 0x2E] - ldr r4, _080D9DC8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080D9DC8 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -32058,7 +32058,7 @@ _080D9D86: bx r0 .align 2, 0 _080D9DC4: .4byte gBattleAnimArgs -_080D9DC8: .4byte gBattleAnimEnemyMonIndex +_080D9DC8: .4byte gBattleAnimBankTarget _080D9DCC: .4byte 0x0000ffe2 _080D9DD0: .4byte sub_80D9DD4 thumb_func_end sub_80D9D70 @@ -32096,7 +32096,7 @@ _080D9E08: adds r0, r4, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _080D9E68 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9E68 @ =gBattleAnimBankTarget ldrb r0, [r0] mov r6, sp adds r6, 0x2 @@ -32104,7 +32104,7 @@ _080D9E08: mov r2, sp adds r3, r6, 0 bl sub_807A3FC - ldr r0, _080D9E6C @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9E6C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -32137,8 +32137,8 @@ _080D9E36: bx r0 .align 2, 0 _080D9E64: .4byte gBattleAnimArgs -_080D9E68: .4byte gBattleAnimEnemyMonIndex -_080D9E6C: .4byte gBattleAnimPlayerMonIndex +_080D9E68: .4byte gBattleAnimBankTarget +_080D9E6C: .4byte gBattleAnimBankAttacker _080D9E70: .4byte 0x0000ffe2 _080D9E74: .4byte sub_80D9E78 thumb_func_end sub_80D9DF0 @@ -32229,7 +32229,7 @@ _080D9F0E: sub_80D9F14: @ 80D9F14 push {r4,lr} adds r4, r0, 0 - ldr r0, _080D9F74 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9F74 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -32237,7 +32237,7 @@ sub_80D9F14: @ 80D9F14 adds r3, 0x22 movs r1, 0x1 bl sub_807A3FC - ldr r0, _080D9F78 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9F78 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -32268,13 +32268,13 @@ _080D9F40: str r0, [r4, 0x1C] ldr r1, _080D9F84 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 .align 2, 0 -_080D9F74: .4byte gBattleAnimEnemyMonIndex -_080D9F78: .4byte gBattleAnimPlayerMonIndex +_080D9F74: .4byte gBattleAnimBankTarget +_080D9F78: .4byte gBattleAnimBankAttacker _080D9F7C: .4byte gBattleAnimArgs _080D9F80: .4byte sub_8078B34 _080D9F84: .4byte move_anim_8072740 @@ -32296,7 +32296,7 @@ sub_80D9F88: @ 80D9F88 .align 2, 0 _080D9FA0: .4byte gBattleAnimArgs _080D9FA4: - ldr r0, _080D9FE4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080D9FE4 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -32304,7 +32304,7 @@ _080D9FA4: adds r3, 0x22 movs r1, 0x1 bl sub_807A3FC - ldr r0, _080D9FE8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080D9FE8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -32329,8 +32329,8 @@ _080D9FDA: pop {r0} bx r0 .align 2, 0 -_080D9FE4: .4byte gBattleAnimEnemyMonIndex -_080D9FE8: .4byte gBattleAnimPlayerMonIndex +_080D9FE4: .4byte gBattleAnimBankTarget +_080D9FE8: .4byte gBattleAnimBankAttacker _080D9FEC: .4byte sub_80D9FF0 thumb_func_end sub_80D9F88 @@ -32538,7 +32538,7 @@ sub_80DA16C: @ 80DA16C adds r6, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _080DA1D8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DA1D8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -32554,7 +32554,7 @@ _080DA18C: strh r0, [r6, 0x2E] ldrh r0, [r6, 0x20] strh r0, [r6, 0x30] - ldr r5, _080DA1E0 @ =gBattleAnimEnemyMonIndex + ldr r5, _080DA1E0 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -32579,14 +32579,14 @@ _080DA18C: str r0, [r6, 0x1C] ldr r1, _080DA1E8 @ =sub_80DA1EC adds r0, r6, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080DA1D8: .4byte gBattleAnimPlayerMonIndex +_080DA1D8: .4byte gBattleAnimBankAttacker _080DA1DC: .4byte gBattleAnimArgs -_080DA1E0: .4byte gBattleAnimEnemyMonIndex +_080DA1E0: .4byte gBattleAnimBankTarget _080DA1E4: .4byte sub_80785E4 _080DA1E8: .4byte sub_80DA1EC thumb_func_end sub_80DA16C @@ -32611,7 +32611,7 @@ _080DA200: sub_80DA208: @ 80DA208 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _080DA2A4 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DA2A4 @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -32668,7 +32668,7 @@ _080DA24C: ldrsh r0, [r2, r3] cmp r0, 0 bne _080DA2B0 - ldr r4, _080DA2AC @ =gBattleAnimEnemyMonIndex + ldr r4, _080DA2AC @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -32683,11 +32683,11 @@ _080DA24C: strh r0, [r5, 0x36] b _080DA2C2 .align 2, 0 -_080DA2A4: .4byte gBattleAnimPlayerMonIndex +_080DA2A4: .4byte gBattleAnimBankAttacker _080DA2A8: .4byte gBattleAnimArgs -_080DA2AC: .4byte gBattleAnimEnemyMonIndex +_080DA2AC: .4byte gBattleAnimBankTarget _080DA2B0: - ldr r0, _080DA2F0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DA2F0 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -32709,7 +32709,7 @@ _080DA2C2: str r0, [r5, 0x1C] ldr r1, _080DA2FC @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldrb r1, [r4, 0xA] adds r0, r5, 0 bl SeekSpriteAnim @@ -32717,7 +32717,7 @@ _080DA2C2: pop {r0} bx r0 .align 2, 0 -_080DA2F0: .4byte gBattleAnimEnemyMonIndex +_080DA2F0: .4byte gBattleAnimBankTarget _080DA2F4: .4byte gBattleAnimArgs _080DA2F8: .4byte sub_8078B34 _080DA2FC: .4byte move_anim_8072740 @@ -32737,7 +32737,7 @@ sub_80DA300: @ 80DA300 ldr r0, _080DA340 @ =sub_80DA348 str r0, [r4, 0x1C] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _080DA344 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -32802,7 +32802,7 @@ _080DA386: sub_80DA38C: @ 80DA38C push {r4,r5,lr} adds r5, r0, 0 - ldr r0, _080DA3B4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DA3B4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -32818,7 +32818,7 @@ sub_80DA38C: @ 80DA38C bl StartSpriteAffineAnim b _080DA3C2 .align 2, 0 -_080DA3B4: .4byte gBattleAnimPlayerMonIndex +_080DA3B4: .4byte gBattleAnimBankAttacker _080DA3B8: .4byte 0x0000ffe0 _080DA3BC: ldr r0, _080DA400 @ =0x0000ffe0 @@ -32830,7 +32830,7 @@ _080DA3C2: strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] - ldr r4, _080DA408 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DA408 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -32855,7 +32855,7 @@ _080DA3C2: .align 2, 0 _080DA400: .4byte 0x0000ffe0 _080DA404: .4byte gBattleAnimArgs -_080DA408: .4byte gBattleAnimEnemyMonIndex +_080DA408: .4byte gBattleAnimBankTarget _080DA40C: .4byte sub_80DA410 thumb_func_end sub_80DA38C @@ -32900,7 +32900,7 @@ _080DA438: ble _080DA480 _080DA45A: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _080DA488 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -32980,13 +32980,13 @@ sub_80DA4D8: @ 80DA4D8 ands r0, r1 cmp r0, 0 beq _080DA500 - ldr r0, _080DA4FC @ =gBattleAnimPlayerMonIndex + ldr r0, _080DA4FC @ =gBattleAnimBankAttacker b _080DA502 .align 2, 0 _080DA4F8: .4byte gBattleAnimArgs -_080DA4FC: .4byte gBattleAnimPlayerMonIndex +_080DA4FC: .4byte gBattleAnimBankAttacker _080DA500: - ldr r0, _080DA5B0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DA5B0 @ =gBattleAnimBankTarget _080DA502: ldrb r6, [r0] adds r0, r6, 0 @@ -33073,7 +33073,7 @@ _080DA518: strb r1, [r7, 0x5] b _080DA5D8 .align 2, 0 -_080DA5B0: .4byte gBattleAnimEnemyMonIndex +_080DA5B0: .4byte gBattleAnimBankTarget _080DA5B4: .4byte gBattleAnimArgs _080DA5B8: .4byte gMain _080DA5BC: .4byte 0x0000043d @@ -34081,7 +34081,7 @@ _080DAD2C: .4byte sub_80DA48C sub_80DAD30: @ 80DAD30 push {r4,r5,lr} adds r4, r0, 0 - ldr r0, _080DAD78 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DAD78 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 movs r1, 0x3 @@ -34093,7 +34093,7 @@ sub_80DAD30: @ 80DAD30 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x5] - ldr r5, _080DAD7C @ =gBattleAnimPlayerMonIndex + ldr r5, _080DAD7C @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -34112,8 +34112,8 @@ sub_80DAD30: @ 80DAD30 pop {r0} bx r0 .align 2, 0 -_080DAD78: .4byte gBattleAnimEnemyMonIndex -_080DAD7C: .4byte gBattleAnimPlayerMonIndex +_080DAD78: .4byte gBattleAnimBankTarget +_080DAD7C: .4byte gBattleAnimBankAttacker _080DAD80: .4byte sub_807941C thumb_func_end sub_80DAD30 @@ -34137,7 +34137,7 @@ sub_80DAD84: @ 80DAD84 cmp r0, 0 beq _080DAE44 ldr r0, _080DADD8 @ =gBanksBySide - ldr r1, _080DADDC @ =gBattleAnimEnemyMonIndex + ldr r1, _080DADDC @ =gBattleAnimBankTarget ldrb r2, [r1] adds r0, r2, r0 ldrb r1, [r0] @@ -34158,7 +34158,7 @@ _080DADCC: .4byte gBattleAnimArgs _080DADD0: .4byte gMain _080DADD4: .4byte 0x0000043d _080DADD8: .4byte gBanksBySide -_080DADDC: .4byte gBattleAnimEnemyMonIndex +_080DADDC: .4byte gBattleAnimBankTarget _080DADE0: adds r0, r2, 0 movs r1, 0x1 @@ -34173,7 +34173,7 @@ _080DADEE: ldrsh r0, [r0, r1] cmp r0, 0 beq _080DAE24 - ldr r0, _080DAE20 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DAE20 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 lsls r0, 24 @@ -34191,9 +34191,9 @@ _080DADEE: b _080DAE58 .align 2, 0 _080DAE1C: .4byte gBattleAnimArgs -_080DAE20: .4byte gBattleAnimEnemyMonIndex +_080DAE20: .4byte gBattleAnimBankTarget _080DAE24: - ldr r0, _080DAE40 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DAE40 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8079ED4 movs r1, 0x3 @@ -34207,9 +34207,9 @@ _080DAE24: strb r0, [r4, 0x5] b _080DAE58 .align 2, 0 -_080DAE40: .4byte gBattleAnimEnemyMonIndex +_080DAE40: .4byte gBattleAnimBankTarget _080DAE44: - ldr r0, _080DAEFC @ =gBattleAnimEnemyMonIndex + ldr r0, _080DAEFC @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_8077ABC @@ -34303,7 +34303,7 @@ _080DAEF2: pop {r0} bx r0 .align 2, 0 -_080DAEFC: .4byte gBattleAnimEnemyMonIndex +_080DAEFC: .4byte gBattleAnimBankTarget _080DAF00: .4byte gSineTable _080DAF04: .4byte gOamMatrices _080DAF08: .4byte sub_80DAF0C @@ -34463,7 +34463,7 @@ _080DB024: ldrsh r0, [r4, r2] cmp r0, 0 bne _080DB03C - ldr r0, _080DB090 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DB090 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -34474,7 +34474,7 @@ _080DB03C: ldrsh r0, [r4, r1] cmp r0, 0x1 bne _080DB058 - ldr r0, _080DB094 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DB094 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -34512,8 +34512,8 @@ _080DB058: bx r0 .align 2, 0 _080DB08C: .4byte gBattleAnimArgs -_080DB090: .4byte gBattleAnimPlayerMonIndex -_080DB094: .4byte gBattleAnimEnemyMonIndex +_080DB090: .4byte gBattleAnimBankAttacker +_080DB094: .4byte gBattleAnimBankTarget _080DB098: .4byte 0x00000ccc _080DB09C: .4byte sub_80DB0A0 thumb_func_end sub_80DB000 @@ -34599,7 +34599,7 @@ sub_80DB0E8: @ 80DB0E8 strh r0, [r4, 0x6] ldr r0, _080DB18C @ =gBattleAnimSpriteTemplate_83DB538 mov r8, r0 - ldr r5, _080DB190 @ =gBattleAnimEnemyMonIndex + ldr r5, _080DB190 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -34637,7 +34637,7 @@ _080DB180: .4byte gTasks _080DB184: .4byte gAnimVisualTaskCount _080DB188: .4byte gBattleAnimArgs _080DB18C: .4byte gBattleAnimSpriteTemplate_83DB538 -_080DB190: .4byte gBattleAnimEnemyMonIndex +_080DB190: .4byte gBattleAnimBankTarget thumb_func_end sub_80DB0E8 thumb_func_start sub_80DB194 @@ -34656,7 +34656,7 @@ _080DB1A6: movs r1, 0x1 bl sub_80787B0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _080DB1D4 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -34709,7 +34709,7 @@ _080DB20A: beq _080DB240 b _080DB27E _080DB210: - ldr r0, _080DB228 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DB228 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_8077ABC @@ -34721,7 +34721,7 @@ _080DB210: strh r0, [r4, 0x26] b _080DB238 .align 2, 0 -_080DB228: .4byte gBattleAnimEnemyMonIndex +_080DB228: .4byte gBattleAnimBankTarget _080DB22C: ldrh r0, [r4, 0x26] adds r0, 0xA @@ -34748,7 +34748,7 @@ _080DB240: cmp r0, r1 bge _080DB27E movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _080DB284 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -34786,7 +34786,7 @@ sub_80DB288: @ 80DB288 ldr r0, _080DB2C8 @ =sub_80DB2D0 str r0, [r4, 0x1C] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _080DB2CC @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -34919,13 +34919,13 @@ _080DB388: ldrsh r0, [r0, r2] cmp r0, 0 bne _080DB3A0 - ldr r4, _080DB39C @ =gBattleAnimPlayerMonIndex + ldr r4, _080DB39C @ =gBattleAnimBankAttacker b _080DB3A2 .align 2, 0 _080DB398: .4byte gBattleAnimArgs -_080DB39C: .4byte gBattleAnimPlayerMonIndex +_080DB39C: .4byte gBattleAnimBankAttacker _080DB3A0: - ldr r4, _080DB3DC @ =gBattleAnimEnemyMonIndex + ldr r4, _080DB3DC @ =gBattleAnimBankTarget _080DB3A2: ldrb r0, [r4] movs r1, 0 @@ -34954,7 +34954,7 @@ _080DB3A2: strh r0, [r5, 0x2E] b _080DB44C .align 2, 0 -_080DB3DC: .4byte gBattleAnimEnemyMonIndex +_080DB3DC: .4byte gBattleAnimBankTarget _080DB3E0: movs r1, 0x32 ldrsh r0, [r5, r1] @@ -35079,13 +35079,13 @@ _080DB4C0: ldrsh r0, [r2, r1] cmp r0, 0 bne _080DB4D4 - ldr r4, _080DB4D0 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DB4D0 @ =gBattleAnimBankAttacker b _080DB4D6 .align 2, 0 _080DB4CC: .4byte gBattleAnimArgs -_080DB4D0: .4byte gBattleAnimPlayerMonIndex +_080DB4D0: .4byte gBattleAnimBankAttacker _080DB4D4: - ldr r4, _080DB500 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DB500 @ =gBattleAnimBankTarget _080DB4D6: ldrb r0, [r4] movs r1, 0 @@ -35106,7 +35106,7 @@ _080DB4D6: pop {r0} bx r0 .align 2, 0 -_080DB500: .4byte gBattleAnimEnemyMonIndex +_080DB500: .4byte gBattleAnimBankTarget _080DB504: .4byte sub_80DB508 thumb_func_end sub_80DB458 @@ -35245,7 +35245,7 @@ sub_80DB5E4: @ 80DB5E4 mov r8, r0 ldrh r4, [r0, 0x20] ldrh r5, [r0, 0x22] - ldr r6, _080DB698 @ =gBattleAnimPlayerMonIndex + ldr r6, _080DB698 @ =gBattleAnimBankAttacker ldrb r0, [r6] movs r1, 0x2 bl sub_8077ABC @@ -35321,7 +35321,7 @@ sub_80DB5E4: @ 80DB5E4 pop {r0} bx r0 .align 2, 0 -_080DB698: .4byte gBattleAnimPlayerMonIndex +_080DB698: .4byte gBattleAnimBankAttacker _080DB69C: .4byte sub_80DB6A0 thumb_func_end sub_80DB5E4 @@ -35375,7 +35375,7 @@ unref_sub_80DB6E4: @ 80DB6E4 cmp r0, 0 bne _080DB71C movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 ldr r2, _080DB718 @ =gSprites @@ -35393,7 +35393,7 @@ _080DB714: .4byte gBattleAnimArgs _080DB718: .4byte gSprites _080DB71C: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 ldr r2, _080DB748 @ =gSprites @@ -35421,7 +35421,7 @@ _080DB748: .4byte gSprites sub_80DB74C: @ 80DB74C push {r4-r7,lr} adds r6, r0, 0 - ldr r0, _080DB804 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DB804 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35463,7 +35463,7 @@ _080DB77E: orrs r1, r0 lsrs r5, r1, 31 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080DB7BC @@ -35475,7 +35475,7 @@ _080DB7BC: adds r4, r0, 0 eors r4, r7 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080DB7DA @@ -35493,7 +35493,7 @@ _080DB7DA: lsls r0, 24 cmp r0, 0 beq _080DB810 - ldr r0, _080DB804 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DB804 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35504,14 +35504,14 @@ _080DB7DA: movs r0, 0x50 b _080DB84A .align 2, 0 -_080DB804: .4byte gBattleAnimPlayerMonIndex +_080DB804: .4byte gBattleAnimBankAttacker _080DB808: movs r0, 0xB0 strh r0, [r6, 0x20] movs r0, 0x28 b _080DB84A _080DB810: - ldr r5, _080DB880 @ =gBattleAnimPlayerMonIndex + ldr r5, _080DB880 @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -35565,7 +35565,7 @@ _080DB85C: pop {r0} bx r0 .align 2, 0 -_080DB880: .4byte gBattleAnimPlayerMonIndex +_080DB880: .4byte gBattleAnimBankAttacker _080DB884: .4byte gBattleAnimArgs _080DB888: .4byte sub_80DB88C thumb_func_end sub_80DB74C @@ -35689,7 +35689,7 @@ sub_80DB92C: @ 80DB92C lsrs r4, r0, 24 adds r6, r4, 0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080DB98E @@ -35712,7 +35712,7 @@ _080DB98E: adds r4, r0, 0 eors r4, r6 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080DB9BC @@ -35772,7 +35772,7 @@ sub_80DB9E4: @ 80DB9E4 orrs r1, r0 lsrs r5, r1, 31 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080DBA22 @@ -35782,7 +35782,7 @@ _080DBA22: movs r0, 0x2 eors r4, r0 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080DBA3C @@ -35824,7 +35824,7 @@ _080DBA66: lsls r0, 24 cmp r0, 0 beq _080DBAAE - ldr r0, _080DBA9C @ =gBattleAnimPlayerMonIndex + ldr r0, _080DBA9C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -35840,7 +35840,7 @@ _080DBA66: b _080DBAD0 .align 2, 0 _080DBA98: .4byte gBattleAnimArgs -_080DBA9C: .4byte gBattleAnimPlayerMonIndex +_080DBA9C: .4byte gBattleAnimBankAttacker _080DBAA0: ldrh r0, [r5] adds r0, 0xB0 @@ -35890,7 +35890,7 @@ _080DBAEC: sub_80DBAF4: @ 80DBAF4 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _080DBB3C @ =gBattleAnimPlayerMonIndex + ldr r4, _080DBB3C @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -35920,7 +35920,7 @@ sub_80DBAF4: @ 80DBAF4 ldr r0, _080DBB40 @ =0x0000ffff b _080DBB52 .align 2, 0 -_080DBB3C: .4byte gBattleAnimPlayerMonIndex +_080DBB3C: .4byte gBattleAnimBankAttacker _080DBB40: .4byte 0x0000ffff _080DBB44: ldrh r0, [r5, 0x20] @@ -35934,7 +35934,7 @@ _080DBB52: strh r0, [r5, 0x30] ldr r1, _080DBB68 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080DBB6C @ =sub_8078600 str r0, [r5, 0x1C] pop {r4,r5} @@ -35949,7 +35949,7 @@ _080DBB6C: .4byte sub_8078600 sub_80DBB70: @ 80DBB70 push {r4-r7,lr} adds r5, r0, 0 - ldr r6, _080DBBF4 @ =gBattleAnimPlayerMonIndex + ldr r6, _080DBBF4 @ =gBattleAnimBankAttacker ldrb r0, [r6] movs r1, 0x1 bl sub_807A100 @@ -36003,14 +36003,14 @@ _080DBBB6: _080DBBE2: ldr r1, _080DBBF8 @ =sub_80DBC00 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080DBBFC @ =sub_8078600 str r0, [r5, 0x1C] pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_080DBBF4: .4byte gBattleAnimPlayerMonIndex +_080DBBF4: .4byte gBattleAnimBankAttacker _080DBBF8: .4byte sub_80DBC00 _080DBBFC: .4byte sub_8078600 thumb_func_end sub_80DBB70 @@ -36105,7 +36105,7 @@ sub_80DBC94: @ 80DBC94 ldr r0, _080DBCC4 @ =gTasks adds r4, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -36159,14 +36159,14 @@ sub_80DBCFC: @ 80DBCFC ldr r0, _080DBD48 @ =gTasks adds r4, r1, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r1, 0 strh r0, [r4, 0x8] strh r1, [r4, 0xA] strh r1, [r4, 0xC] - ldr r0, _080DBD4C @ =gBattleAnimPlayerMonIndex + ldr r0, _080DBD4C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -36187,7 +36187,7 @@ _080DBD30: bx r0 .align 2, 0 _080DBD48: .4byte gTasks -_080DBD4C: .4byte gBattleAnimPlayerMonIndex +_080DBD4C: .4byte gBattleAnimBankAttacker _080DBD50: .4byte gUnknown_083DA8C4 _080DBD54: .4byte sub_80DBD58 thumb_func_end sub_80DBCFC @@ -36294,7 +36294,7 @@ sub_80DBE00: @ 80DBE00 movs r7, 0x10 strh r7, [r5, 0xE] strh r0, [r5, 0x10] - ldr r4, _080DBE88 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DBE88 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -36345,7 +36345,7 @@ _080DBE6A: bx r0 .align 2, 0 _080DBE84: .4byte gTasks -_080DBE88: .4byte gBattleAnimPlayerMonIndex +_080DBE88: .4byte gBattleAnimBankAttacker _080DBE8C: .4byte REG_BLDCNT _080DBE90: .4byte REG_BLDALPHA _080DBE94: .4byte sub_80DBE98 @@ -36614,7 +36614,7 @@ sub_80DC068: @ 80DC068 ldrsh r0, [r6, r1] cmp r0, 0 bne _080DC094 - ldr r4, _080DC0A8 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DC0A8 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -36637,7 +36637,7 @@ _080DC094: bx r0 .align 2, 0 _080DC0A4: .4byte gBattleAnimArgs -_080DC0A8: .4byte gBattleAnimPlayerMonIndex +_080DC0A8: .4byte gBattleAnimBankAttacker _080DC0AC: .4byte sub_80DC020 thumb_func_end sub_80DC068 @@ -36662,7 +36662,7 @@ sub_80DC0B0: @ 80DC0B0 bne _080DC120 ldr r0, _080DC114 @ =0x0000fff6 strh r0, [r5, 0x1C] - ldr r4, _080DC118 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DC118 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x5 bl sub_807A100 @@ -36673,7 +36673,7 @@ sub_80DC0B0: @ 80DC0B0 bl sub_807A100 adds r0, 0x8 strh r0, [r5, 0x20] - ldr r4, _080DC11C @ =gBattleAnimPlayerMonIndex + ldr r4, _080DC11C @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x5 bl sub_807A100 @@ -36688,12 +36688,12 @@ sub_80DC0B0: @ 80DC0B0 _080DC10C: .4byte gTasks _080DC110: .4byte gBattleAnimArgs _080DC114: .4byte 0x0000fff6 -_080DC118: .4byte gBattleAnimEnemyMonIndex -_080DC11C: .4byte gBattleAnimPlayerMonIndex +_080DC118: .4byte gBattleAnimBankTarget +_080DC11C: .4byte gBattleAnimBankAttacker _080DC120: movs r0, 0xA strh r0, [r5, 0x1C] - ldr r4, _080DC14C @ =gBattleAnimPlayerMonIndex + ldr r4, _080DC14C @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x4 bl sub_807A100 @@ -36704,15 +36704,15 @@ _080DC120: bl sub_807A100 subs r0, 0x8 strh r0, [r5, 0x20] - ldr r4, _080DC150 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DC150 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x4 bl sub_807A100 adds r0, 0x8 b _080DC1D2 .align 2, 0 -_080DC14C: .4byte gBattleAnimPlayerMonIndex -_080DC150: .4byte gBattleAnimEnemyMonIndex +_080DC14C: .4byte gBattleAnimBankAttacker +_080DC150: .4byte gBattleAnimBankTarget _080DC154: ldr r0, _080DC198 @ =gBattleAnimArgs movs r1, 0 @@ -36721,7 +36721,7 @@ _080DC154: bne _080DC1A8 ldr r0, _080DC19C @ =0x0000fff6 strh r0, [r5, 0x1C] - ldr r4, _080DC1A0 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DC1A0 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x4 bl sub_807A100 @@ -36732,7 +36732,7 @@ _080DC154: bl sub_807A100 adds r0, 0x8 strh r0, [r5, 0x20] - ldr r4, _080DC1A4 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DC1A4 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x4 bl sub_807A100 @@ -36746,12 +36746,12 @@ _080DC154: .align 2, 0 _080DC198: .4byte gBattleAnimArgs _080DC19C: .4byte 0x0000fff6 -_080DC1A0: .4byte gBattleAnimEnemyMonIndex -_080DC1A4: .4byte gBattleAnimPlayerMonIndex +_080DC1A0: .4byte gBattleAnimBankTarget +_080DC1A4: .4byte gBattleAnimBankAttacker _080DC1A8: movs r0, 0xA strh r0, [r5, 0x1C] - ldr r4, _080DC1F0 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DC1F0 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x5 bl sub_807A100 @@ -36762,7 +36762,7 @@ _080DC1A8: bl sub_807A100 subs r0, 0x8 strh r0, [r5, 0x20] - ldr r4, _080DC1F4 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DC1F4 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x5 bl sub_807A100 @@ -36783,8 +36783,8 @@ _080DC1DE: pop {r0} bx r0 .align 2, 0 -_080DC1F0: .4byte gBattleAnimPlayerMonIndex -_080DC1F4: .4byte gBattleAnimEnemyMonIndex +_080DC1F0: .4byte gBattleAnimBankAttacker +_080DC1F4: .4byte gBattleAnimBankTarget _080DC1F8: .4byte sub_80DC1FC thumb_func_end sub_80DC0B0 @@ -36909,7 +36909,7 @@ sub_80DC2D4: @ 80DC2D4 lsls r1, 3 ldr r0, _080DC30C @ =gTasks adds r4, r1, r0 - ldr r0, _080DC310 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DC310 @ =gBattleAnimBankTarget ldrb r0, [r0] bl sub_8077FC0 lsls r0, 24 @@ -36929,7 +36929,7 @@ sub_80DC2D4: @ 80DC2D4 b _080DC346 .align 2, 0 _080DC30C: .4byte gTasks -_080DC310: .4byte gBattleAnimEnemyMonIndex +_080DC310: .4byte gBattleAnimBankTarget _080DC314: .4byte gBattleAnimArgs _080DC318: cmp r0, 0x2 @@ -36967,7 +36967,7 @@ _080DC346: movs r0, 0 strh r0, [r4, 0x24] _080DC352: - ldr r0, _080DC36C @ =gBattleAnimEnemyMonIndex + ldr r0, _080DC36C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -36980,7 +36980,7 @@ _080DC352: ldr r0, _080DC374 @ =REG_BG1HOFS b _080DC380 .align 2, 0 -_080DC36C: .4byte gBattleAnimEnemyMonIndex +_080DC36C: .4byte gBattleAnimBankTarget _080DC370: .4byte gUnknown_030042C0 _080DC374: .4byte REG_BG1HOFS _080DC378: @@ -37282,7 +37282,7 @@ _080DC554: bl CalcCenterToCornerVec ldr r1, _080DC5EC @ =gBattleAnimArgs ldrb r0, [r1] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x22] @@ -37461,7 +37461,7 @@ _080DC716: beq _080DC808 b _080DC818 _080DC720: - ldr r4, _080DC76C @ =gBattleAnimPlayerMonIndex + ldr r4, _080DC76C @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -37498,7 +37498,7 @@ _080DC74E: strh r0, [r2] b _080DC7A2 .align 2, 0 -_080DC76C: .4byte gBattleAnimPlayerMonIndex +_080DC76C: .4byte gBattleAnimBankAttacker _080DC770: .4byte REG_BLDCNT _080DC774: .4byte REG_BLDALPHA _080DC778: @@ -37612,7 +37612,7 @@ sub_80DC824: @ 80DC824 .align 2, 0 _080DC84C: .4byte gBattleAnimArgs _080DC850: - ldr r0, _080DC8E4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DC8E4 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -37635,7 +37635,7 @@ _080DC850: negs r0, r0 strh r0, [r1] _080DC880: - ldr r5, _080DC8E4 @ =gBattleAnimEnemyMonIndex + ldr r5, _080DC8E4 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077EE4 @@ -37675,12 +37675,12 @@ _080DC880: str r0, [r6, 0x1C] ldr r1, _080DC8F0 @ =move_anim_8072740 adds r0, r6, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080DC8E4: .4byte gBattleAnimEnemyMonIndex +_080DC8E4: .4byte gBattleAnimBankTarget _080DC8E8: .4byte gBattleAnimArgs _080DC8EC: .4byte sub_8078B34 _080DC8F0: .4byte move_anim_8072740 @@ -37705,7 +37705,7 @@ sub_80DC8F4: @ 80DC8F4 .align 2, 0 _080DC914: .4byte gBattleAnimArgs _080DC918: - ldr r0, _080DC990 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DC990 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -37719,7 +37719,7 @@ _080DC918: negs r1, r1 strh r1, [r0] _080DC934: - ldr r5, _080DC990 @ =gBattleAnimEnemyMonIndex + ldr r5, _080DC990 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077EE4 @@ -37755,12 +37755,12 @@ _080DC934: str r0, [r6, 0x1C] ldr r1, _080DC99C @ =move_anim_8072740 adds r0, r6, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080DC990: .4byte gBattleAnimEnemyMonIndex +_080DC990: .4byte gBattleAnimBankTarget _080DC994: .4byte gBattleAnimArgs _080DC998: .4byte sub_8078B34 _080DC99C: .4byte move_anim_8072740 @@ -37796,7 +37796,7 @@ _080DC9BC: ldrsh r0, [r1, r2] cmp r0, 0 bne _080DCA04 - ldr r4, _080DCA00 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DCA00 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -37812,9 +37812,9 @@ _080DC9BC: b _080DCA16 .align 2, 0 _080DC9FC: .4byte gBattleAnimArgs -_080DCA00: .4byte gBattleAnimEnemyMonIndex +_080DCA00: .4byte gBattleAnimBankTarget _080DCA04: - ldr r0, _080DCA2C @ =gBattleAnimEnemyMonIndex + ldr r0, _080DCA2C @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 @@ -37834,7 +37834,7 @@ _080DCA16: pop {r0} bx r0 .align 2, 0 -_080DCA2C: .4byte gBattleAnimEnemyMonIndex +_080DCA2C: .4byte gBattleAnimBankTarget _080DCA30: .4byte gBattleAnimArgs _080DCA34: .4byte sub_80DCA38 thumb_func_end sub_80DC9A0 @@ -37874,7 +37874,7 @@ _080DCA6A: sub_80DCA70: @ 80DCA70 push {r4,lr} adds r4, r0, 0 - ldr r0, _080DCAA0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DCAA0 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 @@ -37882,7 +37882,7 @@ sub_80DCA70: @ 80DCA70 adds r3, 0x22 movs r1, 0 bl sub_807A3FC - ldr r0, _080DCAA4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DCAA4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -37895,8 +37895,8 @@ sub_80DCA70: @ 80DCA70 strh r1, [r4, 0x20] b _080DCAB8 .align 2, 0 -_080DCAA0: .4byte gBattleAnimEnemyMonIndex -_080DCAA4: .4byte gBattleAnimPlayerMonIndex +_080DCAA0: .4byte gBattleAnimBankTarget +_080DCAA4: .4byte gBattleAnimBankAttacker _080DCAA8: .4byte gBattleAnimArgs _080DCAAC: ldr r1, _080DCAE0 @ =gBattleAnimArgs @@ -37910,7 +37910,7 @@ _080DCAB8: ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r0, _080DCAE4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DCAE4 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -37927,7 +37927,7 @@ _080DCAD4: bx r0 .align 2, 0 _080DCAE0: .4byte gBattleAnimArgs -_080DCAE4: .4byte gBattleAnimEnemyMonIndex +_080DCAE4: .4byte gBattleAnimBankTarget _080DCAE8: .4byte sub_80DCAEC thumb_func_end sub_80DCA70 @@ -38075,7 +38075,7 @@ sub_80DCBCC: @ 80DCBCC .align 2, 0 _080DCBE8: .4byte gBattleAnimArgs _080DCBEC: - ldr r0, _080DCCE8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DCCE8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -38096,11 +38096,11 @@ _080DCC0E: lsls r0, 24 cmp r0, 0 bne _080DCC5E - ldr r0, _080DCCE8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DCCE8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide adds r4, r0, 0 - ldr r5, _080DCCF0 @ =gBattleAnimEnemyMonIndex + ldr r5, _080DCCF0 @ =gBattleAnimBankTarget ldrb r0, [r5] bl GetBankSide lsls r4, 24 @@ -38132,7 +38132,7 @@ _080DCC5E: adds r0, r7, 0 movs r1, 0x1 bl sub_80787B0 - ldr r5, _080DCCF0 @ =gBattleAnimEnemyMonIndex + ldr r5, _080DCCF0 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -38186,15 +38186,15 @@ _080DCC5E: str r0, [r7, 0x1C] ldr r1, _080DCCF8 @ =move_anim_8072740 adds r0, r7, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_080DCCE8: .4byte gBattleAnimPlayerMonIndex +_080DCCE8: .4byte gBattleAnimBankAttacker _080DCCEC: .4byte gBattleAnimArgs -_080DCCF0: .4byte gBattleAnimEnemyMonIndex +_080DCCF0: .4byte gBattleAnimBankTarget _080DCCF4: .4byte sub_8078B34 _080DCCF8: .4byte move_anim_8072740 thumb_func_end sub_80DCBCC @@ -38205,7 +38205,7 @@ sub_80DCCFC: @ 80DCCFC adds r6, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _080DCD68 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DCD68 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -38219,7 +38219,7 @@ _080DCD1C: ldr r4, _080DCD6C @ =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] - ldr r5, _080DCD70 @ =gBattleAnimEnemyMonIndex + ldr r5, _080DCD70 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -38252,9 +38252,9 @@ _080DCD1C: pop {r0} bx r0 .align 2, 0 -_080DCD68: .4byte gBattleAnimPlayerMonIndex +_080DCD68: .4byte gBattleAnimBankAttacker _080DCD6C: .4byte gBattleAnimArgs -_080DCD70: .4byte gBattleAnimEnemyMonIndex +_080DCD70: .4byte gBattleAnimBankTarget _080DCD74: .4byte sub_80DCD78 thumb_func_end sub_80DCCFC @@ -38370,13 +38370,13 @@ sub_80DCE40: @ 80DCE40 ldrsh r0, [r0, r1] cmp r0, 0 bne _080DCE5C - ldr r4, _080DCE58 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DCE58 @ =gBattleAnimBankAttacker b _080DCE5E .align 2, 0 _080DCE54: .4byte gBattleAnimArgs -_080DCE58: .4byte gBattleAnimPlayerMonIndex +_080DCE58: .4byte gBattleAnimBankAttacker _080DCE5C: - ldr r4, _080DCE90 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DCE90 @ =gBattleAnimBankTarget _080DCE5E: ldrb r0, [r4] movs r1, 0x2 @@ -38393,14 +38393,14 @@ _080DCE5E: strh r0, [r5, 0x22] ldr r1, _080DCE94 @ =move_anim_8074EE0 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080DCE98 @ =sub_80785E4 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080DCE90: .4byte gBattleAnimEnemyMonIndex +_080DCE90: .4byte gBattleAnimBankTarget _080DCE94: .4byte move_anim_8074EE0 _080DCE98: .4byte sub_80785E4 thumb_func_end sub_80DCE40 @@ -38414,7 +38414,7 @@ sub_80DCE9C: @ 80DCE9C ldrsh r0, [r6, r1] cmp r0, 0 beq _080DCEBC - ldr r0, _080DCF0C @ =gBattleAnimEnemyMonIndex + ldr r0, _080DCF0C @ =gBattleAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x20 @@ -38448,7 +38448,7 @@ _080DCEBC: strh r0, [r5, 0x38] ldr r1, _080DCF14 @ =sub_80DCF1C adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r1, _080DCF18 @ =sub_8078278 str r1, [r5, 0x1C] adds r0, r5, 0 @@ -38458,7 +38458,7 @@ _080DCEBC: bx r0 .align 2, 0 _080DCF08: .4byte gBattleAnimArgs -_080DCF0C: .4byte gBattleAnimEnemyMonIndex +_080DCF0C: .4byte gBattleAnimBankTarget _080DCF10: .4byte 0x0000ffba _080DCF14: .4byte sub_80DCF1C _080DCF18: .4byte sub_8078278 @@ -38483,7 +38483,7 @@ sub_80DCF1C: @ 80DCF1C strh r0, [r4, 0x36] ldr r1, _080DCF58 @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r1, _080DCF5C @ =sub_8078278 str r1, [r4, 0x1C] adds r0, r4, 0 @@ -38506,7 +38506,7 @@ sub_80DCF60: @ 80DCF60 bl StartSpriteAnim adds r0, r5, 0 bl AnimateSprite - ldr r0, _080DCF8C @ =gBattleAnimPlayerMonIndex + ldr r0, _080DCF8C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -38518,7 +38518,7 @@ sub_80DCF60: @ 80DCF60 b _080DCF96 .align 2, 0 _080DCF88: .4byte gBattleAnimArgs -_080DCF8C: .4byte gBattleAnimPlayerMonIndex +_080DCF8C: .4byte gBattleAnimBankAttacker _080DCF90: ldrh r0, [r4] ldrh r1, [r5, 0x20] @@ -38550,7 +38550,7 @@ _080DCF96: str r0, [r5, 0x1C] ldr r1, _080DCFE0 @ =move_anim_8074EE0 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -38726,7 +38726,7 @@ _080DD120: ldrsh r0, [r0, r1] cmp r0, 0 beq _080DD13A - ldr r0, _080DD184 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DD184 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -38759,7 +38759,7 @@ _080DD174: .4byte gBattleAnimBackgroundTilemap_SandstormBrew _080DD178: .4byte gBattleAnimBackgroundImage_SandstormBrew _080DD17C: .4byte gBattleAnimSpritePalette_261 _080DD180: .4byte gBattleAnimArgs -_080DD184: .4byte gBattleAnimPlayerMonIndex +_080DD184: .4byte gBattleAnimBankAttacker _080DD188: .4byte gTasks _080DD18C: .4byte sub_80DD190 thumb_func_end do_boulder_dust @@ -39044,7 +39044,7 @@ sub_80DD3AC: @ 80DD3AC ldrsh r0, [r4, r2] cmp r0, 0 beq _080DD3F8 - ldr r0, _080DD3F4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DD3F4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -39067,7 +39067,7 @@ sub_80DD3AC: @ 80DD3AC b _080DD3FC .align 2, 0 _080DD3F0: .4byte gBattleAnimArgs -_080DD3F4: .4byte gBattleAnimPlayerMonIndex +_080DD3F4: .4byte gBattleAnimBankAttacker _080DD3F8: ldr r0, _080DD41C @ =0x0000ffc0 strh r0, [r5, 0x20] @@ -39169,7 +39169,7 @@ sub_80DD490: @ 80DD490 str r0, [r4, 0x1C] ldr r1, _080DD4D0 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -39193,7 +39193,7 @@ sub_80DD4D4: @ 80DD4D4 lsls r1, 3 ldr r0, _080DD554 @ =gTasks adds r6, r1, r0 - ldr r5, _080DD558 @ =gBattleAnimPlayerMonIndex + ldr r5, _080DD558 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -39209,7 +39209,7 @@ sub_80DD4D4: @ 80DD4D4 lsls r1, 13 adds r0, r1 lsrs r7, r0, 16 - ldr r4, _080DD55C @ =gBattleAnimEnemyMonIndex + ldr r4, _080DD55C @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -39243,8 +39243,8 @@ _080DD544: b _080DD566 .align 2, 0 _080DD554: .4byte gTasks -_080DD558: .4byte gBattleAnimPlayerMonIndex -_080DD55C: .4byte gBattleAnimEnemyMonIndex +_080DD558: .4byte gBattleAnimBankAttacker +_080DD55C: .4byte gBattleAnimBankTarget _080DD560: lsls r1, r5, 3 movs r0, 0x30 @@ -39308,7 +39308,7 @@ _080DD57E: strh r0, [r6, 0x24] strh r5, [r6, 0xA] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x26] @@ -39787,7 +39787,7 @@ _080DD972: sub_80DD978: @ 80DD978 push {r4,lr} adds r4, r0, 0 - ldr r0, _080DD9A0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DD9A0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -39804,14 +39804,14 @@ _080DD994: pop {r0} bx r0 .align 2, 0 -_080DD9A0: .4byte gBattleAnimPlayerMonIndex +_080DD9A0: .4byte gBattleAnimBankAttacker thumb_func_end sub_80DD978 thumb_func_start sub_80DD9A4 sub_80DD9A4: @ 80DD9A4 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080DD9F0 @ =gBattleAnimEnemyMonIndex + ldr r5, _080DD9F0 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0 bl sub_8077ABC @@ -39844,7 +39844,7 @@ sub_80DD9A4: @ 80DD9A4 pop {r0} bx r0 .align 2, 0 -_080DD9F0: .4byte gBattleAnimEnemyMonIndex +_080DD9F0: .4byte gBattleAnimBankTarget _080DD9F4: .4byte gBattleAnimArgs _080DD9F8: .4byte sub_80DD9FC thumb_func_end sub_80DD9A4 @@ -40049,7 +40049,7 @@ sub_80DDB6C: @ 80DDB6C strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] - ldr r5, _080DDBCC @ =gBattleAnimEnemyMonIndex + ldr r5, _080DDBCC @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -40083,7 +40083,7 @@ sub_80DDB6C: @ 80DDB6C bx r0 .align 2, 0 _080DDBC8: .4byte gBattleAnimArgs -_080DDBCC: .4byte gBattleAnimEnemyMonIndex +_080DDBCC: .4byte gBattleAnimBankTarget _080DDBD0: .4byte sub_80DDBD8 _080DDBD4: .4byte REG_BLDCNT thumb_func_end sub_80DDB6C @@ -40389,7 +40389,7 @@ sub_80DDDF0: @ 80DDDF0 adds r0, r2, 0 strh r0, [r1] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -40506,7 +40506,7 @@ sub_80DDED0: @ 80DDED0 _080DDEF4: .4byte gTasks _080DDEF8: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r1, r0, 24 ldrh r0, [r4, 0x8] @@ -40551,7 +40551,7 @@ sub_80DDF40: @ 80DDF40 adds r4, r0, 0 ldrh r5, [r4, 0x20] ldrh r6, [r4, 0x22] - ldr r0, _080DDFDC @ =gBattleAnimPlayerMonIndex + ldr r0, _080DDFDC @ =gBattleAnimBankAttacker mov r8, r0 ldrb r0, [r0] movs r1, 0x2 @@ -40618,7 +40618,7 @@ sub_80DDF40: @ 80DDF40 pop {r0} bx r0 .align 2, 0 -_080DDFDC: .4byte gBattleAnimPlayerMonIndex +_080DDFDC: .4byte gBattleAnimBankAttacker _080DDFE0: .4byte gBattleAnimArgs _080DDFE4: .4byte sub_80DDFE8 thumb_func_end sub_80DDF40 @@ -40671,7 +40671,7 @@ _080DE032: lsls r0, 16 cmp r0, 0 bgt _080DE0F6 - ldr r4, _080DE098 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DE098 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -40712,7 +40712,7 @@ _080DE032: strh r0, [r5, 0x3C] b _080DE0E2 .align 2, 0 -_080DE098: .4byte gBattleAnimEnemyMonIndex +_080DE098: .4byte gBattleAnimBankTarget _080DE09C: ldrh r0, [r5, 0x3A] ldrh r1, [r5, 0x36] @@ -40734,7 +40734,7 @@ _080DE09C: lsls r0, 16 cmp r0, 0 bgt _080DE0F6 - ldr r4, _080DE0EC @ =gBattleAnimEnemyMonIndex + ldr r4, _080DE0EC @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -40753,7 +40753,7 @@ _080DE0E2: strh r0, [r5, 0x2E] b _080DE0F6 .align 2, 0 -_080DE0EC: .4byte gBattleAnimEnemyMonIndex +_080DE0EC: .4byte gBattleAnimBankTarget _080DE0F0: adds r0, r5, 0 bl move_anim_8074EE0 @@ -40917,7 +40917,7 @@ _080DE1E0: adds r0, r4 movs r1, 0x50 strh r1, [r0, 0x2E] - ldr r0, _080DE250 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DE250 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -40943,7 +40943,7 @@ _080DE1E0: _080DE244: .4byte REG_BLDCNT _080DE248: .4byte REG_BLDALPHA _080DE24C: .4byte gSprites -_080DE250: .4byte gBattleAnimEnemyMonIndex +_080DE250: .4byte gBattleAnimBankTarget _080DE254: .4byte 0x0000ff70 _080DE258: movs r2, 0x8 @@ -40986,7 +40986,7 @@ _080DE276: lsls r0, 2 adds r0, r4 ldr r1, _080DE2D0 @ =SpriteCallbackDummy - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 @@ -41156,7 +41156,7 @@ sub_80DE3D4: @ 80DE3D4 lsls r0, 3 ldr r1, _080DE40C @ =gTasks adds r5, r0, r1 - ldr r0, _080DE410 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DE410 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -41174,7 +41174,7 @@ _080DE400: mov pc, r0 .align 2, 0 _080DE40C: .4byte gTasks -_080DE410: .4byte gBattleAnimEnemyMonIndex +_080DE410: .4byte gBattleAnimBankTarget _080DE414: .4byte _080DE418 .align 2, 0 _080DE418: @@ -41250,7 +41250,7 @@ _080DE464: movs r0, 0x10 strh r0, [r5, 0xE] movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -41516,7 +41516,7 @@ sub_80DE6B0: @ 80DE6B0 lsls r0, 3 ldr r1, _080DE6E0 @ =gTasks adds r4, r0, r1 - ldr r0, _080DE6E4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080DE6E4 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -41532,7 +41532,7 @@ sub_80DE6B0: @ 80DE6B0 b _080DE7AA .align 2, 0 _080DE6E0: .4byte gTasks -_080DE6E4: .4byte gBattleAnimEnemyMonIndex +_080DE6E4: .4byte gBattleAnimBankTarget _080DE6E8: cmp r0, 0x2 beq _080DE740 @@ -41542,7 +41542,7 @@ _080DE6EE: movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x24] @@ -41648,7 +41648,7 @@ sub_80DE7B8: @ 80DE7B8 ldrsh r0, [r0, r1] cmp r0, 0 bne _080DE800 - ldr r4, _080DE7F8 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DE7F8 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -41663,14 +41663,14 @@ sub_80DE7B8: @ 80DE7B8 lsls r2, 13 adds r0, r2 lsrs r5, r0, 16 - ldr r4, _080DE7FC @ =gBattleAnimEnemyMonIndex + ldr r4, _080DE7FC @ =gBattleAnimBankTarget b _080DE824 .align 2, 0 _080DE7F4: .4byte gBattleAnimArgs -_080DE7F8: .4byte gBattleAnimPlayerMonIndex -_080DE7FC: .4byte gBattleAnimEnemyMonIndex +_080DE7F8: .4byte gBattleAnimBankAttacker +_080DE7FC: .4byte gBattleAnimBankTarget _080DE800: - ldr r4, _080DE8C8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DE8C8 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -41685,7 +41685,7 @@ _080DE800: lsls r2, 13 adds r0, r2 lsrs r5, r0, 16 - ldr r4, _080DE8CC @ =gBattleAnimPlayerMonIndex + ldr r4, _080DE8CC @ =gBattleAnimBankAttacker _080DE824: ldrb r0, [r4] movs r1, 0 @@ -41765,8 +41765,8 @@ _080DE824: pop {r0} bx r0 .align 2, 0 -_080DE8C8: .4byte gBattleAnimEnemyMonIndex -_080DE8CC: .4byte gBattleAnimPlayerMonIndex +_080DE8C8: .4byte gBattleAnimBankTarget +_080DE8CC: .4byte gBattleAnimBankAttacker _080DE8D0: .4byte gBattleAnimArgs _080DE8D4: .4byte sub_80DE8D8 thumb_func_end sub_80DE7B8 @@ -41844,7 +41844,7 @@ sub_80DE918: @ 80DE918 ldr r2, _080DEA70 @ =gBattleAnimArgs ldrh r0, [r2] strh r0, [r1, 0x1C] - ldr r4, _080DEA74 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DEA74 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -41867,7 +41867,7 @@ _080DE988: _080DE98A: lsls r1, r4, 16 asrs r3, r1, 16 - ldr r0, _080DEA74 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DEA74 @ =gBattleAnimBankAttacker ldrb r2, [r0] str r1, [sp, 0x10] cmp r3, r2 @@ -41879,7 +41879,7 @@ _080DE98A: lsls r0, r4, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080DEA56 @@ -41975,7 +41975,7 @@ _080DEA56: _080DEA68: .4byte gTasks _080DEA6C: .4byte REG_BLDCNT _080DEA70: .4byte gBattleAnimArgs -_080DEA74: .4byte gBattleAnimPlayerMonIndex +_080DEA74: .4byte gBattleAnimBankAttacker _080DEA78: .4byte gSpriteTemplate_83DAF08 _080DEA7C: .4byte gSprites _080DEA80: .4byte gSprites + 0x1C @@ -42290,7 +42290,7 @@ sub_80DECB0: @ 80DECB0 adds r1, 0x4 movs r0, 0x10 strh r0, [r1] - ldr r0, _080DED08 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DED08 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -42308,7 +42308,7 @@ _080DECF8: .4byte gUnknown_030042C4 _080DECFC: .4byte gUnknown_03004240 _080DED00: .4byte REG_WININ _080DED04: .4byte 0x00003f3f -_080DED08: .4byte gBattleAnimPlayerMonIndex +_080DED08: .4byte gBattleAnimBankAttacker _080DED0C: movs r6, 0xC8 _080DED0E: @@ -42571,7 +42571,7 @@ sub_80DEF3C: @ 80DEF3C adds r4, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _080DEF68 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DEF68 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -42588,7 +42588,7 @@ sub_80DEF3C: @ 80DEF3C strb r1, [r4, 0x3] b _080DEF74 .align 2, 0 -_080DEF68: .4byte gBattleAnimPlayerMonIndex +_080DEF68: .4byte gBattleAnimBankAttacker _080DEF6C: .4byte 0x0000fffe _080DEF70: ldr r2, _080DEF90 @ =0x0000ffe8 @@ -42662,7 +42662,7 @@ _080DEFAA: str r0, [r3, 0x1C] ldr r1, _080DF008 @ =sub_80DF018 adds r0, r3, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 b _080DF010 .align 2, 0 _080DEFFC: .4byte 0x000003ff @@ -42775,7 +42775,7 @@ sub_80DF0B8: @ 80DF0B8 movs r1, 0xC bl Sin strh r0, [r4, 0x24] - ldr r0, _080DF120 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DF120 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -42819,7 +42819,7 @@ _080DF0DC: strh r0, [r1] b _080DF17E .align 2, 0 -_080DF120: .4byte gBattleAnimPlayerMonIndex +_080DF120: .4byte gBattleAnimBankAttacker _080DF124: .4byte 0x0000050b _080DF128: .4byte REG_BLDCNT _080DF12C: @@ -42908,7 +42908,7 @@ sub_80DF1A4: @ 80DF1A4 mov r8, r0 mov r2, r8 strh r2, [r4, 0xA] - ldr r5, _080DF240 @ =gBattleAnimPlayerMonIndex + ldr r5, _080DF240 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -42965,7 +42965,7 @@ sub_80DF1A4: @ 80DF1A4 bx r0 .align 2, 0 _080DF23C: .4byte gTasks -_080DF240: .4byte gBattleAnimPlayerMonIndex +_080DF240: .4byte gBattleAnimBankAttacker _080DF244: .4byte REG_BLDCNT _080DF248: .4byte sub_80DF24C thumb_func_end sub_80DF1A4 @@ -43022,7 +43022,7 @@ _080DF292: lsls r0, 2 adds r5, r0, r1 strh r7, [r5, 0x2E] - ldr r0, _080DF2FC @ =gBattleAnimPlayerMonIndex + ldr r0, _080DF2FC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide movs r1, 0 @@ -43056,7 +43056,7 @@ _080DF2E6: .align 2, 0 _080DF2F4: .4byte gSpriteTemplate_83DAF80 _080DF2F8: .4byte gSprites -_080DF2FC: .4byte gBattleAnimPlayerMonIndex +_080DF2FC: .4byte gBattleAnimBankAttacker _080DF300: ldrh r0, [r4, 0xA] adds r0, 0x1 @@ -43289,7 +43289,7 @@ sub_80DF49C: @ 80DF49C orrs r1, r2 strb r1, [r3] ldr r2, _080DF4E0 @ =gObjectBankIDs - ldr r1, _080DF4E4 @ =gBattleAnimPlayerMonIndex + ldr r1, _080DF4E4 @ =gBattleAnimBankAttacker ldrb r1, [r1] adds r1, r2 ldrb r1, [r1] @@ -43318,7 +43318,7 @@ sub_80DF49C: @ 80DF49C bx lr .align 2, 0 _080DF4E0: .4byte gObjectBankIDs -_080DF4E4: .4byte gBattleAnimPlayerMonIndex +_080DF4E4: .4byte gBattleAnimBankAttacker _080DF4E8: .4byte gBattleAnimArgs _080DF4EC: .4byte sub_80DF4F4 _080DF4F0: .4byte gSprites @@ -43415,7 +43415,7 @@ _080DF59C: .4byte move_anim_8074EE0 sub_80DF5A0: @ 80DF5A0 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _080DF5E8 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DF5E8 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -43447,7 +43447,7 @@ sub_80DF5A0: @ 80DF5A0 adds r1, r2, 0 b _080DF5FA .align 2, 0 -_080DF5E8: .4byte gBattleAnimPlayerMonIndex +_080DF5E8: .4byte gBattleAnimBankAttacker _080DF5EC: .4byte gBattleAnimArgs _080DF5F0: ldr r1, _080DF630 @ =gBattleAnimArgs @@ -43476,7 +43476,7 @@ _080DF5FA: strb r0, [r2] ldr r1, _080DF634 @ =move_anim_8074EE0 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080DF638 @ =sub_8078504 str r0, [r5, 0x1C] pop {r4,r5} @@ -43493,7 +43493,7 @@ sub_80DF63C: @ 80DF63C push {r4,r5,lr} adds r5, r0, 0 bl sub_8078650 - ldr r4, _080DF694 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DF694 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -43506,7 +43506,7 @@ sub_80DF63C: @ 80DF63C lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, _080DF698 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DF698 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -43530,8 +43530,8 @@ sub_80DF63C: @ 80DF63C strh r0, [r5, 0x36] b _080DF6CA .align 2, 0 -_080DF694: .4byte gBattleAnimEnemyMonIndex -_080DF698: .4byte gBattleAnimPlayerMonIndex +_080DF694: .4byte gBattleAnimBankTarget +_080DF698: .4byte gBattleAnimBankAttacker _080DF69C: .4byte gBattleAnimArgs _080DF6A0: ldr r1, _080DF6E4 @ =gBattleAnimArgs @@ -43562,7 +43562,7 @@ _080DF6CA: str r0, [r5, 0x1C] ldr r1, _080DF6EC @ =move_anim_8074EE0 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -43581,13 +43581,13 @@ sub_80DF6F0: @ 80DF6F0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080DF70C - ldr r4, _080DF708 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DF708 @ =gBattleAnimBankAttacker b _080DF70E .align 2, 0 _080DF704: .4byte gBattleAnimArgs -_080DF708: .4byte gBattleAnimPlayerMonIndex +_080DF708: .4byte gBattleAnimBankAttacker _080DF70C: - ldr r4, _080DF750 @ =gBattleAnimEnemyMonIndex + ldr r4, _080DF750 @ =gBattleAnimBankTarget _080DF70E: ldrb r0, [r4] movs r1, 0 @@ -43614,12 +43614,12 @@ _080DF70E: str r0, [r5, 0x1C] ldr r1, _080DF75C @ =move_anim_8074EE0 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080DF750: .4byte gBattleAnimEnemyMonIndex +_080DF750: .4byte gBattleAnimBankTarget _080DF754: .4byte gBattleAnimArgs _080DF758: .4byte sub_8078600 _080DF75C: .4byte move_anim_8074EE0 @@ -43629,7 +43629,7 @@ _080DF75C: .4byte move_anim_8074EE0 sub_80DF760: @ 80DF760 push {r4,lr} adds r4, r0, 0 - ldr r0, _080DF788 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DF788 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -43645,14 +43645,14 @@ _080DF77A: pop {r0} bx r0 .align 2, 0 -_080DF788: .4byte gBattleAnimPlayerMonIndex +_080DF788: .4byte gBattleAnimBankAttacker thumb_func_end sub_80DF760 thumb_func_start sub_80DF78C sub_80DF78C: @ 80DF78C push {r4-r7,lr} adds r6, r0, 0 - ldr r4, _080DF7E0 @ =gBattleAnimPlayerMonIndex + ldr r4, _080DF7E0 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -43688,7 +43688,7 @@ sub_80DF78C: @ 80DF78C lsrs r0, r7, 17 b _080DF7EE .align 2, 0 -_080DF7E0: .4byte gBattleAnimPlayerMonIndex +_080DF7E0: .4byte gBattleAnimBankAttacker _080DF7E4: .4byte gBattleAnimArgs _080DF7E8: .4byte gBankAttacker _080DF7EC: @@ -43864,7 +43864,7 @@ sub_80DF924: @ 80DF924 lsls r1, 3 ldr r0, _080DF950 @ =gTasks adds r4, r1, r0 - ldr r0, _080DF954 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DF954 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -43877,7 +43877,7 @@ sub_80DF924: @ 80DF924 b _080DF966 .align 2, 0 _080DF950: .4byte gTasks -_080DF954: .4byte gBattleAnimPlayerMonIndex +_080DF954: .4byte gBattleAnimBankAttacker _080DF958: .4byte REG_BG1HOFS _080DF95C: .4byte gUnknown_030042C0 _080DF960: @@ -43895,7 +43895,7 @@ _080DF966: strb r0, [r1, 0x8] mov r0, sp strb r5, [r0, 0x9] - ldr r0, _080DF9E8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DF9E8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8077FC0 lsls r0, 24 @@ -43948,7 +43948,7 @@ _080DF9C4: _080DF9DC: .4byte REG_BG2HOFS _080DF9E0: .4byte gUnknown_03004288 _080DF9E4: .4byte 0xa2600001 -_080DF9E8: .4byte gBattleAnimPlayerMonIndex +_080DF9E8: .4byte gBattleAnimBankAttacker _080DF9EC: .4byte gUnknown_03004DE0 _080DF9F0: .4byte sub_80DF9F4 thumb_func_end sub_80DF924 @@ -44128,7 +44128,7 @@ sub_80DFB28: @ 80DFB28 movs r1, 0x5 bl __divsi3 adds r6, r0, 0 - ldr r1, _080DFBCC @ =gBattleAnimPlayerMonIndex + ldr r1, _080DFBCC @ =gBattleAnimBankAttacker mov r8, r1 ldrb r0, [r1] movs r1, 0x2 @@ -44194,7 +44194,7 @@ _080DFBB0: bx r0 .align 2, 0 _080DFBC8: .4byte gBattleAnimArgs -_080DFBCC: .4byte gBattleAnimPlayerMonIndex +_080DFBCC: .4byte gBattleAnimBankAttacker _080DFBD0: .4byte sub_80DFBD8 _080DFBD4: .4byte gUnknown_03000730 thumb_func_end sub_80DFB28 @@ -44251,7 +44251,7 @@ sub_80DFC24: @ 80DFC24 ldr r0, _080DFC5C @ =gBattleAnimArgs ldrh r0, [r0] strh r0, [r1, 0x8] - ldr r0, _080DFC60 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DFC60 @ =gBattleAnimBankAttacker ldrb r0, [r0] movs r2, 0x10 strh r2, [r1, 0xA] @@ -44268,7 +44268,7 @@ sub_80DFC24: @ 80DFC24 .align 2, 0 _080DFC58: .4byte gTasks _080DFC5C: .4byte gBattleAnimArgs -_080DFC60: .4byte gBattleAnimPlayerMonIndex +_080DFC60: .4byte gBattleAnimBankAttacker _080DFC64: .4byte REG_BLDALPHA _080DFC68: .4byte REG_BLDCNT _080DFC6C: .4byte 0x00003f42 @@ -44331,7 +44331,7 @@ sub_80DFC9C: @ 80DFC9C bne _080DFD1E ldr r2, _080DFD0C @ =gSprites ldr r1, _080DFD10 @ =gObjectBankIDs - ldr r0, _080DFD14 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DFD14 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -44352,7 +44352,7 @@ _080DFD04: .4byte gTasks _080DFD08: .4byte REG_BLDALPHA _080DFD0C: .4byte gSprites _080DFD10: .4byte gObjectBankIDs -_080DFD14: .4byte gBattleAnimPlayerMonIndex +_080DFD14: .4byte gBattleAnimBankAttacker _080DFD18: ldrh r0, [r4, 0xC] adds r0, 0x1 @@ -44454,7 +44454,7 @@ sub_80DFDC0: @ 80DFDC0 lsls r2, 5 adds r0, r2, 0 strh r0, [r1] - ldr r0, _080DFDEC @ =gBattleAnimPlayerMonIndex + ldr r0, _080DFDEC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -44466,7 +44466,7 @@ sub_80DFDC0: @ 80DFDC0 b _080DFDFC .align 2, 0 _080DFDE8: .4byte REG_BLDALPHA -_080DFDEC: .4byte gBattleAnimPlayerMonIndex +_080DFDEC: .4byte gBattleAnimBankAttacker _080DFDF0: .4byte REG_BLDCNT _080DFDF4: .4byte 0x00003f42 _080DFDF8: @@ -44489,14 +44489,14 @@ _080DFE10: .4byte 0x00003f44 sub_80DFE14: @ 80DFE14 push {r4-r6,lr} adds r4, r0, 0 - ldr r6, _080DFE80 @ =gBattleAnimEnemyMonIndex + ldr r6, _080DFE80 @ =gBattleAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_8077ABC lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x30] - ldr r5, _080DFE84 @ =gBattleAnimPlayerMonIndex + ldr r5, _080DFE84 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -44535,8 +44535,8 @@ sub_80DFE14: @ 80DFE14 pop {r0} bx r0 .align 2, 0 -_080DFE80: .4byte gBattleAnimEnemyMonIndex -_080DFE84: .4byte gBattleAnimPlayerMonIndex +_080DFE80: .4byte gBattleAnimBankTarget +_080DFE84: .4byte gBattleAnimBankAttacker _080DFE88: .4byte 0x0000ffd8 _080DFE8C: .4byte sub_80DFE90 thumb_func_end sub_80DFE14 @@ -44724,13 +44724,13 @@ sub_80DFFD0: @ 80DFFD0 adds r3, r0, 0 cmp r1, 0 bne _080DFFEC - ldr r0, _080DFFE8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080DFFE8 @ =gBattleAnimBankAttacker b _080DFFEE .align 2, 0 _080DFFE4: .4byte gBattleAnimArgs -_080DFFE8: .4byte gBattleAnimPlayerMonIndex +_080DFFE8: .4byte gBattleAnimBankAttacker _080DFFEC: - ldr r0, _080E001C @ =gBattleAnimEnemyMonIndex + ldr r0, _080E001C @ =gBattleAnimBankTarget _080DFFEE: ldrb r5, [r0] movs r6, 0x14 @@ -44755,7 +44755,7 @@ _080DFFEE: beq _080E0032 b _080E00A0 .align 2, 0 -_080E001C: .4byte gBattleAnimEnemyMonIndex +_080E001C: .4byte gBattleAnimBankTarget _080E0020: .4byte 0x000003ff _080E0024: .4byte 0xfffffc00 _080E0028: @@ -44867,7 +44867,7 @@ sub_80E00EC: @ 80E00EC lsls r1, 3 ldr r0, _080E0150 @ =gTasks adds r5, r1, r0 - ldr r4, _080E0154 @ =gBattleAnimPlayerMonIndex + ldr r4, _080E0154 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x1 bl sub_8077ABC @@ -44906,13 +44906,13 @@ sub_80E00EC: @ 80E00EC b _080E015E .align 2, 0 _080E0150: .4byte gTasks -_080E0154: .4byte gBattleAnimPlayerMonIndex +_080E0154: .4byte gBattleAnimBankAttacker _080E0158: .4byte 0x0000fff4 _080E015C: ldr r0, _080E01A8 @ =0x0000ffc0 _080E015E: strh r0, [r5, 0x18] - ldr r0, _080E01AC @ =gBattleAnimPlayerMonIndex + ldr r0, _080E01AC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -44946,7 +44946,7 @@ _080E015E: b _080E01EE .align 2, 0 _080E01A8: .4byte 0x0000ffc0 -_080E01AC: .4byte gBattleAnimPlayerMonIndex +_080E01AC: .4byte gBattleAnimBankAttacker _080E01B0: .4byte gUnknown_030041B4 _080E01B4: .4byte REG_BLDCNT _080E01B8: .4byte 0x00003f42 @@ -45260,7 +45260,7 @@ _080E0430: .4byte gUnknown_03004240 _080E0434: .4byte REG_WININ _080E0438: .4byte 0x00003f3f _080E043C: - ldr r0, _080E045C @ =gBattleAnimEnemyMonIndex + ldr r0, _080E045C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -45275,7 +45275,7 @@ _080E043C: ldr r1, _080E0468 @ =gUnknown_03004288 b _080E0476 .align 2, 0 -_080E045C: .4byte gBattleAnimEnemyMonIndex +_080E045C: .4byte gBattleAnimBankTarget _080E0460: .4byte REG_BLDCNT _080E0464: .4byte 0x00003f42 _080E0468: .4byte gUnknown_03004288 @@ -45328,7 +45328,7 @@ _080E04C4: .align 2, 0 _080E04CC: .4byte gUnknown_03004280 _080E04D0: - ldr r4, _080E051C @ =gBattleAnimEnemyMonIndex + ldr r4, _080E051C @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x1 bl sub_8077ABC @@ -45363,7 +45363,7 @@ _080E04D0: ldr r0, _080E0520 @ =0x0000fff4 b _080E0526 .align 2, 0 -_080E051C: .4byte gBattleAnimEnemyMonIndex +_080E051C: .4byte gBattleAnimBankTarget _080E0520: .4byte 0x0000fff4 _080E0524: ldr r0, _080E0538 @ =0x0000ffc0 @@ -45865,7 +45865,7 @@ sub_80E08CC: @ 80E08CC _080E08E2: lsls r0, r4, 24 lsrs r0, 24 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF @@ -45901,7 +45901,7 @@ sub_80E0918: @ 80E0918 lsls r0, 24 lsrs r0, 24 mov r10, r0 - ldr r6, _080E09B8 @ =gBattleAnimPlayerMonIndex + ldr r6, _080E09B8 @ =gBattleAnimBankAttacker ldrb r0, [r6] bl GetBankIdentity_permutated lsls r0, 24 @@ -45935,7 +45935,7 @@ sub_80E0918: @ 80E0918 ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080E09A2 @@ -45969,7 +45969,7 @@ _080E09A2: pop {r0} bx r0 .align 2, 0 -_080E09B8: .4byte gBattleAnimPlayerMonIndex +_080E09B8: .4byte gBattleAnimBankAttacker _080E09BC: .4byte gSprites _080E09C0: .4byte gObjectBankIDs thumb_func_end sub_80E0918 @@ -45979,7 +45979,7 @@ sub_80E09C4: @ 80E09C4 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r4, _080E0A0C @ =gBattleAnimPlayerMonIndex + ldr r4, _080E0A0C @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankIdentity_permutated lsls r0, 24 @@ -45994,7 +45994,7 @@ sub_80E09C4: @ 80E09C4 ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080E0A00 @@ -46009,7 +46009,7 @@ _080E0A00: pop {r0} bx r0 .align 2, 0 -_080E0A0C: .4byte gBattleAnimPlayerMonIndex +_080E0A0C: .4byte gBattleAnimBankAttacker thumb_func_end sub_80E09C4 thumb_func_start sub_80E0A10 @@ -46032,7 +46032,7 @@ sub_80E0A10: @ 80E0A10 str r0, [r4, 0x1C] ldr r1, _080E0A48 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4} pop {r0} bx r0 @@ -46112,7 +46112,7 @@ _080E0AC4: lsls r0, 24 cmp r0, 0 bne _080E0B40 - ldr r4, _080E0B74 @ =gBattleAnimPlayerMonIndex + ldr r4, _080E0B74 @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankIdentity lsls r0, 24 @@ -46128,7 +46128,7 @@ _080E0AF4: ldrb r0, [r4] movs r6, 0x2 eors r0, r6 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -46180,12 +46180,12 @@ _080E0B64: .4byte REG_BLDCNT _080E0B68: .4byte 0x00003f42 _080E0B6C: .4byte 0x00000c08 _080E0B70: .4byte REG_BG1CNT -_080E0B74: .4byte gBattleAnimPlayerMonIndex +_080E0B74: .4byte gBattleAnimBankAttacker _080E0B78: .4byte gSprites _080E0B7C: .4byte gObjectBankIDs _080E0B80: .4byte 0x02019348 _080E0B84: - ldr r4, _080E0BA4 @ =gBattleAnimPlayerMonIndex + ldr r4, _080E0BA4 @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -46201,7 +46201,7 @@ _080E0B84: ldr r1, _080E0BAC @ =gEnemyParty b _080E0BC0 .align 2, 0 -_080E0BA4: .4byte gBattleAnimPlayerMonIndex +_080E0BA4: .4byte gBattleAnimBankAttacker _080E0BA8: .4byte gBattlePartyID _080E0BAC: .4byte gEnemyParty _080E0BB0: @@ -46221,11 +46221,11 @@ _080E0BC0: lsrs r5, r0, 16 _080E0BCC: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _080E0C60 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E0C60 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r1, r4, 0 adds r2, r5, 0 @@ -46286,7 +46286,7 @@ _080E0BCC: .align 2, 0 _080E0C58: .4byte gBattlePartyID _080E0C5C: .4byte gPlayerParty -_080E0C60: .4byte gBattleAnimPlayerMonIndex +_080E0C60: .4byte gBattleAnimBankAttacker _080E0C64: .4byte 0x040000d4 _080E0C68: .4byte 0x85000400 _080E0C6C: .4byte gUnknown_08D1D574 @@ -46403,7 +46403,7 @@ _080E0D40: adds r0, 0x2 strh r5, [r0] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 ldr r6, _080E0E10 @ =gSprites @@ -46446,7 +46446,7 @@ _080E0D84: cmp r0, 0x1 bne _080E0DE2 ldr r2, _080E0E1C @ =gObjectBankIDs - ldr r0, _080E0E20 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E0E20 @ =gBattleAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 eors r0, r1 @@ -46489,7 +46489,7 @@ _080E0E10: .4byte gSprites _080E0E14: .4byte 0x040000d4 _080E0E18: .4byte 0x85000200 _080E0E1C: .4byte gObjectBankIDs -_080E0E20: .4byte gBattleAnimPlayerMonIndex +_080E0E20: .4byte gBattleAnimBankAttacker thumb_func_end sub_80E0CD0 thumb_func_start sub_80E0E24 @@ -46524,7 +46524,7 @@ _080E0E4C: .4byte _080E0E84 _080E0E6C: ldrb r0, [r2] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r2, r0, 24 b _080E0E8A @@ -46552,7 +46552,7 @@ _080E0E90: lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080E0EB4 @@ -46622,7 +46622,7 @@ _080E0F18: .4byte gBattleAnimArgs sub_80E0F1C: @ 80E0F1C push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080E0F74 @ =gBattleAnimPlayerMonIndex + ldr r5, _080E0F74 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -46637,7 +46637,7 @@ sub_80E0F1C: @ 80E0F1C strh r0, [r4, 0x22] movs r0, 0x14 strh r0, [r4, 0x2E] - ldr r5, _080E0F78 @ =gBattleAnimEnemyMonIndex + ldr r5, _080E0F78 @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -46660,8 +46660,8 @@ sub_80E0F1C: @ 80E0F1C pop {r0} bx r0 .align 2, 0 -_080E0F74: .4byte gBattleAnimPlayerMonIndex -_080E0F78: .4byte gBattleAnimEnemyMonIndex +_080E0F74: .4byte gBattleAnimBankAttacker +_080E0F78: .4byte gBattleAnimBankTarget _080E0F7C: .4byte 0x0000ffd8 _080E0F80: .4byte sub_80E0F84 thumb_func_end sub_80E0F1C @@ -46687,7 +46687,7 @@ sub_80E0F84: @ 80E0F84 strh r1, [r5, 0x24] movs r0, 0x14 strh r0, [r5, 0x2E] - ldr r4, _080E0FE0 @ =gBattleAnimPlayerMonIndex + ldr r4, _080E0FE0 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -46711,7 +46711,7 @@ _080E0FD8: pop {r0} bx r0 .align 2, 0 -_080E0FE0: .4byte gBattleAnimPlayerMonIndex +_080E0FE0: .4byte gBattleAnimBankAttacker _080E0FE4: .4byte sub_80E0FE8 thumb_func_end sub_80E0F84 @@ -46737,7 +46737,7 @@ sub_80E1004: @ 80E1004 adds r6, r0, 0 movs r1, 0x1 bl sub_8078764 - ldr r0, _080E1064 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E1064 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -46751,7 +46751,7 @@ _080E1024: ldr r4, _080E1068 @ =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] - ldr r5, _080E106C @ =gBattleAnimEnemyMonIndex + ldr r5, _080E106C @ =gBattleAnimBankTarget ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -46772,14 +46772,14 @@ _080E1024: str r0, [r6, 0x1C] ldr r1, _080E1074 @ =move_anim_8072740 adds r0, r6, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080E1064: .4byte gBattleAnimPlayerMonIndex +_080E1064: .4byte gBattleAnimBankAttacker _080E1068: .4byte gBattleAnimArgs -_080E106C: .4byte gBattleAnimEnemyMonIndex +_080E106C: .4byte gBattleAnimBankTarget _080E1070: .4byte sub_8078B34 _080E1074: .4byte move_anim_8072740 thumb_func_end sub_80E1004 @@ -46792,7 +46792,7 @@ sub_80E1078: @ 80E1078 adds r6, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r4, _080E10F8 @ =gBattleAnimEnemyMonIndex + ldr r4, _080E10F8 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077EE4 @@ -46839,14 +46839,14 @@ _080E10D0: str r0, [r6, 0x1C] ldr r1, _080E1104 @ =move_anim_8074EE0 adds r0, r6, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_080E10F8: .4byte gBattleAnimEnemyMonIndex +_080E10F8: .4byte gBattleAnimBankTarget _080E10FC: .4byte gBattleAnimArgs _080E1100: .4byte sub_8078B34 _080E1104: .4byte move_anim_8074EE0 @@ -46872,7 +46872,7 @@ sub_80E1108: @ 80E1108 ldrsh r0, [r6, r1] cmp r0, 0 bne _080E117C - ldr r4, _080E1174 @ =gBattleAnimPlayerMonIndex + ldr r4, _080E1174 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -46905,7 +46905,7 @@ _080E1162: _080E1168: .4byte 0x000003ff _080E116C: .4byte 0xfffffc00 _080E1170: .4byte gBattleAnimArgs -_080E1174: .4byte gBattleAnimPlayerMonIndex +_080E1174: .4byte gBattleAnimBankAttacker _080E1178: .4byte sub_80E1198 _080E117C: ldrh r0, [r6, 0x2] @@ -47086,11 +47086,11 @@ _080E12B0: .4byte _080E1414 _080E12C4: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] - ldr r0, _080E12EC @ =gBattleAnimPlayerMonIndex + ldr r0, _080E12EC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -47104,7 +47104,7 @@ _080E12C4: ldr r0, _080E12F4 @ =gUnknown_030041B4 b _080E1300 .align 2, 0 -_080E12EC: .4byte gBattleAnimPlayerMonIndex +_080E12EC: .4byte gBattleAnimBankAttacker _080E12F0: .4byte gUnknown_030042C0 _080E12F4: .4byte gUnknown_030041B4 _080E12F8: @@ -47115,7 +47115,7 @@ _080E12F8: _080E1300: ldrh r0, [r0] strh r0, [r4, 0x22] - ldr r0, _080E1344 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E1344 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8077FC0 lsls r0, 24 @@ -47146,7 +47146,7 @@ _080E1322: .align 2, 0 _080E133C: .4byte gUnknown_03004288 _080E1340: .4byte gUnknown_03004280 -_080E1344: .4byte gBattleAnimPlayerMonIndex +_080E1344: .4byte gBattleAnimBankAttacker _080E1348: .4byte gSprites _080E134C: ldrb r0, [r4, 0x1E] @@ -47281,7 +47281,7 @@ sub_80E143C: @ 80E143C lsls r0, 24 lsrs r5, r0, 24 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 ldr r2, _080E147C @ =gSprites @@ -47298,7 +47298,7 @@ sub_80E143C: @ 80E143C movs r4, 0 strh r4, [r1, 0x24] strh r4, [r1, 0x26] - ldr r0, _080E1480 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E1480 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -47309,7 +47309,7 @@ sub_80E143C: @ 80E143C b _080E148A .align 2, 0 _080E147C: .4byte gSprites -_080E1480: .4byte gBattleAnimPlayerMonIndex +_080E1480: .4byte gBattleAnimBankAttacker _080E1484: .4byte gUnknown_030041B4 _080E1488: ldr r0, _080E1498 @ =gUnknown_03004280 @@ -47379,7 +47379,7 @@ sub_80E14DC: @ 80E14DC _080E14FC: .4byte gTasks _080E1500: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] @@ -47459,11 +47459,11 @@ _080E158C: .4byte _080E165C _080E15A0: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] - ldr r0, _080E15C4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E15C4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -47474,14 +47474,14 @@ _080E15A0: ldr r0, _080E15C8 @ =gUnknown_030042C0 b _080E15CE .align 2, 0 -_080E15C4: .4byte gBattleAnimPlayerMonIndex +_080E15C4: .4byte gBattleAnimBankAttacker _080E15C8: .4byte gUnknown_030042C0 _080E15CC: ldr r0, _080E15EC @ =gUnknown_03004288 _080E15CE: ldrh r0, [r0] strh r0, [r4, 0x20] - ldr r0, _080E15F0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E15F0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8077FC0 lsls r0, 24 @@ -47494,7 +47494,7 @@ _080E15CE: b _080E164A .align 2, 0 _080E15EC: .4byte gUnknown_03004288 -_080E15F0: .4byte gBattleAnimPlayerMonIndex +_080E15F0: .4byte gBattleAnimBankAttacker _080E15F4: ldrb r0, [r4, 0x1E] movs r1, 0x26 @@ -47668,13 +47668,13 @@ sub_80E1728: @ 80E1728 adds r7, r0, 0 cmp r1, 0 bne _080E1744 - ldr r0, _080E1740 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E1740 @ =gBattleAnimBankAttacker b _080E1746 .align 2, 0 _080E173C: .4byte gBattleAnimArgs -_080E1740: .4byte gBattleAnimPlayerMonIndex +_080E1740: .4byte gBattleAnimBankAttacker _080E1744: - ldr r0, _080E17A8 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E17A8 @ =gBattleAnimBankTarget _080E1746: ldrb r4, [r0] movs r6, 0x18 @@ -47723,7 +47723,7 @@ _080E1762: pop {r0} bx r0 .align 2, 0 -_080E17A8: .4byte gBattleAnimEnemyMonIndex +_080E17A8: .4byte gBattleAnimBankTarget _080E17AC: .4byte sub_80E17B0 thumb_func_end sub_80E1728 @@ -47752,13 +47752,13 @@ sub_80E17CC: @ 80E17CC ldrsh r0, [r0, r1] cmp r0, 0 bne _080E17E8 - ldr r0, _080E17E4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E17E4 @ =gBattleAnimBankAttacker b _080E17EA .align 2, 0 _080E17E0: .4byte gBattleAnimArgs -_080E17E4: .4byte gBattleAnimPlayerMonIndex +_080E17E4: .4byte gBattleAnimBankAttacker _080E17E8: - ldr r0, _080E1848 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E1848 @ =gBattleAnimBankTarget _080E17EA: ldrb r5, [r0] adds r0, r5, 0 @@ -47796,7 +47796,7 @@ _080E17EA: strh r0, [r6, 0x4] ldr r1, _080E185C @ =move_anim_8072740 adds r0, r6, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldrh r0, [r4, 0x4] strh r0, [r6, 0x2E] ldr r0, _080E1860 @ =sub_80782D8 @@ -47805,7 +47805,7 @@ _080E17EA: pop {r0} bx r0 .align 2, 0 -_080E1848: .4byte gBattleAnimEnemyMonIndex +_080E1848: .4byte gBattleAnimBankTarget _080E184C: .4byte 0x0000fff0 _080E1850: .4byte gBattleAnimArgs _080E1854: .4byte 0x000003ff @@ -47870,7 +47870,7 @@ _080E18C8: _080E18CE: lsls r0, r5, 24 lsrs r0, 24 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080E18F8 @@ -47899,7 +47899,7 @@ _080E18F8: _080E1904: .4byte gObjectBankIDs _080E1908: ldrb r0, [r6] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1A] @@ -48282,13 +48282,13 @@ sub_80E1BB0: @ 80E1BB0 adds r6, r2, 0 cmp r0, 0 beq _080E1BD0 - ldr r0, _080E1BCC @ =gBattleAnimEnemyMonIndex + ldr r0, _080E1BCC @ =gBattleAnimBankTarget b _080E1BD2 .align 2, 0 _080E1BC8: .4byte gBattleAnimArgs -_080E1BCC: .4byte gBattleAnimEnemyMonIndex +_080E1BCC: .4byte gBattleAnimBankTarget _080E1BD0: - ldr r0, _080E1C40 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E1C40 @ =gBattleAnimBankAttacker _080E1BD2: ldrb r0, [r0] adds r5, r0, 0 @@ -48343,7 +48343,7 @@ _080E1BE2: pop {r0} bx r0 .align 2, 0 -_080E1C40: .4byte gBattleAnimPlayerMonIndex +_080E1C40: .4byte gBattleAnimBankAttacker _080E1C44: .4byte sub_80E1C58 _080E1C48: .4byte gTasks _080E1C4C: .4byte 0x000001ff @@ -48412,7 +48412,7 @@ sub_80E1CB4: @ 80E1CB4 strh r0, [r4, 0x22] ldrh r0, [r5, 0x4] strh r0, [r4, 0x2E] - ldr r0, _080E1CF0 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E1CF0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -48427,7 +48427,7 @@ sub_80E1CB4: @ 80E1CB4 b _080E1D02 .align 2, 0 _080E1CEC: .4byte gBattleAnimArgs -_080E1CF0: .4byte gBattleAnimPlayerMonIndex +_080E1CF0: .4byte gBattleAnimBankAttacker _080E1CF4: ldrh r0, [r5, 0x6] strh r0, [r4, 0x30] @@ -48763,7 +48763,7 @@ sub_80E1F3C: @ 80E1F3C strh r2, [r4, 0x38] ldr r1, _080E1F84 @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r1, _080E1F88 @ =sub_8078174 str r1, [r4, 0x1C] adds r0, r4, 0 @@ -49265,9 +49265,9 @@ sub_80E2324: @ 80E2324 lsrs r0, 24 mov r8, r0 movs r2, 0 - ldr r0, _080E239C @ =gBattleAnimPlayerMonIndex + ldr r0, _080E239C @ =gBattleAnimBankAttacker ldrb r6, [r0] - ldr r0, _080E23A0 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E23A0 @ =gBattleAnimBankTarget ldrb r7, [r0] ldr r4, _080E23A4 @ =gBattleAnimArgs ldrh r1, [r4] @@ -49317,8 +49317,8 @@ _080E2382: pop {r0} bx r0 .align 2, 0 -_080E239C: .4byte gBattleAnimPlayerMonIndex -_080E23A0: .4byte gBattleAnimEnemyMonIndex +_080E239C: .4byte gBattleAnimBankAttacker +_080E23A0: .4byte gBattleAnimBankTarget _080E23A4: .4byte gBattleAnimArgs thumb_func_end sub_80E2324 @@ -49361,10 +49361,10 @@ _080E23EA: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] - ldr r0, _080E24A4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E24A4 @ =gBattleAnimBankAttacker ldrb r0, [r0] mov r9, r0 - ldr r0, _080E24A8 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E24A8 @ =gBattleAnimBankTarget ldrb r0, [r0] mov r10, r0 ldrh r1, [r4, 0xC] @@ -49451,8 +49451,8 @@ _080E248E: .align 2, 0 _080E249C: .4byte gTasks _080E24A0: .4byte gBattleAnimArgs -_080E24A4: .4byte gBattleAnimPlayerMonIndex -_080E24A8: .4byte gBattleAnimEnemyMonIndex +_080E24A4: .4byte gBattleAnimBankAttacker +_080E24A8: .4byte gBattleAnimBankTarget _080E24AC: .4byte 0x0000ffff _080E24B0: .4byte gSprites _080E24B4: .4byte gHealthboxIDs @@ -49506,14 +49506,14 @@ _080E2508: ldr r1, _080E2514 @ =gSpriteCoordOffsetX _080E250A: adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 b _080E2520 .align 2, 0 _080E2514: .4byte gSpriteCoordOffsetX _080E2518: ldr r1, _080E2550 @ =gSpriteCoordOffsetY adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _080E2520: movs r0, 0x3A ldrsh r1, [r4, r0] @@ -49643,7 +49643,7 @@ sub_80E260C: @ 80E260C push {r4-r6,lr} ldr r6, _080E2680 @ =gSprites ldr r4, _080E2684 @ =gObjectBankIDs - ldr r5, _080E2688 @ =gBattleAnimPlayerMonIndex + ldr r5, _080E2688 @ =gBattleAnimBankAttacker ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] @@ -49658,7 +49658,7 @@ sub_80E260C: @ 80E260C adds r0, r2, 0 ands r0, r3 strb r0, [r1] - ldr r3, _080E268C @ =gBattleAnimEnemyMonIndex + ldr r3, _080E268C @ =gBattleAnimBankTarget ldrb r0, [r3] adds r0, r4 ldrb r1, [r0] @@ -49700,8 +49700,8 @@ sub_80E260C: @ 80E260C .align 2, 0 _080E2680: .4byte gSprites _080E2684: .4byte gObjectBankIDs -_080E2688: .4byte gBattleAnimPlayerMonIndex -_080E268C: .4byte gBattleAnimEnemyMonIndex +_080E2688: .4byte gBattleAnimBankAttacker +_080E268C: .4byte gBattleAnimBankTarget _080E2690: .4byte gBattleAnimArgs _080E2694: cmp r0, 0 @@ -49874,7 +49874,7 @@ _080E27CC: str r0, [r5, 0x1C] ldr r1, _080E27E4 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -49912,7 +49912,7 @@ _080E2814: str r0, [r5, 0x1C] ldr r1, _080E2834 @ =sub_80DA48C adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -49926,7 +49926,7 @@ _080E2834: .4byte sub_80DA48C sub_80E2838: @ 80E2838 push {r4,lr} adds r4, r0, 0 - ldr r0, _080E2868 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E2868 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -49947,7 +49947,7 @@ _080E285C: pop {r0} bx r0 .align 2, 0 -_080E2868: .4byte gBattleAnimPlayerMonIndex +_080E2868: .4byte gBattleAnimBankAttacker _080E286C: .4byte gBattleAnimArgs thumb_func_end sub_80E2838 @@ -50007,7 +50007,7 @@ _080E28B4: strh r0, [r4, 0x26] ldr r1, _080E2900 @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080E2904 @ =sub_80785E4 str r0, [r4, 0x1C] pop {r4,r5} @@ -50026,7 +50026,7 @@ sub_80E2908: @ 80E2908 adds r4, r0, 0 ldr r5, _080E2968 @ =gBattleAnimArgs ldrb r0, [r5] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x2E] @@ -50060,7 +50060,7 @@ sub_80E2908: @ 80E2908 bl StartSpriteAffineAnim ldr r1, _080E2970 @ =move_anim_8074EE0 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080E2974 @ =sub_80785E4 str r0, [r4, 0x1C] pop {r4,r5} @@ -50098,7 +50098,7 @@ _080E299C: strh r0, [r4, 0x2E] ldr r1, _080E29B8 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _080E29BC @ =sub_80782D8 str r0, [r4, 0x1C] pop {r4} @@ -50247,33 +50247,33 @@ _080E2AD0: movs r5, 0 _080E2AD2: mov r0, sp - ldr r1, _080E2AD8 @ =gBattleAnimPlayerMonIndex + ldr r1, _080E2AD8 @ =gBattleAnimBankAttacker b _080E2AE2 .align 2, 0 -_080E2AD8: .4byte gBattleAnimPlayerMonIndex +_080E2AD8: .4byte gBattleAnimBankAttacker _080E2ADC: movs r5, 0 _080E2ADE: mov r0, sp - ldr r1, _080E2AE8 @ =gBattleAnimEnemyMonIndex + ldr r1, _080E2AE8 @ =gBattleAnimBankTarget _080E2AE2: ldrb r1, [r1] strb r1, [r0] b _080E2B26 .align 2, 0 -_080E2AE8: .4byte gBattleAnimEnemyMonIndex +_080E2AE8: .4byte gBattleAnimBankTarget _080E2AEC: mov r1, sp - ldr r0, _080E2AFC @ =gBattleAnimPlayerMonIndex + ldr r0, _080E2AFC @ =gBattleAnimBankAttacker ldrb r0, [r0] strb r0, [r1] - ldr r0, _080E2B00 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E2B00 @ =gBattleAnimBankTarget ldrb r0, [r0] strb r0, [r1, 0x1] b _080E2B26 .align 2, 0 -_080E2AFC: .4byte gBattleAnimPlayerMonIndex -_080E2B00: .4byte gBattleAnimEnemyMonIndex +_080E2AFC: .4byte gBattleAnimBankAttacker +_080E2B00: .4byte gBattleAnimBankTarget _080E2B04: mov r1, sp movs r0, 0xFF @@ -50282,14 +50282,14 @@ _080E2B04: _080E2B0C: movs r5, 0 mov r2, sp - ldr r0, _080E2B14 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E2B14 @ =gBattleAnimBankAttacker b _080E2B1E .align 2, 0 -_080E2B14: .4byte gBattleAnimPlayerMonIndex +_080E2B14: .4byte gBattleAnimBankAttacker _080E2B18: movs r5, 0 mov r2, sp - ldr r0, _080E2B70 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E2B70 @ =gBattleAnimBankTarget _080E2B1E: ldrb r0, [r0] movs r1, 0x2 @@ -50306,7 +50306,7 @@ _080E2B2A: cmp r4, r0 beq _080E2B54 adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080E2B54 @@ -50332,7 +50332,7 @@ _080E2B54: pop {r0} bx r0 .align 2, 0 -_080E2B70: .4byte gBattleAnimEnemyMonIndex +_080E2B70: .4byte gBattleAnimBankTarget thumb_func_end sub_80E2A7C thumb_func_start sub_80E2B74 @@ -50900,7 +50900,7 @@ _080E2FAC: lsls r0, 24 cmp r0, 0 bne _080E3028 - ldr r5, _080E305C @ =gBattleAnimPlayerMonIndex + ldr r5, _080E305C @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankIdentity lsls r0, 24 @@ -50916,7 +50916,7 @@ _080E2FDC: ldrb r0, [r5] movs r6, 0x2 eors r0, r6 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -50968,12 +50968,12 @@ _080E304C: .4byte REG_BLDCNT _080E3050: .4byte 0x00003f42 _080E3054: .4byte 0x00000c08 _080E3058: .4byte REG_BG1CNT -_080E305C: .4byte gBattleAnimPlayerMonIndex +_080E305C: .4byte gBattleAnimBankAttacker _080E3060: .4byte gSprites _080E3064: .4byte gObjectBankIDs _080E3068: .4byte 0x02019348 _080E306C: - ldr r4, _080E308C @ =gBattleAnimPlayerMonIndex + ldr r4, _080E308C @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -50989,7 +50989,7 @@ _080E306C: ldr r1, _080E3094 @ =gEnemyParty b _080E30A8 .align 2, 0 -_080E308C: .4byte gBattleAnimPlayerMonIndex +_080E308C: .4byte gBattleAnimBankAttacker _080E3090: .4byte gBattlePartyID _080E3094: .4byte gEnemyParty _080E3098: @@ -51009,10 +51009,10 @@ _080E30A8: lsrs r4, r0, 16 _080E30B4: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _080E3168 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E3168 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r1, r5, 0 adds r2, r4, 0 @@ -51089,7 +51089,7 @@ _080E3106: .align 2, 0 _080E3160: .4byte gBattlePartyID _080E3164: .4byte gPlayerParty -_080E3168: .4byte gBattleAnimPlayerMonIndex +_080E3168: .4byte gBattleAnimBankAttacker _080E316C: .4byte 0x040000d4 _080E3170: .4byte 0x85000400 _080E3174: .4byte gUnknown_08D20A30 @@ -51174,7 +51174,7 @@ _080E3208: adds r0, 0x2 strh r5, [r0] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r0, _080E32CC @ =gSprites mov r8, r0 movs r2, 0x8 @@ -51200,7 +51200,7 @@ _080E3208: cmp r0, 0x1 bne _080E3288 ldr r2, _080E32D8 @ =gObjectBankIDs - ldr r0, _080E32DC @ =gBattleAnimPlayerMonIndex + ldr r0, _080E32DC @ =gBattleAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 eors r0, r1 @@ -51253,7 +51253,7 @@ _080E32CC: .4byte gSprites _080E32D0: .4byte 0x040000d4 _080E32D4: .4byte 0x85000200 _080E32D8: .4byte gObjectBankIDs -_080E32DC: .4byte gBattleAnimPlayerMonIndex +_080E32DC: .4byte gBattleAnimBankAttacker thumb_func_end sub_80E3194 thumb_func_start sub_80E32E0 @@ -51344,13 +51344,13 @@ _080E336C: ldrsh r0, [r7, r1] cmp r0, 0 bne _080E3390 - ldr r0, _080E338C @ =gBattleAnimPlayerMonIndex + ldr r0, _080E338C @ =gBattleAnimBankAttacker b _080E3392 .align 2, 0 _080E3388: .4byte gTasks -_080E338C: .4byte gBattleAnimPlayerMonIndex +_080E338C: .4byte gBattleAnimBankAttacker _080E3390: - ldr r0, _080E34B4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E34B4 @ =gBattleAnimBankTarget _080E3392: ldrb r5, [r0] movs r0, 0x2 @@ -51367,7 +51367,7 @@ _080E3392: cmp r0, 0 beq _080E33C0 mov r0, r8 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _080E33C0 @@ -51453,7 +51453,7 @@ _080E3432: bne _080E34A4 _080E345E: mov r0, r8 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -51495,7 +51495,7 @@ _080E34A4: ldrh r4, [r0] b _080E3522 .align 2, 0 -_080E34B4: .4byte gBattleAnimEnemyMonIndex +_080E34B4: .4byte gBattleAnimBankTarget _080E34B8: .4byte gUnknown_030042C4 _080E34BC: .4byte gUnknown_03004240 _080E34C0: .4byte REG_WININ @@ -52181,7 +52181,7 @@ sub_80E3A08: @ 80E3A08 lsrs r6, r0, 24 movs r4, 0 movs r2, 0 - ldr r0, _080E3A50 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E3A50 @ =gBattleAnimBankAttacker ldrb r3, [r0] movs r5, 0x1 _080E3A18: @@ -52214,7 +52214,7 @@ _080E3A34: pop {r0} bx r0 .align 2, 0 -_080E3A50: .4byte gBattleAnimPlayerMonIndex +_080E3A50: .4byte gBattleAnimBankAttacker _080E3A54: .4byte gBattleAnimArgs thumb_func_end sub_80E3A08 @@ -52235,7 +52235,7 @@ sub_80E3A58: @ 80E3A58 ldrsh r0, [r4, r1] cmp r0, 0 beq _080E3A94 - ldr r0, _080E3AC8 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E3AC8 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -52271,7 +52271,7 @@ _080E3A94: .align 2, 0 _080E3AC0: .4byte sub_80E3AD0 _080E3AC4: .4byte gBattleAnimArgs -_080E3AC8: .4byte gBattleAnimPlayerMonIndex +_080E3AC8: .4byte gBattleAnimBankAttacker _080E3ACC: .4byte gTasks thumb_func_end sub_80E3A58 @@ -52343,7 +52343,7 @@ sub_80E3B4C: @ 80E3B4C adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _080E3B70 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E3B70 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide ldr r1, _080E3B74 @ =gBattleAnimArgs @@ -52356,7 +52356,7 @@ sub_80E3B4C: @ 80E3B4C pop {r0} bx r0 .align 2, 0 -_080E3B70: .4byte gBattleAnimPlayerMonIndex +_080E3B70: .4byte gBattleAnimBankAttacker _080E3B74: .4byte gBattleAnimArgs thumb_func_end sub_80E3B4C @@ -52366,7 +52366,7 @@ sub_80E3B78: @ 80E3B78 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _080E3B9C @ =gBattleAnimEnemyMonIndex + ldr r0, _080E3B9C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide ldr r1, _080E3BA0 @ =gBattleAnimArgs @@ -52379,7 +52379,7 @@ sub_80E3B78: @ 80E3B78 pop {r0} bx r0 .align 2, 0 -_080E3B9C: .4byte gBattleAnimEnemyMonIndex +_080E3B9C: .4byte gBattleAnimBankTarget _080E3BA0: .4byte gBattleAnimArgs thumb_func_end sub_80E3B78 @@ -52390,10 +52390,10 @@ sub_80E3BA4: @ 80E3BA4 lsrs r3, r0, 24 ldr r5, _080E3BD0 @ =gBattleAnimArgs movs r4, 0 - ldr r0, _080E3BD4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E3BD4 @ =gBattleAnimBankAttacker ldrb r2, [r0] movs r0, 0x2 - ldr r1, _080E3BD8 @ =gBattleAnimEnemyMonIndex + ldr r1, _080E3BD8 @ =gBattleAnimBankTarget eors r0, r2 ldrb r1, [r1] cmp r0, r1 @@ -52408,8 +52408,8 @@ _080E3BC0: bx r0 .align 2, 0 _080E3BD0: .4byte gBattleAnimArgs -_080E3BD4: .4byte gBattleAnimPlayerMonIndex -_080E3BD8: .4byte gBattleAnimEnemyMonIndex +_080E3BD4: .4byte gBattleAnimBankAttacker +_080E3BD8: .4byte gBattleAnimBankTarget thumb_func_end sub_80E3BA4 thumb_func_start sub_80E3BDC @@ -52420,13 +52420,13 @@ sub_80E3BDC: @ 80E3BDC movs r4, 0 ldr r6, _080E3C3C @ =gSprites _080E3BE6: - ldr r0, _080E3C40 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E3C40 @ =gBattleAnimBankAttacker ldrb r0, [r0] cmp r4, r0 beq _080E3C24 lsls r0, r4, 24 lsrs r0, 24 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080E3C24 @@ -52463,7 +52463,7 @@ _080E3C24: bx r0 .align 2, 0 _080E3C3C: .4byte gSprites -_080E3C40: .4byte gBattleAnimPlayerMonIndex +_080E3C40: .4byte gBattleAnimBankAttacker _080E3C44: .4byte gObjectBankIDs _080E3C48: .4byte gBattleAnimArgs thumb_func_end sub_80E3BDC @@ -52513,7 +52513,7 @@ sub_80E3C4C: @ 80E3C4C cmp r1, 0 beq _080E3CB2 adds r0, r6, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _080E3CB2 @@ -52986,14 +52986,14 @@ _080E4068: .4byte gBattleAnimArgs _080E406C: cmp r0, 0x1 bne _080E4078 - ldr r0, _080E4074 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E4074 @ =gBattleAnimBankAttacker b _080E407E .align 2, 0 -_080E4074: .4byte gBattleAnimPlayerMonIndex +_080E4074: .4byte gBattleAnimBankAttacker _080E4078: cmp r0, 0x2 bne _080E4084 - ldr r0, _080E409C @ =gBattleAnimEnemyMonIndex + ldr r0, _080E409C @ =gBattleAnimBankTarget _080E407E: ldrb r0, [r0] adds r4, r0, 0 @@ -53010,7 +53010,7 @@ _080E4084: ldr r0, _080E40A4 @ =0x02014800 b _080E40AA .align 2, 0 -_080E409C: .4byte gBattleAnimEnemyMonIndex +_080E409C: .4byte gBattleAnimBankTarget _080E40A0: .4byte gBattleAnimArgs _080E40A4: .4byte 0x02014800 _080E40A8: @@ -53073,14 +53073,14 @@ _080E4110: .4byte gBattleAnimArgs _080E4114: cmp r0, 0x1 bne _080E4120 - ldr r0, _080E411C @ =gBattleAnimPlayerMonIndex + ldr r0, _080E411C @ =gBattleAnimBankAttacker b _080E4126 .align 2, 0 -_080E411C: .4byte gBattleAnimPlayerMonIndex +_080E411C: .4byte gBattleAnimBankAttacker _080E4120: cmp r0, 0x2 bne _080E412C - ldr r0, _080E4148 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E4148 @ =gBattleAnimBankTarget _080E4126: ldrb r0, [r0] adds r4, r0, 0 @@ -53100,7 +53100,7 @@ _080E412C: ldr r0, _080E4154 @ =0x02014800 b _080E415A .align 2, 0 -_080E4148: .4byte gBattleAnimEnemyMonIndex +_080E4148: .4byte gBattleAnimBankTarget _080E414C: .4byte gPlttBufferUnfaded _080E4150: .4byte gBattleAnimArgs _080E4154: .4byte 0x02014800 @@ -53160,14 +53160,14 @@ _080E41B8: .4byte gBattleAnimArgs _080E41BC: cmp r0, 0x1 bne _080E41C8 - ldr r0, _080E41C4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E41C4 @ =gBattleAnimBankAttacker b _080E41CE .align 2, 0 -_080E41C4: .4byte gBattleAnimPlayerMonIndex +_080E41C4: .4byte gBattleAnimBankAttacker _080E41C8: cmp r0, 0x2 bne _080E41D4 - ldr r0, _080E41F4 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E41F4 @ =gBattleAnimBankTarget _080E41CE: ldrb r0, [r0] adds r4, r0, 0 @@ -53187,7 +53187,7 @@ _080E41D4: pop {r0} bx r0 .align 2, 0 -_080E41F4: .4byte gBattleAnimEnemyMonIndex +_080E41F4: .4byte gBattleAnimBankTarget _080E41F8: .4byte gPlttBufferUnfaded _080E41FC: .4byte gPlttBufferFaded thumb_func_end sub_80E4178 @@ -53226,11 +53226,11 @@ sub_80E4234: @ 80E4234 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _080E4254 @ =gBattleAnimPlayerMonIndex + ldr r2, _080E4254 @ =gBattleAnimBankAttacker ldr r1, _080E4258 @ =gBankTarget ldrb r1, [r1] strb r1, [r2] - ldr r2, _080E425C @ =gBattleAnimEnemyMonIndex + ldr r2, _080E425C @ =gBattleAnimBankTarget ldr r1, _080E4260 @ =gEffectBank ldrb r1, [r1] strb r1, [r2] @@ -53238,9 +53238,9 @@ sub_80E4234: @ 80E4234 pop {r0} bx r0 .align 2, 0 -_080E4254: .4byte gBattleAnimPlayerMonIndex +_080E4254: .4byte gBattleAnimBankAttacker _080E4258: .4byte gBankTarget -_080E425C: .4byte gBattleAnimEnemyMonIndex +_080E425C: .4byte gBattleAnimBankTarget _080E4260: .4byte gEffectBank thumb_func_end sub_80E4234 @@ -53249,11 +53249,11 @@ sub_80E4264: @ 80E4264 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _080E428C @ =gBattleAnimPlayerMonIndex + ldr r0, _080E428C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide adds r4, r0, 0 - ldr r0, _080E4290 @ =gBattleAnimEnemyMonIndex + ldr r0, _080E4290 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 @@ -53264,8 +53264,8 @@ sub_80E4264: @ 80E4264 movs r0, 0x1 b _080E429C .align 2, 0 -_080E428C: .4byte gBattleAnimPlayerMonIndex -_080E4290: .4byte gBattleAnimEnemyMonIndex +_080E428C: .4byte gBattleAnimBankAttacker +_080E4290: .4byte gBattleAnimBankTarget _080E4294: .4byte gBattleAnimArgs _080E4298: ldr r1, _080E42AC @ =gBattleAnimArgs @@ -53286,7 +53286,7 @@ sub_80E42B0: @ 80E42B0 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _080E42C8 @ =gBattleAnimEnemyMonIndex + ldr r2, _080E42C8 @ =gBattleAnimBankTarget ldr r1, _080E42CC @ =gBankTarget ldrb r1, [r1] strb r1, [r2] @@ -53294,7 +53294,7 @@ sub_80E42B0: @ 80E42B0 pop {r0} bx r0 .align 2, 0 -_080E42C8: .4byte gBattleAnimEnemyMonIndex +_080E42C8: .4byte gBattleAnimBankTarget _080E42CC: .4byte gBankTarget thumb_func_end sub_80E42B0 @@ -53303,11 +53303,11 @@ sub_80E42D0: @ 80E42D0 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _080E42F0 @ =gBattleAnimPlayerMonIndex + ldr r2, _080E42F0 @ =gBattleAnimBankAttacker ldr r1, _080E42F4 @ =gBankAttacker ldrb r1, [r1] strb r1, [r2] - ldr r2, _080E42F8 @ =gBattleAnimEnemyMonIndex + ldr r2, _080E42F8 @ =gBattleAnimBankTarget ldr r1, _080E42FC @ =gEffectBank ldrb r1, [r1] strb r1, [r2] @@ -53315,9 +53315,9 @@ sub_80E42D0: @ 80E42D0 pop {r0} bx r0 .align 2, 0 -_080E42F0: .4byte gBattleAnimPlayerMonIndex +_080E42F0: .4byte gBattleAnimBankAttacker _080E42F4: .4byte gBankAttacker -_080E42F8: .4byte gBattleAnimEnemyMonIndex +_080E42F8: .4byte gBattleAnimBankTarget _080E42FC: .4byte gEffectBank thumb_func_end sub_80E42D0 @@ -53339,7 +53339,7 @@ _080E4318: adds r3, r4 lsls r3, 3 adds r3, r0 - ldr r1, _080E4358 @ =gBattleAnimPlayerMonIndex + ldr r1, _080E4358 @ =gBattleAnimBankAttacker ldrb r0, [r1] lsls r0, 2 ldr r2, _080E435C @ =0x02017800 @@ -53367,7 +53367,7 @@ _080E434E: bx r0 .align 2, 0 _080E4354: .4byte gTasks -_080E4358: .4byte gBattleAnimPlayerMonIndex +_080E4358: .4byte gBattleAnimBankAttacker _080E435C: .4byte 0x02017800 _080E4360: .4byte sub_80E4368 _080E4364: .4byte gAnimVisualTaskCount @@ -53385,7 +53385,7 @@ sub_80E4368: @ 80E4368 lsls r0, 5 cmp r1, r0 bne _080E43A8 - ldr r0, _080E43B4 @ =gBattleAnimPlayerMonIndex + ldr r0, _080E43B4 @ =gBattleAnimBankAttacker ldrb r3, [r0] lsls r3, 2 ldr r0, _080E43B8 @ =0x02017800 @@ -53412,7 +53412,7 @@ _080E43A8: bx r0 .align 2, 0 _080E43B0: .4byte gBattleAnimArgs -_080E43B4: .4byte gBattleAnimPlayerMonIndex +_080E43B4: .4byte gBattleAnimBankAttacker _080E43B8: .4byte 0x02017800 _080E43BC: .4byte gTasks thumb_func_end sub_80E4368 diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s index f2f127690..69b95b703 100644 --- a/asm/battle_anim_81258BC.s +++ b/asm/battle_anim_81258BC.s @@ -9,7 +9,7 @@ thumb_func_start unref_sub_812AECC unref_sub_812AECC: @ 812AECC push {lr} - bl sub_812613C + bl RunMysteryEventScript lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 @@ -403,29 +403,29 @@ _0812B1CC: adds r2, r0, 0 cmp r1, 0 bne _0812B1E8 - ldr r0, _0812B1E4 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812B1E4 @ =gBattleAnimBankAttacker ldrb r4, [r0] b _0812B20E .align 2, 0 _0812B1E0: .4byte gBattleAnimArgs -_0812B1E4: .4byte gBattleAnimPlayerMonIndex +_0812B1E4: .4byte gBattleAnimBankAttacker _0812B1E8: cmp r1, 0x1 bne _0812B1F8 - ldr r0, _0812B1F4 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812B1F4 @ =gBattleAnimBankTarget ldrb r4, [r0] b _0812B20E .align 2, 0 -_0812B1F4: .4byte gBattleAnimEnemyMonIndex +_0812B1F4: .4byte gBattleAnimBankTarget _0812B1F8: cmp r1, 0x2 bne _0812B204 - ldr r0, _0812B200 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812B200 @ =gBattleAnimBankAttacker b _0812B206 .align 2, 0 -_0812B200: .4byte gBattleAnimPlayerMonIndex +_0812B200: .4byte gBattleAnimBankAttacker _0812B204: - ldr r0, _0812B230 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812B230 @ =gBattleAnimBankTarget _0812B206: ldrb r1, [r0] movs r0, 0x2 @@ -440,7 +440,7 @@ _0812B20E: bne _0812B234 _0812B21A: adds r0, r4, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _0812B234 @@ -448,7 +448,7 @@ _0812B21A: bl DestroyAnimVisualTask b _0812B2B0 .align 2, 0 -_0812B230: .4byte gBattleAnimEnemyMonIndex +_0812B230: .4byte gBattleAnimBankTarget _0812B234: adds r0, r4, 0 bl GetBankSide @@ -534,7 +534,7 @@ sub_812B2B8: @ 812B2B8 _0812B2D8: .4byte 0x02019348 _0812B2DC: ldr r1, _0812B304 @ =gUnknown_0202F7CA - ldr r0, _0812B308 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812B308 @ =gBattleAnimBankAttacker ldrb r0, [r0] lsls r0, 1 adds r0, r1 @@ -554,7 +554,7 @@ _0812B2F6: bx r0 .align 2, 0 _0812B304: .4byte gUnknown_0202F7CA -_0812B308: .4byte gBattleAnimPlayerMonIndex +_0812B308: .4byte gBattleAnimBankAttacker thumb_func_end sub_812B2B8 thumb_func_start sub_812B30C @@ -729,1397 +729,5 @@ _0812B45C: .4byte gTasks _0812B460: .4byte gUnknown_0202F7D2 thumb_func_end sub_812B404 - thumb_func_start unref_sub_812B464 -unref_sub_812B464: @ 812B464 - bx lr - thumb_func_end unref_sub_812B464 - - thumb_func_start SetBankFuncToSafariBufferRunCommand -SetBankFuncToSafariBufferRunCommand: @ 812B468 - ldr r1, _0812B478 @ =gBattleBankFunc - ldr r0, _0812B47C @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0812B480 @ =SafariBufferRunCommand - str r1, [r0] - bx lr - .align 2, 0 -_0812B478: .4byte gBattleBankFunc -_0812B47C: .4byte gActiveBank -_0812B480: .4byte SafariBufferRunCommand - thumb_func_end SetBankFuncToSafariBufferRunCommand - - thumb_func_start SafariBufferRunCommand -SafariBufferRunCommand: @ 812B484 - push {lr} - ldr r2, _0812B4B8 @ =gBattleExecBuffer - ldr r1, _0812B4BC @ =gBitTable - ldr r0, _0812B4C0 @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0812B4D0 - ldr r0, _0812B4C4 @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _0812B4CC - ldr r0, _0812B4C8 @ =gSafariBufferCommands - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _0812B4D0 - .align 2, 0 -_0812B4B8: .4byte gBattleExecBuffer -_0812B4BC: .4byte gBitTable -_0812B4C0: .4byte gActiveBank -_0812B4C4: .4byte gBattleBufferA -_0812B4C8: .4byte gSafariBufferCommands -_0812B4CC: - bl SafariBufferExecCompleted -_0812B4D0: - pop {r0} - bx r0 - thumb_func_end SafariBufferRunCommand - - thumb_func_start bx_battle_menu_t6_2 -bx_battle_menu_t6_2: @ 812B4D4 - push {r4,r5,lr} - ldr r0, _0812B508 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0812B546 - movs r0, 0x5 - bl PlaySE - bl DestroyMenuCursor - ldr r1, _0812B50C @ =gActionSelectionCursor - ldr r0, _0812B510 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0812B524 - cmp r0, 0x1 - bgt _0812B514 - cmp r0, 0 - beq _0812B51E - b _0812B540 - .align 2, 0 -_0812B508: .4byte gMain -_0812B50C: .4byte gActionSelectionCursor -_0812B510: .4byte gActiveBank -_0812B514: - cmp r0, 0x2 - beq _0812B52A - cmp r0, 0x3 - beq _0812B536 - b _0812B540 -_0812B51E: - movs r0, 0x1 - movs r1, 0x5 - b _0812B52E -_0812B524: - movs r0, 0x1 - movs r1, 0x6 - b _0812B52E -_0812B52A: - movs r0, 0x1 - movs r1, 0x7 -_0812B52E: - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - b _0812B540 -_0812B536: - movs r0, 0x1 - movs r1, 0x8 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb -_0812B540: - bl SafariBufferExecCompleted - b _0812B64E -_0812B546: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0812B584 - ldr r5, _0812B57C @ =gActionSelectionCursor - ldr r4, _0812B580 @ =gActiveBank - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0812B64E - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _0812B5F2 - .align 2, 0 -_0812B57C: .4byte gActionSelectionCursor -_0812B580: .4byte gActiveBank -_0812B584: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0812B5C0 - ldr r5, _0812B5B8 @ =gActionSelectionCursor - ldr r4, _0812B5BC @ =gActiveBank - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0812B64E - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _0812B5F2 - .align 2, 0 -_0812B5B8: .4byte gActionSelectionCursor -_0812B5BC: .4byte gActiveBank -_0812B5C0: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0812B60C - ldr r5, _0812B604 @ =gActionSelectionCursor - ldr r4, _0812B608 @ =gActiveBank - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812B64E - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 -_0812B5F2: - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3E4 - b _0812B64E - .align 2, 0 -_0812B604: .4byte gActionSelectionCursor -_0812B608: .4byte gActiveBank -_0812B60C: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0812B64E - ldr r5, _0812B654 @ =gActionSelectionCursor - ldr r4, _0812B658 @ =gActiveBank - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0812B64E - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3E4 -_0812B64E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812B654: .4byte gActionSelectionCursor -_0812B658: .4byte gActiveBank - thumb_func_end bx_battle_menu_t6_2 - - thumb_func_start sub_812B65C -sub_812B65C: @ 812B65C - push {lr} - ldr r2, _0812B684 @ =gSprites - ldr r1, _0812B688 @ =gObjectBankIDs - ldr r0, _0812B68C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0812B690 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0812B680 - bl SafariBufferExecCompleted -_0812B680: - pop {r0} - bx r0 - .align 2, 0 -_0812B684: .4byte gSprites -_0812B688: .4byte gObjectBankIDs -_0812B68C: .4byte gActiveBank -_0812B690: .4byte SpriteCallbackDummy - thumb_func_end sub_812B65C - - thumb_func_start sub_812B694 -sub_812B694: @ 812B694 - push {lr} - ldr r0, _0812B6A8 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _0812B6A2 - bl SafariBufferExecCompleted -_0812B6A2: - pop {r0} - bx r0 - .align 2, 0 -_0812B6A8: .4byte gUnknown_03004210 - thumb_func_end sub_812B694 - - thumb_func_start sub_812B6AC -sub_812B6AC: @ 812B6AC - push {lr} - ldr r0, _0812B6DC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812B6D6 - ldr r2, _0812B6E0 @ =gMain - ldr r0, _0812B6E4 @ =0x0000043d - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _0812B6E8 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_0812B6D6: - pop {r0} - bx r0 - .align 2, 0 -_0812B6DC: .4byte gPaletteFade -_0812B6E0: .4byte gMain -_0812B6E4: .4byte 0x0000043d -_0812B6E8: .4byte gPreBattleCallback1 - thumb_func_end sub_812B6AC - - thumb_func_start bx_wait_t6 -bx_wait_t6: @ 812B6EC - push {lr} - ldr r0, _0812B718 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - beq _0812B70E - ldr r0, _0812B71C @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812B720 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0812B712 -_0812B70E: - bl SafariBufferExecCompleted -_0812B712: - pop {r0} - bx r0 - .align 2, 0 -_0812B718: .4byte gDoingBattleAnim -_0812B71C: .4byte gActiveBank -_0812B720: .4byte 0x02017810 - thumb_func_end bx_wait_t6 - - thumb_func_start sub_812B724 -sub_812B724: @ 812B724 - push {lr} - ldr r0, _0812B748 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812B744 - ldr r1, _0812B74C @ =gBattleBankFunc - ldr r0, _0812B750 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0812B754 @ =sub_812B758 - str r1, [r0] - bl sub_810BADC -_0812B744: - pop {r0} - bx r0 - .align 2, 0 -_0812B748: .4byte gPaletteFade -_0812B74C: .4byte gBattleBankFunc -_0812B750: .4byte gActiveBank -_0812B754: .4byte sub_812B758 - thumb_func_end sub_812B724 - - thumb_func_start sub_812B758 -sub_812B758: @ 812B758 - push {lr} - ldr r0, _0812B784 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0812B788 @ =sub_800F808 - cmp r1, r0 - bne _0812B77E - ldr r0, _0812B78C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812B77E - ldr r0, _0812B790 @ =gScriptItemId - ldrh r1, [r0] - movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 - bl SafariBufferExecCompleted -_0812B77E: - pop {r0} - bx r0 - .align 2, 0 -_0812B784: .4byte gMain -_0812B788: .4byte sub_800F808 -_0812B78C: .4byte gPaletteFade -_0812B790: .4byte gScriptItemId - thumb_func_end sub_812B758 - - thumb_func_start sub_812B794 -sub_812B794: @ 812B794 - push {lr} - ldr r0, _0812B7B8 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812B7BC @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0812B7B2 - bl SafariBufferExecCompleted -_0812B7B2: - pop {r0} - bx r0 - .align 2, 0 -_0812B7B8: .4byte gActiveBank -_0812B7BC: .4byte 0x02017810 - thumb_func_end sub_812B794 - - thumb_func_start SafariBufferExecCompleted -SafariBufferExecCompleted: @ 812B7C0 - push {r4,lr} - sub sp, 0x4 - ldr r1, _0812B800 @ =gBattleBankFunc - ldr r4, _0812B804 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0812B808 @ =SafariBufferRunCommand - str r1, [r0] - ldr r0, _0812B80C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812B814 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl dp01_prepare_buffer_wireless_probably - ldr r1, _0812B810 @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _0812B826 - .align 2, 0 -_0812B800: .4byte gBattleBankFunc -_0812B804: .4byte gActiveBank -_0812B808: .4byte SafariBufferRunCommand -_0812B80C: .4byte gBattleTypeFlags -_0812B810: .4byte gBattleBufferA -_0812B814: - ldr r2, _0812B830 @ =gBattleExecBuffer - ldr r1, _0812B834 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_0812B826: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812B830: .4byte gBattleExecBuffer -_0812B834: .4byte gBitTable - thumb_func_end SafariBufferExecCompleted - - thumb_func_start unref_sub_812B838 -unref_sub_812B838: @ 812B838 - push {lr} - ldr r0, _0812B85C @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812B860 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0812B856 - bl SafariBufferExecCompleted -_0812B856: - pop {r0} - bx r0 - .align 2, 0 -_0812B85C: .4byte gActiveBank -_0812B860: .4byte 0x02017810 - thumb_func_end unref_sub_812B838 - - thumb_func_start SafariHandleGetAttributes -SafariHandleGetAttributes: @ 812B864 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end SafariHandleGetAttributes - - thumb_func_start sub_812B870 -sub_812B870: @ 812B870 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B870 - - thumb_func_start sub_812B87C -sub_812B87C: @ 812B87C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B87C - - thumb_func_start sub_812B888 -sub_812B888: @ 812B888 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B888 - - thumb_func_start sub_812B894 -sub_812B894: @ 812B894 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B894 - - thumb_func_start sub_812B8A0 -sub_812B8A0: @ 812B8A0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B8A0 - - thumb_func_start sub_812B8AC -sub_812B8AC: @ 812B8AC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B8AC - - thumb_func_start sub_812B8B8 -sub_812B8B8: @ 812B8B8 - push {r4-r6,lr} - ldr r4, _0812B96C @ =gSaveBlock2 - ldrb r0, [r4, 0x8] - ldr r5, _0812B970 @ =gActiveBank - ldrb r1, [r5] - bl sub_8031AF4 - ldrb r6, [r4, 0x8] - ldrb r0, [r5] - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl GetMonSpriteTemplate_803C5A0 - ldr r0, _0812B974 @ =gUnknown_02024E8C - ldr r2, _0812B978 @ =gTrainerBackPicCoords - ldrb r1, [r4, 0x8] - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r6, _0812B97C @ =gObjectBankIDs - ldrb r1, [r5] - adds r1, r6 - strb r0, [r1] - ldr r4, _0812B980 @ =gSprites - ldrb r3, [r5] - adds r0, r3, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xF0 - strh r1, [r0, 0x24] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0812B984 @ =0x0000fffe - strh r1, [r0, 0x2E] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _0812B988 @ =sub_80313A0 - str r1, [r0] - ldr r1, _0812B98C @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0812B990 @ =sub_812B65C - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812B96C: .4byte gSaveBlock2 -_0812B970: .4byte gActiveBank -_0812B974: .4byte gUnknown_02024E8C -_0812B978: .4byte gTrainerBackPicCoords -_0812B97C: .4byte gObjectBankIDs -_0812B980: .4byte gSprites -_0812B984: .4byte 0x0000fffe -_0812B988: .4byte sub_80313A0 -_0812B98C: .4byte gBattleBankFunc -_0812B990: .4byte sub_812B65C - thumb_func_end sub_812B8B8 - - thumb_func_start sub_812B994 -sub_812B994: @ 812B994 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B994 - - thumb_func_start sub_812B9A0 -sub_812B9A0: @ 812B9A0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B9A0 - - thumb_func_start sub_812B9AC -sub_812B9AC: @ 812B9AC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B9AC - - thumb_func_start sub_812B9B8 -sub_812B9B8: @ 812B9B8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812B9B8 - - thumb_func_start sub_812B9C4 -sub_812B9C4: @ 812B9C4 - push {r4,r5,lr} - ldr r1, _0812BA00 @ =0x02017840 - movs r0, 0x4 - strb r0, [r1, 0x8] - ldr r1, _0812BA04 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldr r5, _0812BA08 @ =gActiveBank - ldrb r4, [r5] - movs r0, 0x1 - bl GetBankByPlayerAI - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x4 - bl move_anim_start_t4 - ldr r1, _0812BA0C @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0812BA10 @ =bx_wait_t6 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812BA00: .4byte 0x02017840 -_0812BA04: .4byte gDoingBattleAnim -_0812BA08: .4byte gActiveBank -_0812BA0C: .4byte gBattleBankFunc -_0812BA10: .4byte bx_wait_t6 - thumb_func_end sub_812B9C4 - - thumb_func_start sub_812BA14 -sub_812BA14: @ 812BA14 - push {r4,r5,lr} - ldr r1, _0812BA58 @ =gBattleBufferA - ldr r5, _0812BA5C @ =gActiveBank - ldrb r0, [r5] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - ldr r0, _0812BA60 @ =0x02017840 - strb r1, [r0, 0x8] - ldr r1, _0812BA64 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r4, [r5] - movs r0, 0x1 - bl GetBankByPlayerAI - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x4 - bl move_anim_start_t4 - ldr r1, _0812BA68 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0812BA6C @ =bx_wait_t6 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812BA58: .4byte gBattleBufferA -_0812BA5C: .4byte gActiveBank -_0812BA60: .4byte 0x02017840 -_0812BA64: .4byte gDoingBattleAnim -_0812BA68: .4byte gBattleBankFunc -_0812BA6C: .4byte bx_wait_t6 - thumb_func_end sub_812BA14 - - thumb_func_start sub_812BA70 -sub_812BA70: @ 812BA70 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BA70 - - thumb_func_start sub_812BA7C -sub_812BA7C: @ 812BA7C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BA7C - - thumb_func_start SafariHandlePrintString -SafariHandlePrintString: @ 812BA88 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0812BACC @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _0812BAD0 @ =gUnknown_030042A0 - strh r1, [r0] - ldr r4, _0812BAD4 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 9 - ldr r1, _0812BAD8 @ =gUnknown_02023A62 - adds r0, r1 - ldrh r0, [r0] - bl BufferStringBattle - ldr r0, _0812BADC @ =gUnknown_03004210 - ldr r1, _0812BAE0 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _0812BAE4 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0812BAE8 @ =sub_812B694 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812BACC: .4byte gUnknown_030042A4 -_0812BAD0: .4byte gUnknown_030042A0 -_0812BAD4: .4byte gActiveBank -_0812BAD8: .4byte gUnknown_02023A62 -_0812BADC: .4byte gUnknown_03004210 -_0812BAE0: .4byte gDisplayedStringBattle -_0812BAE4: .4byte gBattleBankFunc -_0812BAE8: .4byte sub_812B694 - thumb_func_end SafariHandlePrintString - - thumb_func_start SafariHandlePrintStringPlayerOnly -SafariHandlePrintStringPlayerOnly: @ 812BAEC - push {lr} - ldr r0, _0812BB04 @ =gActiveBank - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0812BB08 - bl SafariHandlePrintString - b _0812BB0C - .align 2, 0 -_0812BB04: .4byte gActiveBank -_0812BB08: - bl SafariBufferExecCompleted -_0812BB0C: - pop {r0} - bx r0 - thumb_func_end SafariHandlePrintStringPlayerOnly - -.section .text_812BBFC - - thumb_func_start sub_812BBFC -sub_812BBFC: @ 812BBFC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BBFC - - thumb_func_start sub_812BC08 -sub_812BC08: @ 812BC08 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BC08 - - thumb_func_start sub_812BC14 -sub_812BC14: @ 812BC14 - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0812BC44 @ =gBattleBankFunc - ldr r2, _0812BC48 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0812BC4C @ =sub_812B724 - str r1, [r0] - ldr r1, _0812BC50 @ =gBankInMenu - ldrb r0, [r2] - strb r0, [r1] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0812BC44: .4byte gBattleBankFunc -_0812BC48: .4byte gActiveBank -_0812BC4C: .4byte sub_812B724 -_0812BC50: .4byte gBankInMenu - thumb_func_end sub_812BC14 - - thumb_func_start sub_812BC54 -sub_812BC54: @ 812BC54 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BC54 - - thumb_func_start sub_812BC60 -sub_812BC60: @ 812BC60 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BC60 - - thumb_func_start sub_812BC6C -sub_812BC6C: @ 812BC6C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BC6C - - thumb_func_start sub_812BC78 -sub_812BC78: @ 812BC78 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BC78 - - thumb_func_start sub_812BC84 -sub_812BC84: @ 812BC84 - push {lr} - ldr r0, _0812BCB0 @ =gHealthboxIDs - ldr r1, _0812BCB4 @ =gActiveBank - ldrb r1, [r1] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _0812BCB8 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0812BCBC @ =gPlayerParty - adds r1, r2 - movs r2, 0xB - bl sub_8045A5C - bl SafariBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0812BCB0: .4byte gHealthboxIDs -_0812BCB4: .4byte gActiveBank -_0812BCB8: .4byte gBattlePartyID -_0812BCBC: .4byte gPlayerParty - thumb_func_end sub_812BC84 - - thumb_func_start sub_812BCC0 -sub_812BCC0: @ 812BCC0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BCC0 - - thumb_func_start sub_812BCCC -sub_812BCCC: @ 812BCCC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BCCC - - thumb_func_start sub_812BCD8 -sub_812BCD8: @ 812BCD8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BCD8 - - thumb_func_start sub_812BCE4 -sub_812BCE4: @ 812BCE4 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BCE4 - - thumb_func_start sub_812BCF0 -sub_812BCF0: @ 812BCF0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BCF0 - - thumb_func_start sub_812BCFC -sub_812BCFC: @ 812BCFC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BCFC - - thumb_func_start sub_812BD08 -sub_812BD08: @ 812BD08 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD08 - - thumb_func_start sub_812BD14 -sub_812BD14: @ 812BD14 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD14 - - thumb_func_start sub_812BD20 -sub_812BD20: @ 812BD20 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD20 - - thumb_func_start sub_812BD2C -sub_812BD2C: @ 812BD2C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD2C - - thumb_func_start sub_812BD38 -sub_812BD38: @ 812BD38 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD38 - - thumb_func_start sub_812BD44 -sub_812BD44: @ 812BD44 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD44 - - thumb_func_start sub_812BD50 -sub_812BD50: @ 812BD50 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD50 - - thumb_func_start sub_812BD5C -sub_812BD5C: @ 812BD5C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD5C - - thumb_func_start sub_812BD68 -sub_812BD68: @ 812BD68 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD68 - - thumb_func_start sub_812BD74 -sub_812BD74: @ 812BD74 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BD74 - - thumb_func_start sub_812BD80 -sub_812BD80: @ 812BD80 - push {r4,lr} - ldr r4, _0812BDBC @ =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - movs r3, 0x3F - cmp r0, 0 - bne _0812BD94 - movs r3, 0xC0 -_0812BD94: - ldr r2, _0812BDC0 @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - lsls r1, r3, 24 - asrs r1, 24 - bl PlaySE12WithPanning - bl SafariBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812BDBC: .4byte gActiveBank -_0812BDC0: .4byte gBattleBufferA - thumb_func_end sub_812BD80 - - thumb_func_start sub_812BDC4 -sub_812BDC4: @ 812BDC4 - push {lr} - ldr r2, _0812BDEC @ =gBattleBufferA - ldr r0, _0812BDF0 @ =gActiveBank - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl SafariBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0812BDEC: .4byte gBattleBufferA -_0812BDF0: .4byte gActiveBank - thumb_func_end sub_812BDC4 - - thumb_func_start sub_812BDF4 -sub_812BDF4: @ 812BDF4 - push {lr} - ldr r1, _0812BE24 @ =gBattlePartyID - ldr r0, _0812BE28 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0812BE2C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - bl PlayCry1 - bl SafariBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0812BE24: .4byte gBattlePartyID -_0812BE28: .4byte gActiveBank -_0812BE2C: .4byte gPlayerParty - thumb_func_end sub_812BDF4 - - thumb_func_start dp01t_2E_6_battle_intro -dp01t_2E_6_battle_intro: @ 812BE30 - push {lr} - ldr r1, _0812BE58 @ =gBattleBufferA - ldr r0, _0812BE5C @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl sub_80E43C0 - ldr r2, _0812BE60 @ =gUnknown_02024DE8 - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl SafariBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0812BE58: .4byte gBattleBufferA -_0812BE5C: .4byte gActiveBank -_0812BE60: .4byte gUnknown_02024DE8 - thumb_func_end dp01t_2E_6_battle_intro - - thumb_func_start sub_812BE64 -sub_812BE64: @ 812BE64 - push {r4,r5,lr} - ldr r5, _0812BEA0 @ =gHealthboxIDs - ldr r4, _0812BEA4 @ =gActiveBank - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _0812BEA8 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0812BEAC @ =gPlayerParty - adds r1, r2 - movs r2, 0xA - bl sub_8045A5C - ldrb r0, [r4] - bl sub_804777C - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - bl SafariBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812BEA0: .4byte gHealthboxIDs -_0812BEA4: .4byte gActiveBank -_0812BEA8: .4byte gBattlePartyID -_0812BEAC: .4byte gPlayerParty - thumb_func_end sub_812BE64 - - thumb_func_start sub_812BEB0 -sub_812BEB0: @ 812BEB0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BEB0 - - thumb_func_start sub_812BEBC -sub_812BEBC: @ 812BEBC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BEBC - - thumb_func_start sub_812BEC8 -sub_812BEC8: @ 812BEC8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BEC8 - - thumb_func_start sub_812BED4 -sub_812BED4: @ 812BED4 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BED4 - - thumb_func_start sub_812BEE0 -sub_812BEE0: @ 812BEE0 - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _0812BF18 @ =gBattleBufferA - ldr r6, _0812BF1C @ =gActiveBank - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl move_anim_start_t3 - lsls r0, 24 - cmp r0, 0 - beq _0812BF20 - bl SafariBufferExecCompleted - b _0812BF2C - .align 2, 0 -_0812BF18: .4byte gBattleBufferA -_0812BF1C: .4byte gActiveBank -_0812BF20: - ldr r0, _0812BF34 @ =gBattleBankFunc - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _0812BF38 @ =sub_812B794 - str r0, [r1] -_0812BF2C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812BF34: .4byte gBattleBankFunc -_0812BF38: .4byte sub_812B794 - thumb_func_end sub_812BEE0 - - thumb_func_start sub_812BF3C -sub_812BF3C: @ 812BF3C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BF3C - - thumb_func_start sub_812BF48 -sub_812BF48: @ 812BF48 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_812BF48 - - thumb_func_start sub_812BF54 -sub_812BF54: @ 812BF54 - push {r4,lr} - ldr r2, _0812BF98 @ =gBattleOutcome - ldr r1, _0812BF9C @ =gBattleBufferA - ldr r4, _0812BFA0 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x5 - bl FadeOutMapMusic - movs r0, 0x3 - bl BeginFastPaletteFade - bl SafariBufferExecCompleted - ldr r0, _0812BFA4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0x2 - bne _0812BF90 - ldr r0, _0812BFA8 @ =gBattleBankFunc - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _0812BFAC @ =sub_812B6AC - str r0, [r1] -_0812BF90: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812BF98: .4byte gBattleOutcome -_0812BF9C: .4byte gBattleBufferA -_0812BFA0: .4byte gActiveBank -_0812BFA4: .4byte gBattleTypeFlags -_0812BFA8: .4byte gBattleBankFunc -_0812BFAC: .4byte sub_812B6AC - thumb_func_end sub_812BF54 - - thumb_func_start nullsub_78 -nullsub_78: @ 812BFB0 - bx lr - thumb_func_end nullsub_78 - - .align 2, 0 @ Don't pad with nop. + .align 2, 0 @ Don't pad with nop. +
\ No newline at end of file diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index bae3d9bc2..4562ad2f5 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -90,7 +90,7 @@ sub_812C1D0: @ 812C1D0 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r6, _0812C21C @ =gBattleAnimEnemyMonIndex + ldr r6, _0812C21C @ =gBattleAnimBankTarget ldrb r0, [r6] movs r1, 0x2 bl sub_8077ABC @@ -120,7 +120,7 @@ sub_812C1D0: @ 812C1D0 pop {r0} bx r0 .align 2, 0 -_0812C21C: .4byte gBattleAnimEnemyMonIndex +_0812C21C: .4byte gBattleAnimBankTarget thumb_func_end sub_812C1D0 thumb_func_start sub_812C220 @@ -135,7 +135,7 @@ sub_812C220: @ 812C220 strh r0, [r4, 0x30] ldr r1, _0812C25C @ =sub_812C268 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r1, _0812C260 @ =REG_BLDCNT movs r2, 0xFD lsls r2, 6 @@ -211,7 +211,7 @@ sub_812C2BC: @ 812C2BC push {r4-r7,lr} sub sp, 0x4 adds r5, r0, 0 - ldr r4, _0812C348 @ =gBattleAnimEnemyMonIndex + ldr r4, _0812C348 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -267,13 +267,13 @@ _0812C31A: str r0, [r5, 0x1C] ldr r1, _0812C354 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_0812C348: .4byte gBattleAnimEnemyMonIndex +_0812C348: .4byte gBattleAnimBankTarget _0812C34C: .4byte gBattleAnimArgs _0812C350: .4byte sub_8078B34 _0812C354: .4byte move_anim_8072740 @@ -797,7 +797,7 @@ sub_812C720: @ 812C720 adds r4, r0, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _0812C784 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812C784 @ =gBattleAnimBankTarget ldrb r0, [r0] mov r5, sp adds r5, 0x2 @@ -805,7 +805,7 @@ sub_812C720: @ 812C720 mov r2, sp adds r3, r5, 0 bl sub_807A3FC - ldr r0, _0812C788 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812C788 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -839,8 +839,8 @@ _0812C754: pop {r0} bx r0 .align 2, 0 -_0812C784: .4byte gBattleAnimEnemyMonIndex -_0812C788: .4byte gBattleAnimPlayerMonIndex +_0812C784: .4byte gBattleAnimBankTarget +_0812C788: .4byte gBattleAnimBankAttacker _0812C78C: .4byte gBattleAnimArgs _0812C790: .4byte 0x0000ffce _0812C794: .4byte sub_812C798 @@ -862,7 +862,7 @@ sub_812C798: @ 812C798 str r0, [r4, 0x1C] ldr r1, _0812C7C4 @ =sub_812C7C8 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 _0812C7BA: pop {r4} pop {r0} @@ -929,7 +929,7 @@ sub_812C80C: @ 812C80C str r0, [r4, 0x1C] ldr r1, _0812C844 @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 @@ -958,7 +958,7 @@ sub_812C848: @ 812C848 lsls r0, 24 cmp r0, 0 bne _0812C89C - ldr r0, _0812C888 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812C888 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -968,7 +968,7 @@ sub_812C848: @ 812C848 b _0812C8A2 .align 2, 0 _0812C884: .4byte gBattleAnimArgs -_0812C888: .4byte gBattleAnimPlayerMonIndex +_0812C888: .4byte gBattleAnimBankAttacker _0812C88C: movs r1, 0x4 ldrsh r0, [r5, r1] @@ -1058,7 +1058,7 @@ sub_812C924: @ 812C924 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _0812C940 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812C940 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -1069,7 +1069,7 @@ sub_812C924: @ 812C924 movs r0, 0 b _0812C94C .align 2, 0 -_0812C940: .4byte gBattleAnimEnemyMonIndex +_0812C940: .4byte gBattleAnimBankTarget _0812C944: .4byte gBattleAnimArgs _0812C948: ldr r1, _0812C95C @ =gBattleAnimArgs @@ -1307,7 +1307,7 @@ sub_812CAFC: @ 812CAFC ldrsh r0, [r6, r1] cmp r0, 0 bne _0812CB28 - ldr r4, _0812CB74 @ =gBattleAnimPlayerMonIndex + ldr r4, _0812CB74 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -1358,7 +1358,7 @@ _0812CB28: b _0812CB8A .align 2, 0 _0812CB70: .4byte gBattleAnimArgs -_0812CB74: .4byte gBattleAnimPlayerMonIndex +_0812CB74: .4byte gBattleAnimBankAttacker _0812CB78: .4byte 0x000003ff _0812CB7C: .4byte 0xfffffc00 _0812CB80: .4byte 0x0000fff4 @@ -1553,13 +1553,13 @@ sub_812CCE8: @ 812CCE8 ldrsh r0, [r6, r1] cmp r0, 0 bne _0812CD04 - ldr r4, _0812CD00 @ =gBattleAnimPlayerMonIndex + ldr r4, _0812CD00 @ =gBattleAnimBankAttacker b _0812CD06 .align 2, 0 _0812CCFC: .4byte gBattleAnimArgs -_0812CD00: .4byte gBattleAnimPlayerMonIndex +_0812CD00: .4byte gBattleAnimBankAttacker _0812CD04: - ldr r4, _0812CD58 @ =gBattleAnimEnemyMonIndex + ldr r4, _0812CD58 @ =gBattleAnimBankTarget _0812CD06: ldrb r0, [r4] movs r1, 0 @@ -1602,7 +1602,7 @@ _0812CD3E: pop {r0} bx r0 .align 2, 0 -_0812CD58: .4byte gBattleAnimEnemyMonIndex +_0812CD58: .4byte gBattleAnimBankTarget _0812CD5C: .4byte gBattleAnimArgs _0812CD60: .4byte sub_812CD64 thumb_func_end sub_812CCE8 @@ -1675,14 +1675,14 @@ sub_812CDC8: @ 812CDC8 ldrsh r0, [r0, r1] cmp r0, 0 bne _0812CDF4 - ldr r4, _0812CDF0 @ =gBattleAnimPlayerMonIndex + ldr r4, _0812CDF0 @ =gBattleAnimBankAttacker b _0812CDF6 .align 2, 0 _0812CDE8: .4byte gTasks _0812CDEC: .4byte gBattleAnimArgs -_0812CDF0: .4byte gBattleAnimPlayerMonIndex +_0812CDF0: .4byte gBattleAnimBankAttacker _0812CDF4: - ldr r4, _0812CE3C @ =gBattleAnimEnemyMonIndex + ldr r4, _0812CE3C @ =gBattleAnimBankTarget _0812CDF6: ldrb r0, [r4] bl sub_8077FC0 @@ -1718,7 +1718,7 @@ _0812CE20: ldr r0, _0812CE44 @ =gUnknown_030042C0 b _0812CE4A .align 2, 0 -_0812CE3C: .4byte gBattleAnimEnemyMonIndex +_0812CE3C: .4byte gBattleAnimBankTarget _0812CE40: .4byte gBattleAnimArgs _0812CE44: .4byte gUnknown_030042C0 _0812CE48: @@ -1975,7 +1975,7 @@ sub_812D008: @ 812D008 movs r5, 0 strh r5, [r4, 0x8] strh r5, [r4, 0xA] - ldr r6, _0812D060 @ =gBattleAnimPlayerMonIndex + ldr r6, _0812D060 @ =gBattleAnimBankAttacker ldrb r0, [r6] movs r1, 0x2 bl sub_8077ABC @@ -1994,7 +1994,7 @@ sub_812D008: @ 812D008 strh r0, [r4, 0x12] strh r5, [r4, 0x14] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -2005,7 +2005,7 @@ sub_812D008: @ 812D008 bx r0 .align 2, 0 _0812D05C: .4byte gTasks -_0812D060: .4byte gBattleAnimPlayerMonIndex +_0812D060: .4byte gBattleAnimBankAttacker _0812D064: .4byte 0x0000ffec _0812D068: .4byte sub_812D06C thumb_func_end sub_812D008 @@ -2350,7 +2350,7 @@ _0812D2F0: bne _0812D33C ldr r1, _0812D344 @ =move_anim_8072740 adds r0, r5, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldrh r0, [r5, 0x24] ldrh r2, [r5, 0x20] adds r0, r2 @@ -2364,7 +2364,7 @@ _0812D2F0: strh r1, [r5, 0x26] movs r0, 0x14 strh r0, [r5, 0x2E] - ldr r4, _0812D348 @ =gBattleAnimEnemyMonIndex + ldr r4, _0812D348 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -2385,7 +2385,7 @@ _0812D33C: bx r0 .align 2, 0 _0812D344: .4byte move_anim_8072740 -_0812D348: .4byte gBattleAnimEnemyMonIndex +_0812D348: .4byte gBattleAnimBankTarget _0812D34C: .4byte sub_8078B34 thumb_func_end sub_812D294 @@ -2410,7 +2410,7 @@ sub_812D350: @ 812D350 _0812D370: .4byte gTasks _0812D374: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -2442,7 +2442,7 @@ sub_812D3AC: @ 812D3AC push {r4-r6,lr} adds r5, r0, 0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x2E @@ -2461,7 +2461,7 @@ _0812D3CC: beq _0812D490 b _0812D4AE _0812D3D6: - ldr r4, _0812D408 @ =gBattleAnimPlayerMonIndex + ldr r4, _0812D408 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -2483,7 +2483,7 @@ _0812D3D6: strh r0, [r5, 0x32] b _0812D484 .align 2, 0 -_0812D408: .4byte gBattleAnimPlayerMonIndex +_0812D408: .4byte gBattleAnimBankAttacker _0812D40C: ldrh r0, [r5, 0x30] adds r0, 0x60 @@ -2575,7 +2575,7 @@ _0812D4AE: sub_812D4B4: @ 812D4B4 push {r4,lr} adds r4, r0, 0 - ldr r0, _0812D4CC @ =gBattleAnimPlayerMonIndex + ldr r0, _0812D4CC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -2584,7 +2584,7 @@ sub_812D4B4: @ 812D4B4 ldr r0, _0812D4D0 @ =0x0000fff0 b _0812D4D8 .align 2, 0 -_0812D4CC: .4byte gBattleAnimPlayerMonIndex +_0812D4CC: .4byte gBattleAnimBankAttacker _0812D4D0: .4byte 0x0000fff0 _0812D4D4: movs r0, 0x80 @@ -2609,7 +2609,7 @@ sub_812D4EC: @ 812D4EC ldrh r0, [r4, 0x2E] adds r0, 0x48 strh r0, [r4, 0x2E] - ldr r0, _0812D50C @ =gBattleAnimPlayerMonIndex + ldr r0, _0812D50C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -2620,7 +2620,7 @@ sub_812D4EC: @ 812D4EC asrs r0, 20 b _0812D518 .align 2, 0 -_0812D50C: .4byte gBattleAnimPlayerMonIndex +_0812D50C: .4byte gBattleAnimBankAttacker _0812D510: ldrh r0, [r4, 0x2E] lsls r0, 16 @@ -2830,7 +2830,7 @@ sub_812D674: @ 812D674 cmp r0, 0 bne _0812D6B4 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -2874,7 +2874,7 @@ sub_812D6CC: @ 812D6CC cmp r0, 0 bne _0812D70C movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -2920,7 +2920,7 @@ _0812D736: movs r0, 0x90 lsls r0, 4 strh r0, [r4, 0x30] - ldr r0, _0812D75C @ =gBattleAnimPlayerMonIndex + ldr r0, _0812D75C @ =gBattleAnimBankAttacker ldrb r0, [r0] movs r1, 0x3 bl sub_8077ABC @@ -2932,7 +2932,7 @@ _0812D736: strh r0, [r4, 0x2E] b _0812D788 .align 2, 0 -_0812D75C: .4byte gBattleAnimPlayerMonIndex +_0812D75C: .4byte gBattleAnimBankAttacker _0812D760: ldrh r2, [r4, 0x30] lsls r1, r2, 16 @@ -2975,7 +2975,7 @@ sub_812D790: @ 812D790 cmp r0, 0 bne _0812D7D0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -3044,7 +3044,7 @@ _0812D834: ldr r1, _0812D850 @ =REG_MOSAIC movs r0, 0 strh r0, [r1] - ldr r0, _0812D854 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812D854 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -3055,7 +3055,7 @@ _0812D834: b _0812D85E .align 2, 0 _0812D850: .4byte REG_MOSAIC -_0812D854: .4byte gBattleAnimPlayerMonIndex +_0812D854: .4byte gBattleAnimBankAttacker _0812D858: .4byte REG_BG1CNT _0812D85C: ldr r0, _0812D87C @ =REG_BG2CNT @@ -3111,9 +3111,9 @@ _0812D8BC: .align 2, 0 _0812D8C0: .4byte REG_MOSAIC _0812D8C4: - ldr r5, _0812D8F4 @ =gBattleAnimPlayerMonIndex + ldr r5, _0812D8F4 @ =gBattleAnimBankAttacker ldrb r0, [r5] - ldr r1, _0812D8F8 @ =gBattleAnimEnemyMonIndex + ldr r1, _0812D8F8 @ =gBattleAnimBankTarget ldrb r1, [r1] mov r2, r8 lsls r4, r2, 2 @@ -3133,8 +3133,8 @@ _0812D8C4: movs r1, 0 b _0812D906 .align 2, 0 -_0812D8F4: .4byte gBattleAnimPlayerMonIndex -_0812D8F8: .4byte gBattleAnimEnemyMonIndex +_0812D8F4: .4byte gBattleAnimBankAttacker +_0812D8F8: .4byte gBattleAnimBankTarget _0812D8FC: ldrb r0, [r5] bl GetBankIdentity @@ -3145,7 +3145,7 @@ _0812D906: lsls r1, 2 adds r1, r0 ldr r2, _0812D9D0 @ =gBattleMonForms - ldr r0, _0812D9D4 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812D9D4 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r2 ldrb r0, [r0] @@ -3229,7 +3229,7 @@ _0812D9A2: beq _0812D9F0 ldr r3, _0812D9E4 @ =gSprites ldr r4, _0812D9E8 @ =gObjectBankIDs - ldr r2, _0812D9D4 @ =gBattleAnimPlayerMonIndex + ldr r2, _0812D9D4 @ =gBattleAnimBankAttacker ldrb r0, [r2] adds r0, r4 ldrb r1, [r0] @@ -3244,7 +3244,7 @@ _0812D9A2: .align 2, 0 _0812D9CC: .4byte gUnknown_081FAF4C _0812D9D0: .4byte gBattleMonForms -_0812D9D4: .4byte gBattleAnimPlayerMonIndex +_0812D9D4: .4byte gBattleAnimBankAttacker _0812D9D8: .4byte 0x040000d4 _0812D9DC: .4byte 0x84000200 _0812D9E0: .4byte 0x02019348 @@ -3254,7 +3254,7 @@ _0812D9EC: .4byte gSpriteAffineAnimTable_81E7C18 _0812D9F0: ldr r3, _0812DA34 @ =gSprites ldr r4, _0812DA38 @ =gObjectBankIDs - ldr r2, _0812DA3C @ =gBattleAnimPlayerMonIndex + ldr r2, _0812DA3C @ =gBattleAnimBankAttacker ldrb r0, [r2] adds r0, r4 ldrb r1, [r0] @@ -3290,7 +3290,7 @@ _0812DA2A: .align 2, 0 _0812DA34: .4byte gSprites _0812DA38: .4byte gObjectBankIDs -_0812DA3C: .4byte gBattleAnimPlayerMonIndex +_0812DA3C: .4byte gBattleAnimBankAttacker _0812DA40: .4byte gSpriteAffineAnimTable_81E7BEC _0812DA44: .4byte gTasks _0812DA48: @@ -3329,7 +3329,7 @@ _0812DA84: ldr r1, _0812DAA0 @ =REG_MOSAIC movs r0, 0 strh r0, [r1] - ldr r0, _0812DAA4 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812DAA4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -3340,7 +3340,7 @@ _0812DA84: b _0812DAAE .align 2, 0 _0812DAA0: .4byte REG_MOSAIC -_0812DAA4: .4byte gBattleAnimPlayerMonIndex +_0812DAA4: .4byte gBattleAnimBankAttacker _0812DAA8: .4byte REG_BG1CNT _0812DAAC: ldr r2, _0812DB08 @ =REG_BG2CNT @@ -3354,7 +3354,7 @@ _0812DAAE: lsls r0, 24 cmp r0, 0 bne _0812DAF4 - ldr r4, _0812DB0C @ =gBattleAnimPlayerMonIndex + ldr r4, _0812DB0C @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -3390,7 +3390,7 @@ _0812DAFA: bx r0 .align 2, 0 _0812DB08: .4byte REG_BG2CNT -_0812DB0C: .4byte gBattleAnimPlayerMonIndex +_0812DB0C: .4byte gBattleAnimBankAttacker _0812DB10: .4byte gTasks _0812DB14: .4byte 0x02017800 thumb_func_end sub_812D7E8 @@ -3403,7 +3403,7 @@ c3_80DFBE4: @ 812DB18 ldr r4, _0812DB48 @ =gBattleAnimArgs ldr r3, _0812DB4C @ =gSprites ldr r2, _0812DB50 @ =gObjectBankIDs - ldr r1, _0812DB54 @ =gBattleAnimPlayerMonIndex + ldr r1, _0812DB54 @ =gBattleAnimBankAttacker ldrb r1, [r1] adds r1, r2 ldrb r2, [r1] @@ -3424,7 +3424,7 @@ c3_80DFBE4: @ 812DB18 _0812DB48: .4byte gBattleAnimArgs _0812DB4C: .4byte gSprites _0812DB50: .4byte gObjectBankIDs -_0812DB54: .4byte gBattleAnimPlayerMonIndex +_0812DB54: .4byte gBattleAnimBankAttacker thumb_func_end c3_80DFBE4 thumb_func_start sub_812DB58 @@ -3433,9 +3433,9 @@ sub_812DB58: @ 812DB58 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0812DB7C @ =gBattleAnimPlayerMonIndex + ldr r0, _0812DB7C @ =gBattleAnimBankAttacker ldrb r0, [r0] - ldr r1, _0812DB80 @ =gBattleAnimEnemyMonIndex + ldr r1, _0812DB80 @ =gBattleAnimBankTarget ldrb r1, [r1] movs r2, 0x1 bl sub_8031FC4 @@ -3445,8 +3445,8 @@ sub_812DB58: @ 812DB58 pop {r0} bx r0 .align 2, 0 -_0812DB7C: .4byte gBattleAnimPlayerMonIndex -_0812DB80: .4byte gBattleAnimEnemyMonIndex +_0812DB7C: .4byte gBattleAnimBankAttacker +_0812DB80: .4byte gBattleAnimBankTarget thumb_func_end sub_812DB58 thumb_func_start sub_812DB84 @@ -3572,7 +3572,7 @@ _0812DC90: .4byte gUnknown_030042C0 _0812DC94: .4byte 0x0000ffc8 _0812DC98: .4byte gUnknown_030041B4 _0812DC9C: - ldr r0, _0812DCB4 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812DCB4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -3583,7 +3583,7 @@ _0812DC9C: adds r0, r4, 0 b _0812DCC6 .align 2, 0 -_0812DCB4: .4byte gBattleAnimPlayerMonIndex +_0812DCB4: .4byte gBattleAnimBankAttacker _0812DCB8: .4byte gUnknown_030042C0 _0812DCBC: .4byte 0x0000ff79 _0812DCC0: @@ -3856,7 +3856,7 @@ sub_812DEAC: @ 812DEAC lsls r0, 16 lsrs r5, r0, 16 _0812DED6: - ldr r4, _0812DFD0 @ =gBattleAnimPlayerMonIndex + ldr r4, _0812DFD0 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl sub_8077ABC @@ -3975,7 +3975,7 @@ _0812DED6: pop {r0} bx r0 .align 2, 0 -_0812DFD0: .4byte gBattleAnimPlayerMonIndex +_0812DFD0: .4byte gBattleAnimBankAttacker _0812DFD4: .4byte gBattleAnimArgs _0812DFD8: .4byte gBattleAnimSpriteTemplate_84025EC _0812DFDC: .4byte gSprites @@ -4292,7 +4292,7 @@ _0812E254: .4byte gUnknown_030042C0 _0812E258: .4byte 0x0000ffc8 _0812E25C: .4byte gUnknown_030041B4 _0812E260: - ldr r0, _0812E2A0 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812E2A0 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankIdentity lsls r0, 24 @@ -4326,7 +4326,7 @@ _0812E296: ldr r2, _0812E2B0 @ =0x0000ffec b _0812E2C8 .align 2, 0 -_0812E2A0: .4byte gBattleAnimEnemyMonIndex +_0812E2A0: .4byte gBattleAnimBankTarget _0812E2A4: .4byte gUnknown_030042C0 _0812E2A8: .4byte 0x0000ff65 _0812E2AC: .4byte 0x0000ff8d @@ -4377,7 +4377,7 @@ _0812E300: adds r5, r0, r1 movs r0, 0 strh r0, [r5, 0xE] - ldr r0, _0812E338 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812E338 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4397,7 +4397,7 @@ _0812E300: b _0812E356 .align 2, 0 _0812E334: .4byte gTasks -_0812E338: .4byte gBattleAnimEnemyMonIndex +_0812E338: .4byte gBattleAnimBankTarget _0812E33C: .4byte gUnknown_030042C0 _0812E340: .4byte gUnknown_08402604 _0812E344: @@ -4588,7 +4588,7 @@ sub_812E498: @ 812E498 cmp r0, 0 bne _0812E4D8 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -4643,7 +4643,7 @@ _0812E50E: ldrh r0, [r4, 0x32] adds r0, 0x80 strh r0, [r4, 0x32] - ldr r0, _0812E53C @ =gBattleAnimPlayerMonIndex + ldr r0, _0812E53C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4655,7 +4655,7 @@ _0812E50E: negs r0, r0 b _0812E546 .align 2, 0 -_0812E53C: .4byte gBattleAnimPlayerMonIndex +_0812E53C: .4byte gBattleAnimBankAttacker _0812E540: ldrh r0, [r4, 0x30] lsls r0, 16 @@ -4740,7 +4740,7 @@ _0812E5AC: subs r0, 0x1 strh r0, [r4, 0x14] ldrb r0, [r5] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -4748,12 +4748,12 @@ _0812E5AC: ldrsh r0, [r5, r1] cmp r0, 0 bne _0812E5F8 - ldr r0, _0812E5F4 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812E5F4 @ =gBattleAnimBankAttacker b _0812E5FA .align 2, 0 -_0812E5F4: .4byte gBattleAnimPlayerMonIndex +_0812E5F4: .4byte gBattleAnimBankAttacker _0812E5F8: - ldr r0, _0812E630 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812E630 @ =gBattleAnimBankTarget _0812E5FA: ldrb r0, [r0] bl GetBankSide @@ -4782,7 +4782,7 @@ _0812E628: pop {r0} bx r0 .align 2, 0 -_0812E630: .4byte gBattleAnimEnemyMonIndex +_0812E630: .4byte gBattleAnimBankTarget _0812E634: .4byte sub_812E638 thumb_func_end sub_812E568 @@ -4971,7 +4971,7 @@ _0812E798: sub_812E7A0: @ 812E7A0 push {r4,lr} adds r4, r0, 0 - ldr r0, _0812E7BC @ =gBattleAnimPlayerMonIndex + ldr r0, _0812E7BC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4983,7 +4983,7 @@ sub_812E7A0: @ 812E7A0 ldrh r0, [r1] b _0812E7CE .align 2, 0 -_0812E7BC: .4byte gBattleAnimPlayerMonIndex +_0812E7BC: .4byte gBattleAnimBankAttacker _0812E7C0: .4byte gBattleAnimArgs _0812E7C4: movs r0, 0xF0 @@ -5015,7 +5015,7 @@ sub_812E7F0: @ 812E7F0 ldrh r0, [r4, 0x2E] adds r0, 0x3 strh r0, [r4, 0x2E] - ldr r0, _0812E830 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812E830 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -5041,7 +5041,7 @@ _0812E822: bl Sin b _0812E858 .align 2, 0 -_0812E830: .4byte gBattleAnimPlayerMonIndex +_0812E830: .4byte gBattleAnimBankAttacker _0812E834: ldrh r1, [r4, 0x20] subs r1, 0x5 @@ -5091,7 +5091,7 @@ sub_812E860: @ 812E860 strh r0, [r4, 0x24] ldr r0, _0812E8AC @ =gBattleAnimArgs ldrb r0, [r0] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -5330,7 +5330,7 @@ sub_812EA4C: @ 812EA4C ldrsh r0, [r6, r2] cmp r0, 0 bne _0812EA80 - ldr r4, _0812EAA8 @ =gBattleAnimPlayerMonIndex + ldr r4, _0812EAA8 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -5364,7 +5364,7 @@ _0812EA80: b _0812EB0A .align 2, 0 _0812EAA4: .4byte gBattleAnimArgs -_0812EAA8: .4byte gBattleAnimPlayerMonIndex +_0812EAA8: .4byte gBattleAnimBankAttacker _0812EAAC: ldrh r1, [r5, 0x30] lsls r0, r1, 16 @@ -5441,20 +5441,20 @@ sub_812EB10: @ 812EB10 mov r8, r0 cmp r1, 0 bne _0812EB4C - ldr r0, _0812EB48 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812EB48 @ =gBattleAnimBankAttacker b _0812EB4E .align 2, 0 _0812EB40: .4byte gTasks _0812EB44: .4byte gBattleAnimArgs -_0812EB48: .4byte gBattleAnimPlayerMonIndex +_0812EB48: .4byte gBattleAnimBankAttacker _0812EB4C: - ldr r0, _0812EB88 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812EB88 @ =gBattleAnimBankTarget _0812EB4E: ldrb r0, [r0] strh r0, [r2, 0x1E] mov r1, r8 ldrb r0, [r1] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0812EB8C @ =gTasks @@ -5478,7 +5478,7 @@ _0812EB4E: lsls r2, r5, 4 b _0812EBF8 .align 2, 0 -_0812EB88: .4byte gBattleAnimEnemyMonIndex +_0812EB88: .4byte gBattleAnimBankTarget _0812EB8C: .4byte gTasks _0812EB90: cmp r0, 0x2 @@ -5893,7 +5893,7 @@ _0812EEA0: .4byte 0x00003f3f sub_812EEA4: @ 812EEA4 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _0812EEE0 @ =gBattleAnimPlayerMonIndex + ldr r5, _0812EEE0 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl sub_8077ABC @@ -5919,7 +5919,7 @@ sub_812EEA4: @ 812EEA4 pop {r0} bx r0 .align 2, 0 -_0812EEE0: .4byte gBattleAnimPlayerMonIndex +_0812EEE0: .4byte gBattleAnimBankAttacker _0812EEE4: .4byte gBattleAnimArgs _0812EEE8: .4byte sub_812EEEC thumb_func_end sub_812EEA4 @@ -5954,15 +5954,15 @@ sub_812EEEC: @ 812EEEC cmp r0, 0xC3 ble _0812EF38 _0812EF26: - ldr r0, _0812EF34 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812EF34 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079E90 subs r0, 0x1 b _0812EF42 .align 2, 0 -_0812EF34: .4byte gBattleAnimPlayerMonIndex +_0812EF34: .4byte gBattleAnimBankAttacker _0812EF38: - ldr r0, _0812EF84 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812EF84 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079E90 adds r0, 0x1 @@ -6000,7 +6000,7 @@ _0812EF42: strh r0, [r4, 0x38] b _0812EFB8 .align 2, 0 -_0812EF84: .4byte gBattleAnimPlayerMonIndex +_0812EF84: .4byte gBattleAnimBankAttacker _0812EF88: cmp r2, 0x1 bne _0812EFB8 @@ -6046,7 +6046,7 @@ sub_812EFC8: @ 812EFC8 lsrs r0, 24 str r0, [sp, 0x10] movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId bl IsContest lsls r0, 24 cmp r0, 0 @@ -6064,7 +6064,7 @@ sub_812EFC8: @ 812EFC8 .align 2, 0 _0812F000: .4byte 0x02019348 _0812F004: - ldr r0, _0812F070 @ =gBattleAnimPlayerMonIndex + ldr r0, _0812F070 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -6073,7 +6073,7 @@ _0812F004: movs r0, 0 str r0, [sp, 0x14] ldr r6, _0812F074 @ =gBattlePartyID - ldr r4, _0812F078 @ =gBattleAnimEnemyMonIndex + ldr r4, _0812F078 @ =gBattleAnimBankTarget ldrb r0, [r4] lsls r0, 1 adds r0, r6 @@ -6114,9 +6114,9 @@ _0812F004: adds r0, r7 b _0812F092 .align 2, 0 -_0812F070: .4byte gBattleAnimPlayerMonIndex +_0812F070: .4byte gBattleAnimBankAttacker _0812F074: .4byte gBattlePartyID -_0812F078: .4byte gBattleAnimEnemyMonIndex +_0812F078: .4byte gBattleAnimBankTarget _0812F07C: .4byte gPlayerParty _0812F080: .4byte 0x02017800 _0812F084: @@ -6145,7 +6145,7 @@ _0812F0AC: movs r2, 0x1 str r2, [sp, 0x14] ldr r6, _0812F10C @ =gBattlePartyID - ldr r4, _0812F110 @ =gBattleAnimEnemyMonIndex + ldr r4, _0812F110 @ =gBattleAnimBankTarget ldrb r0, [r4] lsls r0, 1 adds r0, r6 @@ -6188,7 +6188,7 @@ _0812F0AC: b _0812F12C .align 2, 0 _0812F10C: .4byte gBattlePartyID -_0812F110: .4byte gBattleAnimEnemyMonIndex +_0812F110: .4byte gBattleAnimBankTarget _0812F114: .4byte gEnemyParty _0812F118: .4byte 0x02017800 _0812F11C: .4byte gPlayerParty @@ -6212,12 +6212,12 @@ _0812F13A: _0812F13C: mov r10, r3 _0812F13E: - ldr r0, _0812F21C @ =gBattleAnimPlayerMonIndex + ldr r0, _0812F21C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079ED4 lsls r0, 24 lsrs r7, r0, 24 - ldr r5, _0812F21C @ =gBattleAnimPlayerMonIndex + ldr r5, _0812F21C @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_8077ABC @@ -6318,7 +6318,7 @@ _0812F13E: bx r0 .align 2, 0 _0812F218: .4byte 0x0000ffec -_0812F21C: .4byte gBattleAnimPlayerMonIndex +_0812F21C: .4byte gBattleAnimBankAttacker _0812F220: .4byte gSprites _0812F224: .4byte 0x00007fff _0812F228: .4byte REG_BLDCNT @@ -6455,14 +6455,14 @@ sub_812F314: @ 812F314 ldrsh r0, [r0, r1] cmp r0, 0 bne _0812F340 - ldr r0, _0812F33C @ =gBattleAnimPlayerMonIndex + ldr r0, _0812F33C @ =gBattleAnimBankAttacker b _0812F342 .align 2, 0 _0812F334: .4byte gTasks _0812F338: .4byte gBattleAnimArgs -_0812F33C: .4byte gBattleAnimPlayerMonIndex +_0812F33C: .4byte gBattleAnimBankAttacker _0812F340: - ldr r0, _0812F3C0 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812F3C0 @ =gBattleAnimBankTarget _0812F342: ldrb r5, [r0] movs r6, 0 @@ -6504,7 +6504,7 @@ _0812F388: strh r0, [r4, 0x24] ldr r0, _0812F3C4 @ =gBattleAnimArgs ldrb r0, [r0] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -6525,7 +6525,7 @@ _0812F388: ldr r0, _0812F3D8 @ =gUnknown_030041B4 b _0812F3EE .align 2, 0 -_0812F3C0: .4byte gBattleAnimEnemyMonIndex +_0812F3C0: .4byte gBattleAnimBankTarget _0812F3C4: .4byte gBattleAnimArgs _0812F3C8: .4byte REG_BG1HOFS _0812F3CC: .4byte REG_BLDCNT @@ -6975,7 +6975,7 @@ sub_812F724: @ 812F724 strh r0, [r4, 0x8] ldr r0, _0812F760 @ =gBattleAnimArgs ldrb r0, [r0] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -7250,7 +7250,7 @@ sub_812F948: @ 812F948 ldrb r1, [r6] adds r0, r5, 0 bl StartSpriteAffineAnim - ldr r0, _0812F9A4 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812F9A4 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -7260,7 +7260,7 @@ sub_812F948: @ 812F948 negs r0, r0 strh r0, [r6, 0x2] _0812F96E: - ldr r4, _0812F9A8 @ =gBattleAnimPlayerMonIndex + ldr r4, _0812F9A8 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -7284,8 +7284,8 @@ _0812F96E: bx r0 .align 2, 0 _0812F9A0: .4byte gBattleAnimArgs -_0812F9A4: .4byte gBattleAnimEnemyMonIndex -_0812F9A8: .4byte gBattleAnimPlayerMonIndex +_0812F9A4: .4byte gBattleAnimBankTarget +_0812F9A8: .4byte gBattleAnimBankAttacker _0812F9AC: .4byte sub_80DA48C thumb_func_end sub_812F948 @@ -7674,7 +7674,7 @@ sub_812FC68: @ 812FC68 mov r1, r8 adds r4, r0, r1 ldr r1, _0812FCCC @ =gObjectBankIDs - ldr r2, _0812FCD0 @ =gBattleAnimPlayerMonIndex + ldr r2, _0812FCD0 @ =gBattleAnimBankAttacker ldrb r0, [r2] adds r0, r1 ldrb r0, [r0] @@ -7711,7 +7711,7 @@ _0812FCAC: .align 2, 0 _0812FCC8: .4byte gTasks _0812FCCC: .4byte gObjectBankIDs -_0812FCD0: .4byte gBattleAnimPlayerMonIndex +_0812FCD0: .4byte gBattleAnimBankAttacker _0812FCD4: .4byte gBattleAnimArgs _0812FCD8: .4byte 0xffff8000 _0812FCDC: @@ -7822,14 +7822,14 @@ _0812FD9C: ldrsh r0, [r4, r1] cmp r0, 0 bne _0812FDC0 - ldr r0, _0812FDBC @ =gBattleAnimPlayerMonIndex + ldr r0, _0812FDBC @ =gBattleAnimBankAttacker b _0812FDC2 .align 2, 0 _0812FDB4: .4byte gTasks _0812FDB8: .4byte gBattleAnimArgs -_0812FDBC: .4byte gBattleAnimPlayerMonIndex +_0812FDBC: .4byte gBattleAnimBankAttacker _0812FDC0: - ldr r0, _0812FE10 @ =gBattleAnimEnemyMonIndex + ldr r0, _0812FE10 @ =gBattleAnimBankTarget _0812FDC2: ldrb r4, [r0] adds r0, r4, 0 @@ -7851,7 +7851,7 @@ _0812FDC2: strh r0, [r5, 0x14] ldr r0, _0812FE14 @ =gBattleAnimArgs ldrb r0, [r0] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -7865,7 +7865,7 @@ _0812FDC2: pop {r0} bx r0 .align 2, 0 -_0812FE10: .4byte gBattleAnimEnemyMonIndex +_0812FE10: .4byte gBattleAnimBankTarget _0812FE14: .4byte gBattleAnimArgs _0812FE18: .4byte gUnknown_084028AC _0812FE1C: .4byte sub_812FE20 @@ -8124,7 +8124,7 @@ sub_812FFE4: @ 812FFE4 ldrh r0, [r1, 0x2] strh r0, [r4, 0xA] ldrb r0, [r1] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 ldr r2, _08130034 @ =gSprites @@ -8215,7 +8215,7 @@ sub_81300A4: @ 81300A4 lsrs r0, 24 movs r2, 0xD0 lsls r2, 1 - ldr r1, _081300E0 @ =gBattleAnimPlayerMonIndex + ldr r1, _081300E0 @ =gBattleAnimBankAttacker ldrb r3, [r1] ldr r1, _081300E4 @ =gBattleAnimArgs ldrb r1, [r1] @@ -8238,7 +8238,7 @@ sub_81300A4: @ 81300A4 pop {r0} bx r0 .align 2, 0 -_081300E0: .4byte gBattleAnimPlayerMonIndex +_081300E0: .4byte gBattleAnimBankAttacker _081300E4: .4byte gBattleAnimArgs _081300E8: .4byte gUnknown_08D2E014 _081300EC: .4byte gUnknown_08D2E170 @@ -8249,7 +8249,7 @@ _081300F0: .4byte gUnknown_08D2E150 sub_81300F4: @ 81300F4 push {r4-r6,lr} adds r5, r0, 0 - ldr r6, _0813014C @ =gBattleAnimPlayerMonIndex + ldr r6, _0813014C @ =gBattleAnimBankAttacker ldrb r0, [r6] bl GetBankSide lsls r0, 24 @@ -8289,7 +8289,7 @@ _08130110: strh r0, [r5, 0x30] b _08130180 .align 2, 0 -_0813014C: .4byte gBattleAnimPlayerMonIndex +_0813014C: .4byte gBattleAnimBankAttacker _08130150: .4byte gBattleAnimArgs _08130154: .4byte 0x0000fd80 _08130158: @@ -8314,7 +8314,7 @@ _08130172: lsls r0, 2 strh r0, [r5, 0x2E] _08130180: - ldr r0, _081301AC @ =gBattleAnimPlayerMonIndex + ldr r0, _081301AC @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -8336,7 +8336,7 @@ _081301A0: pop {r0} bx r0 .align 2, 0 -_081301AC: .4byte gBattleAnimPlayerMonIndex +_081301AC: .4byte gBattleAnimBankAttacker _081301B0: .4byte sub_81301B4 thumb_func_end sub_81300F4 @@ -8403,7 +8403,7 @@ _0813021C: strh r0, [r6, 0x14] strh r1, [r6, 0x16] _08130226: - ldr r5, _0813025C @ =gBattleAnimPlayerMonIndex + ldr r5, _0813025C @ =gBattleAnimBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 @@ -8428,7 +8428,7 @@ _08130254: adds r0, r4, r0 b _08130284 .align 2, 0 -_0813025C: .4byte gBattleAnimPlayerMonIndex +_0813025C: .4byte gBattleAnimBankAttacker _08130260: ldrb r0, [r5] movs r1, 0x2 @@ -8449,7 +8449,7 @@ _08130280: subs r0, r4, r0 _08130284: strh r0, [r6, 0x1E] - ldr r5, _081302D8 @ =gBattleAnimPlayerMonIndex + ldr r5, _081302D8 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0x3 bl sub_8077ABC @@ -8468,7 +8468,7 @@ _081302A8: asrs r0, 2 subs r0, r4, r0 strh r0, [r6, 0x20] - ldr r4, _081302DC @ =gBattleAnimEnemyMonIndex + ldr r4, _081302DC @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -8487,8 +8487,8 @@ _081302A8: pop {r0} bx r0 .align 2, 0 -_081302D8: .4byte gBattleAnimPlayerMonIndex -_081302DC: .4byte gBattleAnimEnemyMonIndex +_081302D8: .4byte gBattleAnimBankAttacker +_081302DC: .4byte gBattleAnimBankTarget _081302E0: .4byte sub_81302E4 thumb_func_end sub_81301EC @@ -8810,7 +8810,7 @@ sub_813051C: @ 813051C strh r0, [r4, 0x2E] ldr r1, _0813054C @ =move_anim_8072740 adds r0, r4, 0 - bl oamt_set_x3A_32 + bl StoreSpriteCallbackInData6 ldr r0, _08130550 @ =sub_8078CC0 str r0, [r4, 0x1C] pop {r4} @@ -8837,7 +8837,7 @@ sub_8130554: @ 8130554 lsls r0, 3 ldr r1, _08130674 @ =gTasks adds r7, r0, r1 - ldr r0, _08130678 @ =gBattleAnimPlayerMonIndex + ldr r0, _08130678 @ =gBattleAnimBankAttacker mov r10, r0 ldrb r0, [r0] movs r1, 0x2 @@ -8852,7 +8852,7 @@ sub_8130554: @ 8130554 lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x20] - ldr r0, _0813067C @ =gBattleAnimEnemyMonIndex + ldr r0, _0813067C @ =gBattleAnimBankTarget mov r8, r0 ldrb r0, [r0] movs r1, 0x2 @@ -8962,8 +8962,8 @@ _0813066E: b _08130696 .align 2, 0 _08130674: .4byte gTasks -_08130678: .4byte gBattleAnimPlayerMonIndex -_0813067C: .4byte gBattleAnimEnemyMonIndex +_08130678: .4byte gBattleAnimBankAttacker +_0813067C: .4byte gBattleAnimBankTarget _08130680: .4byte gSpriteTemplate_84029AC _08130684: .4byte gSprites _08130688: .4byte 0x0000ffe0 @@ -9129,13 +9129,13 @@ sub_81307B0: @ 81307B0 adds r6, r0, 0 cmp r1, 0 bne _081307CC - ldr r0, _081307C8 @ =gBattleAnimPlayerMonIndex + ldr r0, _081307C8 @ =gBattleAnimBankAttacker b _081307CE .align 2, 0 _081307C4: .4byte gBattleAnimArgs -_081307C8: .4byte gBattleAnimPlayerMonIndex +_081307C8: .4byte gBattleAnimBankAttacker _081307CC: - ldr r0, _08130834 @ =gBattleAnimEnemyMonIndex + ldr r0, _08130834 @ =gBattleAnimBankTarget _081307CE: ldrb r5, [r0] ldrh r2, [r4, 0x4] @@ -9188,7 +9188,7 @@ _081307FC: subs r0, 0x8 b _0813084A .align 2, 0 -_08130834: .4byte gBattleAnimEnemyMonIndex +_08130834: .4byte gBattleAnimBankTarget _08130838: .4byte 0x000003ff _0813083C: .4byte 0xfffffc00 _08130840: @@ -9337,7 +9337,7 @@ _08130934: ldrh r0, [r2, 0x2] strh r0, [r4, 0x8] ldrb r0, [r2] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -9461,13 +9461,13 @@ sub_8130A2C: @ 8130A2C ldrsh r0, [r0, r1] cmp r0, 0 bne _08130A48 - ldr r4, _08130A44 @ =gBattleAnimPlayerMonIndex + ldr r4, _08130A44 @ =gBattleAnimBankAttacker b _08130A4A .align 2, 0 _08130A40: .4byte gBattleAnimArgs -_08130A44: .4byte gBattleAnimPlayerMonIndex +_08130A44: .4byte gBattleAnimBankAttacker _08130A48: - ldr r4, _08130A88 @ =gBattleAnimEnemyMonIndex + ldr r4, _08130A88 @ =gBattleAnimBankTarget _08130A4A: ldrb r0, [r4] movs r1, 0x2 @@ -9500,7 +9500,7 @@ _08130A6E: pop {r0} bx r0 .align 2, 0 -_08130A88: .4byte gBattleAnimEnemyMonIndex +_08130A88: .4byte gBattleAnimBankTarget _08130A8C: .4byte gBattleAnimArgs _08130A90: .4byte sub_8130A94 thumb_func_end sub_8130A2C @@ -9859,7 +9859,7 @@ sub_8130D20: @ 8130D20 ldr r0, _08130D7C @ =gTasks adds r6, r1, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x26] @@ -9872,7 +9872,7 @@ sub_8130D20: @ 8130D20 lsrs r7, r0, 24 cmp r7, 0x1 bne _08130D8C - ldr r5, _08130D80 @ =gBattleAnimPlayerMonIndex + ldr r5, _08130D80 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_8077ABC @@ -9892,14 +9892,14 @@ sub_8130D20: @ 8130D20 b _08130DAC .align 2, 0 _08130D7C: .4byte gTasks -_08130D80: .4byte gBattleAnimPlayerMonIndex +_08130D80: .4byte gBattleAnimBankAttacker _08130D84: ldr r0, _08130D88 @ =0x0000ffff b _08130DAA .align 2, 0 _08130D88: .4byte 0x0000ffff _08130D8C: - ldr r0, _08130DA0 @ =gBattleAnimPlayerMonIndex + ldr r0, _08130DA0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -9908,7 +9908,7 @@ _08130D8C: ldr r0, _08130DA4 @ =0x0000ffff b _08130DAA .align 2, 0 -_08130DA0: .4byte gBattleAnimPlayerMonIndex +_08130DA0: .4byte gBattleAnimBankAttacker _08130DA4: .4byte 0x0000ffff _08130DA8: movs r0, 0x1 @@ -10153,13 +10153,13 @@ sub_8130F5C: @ 8130F5C adds r0, r4, 0 movs r1, 0x1 bl sub_80787B0 - ldr r0, _08130F7C @ =gBattleAnimPlayerMonIndex + ldr r0, _08130F7C @ =gBattleAnimBankAttacker b _08130F82 .align 2, 0 _08130F78: .4byte gBattleAnimArgs -_08130F7C: .4byte gBattleAnimPlayerMonIndex +_08130F7C: .4byte gBattleAnimBankAttacker _08130F80: - ldr r0, _08130FD8 @ =gBattleAnimEnemyMonIndex + ldr r0, _08130FD8 @ =gBattleAnimBankTarget _08130F82: ldrb r0, [r0] strh r0, [r4, 0x3C] @@ -10204,7 +10204,7 @@ _08130FA6: pop {r0} bx r0 .align 2, 0 -_08130FD8: .4byte gBattleAnimEnemyMonIndex +_08130FD8: .4byte gBattleAnimBankTarget _08130FDC: .4byte sub_8130FE0 thumb_func_end sub_8130F5C @@ -10545,7 +10545,7 @@ _08131260: .4byte gSpriteTemplate_8402500 sub_8131264: @ 8131264 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _081312A0 @ =gBattleAnimEnemyMonIndex + ldr r4, _081312A0 @ =gBattleAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -10571,7 +10571,7 @@ _08131290: subs r1, r0 b _081312B6 .align 2, 0 -_081312A0: .4byte gBattleAnimEnemyMonIndex +_081312A0: .4byte gBattleAnimBankTarget _081312A4: .4byte gBattleAnimArgs _081312A8: ldr r2, _081312DC @ =gBattleAnimArgs @@ -10615,7 +10615,7 @@ sub_81312E4: @ 81312E4 lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r5, r0, 24 adds r2, r5, 0 @@ -10686,7 +10686,7 @@ _08131378: .align 2, 0 _08131380: .4byte gSprites _08131384: - ldr r4, _081313F4 @ =gBattleAnimPlayerMonIndex + ldr r4, _081313F4 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0 bl refresh_graphics_maybe @@ -10743,7 +10743,7 @@ _081313E8: pop {r0} bx r0 .align 2, 0 -_081313F4: .4byte gBattleAnimPlayerMonIndex +_081313F4: .4byte gBattleAnimBankAttacker _081313F8: .4byte gSprites _081313FC: .4byte gObjectBankIDs _08131400: .4byte gSpriteAffineAnimTable_81E7C18 @@ -10756,7 +10756,7 @@ sub_8131408: @ 8131408 lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r3, r0, 24 ldr r1, _08131434 @ =gTasks @@ -10932,7 +10932,7 @@ _08131560: .4byte gSprites sub_8131564: @ 8131564 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _08131588 @ =gBattleAnimEnemyMonIndex + ldr r4, _08131588 @ =gBattleAnimBankTarget ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -10947,7 +10947,7 @@ sub_8131564: @ 8131564 ldr r4, _0813158C @ =0x0000ff70 b _081315A0 .align 2, 0 -_08131588: .4byte gBattleAnimEnemyMonIndex +_08131588: .4byte gBattleAnimBankTarget _0813158C: .4byte 0x0000ff70 _08131590: ldrb r0, [r4] @@ -10958,7 +10958,7 @@ _08131590: strb r0, [r1] ldr r4, _081315BC @ =0x0000ffa0 _081315A0: - ldr r0, _081315C0 @ =gBattleAnimEnemyMonIndex + ldr r0, _081315C0 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x3 bl sub_8077ABC @@ -10973,7 +10973,7 @@ _081315A0: bx r0 .align 2, 0 _081315BC: .4byte 0x0000ffa0 -_081315C0: .4byte gBattleAnimEnemyMonIndex +_081315C0: .4byte gBattleAnimBankTarget _081315C4: .4byte sub_81315C8 thumb_func_end sub_8131564 @@ -11474,7 +11474,7 @@ _0813197C: .4byte _08131DC4 _08131990: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, _081319DC @ =gTasks @@ -11489,7 +11489,7 @@ _08131990: ldrh r1, [r6, 0xA] adds r0, r1 strh r0, [r6, 0xA] - ldr r0, _081319E0 @ =gBattleAnimPlayerMonIndex + ldr r0, _081319E0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11510,7 +11510,7 @@ _08131990: b _08131A02 .align 2, 0 _081319DC: .4byte gTasks -_081319E0: .4byte gBattleAnimPlayerMonIndex +_081319E0: .4byte gBattleAnimBankAttacker _081319E4: .4byte gSprites _081319E8: ldr r3, _08131A3C @ =gSprites @@ -11570,7 +11570,7 @@ _08131A44: ldr r3, [r0, 0xC] mov r9, r3 ldrh r5, [r0] - ldr r0, _08131A70 @ =gBattleAnimPlayerMonIndex + ldr r0, _08131A70 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl sub_8079E90 lsls r0, 24 @@ -11579,9 +11579,9 @@ _08131A44: b _08131B92 .align 2, 0 _08131A6C: .4byte 0x02019348 -_08131A70: .4byte gBattleAnimPlayerMonIndex +_08131A70: .4byte gBattleAnimBankAttacker _08131A74: - ldr r4, _08131AD4 @ =gBattleAnimPlayerMonIndex + ldr r4, _08131AD4 @ =gBattleAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 @@ -11626,7 +11626,7 @@ _08131A74: lsrs r5, r0, 16 b _08131AE6 .align 2, 0 -_08131AD4: .4byte gBattleAnimPlayerMonIndex +_08131AD4: .4byte gBattleAnimBankAttacker _08131AD8: .4byte gBattlePartyID _08131ADC: .4byte gPlayerParty _08131AE0: .4byte 0x02017800 @@ -11634,7 +11634,7 @@ _08131AE4: ldrh r5, [r1, 0x2] _08131AE6: movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _08131B0C @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -11700,7 +11700,7 @@ _08131B70: ldrh r5, [r1, 0x2] _08131B72: movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _08131C04 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -11717,7 +11717,7 @@ _08131B72: _08131B92: ldr r6, _08131C08 @ =0x0000ffe0 _08131B94: - ldr r0, _08131C0C @ =gBattleAnimEnemyMonIndex + ldr r0, _08131C0C @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_8077ABC @@ -11737,7 +11737,7 @@ _08131B94: bl sub_8079F44 lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _08131C10 @ =gBattleAnimPlayerMonIndex + ldr r0, _08131C10 @ =gBattleAnimBankAttacker ldrb r0, [r0] lsls r0, 2 ldr r1, _08131C14 @ =0x02017800 @@ -11773,8 +11773,8 @@ _08131BF2: .align 2, 0 _08131C04: .4byte gSprites _08131C08: .4byte 0x0000ffe0 -_08131C0C: .4byte gBattleAnimEnemyMonIndex -_08131C10: .4byte gBattleAnimPlayerMonIndex +_08131C0C: .4byte gBattleAnimBankTarget +_08131C10: .4byte gBattleAnimBankAttacker _08131C14: .4byte 0x02017800 _08131C18: .4byte 0x00007fff _08131C1C: .4byte gTasks @@ -11794,7 +11794,7 @@ _08131C20: ldrh r2, [r6, 0xA] adds r0, r2 strh r0, [r6, 0xA] - ldr r0, _08131C70 @ =gBattleAnimPlayerMonIndex + ldr r0, _08131C70 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11817,7 +11817,7 @@ _08131C20: b _08131C8E .align 2, 0 _08131C6C: .4byte gTasks -_08131C70: .4byte gBattleAnimPlayerMonIndex +_08131C70: .4byte gBattleAnimBankAttacker _08131C74: .4byte gSprites _08131C78: ldr r2, _08131CDC @ =gSprites @@ -11851,7 +11851,7 @@ _08131C8E: ldrsh r0, [r6, r1] cmp r0, 0 bne _08131D0E - ldr r0, _08131CE4 @ =gBattleAnimPlayerMonIndex + ldr r0, _08131CE4 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11859,7 +11859,7 @@ _08131C8E: bne _08131CEC lsls r4, r5, 16 asrs r4, 16 - ldr r0, _08131CE8 @ =gBattleAnimEnemyMonIndex + ldr r0, _08131CE8 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0 bl sub_8077ABC @@ -11871,12 +11871,12 @@ _08131C8E: .align 2, 0 _08131CDC: .4byte gSprites _08131CE0: .4byte gTasks -_08131CE4: .4byte gBattleAnimPlayerMonIndex -_08131CE8: .4byte gBattleAnimEnemyMonIndex +_08131CE4: .4byte gBattleAnimBankAttacker +_08131CE8: .4byte gBattleAnimBankTarget _08131CEC: lsls r4, r5, 16 asrs r4, 16 - ldr r0, _08131D30 @ =gBattleAnimEnemyMonIndex + ldr r0, _08131D30 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0 bl sub_8077ABC @@ -11911,13 +11911,13 @@ _08131D20: strh r0, [r1, 0xA] b _08131DB6 .align 2, 0 -_08131D30: .4byte gBattleAnimEnemyMonIndex +_08131D30: .4byte gBattleAnimBankTarget _08131D34: .4byte gBattleAnimArgs _08131D38: .4byte 0x0000ffff _08131D3C: .4byte gTasks _08131D40: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, _08131D8C @ =gTasks @@ -11935,7 +11935,7 @@ _08131D40: ldr r5, _08131D90 @ =gSprites adds r0, r5 bl sub_807A0F4 - ldr r0, _08131D94 @ =gBattleAnimPlayerMonIndex + ldr r0, _08131D94 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -11954,7 +11954,7 @@ _08131D40: .align 2, 0 _08131D8C: .4byte gTasks _08131D90: .4byte gSprites -_08131D94: .4byte gBattleAnimPlayerMonIndex +_08131D94: .4byte gBattleAnimBankAttacker _08131D98: lsls r0, r7, 4 adds r0, r7 @@ -11981,7 +11981,7 @@ _08131DB6: _08131DC0: .4byte gTasks _08131DC4: movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, _08131E38 @ =gTasks @@ -11996,7 +11996,7 @@ _08131DC4: ldrh r3, [r2, 0xA] adds r0, r3 strh r0, [r2, 0xA] - ldr r0, _08131E3C @ =gBattleAnimPlayerMonIndex + ldr r0, _08131E3C @ =gBattleAnimBankAttacker mov r10, r0 ldrb r0, [r0] str r2, [sp, 0x10] @@ -12036,7 +12036,7 @@ _08131DC4: b _08131E7C .align 2, 0 _08131E38: .4byte gTasks -_08131E3C: .4byte gBattleAnimPlayerMonIndex +_08131E3C: .4byte gBattleAnimBankAttacker _08131E40: .4byte gSprites _08131E44: ldr r1, _08131EB0 @ =gSprites @@ -12124,7 +12124,7 @@ _08131ECA: asrs r1, 24 movs r0, 0x7A bl PlaySE12WithPanning - ldr r0, _08131F54 @ =gBattleAnimEnemyMonIndex + ldr r0, _08131F54 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0x1 bl sub_8077ABC @@ -12144,7 +12144,7 @@ _08131ECA: negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, _08131F5C @ =gBattleAnimPlayerMonIndex + ldr r0, _08131F5C @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12156,7 +12156,7 @@ _08131ECA: cmp r0, 0 bne _08131FF4 movs r0, 0x1 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId ldr r2, _08131F60 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -12173,9 +12173,9 @@ _08131ECA: b _08131FF4 .align 2, 0 _08131F50: .4byte gBattleAnimArgs -_08131F54: .4byte gBattleAnimEnemyMonIndex +_08131F54: .4byte gBattleAnimBankTarget _08131F58: .4byte 0x0000ffe0 -_08131F5C: .4byte gBattleAnimPlayerMonIndex +_08131F5C: .4byte gBattleAnimBankAttacker _08131F60: .4byte gSprites _08131F64: adds r0, r4, 0 @@ -12218,7 +12218,7 @@ _08131FA6: ldrh r1, [r4, 0x32] adds r0, r1 strh r0, [r4, 0x32] - ldr r0, _08131FD0 @ =gBattleAnimPlayerMonIndex + ldr r0, _08131FD0 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12233,7 +12233,7 @@ _08131FA6: adds r1, r2, 0 b _08131FE0 .align 2, 0 -_08131FD0: .4byte gBattleAnimPlayerMonIndex +_08131FD0: .4byte gBattleAnimBankAttacker _08131FD4: ldrh r1, [r4, 0x32] lsls r0, r1, 16 @@ -12290,14 +12290,14 @@ _0813202C: .4byte _08132104 .4byte _0813216A _08132040: - ldr r0, _08132084 @ =gBattleAnimPlayerMonIndex + ldr r0, _08132084 @ =gBattleAnimBankAttacker ldrb r0, [r0] movs r1, 0 bl sub_8077ABC lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 - ldr r0, _08132088 @ =gBattleAnimEnemyMonIndex + ldr r0, _08132088 @ =gBattleAnimBankTarget ldrb r0, [r0] movs r1, 0 bl sub_8077ABC @@ -12323,12 +12323,12 @@ _08132076: strh r0, [r1, 0x26] b _08132188 .align 2, 0 -_08132084: .4byte gBattleAnimPlayerMonIndex -_08132088: .4byte gBattleAnimEnemyMonIndex +_08132084: .4byte gBattleAnimBankAttacker +_08132088: .4byte gBattleAnimBankTarget _0813208C: .4byte gTasks _08132090: ldr r1, _081320CC @ =gObjectBankIDs - ldr r0, _081320D0 @ =gBattleAnimPlayerMonIndex + ldr r0, _081320D0 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -12359,7 +12359,7 @@ _08132090: b _0813215E .align 2, 0 _081320CC: .4byte gObjectBankIDs -_081320D0: .4byte gBattleAnimPlayerMonIndex +_081320D0: .4byte gBattleAnimBankAttacker _081320D4: .4byte gSprites _081320D8: movs r3, 0x20 @@ -12387,7 +12387,7 @@ _081320EC: b _08132188 _08132104: ldr r1, _08132144 @ =gObjectBankIDs - ldr r0, _08132148 @ =gBattleAnimPlayerMonIndex + ldr r0, _08132148 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -12420,7 +12420,7 @@ _08132104: b _08132162 .align 2, 0 _08132144: .4byte gObjectBankIDs -_08132148: .4byte gBattleAnimPlayerMonIndex +_08132148: .4byte gBattleAnimBankAttacker _0813214C: .4byte gSprites _08132150: movs r3, 0x20 @@ -12440,7 +12440,7 @@ _08132162: b _08132188 _0813216A: ldr r1, _08132190 @ =gObjectBankIDs - ldr r0, _08132194 @ =gBattleAnimPlayerMonIndex + ldr r0, _08132194 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -12459,7 +12459,7 @@ _08132188: bx r0 .align 2, 0 _08132190: .4byte gObjectBankIDs -_08132194: .4byte gBattleAnimPlayerMonIndex +_08132194: .4byte gBattleAnimBankAttacker _08132198: .4byte gSprites thumb_func_end sub_8131FFC @@ -12474,12 +12474,12 @@ sub_813219C: @ 813219C ldr r0, _08132204 @ =gTasks adds r4, r1, r0 movs r0, 0 - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 movs r5, 0 strh r0, [r4, 0xE] - ldr r0, _08132208 @ =gBattleAnimPlayerMonIndex + ldr r0, _08132208 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12518,7 +12518,7 @@ _081321D0: bx r0 .align 2, 0 _08132204: .4byte gTasks -_08132208: .4byte gBattleAnimPlayerMonIndex +_08132208: .4byte gBattleAnimBankAttacker _0813220C: .4byte gSprites _08132210: .4byte sub_8132214 thumb_func_end sub_813219C @@ -12662,7 +12662,7 @@ _08132312: sub_8132318: @ 8132318 push {r4,lr} adds r4, r0, 0 - ldr r0, _0813236C @ =gBattleAnimEnemyMonIndex + ldr r0, _0813236C @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12699,14 +12699,14 @@ _0813235E: pop {r0} bx r0 .align 2, 0 -_0813236C: .4byte gBattleAnimEnemyMonIndex +_0813236C: .4byte gBattleAnimBankTarget thumb_func_end sub_8132318 thumb_func_start sub_8132370 sub_8132370: @ 8132370 push {r4,lr} adds r4, r0, 0 - ldr r0, _081323A8 @ =gBattleAnimEnemyMonIndex + ldr r0, _081323A8 @ =gBattleAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -12730,7 +12730,7 @@ sub_8132370: @ 8132370 bl StartSpriteAffineAnim b _081323CE .align 2, 0 -_081323A8: .4byte gBattleAnimEnemyMonIndex +_081323A8: .4byte gBattleAnimBankTarget _081323AC: .4byte gBattleAnimArgs _081323B0: .4byte 0x0000fff5 _081323B4: @@ -12762,7 +12762,7 @@ _081323DC: .4byte sub_8132318 sub_81323E0: @ 81323E0 push {r4,r5,lr} adds r5, r0, 0 - ldr r4, _08132424 @ =gBattleAnimPlayerMonIndex + ldr r4, _08132424 @ =gBattleAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl sub_8077ABC @@ -12793,7 +12793,7 @@ _0813240A: pop {r0} bx r0 .align 2, 0 -_08132424: .4byte gBattleAnimPlayerMonIndex +_08132424: .4byte gBattleAnimBankAttacker _08132428: .4byte sub_8132430 _0813242C: .4byte REG_BLDALPHA thumb_func_end sub_81323E0 @@ -12997,7 +12997,7 @@ sub_813257C: @ 813257C strh r0, [r4, 0x8] ldr r0, _081325B8 @ =gBattleAnimArgs ldrb r0, [r0] - bl obj_id_for_side_relative_to_move + bl GetAnimBankSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/asm/battle_anim_813F0F4.s b/asm/battle_anim_813F0F4.s index a5ab2fb83..ab8a222df 100644 --- a/asm/battle_anim_813F0F4.s +++ b/asm/battle_anim_813F0F4.s @@ -17,7 +17,7 @@ unref_sub_813F0F4: @ 813F0F4 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x10] - ldr r0, _0813F2AC @ =gBattleAnimPlayerMonIndex + ldr r0, _0813F2AC @ =gBattleAnimBankAttacker ldrb r3, [r0] ldr r0, _0813F2B0 @ =gUnknown_030042C4 movs r1, 0 @@ -220,7 +220,7 @@ unref_sub_813F0F4: @ 813F0F4 pop {r0} bx r0 .align 2, 0 -_0813F2AC: .4byte gBattleAnimPlayerMonIndex +_0813F2AC: .4byte gBattleAnimBankAttacker _0813F2B0: .4byte gUnknown_030042C4 _0813F2B4: .4byte gUnknown_03004240 _0813F2B8: .4byte REG_WININ @@ -252,7 +252,7 @@ sub_813F300: @ 813F300 sub sp, 0x10 lsls r0, 24 lsrs r7, r0, 24 - ldr r0, _0813F34C @ =gBattleAnimPlayerMonIndex + ldr r0, _0813F34C @ =gBattleAnimBankAttacker ldrb r0, [r0] mov r9, r0 ldr r1, _0813F350 @ =gTasks @@ -284,7 +284,7 @@ sub_813F300: @ 813F300 beq _0813F35E b _0813F4B2 .align 2, 0 -_0813F34C: .4byte gBattleAnimPlayerMonIndex +_0813F34C: .4byte gBattleAnimBankAttacker _0813F350: .4byte gTasks _0813F354: .4byte gUnknown_030041B4 _0813F358: @@ -495,7 +495,7 @@ sub_813F4EC: @ 813F4EC lsrs r0, 24 str r0, [sp] ldr r1, _0813F5D0 @ =gHealthboxIDs - ldr r0, _0813F5D4 @ =gBattleAnimPlayerMonIndex + ldr r0, _0813F5D4 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -595,7 +595,7 @@ sub_813F4EC: @ 813F4EC bx r0 .align 2, 0 _0813F5D0: .4byte gHealthboxIDs -_0813F5D4: .4byte gBattleAnimPlayerMonIndex +_0813F5D4: .4byte gBattleAnimBankAttacker _0813F5D8: .4byte gSprites _0813F5DC: .4byte 0x0000d709 _0813F5E0: .4byte 0x0000d70a @@ -614,7 +614,7 @@ sub_813F5E8: @ 813F5E8 lsrs r0, 24 mov r8, r0 ldr r1, _0813F684 @ =gHealthboxIDs - ldr r0, _0813F688 @ =gBattleAnimPlayerMonIndex + ldr r0, _0813F688 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -678,7 +678,7 @@ sub_813F5E8: @ 813F5E8 bx r0 .align 2, 0 _0813F684: .4byte gHealthboxIDs -_0813F688: .4byte gBattleAnimPlayerMonIndex +_0813F688: .4byte gBattleAnimBankAttacker _0813F68C: .4byte gSprites _0813F690: .4byte 0x0000d709 _0813F694: .4byte 0x0000d70a @@ -820,7 +820,7 @@ sub_813F798: @ 813F798 lsls r0, 24 lsrs r6, r0, 24 ldr r1, _0813F7C4 @ =gObjectBankIDs - ldr r0, _0813F7C8 @ =gBattleAnimPlayerMonIndex + ldr r0, _0813F7C8 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r5, [r0] @@ -840,7 +840,7 @@ sub_813F798: @ 813F798 b _0813F838 .align 2, 0 _0813F7C4: .4byte gObjectBankIDs -_0813F7C8: .4byte gBattleAnimPlayerMonIndex +_0813F7C8: .4byte gBattleAnimBankAttacker _0813F7CC: .4byte gTasks _0813F7D0: cmp r0, 0x2 @@ -911,7 +911,7 @@ sub_813F844: @ 813F844 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0813F87C @ =gObjectBankIDs - ldr r4, _0813F880 @ =gBattleAnimPlayerMonIndex + ldr r4, _0813F880 @ =gBattleAnimBankAttacker ldrb r0, [r4] adds r1, r0, r1 ldrb r1, [r1] @@ -931,7 +931,7 @@ sub_813F844: @ 813F844 b _0813F89C .align 2, 0 _0813F87C: .4byte gObjectBankIDs -_0813F880: .4byte gBattleAnimPlayerMonIndex +_0813F880: .4byte gBattleAnimBankAttacker _0813F884: .4byte gBattlePartyID _0813F888: .4byte gPlayerParty _0813F88C: @@ -970,7 +970,7 @@ _0813F8CC: .4byte gBattlePartyID _0813F8D0: .4byte gEnemyParty _0813F8D4: .4byte gTasks _0813F8D8: - ldr r5, _0813F950 @ =gBattleAnimPlayerMonIndex + ldr r5, _0813F950 @ =gBattleAnimBankAttacker ldrb r0, [r5] movs r1, 0 bl sub_8077ABC @@ -1025,7 +1025,7 @@ _0813F8D8: strh r0, [r6, 0x8] b _0813F982 .align 2, 0 -_0813F950: .4byte gBattleAnimPlayerMonIndex +_0813F950: .4byte gBattleAnimBankAttacker _0813F954: .4byte gSprites _0813F958: movs r1, 0x1C @@ -1235,7 +1235,7 @@ sub_813FA94: @ 813FA94 adds r6, r4, r1 movs r0, 0x22 strh r0, [r6, 0x2E] - ldr r2, _0813FB64 @ =gBattleAnimEnemyMonIndex + ldr r2, _0813FB64 @ =gBattleAnimBankTarget mov r8, r2 ldrb r0, [r2] movs r1, 0 @@ -1297,7 +1297,7 @@ sub_813FA94: @ 813FA94 _0813FB58: .4byte gLastUsedItem _0813FB5C: .4byte gBallSpriteTemplates _0813FB60: .4byte gSprites -_0813FB64: .4byte gBattleAnimEnemyMonIndex +_0813FB64: .4byte gBattleAnimBankTarget _0813FB68: .4byte sub_813FD90 _0813FB6C: .4byte 0x02017840 _0813FB70: .4byte gObjectBankIDs @@ -1397,7 +1397,7 @@ _0813FBE0: adds r6, r4, r0 movs r0, 0x22 strh r0, [r6, 0x2E] - ldr r1, _0813FCA8 @ =gBattleAnimEnemyMonIndex + ldr r1, _0813FCA8 @ =gBattleAnimBankTarget mov r8, r1 ldrb r0, [r1] movs r1, 0 @@ -1449,7 +1449,7 @@ _0813FBE0: _0813FC9C: .4byte gLastUsedItem _0813FCA0: .4byte gBallSpriteTemplates _0813FCA4: .4byte gSprites -_0813FCA8: .4byte gBattleAnimEnemyMonIndex +_0813FCA8: .4byte gBattleAnimBankTarget _0813FCAC: .4byte SpriteCallbackDummy _0813FCB0: .4byte gObjectBankIDs _0813FCB4: .4byte gTasks @@ -1652,7 +1652,7 @@ _0813FE10: movs r2, 0x1 movs r3, 0x1C bl sub_814086C - ldr r0, _0813FE6C @ =gBattleAnimEnemyMonIndex + ldr r0, _0813FE6C @ =gBattleAnimBankTarget ldrb r1, [r0] movs r0, 0 movs r2, 0xE @@ -1666,7 +1666,7 @@ _0813FE5A: .align 2, 0 _0813FE64: .4byte sub_813FE70 _0813FE68: .4byte gLastUsedItem -_0813FE6C: .4byte gBattleAnimEnemyMonIndex +_0813FE6C: .4byte gBattleAnimBankTarget thumb_func_end sub_813FDC0 thumb_func_start sub_813FE70 @@ -1690,7 +1690,7 @@ sub_813FE70: @ 813FE70 str r0, [r4, 0x1C] ldr r2, _0813FEBC @ =gSprites ldr r1, _0813FEC0 @ =gObjectBankIDs - ldr r0, _0813FEC4 @ =gBattleAnimEnemyMonIndex + ldr r0, _0813FEC4 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -1709,7 +1709,7 @@ _0813FEB4: .4byte TaskDummy _0813FEB8: .4byte sub_813FEC8 _0813FEBC: .4byte gSprites _0813FEC0: .4byte gObjectBankIDs -_0813FEC4: .4byte gBattleAnimEnemyMonIndex +_0813FEC4: .4byte gBattleAnimBankTarget thumb_func_end sub_813FE70 thumb_func_start sub_813FEC8 @@ -1717,7 +1717,7 @@ sub_813FEC8: @ 813FEC8 push {r4-r7,lr} adds r7, r0, 0 ldr r1, _0813FF0C @ =gObjectBankIDs - ldr r0, _0813FF10 @ =gBattleAnimEnemyMonIndex + ldr r0, _0813FF10 @ =gBattleAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r4, [r0] @@ -1750,7 +1750,7 @@ _0813FEFA: b _0813FFDC .align 2, 0 _0813FF0C: .4byte gObjectBankIDs -_0813FF10: .4byte gBattleAnimEnemyMonIndex +_0813FF10: .4byte gBattleAnimBankTarget _0813FF14: .4byte gTasks _0813FF18: cmp r0, 0x2 @@ -2451,7 +2451,7 @@ _08140450: .4byte sub_8140454 sub_8140454: @ 8140454 push {r4-r7,lr} adds r6, r0, 0 - ldr r7, _08140484 @ =gBattleAnimEnemyMonIndex + ldr r7, _08140484 @ =gBattleAnimBankTarget ldrh r0, [r6, 0x36] adds r0, 0x1 strh r0, [r6, 0x36] @@ -2471,7 +2471,7 @@ sub_8140454: @ 8140454 bl PlaySE b _081404CC .align 2, 0 -_08140484: .4byte gBattleAnimEnemyMonIndex +_08140484: .4byte gBattleAnimBankTarget _08140488: .4byte gDoingBattleAnim _0814048C: .4byte 0x00000173 _08140490: @@ -2690,7 +2690,7 @@ sub_81405F4: @ 81405F4 movs r2, 0x1 movs r3, 0x1C bl sub_814086C - ldr r0, _081406B0 @ =gBattleAnimEnemyMonIndex + ldr r0, _081406B0 @ =gBattleAnimBankTarget ldrb r1, [r0] movs r0, 0x1 movs r2, 0xE @@ -2699,7 +2699,7 @@ sub_81405F4: @ 81405F4 _08140646: ldr r6, _081406B4 @ =gSprites ldr r5, _081406B8 @ =gObjectBankIDs - ldr r4, _081406B0 @ =gBattleAnimEnemyMonIndex + ldr r4, _081406B0 @ =gBattleAnimBankTarget ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -2747,7 +2747,7 @@ _08140646: .align 2, 0 _081406A8: .4byte sub_81406BC _081406AC: .4byte gLastUsedItem -_081406B0: .4byte gBattleAnimEnemyMonIndex +_081406B0: .4byte gBattleAnimBankTarget _081406B4: .4byte gSprites _081406B8: .4byte gObjectBankIDs thumb_func_end sub_81405F4 @@ -2772,7 +2772,7 @@ sub_81406BC: @ 81406BC _081406DA: ldr r4, _08140708 @ =gSprites ldr r3, _0814070C @ =gObjectBankIDs - ldr r2, _08140710 @ =gBattleAnimEnemyMonIndex + ldr r2, _08140710 @ =gBattleAnimBankTarget ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] @@ -2794,7 +2794,7 @@ _081406DA: .align 2, 0 _08140708: .4byte gSprites _0814070C: .4byte gObjectBankIDs -_08140710: .4byte gBattleAnimEnemyMonIndex +_08140710: .4byte gBattleAnimBankTarget _08140714: ldr r6, _0814079C @ =0xfffffee0 adds r0, r6, 0 @@ -2824,7 +2824,7 @@ _08140734: beq _08140796 ldr r4, _081407A0 @ =gSprites ldr r3, _081407A4 @ =gObjectBankIDs - ldr r2, _081407A8 @ =gBattleAnimEnemyMonIndex + ldr r2, _081407A8 @ =gBattleAnimBankTarget ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] @@ -2869,7 +2869,7 @@ _08140796: _0814079C: .4byte 0xfffffee0 _081407A0: .4byte gSprites _081407A4: .4byte gObjectBankIDs -_081407A8: .4byte gBattleAnimEnemyMonIndex +_081407A8: .4byte gBattleAnimBankTarget _081407AC: .4byte 0x02017840 _081407B0: .4byte sub_81405C8 _081407B4: .4byte gDoingBattleAnim @@ -4583,7 +4583,7 @@ sub_814151C: @ 814151C movs r0, 0 mov r8, r0 ldr r0, _08141550 @ =gObjectBankIDs - ldr r3, _08141554 @ =gBattleAnimPlayerMonIndex + ldr r3, _08141554 @ =gBattleAnimBankAttacker ldrb r2, [r3] adds r0, r2, r0 ldrb r6, [r0] @@ -4603,7 +4603,7 @@ sub_814151C: @ 814151C b _081416B6 .align 2, 0 _08141550: .4byte gObjectBankIDs -_08141554: .4byte gBattleAnimPlayerMonIndex +_08141554: .4byte gBattleAnimBankAttacker _08141558: .4byte gTasks _0814155C: cmp r0, 0x2 @@ -4738,7 +4738,7 @@ _08141654: adds r0, r1 ldrb r1, [r0, 0x8] strh r1, [r0, 0x8] - ldr r0, _08141690 @ =gBattleAnimPlayerMonIndex + ldr r0, _08141690 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 @@ -4759,7 +4759,7 @@ _08141654: .align 2, 0 _08141688: .4byte gSprites _0814168C: .4byte gTasks -_08141690: .4byte gBattleAnimPlayerMonIndex +_08141690: .4byte gBattleAnimBankAttacker _08141694: ldr r0, _081416C0 @ =gSprites adds r1, r4, r6 @@ -4816,7 +4816,7 @@ _081416EC: beq _0814177C b _081417B8 _081416F2: - ldr r0, _08141708 @ =gBattleAnimPlayerMonIndex + ldr r0, _08141708 @ =gBattleAnimBankAttacker ldrb r0, [r0] bl GetBankIdentity_permutated lsls r0, 24 @@ -4827,7 +4827,7 @@ _081416F2: ldr r2, _08141710 @ =0x00003f42 b _08141718 .align 2, 0 -_08141708: .4byte gBattleAnimPlayerMonIndex +_08141708: .4byte gBattleAnimBankAttacker _0814170C: .4byte REG_BLDCNT _08141710: .4byte 0x00003f42 _08141714: @@ -4884,7 +4884,7 @@ _08141744: _08141778: .4byte REG_BLDALPHA _0814177C: ldr r1, _081417C0 @ =gObjectBankIDs - ldr r3, _081417C4 @ =gBattleAnimPlayerMonIndex + ldr r3, _081417C4 @ =gBattleAnimBankAttacker ldrb r0, [r3] adds r0, r1 ldrb r1, [r0] @@ -4918,7 +4918,7 @@ _081417B8: bx r0 .align 2, 0 _081417C0: .4byte gObjectBankIDs -_081417C4: .4byte gBattleAnimPlayerMonIndex +_081417C4: .4byte gBattleAnimBankAttacker _081417C8: .4byte gSprites _081417CC: .4byte 0x06010000 _081417D0: .4byte 0x040000d4 @@ -4931,7 +4931,7 @@ sub_81417D8: @ 81417D8 lsls r0, 24 lsrs r0, 24 ldr r3, _081417FC @ =gBattleAnimArgs - ldr r1, _08141800 @ =gBattleAnimPlayerMonIndex + ldr r1, _08141800 @ =gBattleAnimBankAttacker ldrb r1, [r1] lsls r1, 2 ldr r2, _08141804 @ =0x02017800 @@ -4945,7 +4945,7 @@ sub_81417D8: @ 81417D8 bx r0 .align 2, 0 _081417FC: .4byte gBattleAnimArgs -_08141800: .4byte gBattleAnimPlayerMonIndex +_08141800: .4byte gBattleAnimBankAttacker _08141804: .4byte 0x02017800 thumb_func_end sub_81417D8 @@ -4954,7 +4954,7 @@ sub_8141808: @ 8141808 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _08141820 @ =gBattleAnimEnemyMonIndex + ldr r2, _08141820 @ =gBattleAnimBankTarget ldr r1, _08141824 @ =gEffectBank ldrb r1, [r1] strb r1, [r2] @@ -4962,7 +4962,7 @@ sub_8141808: @ 8141808 pop {r0} bx r0 .align 2, 0 -_08141820: .4byte gBattleAnimEnemyMonIndex +_08141820: .4byte gBattleAnimBankTarget _08141824: .4byte gEffectBank thumb_func_end sub_8141808 @@ -4994,7 +4994,7 @@ sub_8141828: @ 8141828 bl GetMonData adds r4, r0, 0 adds r0, r6, 0 - bl b_side_obj__get_some_boolean + bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _081418FC @@ -5511,7 +5511,7 @@ sub_8141C30: @ 8141C30 adds r0, r4, 0 bl sub_80786EC ldr r1, _08141CAC @ =gObjectBankIDs - ldr r0, _08141CB0 @ =gBattleAnimPlayerMonIndex + ldr r0, _08141CB0 @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -5531,7 +5531,7 @@ sub_8141C30: @ 8141C30 _08141CA4: .4byte gBattleAnimArgs _08141CA8: .4byte 0x0000ffe0 _08141CAC: .4byte gObjectBankIDs -_08141CB0: .4byte gBattleAnimPlayerMonIndex +_08141CB0: .4byte gBattleAnimBankAttacker _08141CB4: .4byte gSprites _08141CB8: .4byte sub_8141CBC thumb_func_end sub_8141C30 @@ -5542,7 +5542,7 @@ sub_8141CBC: @ 8141CBC adds r3, r0, 0 ldr r2, _08141CE4 @ =gSprites ldr r1, _08141CE8 @ =gObjectBankIDs - ldr r0, _08141CEC @ =gBattleAnimPlayerMonIndex + ldr r0, _08141CEC @ =gBattleAnimBankAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] @@ -5562,7 +5562,7 @@ _08141CE0: .align 2, 0 _08141CE4: .4byte gSprites _08141CE8: .4byte gObjectBankIDs -_08141CEC: .4byte gBattleAnimPlayerMonIndex +_08141CEC: .4byte gBattleAnimBankAttacker _08141CF0: .4byte sub_8141CF4 thumb_func_end sub_8141CBC @@ -5598,7 +5598,7 @@ sub_8141D20: @ 8141D20 adds r4, r0, 0 ldr r5, _08141D70 @ =gSprites ldr r3, _08141D74 @ =gObjectBankIDs - ldr r2, _08141D78 @ =gBattleAnimPlayerMonIndex + ldr r2, _08141D78 @ =gBattleAnimBankAttacker ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] @@ -5635,7 +5635,7 @@ _08141D68: .align 2, 0 _08141D70: .4byte gSprites _08141D74: .4byte gObjectBankIDs -_08141D78: .4byte gBattleAnimPlayerMonIndex +_08141D78: .4byte gBattleAnimBankAttacker thumb_func_end sub_8141D20 thumb_func_start sub_8141D7C @@ -5646,11 +5646,11 @@ sub_8141D7C: @ 8141D7C lsrs r4, 24 movs r0, 0 bl GetBankByPlayerAI - ldr r1, _08141DA4 @ =gBattleAnimPlayerMonIndex + ldr r1, _08141DA4 @ =gBattleAnimBankAttacker strb r0, [r1] movs r0, 0x1 bl GetBankByPlayerAI - ldr r1, _08141DA8 @ =gBattleAnimEnemyMonIndex + ldr r1, _08141DA8 @ =gBattleAnimBankTarget strb r0, [r1] adds r0, r4, 0 bl DestroyAnimVisualTask @@ -5658,8 +5658,8 @@ sub_8141D7C: @ 8141D7C pop {r0} bx r0 .align 2, 0 -_08141DA4: .4byte gBattleAnimPlayerMonIndex -_08141DA8: .4byte gBattleAnimEnemyMonIndex +_08141DA4: .4byte gBattleAnimBankAttacker +_08141DA8: .4byte gBattleAnimBankTarget thumb_func_end sub_8141D7C thumb_func_start sub_8141DAC @@ -5721,20 +5721,20 @@ sub_8141E10: @ 8141E10 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _08141E2C @ =gBattleAnimPlayerMonIndex + ldr r2, _08141E2C @ =gBattleAnimBankAttacker ldr r1, _08141E30 @ =0x02017840 ldrh r1, [r1] strb r1, [r2] - ldr r2, _08141E34 @ =gBattleAnimEnemyMonIndex + ldr r2, _08141E34 @ =gBattleAnimBankTarget lsrs r1, 8 strb r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 -_08141E2C: .4byte gBattleAnimPlayerMonIndex +_08141E2C: .4byte gBattleAnimBankAttacker _08141E30: .4byte 0x02017840 -_08141E34: .4byte gBattleAnimEnemyMonIndex +_08141E34: .4byte gBattleAnimBankTarget thumb_func_end sub_8141E10 .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_message.s b/asm/battle_message.s deleted file mode 100644 index badbf2b7d..000000000 --- a/asm/battle_message.s +++ /dev/null @@ -1,2403 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start BufferStringBattle -BufferStringBattle: @ 8120AA8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - ldr r5, _08120B70 @ =gSelectedOrderFromParty - ldr r4, _08120B74 @ =gActiveBank - ldrb r1, [r4] - lsls r1, 9 - ldr r0, _08120B78 @ =gUnknown_02023A64 - adds r1, r0 - str r1, [r5] - ldr r2, _08120B7C @ =gLastUsedItem - ldrh r0, [r1, 0x4] - strh r0, [r2] - ldr r2, _08120B80 @ =gLastUsedAbility - ldrb r0, [r1, 0x6] - strb r0, [r2] - ldr r3, _08120B84 @ =0x02000000 - ldrb r0, [r1, 0x7] - mov r8, r0 - ldr r2, _08120B88 @ =0x00016003 - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldrb r0, [r1, 0x8] - mov r8, r0 - ldr r2, _08120B8C @ =0x0001605e - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldrb r0, [r1, 0x9] - mov r8, r0 - ldr r2, _08120B90 @ =0x000160c1 - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldr r2, _08120B94 @ =gStringBank - ldrb r0, [r1, 0xA] - strb r0, [r2] - ldrb r1, [r1, 0xB] - ldr r2, _08120B98 @ =0x000160a0 - adds r0, r3, r2 - strb r1, [r0] - movs r2, 0 - mov r9, r3 - ldr r3, _08120B9C @ =gBattleTextBuff1 - mov r10, r3 - ldr r3, _08120BA0 @ =gAbilitiesPerBank -_08120B10: - adds r0, r2, r3 - ldr r1, [r5] - adds r1, 0xC - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _08120B10 - movs r2, 0 - ldr r0, _08120B9C @ =gBattleTextBuff1 - mov r8, r0 - ldr r3, _08120B70 @ =gSelectedOrderFromParty - ldr r1, _08120BA4 @ =gBattleTextBuff2 - mov r12, r1 - ldr r5, _08120BA8 @ =gBattleTextBuff3 -_08120B30: - mov r0, r8 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x10 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - mov r0, r12 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x20 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r5 - ldr r0, [r3] - adds r0, 0x30 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0xF - ble _08120B30 - cmp r7, 0x5 - bls _08120B64 - b _08120F50 -_08120B64: - lsls r0, r7, 2 - ldr r1, _08120BAC @ =_08120BB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08120B70: .4byte gSelectedOrderFromParty -_08120B74: .4byte gActiveBank -_08120B78: .4byte gUnknown_02023A64 -_08120B7C: .4byte gLastUsedItem -_08120B80: .4byte gLastUsedAbility -_08120B84: .4byte 0x02000000 -_08120B88: .4byte 0x00016003 -_08120B8C: .4byte 0x0001605e -_08120B90: .4byte 0x000160c1 -_08120B94: .4byte gStringBank -_08120B98: .4byte 0x000160a0 -_08120B9C: .4byte gBattleTextBuff1 -_08120BA0: .4byte gAbilitiesPerBank -_08120BA4: .4byte gBattleTextBuff2 -_08120BA8: .4byte gBattleTextBuff3 -_08120BAC: .4byte _08120BB0 - .align 2, 0 -_08120BB0: - .4byte _08120BC8 - .4byte _08120C40 - .4byte _08120CCC - .4byte _08120D5C - .4byte _08120DE8 - .4byte _08120E50 -_08120BC8: - ldr r0, _08120BEC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08120C00 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08120BF8 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120BF0 @ =gUnknown_084005C7 - cmp r0, 0 - bne _08120BE8 - b _08120F70 -_08120BE8: - ldr r6, _08120BF4 @ =gUnknown_084005DB - b _08120F70 - .align 2, 0 -_08120BEC: .4byte gBattleTypeFlags -_08120BF0: .4byte gUnknown_084005C7 -_08120BF4: .4byte gUnknown_084005DB -_08120BF8: - ldr r6, _08120BFC @ =gUnknown_084005AA - b _08120F70 - .align 2, 0 -_08120BFC: .4byte gUnknown_084005AA -_08120C00: - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _08120C14 - ldr r6, _08120C10 @ =gUnknown_08400568 - b _08120F70 - .align 2, 0 -_08120C10: .4byte gUnknown_08400568 -_08120C14: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120C24 - ldr r6, _08120C20 @ =gUnknown_08400590 - b _08120F70 - .align 2, 0 -_08120C20: .4byte gUnknown_08400590 -_08120C24: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - ldr r6, _08120C38 @ =gUnknown_08400555 - cmp r0, 0 - bne _08120C32 - b _08120F70 -_08120C32: - ldr r6, _08120C3C @ =gUnknown_0840057B - b _08120F70 - .align 2, 0 -_08120C38: .4byte gUnknown_08400555 -_08120C3C: .4byte gUnknown_0840057B -_08120C40: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120C7C - ldr r0, _08120C68 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120C74 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120C6C @ =gUnknown_084006A4 - cmp r0, 0 - bne _08120C64 - b _08120F70 -_08120C64: - ldr r6, _08120C70 @ =gUnknown_084006F1 - b _08120F70 - .align 2, 0 -_08120C68: .4byte gBattleTypeFlags -_08120C6C: .4byte gUnknown_084006A4 -_08120C70: .4byte gUnknown_084006F1 -_08120C74: - ldr r6, _08120C78 @ =gUnknown_0840069C - b _08120F70 - .align 2, 0 -_08120C78: .4byte gUnknown_0840069C -_08120C7C: - ldr r0, _08120C94 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120CB4 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120C9C - ldr r6, _08120C98 @ =gUnknown_0840065C - b _08120F70 - .align 2, 0 -_08120C94: .4byte gBattleTypeFlags -_08120C98: .4byte gUnknown_0840065C -_08120C9C: - movs r0, 0x2 - ands r0, r1 - ldr r6, _08120CAC @ =gUnknown_08400608 - cmp r0, 0 - bne _08120CA8 - b _08120F70 -_08120CA8: - ldr r6, _08120CB0 @ =gUnknown_08400645 - b _08120F70 - .align 2, 0 -_08120CAC: .4byte gUnknown_08400608 -_08120CB0: .4byte gUnknown_08400645 -_08120CB4: - movs r0, 0x2 - ands r0, r1 - ldr r6, _08120CC4 @ =gUnknown_084005F5 - cmp r0, 0 - bne _08120CC0 - b _08120F70 -_08120CC0: - ldr r6, _08120CC8 @ =gUnknown_08400635 - b _08120F70 - .align 2, 0 -_08120CC4: .4byte gUnknown_084005F5 -_08120CC8: .4byte gUnknown_08400635 -_08120CCC: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120D24 - ldr r0, _08120CE8 @ =0x02000000 - ldr r1, _08120CEC @ =0x000160c1 - adds r0, r1 - ldrb r2, [r0] - cmp r2, 0 - bne _08120CF4 - ldr r6, _08120CF0 @ =gUnknown_08400709 - b _08120F70 - .align 2, 0 -_08120CE8: .4byte 0x02000000 -_08120CEC: .4byte 0x000160c1 -_08120CF0: .4byte gUnknown_08400709 -_08120CF4: - cmp r2, 0x1 - beq _08120D04 - ldr r0, _08120D08 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120D10 -_08120D04: - ldr r6, _08120D0C @ =gUnknown_08400727 - b _08120F70 - .align 2, 0 -_08120D08: .4byte gBattleTypeFlags -_08120D0C: .4byte gUnknown_08400727 -_08120D10: - ldr r6, _08120D1C @ =gUnknown_08400749 - cmp r2, 0x2 - beq _08120D18 - b _08120F70 -_08120D18: - ldr r6, _08120D20 @ =gUnknown_08400736 - b _08120F70 - .align 2, 0 -_08120D1C: .4byte gUnknown_08400749 -_08120D20: .4byte gUnknown_08400736 -_08120D24: - ldr r0, _08120D44 @ =gTrainerBattleOpponent - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 4 - cmp r1, r0 - bne _08120D54 - ldr r0, _08120D48 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120D4C @ =gUnknown_08400771 - cmp r0, 0 - bne _08120D40 - b _08120F70 -_08120D40: - ldr r6, _08120D50 @ =gUnknown_08400781 - b _08120F70 - .align 2, 0 -_08120D44: .4byte gTrainerBattleOpponent -_08120D48: .4byte gBattleTypeFlags -_08120D4C: .4byte gUnknown_08400771 -_08120D50: .4byte gUnknown_08400781 -_08120D54: - ldr r6, _08120D58 @ =gUnknown_0840075E - b _08120F70 - .align 2, 0 -_08120D58: .4byte gUnknown_0840075E -_08120D5C: - ldr r0, _08120D88 @ =0x00016003 - add r0, r9 - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120DB8 - ldr r0, _08120D8C @ =0x000160c1 - add r0, r9 - ldrb r3, [r0] - cmp r3, 0 - beq _08120D82 - ldr r0, _08120D90 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120D98 -_08120D82: - ldr r6, _08120D94 @ =gUnknown_084006B3 - b _08120F70 - .align 2, 0 -_08120D88: .4byte 0x00016003 -_08120D8C: .4byte 0x000160c1 -_08120D90: .4byte gBattleTypeFlags -_08120D94: .4byte gUnknown_084006B3 -_08120D98: - cmp r3, 0x1 - bne _08120DA4 - ldr r6, _08120DA0 @ =gUnknown_084006BB - b _08120F70 - .align 2, 0 -_08120DA0: .4byte gUnknown_084006BB -_08120DA4: - ldr r6, _08120DB0 @ =gUnknown_084006D5 - cmp r3, 0x2 - beq _08120DAC - b _08120F70 -_08120DAC: - ldr r6, _08120DB4 @ =gUnknown_084006C6 - b _08120F70 - .align 2, 0 -_08120DB0: .4byte gUnknown_084006D5 -_08120DB4: .4byte gUnknown_084006C6 -_08120DB8: - ldr r0, _08120DD4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08120DE0 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120DD8 @ =gUnknown_0840067C - cmp r0, 0 - bne _08120DD0 - b _08120F70 -_08120DD0: - ldr r6, _08120DDC @ =gUnknown_0840068C - b _08120F70 - .align 2, 0 -_08120DD4: .4byte gBattleTypeFlags -_08120DD8: .4byte gUnknown_0840067C -_08120DDC: .4byte gUnknown_0840068C -_08120DE0: - ldr r6, _08120DE4 @ =gUnknown_08400622 - b _08120F70 - .align 2, 0 -_08120DE4: .4byte gUnknown_08400622 -_08120DE8: - mov r0, r10 - bl sub_8121D1C - ldr r0, _08120E14 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08120E28 - ldr r0, _08120E18 @ =gBattleTextBuff2 - ldr r2, _08120E1C @ =gUnknown_08401674 - ldr r1, _08120E20 @ =0x02000000 - ldr r3, _08120E24 @ =0x000160a0 - adds r1, r3 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - b _08120E38 - .align 2, 0 -_08120E14: .4byte gSelectedOrderFromParty -_08120E18: .4byte gBattleTextBuff2 -_08120E1C: .4byte gUnknown_08401674 -_08120E20: .4byte 0x02000000 -_08120E24: .4byte 0x000160a0 -_08120E28: - ldr r0, _08120E44 @ =gBattleTextBuff2 - ldrh r2, [r2] - movs r1, 0xD - muls r1, r2 - ldr r2, _08120E48 @ =gMoveNames - adds r1, r2 - bl StringCopy -_08120E38: - ldr r0, _08120E44 @ =gBattleTextBuff2 - bl sub_8121D74 - ldr r6, _08120E4C @ =gUnknown_084007BD - b _08120F70 - .align 2, 0 -_08120E44: .4byte gBattleTextBuff2 -_08120E48: .4byte gMoveNames -_08120E4C: .4byte gUnknown_084007BD -_08120E50: - ldr r5, _08120E90 @ =gBattleTextBuff1 - ldrb r1, [r5] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08120EB8 - movs r0, 0x7F - ands r0, r1 - strb r0, [r5] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120E7C - ldrb r1, [r5] - cmp r1, 0x3 - beq _08120E7C - movs r0, 0x3 - eors r0, r1 - strb r0, [r5] -_08120E7C: - ldr r0, _08120E90 @ =gBattleTextBuff1 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08120E98 - ldr r6, _08120E94 @ =gUnknown_083FFEFC - b _08120F70 - .align 2, 0 -_08120E90: .4byte gBattleTextBuff1 -_08120E94: .4byte gUnknown_083FFEFC -_08120E98: - ldr r0, _08120EAC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120EB0 @ =gUnknown_083FFFEA - cmp r0, 0 - beq _08120F70 - ldr r6, _08120EB4 @ =gUnknown_083FFFF7 - b _08120F70 - .align 2, 0 -_08120EAC: .4byte gBattleTypeFlags -_08120EB0: .4byte gUnknown_083FFFEA -_08120EB4: .4byte gUnknown_083FFFF7 -_08120EB8: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120ED2 - ldrb r1, [r5] - cmp r1, 0x3 - beq _08120ED2 - movs r0, 0x3 - eors r0, r1 - strb r0, [r5] -_08120ED2: - ldr r0, _08120EF0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120F18 - ldr r0, _08120EF4 @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08120F08 - cmp r0, 0x2 - bgt _08120EF8 - cmp r0, 0x1 - beq _08120EFE - b _08120F70 - .align 2, 0 -_08120EF0: .4byte gBattleTypeFlags -_08120EF4: .4byte gBattleTextBuff1 -_08120EF8: - cmp r0, 0x3 - beq _08120F10 - b _08120F70 -_08120EFE: - ldr r6, _08120F04 @ =gUnknown_083FFF6A - b _08120F70 - .align 2, 0 -_08120F04: .4byte gUnknown_083FFF6A -_08120F08: - ldr r6, _08120F0C @ =gUnknown_083FFF99 - b _08120F70 - .align 2, 0 -_08120F0C: .4byte gUnknown_083FFF99 -_08120F10: - ldr r6, _08120F14 @ =gUnknown_083FFFCB - b _08120F70 - .align 2, 0 -_08120F14: .4byte gUnknown_083FFFCB -_08120F18: - ldr r0, _08120F2C @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08120F40 - cmp r0, 0x2 - bgt _08120F30 - cmp r0, 0x1 - beq _08120F36 - b _08120F70 - .align 2, 0 -_08120F2C: .4byte gBattleTextBuff1 -_08120F30: - cmp r0, 0x3 - beq _08120F48 - b _08120F70 -_08120F36: - ldr r6, _08120F3C @ =gUnknown_083FFF56 - b _08120F70 - .align 2, 0 -_08120F3C: .4byte gUnknown_083FFF56 -_08120F40: - ldr r6, _08120F44 @ =gUnknown_083FFF81 - b _08120F70 - .align 2, 0 -_08120F44: .4byte gUnknown_083FFF81 -_08120F48: - ldr r6, _08120F4C @ =gUnknown_083FFFB3 - b _08120F70 - .align 2, 0 -_08120F4C: .4byte gUnknown_083FFFB3 -_08120F50: - movs r0, 0xB5 - lsls r0, 1 - cmp r7, r0 - bls _08120F64 - ldr r1, _08120F60 @ =gDisplayedStringBattle - movs r0, 0xFF - strb r0, [r1] - b _08120F76 - .align 2, 0 -_08120F60: .4byte gDisplayedStringBattle -_08120F64: - ldr r1, _08120F84 @ =gBattleStringsTable - adds r0, r7, 0 - subs r0, 0xC - lsls r0, 2 - adds r0, r1 - ldr r6, [r0] -_08120F70: - adds r0, r6, 0 - bl StrCpyDecodeToDisplayedStringBattle -_08120F76: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08120F84: .4byte gBattleStringsTable - thumb_func_end BufferStringBattle - - thumb_func_start StrCpyDecodeToDisplayedStringBattle -StrCpyDecodeToDisplayedStringBattle: @ 8120F88 - push {lr} - ldr r1, _08120F94 @ =gDisplayedStringBattle - bl StrCpyDecodeBattle - pop {r1} - bx r1 - .align 2, 0 -_08120F94: .4byte gDisplayedStringBattle - thumb_func_end StrCpyDecodeToDisplayedStringBattle - - thumb_func_start sub_8120F98 -sub_8120F98: @ 8120F98 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, _08120FB0 @ =gUnknown_084017A8 - mov r0, sp - movs r2, 0x8 - bl memcpy - mov r2, sp - movs r3, 0 - b _08120FC0 - .align 2, 0 -_08120FB0: .4byte gUnknown_084017A8 -_08120FB4: - strb r1, [r2] - adds r4, 0x1 - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x7 - bhi _08120FC8 -_08120FC0: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08120FB4 -_08120FC8: - ldr r5, [sp] - ldr r4, [sp, 0x4] - movs r3, 0 - ldr r2, _08120FE4 @ =gUnknown_081FA6D4 -_08120FD0: - ldr r1, [r2] - ldr r0, [r1] - cmp r5, r0 - bne _08120FE8 - ldr r0, [r1, 0x4] - cmp r4, r0 - bne _08120FE8 - ldr r0, [r2, 0x4] - b _08120FF2 - .align 2, 0 -_08120FE4: .4byte gUnknown_081FA6D4 -_08120FE8: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x6 - bls _08120FD0 - movs r0, 0 -_08120FF2: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8120F98 - - thumb_func_start StrCpyDecodeBattle -StrCpyDecodeBattle: @ 8120FFC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - mov r9, r0 - mov r8, r1 - movs r6, 0 - movs r4, 0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r9 - ldrb r1, [r0] - bl _08121A40 -_0812101E: - cmp r1, 0xFD - beq _08121026 - bl _08121A30 -_08121026: - movs r1, 0x1 - add r9, r1 - mov r2, r9 - ldrb r0, [r2] - cmp r0, 0x2A - bls _08121036 - bl _081219E6 -_08121036: - lsls r0, 2 - ldr r1, _08121040 @ =_08121044 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121040: .4byte _08121044 - .align 2, 0 -_08121044: - .4byte _081210F0 - .4byte _0812111E - .4byte _0812115A - .4byte _08121180 - .4byte _081211A4 - .4byte _081211C8 - .4byte _081211EC - .4byte _08121218 - .4byte _08121248 - .4byte _08121278 - .4byte _081212A8 - .4byte _0812133C - .4byte _081213A8 - .4byte _0812141C - .4byte _08121490 - .4byte _08121504 - .4byte _08121578 - .4byte _081215F8 - .4byte _08121620 - .4byte _08121660 - .4byte _081216EC - .4byte _081216F4 - .4byte _08121704 - .4byte _08121714 - .4byte _0812172C - .4byte _0812174C - .4byte _081217C0 - .4byte _08121830 - .4byte _08121840 - .4byte _08121854 - .4byte _08121868 - .4byte _0812188C - .4byte _081218B0 - .4byte _081218B8 - .4byte _081218C0 - .4byte _0812195C - .4byte _081219A4 - .4byte _081219AC - .4byte _0812197C - .4byte _08121984 - .4byte _081219CC - .4byte _081219D4 - .4byte _08121134 -_081210F0: - ldr r5, _08121100 @ =gBattleTextBuff1 - ldrb r0, [r5] - cmp r0, 0xFD - bne _08121108 - ldr r4, _08121104 @ =gStringVar1 - adds r0, r5, 0 - b _08121140 - .align 2, 0 -_08121100: .4byte gBattleTextBuff1 -_08121104: .4byte gStringVar1 -_08121108: - adds r0, r5, 0 - bl sub_8120F98 - adds r4, r0, 0 - cmp r4, 0 - beq _08121118 - bl _081219E6 -_08121118: - adds r4, r5, 0 - bl _081219E6 -_0812111E: - ldr r1, _0812112C @ =gBattleTextBuff2 - ldrb r0, [r1] - cmp r0, 0xFD - bne _08121154 - ldr r4, _08121130 @ =gStringVar2 - b _0812113E - .align 2, 0 -_0812112C: .4byte gBattleTextBuff2 -_08121130: .4byte gStringVar2 -_08121134: - ldr r1, _0812114C @ =gBattleTextBuff3 - ldrb r0, [r1] - cmp r0, 0xFD - bne _08121154 - ldr r4, _08121150 @ =gStringVar3 -_0812113E: - adds r0, r1, 0 -_08121140: - adds r1, r4, 0 - bl sub_8121A68 - bl _081219E6 - .align 2, 0 -_0812114C: .4byte gBattleTextBuff3 -_08121150: .4byte gStringVar3 -_08121154: - adds r4, r1, 0 - bl _081219E6 -_0812115A: - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, _08121178 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0812117C @ =gPlayerParty - adds r0, r1 - bl _0812190E - .align 2, 0 -_08121178: .4byte gBattlePartyID -_0812117C: .4byte gPlayerParty -_08121180: - movs r0, 0x1 - bl GetBankByPlayerAI - ldr r1, _0812119C @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211A0 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812119C: .4byte gBattlePartyID -_081211A0: .4byte gEnemyParty -_081211A4: - movs r0, 0x2 - bl GetBankByPlayerAI - ldr r1, _081211C0 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211C4 @ =gPlayerParty - adds r0, r1 - b _0812190E - .align 2, 0 -_081211C0: .4byte gBattlePartyID -_081211C4: .4byte gPlayerParty -_081211C8: - movs r0, 0x3 - bl GetBankByPlayerAI - ldr r1, _081211E4 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211E8 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_081211E4: .4byte gBattlePartyID -_081211E8: .4byte gEnemyParty -_081211EC: - ldr r2, _0812120C @ =gBattlePartyID - ldr r1, _08121210 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121214 @ =gPlayerParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812120C: .4byte gBattlePartyID -_08121210: .4byte gLinkPlayers -_08121214: .4byte gPlayerParty -_08121218: - ldr r2, _0812123C @ =gBattlePartyID - ldr r1, _08121240 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121244 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812123C: .4byte gBattlePartyID -_08121240: .4byte gLinkPlayers -_08121244: .4byte gEnemyParty -_08121248: - ldr r2, _0812126C @ =gBattlePartyID - ldr r1, _08121270 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121274 @ =gPlayerParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812126C: .4byte gBattlePartyID -_08121270: .4byte gLinkPlayers -_08121274: .4byte gPlayerParty -_08121278: - ldr r2, _0812129C @ =gBattlePartyID - ldr r1, _081212A0 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x3 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081212A4 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812129C: .4byte gBattlePartyID -_081212A0: .4byte gLinkPlayers -_081212A4: .4byte gEnemyParty -_081212A8: - ldr r4, _081212CC @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - adds r2, r4, 0 - cmp r0, 0 - beq _0812131C - ldr r0, _081212D0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _081212D4 @ =gUnknown_08400791 - cmp r0, 0 - beq _081212E6 - ldr r4, _081212D8 @ =gUnknown_08400797 - b _081212E6 - .align 2, 0 -_081212CC: .4byte gBankAttacker -_081212D0: .4byte gBattleTypeFlags -_081212D4: .4byte gUnknown_08400791 -_081212D8: .4byte gUnknown_08400797 -_081212DC: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_081212E6: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081212DC - ldrb r0, [r2] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121314 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121318 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_08121314: .4byte gBattlePartyID -_08121318: .4byte gEnemyParty -_0812131C: - ldrb r0, [r2] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121338 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121338: .4byte gBattlePartyID -_0812133C: - ldr r4, _08121370 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0812137C - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121374 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121378 @ =gPlayerParty - adds r0, r1 - b _0812190E - .align 2, 0 -_08121370: .4byte gBankAttacker -_08121374: .4byte gBattlePartyID -_08121378: .4byte gPlayerParty -_0812137C: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _081213A0 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081213A4 @ =gEnemyParty - b _08121940 - .align 2, 0 -_081213A0: .4byte gBattlePartyID -_081213A4: .4byte gEnemyParty -_081213A8: - ldr r5, _081213F4 @ =gBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0812140C - ldr r0, _081213F8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _081213FC @ =gUnknown_08400791 - cmp r0, 0 - beq _081213C6 - ldr r4, _08121400 @ =gUnknown_08400797 -_081213C6: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _08121404 @ =gBattlePartyID - ldr r2, _08121408 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _081213E8 -_081213D6: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081213D6 -_081213E8: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_081213F4: .4byte gBankAttacker -_081213F8: .4byte gBattleTypeFlags -_081213FC: .4byte gUnknown_08400791 -_08121400: .4byte gUnknown_08400797 -_08121404: .4byte gBattlePartyID -_08121408: .4byte gEnemyParty -_0812140C: - ldr r1, _08121418 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121418: .4byte gBattlePartyID -_0812141C: - ldr r5, _08121468 @ =gBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08121480 - ldr r0, _0812146C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _08121470 @ =gUnknown_08400791 - cmp r0, 0 - beq _0812143A - ldr r4, _08121474 @ =gUnknown_08400797 -_0812143A: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _08121478 @ =gBattlePartyID - ldr r2, _0812147C @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _0812145C -_0812144A: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0812144A -_0812145C: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_08121468: .4byte gBankTarget -_0812146C: .4byte gBattleTypeFlags -_08121470: .4byte gUnknown_08400791 -_08121474: .4byte gUnknown_08400797 -_08121478: .4byte gBattlePartyID -_0812147C: .4byte gEnemyParty -_08121480: - ldr r1, _0812148C @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_0812148C: .4byte gBattlePartyID -_08121490: - ldr r5, _081214DC @ =gEffectBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _081214F4 - ldr r0, _081214E0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _081214E4 @ =gUnknown_08400791 - cmp r0, 0 - beq _081214AE - ldr r4, _081214E8 @ =gUnknown_08400797 -_081214AE: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _081214EC @ =gBattlePartyID - ldr r2, _081214F0 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _081214D0 -_081214BE: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081214BE -_081214D0: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_081214DC: .4byte gEffectBank -_081214E0: .4byte gBattleTypeFlags -_081214E4: .4byte gUnknown_08400791 -_081214E8: .4byte gUnknown_08400797 -_081214EC: .4byte gBattlePartyID -_081214F0: .4byte gEnemyParty -_081214F4: - ldr r1, _08121500 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121500: .4byte gBattlePartyID -_08121504: - ldr r5, _08121550 @ =gActiveBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08121568 - ldr r0, _08121554 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _08121558 @ =gUnknown_08400791 - cmp r0, 0 - beq _08121522 - ldr r4, _0812155C @ =gUnknown_08400797 -_08121522: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _08121560 @ =gBattlePartyID - ldr r2, _08121564 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _08121544 -_08121532: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08121532 -_08121544: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_08121550: .4byte gActiveBank -_08121554: .4byte gBattleTypeFlags -_08121558: .4byte gUnknown_08400791 -_0812155C: .4byte gUnknown_08400797 -_08121560: .4byte gBattlePartyID -_08121564: .4byte gEnemyParty -_08121568: - ldr r1, _08121574 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121574: .4byte gBattlePartyID -_08121578: - ldr r4, _081215CC @ =0x02000000 - ldr r0, _081215D0 @ =0x00016003 - adds r5, r4, r0 - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - adds r2, r4, 0 - cmp r0, 0 - beq _081215E8 - ldr r0, _081215D4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _081215D8 @ =gUnknown_08400791 - cmp r0, 0 - beq _0812159C - ldr r4, _081215DC @ =gUnknown_08400797 -_0812159C: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _081215E0 @ =gBattlePartyID - ldr r5, _081215E4 @ =gEnemyParty - mov r12, r5 - cmp r0, 0xFF - beq _081215BC -_081215AA: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081215AA -_081215BC: - ldr r1, _081215D0 @ =0x00016003 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_081215CC: .4byte 0x02000000 -_081215D0: .4byte 0x00016003 -_081215D4: .4byte gBattleTypeFlags -_081215D8: .4byte gUnknown_08400791 -_081215DC: .4byte gUnknown_08400797 -_081215E0: .4byte gBattlePartyID -_081215E4: .4byte gEnemyParty -_081215E8: - ldr r1, _081215F4 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_081215F4: .4byte gBattlePartyID -_081215F8: - ldr r0, _08121610 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _0812161C - ldr r0, _08121614 @ =0x02000000 - ldr r2, _08121618 @ =0x000160a0 - adds r0, r2 - b _08121634 - .align 2, 0 -_08121610: .4byte gSelectedOrderFromParty -_08121614: .4byte 0x02000000 -_08121618: .4byte 0x000160a0 -_0812161C: - ldrh r1, [r2] - b _08121652 -_08121620: - ldr r0, _08121640 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2, 0x2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08121650 - ldr r0, _08121644 @ =0x02000000 - ldr r3, _08121648 @ =0x000160a0 - adds r0, r3 -_08121634: - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _0812164C @ =gUnknown_08401674 - adds r4, r0, r1 - b _081219E6 - .align 2, 0 -_08121640: .4byte gSelectedOrderFromParty -_08121644: .4byte 0x02000000 -_08121648: .4byte 0x000160a0 -_0812164C: .4byte gUnknown_08401674 -_08121650: - ldrh r1, [r2, 0x2] -_08121652: - movs r0, 0xD - muls r1, r0 - ldr r0, _0812165C @ =gMoveNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_0812165C: .4byte gMoveNames -_08121660: - ldr r0, _081216AC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081216D8 - ldr r1, _081216B0 @ =gLastUsedItem - ldrh r0, [r1] - cmp r0, 0xAF - bne _081216D4 - ldr r2, _081216B4 @ =gLinkPlayers - ldr r0, _081216B8 @ =0x02000000 - ldr r5, _081216BC @ =0x000160cb - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _081216C0 @ =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _081216CC - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _081216C4 @ =gEnigmaBerries - adds r1, r0 - mov r0, sp - bl StringCopy - ldr r1, _081216C8 @ =gUnknown_08400A85 - mov r0, sp - bl StringAppend - mov r4, sp - b _081219E6 - .align 2, 0 -_081216AC: .4byte gBattleTypeFlags -_081216B0: .4byte gLastUsedItem -_081216B4: .4byte gLinkPlayers -_081216B8: .4byte 0x02000000 -_081216BC: .4byte 0x000160cb -_081216C0: .4byte gStringBank -_081216C4: .4byte gEnigmaBerries -_081216C8: .4byte gUnknown_08400A85 -_081216CC: - ldr r4, _081216D0 @ =gUnknown_08400A78 - b _081219E6 - .align 2, 0 -_081216D0: .4byte gUnknown_08400A78 -_081216D4: - ldrh r0, [r1] - b _081216DC -_081216D8: - ldr r0, _081216E8 @ =gLastUsedItem - ldrh r0, [r0] -_081216DC: - mov r1, sp - bl CopyItemName - mov r4, sp - b _081219E6 - .align 2, 0 -_081216E8: .4byte gLastUsedItem -_081216EC: - ldr r0, _081216F0 @ =gLastUsedAbility - b _08121734 - .align 2, 0 -_081216F0: .4byte gLastUsedAbility -_081216F4: - ldr r1, _081216FC @ =gAbilitiesPerBank - ldr r0, _08121700 @ =gBankAttacker - b _08121730 - .align 2, 0 -_081216FC: .4byte gAbilitiesPerBank -_08121700: .4byte gBankAttacker -_08121704: - ldr r1, _0812170C @ =gAbilitiesPerBank - ldr r0, _08121710 @ =gBankTarget - b _08121730 - .align 2, 0 -_0812170C: .4byte gAbilitiesPerBank -_08121710: .4byte gBankTarget -_08121714: - ldr r1, _08121720 @ =gAbilitiesPerBank - ldr r0, _08121724 @ =0x02000000 - ldr r2, _08121728 @ =0x00016003 - adds r0, r2 - b _08121730 - .align 2, 0 -_08121720: .4byte gAbilitiesPerBank -_08121724: .4byte 0x02000000 -_08121728: .4byte 0x00016003 -_0812172C: - ldr r1, _08121740 @ =gAbilitiesPerBank - ldr r0, _08121744 @ =gEffectBank -_08121730: - ldrb r0, [r0] - adds r0, r1 -_08121734: - ldrb r1, [r0] - movs r0, 0xD - muls r1, r0 - ldr r0, _08121748 @ =gAbilityNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08121740: .4byte gAbilitiesPerBank -_08121744: .4byte gEffectBank -_08121748: .4byte gAbilityNames -_0812174C: - ldr r3, _08121764 @ =gTrainerBattleOpponent - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08121768 - bl GetSecretBaseTrainerNameIndex - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _081217AE - .align 2, 0 -_08121764: .4byte gTrainerBattleOpponent -_08121768: - ldr r0, _08121784 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08121788 - bl get_trainer_class_name_index - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _081217AE - .align 2, 0 -_08121784: .4byte gBattleTypeFlags -_08121788: - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _0812179E - bl sub_8135FD8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _081217AE -_0812179E: - ldr r2, _081217B8 @ =gTrainers - ldrh r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r0, 0xD -_081217AE: - muls r1, r0 - ldr r0, _081217BC @ =gTrainerClassNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_081217B8: .4byte gTrainers -_081217BC: .4byte gTrainerClassNames -_081217C0: - ldr r2, _081217E4 @ =gTrainerBattleOpponent - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _081217EC - mov r0, sp - movs r1, 0xFF - movs r2, 0x8 - bl memset - ldr r1, _081217E8 @ =0x02017002 - mov r0, sp - movs r2, 0x7 - bl memcpy - mov r4, sp - b _081219E6 - .align 2, 0 -_081217E4: .4byte gTrainerBattleOpponent -_081217E8: .4byte 0x02017002 -_081217EC: - ldr r0, _08121804 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08121808 - mov r0, sp - bl get_trainer_name - mov r4, sp - b _081219E6 - .align 2, 0 -_08121804: .4byte gBattleTypeFlags -_08121808: - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _0812181C - mov r0, sp - bl sub_8135FF4 - mov r4, sp - b _081219E6 -_0812181C: - ldrh r0, [r2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0812182C @ =gTrainers + 0x4 - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_0812182C: .4byte gTrainers + 0x4 -_08121830: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _0812183C @ =gLinkPlayers + 0x8 - adds r4, r0, r1 - b _081219E6 - .align 2, 0 -_0812183C: .4byte gLinkPlayers + 0x8 -_08121840: - ldr r4, _08121850 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - b _08121876 - .align 2, 0 -_08121850: .4byte gLinkPlayers -_08121854: - ldr r4, _08121864 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - b _08121876 - .align 2, 0 -_08121864: .4byte gLinkPlayers -_08121868: - ldr r4, _08121888 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x3 -_08121876: - eors r0, r1 - bl sub_803FC34 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r4, 0x8 - adds r4, r1, r4 - b _081219E6 - .align 2, 0 -_08121888: .4byte gLinkPlayers -_0812188C: - ldr r0, _081218A4 @ =0x02000000 - ldr r3, _081218A8 @ =0x00016003 - adds r0, r3 - ldrb r0, [r0] - bl sub_803FC34 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _081218AC @ =gLinkPlayers + 0x8 - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_081218A4: .4byte 0x02000000 -_081218A8: .4byte 0x00016003 -_081218AC: .4byte gLinkPlayers + 0x8 -_081218B0: - ldr r4, _081218B4 @ =gSaveBlock2 - b _081219E6 - .align 2, 0 -_081218B4: .4byte gSaveBlock2 -_081218B8: - bl sub_8082830 - adds r4, r0, 0 - b _081219E6 -_081218C0: - ldr r5, _08121918 @ =0x02000000 - ldr r1, _0812191C @ =0x00016003 - adds r0, r5, r1 - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08121934 - ldr r0, _08121920 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _08121924 @ =gUnknown_08400791 - cmp r0, 0 - beq _081218E2 - ldr r4, _08121928 @ =gUnknown_08400797 -_081218E2: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r2, _0812192C @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _08121902 -_081218F0: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081218F0 -_08121902: - ldr r5, _08121930 @ =0x0001605e - adds r0, r2, r5 - ldrb r1, [r0] -_08121908: - movs r0, 0x64 - muls r0, r1 - add r0, r12 -_0812190E: - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0812194A - .align 2, 0 -_08121918: .4byte 0x02000000 -_0812191C: .4byte 0x00016003 -_08121920: .4byte gBattleTypeFlags -_08121924: .4byte gUnknown_08400791 -_08121928: .4byte gUnknown_08400797 -_0812192C: .4byte gEnemyParty -_08121930: .4byte 0x0001605e -_08121934: - ldr r1, _08121954 @ =0x0001605e - adds r0, r5, r1 - ldrb r1, [r0] -_0812193A: - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121958 @ =gPlayerParty -_08121940: - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0812194A: - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _081219E6 - .align 2, 0 -_08121954: .4byte 0x0001605e -_08121958: .4byte gPlayerParty -_0812195C: - ldr r0, _08121970 @ =0x0000084b - bl FlagGet - lsls r0, 24 - ldr r4, _08121974 @ =gUnknown_084009ED - cmp r0, 0 - beq _081219E6 - ldr r4, _08121978 @ =gUnknown_084009F7 - b _081219E6 - .align 2, 0 -_08121970: .4byte 0x0000084b -_08121974: .4byte gUnknown_084009ED -_08121978: .4byte gUnknown_084009F7 -_0812197C: - ldr r0, _08121980 @ =gBankAttacker - b _08121986 - .align 2, 0 -_08121980: .4byte gBankAttacker -_08121984: - ldr r0, _08121998 @ =gBankTarget -_08121986: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _0812199C @ =gUnknown_084007A7 - cmp r0, 0 - bne _081219E6 - ldr r4, _081219A0 @ =gUnknown_084007AC - b _081219E6 - .align 2, 0 -_08121998: .4byte gBankTarget -_0812199C: .4byte gUnknown_084007A7 -_081219A0: .4byte gUnknown_084007AC -_081219A4: - ldr r0, _081219A8 @ =gBankAttacker - b _081219AE - .align 2, 0 -_081219A8: .4byte gBankAttacker -_081219AC: - ldr r0, _081219C0 @ =gBankTarget -_081219AE: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _081219C4 @ =gUnknown_0840079C - cmp r0, 0 - bne _081219E6 - ldr r4, _081219C8 @ =gUnknown_084007A1 - b _081219E6 - .align 2, 0 -_081219C0: .4byte gBankTarget -_081219C4: .4byte gUnknown_0840079C -_081219C8: .4byte gUnknown_084007A1 -_081219CC: - ldr r0, _081219D0 @ =gBankAttacker - b _081219D6 - .align 2, 0 -_081219D0: .4byte gBankAttacker -_081219D4: - ldr r0, _08121A24 @ =gBankTarget -_081219D6: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _08121A28 @ =gUnknown_084007B2 - cmp r0, 0 - bne _081219E6 - ldr r4, _08121A2C @ =gUnknown_084007B7 -_081219E6: - ldrb r1, [r4] - adds r0, r1, 0 - mov r3, r9 - ldrb r2, [r3] - adds r3, 0x1 - cmp r0, 0xFF - beq _08121A06 -_081219F4: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081219F4 -_08121A06: - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x21 - bne _08121A3C - mov r0, r8 - adds r1, r0, r6 - movs r0, 0xFC - strb r0, [r1] - adds r6, 0x1 - mov r2, r8 - adds r1, r2, r6 - movs r0, 0x9 - strb r0, [r1] - adds r6, 0x1 - b _08121A3C - .align 2, 0 -_08121A24: .4byte gBankTarget -_08121A28: .4byte gUnknown_084007B2 -_08121A2C: .4byte gUnknown_084007B7 -_08121A30: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - mov r3, r9 - adds r3, 0x1 -_08121A3C: - mov r9, r3 - ldrb r1, [r3] -_08121A40: - adds r0, r1, 0 - cmp r0, 0xFF - beq _08121A4A - bl _0812101E -_08121A4A: - mov r5, r8 - adds r1, r5, r6 - mov r2, r9 - ldrb r0, [r2] - strb r0, [r1] - adds r6, 0x1 - adds r0, r6, 0 - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end StrCpyDecodeBattle - - thumb_func_start sub_8121A68 -sub_8121A68: @ 8121A68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r7, r0, 0 - adds r6, r1, 0 - movs r5, 0x1 - movs r0, 0 - mov r8, r0 - movs r0, 0xFF - strb r0, [r6] - ldrb r0, [r7, 0x1] - cmp r0, 0xFF - bne _08121A86 - b _08121D0E -_08121A86: - adds r0, r7, r5 - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0xA - bls _08121A92 - b _08121D04 -_08121A92: - lsls r0, r1, 2 - ldr r1, _08121A9C @ =_08121AA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121A9C: .4byte _08121AA0 - .align 2, 0 -_08121AA0: - .4byte _08121ACC - .4byte _08121AE8 - .4byte _08121B3C - .4byte _08121B54 - .4byte _08121B64 - .4byte _08121BDC - .4byte _08121BF0 - .4byte _08121C02 - .4byte _08121C48 - .4byte _08121C5C - .4byte _08121C78 -_08121ACC: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r0, _08121AE4 @ =gBattleStringsTable - subs r1, 0xC - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - b _08121CE2 - .align 2, 0 -_08121AE4: .4byte gBattleStringsTable -_08121AE8: - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - beq _08121B04 - cmp r0, 0x2 - bgt _08121AF8 - cmp r0, 0x1 - beq _08121AFE - b _08121B26 -_08121AF8: - cmp r0, 0x4 - beq _08121B0C - b _08121B26 -_08121AFE: - ldrb r4, [r4, 0x3] - mov r8, r4 - b _08121B26 -_08121B04: - ldrb r1, [r4, 0x3] - ldrb r0, [r4, 0x4] - lsls r0, 8 - b _08121B22 -_08121B0C: - ldrb r0, [r4, 0x3] - mov r8, r0 - ldrb r0, [r4, 0x4] - lsls r0, 8 - mov r1, r8 - orrs r1, r0 - ldrb r0, [r4, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r4, 0x6] - lsls r0, 24 -_08121B22: - orrs r1, r0 - mov r8, r1 -_08121B26: - adds r4, r5, r7 - ldrb r3, [r4, 0x2] - adds r0, r6, 0 - mov r1, r8 - movs r2, 0 - bl ConvertIntToDecimalStringN - adds r0, r5, 0x3 - ldrb r4, [r4, 0x1] - adds r5, r0, r4 - b _08121D04 -_08121B3C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0xD - muls r1, r0 - ldr r0, _08121B50 @ =gMoveNames - adds r1, r0 - b _08121CE2 - .align 2, 0 -_08121B50: .4byte gMoveNames -_08121B54: - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _08121B60 @ =gTypeNames - b _08121C66 - .align 2, 0 -_08121B60: .4byte gTypeNames -_08121B64: - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08121B88 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121B84 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _08121BC4 - .align 2, 0 -_08121B84: .4byte gPlayerParty -_08121B88: - ldr r0, _08121BA0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08121BA8 - ldr r1, _08121BA4 @ =gUnknown_08400797 - adds r0, r6, 0 - bl StringAppend - b _08121BB0 - .align 2, 0 -_08121BA0: .4byte gBattleTypeFlags -_08121BA4: .4byte gUnknown_08400797 -_08121BA8: - ldr r1, _08121BD4 @ =gUnknown_08400791 - adds r0, r6, 0 - bl StringAppend -_08121BB0: - adds r0, r5, r7 - ldrb r1, [r0, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121BD8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_08121BC4: - mov r0, sp - bl StringGetEnd10 - adds r0, r6, 0 - mov r1, sp - bl StringAppend - b _08121D02 - .align 2, 0 -_08121BD4: .4byte gUnknown_08400791 -_08121BD8: .4byte gEnemyParty -_08121BDC: - ldr r1, _08121BEC @ =gUnknown_08400F58 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _08121C68 - .align 2, 0 -_08121BEC: .4byte gUnknown_08400F58 -_08121BF0: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - adds r0, r6, 0 - bl GetSpeciesName - b _08121D02 -_08121C02: - adds r4, r5, r7 - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08121C28 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121C24 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData - b _08121C3A - .align 2, 0 -_08121C24: .4byte gPlayerParty -_08121C28: - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121C44 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData -_08121C3A: - adds r0, r6, 0 - bl StringGetEnd10 - b _08121D02 - .align 2, 0 -_08121C44: .4byte gEnemyParty -_08121C48: - ldr r1, _08121C58 @ =gUnknown_08400F78 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _08121C68 - .align 2, 0 -_08121C58: .4byte gUnknown_08400F78 -_08121C5C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - movs r0, 0xD - muls r1, r0 - ldr r0, _08121C74 @ =gAbilityNames -_08121C66: - adds r1, r0 -_08121C68: - adds r0, r6, 0 - bl StringAppend - adds r5, 0x2 - b _08121D04 - .align 2, 0 -_08121C74: .4byte gAbilityNames -_08121C78: - adds r0, r5, r7 - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - ldr r0, _08121CC4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08121CFA - cmp r2, 0xAF - bne _08121CF0 - ldr r2, _08121CC8 @ =gLinkPlayers - ldr r0, _08121CCC @ =0x02000000 - ldr r1, _08121CD0 @ =0x000160cb - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08121CD4 @ =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _08121CE0 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _08121CD8 @ =gEnigmaBerries - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - ldr r1, _08121CDC @ =gUnknown_08400A85 - b _08121CE2 - .align 2, 0 -_08121CC4: .4byte gBattleTypeFlags -_08121CC8: .4byte gLinkPlayers -_08121CCC: .4byte 0x02000000 -_08121CD0: .4byte 0x000160cb -_08121CD4: .4byte gStringBank -_08121CD8: .4byte gEnigmaBerries -_08121CDC: .4byte gUnknown_08400A85 -_08121CE0: - ldr r1, _08121CEC @ =gUnknown_08400A78 -_08121CE2: - adds r0, r6, 0 - bl StringAppend - b _08121D02 - .align 2, 0 -_08121CEC: .4byte gUnknown_08400A78 -_08121CF0: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName - b _08121D02 -_08121CFA: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName -_08121D02: - adds r5, 0x3 -_08121D04: - adds r0, r7, r5 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08121D0E - b _08121A86 -_08121D0E: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8121A68 - - thumb_func_start sub_8121D1C -sub_8121D1C: @ 8121D1C - push {r4,r5,lr} - adds r4, r0, 0 - movs r2, 0 - ldr r5, _08121D50 @ =gSelectedOrderFromParty - ldr r3, _08121D54 @ =gUnknown_084016BC -_08121D26: - cmp r2, 0x4 - beq _08121D3C - ldrh r1, [r3] - cmp r1, 0 - bne _08121D32 - adds r2, 0x1 -_08121D32: - ldr r0, [r5] - adds r3, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _08121D26 -_08121D3C: - cmp r2, 0 - blt _08121D68 - cmp r2, 0x2 - bgt _08121D5C - ldr r1, _08121D58 @ =gUnknown_08400E5E - adds r0, r4, 0 - bl StringCopy - b _08121D68 - .align 2, 0 -_08121D50: .4byte gSelectedOrderFromParty -_08121D54: .4byte gUnknown_084016BC -_08121D58: .4byte gUnknown_08400E5E -_08121D5C: - cmp r2, 0x4 - bgt _08121D68 - ldr r1, _08121D70 @ =gUnknown_08400E62 - adds r0, r4, 0 - bl StringCopy -_08121D68: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121D70: .4byte gUnknown_08400E62 - thumb_func_end sub_8121D1C - - thumb_func_start sub_8121D74 -sub_8121D74: @ 8121D74 - push {r4,r5,lr} - adds r3, r0, 0 - movs r4, 0 - b _08121D7E -_08121D7C: - adds r3, 0x1 -_08121D7E: - ldrb r0, [r3] - cmp r0, 0xFF - bne _08121D7C - ldr r1, _08121DB4 @ =gUnknown_084016BC - ldr r5, _08121DB8 @ =gSelectedOrderFromParty - movs r0, 0 - lsls r0, 1 - adds r2, r0, r1 -_08121D8E: - cmp r4, 0x4 - beq _08121DA8 - ldrh r1, [r2] - cmp r1, 0 - bne _08121D9A - adds r4, 0x1 -_08121D9A: - ldr r0, [r5] - adds r2, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _08121D8E - cmp r4, 0x4 - bhi _08121E04 -_08121DA8: - lsls r0, r4, 2 - ldr r1, _08121DBC @ =_08121DC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121DB4: .4byte gUnknown_084016BC -_08121DB8: .4byte gSelectedOrderFromParty -_08121DBC: .4byte _08121DC0 - .align 2, 0 -_08121DC0: - .4byte _08121DD4 - .4byte _08121DDC - .4byte _08121DE4 - .4byte _08121DEC - .4byte _08121DFC -_08121DD4: - ldr r1, _08121DD8 @ =gUnknown_084007C8 - b _08121DEE - .align 2, 0 -_08121DD8: .4byte gUnknown_084007C8 -_08121DDC: - ldr r1, _08121DE0 @ =gUnknown_084007CA - b _08121DEE - .align 2, 0 -_08121DE0: .4byte gUnknown_084007CA -_08121DE4: - ldr r1, _08121DE8 @ =gUnknown_084007CC - b _08121DEE - .align 2, 0 -_08121DE8: .4byte gUnknown_084007CC -_08121DEC: - ldr r1, _08121DF8 @ =gUnknown_084007CE -_08121DEE: - adds r0, r3, 0 - bl StringCopy - b _08121E04 - .align 2, 0 -_08121DF8: .4byte gUnknown_084007CE -_08121DFC: - ldr r1, _08121E0C @ =gUnknown_084007D0 - adds r0, r3, 0 - bl StringCopy -_08121E04: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121E0C: .4byte gUnknown_084007D0 - thumb_func_end sub_8121D74 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 15cb95854..cd8eede60 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -1522,7 +1522,7 @@ _081350AE: lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl GetNationalPokedexFlag + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _081350C6 @@ -1555,7 +1555,7 @@ AppendBattleTowerBannedSpeciesName: @ 81350E0 lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl GetNationalPokedexFlag + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _081351E6 @@ -2082,7 +2082,7 @@ sub_8135534: @ 8135534 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_811AAE8 + bl IsBattleTransitionDone lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2163,10 +2163,10 @@ _081355D6: bl CreateTask movs r0, 0 bl current_map_music_set__default_for_battle - bl GetBattleTowerBattleTransition + bl BattleSetup_GetBattleTowerBattleTransition lsls r0, 24 lsrs r0, 24 - bl sub_811AABC + bl BattleTransition_StartOnField b _08135648 .align 2, 0 _081355F4: .4byte gPlayerParty @@ -2200,10 +2200,10 @@ _08135606: bl CreateTask movs r0, 0 bl current_map_music_set__default_for_battle - bl GetBattleTowerBattleTransition + bl BattleSetup_GetBattleTowerBattleTransition lsls r0, 24 lsrs r0, 24 - bl sub_811AABC + bl BattleTransition_StartOnField _08135648: add sp, 0x4 pop {r4,r5} diff --git a/asm/battle_transition.s b/asm/battle_transition.s deleted file mode 100644 index a4b4d1666..000000000 --- a/asm/battle_transition.s +++ /dev/null @@ -1,6254 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_811AABC -sub_811AABC: @ 811AABC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811AAD0 @ =gMain - ldr r1, _0811AAD4 @ =sub_8054398 - str r1, [r2, 0x4] - bl sub_811AB20 - pop {r0} - bx r0 - .align 2, 0 -_0811AAD0: .4byte gMain -_0811AAD4: .4byte sub_8054398 - thumb_func_end sub_811AABC - - thumb_func_start sub_811AAD8 -sub_811AAD8: @ 811AAD8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_811AB20 - pop {r0} - bx r0 - thumb_func_end sub_811AAD8 - - thumb_func_start sub_811AAE8 -sub_811AAE8: @ 811AAE8 - push {lr} - ldr r0, _0811AB0C @ =sub_811AB50 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0811AB10 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x26 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0811AB14 - movs r0, 0 - b _0811AB1C - .align 2, 0 -_0811AB0C: .4byte sub_811AB50 -_0811AB10: .4byte gTasks -_0811AB14: - adds r0, r2, 0 - bl DestroyTask - movs r0, 0x1 -_0811AB1C: - pop {r1} - bx r1 - thumb_func_end sub_811AAE8 - - thumb_func_start sub_811AB20 -sub_811AB20: @ 811AB20 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0811AB48 @ =sub_811AB50 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811AB4C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811AB48: .4byte sub_811AB50 -_0811AB4C: .4byte gTasks - thumb_func_end sub_811AB20 - - thumb_func_start sub_811AB50 -sub_811AB50: @ 811AB50 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811AB80 @ =gUnknown_083FD794 - ldr r2, _0811AB84 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811AB62: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811AB62 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811AB80: .4byte gUnknown_083FD794 -_0811AB84: .4byte gTasks - thumb_func_end sub_811AB50 - - thumb_func_start sub_811AB88 -sub_811AB88: @ 811AB88 - push {r4,lr} - adds r4, r0, 0 - bl sub_807DE10 - ldr r0, _0811ABB4 @ =gPlttBufferFaded - ldr r1, _0811ABB8 @ =gPlttBufferUnfaded - ldr r2, _0811ABBC @ =0x04000100 - bl CpuSet - ldr r1, _0811ABC0 @ =gUnknown_083FD70C - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _0811ABC4 - movs r0, 0x2 - strh r0, [r4, 0x8] - movs r0, 0x1 - b _0811ABD2 - .align 2, 0 -_0811ABB4: .4byte gPlttBufferFaded -_0811ABB8: .4byte gPlttBufferUnfaded -_0811ABBC: .4byte 0x04000100 -_0811ABC0: .4byte gUnknown_083FD70C -_0811ABC4: - movs r1, 0x4 - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 -_0811ABD2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811AB88 - - thumb_func_start sub_811ABD8 -sub_811ABD8: @ 811ABD8 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811ABF8 @ =gUnknown_083FD70C - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0811ABFC - movs r0, 0 - b _0811AC04 - .align 2, 0 -_0811ABF8: .4byte gUnknown_083FD70C -_0811ABFC: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 -_0811AC04: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811ABD8 - - thumb_func_start sub_811AC0C -sub_811AC0C: @ 811AC0C - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811AC30 @ =gBattleTransitionFuncs - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AC30: .4byte gBattleTransitionFuncs - thumb_func_end sub_811AC0C - - thumb_func_start sub_811AC34 -sub_811AC34: @ 811AC34 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - strh r0, [r4, 0x26] - ldr r1, _0811AC60 @ =gBattleTransitionFuncs - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0811AC58 - movs r0, 0x1 - strh r0, [r4, 0x26] -_0811AC58: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AC60: .4byte gBattleTransitionFuncs - thumb_func_end sub_811AC34 - - thumb_func_start sub_811AC64 -sub_811AC64: @ 811AC64 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r1, _0811AC98 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _0811AC9C - adds r0, r2, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_811D4C8 - b _0811ACAC - .align 2, 0 -_0811AC98: .4byte gTasks -_0811AC9C: - bl sub_811D52C - lsls r0, 24 - cmp r0, 0 - beq _0811ACAC - adds r0, r4, 0 - bl DestroyTask -_0811ACAC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_811AC64 - - thumb_func_start sub_811ACB4 -sub_811ACB4: @ 811ACB4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811ACE4 @ =gUnknown_083FD7A4 - ldr r2, _0811ACE8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811ACC6: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811ACC6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811ACE4: .4byte gUnknown_083FD7A4 -_0811ACE8: .4byte gTasks - thumb_func_end sub_811ACB4 - - thumb_func_start sub_811ACEC -sub_811ACEC: @ 811ACEC - ldr r2, _0811AD18 @ =REG_MOSAIC - movs r1, 0 - strh r1, [r2] - subs r2, 0x42 - ldrh r1, [r2] - movs r3, 0x40 - orrs r1, r3 - strh r1, [r2] - adds r2, 0x2 - ldrh r1, [r2] - orrs r1, r3 - strh r1, [r2] - adds r2, 0x2 - ldrh r1, [r2] - orrs r1, r3 - strh r1, [r2] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - movs r0, 0x1 - bx lr - .align 2, 0 -_0811AD18: .4byte REG_MOSAIC - thumb_func_end sub_811ACEC - - thumb_func_start sub_811AD1C -sub_811AD1C: @ 811AD1C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0xA] - movs r1, 0xA - ldrsh r2, [r4, r1] - cmp r2, 0 - beq _0811AD32 - subs r0, 0x1 - strh r0, [r4, 0xA] - b _0811AD70 -_0811AD32: - movs r0, 0x4 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0811AD54 - movs r1, 0x1 - negs r1, r1 - str r2, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0811AD54: - ldr r2, _0811AD7C @ =REG_MOSAIC - ldrh r0, [r4, 0xC] - movs r1, 0xF - ands r1, r0 - lsls r0, r1, 4 - adds r0, r1 - strh r0, [r2] - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xE - ble _0811AD70 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811AD70: - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AD7C: .4byte REG_MOSAIC - thumb_func_end sub_811AD1C - - thumb_func_start sub_811AD80 -sub_811AD80: @ 811AD80 - push {lr} - ldr r0, _0811ADA4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811AD9C - ldr r0, _0811ADA8 @ =sub_811ACB4 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811AD9C: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811ADA4: .4byte gPaletteFade -_0811ADA8: .4byte sub_811ACB4 - thumb_func_end sub_811AD80 - - thumb_func_start sub_811ADAC -sub_811ADAC: @ 811ADAC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811ADDC @ =gUnknown_083FD7B0 - ldr r2, _0811ADE0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811ADBE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811ADBE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811ADDC: .4byte gUnknown_083FD7B0 -_0811ADE0: .4byte gTasks - thumb_func_end sub_811ADAC - - thumb_func_start sub_811ADE4 -sub_811ADE4: @ 811ADE4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0811AE54 @ =gUnknown_03005560 - ldr r1, _0811AE58 @ =0x0200c000 - movs r2, 0x14 - ldrsh r1, [r1, r2] - str r4, [sp] - movs r2, 0xA0 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0x2 - bl sub_811D6E8 - ldr r0, _0811AE5C @ =sub_811AEE0 - bl SetVBlankCallback - ldr r0, _0811AE60 @ =sub_811AF18 - bl SetHBlankCallback - ldr r3, _0811AE64 @ =0x04000208 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _0811AE68 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x3 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _0811AE6C @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x18 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AE54: .4byte gUnknown_03005560 -_0811AE58: .4byte 0x0200c000 -_0811AE5C: .4byte sub_811AEE0 -_0811AE60: .4byte sub_811AF18 -_0811AE64: .4byte 0x04000208 -_0811AE68: .4byte 0x04000200 -_0811AE6C: .4byte REG_DISPSTAT - thumb_func_end sub_811ADE4 - - thumb_func_start sub_811AE70 -sub_811AE70: @ 811AE70 - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, _0811AED0 @ =0x0200c000 - ldrb r1, [r4] - movs r1, 0 - strb r1, [r4] - ldrh r1, [r0, 0xA] - adds r1, 0x4 - strh r1, [r0, 0xA] - ldrh r1, [r0, 0xC] - adds r1, 0x8 - strh r1, [r0, 0xC] - ldr r3, _0811AED4 @ =gUnknown_03004DE0 - movs r2, 0x14 - ldrsh r1, [r4, r2] - movs r5, 0xA - ldrsh r2, [r0, r5] - movs r5, 0xC - ldrsh r0, [r0, r5] - str r0, [sp] - movs r0, 0xA0 - str r0, [sp, 0x4] - adds r0, r3, 0 - movs r3, 0x2 - bl sub_811D6E8 - ldr r0, _0811AED8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811AEBE - ldr r0, _0811AEDC @ =sub_811ADAC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811AEBE: - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AED0: .4byte 0x0200c000 -_0811AED4: .4byte gUnknown_03004DE0 -_0811AED8: .4byte gPaletteFade -_0811AEDC: .4byte sub_811ADAC - thumb_func_end sub_811AE70 - - thumb_func_start sub_811AEE0 -sub_811AEE0: @ 811AEE0 - push {lr} - bl sub_811D67C - ldr r0, _0811AF08 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811AF02 - ldr r1, _0811AF0C @ =0x040000d4 - ldr r0, _0811AF10 @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811AF14 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811AF02: - pop {r0} - bx r0 - .align 2, 0 -_0811AF08: .4byte 0x0200c000 -_0811AF0C: .4byte 0x040000d4 -_0811AF10: .4byte gUnknown_03004DE0 -_0811AF14: .4byte 0x800000a0 - thumb_func_end sub_811AEE0 - - thumb_func_start sub_811AF18 -sub_811AF18: @ 811AF18 - ldr r1, _0811AF38 @ =gUnknown_03004DE0 - ldr r0, _0811AF3C @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811AF40 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811AF38: .4byte gUnknown_03004DE0 -_0811AF3C: .4byte REG_VCOUNT -_0811AF40: .4byte REG_BG1HOFS - thumb_func_end sub_811AF18 - - thumb_func_start sub_811AF44 -sub_811AF44: @ 811AF44 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811AF74 @ =gUnknown_083FD7B8 - ldr r2, _0811AF78 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811AF56: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811AF56 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811AF74: .4byte gUnknown_083FD7B8 -_0811AF78: .4byte gTasks - thumb_func_end sub_811AF44 - - thumb_func_start sub_811AF7C -sub_811AF7C: @ 811AF7C - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0811AFE4 @ =0x0200c000 - ldr r0, _0811AFE8 @ =gUnknown_03005560 - movs r2, 0x16 - ldrsh r1, [r1, r2] - movs r2, 0xA0 - lsls r2, 1 - bl memset - ldr r0, _0811AFEC @ =sub_811B08C - bl SetVBlankCallback - ldr r0, _0811AFF0 @ =sub_811B0C4 - bl SetHBlankCallback - ldr r3, _0811AFF4 @ =0x04000208 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _0811AFF8 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x3 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _0811AFFC @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x18 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AFE4: .4byte 0x0200c000 -_0811AFE8: .4byte gUnknown_03005560 -_0811AFEC: .4byte sub_811B08C -_0811AFF0: .4byte sub_811B0C4 -_0811AFF4: .4byte 0x04000208 -_0811AFF8: .4byte 0x04000200 -_0811AFFC: .4byte REG_DISPSTAT - thumb_func_end sub_811AF7C - - thumb_func_start sub_811B000 -sub_811B000: @ 811B000 - push {r4-r7,lr} - ldr r2, _0811B07C @ =0x0200c000 - ldrb r1, [r2] - movs r1, 0 - strb r1, [r2] - ldrh r4, [r0, 0xA] - ldrh r2, [r0, 0xC] - lsls r3, r2, 16 - asrs r3, 24 - movs r5, 0x84 - lsls r5, 5 - adds r1, r4, r5 - strh r1, [r0, 0xA] - movs r1, 0xC0 - lsls r1, 1 - adds r2, r1 - strh r2, [r0, 0xC] - movs r5, 0 - lsls r7, r3, 16 -_0811B026: - lsrs r0, r4, 8 - asrs r1, r7, 16 - bl Sin - ldr r2, _0811B080 @ =gUnknown_03004DE0 - lsls r1, r5, 1 - adds r1, r2 - ldr r6, _0811B07C @ =0x0200c000 - ldrh r2, [r6, 0x16] - adds r0, r2 - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x84 - lsls r1, 5 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x9F - bls _0811B026 - ldr r0, _0811B084 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811B06A - ldr r0, _0811B088 @ =sub_811AF44 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B06A: - ldrb r0, [r6] - adds r0, 0x1 - ldrb r1, [r6] - strb r0, [r6] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B07C: .4byte 0x0200c000 -_0811B080: .4byte gUnknown_03004DE0 -_0811B084: .4byte gPaletteFade -_0811B088: .4byte sub_811AF44 - thumb_func_end sub_811B000 - - thumb_func_start sub_811B08C -sub_811B08C: @ 811B08C - push {lr} - bl sub_811D67C - ldr r0, _0811B0B4 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811B0AE - ldr r1, _0811B0B8 @ =0x040000d4 - ldr r0, _0811B0BC @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811B0C0 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811B0AE: - pop {r0} - bx r0 - .align 2, 0 -_0811B0B4: .4byte 0x0200c000 -_0811B0B8: .4byte 0x040000d4 -_0811B0BC: .4byte gUnknown_03004DE0 -_0811B0C0: .4byte 0x800000a0 - thumb_func_end sub_811B08C - - thumb_func_start sub_811B0C4 -sub_811B0C4: @ 811B0C4 - ldr r1, _0811B0E4 @ =gUnknown_03004DE0 - ldr r0, _0811B0E8 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811B0EC @ =REG_BG1VOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811B0E4: .4byte gUnknown_03004DE0 -_0811B0E8: .4byte REG_VCOUNT -_0811B0EC: .4byte REG_BG1VOFS - thumb_func_end sub_811B0C4 - - thumb_func_start sub_811B0F0 -sub_811B0F0: @ 811B0F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B120 @ =gUnknown_083FD7C0 - ldr r2, _0811B124 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B102: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B102 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B120: .4byte gUnknown_083FD7C0 -_0811B124: .4byte gTasks - thumb_func_end sub_811B0F0 - - thumb_func_start sub_811B128 -sub_811B128: @ 811B128 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - movs r3, 0x10 - strh r3, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0x10] - movs r0, 0x80 - lsls r0, 7 - strh r0, [r4, 0x12] - ldr r1, _0811B1BC @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xF0 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - ldr r0, _0811B1C0 @ =0x00003f41 - strh r0, [r1, 0xE] - lsls r3, 8 - strh r3, [r1, 0x10] - movs r1, 0 - add r5, sp, 0x4 - add r6, sp, 0x8 - ldr r3, _0811B1C4 @ =gUnknown_03005560 - movs r2, 0xF0 -_0811B168: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811B168 - ldr r0, _0811B1C8 @ =sub_811B520 - bl SetVBlankCallback - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_811D6A8 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _0811B1CC @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _0811B1D0 @ =gUnknown_083FBB88 - ldr r1, [sp, 0x8] - movs r2, 0xB0 - lsls r2, 2 - bl CpuSet - ldr r0, _0811B1D4 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811B1BC: .4byte 0x0200c000 -_0811B1C0: .4byte 0x00003f41 -_0811B1C4: .4byte gUnknown_03005560 -_0811B1C8: .4byte sub_811B520 -_0811B1CC: .4byte 0x01000400 -_0811B1D0: .4byte gUnknown_083FBB88 -_0811B1D4: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811B128 - - thumb_func_start sub_811B1D8 -sub_811B1D8: @ 811B1D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - adds r7, r0, 0 - ldr r5, _0811B260 @ =gUnknown_083FDB44 - add r1, sp, 0xC - add r0, sp, 0x8 - bl sub_811D6A8 - movs r1, 0 - ldr r0, [sp, 0x8] - mov r9, r0 - ldr r6, _0811B264 @ =gUnknown_03004DE0 - mov r8, r6 - movs r0, 0xF0 - lsls r0, 8 - mov r12, r0 -_0811B1FE: - movs r0, 0 - lsls r3, r1, 16 - asrs r4, r3, 11 -_0811B204: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r4, r2 - lsls r1, 1 - add r1, r9 - ldrh r0, [r5] - mov r6, r12 - orrs r0, r6 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - adds r5, 0x2 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x1D - ble _0811B204 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0811B1FE - movs r6, 0x10 - ldrsh r2, [r7, r6] - movs r1, 0x12 - ldrsh r0, [r7, r1] - str r0, [sp] - movs r0, 0xA0 - str r0, [sp, 0x4] - mov r0, r8 - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - movs r0, 0x1 - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B260: .4byte gUnknown_083FDB44 -_0811B264: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B1D8 - - thumb_func_start sub_811B268 -sub_811B268: @ 811B268 - push {r4,lr} - sub sp, 0x8 - adds r2, r0, 0 - ldr r1, _0811B2E8 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r3, [r2, 0xE] - movs r4, 0xE - ldrsh r0, [r2, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _0811B28C - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811B296 -_0811B28C: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - movs r0, 0x2 - strh r0, [r2, 0xE] -_0811B296: - ldrh r0, [r2, 0xA] - lsls r0, 8 - ldrh r1, [r2, 0xC] - orrs r0, r1 - strh r0, [r4, 0x10] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF - ble _0811B2AE - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0811B2AE: - ldrh r0, [r2, 0x10] - adds r0, 0x8 - strh r0, [r2, 0x10] - ldr r0, _0811B2EC @ =0xffffff00 - adds r1, r0, 0 - ldrh r3, [r2, 0x12] - adds r1, r3 - strh r1, [r2, 0x12] - ldr r0, _0811B2F0 @ =gUnknown_03004DE0 - movs r3, 0x10 - ldrsh r2, [r2, r3] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r1, 0xA0 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B2E8: .4byte 0x0200c000 -_0811B2EC: .4byte 0xffffff00 -_0811B2F0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B268 - - thumb_func_start sub_811B2F4 -sub_811B2F4: @ 811B2F4 - push {r4,r5,lr} - sub sp, 0x8 - adds r3, r0, 0 - ldr r1, _0811B374 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r2, [r3, 0xE] - movs r4, 0xE - ldrsh r0, [r3, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _0811B318 - subs r0, r2, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811B322 -_0811B318: - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - movs r0, 0x2 - strh r0, [r3, 0xE] -_0811B322: - ldrh r0, [r3, 0xA] - lsls r1, r0, 8 - ldrh r2, [r3, 0xC] - orrs r1, r2 - strh r1, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bne _0811B338 - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] -_0811B338: - ldrh r0, [r3, 0x10] - adds r0, 0x8 - strh r0, [r3, 0x10] - ldr r5, _0811B378 @ =0xffffff00 - adds r1, r5, 0 - ldrh r0, [r3, 0x12] - adds r1, r0 - strh r1, [r3, 0x12] - ldr r0, _0811B37C @ =gUnknown_03004DE0 - movs r5, 0x10 - ldrsh r2, [r3, r5] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r1, 0xA0 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811B374: .4byte 0x0200c000 -_0811B378: .4byte 0xffffff00 -_0811B37C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B2F4 - - thumb_func_start sub_811B380 -sub_811B380: @ 811B380 - push {r4-r7,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r5, _0811B3E0 @ =0x0200c000 - ldrb r0, [r5] - movs r7, 0 - strb r7, [r5] - ldrh r0, [r4, 0x10] - adds r0, 0x8 - strh r0, [r4, 0x10] - ldr r0, _0811B3E4 @ =0xffffff00 - adds r1, r0, 0 - ldrh r3, [r4, 0x12] - adds r1, r3 - strh r1, [r4, 0x12] - ldr r0, _0811B3E8 @ =gUnknown_03004DE0 - movs r3, 0x10 - ldrsh r2, [r4, r3] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r6, 0xA0 - str r6, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bgt _0811B3CE - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - strh r6, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xC] - strh r7, [r4, 0xE] -_0811B3CE: - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B3E0: .4byte 0x0200c000 -_0811B3E4: .4byte 0xffffff00 -_0811B3E8: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B380 - - thumb_func_start sub_811B3EC -sub_811B3EC: @ 811B3EC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811B488 @ =0x0200c000 - ldrb r1, [r0] - movs r3, 0 - strb r3, [r0] - ldrh r2, [r4, 0xC] - movs r0, 0xC - ldrsh r1, [r4, r0] - ldr r0, _0811B48C @ =0x000003ff - cmp r1, r0 - bgt _0811B40A - adds r0, r2, 0 - adds r0, 0x80 - strh r0, [r4, 0xC] -_0811B40A: - ldrh r1, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811B426 - ldrh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 24 - subs r0, r1, r0 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0811B426 - strh r3, [r4, 0xA] -_0811B426: - ldr r0, _0811B490 @ =gUnknown_03004DE0 - movs r1, 0xA - ldrsh r3, [r4, r1] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D764 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0811B462 - ldr r1, _0811B494 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811B498 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811B49C @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811B4A0 @ =sub_811B0F0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B462: - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0811B476 - adds r0, r1, 0x1 - strh r0, [r4, 0xE] - ldr r0, _0811B4A4 @ =sub_811B54C - bl SetVBlankCallback -_0811B476: - ldr r0, _0811B488 @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B488: .4byte 0x0200c000 -_0811B48C: .4byte 0x000003ff -_0811B490: .4byte gUnknown_03004DE0 -_0811B494: .4byte 0x040000b0 -_0811B498: .4byte 0x0000c5ff -_0811B49C: .4byte 0x00007fff -_0811B4A0: .4byte sub_811B0F0 -_0811B4A4: .4byte sub_811B54C - thumb_func_end sub_811B3EC - - thumb_func_start sub_811B4A8 -sub_811B4A8: @ 811B4A8 - push {lr} - ldr r1, _0811B500 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811B504 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811B508 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D67C - ldr r2, _0811B50C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811B4DE - ldr r1, _0811B510 @ =0x040000d4 - ldr r0, _0811B514 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811B518 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811B4DE: - ldr r1, _0811B51C @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - adds r1, 0xC - ldrh r0, [r2, 0xE] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x10] - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0811B500: .4byte 0x040000b0 -_0811B504: .4byte 0x0000c5ff -_0811B508: .4byte 0x00007fff -_0811B50C: .4byte 0x0200c000 -_0811B510: .4byte 0x040000d4 -_0811B514: .4byte gUnknown_03004DE0 -_0811B518: .4byte 0x800000a0 -_0811B51C: .4byte REG_WININ - thumb_func_end sub_811B4A8 - - thumb_func_start sub_811B520 -sub_811B520: @ 811B520 - push {lr} - bl sub_811B4A8 - ldr r1, _0811B53C @ =0x040000b0 - ldr r0, _0811B540 @ =gUnknown_03005560 - str r0, [r1] - ldr r0, _0811B544 @ =REG_BG0HOFS - str r0, [r1, 0x4] - ldr r0, _0811B548 @ =0xa2400001 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0811B53C: .4byte 0x040000b0 -_0811B540: .4byte gUnknown_03005560 -_0811B544: .4byte REG_BG0HOFS -_0811B548: .4byte 0xa2400001 - thumb_func_end sub_811B520 - - thumb_func_start sub_811B54C -sub_811B54C: @ 811B54C - push {lr} - bl sub_811B4A8 - ldr r1, _0811B568 @ =0x040000b0 - ldr r0, _0811B56C @ =gUnknown_03005560 - str r0, [r1] - ldr r0, _0811B570 @ =REG_WIN0H - str r0, [r1, 0x4] - ldr r0, _0811B574 @ =0xa2400001 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0811B568: .4byte 0x040000b0 -_0811B56C: .4byte gUnknown_03005560 -_0811B570: .4byte REG_WIN0H -_0811B574: .4byte 0xa2400001 - thumb_func_end sub_811B54C - - thumb_func_start sub_811B578 -sub_811B578: @ 811B578 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B5A8 @ =gUnknown_083FD7D8 - ldr r2, _0811B5AC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B58A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B58A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B5A8: .4byte gUnknown_083FD7D8 -_0811B5AC: .4byte gTasks - thumb_func_end sub_811B578 - - thumb_func_start sub_811B5B0 -sub_811B5B0: @ 811B5B0 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl sub_811D6A8 - ldr r0, _0811B5F0 @ =gUnknown_083FC108 - ldr r1, [sp, 0x8] - movs r2, 0x20 - bl CpuSet - movs r0, 0 - str r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, _0811B5F4 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r0, _0811B5F8 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B5F0: .4byte gUnknown_083FC108 -_0811B5F4: .4byte 0x05000200 -_0811B5F8: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811B5B0 - - thumb_func_start sub_811B5FC -sub_811B5FC: @ 811B5FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r0, 0 - ldr r1, _0811B67C @ =gUnknown_083FD7E4 - mov r0, sp - movs r2, 0x4 - bl memcpy - add r4, sp, 0x4 - ldr r1, _0811B680 @ =gUnknown_083FD7E8 - adds r0, r4, 0 - movs r2, 0xA - bl memcpy - bl Random - movs r5, 0x1 - ands r5, r0 - movs r1, 0 - mov r8, r4 - ldr r6, _0811B684 @ =gUnknown_0202FF84 -_0811B62A: - lsls r5, 16 - asrs r5, 16 - lsls r0, r5, 1 - add r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - str r0, [r6] - lsls r4, r1, 16 - asrs r4, 16 - lsls r0, r4, 5 - adds r0, 0x10 - str r0, [r6, 0x4] - str r5, [r6, 0x8] - lsls r0, r4, 1 - add r0, r8 - movs r1, 0 - ldrsh r0, [r0, r1] - str r0, [r6, 0xC] - movs r0, 0x2D - bl FieldEffectStart - adds r4, 0x1 - lsls r4, 16 - movs r0, 0x1 - eors r5, r0 - lsls r5, 16 - lsrs r5, 16 - lsrs r1, r4, 16 - asrs r4, 16 - cmp r4, 0x4 - ble _0811B62A - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B67C: .4byte gUnknown_083FD7E4 -_0811B680: .4byte gUnknown_083FD7E8 -_0811B684: .4byte gUnknown_0202FF84 - thumb_func_end sub_811B5FC - - thumb_func_start sub_811B688 -sub_811B688: @ 811B688 - push {lr} - movs r0, 0x2D - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - bne _0811B6A8 - bl sub_811D6D4 - ldr r0, _0811B6B0 @ =sub_811B578 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B6A8: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811B6B0: .4byte sub_811B578 - thumb_func_end sub_811B688 - - thumb_func_start FldEff_Pokeball -FldEff_Pokeball: @ 811B6B4 - push {r4,r5,lr} - ldr r0, _0811B710 @ =gSpriteTemplate_83FD98C - ldr r5, _0811B714 @ =gUnknown_0202FF84 - movs r2, 0 - ldrsh r1, [r5, r2] - movs r3, 0x4 - ldrsh r2, [r5, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0811B718 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x5] - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r0, [r5, 0x8] - strh r0, [r4, 0x2E] - ldr r0, [r5, 0xC] - strh r0, [r4, 0x30] - ldr r0, _0811B71C @ =0x0000ffff - strh r0, [r4, 0x32] - adds r0, r4, 0 - bl InitSpriteAffineAnim - ldrb r1, [r5, 0x8] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811B710: .4byte gSpriteTemplate_83FD98C -_0811B714: .4byte gUnknown_0202FF84 -_0811B718: .4byte gSprites -_0811B71C: .4byte 0x0000ffff - thumb_func_end FldEff_Pokeball - - thumb_func_start sub_811B720 -sub_811B720: @ 811B720 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r1, _0811B740 @ =gUnknown_083FD7F2 - mov r0, sp - movs r2, 0x4 - bl memcpy - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811B744 - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - b _0811B7D6 - .align 2, 0 -_0811B740: .4byte gUnknown_083FD7F2 -_0811B744: - ldrh r0, [r4, 0x20] - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r0, 0xF0 - bhi _0811B7B2 - asrs r0, r1, 19 - lsls r0, 16 - ldrh r1, [r4, 0x22] - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r1, 16 - lsrs r2, r0, 16 - asrs r5, r0, 16 - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r5, r0 - beq _0811B7B2 - strh r2, [r4, 0x32] - ldr r0, _0811B7E0 @ =REG_BG0CNT - ldrh r2, [r0] - lsrs r2, 8 - movs r0, 0x1F - ands r2, r0 - lsls r2, 11 - movs r0, 0xC0 - lsls r0, 19 - adds r2, r0 - lsls r1, 16 - asrs r1, 16 - subs r0, r1, 0x2 - lsls r0, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - ldr r6, _0811B7E4 @ =0x0000f001 - adds r3, r6, 0 - strh r3, [r0] - subs r0, r1, 0x1 - lsls r0, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - lsls r0, r1, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - adds r1, 0x1 - lsls r1, 5 - adds r1, r5 - lsls r1, 1 - adds r1, r2 - strh r3, [r1] -_0811B7B2: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, 0xF - lsls r0, 16 - movs r1, 0x87 - lsls r1, 17 - cmp r0, r1 - bls _0811B7D6 - adds r0, r4, 0 - movs r1, 0x2D - bl FieldEffectStop -_0811B7D6: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811B7E0: .4byte REG_BG0CNT -_0811B7E4: .4byte 0x0000f001 - thumb_func_end sub_811B720 - - thumb_func_start sub_811B7E8 -sub_811B7E8: @ 811B7E8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B818 @ =gUnknown_083FD7F8 - ldr r2, _0811B81C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B7FA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B7FA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B818: .4byte gUnknown_083FD7F8 -_0811B81C: .4byte gTasks - thumb_func_end sub_811B7E8 - - thumb_func_start sub_811B820 -sub_811B820: @ 811B820 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811B870 @ =0x0200c000 - movs r0, 0 - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - ldr r0, _0811B874 @ =0x0000f0f1 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811B878 @ =gUnknown_03005560 - ldr r2, _0811B87C @ =0x0000f3f4 -_0811B844: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811B844 - ldr r0, _0811B880 @ =sub_811BC2C - bl SetVBlankCallback - ldr r1, _0811B870 @ =0x0200c000 - movs r0, 0x78 - strh r0, [r1, 0x2C] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B870: .4byte 0x0200c000 -_0811B874: .4byte 0x0000f0f1 -_0811B878: .4byte gUnknown_03005560 -_0811B87C: .4byte 0x0000f3f4 -_0811B880: .4byte sub_811BC2C - thumb_func_end sub_811B820 - - thumb_func_start sub_811B884 -sub_811B884: @ 811B884 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811B904 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x2C - ldrsh r3, [r4, r1] - movs r1, 0x1 - negs r1, r1 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811B908 @ =gUnknown_03004DE0 -_0811B8B0: - movs r3, 0x2A - ldrsh r2, [r4, r3] - lsls r2, 1 - adds r2, r5 - ldrh r0, [r4, 0x28] - adds r0, 0x1 - movs r3, 0xF0 - lsls r3, 7 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811B8B0 - ldr r2, _0811B904 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - adds r0, 0x10 - strh r0, [r2, 0x2C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xEF - ble _0811B8F2 - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811B8F2: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811B904: .4byte 0x0200c000 -_0811B908: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B884 - - thumb_func_start sub_811B90C -sub_811B90C: @ 811B90C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r0, 0 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - ldr r4, _0811B988 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2E - ldrsh r1, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0xF0 - bl sub_811D8FC - adds r6, r4, 0 - ldr r5, _0811B98C @ =gUnknown_03004DE0 - mov r8, r5 - add r5, sp, 0xC -_0811B946: - movs r1, 0x78 - ldrh r0, [r4, 0x28] - adds r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x4F - ble _0811B95C - ldrh r1, [r4, 0x28] - movs r3, 0xF0 -_0811B95C: - movs r0, 0x2A - ldrsh r2, [r4, r0] - lsls r2, 1 - add r2, r8 - lsls r1, 16 - asrs r1, 8 - lsls r0, r3, 16 - asrs r3, r0, 16 - orrs r3, r1 - strh r3, [r2] - ldrb r0, [r5] - cmp r0, 0 - bne _0811B990 - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - strb r0, [r5] - b _0811B946 - .align 2, 0 -_0811B988: .4byte 0x0200c000 -_0811B98C: .4byte gUnknown_03004DE0 -_0811B990: - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0x9F - ble _0811B9AA - movs r0, 0xF0 - strh r0, [r4, 0x2C] - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - b _0811B9D0 -_0811B9AA: - movs r2, 0x2A - ldrsh r0, [r4, r2] - cmp r0, r1 - bge _0811B9D0 - ldr r4, _0811B9E8 @ =gUnknown_03004DE0 - ldr r2, _0811B9EC @ =0x0200c000 -_0811B9B6: - ldrh r0, [r2, 0x2A] - adds r0, 0x1 - strh r0, [r2, 0x2A] - lsls r0, 16 - asrs r0, 15 - adds r0, r4 - strh r3, [r0] - movs r5, 0x2A - ldrsh r1, [r2, r5] - movs r5, 0x2E - ldrsh r0, [r2, r5] - cmp r1, r0 - blt _0811B9B6 -_0811B9D0: - ldrb r0, [r6] - adds r0, 0x1 - ldrb r1, [r6] - strb r0, [r6] - movs r0, 0 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B9E8: .4byte gUnknown_03004DE0 -_0811B9EC: .4byte 0x0200c000 - thumb_func_end sub_811B90C - - thumb_func_start sub_811B9F0 -sub_811B9F0: @ 811B9F0 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811BA68 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x2C - ldrsh r3, [r4, r1] - movs r1, 0xA0 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811BA6C @ =gUnknown_03004DE0 -_0811BA1A: - movs r0, 0x2A - ldrsh r2, [r4, r0] - lsls r2, 1 - adds r2, r5 - ldrh r0, [r4, 0x28] - lsls r0, 8 - movs r1, 0xF0 - orrs r0, r1 - strh r0, [r2] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811BA1A - ldr r2, _0811BA68 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - subs r0, 0x10 - strh r0, [r2, 0x2C] - lsls r0, 16 - cmp r0, 0 - bgt _0811BA56 - movs r0, 0xA0 - strh r0, [r2, 0x2E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811BA56: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811BA68: .4byte 0x0200c000 -_0811BA6C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B9F0 - - thumb_func_start sub_811BA70 -sub_811BA70: @ 811BA70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r8, r0 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - ldr r4, _0811BAF0 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2E - ldrsh r1, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl sub_811D8FC - ldr r3, _0811BAF4 @ =gUnknown_03004DE0 - mov r9, r3 - mov r10, r4 - add r6, sp, 0xC -_0811BAAE: - movs r5, 0x2A - ldrsh r0, [r4, r5] - lsls r0, 1 - mov r7, r9 - adds r5, r0, r7 - ldrb r1, [r5] - ldrh r2, [r4, 0x28] - adds r3, r2, 0 - movs r7, 0x2E - ldrsh r0, [r4, r7] - cmp r0, 0x50 - bgt _0811BACA - movs r2, 0x78 - adds r1, r3, 0 -_0811BACA: - lsls r0, r2, 16 - asrs r0, 8 - lsls r1, 16 - asrs r1, 16 - orrs r1, r0 - movs r3, 0 - strh r1, [r5] - ldrb r0, [r6] - cmp r0, 0 - bne _0811BAF8 - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - strb r0, [r6] - b _0811BAAE - .align 2, 0 -_0811BAF0: .4byte 0x0200c000 -_0811BAF4: .4byte gUnknown_03004DE0 -_0811BAF8: - ldrh r0, [r4, 0x2E] - subs r0, 0x8 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bgt _0811BB12 - strh r3, [r4, 0x2C] - mov r1, r8 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _0811BB3A -_0811BB12: - movs r3, 0x2A - ldrsh r0, [r4, r3] - cmp r0, r2 - ble _0811BB3A - ldr r4, _0811BB58 @ =gUnknown_03004DE0 - ldr r2, _0811BB5C @ =0x0200c000 - adds r3, r1, 0 -_0811BB20: - ldrh r0, [r2, 0x2A] - subs r0, 0x1 - strh r0, [r2, 0x2A] - lsls r0, 16 - asrs r0, 15 - adds r0, r4 - strh r3, [r0] - movs r5, 0x2A - ldrsh r1, [r2, r5] - movs r7, 0x2E - ldrsh r0, [r2, r7] - cmp r1, r0 - bgt _0811BB20 -_0811BB3A: - mov r1, r10 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r1, [r1] - mov r2, r10 - strb r0, [r2] - movs r0, 0 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BB58: .4byte gUnknown_03004DE0 -_0811BB5C: .4byte 0x0200c000 - thumb_func_end sub_811BA70 - - thumb_func_start sub_811BB60 -sub_811BB60: @ 811BB60 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811BBE4 @ =0x0200c000 - ldrb r0, [r4] - movs r1, 0 - strb r1, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2C - ldrsh r3, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811BBE8 @ =gUnknown_03004DE0 -_0811BB88: - movs r2, 0x78 - ldrh r3, [r4, 0x28] - movs r1, 0x28 - ldrsh r0, [r4, r1] - cmp r0, 0x77 - ble _0811BB98 - movs r2, 0 - movs r3, 0xF0 -_0811BB98: - movs r0, 0x2A - ldrsh r1, [r4, r0] - lsls r1, 1 - adds r1, r5 - lsls r2, 8 - lsls r0, r3, 16 - asrs r0, 16 - orrs r0, r2 - strh r0, [r1] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811BB88 - ldr r2, _0811BBE4 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - adds r0, 0x10 - strh r0, [r2, 0x2C] - movs r1, 0x28 - ldrsh r0, [r2, r1] - cmp r0, 0x78 - ble _0811BBD2 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811BBD2: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811BBE4: .4byte 0x0200c000 -_0811BBE8: .4byte gUnknown_03004DE0 - thumb_func_end sub_811BB60 - - thumb_func_start sub_811BBEC -sub_811BBEC: @ 811BBEC - push {lr} - ldr r1, _0811BC1C @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811BC20 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811BC24 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811BC28 @ =sub_811B7E8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811BC1C: .4byte 0x040000b0 -_0811BC20: .4byte 0x0000c5ff -_0811BC24: .4byte 0x00007fff -_0811BC28: .4byte sub_811B7E8 - thumb_func_end sub_811BBEC - - thumb_func_start sub_811BC2C -sub_811BC2C: @ 811BC2C - push {r4,lr} - ldr r4, _0811BC94 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811BC98 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811BC9C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811BCA0 @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811BC62 - ldr r1, _0811BCA4 @ =0x040000d4 - ldr r0, _0811BCA8 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811BCAC @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811BC62: - ldr r1, _0811BCB0 @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r2, _0811BCB4 @ =REG_WIN0H - ldr r0, _0811BCA8 @ =gUnknown_03004DE0 - movs r1, 0xF0 - lsls r1, 3 - adds r0, r1 - ldrh r1, [r0] - strh r1, [r2] - str r0, [r4] - str r2, [r4, 0x4] - ldr r0, _0811BCB8 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811BC94: .4byte 0x040000b0 -_0811BC98: .4byte 0x0000c5ff -_0811BC9C: .4byte 0x00007fff -_0811BCA0: .4byte 0x0200c000 -_0811BCA4: .4byte 0x040000d4 -_0811BCA8: .4byte gUnknown_03004DE0 -_0811BCAC: .4byte 0x800000a0 -_0811BCB0: .4byte REG_WININ -_0811BCB4: .4byte REG_WIN0H -_0811BCB8: .4byte 0xa2400001 - thumb_func_end sub_811BC2C - - thumb_func_start sub_811BCBC -sub_811BCBC: @ 811BCBC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811BCEC @ =gUnknown_083FD814 - ldr r2, _0811BCF0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811BCCE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811BCCE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811BCEC: .4byte gUnknown_083FD814 -_0811BCF0: .4byte gTasks - thumb_func_end sub_811BCBC - - thumb_func_start sub_811BCF4 -sub_811BCF4: @ 811BCF4 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - ldr r4, _0811BD48 @ =gUnknown_03005560 - ldr r3, _0811BD4C @ =0x0200c000 -_0811BD06: - lsls r0, r2, 1 - adds r0, r4 - ldrh r1, [r3, 0x16] - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x9F - bls _0811BD06 - ldr r0, _0811BD50 @ =sub_811BE3C - bl SetVBlankCallback - ldr r0, _0811BD54 @ =sub_811BE74 - bl SetHBlankCallback - ldr r2, _0811BD58 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811BD5C @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811BD48: .4byte gUnknown_03005560 -_0811BD4C: .4byte 0x0200c000 -_0811BD50: .4byte sub_811BE3C -_0811BD54: .4byte sub_811BE74 -_0811BD58: .4byte 0x04000200 -_0811BD5C: .4byte REG_DISPSTAT - thumb_func_end sub_811BCF4 - - thumb_func_start sub_811BD60 -sub_811BD60: @ 811BD60 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r6, r0, 0 - ldr r1, _0811BE28 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r2, [r6, 0xC] - lsls r1, r2, 16 - asrs r0, r1, 24 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r4, [r6, 0xA] - movs r0, 0xC0 - lsls r0, 1 - mov r8, r0 - movs r5, 0x80 - lsls r5, 3 - adds r0, r4, r5 - strh r0, [r6, 0xA] - ldr r0, _0811BE2C @ =0x1fff0000 - cmp r1, r0 - bgt _0811BD9A - movs r1, 0xC0 - lsls r1, 1 - adds r0, r2, r1 - strh r0, [r6, 0xC] -_0811BD9A: - movs r5, 0 - lsls r7, r3, 16 -_0811BD9E: - lsrs r0, r4, 8 - asrs r1, r7, 16 - bl Sin - ldr r1, _0811BE30 @ =gUnknown_03004DE0 - lsls r2, r5, 1 - adds r2, r1 - ldr r1, _0811BE28 @ =0x0200c000 - ldrh r1, [r1, 0x16] - adds r0, r1 - strh r0, [r2] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x9F - bls _0811BD9E - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x51 - bne _0811BDEC - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x10] - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r3, 0x10 - bl BeginNormalPaletteFade -_0811BDEC: - movs r5, 0x10 - ldrsh r0, [r6, r5] - cmp r0, 0 - beq _0811BE0E - ldr r0, _0811BE34 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811BE0E - ldr r0, _0811BE38 @ =sub_811BCBC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811BE0E: - ldr r0, _0811BE28 @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BE28: .4byte 0x0200c000 -_0811BE2C: .4byte 0x1fff0000 -_0811BE30: .4byte gUnknown_03004DE0 -_0811BE34: .4byte gPaletteFade -_0811BE38: .4byte sub_811BCBC - thumb_func_end sub_811BD60 - - thumb_func_start sub_811BE3C -sub_811BE3C: @ 811BE3C - push {lr} - bl sub_811D67C - ldr r0, _0811BE64 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811BE5E - ldr r1, _0811BE68 @ =0x040000d4 - ldr r0, _0811BE6C @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811BE70 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811BE5E: - pop {r0} - bx r0 - .align 2, 0 -_0811BE64: .4byte 0x0200c000 -_0811BE68: .4byte 0x040000d4 -_0811BE6C: .4byte gUnknown_03004DE0 -_0811BE70: .4byte 0x800000a0 - thumb_func_end sub_811BE3C - - thumb_func_start sub_811BE74 -sub_811BE74: @ 811BE74 - ldr r1, _0811BE94 @ =gUnknown_03004DE0 - ldr r0, _0811BE98 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811BE9C @ =REG_BG1VOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811BE94: .4byte gUnknown_03004DE0 -_0811BE98: .4byte REG_VCOUNT -_0811BE9C: .4byte REG_BG1VOFS - thumb_func_end sub_811BE74 - - thumb_func_start sub_811BEA0 -sub_811BEA0: @ 811BEA0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811BED0 @ =gUnknown_083FD81C - ldr r2, _0811BED4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811BEB2: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811BEB2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811BED0: .4byte gUnknown_083FD81C -_0811BED4: .4byte gTasks - thumb_func_end sub_811BEA0 - - thumb_func_start sub_811BED8 -sub_811BED8: @ 811BED8 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811BF20 @ =0x0200c000 - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xF0 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811BF24 @ =gUnknown_03005560 - movs r2, 0xF2 -_0811BEFC: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9F - bls _0811BEFC - ldr r0, _0811BF28 @ =sub_811C004 - bl SetVBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811BF20: .4byte 0x0200c000 -_0811BF24: .4byte gUnknown_03005560 -_0811BF28: .4byte sub_811C004 - thumb_func_end sub_811BED8 - - thumb_func_start sub_811BF2C -sub_811BF2C: @ 811BF2C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - ldr r1, _0811BFBC @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r7, _0811BFC0 @ =gUnknown_03004DE0 - ldrh r0, [r4, 0xC] - ldrb r5, [r4, 0xC] - adds r0, 0x10 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0xA] - adds r0, 0x8 - strh r0, [r4, 0xA] - movs r6, 0 - movs r0, 0x1 - mov r8, r0 -_0811BF52: - adds r0, r5, 0 - movs r1, 0x28 - bl Sin - ldrh r1, [r4, 0xA] - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r0, 0 - bge _0811BF68 - movs r1, 0 -_0811BF68: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811BF72 - movs r1, 0xF0 -_0811BF72: - lsls r0, r1, 16 - asrs r0, 16 - lsls r1, r0, 8 - movs r2, 0xF1 - orrs r1, r2 - strh r1, [r7] - cmp r0, 0xEF - bgt _0811BF86 - movs r0, 0 - mov r8, r0 -_0811BF86: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, 0x2 - cmp r6, 0x9F - bls _0811BF52 - mov r1, r8 - cmp r1, 0 - beq _0811BFA4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811BFA4: - ldr r0, _0811BFBC @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BFBC: .4byte 0x0200c000 -_0811BFC0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811BF2C - - thumb_func_start sub_811BFC4 -sub_811BFC4: @ 811BFC4 - push {lr} - ldr r1, _0811BFF4 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811BFF8 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811BFFC @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811C000 @ =sub_811BEA0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811BFF4: .4byte 0x040000b0 -_0811BFF8: .4byte 0x0000c5ff -_0811BFFC: .4byte 0x00007fff -_0811C000: .4byte sub_811BEA0 - thumb_func_end sub_811BFC4 - - thumb_func_start sub_811C004 -sub_811C004: @ 811C004 - push {r4,lr} - ldr r4, _0811C060 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C064 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C068 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811C06C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C03A - ldr r1, _0811C070 @ =0x040000d4 - ldr r0, _0811C074 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C078 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C03A: - ldr r1, _0811C07C @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r0, _0811C080 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C084 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811C088 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C060: .4byte 0x040000b0 -_0811C064: .4byte 0x0000c5ff -_0811C068: .4byte 0x00007fff -_0811C06C: .4byte 0x0200c000 -_0811C070: .4byte 0x040000d4 -_0811C074: .4byte gUnknown_03004DE0 -_0811C078: .4byte 0x800000a0 -_0811C07C: .4byte REG_WININ -_0811C080: .4byte gUnknown_03005560 -_0811C084: .4byte REG_WIN0H -_0811C088: .4byte 0xa2400001 - thumb_func_end sub_811C004 - - thumb_func_start sub_811C08C -sub_811C08C: @ 811C08C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0A8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0A8: .4byte gTasks - thumb_func_end sub_811C08C - - thumb_func_start sub_811C0AC -sub_811C0AC: @ 811C0AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0C8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x1 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0C8: .4byte gTasks - thumb_func_end sub_811C0AC - - thumb_func_start sub_811C0CC -sub_811C0CC: @ 811C0CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0E8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x2 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0E8: .4byte gTasks - thumb_func_end sub_811C0CC - - thumb_func_start sub_811C0EC -sub_811C0EC: @ 811C0EC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C108 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x3 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C108: .4byte gTasks - thumb_func_end sub_811C0EC - - thumb_func_start sub_811C10C -sub_811C10C: @ 811C10C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C128 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x4 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C128: .4byte gTasks - thumb_func_end sub_811C10C - - thumb_func_start sub_811C12C -sub_811C12C: @ 811C12C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811C15C @ =gUnknown_083FD828 - ldr r2, _0811C160 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811C13E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811C13E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811C15C: .4byte gUnknown_083FD828 -_0811C160: .4byte gTasks - thumb_func_end sub_811C12C - - thumb_func_start sub_811C164 -sub_811C164: @ 811C164 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - adds r0, r4, 0 - bl sub_811C7B0 - movs r0, 0 - strh r0, [r4, 0xA] - movs r0, 0x1 - strh r0, [r4, 0xC] - movs r0, 0xEF - strh r0, [r4, 0xE] - ldr r1, _0811C1BC @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - movs r0, 0x3E - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811C1C0 @ =gUnknown_03005560 - ldr r2, _0811C1C4 @ =0x0000f0f1 -_0811C196: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9F - bls _0811C196 - ldr r0, _0811C1C8 @ =sub_811C670 - bl SetVBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C1BC: .4byte 0x0200c000 -_0811C1C0: .4byte gUnknown_03005560 -_0811C1C4: .4byte 0x0000f0f1 -_0811C1C8: .4byte sub_811C670 - thumb_func_end sub_811C164 - - thumb_func_start sub_811C1CC -sub_811C1CC: @ 811C1CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - mov r8, r0 - ldr r6, _0811C284 @ =gUnknown_083FDFF4 - add r1, sp, 0x4 - mov r0, sp - bl sub_811D6A8 - ldr r0, _0811C288 @ =gUnknown_083FC348 - ldr r1, [sp, 0x4] - movs r2, 0xF0 - bl CpuSet - ldr r1, _0811C28C @ =gUnknown_083FDB00 - mov r2, r8 - movs r3, 0x26 - ldrsh r0, [r2, r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _0811C290 @ =gUnknown_083FDB14 - ldr r0, _0811C294 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xFA - movs r2, 0xC - bl LoadPalette - movs r1, 0 - ldr r5, [sp] - ldr r0, _0811C298 @ =sub_811C77C - mov r12, r0 - movs r2, 0xF0 - lsls r2, 8 - adds r7, r2, 0 -_0811C222: - movs r0, 0 - lsls r3, r1, 16 - asrs r4, r3, 11 -_0811C228: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r4, r2 - lsls r1, 1 - adds r1, r5 - ldrh r0, [r6] - orrs r0, r7 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - adds r6, 0x2 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x1F - ble _0811C228 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0811C222 - ldr r2, _0811C29C @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811C2A0 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - mov r0, r12 - bl SetHBlankCallback - mov r2, r8 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - movs r0, 0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C284: .4byte gUnknown_083FDFF4 -_0811C288: .4byte gUnknown_083FC348 -_0811C28C: .4byte gUnknown_083FDB00 -_0811C290: .4byte gUnknown_083FDB14 -_0811C294: .4byte gSaveBlock2 -_0811C298: .4byte sub_811C77C -_0811C29C: .4byte 0x04000200 -_0811C2A0: .4byte REG_DISPSTAT - thumb_func_end sub_811C1CC - - thumb_func_start sub_811C2A4 -sub_811C2A4: @ 811C2A4 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r1, _0811C384 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r7, _0811C388 @ =gUnknown_03004DE0 - ldrh r0, [r4, 0xA] - ldrb r5, [r4, 0xA] - adds r0, 0x10 - strh r0, [r4, 0xA] - movs r6, 0 -_0811C2BC: - adds r0, r5, 0 - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0xC] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bge _0811C2D2 - movs r2, 0x1 -_0811C2D2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811C2DC - movs r2, 0xF0 -_0811C2DC: - strh r2, [r7] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, 0x2 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r6, 0x4F - bls _0811C2BC - cmp r6, 0x9F - bhi _0811C334 -_0811C2F6: - adds r0, r5, 0 - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0xE] - subs r1, r0 - lsls r1, 16 - lsrs r2, r1, 16 - cmp r1, 0 - bge _0811C30C - movs r2, 0 -_0811C30C: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xEF - ble _0811C316 - movs r2, 0xEF -_0811C316: - lsls r0, r2, 16 - asrs r0, 8 - movs r1, 0xF0 - orrs r0, r1 - strh r0, [r7] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, 0x2 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r6, 0x9F - bls _0811C2F6 -_0811C334: - ldrh r1, [r4, 0xC] - adds r1, 0x8 - strh r1, [r4, 0xC] - ldrh r0, [r4, 0xE] - subs r0, 0x8 - strh r0, [r4, 0xE] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF0 - ble _0811C34C - movs r0, 0xF0 - strh r0, [r4, 0xC] -_0811C34C: - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _0811C358 - movs r0, 0 - strh r0, [r4, 0xE] -_0811C358: - ldr r0, [r4, 0xC] - cmp r0, 0xF0 - bne _0811C364 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C364: - ldr r1, _0811C384 @ =0x0200c000 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C384: .4byte 0x0200c000 -_0811C388: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C2A4 - - thumb_func_start sub_811C38C -sub_811C38C: @ 811C38C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, _0811C3F8 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - ldr r2, _0811C3FC @ =gUnknown_03004DE0 - adds r5, r0, 0 - movs r3, 0xF0 -_0811C39E: - strh r3, [r2] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, 0x2 - cmp r1, 0x9F - bls _0811C39E - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - strh r1, [r4, 0xC] - strh r1, [r4, 0xE] - ldrh r0, [r5, 0x18] - subs r0, 0x8 - strh r0, [r5, 0x18] - ldrh r0, [r5, 0x1A] - adds r0, 0x8 - strh r0, [r5, 0x1A] - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r1, 0 - bl sub_811CA10 - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r1, 0x1 - bl sub_811CA10 - movs r1, 0x22 - ldrsh r0, [r4, r1] - bl sub_811CA28 - movs r0, 0x68 - bl PlaySE - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C3F8: .4byte 0x0200c000 -_0811C3FC: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C38C - - thumb_func_start sub_811C400 -sub_811C400: @ 811C400 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811C438 @ =0x0200c000 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - movs r1, 0x22 - ldrsh r0, [r4, r1] - bl sub_811CA44 - lsls r0, 16 - cmp r0, 0 - beq _0811C42E - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r1, 0x24 - ldrsh r0, [r4, r1] - bl sub_811CA28 -_0811C42E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C438: .4byte 0x0200c000 - thumb_func_end sub_811C400 - - thumb_func_start sub_811C43C -sub_811C43C: @ 811C43C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldr r7, _0811C4D0 @ =0x0200c000 - ldrh r0, [r7, 0x18] - subs r0, 0x8 - movs r1, 0 - mov r8, r1 - strh r0, [r7, 0x18] - ldrh r0, [r7, 0x1A] - adds r0, 0x8 - strh r0, [r7, 0x1A] - movs r1, 0x24 - ldrsh r0, [r6, r1] - bl sub_811CA44 - lsls r0, 16 - cmp r0, 0 - beq _0811C4C4 - ldrb r0, [r7] - movs r0, 0 - strb r0, [r7] - movs r0, 0 - bl SetVBlankCallback - ldr r1, _0811C4D4 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811C4D8 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811C4DC @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldr r4, _0811C4E0 @ =gUnknown_03004DE0 - movs r5, 0xA0 - lsls r5, 1 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - movs r0, 0xF0 - lsls r0, 3 - adds r4, r0 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - ldr r1, _0811C4E4 @ =REG_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r0, _0811C4E8 @ =REG_BLDY - mov r1, r8 - strh r1, [r0] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - strh r1, [r6, 0xE] - strh r1, [r6, 0x10] - movs r0, 0xBF - strh r0, [r7, 0xE] - ldr r0, _0811C4EC @ =sub_811C700 - bl SetVBlankCallback -_0811C4C4: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C4D0: .4byte 0x0200c000 -_0811C4D4: .4byte 0x040000b0 -_0811C4D8: .4byte 0x0000c5ff -_0811C4DC: .4byte 0x00007fff -_0811C4E0: .4byte gUnknown_03004DE0 -_0811C4E4: .4byte REG_WIN0H -_0811C4E8: .4byte REG_BLDY -_0811C4EC: .4byte sub_811C700 - thumb_func_end sub_811C43C - - thumb_func_start sub_811C4F0 -sub_811C4F0: @ 811C4F0 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r1, _0811C5AC @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - movs r6, 0x1 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - ldrh r2, [r4, 0x10] - movs r3, 0x10 - ldrsh r0, [r4, r3] - adds r7, r1, 0 - cmp r0, 0x4F - bgt _0811C51A - adds r0, r2, 0x2 - strh r0, [r4, 0x10] -_0811C51A: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _0811C526 - movs r0, 0x50 - strh r0, [r4, 0x10] -_0811C526: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - movs r1, 0x1 - ands r0, r1 - ldrh r2, [r4, 0x10] - cmp r0, 0 - beq _0811C58C - movs r3, 0 - lsls r0, r2, 16 - movs r6, 0 - cmp r0, 0 - blt _0811C58C - movs r2, 0x50 - mov r12, r2 - ldr r5, _0811C5B0 @ =gUnknown_03004DE0 -_0811C546: - lsls r0, r3, 16 - asrs r2, r0, 16 - mov r3, r12 - subs r1, r3, r2 - adds r0, r2, 0 - adds r0, 0x50 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - asrs r1, 15 - adds r1, r5 - ldrh r0, [r1] - cmp r0, 0xF - bhi _0811C568 - movs r6, 0x1 - adds r0, 0x1 - strh r0, [r1] -_0811C568: - lsls r0, r3, 16 - asrs r0, 15 - adds r1, r0, r5 - ldrh r0, [r1] - cmp r0, 0xF - bhi _0811C57A - movs r6, 0x1 - adds r0, 0x1 - strh r0, [r1] -_0811C57A: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - movs r2, 0x10 - ldrsh r1, [r4, r2] - ldrh r2, [r4, 0x10] - cmp r0, r1 - ble _0811C546 -_0811C58C: - cmp r2, 0x50 - bne _0811C59A - cmp r6, 0 - bne _0811C59A - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C59A: - ldrb r0, [r7] - adds r0, 0x1 - ldrb r1, [r7] - strb r0, [r7] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C5AC: .4byte 0x0200c000 -_0811C5B0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C4F0 - - thumb_func_start sub_811C5B4 -sub_811C5B4: @ 811C5B4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _0811C5E0 @ =0x0200c000 - ldrb r0, [r4] - movs r6, 0 - strb r6, [r4] - movs r0, 0x1 - negs r0, r0 - ldr r2, _0811C5E4 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - movs r0, 0xFF - strh r0, [r4, 0xE] - strh r6, [r5, 0xE] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811C5E0: .4byte 0x0200c000 -_0811C5E4: .4byte 0x00007fff - thumb_func_end sub_811C5B4 - - thumb_func_start sub_811C5E8 -sub_811C5E8: @ 811C5E8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _0811C628 @ =0x0200c000 - ldrb r0, [r5] - movs r0, 0 - strb r0, [r5] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - ldr r0, _0811C62C @ =gUnknown_03004DE0 - movs r2, 0xE - ldrsh r1, [r4, r2] - movs r2, 0xA0 - lsls r2, 1 - bl memset - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0xF - ble _0811C616 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C616: - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C628: .4byte 0x0200c000 -_0811C62C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C5E8 - - thumb_func_start sub_811C630 -sub_811C630: @ 811C630 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811C664 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811C668 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811C66C @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, [r4] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C664: .4byte 0x040000b0 -_0811C668: .4byte 0x0000c5ff -_0811C66C: .4byte 0x00007fff - thumb_func_end sub_811C630 - - thumb_func_start sub_811C670 -sub_811C670: @ 811C670 - push {r4,lr} - ldr r4, _0811C6D4 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C6D8 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C6DC @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811C6E0 @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C6A6 - ldr r1, _0811C6E4 @ =0x040000d4 - ldr r0, _0811C6E8 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C6EC @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C6A6: - ldr r1, _0811C6F0 @ =REG_BG0VOFS - ldrh r0, [r2, 0x1C] - strh r0, [r1] - adds r1, 0x36 - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r0, _0811C6F4 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C6F8 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811C6FC @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C6D4: .4byte 0x040000b0 -_0811C6D8: .4byte 0x0000c5ff -_0811C6DC: .4byte 0x00007fff -_0811C6E0: .4byte 0x0200c000 -_0811C6E4: .4byte 0x040000d4 -_0811C6E8: .4byte gUnknown_03004DE0 -_0811C6EC: .4byte 0x800000a0 -_0811C6F0: .4byte REG_BG0VOFS -_0811C6F4: .4byte gUnknown_03005560 -_0811C6F8: .4byte REG_WIN0H -_0811C6FC: .4byte 0xa2400001 - thumb_func_end sub_811C670 - - thumb_func_start sub_811C700 -sub_811C700: @ 811C700 - push {r4,lr} - ldr r4, _0811C750 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C754 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C758 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811C75C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C736 - ldr r1, _0811C760 @ =0x040000d4 - ldr r0, _0811C764 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C768 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C736: - ldr r1, _0811C76C @ =REG_BLDCNT - ldrh r0, [r2, 0xE] - strh r0, [r1] - ldr r0, _0811C770 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C774 @ =REG_BLDY - str r0, [r4, 0x4] - ldr r0, _0811C778 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C750: .4byte 0x040000b0 -_0811C754: .4byte 0x0000c5ff -_0811C758: .4byte 0x00007fff -_0811C75C: .4byte 0x0200c000 -_0811C760: .4byte 0x040000d4 -_0811C764: .4byte gUnknown_03004DE0 -_0811C768: .4byte 0x800000a0 -_0811C76C: .4byte REG_BLDCNT -_0811C770: .4byte gUnknown_03005560 -_0811C774: .4byte REG_BLDY -_0811C778: .4byte 0xa2400001 - thumb_func_end sub_811C700 - - thumb_func_start sub_811C77C -sub_811C77C: @ 811C77C - push {lr} - ldr r0, _0811C790 @ =REG_VCOUNT - ldrh r0, [r0] - cmp r0, 0x4F - bhi _0811C79C - ldr r0, _0811C794 @ =REG_BG0HOFS - ldr r1, _0811C798 @ =0x0200c000 - ldrh r1, [r1, 0x18] - b _0811C7A2 - .align 2, 0 -_0811C790: .4byte REG_VCOUNT -_0811C794: .4byte REG_BG0HOFS -_0811C798: .4byte 0x0200c000 -_0811C79C: - ldr r0, _0811C7A8 @ =REG_BG0HOFS - ldr r1, _0811C7AC @ =0x0200c000 - ldrh r1, [r1, 0x1A] -_0811C7A2: - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0811C7A8: .4byte REG_BG0HOFS -_0811C7AC: .4byte 0x0200c000 - thumb_func_end sub_811C77C - - thumb_func_start sub_811C7B0 -sub_811C7B0: @ 811C7B0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - ldr r0, _0811C8EC @ =gUnknown_083FD850 - movs r2, 0x26 - ldrsh r1, [r4, r2] - mov r8, r1 - add r0, r8 - ldrb r0, [r0] - ldr r2, _0811C8F0 @ =gUnknown_083FD86A - lsls r1, 2 - mov r8, r1 - adds r1, r2 - ldrh r1, [r1] - subs r1, 0x20 - lsls r1, 16 - asrs r1, 16 - adds r2, 0x2 - add r2, r8 - ldrh r2, [r2] - adds r2, 0x2A - lsls r2, 16 - asrs r2, 16 - ldr r5, _0811C8F4 @ =0x0200c03c - str r5, [sp] - movs r3, 0 - bl CreateTrainerSprite_BirchSpeech - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r0, _0811C8F8 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - movs r1, 0x88 - lsls r1, 1 - str r5, [sp] - movs r2, 0x6A - movs r3, 0 - bl CreateTrainerSprite_BirchSpeech - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - movs r3, 0x22 - ldrsh r0, [r4, r3] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r1, _0811C8FC @ =gSprites - adds r5, r1 - movs r2, 0x24 - ldrsh r0, [r4, r2] - lsls r6, r0, 4 - adds r6, r0 - lsls r6, 2 - adds r6, r1 - ldr r0, _0811C900 @ =sub_811C90C - str r0, [r5, 0x1C] - str r0, [r6, 0x1C] - ldrb r0, [r5, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r5, 0x1] - ldrb r0, [r6, 0x1] - orrs r0, r1 - strb r0, [r6, 0x1] - bl AllocOamMatrix - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x1F - mov r9, r3 - mov r4, r9 - ands r0, r4 - lsls r0, 1 - ldrb r2, [r5, 0x3] - movs r4, 0x3F - negs r4, r4 - adds r1, r4, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x3] - bl AllocOamMatrix - lsls r0, 24 - lsrs r0, 24 - mov r1, r9 - ands r0, r1 - lsls r0, 1 - ldrb r1, [r6, 0x3] - ands r4, r1 - orrs r4, r0 - strb r4, [r6, 0x3] - ldrb r2, [r5, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - movs r2, 0x40 - orrs r0, r2 - strb r0, [r5, 0x1] - ldrb r0, [r6, 0x1] - ands r1, r0 - orrs r1, r2 - strb r1, [r6, 0x1] - ldrb r0, [r5, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrb r0, [r6, 0x3] - orrs r0, r1 - strb r0, [r6, 0x3] - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - adds r0, r6, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldrb r0, [r5, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r2, _0811C904 @ =gUnknown_083FD856 - mov r3, r8 - adds r1, r3, r2 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r2, 0x2 - add r8, r2 - mov r3, r8 - movs r4, 0 - ldrsh r2, [r3, r4] - movs r3, 0 - bl SetOamMatrixRotationScaling - ldrb r0, [r6, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r1, _0811C908 @ =0xfffffe00 - movs r2, 0x80 - lsls r2, 2 - movs r3, 0 - bl SetOamMatrixRotationScaling - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811C8EC: .4byte gUnknown_083FD850 -_0811C8F0: .4byte gUnknown_083FD86A -_0811C8F4: .4byte 0x0200c03c -_0811C8F8: .4byte gSaveBlock2 -_0811C8FC: .4byte gSprites -_0811C900: .4byte sub_811C90C -_0811C904: .4byte gUnknown_083FD856 -_0811C908: .4byte 0xfffffe00 - thumb_func_end sub_811C7B0 - - thumb_func_start sub_811C90C -sub_811C90C: @ 811C90C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _0811C930 @ =gUnknown_083FD880 -_0811C912: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811C912 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811C930: .4byte gUnknown_083FD880 - thumb_func_end sub_811C90C - - thumb_func_start sub_811C934 -sub_811C934: @ 811C934 - movs r0, 0 - bx lr - thumb_func_end sub_811C934 - - thumb_func_start sub_811C938 -sub_811C938: @ 811C938 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - ldr r1, _0811C97C @ =gUnknown_083FD89C - mov r0, sp - movs r2, 0x4 - bl memcpy - add r4, sp, 0x4 - ldr r1, _0811C980 @ =gUnknown_083FD8A0 - adds r0, r4, 0 - movs r2, 0x4 - bl memcpy - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r1, 0x3C - ldrsh r0, [r5, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x30] - movs r1, 0x3C - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r4, r0 - ldrh r0, [r4] - strh r0, [r5, 0x32] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C97C: .4byte gUnknown_083FD89C -_0811C980: .4byte gUnknown_083FD8A0 - thumb_func_end sub_811C938 - - thumb_func_start sub_811C984 -sub_811C984: @ 811C984 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - ldrh r3, [r1, 0x20] - adds r2, r0, r3 - strh r2, [r1, 0x20] - movs r3, 0x3C - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0811C9A2 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x84 - bgt _0811C9B0 - b _0811C9AA -_0811C9A2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x67 - ble _0811C9B0 -_0811C9AA: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] -_0811C9B0: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C984 - - thumb_func_start sub_811C9B8 -sub_811C9B8: @ 811C9B8 - push {lr} - adds r2, r0, 0 - ldrh r3, [r2, 0x32] - ldrh r0, [r2, 0x30] - adds r1, r3, r0 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] - lsls r1, 16 - cmp r1, 0 - bne _0811C9DE - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - negs r0, r3 - strh r0, [r2, 0x32] - movs r0, 0x1 - strh r0, [r2, 0x3A] -_0811C9DE: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C9B8 - - thumb_func_start sub_811C9E4 -sub_811C9E4: @ 811C9E4 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x20] - adds r1, r0 - strh r1, [r2, 0x20] - adds r1, 0x1F - lsls r1, 16 - movs r0, 0x97 - lsls r0, 17 - cmp r1, r0 - bls _0811CA08 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_0811CA08: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C9E4 - - thumb_func_start sub_811CA10 -sub_811CA10: @ 811CA10 - ldr r3, _0811CA24 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - strh r1, [r2, 0x3C] - bx lr - .align 2, 0 -_0811CA24: .4byte gSprites - thumb_func_end sub_811CA10 - - thumb_func_start sub_811CA28 -sub_811CA28: @ 811CA28 - ldr r2, _0811CA40 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - bx lr - .align 2, 0 -_0811CA40: .4byte gSprites - thumb_func_end sub_811CA28 - - thumb_func_start sub_811CA44 -sub_811CA44: @ 811CA44 - ldr r2, _0811CA58 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x3A - ldrsh r0, [r1, r2] - bx lr - .align 2, 0 -_0811CA58: .4byte gSprites - thumb_func_end sub_811CA44 - - thumb_func_start sub_811CA5C -sub_811CA5C: @ 811CA5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811CA8C @ =gUnknown_083FD8A4 - ldr r2, _0811CA90 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811CA6E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811CA6E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811CA8C: .4byte gUnknown_083FD8A4 -_0811CA90: .4byte gTasks - thumb_func_end sub_811CA5C - - thumb_func_start sub_811CA94 -sub_811CA94: @ 811CA94 - push {r4-r6,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xC] - movs r0, 0x1 - strh r0, [r4, 0xE] - ldr r1, _0811CB08 @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - ldr r3, _0811CB0C @ =gUnknown_03005560 - adds r6, r1, 0 - movs r5, 0xF0 -_0811CABE: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r6, 0x14] - strh r1, [r0] - adds r0, r2, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r3 - strh r5, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9F - bls _0811CABE - ldr r2, _0811CB10 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811CB14 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0811CB18 @ =sub_811CC28 - bl SetVBlankCallback - ldr r0, _0811CB1C @ =sub_811CCB0 - bl SetHBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CB08: .4byte 0x0200c000 -_0811CB0C: .4byte gUnknown_03005560 -_0811CB10: .4byte 0x04000200 -_0811CB14: .4byte REG_DISPSTAT -_0811CB18: .4byte sub_811CC28 -_0811CB1C: .4byte sub_811CCB0 - thumb_func_end sub_811CA94 - - thumb_func_start sub_811CB20 -sub_811CB20: @ 811CB20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r2, r0, 0 - ldr r1, _0811CB98 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r0, [r2, 0xC] - lsls r0, 16 - asrs r0, 24 - ldrh r3, [r2, 0xA] - adds r0, r3 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - mov r12, r1 - cmp r0, 0xF0 - ble _0811CB4A - movs r0, 0xF0 - strh r0, [r2, 0xA] -_0811CB4A: - ldrh r4, [r2, 0xC] - movs r0, 0xC - ldrsh r1, [r2, r0] - ldr r0, _0811CB9C @ =0x00000fff - ldrh r3, [r2, 0xE] - cmp r1, r0 - bgt _0811CB5C - adds r0, r4, r3 - strh r0, [r2, 0xC] -_0811CB5C: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x7F - bgt _0811CB68 - lsls r0, r3, 1 - strh r0, [r2, 0xE] -_0811CB68: - movs r5, 0 - ldr r7, _0811CBA0 @ =gUnknown_03004DE0 - movs r1, 0xA0 - lsls r1, 1 - adds r1, r7 - mov r8, r1 - mov r6, r12 -_0811CB76: - lsls r0, r5, 1 - adds r3, r0, r7 - mov r1, r8 - adds r4, r0, r1 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _0811CBA4 - ldrh r0, [r2, 0xA] - ldrh r1, [r6, 0x14] - adds r0, r1 - strh r0, [r3] - ldrh r1, [r2, 0xA] - movs r0, 0xF0 - subs r0, r1 - b _0811CBB4 - .align 2, 0 -_0811CB98: .4byte 0x0200c000 -_0811CB9C: .4byte 0x00000fff -_0811CBA0: .4byte gUnknown_03004DE0 -_0811CBA4: - ldrh r0, [r6, 0x14] - ldrh r1, [r2, 0xA] - subs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0xA] - lsls r0, 8 - movs r1, 0xF1 - orrs r0, r1 -_0811CBB4: - strh r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9F - bls _0811CB76 - movs r3, 0xA - ldrsh r0, [r2, r3] - cmp r0, 0xEF - ble _0811CBCE - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0811CBCE: - mov r1, r12 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r1, [r1] - mov r2, r12 - strb r0, [r2] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811CB20 - - thumb_func_start sub_811CBE8 -sub_811CBE8: @ 811CBE8 - push {lr} - ldr r1, _0811CC18 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811CC1C @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811CC20 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811CC24 @ =sub_811CA5C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811CC18: .4byte 0x040000b0 -_0811CC1C: .4byte 0x0000c5ff -_0811CC20: .4byte 0x00007fff -_0811CC24: .4byte sub_811CA5C - thumb_func_end sub_811CBE8 - - thumb_func_start sub_811CC28 -sub_811CC28: @ 811CC28 - push {r4,lr} - ldr r4, _0811CC84 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811CC88 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811CC8C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811CC90 @ =REG_WININ - ldr r1, _0811CC94 @ =0x0200c000 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x6 - ldrh r0, [r1, 0x8] - strh r0, [r2] - ldrb r0, [r1] - cmp r0, 0 - beq _0811CC70 - ldr r1, _0811CC98 @ =0x040000d4 - ldr r0, _0811CC9C @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811CCA0 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811CC70: - ldr r0, _0811CCA4 @ =gUnknown_030056A0 - str r0, [r4] - ldr r0, _0811CCA8 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811CCAC @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811CC84: .4byte 0x040000b0 -_0811CC88: .4byte 0x0000c5ff -_0811CC8C: .4byte 0x00007fff -_0811CC90: .4byte REG_WININ -_0811CC94: .4byte 0x0200c000 -_0811CC98: .4byte 0x040000d4 -_0811CC9C: .4byte gUnknown_03004DE0 -_0811CCA0: .4byte 0x80000140 -_0811CCA4: .4byte gUnknown_030056A0 -_0811CCA8: .4byte REG_WIN0H -_0811CCAC: .4byte 0xa2400001 - thumb_func_end sub_811CC28 - - thumb_func_start sub_811CCB0 -sub_811CCB0: @ 811CCB0 - ldr r1, _0811CCD0 @ =gUnknown_03004DE0 - ldr r0, _0811CCD4 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811CCD8 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811CCD0: .4byte gUnknown_03004DE0 -_0811CCD4: .4byte REG_VCOUNT -_0811CCD8: .4byte REG_BG1HOFS - thumb_func_end sub_811CCB0 - - thumb_func_start sub_811CCDC -sub_811CCDC: @ 811CCDC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811CD0C @ =gUnknown_083FD8B0 - ldr r2, _0811CD10 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811CCEE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811CCEE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811CD0C: .4byte gUnknown_083FD8B0 -_0811CD10: .4byte gTasks - thumb_func_end sub_811CCDC - - thumb_func_start sub_811CD14 -sub_811CD14: @ 811CD14 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811CD88 @ =0x0200c000 - movs r2, 0 - movs r0, 0xBF - strh r0, [r1, 0xE] - strh r2, [r1, 0x12] - movs r0, 0x1E - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _0811CD8C @ =gUnknown_03005560 - movs r4, 0 - movs r3, 0xF0 -_0811CD3E: - lsls r0, r1, 1 - adds r0, r2 - strh r4, [r0] - adds r0, r1, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811CD3E - ldr r2, _0811CD90 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811CD94 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0811CD98 @ =sub_811CFAC - bl SetHBlankCallback - ldr r0, _0811CD9C @ =sub_811CEE4 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811CD88: .4byte 0x0200c000 -_0811CD8C: .4byte gUnknown_03005560 -_0811CD90: .4byte 0x04000200 -_0811CD94: .4byte REG_DISPSTAT -_0811CD98: .4byte sub_811CFAC -_0811CD9C: .4byte sub_811CEE4 - thumb_func_end sub_811CD14 - - thumb_func_start sub_811CDA0 -sub_811CDA0: @ 811CDA0 - push {r4-r6,lr} - sub sp, 0x10 - adds r6, r0, 0 - ldr r1, _0811CE08 @ =gUnknown_083FD8C4 - mov r0, sp - movs r2, 0x10 - bl memcpy - movs r5, 0 - movs r4, 0 -_0811CDB4: - ldr r0, _0811CE0C @ =sub_811CFD0 - bl CreateInvisibleSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0811CE10 @ =gSprites - adds r2, r1, r0 - movs r0, 0xF0 - strh r0, [r2, 0x20] - strh r4, [r2, 0x22] - lsls r1, r5, 16 - asrs r1, 16 - lsls r0, r1, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r2, 0x38] - adds r1, 0x1 - lsls r1, 16 - lsls r0, r4, 16 - movs r3, 0xA0 - lsls r3, 13 - adds r0, r3 - lsrs r4, r0, 16 - lsrs r5, r1, 16 - asrs r1, 16 - cmp r1, 0x7 - ble _0811CDB4 - ldrh r0, [r2, 0x3A] - adds r0, 0x1 - strh r0, [r2, 0x3A] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CE08: .4byte gUnknown_083FD8C4 -_0811CE0C: .4byte sub_811CFD0 -_0811CE10: .4byte gSprites - thumb_func_end sub_811CDA0 - - thumb_func_start sub_811CE14 -sub_811CE14: @ 811CE14 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811CE44 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - movs r1, 0x20 - ldrsh r0, [r0, r1] - cmp r0, 0x7 - ble _0811CE3A - movs r0, 0x1 - negs r0, r0 - ldr r2, _0811CE48 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811CE3A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811CE44: .4byte 0x0200c000 -_0811CE48: .4byte 0x00007fff - thumb_func_end sub_811CE14 - - thumb_func_start sub_811CE4C -sub_811CE4C: @ 811CE4C - push {r4-r6,lr} - adds r6, r0, 0 - ldr r4, _0811CE9C @ =0x0200c000 - ldrb r0, [r4] - movs r5, 0 - strb r5, [r4] - ldr r1, _0811CEA0 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811CEA4 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811CEA8 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - movs r0, 0xF0 - strh r0, [r4, 0x6] - strh r5, [r4, 0x12] - movs r0, 0xFF - strh r0, [r4, 0xE] - movs r0, 0x3F - strh r0, [r4, 0x2] - ldr r0, _0811CEAC @ =sub_811CF74 - bl SetVBlankCallback - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CE9C: .4byte 0x0200c000 -_0811CEA0: .4byte 0x040000b0 -_0811CEA4: .4byte 0x0000c5ff -_0811CEA8: .4byte 0x00007fff -_0811CEAC: .4byte sub_811CF74 - thumb_func_end sub_811CE4C - - thumb_func_start sub_811CEB0 -sub_811CEB0: @ 811CEB0 - push {lr} - ldr r1, _0811CEDC @ =0x0200c000 - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bls _0811CED4 - bl sub_811D6D4 - ldr r0, _0811CEE0 @ =sub_811CCDC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811CED4: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811CEDC: .4byte 0x0200c000 -_0811CEE0: .4byte sub_811CCDC - thumb_func_end sub_811CEB0 - - thumb_func_start sub_811CEE4 -sub_811CEE4: @ 811CEE4 - push {r4,lr} - ldr r4, _0811CF48 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811CF4C @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811CF50 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811CF54 @ =REG_BLDCNT - ldr r1, _0811CF58 @ =0x0200c000 - ldrh r0, [r1, 0xE] - strh r0, [r2] - subs r2, 0x8 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x6 - ldrh r0, [r1, 0x6] - strh r0, [r2] - ldrb r0, [r1] - cmp r0, 0 - beq _0811CF32 - ldr r1, _0811CF5C @ =0x040000d4 - ldr r0, _0811CF60 @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811CF64 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811CF32: - ldr r0, _0811CF68 @ =gUnknown_030056A0 - str r0, [r4] - ldr r0, _0811CF6C @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811CF70 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811CF48: .4byte 0x040000b0 -_0811CF4C: .4byte 0x0000c5ff -_0811CF50: .4byte 0x00007fff -_0811CF54: .4byte REG_BLDCNT -_0811CF58: .4byte 0x0200c000 -_0811CF5C: .4byte 0x040000d4 -_0811CF60: .4byte gUnknown_03004DE0 -_0811CF64: .4byte 0x80000140 -_0811CF68: .4byte gUnknown_030056A0 -_0811CF6C: .4byte REG_WIN0H -_0811CF70: .4byte 0xa2400001 - thumb_func_end sub_811CEE4 - - thumb_func_start sub_811CF74 -sub_811CF74: @ 811CF74 - push {lr} - bl sub_811D67C - ldr r1, _0811CFA4 @ =REG_BLDY - ldr r2, _0811CFA8 @ =0x0200c000 - ldrh r0, [r2, 0x12] - strh r0, [r1] - subs r1, 0x4 - ldrh r0, [r2, 0xE] - strh r0, [r1] - subs r1, 0x8 - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0xA - ldrh r0, [r2, 0x6] - strh r0, [r1] - adds r1, 0x4 - ldrh r0, [r2, 0x8] - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0811CFA4: .4byte REG_BLDY -_0811CFA8: .4byte 0x0200c000 - thumb_func_end sub_811CF74 - - thumb_func_start sub_811CFAC -sub_811CFAC: @ 811CFAC - ldr r2, _0811CFC4 @ =REG_BLDY - ldr r1, _0811CFC8 @ =gUnknown_03004DE0 - ldr r0, _0811CFCC @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r1, r3 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .align 2, 0 -_0811CFC4: .4byte REG_BLDY -_0811CFC8: .4byte gUnknown_03004DE0 -_0811CFCC: .4byte REG_VCOUNT - thumb_func_end sub_811CFAC - - thumb_func_start sub_811CFD0 -sub_811CFD0: @ 811CFD0 - push {r4-r6,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x38] - movs r2, 0x38 - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _0811CFF8 - subs r0, r1, 0x1 - strh r0, [r3, 0x38] - movs r1, 0x3A - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0811D0AA - ldr r0, _0811CFF4 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] - b _0811D0AA - .align 2, 0 -_0811CFF4: .4byte 0x0200c000 -_0811CFF8: - movs r2, 0x22 - ldrsh r1, [r3, r2] - lsls r1, 1 - ldr r0, _0811D0B0 @ =gUnknown_03004DE0 - adds r6, r1, r0 - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2 - adds r5, r1, r0 - movs r4, 0 -_0811D00C: - lsls r1, r4, 1 - adds r2, r1, r6 - ldrh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2] - adds r1, r5 - ldrh r0, [r3, 0x20] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x13 - bls _0811D00C - movs r1, 0x20 - ldrsh r0, [r3, r1] - ldrh r2, [r3, 0x20] - cmp r0, 0 - bne _0811D046 - movs r0, 0x2E - ldrsh r1, [r3, r0] - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _0811D046 - movs r0, 0x1 - strh r0, [r3, 0x30] -_0811D046: - adds r1, r2, 0 - subs r1, 0x10 - strh r1, [r3, 0x20] - ldrh r0, [r3, 0x2E] - adds r0, 0x80 - strh r0, [r3, 0x2E] - lsls r1, 16 - cmp r1, 0 - bge _0811D05C - movs r0, 0 - strh r0, [r3, 0x20] -_0811D05C: - movs r1, 0x2E - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 5 - cmp r0, r1 - ble _0811D06A - strh r1, [r3, 0x2E] -_0811D06A: - movs r0, 0x3A - ldrsh r2, [r3, r0] - cmp r2, 0 - beq _0811D07A - ldr r0, _0811D0B4 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] -_0811D07A: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0811D0AA - ldr r4, _0811D0B4 @ =0x0200c000 - cmp r2, 0 - beq _0811D09E - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x6 - ble _0811D0AA - ldrh r0, [r3, 0x32] - adds r1, r0, 0x1 - strh r1, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _0811D0AA -_0811D09E: - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - adds r0, r3, 0 - bl DestroySprite -_0811D0AA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811D0B0: .4byte gUnknown_03004DE0 -_0811D0B4: .4byte 0x0200c000 - thumb_func_end sub_811CFD0 - - thumb_func_start sub_811D0B8 -sub_811D0B8: @ 811D0B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D0E8 @ =gUnknown_083FD8D4 - ldr r2, _0811D0EC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D0CA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D0CA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D0E8: .4byte gUnknown_083FD8D4 -_0811D0EC: .4byte gTasks - thumb_func_end sub_811D0B8 - - thumb_func_start sub_811D0F0 -sub_811D0F0: @ 811D0F0 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl sub_811D6A8 - ldr r0, _0811D138 @ =gUnknown_083FD528 - ldr r1, [sp, 0x8] - movs r2, 0x10 - bl CpuSet - mov r1, sp - movs r2, 0xF0 - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _0811D13C @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _0811D140 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D138: .4byte gUnknown_083FD528 -_0811D13C: .4byte 0x01000400 -_0811D140: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811D0F0 - - thumb_func_start sub_811D144 -sub_811D144: @ 811D144 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0811D186 - mov r0, sp - bl sub_811D690 - movs r0, 0x3 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0xC - ldrsh r0, [r4, r1] - lsls r0, 5 - ldr r1, _0811D198 @ =gUnknown_083FD528 - adds r0, r1 - ldr r1, [sp] - movs r2, 0x10 - bl CpuSet - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xD - ble _0811D186 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x10 - strh r0, [r4, 0xA] -_0811D186: - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D198: .4byte gUnknown_083FD528 - thumb_func_end sub_811D144 - - thumb_func_start sub_811D19C -sub_811D19C: @ 811D19C - push {lr} - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - lsls r1, 16 - cmp r1, 0 - bne _0811D1BC - bl sub_811D6D4 - ldr r0, _0811D1C4 @ =sub_811D0B8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811D1BC: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811D1C4: .4byte sub_811D0B8 - thumb_func_end sub_811D19C - - thumb_func_start sub_811D1C8 -sub_811D1C8: @ 811D1C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D1F8 @ =gUnknown_083FD8E0 - ldr r2, _0811D1FC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D1DA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D1DA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D1F8: .4byte gUnknown_083FD8E0 -_0811D1FC: .4byte gTasks - thumb_func_end sub_811D1C8 - - thumb_func_start sub_811D200 -sub_811D200: @ 811D200 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811D254 @ =0x0200c000 - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _0811D258 @ =gUnknown_03004DE0 - movs r3, 0xF0 - adds r4, r2, 0 -_0811D222: - lsls r0, r1, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811D222 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r4, r0 - adds r0, r4, 0 - movs r2, 0xA0 - bl CpuSet - ldr r0, _0811D25C @ =sub_811D438 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811D254: .4byte 0x0200c000 -_0811D258: .4byte gUnknown_03004DE0 -_0811D25C: .4byte sub_811D438 - thumb_func_end sub_811D200 - - thumb_func_start sub_811D260 -sub_811D260: @ 811D260 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - mov r8, r0 - ldr r0, _0811D2D0 @ =0x0200c024 - ldr r6, _0811D2D4 @ =gUnknown_083FD8F4 - mov r2, r8 - movs r3, 0xA - ldrsh r1, [r2, r3] - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 1 - adds r1, r4, r6 - movs r5, 0 - ldrsh r1, [r1, r5] - adds r2, r6, 0x2 - adds r2, r4, r2 - movs r3, 0 - ldrsh r2, [r2, r3] - adds r3, r6, 0x4 - adds r3, r4, r3 - movs r5, 0 - ldrsh r3, [r3, r5] - adds r5, r6, 0x6 - adds r4, r5 - movs r5, 0 - ldrsh r4, [r4, r5] - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - bl sub_811D8FC - mov r0, r8 - movs r2, 0xA - ldrsh r1, [r0, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r6, 0x8 - adds r0, r6 - ldrh r0, [r0] - mov r3, r8 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - movs r0, 0x1 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811D2D0: .4byte 0x0200c024 -_0811D2D4: .4byte gUnknown_083FD8F4 - thumb_func_end sub_811D260 - - thumb_func_start sub_811D2D8 -sub_811D2D8: @ 811D2D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - ldr r0, _0811D324 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - mov r8, r1 - mov r12, r1 - adds r6, r0, 0 - ldr r0, _0811D328 @ =gUnknown_03004DE0 - mov r9, r0 -_0811D2F4: - ldr r1, _0811D328 @ =gUnknown_03004DE0 - movs r2, 0x2A - ldrsh r0, [r6, r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsrs r3, r0, 8 - movs r4, 0xFF - ands r4, r0 - movs r1, 0xC - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _0811D32C - movs r2, 0x28 - ldrsh r0, [r6, r2] - cmp r3, r0 - bge _0811D318 - ldrh r3, [r6, 0x28] -_0811D318: - lsls r0, r3, 16 - lsls r1, r4, 16 - cmp r0, r1 - ble _0811D344 - lsrs r3, r1, 16 - b _0811D344 - .align 2, 0 -_0811D324: .4byte 0x0200c000 -_0811D328: .4byte gUnknown_03004DE0 -_0811D32C: - lsls r0, r4, 16 - asrs r0, 16 - movs r2, 0x28 - ldrsh r1, [r6, r2] - cmp r0, r1 - ble _0811D33A - ldrh r4, [r6, 0x28] -_0811D33A: - lsls r0, r4, 16 - lsls r1, r3, 16 - cmp r0, r1 - bgt _0811D344 - lsrs r4, r1, 16 -_0811D344: - ldr r5, _0811D368 @ =0x0200c000 - movs r0, 0x2A - ldrsh r2, [r5, r0] - lsls r2, 1 - add r2, r9 - lsls r1, r3, 16 - asrs r1, 8 - lsls r0, r4, 16 - asrs r0, 16 - orrs r0, r1 - strh r0, [r2] - mov r1, r12 - cmp r1, 0 - beq _0811D36C - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - b _0811D392 - .align 2, 0 -_0811D368: .4byte 0x0200c000 -_0811D36C: - adds r0, r5, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - mov r2, r8 - lsls r0, r2, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r2, r0, 16 - mov r8, r2 - asrs r0, 16 - cmp r0, 0xF - ble _0811D2F4 -_0811D392: - ldr r0, _0811D3AC @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811D3AC: .4byte 0x0200c000 - thumb_func_end sub_811D2D8 - - thumb_func_start sub_811D3B0 -sub_811D3B0: @ 811D3B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _0811D3FC - ldr r1, _0811D3EC @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811D3F0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811D3F4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811D3F8 @ =sub_811D1C8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - b _0811D414 - .align 2, 0 -_0811D3EC: .4byte 0x040000b0 -_0811D3F0: .4byte 0x0000c5ff -_0811D3F4: .4byte 0x00007fff -_0811D3F8: .4byte sub_811D1C8 -_0811D3FC: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - ldr r1, _0811D418 @ =gUnknown_083FD93A - movs r3, 0xA - ldrsh r0, [r2, r3] - subs r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2, 0xE] - movs r0, 0x1 -_0811D414: - pop {r1} - bx r1 - .align 2, 0 -_0811D418: .4byte gUnknown_083FD93A - thumb_func_end sub_811D3B0 - - thumb_func_start sub_811D41C -sub_811D41C: @ 811D41C - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0xE] - subs r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - cmp r0, 0 - beq _0811D430 - movs r0, 0 - b _0811D434 -_0811D430: - movs r0, 0x1 - strh r0, [r1, 0x8] -_0811D434: - pop {r1} - bx r1 - thumb_func_end sub_811D41C - - thumb_func_start sub_811D438 -sub_811D438: @ 811D438 - push {r4,lr} - ldr r4, _0811D4A0 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811D4A4 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811D4A8 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811D4AC @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811D46E - ldr r1, _0811D4B0 @ =0x040000d4 - ldr r0, _0811D4B4 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811D4B8 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811D46E: - ldr r1, _0811D4BC @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r2, _0811D4C0 @ =REG_WIN0H - ldr r0, _0811D4B4 @ =gUnknown_03004DE0 - movs r1, 0xF0 - lsls r1, 3 - adds r0, r1 - ldrh r1, [r0] - strh r1, [r2] - str r0, [r4] - str r2, [r4, 0x4] - ldr r0, _0811D4C4 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811D4A0: .4byte 0x040000b0 -_0811D4A4: .4byte 0x0000c5ff -_0811D4A8: .4byte 0x00007fff -_0811D4AC: .4byte 0x0200c000 -_0811D4B0: .4byte 0x040000d4 -_0811D4B4: .4byte gUnknown_03004DE0 -_0811D4B8: .4byte 0x800000a0 -_0811D4BC: .4byte REG_WININ -_0811D4C0: .4byte REG_WIN0H -_0811D4C4: .4byte 0xa2400001 - thumb_func_end sub_811D438 - - thumb_func_start sub_811D4C8 -sub_811D4C8: @ 811D4C8 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - mov r8, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r3, [sp, 0x18] - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 16 - lsrs r6, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r0, _0811D524 @ =sub_811D54C - movs r1, 0x3 - str r3, [sp] - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811D528 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - mov r0, r8 - strh r0, [r1, 0xA] - strh r4, [r1, 0xC] - strh r5, [r1, 0xE] - strh r6, [r1, 0x10] - ldr r3, [sp] - strh r3, [r1, 0x12] - strh r0, [r1, 0x14] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811D524: .4byte sub_811D54C -_0811D528: .4byte gTasks - thumb_func_end sub_811D4C8 - - thumb_func_start sub_811D52C -sub_811D52C: @ 811D52C - push {lr} - ldr r0, _0811D540 @ =sub_811D54C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0811D544 - movs r0, 0 - b _0811D546 - .align 2, 0 -_0811D540: .4byte sub_811D54C -_0811D544: - movs r0, 0x1 -_0811D546: - pop {r1} - bx r1 - thumb_func_end sub_811D52C - - thumb_func_start sub_811D54C -sub_811D54C: @ 811D54C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D57C @ =gUnknown_083FD948 - ldr r2, _0811D580 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D55E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D55E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D57C: .4byte gUnknown_083FD948 -_0811D580: .4byte gTasks - thumb_func_end sub_811D54C - - thumb_func_start sub_811D584 -sub_811D584: @ 811D584 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811D59C - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _0811D5C0 -_0811D59C: - ldrh r0, [r4, 0xA] - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x16] - adds r0, r1 - strh r0, [r4, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _0811D5B4 - movs r0, 0x10 - strh r0, [r4, 0x16] -_0811D5B4: - movs r0, 0x1 - negs r0, r0 - ldrb r1, [r4, 0x16] - ldr r2, _0811D5DC @ =0x00002d6b - bl BlendPalettes -_0811D5C0: - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0xF - ble _0811D5D2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0x14] -_0811D5D2: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D5DC: .4byte 0x00002d6b - thumb_func_end sub_811D584 - - thumb_func_start sub_811D5E0 -sub_811D5E0: @ 811D5E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811D5F8 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _0811D61A -_0811D5F8: - ldrh r0, [r4, 0xC] - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x16] - lsls r0, 16 - cmp r0, 0 - bge _0811D60E - movs r0, 0 - strh r0, [r4, 0x16] -_0811D60E: - movs r0, 0x1 - negs r0, r0 - ldrb r1, [r4, 0x16] - ldr r2, _0811D640 @ =0x00002d6b - bl BlendPalettes -_0811D61A: - movs r0, 0x16 - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _0811D64E - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811D648 - ldr r0, _0811D644 @ =sub_811D54C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - b _0811D64E - .align 2, 0 -_0811D640: .4byte 0x00002d6b -_0811D644: .4byte sub_811D54C -_0811D648: - ldrh r0, [r4, 0xA] - strh r0, [r4, 0x14] - strh r1, [r4, 0x8] -_0811D64E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811D5E0 - - thumb_func_start sub_811D658 -sub_811D658: @ 811D658 - push {lr} - ldr r0, _0811D674 @ =gUnknown_083FD708 - ldr r0, [r0] - movs r1, 0 - movs r2, 0x3C - bl memset - ldr r0, _0811D678 @ =0x0200c014 - adds r1, r0, 0x2 - bl sub_8057B14 - pop {r0} - bx r0 - .align 2, 0 -_0811D674: .4byte gUnknown_083FD708 -_0811D678: .4byte 0x0200c014 - thumb_func_end sub_811D658 - - thumb_func_start sub_811D67C -sub_811D67C: @ 811D67C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_811D67C - - thumb_func_start sub_811D690 -sub_811D690: @ 811D690 - ldr r1, _0811D6A4 @ =REG_BG0CNT - ldrh r1, [r1] - lsrs r1, 2 - lsls r1, 30 - lsrs r1, 16 - movs r2, 0xC0 - lsls r2, 19 - adds r1, r2 - str r1, [r0] - bx lr - .align 2, 0 -_0811D6A4: .4byte REG_BG0CNT - thumb_func_end sub_811D690 - - thumb_func_start sub_811D6A8 -sub_811D6A8: @ 811D6A8 - push {r4,lr} - ldr r3, _0811D6D0 @ =REG_BG0CNT - ldrh r2, [r3] - lsrs r2, 8 - ldrh r3, [r3] - lsrs r3, 2 - lsls r2, 27 - lsrs r2, 16 - lsls r3, 30 - lsrs r3, 16 - movs r4, 0xC0 - lsls r4, 19 - adds r2, r4 - str r2, [r0] - adds r3, r4 - str r3, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811D6D0: .4byte REG_BG0CNT - thumb_func_end sub_811D6A8 - - thumb_func_start sub_811D6D4 -sub_811D6D4: @ 811D6D4 - push {lr} - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - pop {r0} - bx r0 - thumb_func_end sub_811D6D4 - - thumb_func_start sub_811D6E8 -sub_811D6E8: @ 811D6E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - ldr r0, [sp, 0x20] - ldr r4, [sp, 0x24] - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r4, 16 - movs r6, 0 - lsrs r5, r4, 16 - cmp r4, 0 - ble _0811D750 - lsls r0, r7, 16 - asrs r0, 16 - mov r9, r0 - lsls r1, 16 - mov r8, r1 - lsls r0, r3, 16 - asrs r7, r0, 16 -_0811D720: - lsls r4, r2, 16 - asrs r4, 16 - movs r0, 0xFF - ands r0, r4 - mov r2, r8 - asrs r1, r2, 16 - bl Sin - lsls r1, r6, 1 - add r1, r10 - add r0, r9 - strh r0, [r1] - lsls r1, r5, 16 - ldr r0, _0811D760 @ =0xffff0000 - adds r1, r0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r7 - lsls r4, 16 - lsrs r2, r4, 16 - lsrs r5, r1, 16 - cmp r1, 0 - bgt _0811D720 -_0811D750: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811D760: .4byte 0xffff0000 - thumb_func_end sub_811D6E8 - - thumb_func_start sub_811D764 -sub_811D764: @ 811D764 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r9, r0 - adds r5, r2, 0 - adds r4, r3, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - movs r2, 0xA0 - lsls r2, 1 - movs r1, 0xA - bl memset - movs r1, 0 - lsls r4, 16 - asrs r4, 16 - str r4, [sp, 0x4] - lsls r5, 16 - asrs r5, 16 - str r5, [sp, 0x8] -_0811D79C: - lsls r5, r1, 16 - asrs r0, r5, 16 - mov r10, r0 - ldr r1, [sp, 0x4] - bl Sin - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, r10 - ldr r1, [sp, 0x4] - bl Cos - ldr r2, [sp] - lsls r1, r2, 16 - asrs r1, 16 - lsls r4, 16 - asrs r4, 16 - subs r2, r1, r4 - lsls r2, 16 - adds r1, r4 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r0, 16 - asrs r0, 16 - ldr r3, [sp, 0x8] - subs r1, r3, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r0, r3, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsrs r1, r2, 16 - str r5, [sp, 0x10] - cmp r2, 0 - bge _0811D7E8 - movs r1, 0 -_0811D7E8: - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811D7F2 - movs r6, 0xF0 -_0811D7F2: - lsls r0, r7, 16 - cmp r0, 0 - bge _0811D7FA - movs r7, 0 -_0811D7FA: - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _0811D808 - movs r3, 0x9F - mov r8, r3 -_0811D808: - lsls r0, r1, 24 - lsrs r0, 16 - orrs r6, r0 - lsls r0, r7, 16 - asrs r0, 16 - str r0, [sp, 0xC] - lsls r0, 1 - add r0, r9 - strh r6, [r0] - mov r0, r8 - lsls r4, r0, 16 - asrs r0, r4, 15 - add r0, r9 - strh r6, [r0] - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - ldr r1, [sp, 0x4] - bl Cos - lsls r0, 16 - asrs r0, 16 - ldr r2, [sp, 0x8] - subs r1, r2, r0 - lsls r1, 16 - adds r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 - lsrs r3, r1, 16 - cmp r1, 0 - bge _0811D84A - movs r3, 0 -_0811D84A: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _0811D854 - movs r2, 0x9F -_0811D854: - lsls r0, r3, 16 - asrs r1, r0, 16 - adds r3, r0, 0 - lsls r5, r2, 16 - ldr r0, [sp, 0xC] - cmp r0, r1 - ble _0811D878 - adds r2, r1, 0 -_0811D864: - lsls r1, r7, 16 - ldr r0, _0811D8F8 @ =0xffff0000 - adds r1, r0 - asrs r0, r1, 15 - add r0, r9 - strh r6, [r0] - lsrs r7, r1, 16 - asrs r1, 16 - cmp r1, r2 - bgt _0811D864 -_0811D878: - lsls r1, r7, 16 - asrs r0, r3, 16 - cmp r1, r3 - bge _0811D896 - adds r2, r0, 0 -_0811D882: - movs r3, 0x80 - lsls r3, 9 - adds r0, r1, r3 - asrs r1, r0, 15 - add r1, r9 - strh r6, [r1] - adds r1, r0, 0 - asrs r0, r1, 16 - cmp r0, r2 - blt _0811D882 -_0811D896: - asrs r0, r5, 16 - cmp r4, r5 - ble _0811D8B4 - adds r1, r0, 0 -_0811D89E: - ldr r2, _0811D8F8 @ =0xffff0000 - adds r0, r4, r2 - lsrs r3, r0, 16 - mov r8, r3 - asrs r0, 15 - add r0, r9 - strh r6, [r0] - lsls r4, r3, 16 - asrs r0, r4, 16 - cmp r0, r1 - bgt _0811D89E -_0811D8B4: - mov r0, r8 - lsls r4, r0, 16 - asrs r0, r5, 16 - cmp r4, r5 - bge _0811D8D4 - adds r2, r0, 0 -_0811D8C0: - movs r1, 0x80 - lsls r1, 9 - adds r0, r4, r1 - asrs r1, r0, 15 - add r1, r9 - strh r6, [r1] - adds r4, r0, 0 - asrs r0, r4, 16 - cmp r0, r2 - blt _0811D8C0 -_0811D8D4: - ldr r2, [sp, 0x10] - movs r3, 0x80 - lsls r3, 9 - adds r0, r2, r3 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x3F - bgt _0811D8E6 - b _0811D79C -_0811D8E6: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811D8F8: .4byte 0xffff0000 - thumb_func_end sub_811D764 - - thumb_func_start sub_811D8FC -sub_811D8FC: @ 811D8FC - push {r4-r7,lr} - adds r6, r0, 0 - ldr r0, [sp, 0x14] - ldr r5, [sp, 0x18] - ldr r4, [sp, 0x1C] - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - strh r1, [r6] - strh r2, [r6, 0x2] - strh r1, [r6, 0x4] - strh r2, [r6, 0x6] - strh r3, [r6, 0x8] - strh r7, [r6, 0xA] - strh r5, [r6, 0xC] - strh r4, [r6, 0xE] - lsls r3, 16 - asrs r3, 16 - lsls r1, 16 - asrs r1, 16 - subs r3, r1 - strh r3, [r6, 0x10] - lsls r0, r3, 16 - cmp r0, 0 - bge _0811D94E - negs r0, r3 - strh r0, [r6, 0x10] - lsls r0, r5, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r6, 0xC] -_0811D94E: - lsls r0, r7, 16 - asrs r0, 16 - lsls r1, r2, 16 - asrs r1, 16 - subs r1, r0, r1 - strh r1, [r6, 0x12] - lsls r0, r1, 16 - cmp r0, 0 - bge _0811D96C - negs r0, r1 - strh r0, [r6, 0x12] - lsls r0, r4, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r6, 0xE] -_0811D96C: - movs r0, 0 - strh r0, [r6, 0x14] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_811D8FC - - thumb_func_start sub_811D978 -sub_811D978: @ 811D978 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - ldrh r0, [r3, 0x10] - mov r8, r0 - movs r1, 0x10 - ldrsh r6, [r3, r1] - ldrh r2, [r3, 0x12] - mov r12, r2 - movs r4, 0x12 - ldrsh r5, [r3, r4] - cmp r6, r5 - ble _0811D9C8 - ldrh r0, [r3, 0xC] - ldrh r2, [r3, 0x4] - adds r1, r0, r2 - strh r1, [r3, 0x4] - ldrh r2, [r3, 0x14] - add r2, r12 - strh r2, [r3, 0x14] - lsls r1, r2, 16 - asrs r1, 16 - adds r4, r0, 0 - ldrh r7, [r3, 0xE] - cmp r1, r6 - ble _0811D9EE - ldrh r1, [r3, 0x6] - adds r0, r7, r1 - strh r0, [r3, 0x6] - mov r1, r8 - b _0811D9EA -_0811D9C8: - ldrh r0, [r3, 0xE] - ldrh r2, [r3, 0x6] - adds r1, r0, r2 - strh r1, [r3, 0x6] - ldrh r2, [r3, 0x14] - add r2, r8 - strh r2, [r3, 0x14] - lsls r1, r2, 16 - asrs r1, 16 - ldrh r4, [r3, 0xC] - adds r7, r0, 0 - cmp r1, r5 - ble _0811D9EE - ldrh r1, [r3, 0x4] - adds r0, r4, r1 - strh r0, [r3, 0x4] - mov r1, r12 -_0811D9EA: - subs r0, r2, r1 - strh r0, [r3, 0x14] -_0811D9EE: - movs r5, 0 - lsls r0, r4, 16 - asrs r2, r0, 16 - cmp r2, 0 - ble _0811DA06 - movs r4, 0x4 - ldrsh r1, [r3, r4] - movs r4, 0x8 - ldrsh r0, [r3, r4] - ldrh r4, [r3, 0x8] - cmp r1, r0 - bge _0811DA18 -_0811DA06: - cmp r2, 0 - bge _0811DA26 - movs r0, 0x4 - ldrsh r1, [r3, r0] - movs r2, 0x8 - ldrsh r0, [r3, r2] - ldrh r4, [r3, 0x8] - cmp r1, r0 - bgt _0811DA26 -_0811DA18: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r9 - cmp r0, 0 - beq _0811DA26 - strh r4, [r3, 0x4] -_0811DA26: - lsls r0, r7, 16 - asrs r2, r0, 16 - cmp r2, 0 - ble _0811DA3C - movs r4, 0x6 - ldrsh r1, [r3, r4] - movs r4, 0xA - ldrsh r0, [r3, r4] - ldrh r4, [r3, 0xA] - cmp r1, r0 - bge _0811DA4E -_0811DA3C: - cmp r2, 0 - bge _0811DA5C - movs r0, 0x6 - ldrsh r1, [r3, r0] - movs r2, 0xA - ldrsh r0, [r3, r2] - ldrh r4, [r3, 0xA] - cmp r1, r0 - bgt _0811DA5C -_0811DA4E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r10 - cmp r0, 0 - beq _0811DA5C - strh r4, [r3, 0x6] -_0811DA5C: - cmp r5, 0x2 - beq _0811DA64 - movs r0, 0 - b _0811DA66 -_0811DA64: - movs r0, 0x1 -_0811DA66: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811D978 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/berry_blender.s b/asm/berry_blender.s deleted file mode 100644 index b6ee5f9f3..000000000 --- a/asm/berry_blender.s +++ /dev/null @@ -1,9164 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_804E290 -sub_804E290: @ 804E290 - push {lr} - ldr r0, _0804E2B0 @ =gMPlay_SE2 - ldr r1, _0804E2B4 @ =0x0000ffff - ldr r2, _0804E2B8 @ =gUnknown_03004854 - ldr r2, [r2] - adds r2, 0x56 - movs r3, 0 - ldrsh r2, [r2, r3] - subs r2, 0x80 - lsls r2, 17 - asrs r2, 16 - bl m4aMPlayPitchControl - pop {r0} - bx r0 - .align 2, 0 -_0804E2B0: .4byte gMPlay_SE2 -_0804E2B4: .4byte 0x0000ffff -_0804E2B8: .4byte gUnknown_03004854 - thumb_func_end sub_804E290 - - thumb_func_start sub_804E2BC -sub_804E2BC: @ 804E2BC - push {lr} - bl sub_80514A4 - bl sub_80514F0 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2BC - - thumb_func_start sub_804E2D8 -sub_804E2D8: @ 804E2D8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2D8 - - thumb_func_start sub_804E2EC -sub_804E2EC: @ 804E2EC - push {r4-r7,lr} - ldr r1, _0804E308 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - mov r12, r1 - cmp r0, 0x9 - bls _0804E2FC - b _0804E4F4 -_0804E2FC: - lsls r0, 2 - ldr r1, _0804E30C @ =_0804E310 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E308: .4byte gUnknown_03004854 -_0804E30C: .4byte _0804E310 - .align 2, 0 -_0804E310: - .4byte _0804E338 - .4byte _0804E34C - .4byte _0804E380 - .4byte _0804E3C4 - .4byte _0804E3D8 - .4byte _0804E3EC - .4byte _0804E410 - .4byte _0804E434 - .4byte _0804E48C - .4byte _0804E4BC -_0804E338: - ldr r0, _0804E344 @ =gUnknown_08E6C100 - ldr r1, _0804E348 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E344: .4byte gUnknown_08E6C100 -_0804E348: .4byte 0x02010000 -_0804E34C: - ldr r1, _0804E36C @ =gUnknown_08215C2C - ldr r2, _0804E370 @ =0x06004000 - ldr r0, _0804E374 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E378 @ =0x80000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804E37C @ =gUnknown_08215C0C - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E36C: .4byte gUnknown_08215C2C -_0804E370: .4byte 0x06004000 -_0804E374: .4byte 0x040000d4 -_0804E378: .4byte 0x80000200 -_0804E37C: .4byte gUnknown_08215C0C -_0804E380: - ldr r3, _0804E3B8 @ =0x02010000 - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0x80 - lsls r5, 6 - ldr r1, _0804E3BC @ =0x040000d4 - ldr r6, _0804E3C0 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804E396: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804E396 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E3B8: .4byte 0x02010000 -_0804E3BC: .4byte 0x040000d4 -_0804E3C0: .4byte 0x80000800 -_0804E3C4: - ldr r0, _0804E3D0 @ =gUnknown_08E6C920 - ldr r1, _0804E3D4 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3D0: .4byte gUnknown_08E6C920 -_0804E3D4: .4byte 0x02010000 -_0804E3D8: - ldr r0, _0804E3E4 @ =gUnknown_08E6D354 - ldr r1, _0804E3E8 @ =0x02013000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3E4: .4byte gUnknown_08E6D354 -_0804E3E8: .4byte 0x02013000 -_0804E3EC: - ldr r1, _0804E400 @ =0x02010000 - ldr r2, _0804E404 @ =0x0600e000 - ldr r0, _0804E408 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E40C @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E400: .4byte 0x02010000 -_0804E404: .4byte 0x0600e000 -_0804E408: .4byte 0x040000d4 -_0804E40C: .4byte 0x80000800 -_0804E410: - ldr r1, _0804E424 @ =0x02011000 - ldr r2, _0804E428 @ =0x0600f000 - ldr r0, _0804E42C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E430 @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E424: .4byte 0x02011000 -_0804E428: .4byte 0x0600f000 -_0804E42C: .4byte 0x040000d4 -_0804E430: .4byte 0x80000800 -_0804E434: - ldr r3, _0804E474 @ =0x02013000 - movs r2, 0 - adds r6, r3, 0 - ldr r7, _0804E478 @ =gUnknown_0821602C - movs r0, 0x80 - lsls r0, 1 - adds r5, r0, 0 - ldr r4, _0804E47C @ =0x0000027f -_0804E444: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r0] - orrs r1, r5 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r4 - bls _0804E444 - ldr r1, _0804E480 @ =0x06006000 - ldr r0, _0804E484 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _0804E488 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - adds r0, r7, 0 - movs r1, 0x80 - movs r2, 0x20 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E474: .4byte 0x02013000 -_0804E478: .4byte gUnknown_0821602C -_0804E47C: .4byte 0x0000027f -_0804E480: .4byte 0x06006000 -_0804E484: .4byte 0x040000d4 -_0804E488: .4byte 0x80000280 -_0804E48C: - ldr r0, _0804E4AC @ =gUnknown_082163DC - bl LoadSpriteSheet - ldr r0, _0804E4B0 @ =gUnknown_082164F4 - bl LoadSpriteSheet - ldr r0, _0804E4B4 @ =gUnknown_08216454 - bl LoadSpriteSheet -_0804E49E: - ldr r0, _0804E4B8 @ =gUnknown_03004854 -_0804E4A0: - ldr r1, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0804E4F4 - .align 2, 0 -_0804E4AC: .4byte gUnknown_082163DC -_0804E4B0: .4byte gUnknown_082164F4 -_0804E4B4: .4byte gUnknown_08216454 -_0804E4B8: .4byte gUnknown_03004854 -_0804E4BC: - ldr r0, _0804E4E0 @ =gUnknown_08216540 - bl LoadSpriteSheet - ldr r0, _0804E4E4 @ =gUnknown_08216574 - bl LoadSpriteSheet - ldr r0, _0804E4E8 @ =gUnknown_082163EC - bl LoadSpritePalette - ldr r0, _0804E4EC @ =gUnknown_082163E4 - bl LoadSpritePalette - ldr r0, _0804E4F0 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _0804E4F6 - .align 2, 0 -_0804E4E0: .4byte gUnknown_08216540 -_0804E4E4: .4byte gUnknown_08216574 -_0804E4E8: .4byte gUnknown_082163EC -_0804E4EC: .4byte gUnknown_082163E4 -_0804E4F0: .4byte gUnknown_03004854 -_0804E4F4: - movs r0, 0 -_0804E4F6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804E2EC - - thumb_func_start sub_804E4FC -sub_804E4FC: @ 804E4FC - movs r1, 0x80 - lsls r1, 19 - ldr r2, _0804E52C @ =0x00001341 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0xC - movs r2, 0x91 - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _0804E530 @ =0x00000c0d - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804E534 @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bx lr - .align 2, 0 -_0804E52C: .4byte 0x00001341 -_0804E530: .4byte 0x00000c0d -_0804E534: .4byte REG_BG0HOFS - thumb_func_end sub_804E4FC - - thumb_func_start sub_804E538 -sub_804E538: @ 804E538 - push {lr} - ldr r1, _0804E55C @ =gUnknown_03004854 - ldr r0, _0804E560 @ =0x02018000 - str r0, [r1] - adds r2, r0, 0 - adds r2, 0x6F - movs r1, 0 - strb r1, [r0] - strb r1, [r2] - ldr r0, _0804E564 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl sub_804E884 - ldr r0, _0804E568 @ =sub_804E56C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0804E55C: .4byte gUnknown_03004854 -_0804E560: .4byte 0x02018000 -_0804E564: .4byte gSpecialVar_0x8004 -_0804E568: .4byte sub_804E56C - thumb_func_end sub_804E538 - - thumb_func_start sub_804E56C -sub_804E56C: @ 804E56C - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _0804E588 @ =gUnknown_03004854 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bls _0804E57C - b _0804E71A -_0804E57C: - lsls r0, 2 - ldr r1, _0804E58C @ =_0804E590 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E588: .4byte gUnknown_03004854 -_0804E58C: .4byte _0804E590 - .align 2, 0 -_0804E590: - .4byte _0804E5AC - .4byte _0804E614 - .4byte _0804E67C - .4byte _0804E692 - .4byte _0804E6A8 - .4byte _0804E6D4 - .4byte _0804E700 -_0804E5AC: - movs r0, 0x80 - lsls r0, 19 - movs r5, 0 - strh r5, [r0] - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - bl SetVBlankCallback - ldr r4, _0804E60C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r3, _0804E610 @ =gUnknown_03004854 - ldr r2, [r3] - ldrb r0, [r2] - adds r0, 0x1 - movs r1, 0 - strb r0, [r2] - ldr r2, [r3] - movs r3, 0xA0 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - subs r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0xA1 - lsls r0, 1 - adds r3, r2, r0 - movs r0, 0x50 - strh r0, [r3] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - strb r5, [r2, 0x1] - bl sub_8051474 - b _0804E71A - .align 2, 0 -_0804E60C: .4byte gWindowConfig_81E6F68 -_0804E610: .4byte gUnknown_03004854 -_0804E614: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804E620 - b _0804E71A -_0804E620: - movs r4, 0 - ldr r5, _0804E668 @ =gUnknown_082162E4 - ldr r6, _0804E66C @ =gUnknown_03004854 -_0804E626: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804E670 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x5C - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x5C - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804E674 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804E626 - ldr r0, _0804E678 @ =sub_804E2BC - bl SetVBlankCallback - b _0804E6BE - .align 2, 0 -_0804E668: .4byte gUnknown_082162E4 -_0804E66C: .4byte gUnknown_03004854 -_0804E670: .4byte gSpriteTemplate_82163F4 -_0804E674: .4byte gSprites -_0804E678: .4byte sub_804E2BC -_0804E67C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8051474 - b _0804E6BE -_0804E692: - bl sub_804E4FC - ldr r0, _0804E6A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E71A - b _0804E6BE - .align 2, 0 -_0804E6A4: .4byte gPaletteFade -_0804E6A8: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_0804E6BE: - ldr r0, _0804E6D0 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804E71A - .align 2, 0 -_0804E6CC: .4byte gOtherText_BlenderChooseBerry -_0804E6D0: .4byte gUnknown_03004854 -_0804E6D4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804E71A - ldr r0, _0804E6FC @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E71A - .align 2, 0 -_0804E6FC: .4byte gUnknown_03004854 -_0804E700: - ldr r0, _0804E730 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0804E71A - bl sub_80A6978 - ldr r0, _0804E734 @ =gUnknown_03004854 - ldr r0, [r0] - strb r4, [r0] -_0804E71A: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E730: .4byte gPaletteFade -_0804E734: .4byte gUnknown_03004854 - thumb_func_end sub_804E56C - - thumb_func_start sub_804E738 -sub_804E738: @ 804E738 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - subs r1, r2 - ldrh r0, [r4, 0x3C] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r3, [r4, 0x2E] - adds r0, r3 - strh r0, [r4, 0x2E] - subs r2, 0x1 - strh r2, [r4, 0x36] - lsls r0, 16 - lsls r1, 16 - cmp r0, r1 - bge _0804E786 - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x36] - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0804E780 - adds r0, r4, 0 - bl DestroySprite - b _0804E786 -_0804E780: - movs r0, 0x74 - bl PlaySE -_0804E786: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804E738 - - thumb_func_start sub_804E794 -sub_804E794: @ 804E794 - push {r4-r6,lr} - ldr r5, [sp, 0x10] - ldr r6, [sp, 0x14] - lsls r2, 16 - lsrs r2, 16 - movs r4, 0 - strh r2, [r0, 0x2E] - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - strh r3, [r0, 0x34] - movs r1, 0xA - strh r1, [r0, 0x36] - strh r4, [r0, 0x38] - strh r5, [r0, 0x3A] - strh r6, [r0, 0x3C] - ldr r1, _0804E7BC @ =sub_804E738 - str r1, [r0, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E7BC: .4byte sub_804E738 - thumb_func_end sub_804E794 - - thumb_func_start sub_804E7C0 -sub_804E7C0: @ 804E7C0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r0, 24 - movs r1, 0xF6 - lsls r1, 23 - adds r0, r1 - lsrs r0, 24 - movs r3, 0x1 - ands r3, r6 - movs r1, 0 - movs r2, 0x50 - bl sub_80A7DEC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - mov r8, r2 - add r8, r0 - mov r3, r8 - lsls r3, 2 - mov r8, r3 - ldr r0, _0804E83C @ =gSprites - add r8, r0 - ldr r5, _0804E840 @ =gUnknown_08216594 - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 1 - adds r0, r4, r5 - movs r6, 0 - ldrsh r1, [r0, r6] - adds r0, r5, 0x2 - adds r0, r4, r0 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r0, r5, 0x4 - adds r0, r4, r0 - movs r6, 0 - ldrsh r3, [r0, r6] - adds r0, r5, 0x6 - adds r0, r4, r0 - movs r6, 0 - ldrsh r0, [r0, r6] - str r0, [sp] - adds r5, 0x8 - adds r4, r5 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - mov r0, r8 - bl sub_804E794 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E83C: .4byte gSprites -_0804E840: .4byte gUnknown_08216594 - thumb_func_end sub_804E7C0 - - thumb_func_start sub_804E844 -sub_804E844: @ 804E844 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - adds r0, r5, 0 - adds r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r4, r0, 0 - strh r5, [r6] - adds r0, r6, 0x2 - adds r1, r4, 0 - bl StringCopy - ldrb r0, [r4, 0x15] - strb r0, [r6, 0x9] - ldrb r0, [r4, 0x16] - strb r0, [r6, 0xA] - ldrb r0, [r4, 0x17] - strb r0, [r6, 0xB] - ldrb r0, [r4, 0x18] - strb r0, [r6, 0xC] - ldrb r0, [r4, 0x19] - strb r0, [r6, 0xD] - ldrb r0, [r4, 0x1A] - strb r0, [r6, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_804E844 - - thumb_func_start sub_804E884 -sub_804E884: @ 804E884 - push {r4,r5,lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804E89E - ldr r2, _0804E8AC @ =gLinkPlayers - movs r3, 0x2 - adds r0, r2, 0 - adds r0, 0x54 -_0804E896: - strh r3, [r0, 0x1A] - subs r0, 0x1C - cmp r0, r2 - bge _0804E896 -_0804E89E: - cmp r1, 0x1 - beq _0804E8C4 - cmp r1, 0x1 - bgt _0804E8B0 - cmp r1, 0 - beq _0804E8BA - b _0804E974 - .align 2, 0 -_0804E8AC: .4byte gLinkPlayers -_0804E8B0: - cmp r1, 0x2 - beq _0804E8F8 - cmp r1, 0x3 - beq _0804E93C - b _0804E974 -_0804E8BA: - ldr r0, _0804E8C0 @ =gUnknown_03004834 - strb r1, [r0] - b _0804E974 - .align 2, 0 -_0804E8C0: .4byte gUnknown_03004834 -_0804E8C4: - ldr r0, _0804E8E4 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E8E8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x2 - strb r1, [r0] - ldr r4, _0804E8EC @ =gLinkPlayers + 0x8 - ldr r1, _0804E8F0 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r4, 0x1C - ldr r0, _0804E8F4 @ =gUnknown_082162B8 - ldr r1, [r0] - b _0804E920 - .align 2, 0 -_0804E8E4: .4byte gUnknown_03004834 -_0804E8E8: .4byte gUnknown_03004854 -_0804E8EC: .4byte gLinkPlayers + 0x8 -_0804E8F0: .4byte gSaveBlock2 -_0804E8F4: .4byte gUnknown_082162B8 -_0804E8F8: - ldr r0, _0804E928 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E92C @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x3 - strb r1, [r0] - ldr r4, _0804E930 @ =gLinkPlayers + 0x8 - ldr r1, _0804E934 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E938 @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r4, 0x38 - ldr r1, [r5, 0x4] -_0804E920: - adds r0, r4, 0 - bl StringCopy - b _0804E974 - .align 2, 0 -_0804E928: .4byte gUnknown_03004834 -_0804E92C: .4byte gUnknown_03004854 -_0804E930: .4byte gLinkPlayers + 0x8 -_0804E934: .4byte gSaveBlock2 -_0804E938: .4byte gUnknown_082162B8 -_0804E93C: - ldr r0, _0804E97C @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E980 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x4 - strb r1, [r0] - ldr r4, _0804E984 @ =gLinkPlayers + 0x8 - ldr r1, _0804E988 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E98C @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r0, r4, 0 - adds r0, 0x38 - ldr r1, [r5, 0x4] - bl StringCopy - adds r4, 0x54 - ldr r1, [r5, 0x8] - adds r0, r4, 0 - bl StringCopy -_0804E974: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E97C: .4byte gUnknown_03004834 -_0804E980: .4byte gUnknown_03004854 -_0804E984: .4byte gLinkPlayers + 0x8 -_0804E988: .4byte gSaveBlock2 -_0804E98C: .4byte gUnknown_082162B8 - thumb_func_end sub_804E884 - - thumb_func_start sub_804E990 -sub_804E990: @ 804E990 - push {r4,r5,lr} - movs r0, 0x80 - lsls r0, 19 - movs r2, 0 - strh r2, [r0] - ldr r3, _0804E9D8 @ =gUnknown_03004854 - ldr r0, _0804E9DC @ =0x02018000 - str r0, [r3] - movs r1, 0 - strb r2, [r0] - movs r2, 0x9A - lsls r2, 1 - adds r0, r2 - str r1, [r0] - movs r2, 0 - ldr r5, _0804E9E0 @ =gSpecialVar_0x8004 - adds r4, r3, 0 - movs r3, 0 -_0804E9B4: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x80 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0804E9B4 - ldrb r0, [r5] - bl sub_804E884 - ldrh r0, [r5] - cmp r0, 0 - bne _0804E9E8 - ldr r0, _0804E9E4 @ =sub_804E9F8 - bl SetMainCallback2 - b _0804E9EE - .align 2, 0 -_0804E9D8: .4byte gUnknown_03004854 -_0804E9DC: .4byte 0x02018000 -_0804E9E0: .4byte gSpecialVar_0x8004 -_0804E9E4: .4byte sub_804E9F8 -_0804E9E8: - ldr r0, _0804E9F4 @ =sub_804F378 - bl SetMainCallback2 -_0804E9EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E9F4: .4byte sub_804F378 - thumb_func_end sub_804E990 - - thumb_func_start sub_804E9F8 -sub_804E9F8: @ 804E9F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804EA18 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x66 - bls _0804EA0E - b _0804F0CE -_0804EA0E: - lsls r0, 2 - ldr r1, _0804EA1C @ =_0804EA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804EA18: .4byte gUnknown_03004854 -_0804EA1C: .4byte _0804EA20 - .align 2, 0 -_0804EA20: - .4byte _0804EBBC - .4byte _0804EC74 - .4byte _0804EC94 - .4byte _0804ECE8 - .4byte _0804ECFA - .4byte _0804ED14 - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804ED48 - .4byte _0804ED94 - .4byte _0804EDB8 - .4byte _0804EE46 - .4byte _0804EEA0 - .4byte _0804EF16 - .4byte _0804EF34 - .4byte _0804EFD8 - .4byte _0804F00C - .4byte _0804F0CE - .4byte _0804F020 - .4byte _0804F024 - .4byte _0804F02A - .4byte _0804F03A - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F084 - .4byte _0804F0A0 - .4byte _0804F0BC -_0804EBBC: - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804EC60 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804EC64 @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804EC68 @ =gLinkType - ldr r2, _0804EC6C @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r3, _0804EC70 @ =gUnknown_03004854 - ldr r1, [r3] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, [r3] - adds r4, r0, 0 - adds r4, 0x4E - movs r1, 0 - strh r2, [r4] - adds r0, 0x7E - strb r1, [r0] - ldr r1, [r3] - movs r4, 0xA2 - lsls r4, 1 - adds r0, r1, r4 - strh r2, [r0] - adds r4, 0x2 - adds r0, r1, r4 - strh r2, [r0] - movs r5, 0 - movs r6, 0 - mov r8, r3 - movs r7, 0xA6 - lsls r7, 1 -_0804EC18: - ldr r0, [r3] - lsls r1, r5, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r4, r5, 0x1 - adds r1, r5 - lsls r1, 1 - movs r2, 0x2 -_0804EC2A: - ldr r0, [r3] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804EC2A - adds r5, r4, 0 - cmp r5, 0x3 - ble _0804EC18 - mov r0, r8 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x7C - movs r2, 0 - movs r1, 0 - strh r1, [r0] - subs r0, 0x26 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - strb r2, [r3, 0x1] - b _0804F0CE - .align 2, 0 -_0804EC60: .4byte sub_804E2BC -_0804EC64: .4byte gWindowConfig_81E6F68 -_0804EC68: .4byte gLinkType -_0804EC6C: .4byte 0x00004422 -_0804EC70: .4byte gUnknown_03004854 -_0804EC74: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804EC80 - b _0804F0CE -_0804EC80: - ldr r0, _0804EC90 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F0CE - .align 2, 0 -_0804EC90: .4byte gUnknown_03004854 -_0804EC94: - movs r5, 0 - ldr r4, _0804ECD8 @ =gUnknown_082162E4 - ldr r6, _0804ECDC @ =gUnknown_03004854 -_0804EC9A: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r5 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804ECE4 @ =gSprites - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EC9A - b _0804F0AA - .align 2, 0 -_0804ECD8: .4byte gUnknown_082162E4 -_0804ECDC: .4byte gUnknown_03004854 -_0804ECE0: .4byte gSpriteTemplate_82163F4 -_0804ECE4: .4byte gSprites -_0804ECE8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _0804F0AA -_0804ECFA: - bl sub_804E4FC - ldr r0, _0804ED10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804ED0C - b _0804F0CE -_0804ED0C: - b _0804F0AA - .align 2, 0 -_0804ED10: .4byte gPaletteFade -_0804ED14: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804ED40 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xE - bl MenuPrint - ldr r2, _0804ED44 @ =gUnknown_03004854 - ldr r1, [r2] - movs r3, 0 - movs r0, 0x8 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r3, [r0] - b _0804F0CE - .align 2, 0 -_0804ED40: .4byte gOtherText_LinkStandby3 -_0804ED44: .4byte gUnknown_03004854 -_0804ED48: - mov r2, r8 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - movs r5, 0 - strb r0, [r1] - ldr r0, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r5, [r0] - ldr r0, [r2] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r1, _0804ED8C @ =gScriptItemId - ldrh r1, [r1] - bl sub_804E844 - ldr r0, _0804ED90 @ =gBlockSendBuffer - mov r2, r8 - ldr r1, [r2] - adds r1, r4 - movs r2, 0x10 - bl memcpy - bl sub_80084A4 - mov r3, r8 - ldr r0, [r3] - subs r4, 0x4C - adds r0, r4 - str r5, [r0] - b _0804F0CE - .align 2, 0 -_0804ED8C: .4byte gScriptItemId -_0804ED90: .4byte gBlockSendBuffer -_0804ED94: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EDA0 - b _0804F0CE -_0804EDA0: - bl ResetBlockReceivedFlags - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _0804EDB0 - b _0804F0AA -_0804EDB0: - movs r0, 0x4 - bl sub_8007E9C - b _0804F0AA -_0804EDB8: - mov r0, r8 - ldr r1, [r0] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _0804EDCE - b _0804F0CE -_0804EDCE: - bl MenuZeroFillScreen - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_8008198 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0804EDE6 - b _0804F0CE -_0804EDE6: - movs r5, 0 - mov r7, r8 - movs r6, 0xBE - lsls r6, 1 - b _0804EE18 -_0804EDF0: - ldr r0, [r7] - lsls r4, r5, 4 - adds r0, r4, r0 - adds r0, r6 - lsls r1, r5, 8 - ldr r2, _0804EE2C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x10 - bl memcpy - ldr r0, [r7] - lsls r2, r5, 1 - adds r1, r0, 0 - adds r1, 0x80 - adds r1, r2 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r5, 0x1 -_0804EE18: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - blt _0804EDF0 - bl ResetBlockReceivedFlags - b _0804F0AA - .align 2, 0 -_0804EE2C: .4byte gBlockRecvBuffer -_0804EE30: - ldrb r1, [r4] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r5, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804EE7A -_0804EE46: - bl GetLinkPlayerCount - ldr r2, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x88 - strb r0, [r1] - movs r5, 0 - ldr r2, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r4, r2, r3 - ldr r1, _0804EE9C @ =gUnknown_082162EC - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - ldrb r3, [r4] - adds r0, r1 -_0804EE6C: - ldrb r1, [r0] - cmp r3, r1 - beq _0804EE30 - adds r0, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EE6C -_0804EE7A: - ldr r3, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r3] - movs r4, 0x98 - lsls r4, 1 - adds r2, r1, r4 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F0AE - .align 2, 0 -_0804EE98: .4byte gUnknown_03004854 -_0804EE9C: .4byte gUnknown_082162EC -_0804EEA0: - mov r1, r8 - ldr r2, [r1] - movs r3, 0x98 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804EEB6 - b _0804F0CE -_0804EEB6: - movs r4, 0x9E - lsls r4, 1 - adds r0, r2, r4 - adds r1, r2, 0 - adds r1, 0x88 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0804EF00 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r0, r8 - ldr r2, [r0] - ldr r3, _0804EEF4 @ =gUnknown_082162F8 - ldr r1, _0804EEF8 @ =gUnknown_08216300 - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldr r3, _0804EEFC @ =0xffffa800 - adds r1, r3, 0 - ldrh r0, [r0] - adds r1, r0 - adds r2, 0x54 - strh r1, [r2] - b _0804EF06 - .align 2, 0 -_0804EEF4: .4byte gUnknown_082162F8 -_0804EEF8: .4byte gUnknown_08216300 -_0804EEFC: .4byte 0xffffa800 -_0804EF00: - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] -_0804EF06: - mov r4, r8 - ldr r0, [r4] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _0804F0CE -_0804EF16: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EF22 - b _0804F0CE -_0804EF22: - ldr r2, _0804EF30 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - b _0804EFBC - .align 2, 0 -_0804EF30: .4byte gUnknown_03004854 -_0804EF34: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - mov r4, r8 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804EFB8 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804EFC8 @ =gUnknown_082162F8 - ldr r1, _0804EFCC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804EFD0 @ =REG_BG2CNT - ldr r4, _0804EFD4 @ =0x00004882 - adds r0, r4, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - bl sub_804F238 - bl BuyMenuDrawFieldObjects -_0804EFB8: - mov r1, r8 - ldr r0, [r1] -_0804EFBC: - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804EFC8: .4byte gUnknown_082162F8 -_0804EFCC: .4byte gUnknown_08216300 -_0804EFD0: .4byte REG_BG2CNT -_0804EFD4: .4byte 0x00004882 -_0804EFD8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804EFF6 - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804EFF6: - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r0, [r0] - movs r4, 0xB4 - lsls r4, 1 - adds r0, r4 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804F008: .4byte gUnknown_03004854 -_0804F00C: - ldr r0, _0804F01C @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - b _0804F0AA - .align 2, 0 -_0804F01C: .4byte gSpriteTemplate_8216548 -_0804F020: - mov r0, r8 - b _0804F0AC -_0804F024: - bl sub_80084A4 - b _0804F0AA -_0804F02A: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE - bl sub_8007E24 - b _0804F0AA -_0804F03A: - mov r1, r8 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - movs r1, 0 - movs r0, 0x80 - strh r0, [r2] - movs r2, 0x96 - lsls r2, 1 - adds r0, r3, r2 - str r1, [r0] - ldr r0, _0804F07C @ =sub_80501FC - bl SetMainCallback2 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F080 @ =0x00000193 - cmp r0, r4 - beq _0804F074 - bl GetCurrentMapMusic - mov r3, r8 - ldr r1, [r3] - movs r2, 0xBC - lsls r2, 1 - adds r1, r2 - strh r0, [r1] -_0804F074: - adds r0, r4, 0 - bl PlayBGM - b _0804F0CE - .align 2, 0 -_0804F07C: .4byte sub_80501FC -_0804F080: .4byte 0x00000193 -_0804F084: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804F09C @ =gOtherText_LinkNotFound - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0804F0AA - .align 2, 0 -_0804F09C: .4byte gOtherText_LinkNotFound -_0804F0A0: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE -_0804F0AA: - ldr r0, _0804F0B8 @ =gUnknown_03004854 -_0804F0AC: - ldr r1, [r0] -_0804F0AE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F0CE - .align 2, 0 -_0804F0B8: .4byte gUnknown_03004854 -_0804F0BC: - ldr r0, _0804F0EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804F0CE - ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0804F0CE: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F0EC: .4byte gPaletteFade -_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_804E9F8 - - thumb_func_start sub_804F0F4 -sub_804F0F4: @ 804F0F4 - push {r4,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804F158 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804F15C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804F160 @ =gLinkType - ldr r2, _0804F164 @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804F168 @ =gUnknown_03004854 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x4E - movs r1, 0 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F158: .4byte sub_804E2BC -_0804F15C: .4byte gWindowConfig_81E6F68 -_0804F160: .4byte gLinkType -_0804F164: .4byte 0x00004422 -_0804F168: .4byte gUnknown_03004854 - thumb_func_end sub_804F0F4 - - thumb_func_start task_tutorial_oak_boy_girl -task_tutorial_oak_boy_girl: @ 804F16C - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r0, 24 - adds r2, r0, 0 - adds r2, 0x18 - ldr r0, _0804F1A8 @ =gUnknown_03004854 - ldr r0, [r0] - lsrs r1, 23 - adds r0, 0xA2 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0804F1AC @ =gUnknown_08216303 - adds r0, r1 - ldrb r1, [r0] - cmp r2, r1 - bcc _0804F1B4 - adds r0, r1, 0 - adds r0, 0x30 - cmp r2, r0 - bcs _0804F1B4 - subs r0, 0x1C - cmp r2, r0 - bcc _0804F1B0 - adds r0, 0x8 - cmp r2, r0 - bcs _0804F1B0 - movs r0, 0x2 - b _0804F1B6 - .align 2, 0 -_0804F1A8: .4byte gUnknown_03004854 -_0804F1AC: .4byte gUnknown_08216303 -_0804F1B0: - movs r0, 0x1 - b _0804F1B6 -_0804F1B4: - movs r0, 0 -_0804F1B6: - pop {r1} - bx r1 - thumb_func_end task_tutorial_oak_boy_girl - - thumb_func_start sub_804F1BC -sub_804F1BC: @ 804F1BC - push {r4-r7,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r4, 0 - cmp r0, 0xAF - bne _0804F1EE - movs r3, 0 - subs r5, r1, 0x1 - adds r2, 0x9 -_0804F1D2: - adds r0, r2, r4 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _0804F1E0 - adds r4, r3, 0 -_0804F1E0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _0804F1D2 - adds r0, r4, 0x5 - b _0804F204 -_0804F1EE: - subs r0, 0x85 - lsls r0, 16 - lsrs r4, r0, 16 - subs r5, r1, 0x1 - cmp r4, 0x4 - bls _0804F208 - adds r0, r4, 0 - movs r1, 0x5 - bl __umodsi3 - adds r0, 0x5 -_0804F204: - lsls r0, 16 - lsrs r4, r0, 16 -_0804F208: - movs r3, 0 - cmp r3, r5 - bge _0804F22E - ldr r7, _0804F234 @ =gUnknown_082165BC - lsls r0, r4, 1 - adds r6, r0, r4 -_0804F214: - adds r4, r3, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - adds r1, r3, r6 - adds r1, r7 - ldrb r1, [r1] - adds r1, 0x85 - bl sub_80516C4 - lsls r4, 16 - lsrs r3, r4, 16 - cmp r3, r5 - blt _0804F214 -_0804F22E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F234: .4byte gUnknown_082165BC - thumb_func_end sub_804F1BC - - thumb_func_start sub_804F238 -sub_804F238: @ 804F238 - push {r4-r7,lr} - movs r4, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 - movs r6, 0xFF - ldr r5, _0804F2A4 @ =gUnknown_082162EC -_0804F242: - ldr r3, [r7] - lsls r2, r4, 1 - adds r0, r3, 0 - adds r0, 0xA2 - adds r0, r2 - strh r6, [r0] - adds r1, r3, 0 - adds r1, 0x9A - adds r1, r2 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F242 - movs r3, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 -_0804F270: - movs r4, 0 - adds r6, r3, 0x1 - lsls r5, r3, 1 -_0804F276: - ldr r2, [r7] - lsls r0, r4, 1 - adds r1, r2, 0 - adds r1, 0x9A - adds r1, r0 - ldrh r0, [r1] - cmp r0, r3 - bne _0804F28E - adds r0, r2, 0 - adds r0, 0xA2 - adds r0, r5 - strh r4, [r0] -_0804F28E: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F276 - adds r3, r6, 0 - cmp r3, 0x3 - ble _0804F270 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F2A0: .4byte gUnknown_03004854 -_0804F2A4: .4byte gUnknown_082162EC - thumb_func_end sub_804F238 - - thumb_func_start BuyMenuDrawFieldObjects -BuyMenuDrawFieldObjects: @ 804F2A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r7, _0804F360 @ =gUnknown_03004854 - ldr r0, _0804F364 @ =gUnknown_082162D4 - mov r8, r0 -_0804F2B6: - ldr r2, [r7] - lsls r4, r6, 1 - adds r0, r2, 0 - adds r0, 0x9A - adds r3, r0, r4 - ldrh r0, [r3] - cmp r0, 0xFF - beq _0804F34A - ldr r5, _0804F368 @ =gStringVar1 - adds r1, r2, 0 - adds r1, 0x5C - ldrh r3, [r3] - adds r1, r3 - adds r0, r2, 0 - adds r0, 0x60 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r1, r0, 0 - adds r1, 0x9A - adds r1, r4 - adds r0, 0x5C - ldrh r1, [r1] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F36C @ =gSprites - adds r0, r1 - lsls r1, r6, 24 - lsrs r1, 24 - bl StartSpriteAnim - bl GetMultiplayerId - lsls r0, 24 - ldr r1, [r7] - adds r1, 0x9A - adds r1, r4 - lsrs r0, 24 - ldrh r1, [r1] - cmp r0, r1 - bne _0804F31A - adds r0, r5, 0 - ldr r1, _0804F370 @ =gUnknown_082162C4 - bl StringCopy - adds r5, r0, 0 -_0804F31A: - ldr r0, [r7] - adds r0, 0x9A - adds r0, r4 - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _0804F374 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r5, 0 - bl StringCopy - mov r0, r8 - ldrb r1, [r0] - lsls r1, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0x1] - lsls r2, 3 - ldr r0, _0804F368 @ =gStringVar1 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_0804F34A: - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0804F2B6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F360: .4byte gUnknown_03004854 -_0804F364: .4byte gUnknown_082162D4 -_0804F368: .4byte gStringVar1 -_0804F36C: .4byte gSprites -_0804F370: .4byte gUnknown_082162C4 -_0804F374: .4byte gLinkPlayers + 0x8 - thumb_func_end BuyMenuDrawFieldObjects - - thumb_func_start sub_804F378 -sub_804F378: @ 804F378 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804F398 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x15 - bls _0804F38E - b _0804F7E6 -_0804F38E: - lsls r0, 2 - ldr r1, _0804F39C @ =_0804F3A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804F398: .4byte gUnknown_03004854 -_0804F39C: .4byte _0804F3A0 - .align 2, 0 -_0804F3A0: - .4byte _0804F3F8 - .4byte _0804F474 - .4byte _0804F494 - .4byte _0804F4EC - .4byte _0804F518 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F54C - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F578 - .4byte _0804F5C8 - .4byte _0804F636 - .4byte _0804F650 - .4byte _0804F6F8 - .4byte _0804F720 - .4byte _0804F7E6 - .4byte _0804F73C - .4byte _0804F742 - .4byte _0804F748 - .4byte _0804F754 -_0804F3F8: - bl sub_804F0F4 - ldr r4, _0804F46C @ =gScriptItemId - ldrh r1, [r4] - movs r0, 0 - bl sub_80516C4 - ldr r5, _0804F470 @ =gUnknown_03004854 - ldr r0, [r5] - movs r6, 0xBE - lsls r6, 1 - adds r0, r6 - ldrh r1, [r4] - bl sub_804E844 - ldrh r0, [r4] - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x88 - ldrb r1, [r1] - adds r2, r6 - bl sub_804F1BC - movs r4, 0 - movs r6, 0 - mov r8, r5 - movs r7, 0xA6 - lsls r7, 1 -_0804F430: - ldr r0, [r5] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r3, r4, 0x1 - adds r1, r4 - lsls r1, 1 - movs r2, 0x2 -_0804F442: - ldr r0, [r5] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F442 - adds r4, r3, 0 - cmp r4, 0x3 - ble _0804F430 - mov r0, r8 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x7C - movs r2, 0 - movs r0, 0 - strh r0, [r1] - strb r2, [r3, 0x1] - b _0804F7E6 - .align 2, 0 -_0804F46C: .4byte gScriptItemId -_0804F470: .4byte gUnknown_03004854 -_0804F474: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804F480 - b _0804F7E6 -_0804F480: - ldr r0, _0804F490 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F7E6 - .align 2, 0 -_0804F490: .4byte gUnknown_03004854 -_0804F494: - movs r4, 0 - ldr r5, _0804F4DC @ =gUnknown_082162E4 - ldr r6, _0804F4E0 @ =gUnknown_03004854 -_0804F49A: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F4E8 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F49A - ldr r0, _0804F4E0 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F4DC: .4byte gUnknown_082162E4 -_0804F4E0: .4byte gUnknown_03004854 -_0804F4E4: .4byte gSpriteTemplate_82163F4 -_0804F4E8: .4byte gSprites -_0804F4EC: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0804F514 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r4, [r0] - b _0804F7E6 - .align 2, 0 -_0804F514: .4byte gUnknown_03004854 -_0804F518: - mov r2, r8 - ldr r1, [r2] - movs r3, 0x98 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x2 - bne _0804F530 - bl sub_804E4FC -_0804F530: - ldr r0, _0804F548 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804F53E - b _0804F7E6 -_0804F53E: - mov r5, r8 - ldr r1, [r5] - movs r0, 0x8 - strb r0, [r1] - b _0804F7E6 - .align 2, 0 -_0804F548: .4byte gPaletteFade -_0804F54C: - mov r0, r8 - ldr r1, [r0] - movs r2, 0 - movs r0, 0xB - strb r0, [r1] - mov r1, r8 - ldr r0, [r1] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r2, [r0] - b _0804F7E6 -_0804F564: - lsls r1, 1 - adds r0, r3, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804F5A2 -_0804F578: - movs r4, 0 - ldr r2, _0804F5C0 @ =gUnknown_082162EC - ldr r0, _0804F5C4 @ =gUnknown_03004854 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - movs r5, 0x9E - lsls r5, 1 - adds r1, r3, r5 - ldrb r1, [r1] - adds r0, r2 -_0804F594: - ldrb r2, [r0] - cmp r1, r2 - beq _0804F564 - adds r0, 0x1 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F594 -_0804F5A2: - ldr r3, _0804F5C4 @ =gUnknown_03004854 - ldr r1, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r2, r1, r5 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F74C - .align 2, 0 -_0804F5C0: .4byte gUnknown_082162EC -_0804F5C4: .4byte gUnknown_03004854 -_0804F5C8: - mov r1, r8 - ldr r3, [r1] - movs r2, 0x98 - lsls r2, 1 - adds r1, r3, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804F5DE - b _0804F7E6 -_0804F5DE: - movs r5, 0x9E - lsls r5, 1 - adds r0, r3, r5 - adds r4, r3, 0 - adds r4, 0x88 - ldrb r0, [r0] - ldrb r1, [r4] - cmp r0, r1 - bcc _0804F620 - ldr r2, _0804F614 @ =gUnknown_082162F8 - ldr r1, _0804F618 @ =gUnknown_08216300 - ldrb r0, [r4] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldr r2, _0804F61C @ =0xffffa800 - adds r1, r2, 0 - ldrh r0, [r0] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldrb r0, [r3] - adds r0, 0x1 - b _0804F624 - .align 2, 0 -_0804F614: .4byte gUnknown_082162F8 -_0804F618: .4byte gUnknown_08216300 -_0804F61C: .4byte 0xffffa800 -_0804F620: - ldrb r0, [r3] - subs r0, 0x1 -_0804F624: - strb r0, [r3] - mov r3, r8 - ldr r0, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - str r1, [r0] - b _0804F7E6 -_0804F636: - mov r1, r8 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl sub_804F238 - movs r0, 0x2B - bl PlaySE - mov r2, r8 - ldr r0, [r2] - b _0804F710 -_0804F650: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r5, 0x80 - lsls r5, 3 - adds r1, r5, 0 - orrs r0, r1 - strh r0, [r2] - mov r0, r8 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r5, [r1] - adds r0, r5 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804F6D6 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804F6E8 @ =gUnknown_082162F8 - ldr r1, _0804F6EC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804F6F0 @ =REG_BG2CNT - ldr r5, _0804F6F4 @ =0x00004882 - adds r0, r5, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - movs r0, 0x34 - bl PlaySE - bl BuyMenuDrawFieldObjects -_0804F6D6: - mov r1, r8 - ldr r0, [r1] - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F6E8: .4byte gUnknown_082162F8 -_0804F6EC: .4byte gUnknown_08216300 -_0804F6F0: .4byte REG_BG2CNT -_0804F6F4: .4byte 0x00004882 -_0804F6F8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804F70C - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804F70C: - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r0, [r0] -_0804F710: - movs r3, 0xB4 - lsls r3, 1 - adds r0, r3 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F71C: .4byte gUnknown_03004854 -_0804F720: - ldr r0, _0804F734 @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - ldr r0, _0804F738 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F734: .4byte gSpriteTemplate_8216548 -_0804F738: .4byte gUnknown_03004854 -_0804F73C: - mov r5, r8 - ldr r1, [r5] - b _0804F74C -_0804F742: - mov r0, r8 - ldr r1, [r0] - b _0804F74C -_0804F748: - mov r2, r8 - ldr r1, [r2] -_0804F74C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F7E6 -_0804F754: - bl sub_804F81C - ldr r3, _0804F804 @ =gUnknown_03004854 - ldr r4, [r3] - adds r5, r4, 0 - adds r5, 0x56 - movs r2, 0 - movs r1, 0 - movs r0, 0x80 - strh r0, [r5] - movs r5, 0x96 - lsls r5, 1 - adds r0, r4, r5 - str r1, [r0] - ldr r1, _0804F808 @ =0x0000014b - adds r0, r4, r1 - strb r2, [r0] - ldr r0, [r3] - adds r0, 0x7E - strb r2, [r0] - ldr r0, _0804F80C @ =sub_80501FC - bl SetMainCallback2 - movs r4, 0 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bge _0804F7B8 - movs r5, 0xA0 - lsls r5, 20 - ldr r6, _0804F814 @ =gUnknown_08216308 -_0804F792: - ldm r6!, {r0} - lsrs r1, r5, 24 - bl CreateTask - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - strb r0, [r1] - movs r3, 0x80 - lsls r3, 17 - adds r5, r3 - adds r4, 0x1 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - blt _0804F792 -_0804F7B8: - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F818 @ =0x00000193 - cmp r0, r4 - beq _0804F7D6 - bl GetCurrentMapMusic - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r5, 0xBC - lsls r5, 1 - adds r1, r5 - strh r0, [r1] -_0804F7D6: - adds r0, r4, 0 - bl PlayBGM - movs r0, 0x35 - bl PlaySE - bl sub_804E290 -_0804F7E6: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F804: .4byte gUnknown_03004854 -_0804F808: .4byte 0x0000014b -_0804F80C: .4byte sub_80501FC -_0804F810: .4byte gSpecialVar_0x8004 -_0804F814: .4byte gUnknown_08216308 -_0804F818: .4byte 0x00000193 - thumb_func_end sub_804F378 - - thumb_func_start sub_804F81C -sub_804F81C: @ 804F81C - push {lr} - ldr r3, _0804F83C @ =gSendCmd - movs r0, 0 - ldr r1, _0804F840 @ =gRecvCmds - movs r2, 0x3 -_0804F826: - strh r0, [r3] - strh r0, [r3, 0x4] - strh r0, [r1] - strh r0, [r1, 0x10] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F826 - pop {r0} - bx r0 - .align 2, 0 -_0804F83C: .4byte gSendCmd -_0804F840: .4byte gRecvCmds - thumb_func_end sub_804F81C - - thumb_func_start sub_804F844 -sub_804F844: @ 804F844 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0804F884 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r2, r4] - cmp r0, r1 - ble _0804F87C - ldr r0, _0804F888 @ =gRecvCmds - movs r4, 0xC - ldrsh r1, [r2, r4] - lsls r1, 1 - adds r0, 0x10 - adds r1, r0 - ldr r0, _0804F88C @ =0x00002345 - strh r0, [r1] - adds r0, r3, 0 - bl DestroyTask -_0804F87C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F884: .4byte gTasks -_0804F888: .4byte gRecvCmds -_0804F88C: .4byte 0x00002345 - thumb_func_end sub_804F844 - - thumb_func_start sub_804F890 -sub_804F890: @ 804F890 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0804F8C0 @ =sub_804F844 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804F8C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804F8C0: .4byte sub_804F844 -_0804F8C4: .4byte gTasks - thumb_func_end sub_804F890 - - thumb_func_start sub_804F8C8 -sub_804F8C8: @ 804F8C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0804F934 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0x1 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0804F8E6 - b _0804F9DC -_0804F8E6: - ldr r2, _0804F938 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - cmp r0, 0 - beq _0804F8FC - b _0804F9EA -_0804F8FC: - ldr r0, [r4] - ldr r1, _0804F93C @ =0x0000014b - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804F9BE - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804F940 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r3, r1, 0 - ldr r0, [r4] - adds r0, 0x56 - movs r4, 0 - ldrsh r2, [r0, r4] - ldr r0, _0804F944 @ =0x000001f3 - cmp r2, r0 - bgt _0804F964 - cmp r1, 0x4B - bls _0804F950 - ldr r1, _0804F948 @ =gRecvCmds - ldr r0, _0804F94C @ =0x00004523 - b _0804F954 - .align 2, 0 -_0804F934: .4byte gUnknown_03004854 -_0804F938: .4byte gTasks -_0804F93C: .4byte 0x0000014b -_0804F940: .4byte 0x0000028f -_0804F944: .4byte 0x000001f3 -_0804F948: .4byte gRecvCmds -_0804F94C: .4byte 0x00004523 -_0804F950: - ldr r1, _0804F95C @ =gRecvCmds - ldr r0, _0804F960 @ =0x00005432 -_0804F954: - strh r0, [r1, 0x12] - ldr r0, _0804F960 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F95C: .4byte gRecvCmds -_0804F960: .4byte 0x00005432 -_0804F964: - ldr r0, _0804F980 @ =0x000005db - cmp r2, r0 - bgt _0804F992 - cmp r1, 0x50 - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _0804F98C - ldr r1, _0804F984 @ =gRecvCmds - ldr r0, _0804F988 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F980: .4byte 0x000005db -_0804F984: .4byte gRecvCmds -_0804F988: .4byte 0x00005432 -_0804F98C: - cmp r1, 0x9 - bhi _0804F9C4 - b _0804F9B4 -_0804F992: - cmp r1, 0x5A - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x47 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _0804F9B0 - ldr r1, _0804F9A8 @ =gRecvCmds - ldr r0, _0804F9AC @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F9A8: .4byte gRecvCmds -_0804F9AC: .4byte 0x00005432 -_0804F9B0: - cmp r3, 0x1D - bhi _0804F9C4 -_0804F9B4: - movs r0, 0x1 - movs r1, 0x5 - bl sub_804F890 - b _0804F9C4 -_0804F9BE: - ldr r1, _0804F9D0 @ =gRecvCmds - ldr r0, _0804F9D4 @ =0x00004523 -_0804F9C2: - strh r0, [r1, 0x12] -_0804F9C4: - ldr r0, _0804F9D8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804F9E8 - .align 2, 0 -_0804F9D0: .4byte gRecvCmds -_0804F9D4: .4byte 0x00004523 -_0804F9D8: .4byte gTasks -_0804F9DC: - ldr r0, _0804F9F0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804F9E8: - strh r0, [r1, 0x8] -_0804F9EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804F9F0: .4byte gTasks - thumb_func_end sub_804F8C8 - - thumb_func_start sub_804F9F4 -sub_804F9F4: @ 804F9F4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, _0804FA78 @ =gUnknown_03004854 - ldr r3, [r6] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FA7C @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA6 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FA80 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FB04 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FB04 - ldr r2, _0804FA84 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r5, 0x8 - ldrsh r0, [r2, r5] - adds r5, r1, 0 - cmp r0, 0 - bne _0804FB12 - ldr r1, _0804FA88 @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FAF0 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FA8C @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - ldr r0, [r6] - adds r0, 0x56 - movs r6, 0 - ldrsh r1, [r0, r6] - ldr r0, _0804FA90 @ =0x000001f3 - cmp r1, r0 - bgt _0804FAAC - cmp r2, 0x42 - bls _0804FA9C - ldr r1, _0804FA94 @ =gRecvCmds - ldr r0, _0804FA98 @ =0x00004523 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FA78: .4byte gUnknown_03004854 -_0804FA7C: .4byte 0x0000ffff -_0804FA80: .4byte gUnknown_08216303 -_0804FA84: .4byte gTasks -_0804FA88: .4byte 0x0000014b -_0804FA8C: .4byte 0x0000028f -_0804FA90: .4byte 0x000001f3 -_0804FA94: .4byte gRecvCmds -_0804FA98: .4byte 0x00004523 -_0804FA9C: - ldr r1, _0804FAA4 @ =gRecvCmds - ldr r0, _0804FAA8 @ =0x00005432 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FAA4: .4byte gRecvCmds -_0804FAA8: .4byte 0x00005432 -_0804FAAC: - cmp r2, 0x41 - bls _0804FAB6 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE4 @ =0x00004523 - strh r0, [r1, 0x14] -_0804FAB6: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - bhi _0804FAC8 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE8 @ =0x00005432 - strh r0, [r1, 0x14] -_0804FAC8: - cmp r3, 0x9 - bhi _0804FAD4 - movs r0, 0x2 - movs r1, 0x5 - bl sub_804F890 -_0804FAD4: - ldr r0, _0804FAEC @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FB10 - .align 2, 0 -_0804FAE0: .4byte gRecvCmds -_0804FAE4: .4byte 0x00004523 -_0804FAE8: .4byte 0x00005432 -_0804FAEC: .4byte gTasks -_0804FAF0: - ldr r0, _0804FAFC @ =gRecvCmds - ldr r1, _0804FB00 @ =0x00004523 - strh r1, [r0, 0x14] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FB12 - .align 2, 0 -_0804FAFC: .4byte gRecvCmds -_0804FB00: .4byte 0x00004523 -_0804FB04: - ldr r0, _0804FB18 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FB10: - strh r0, [r1, 0x8] -_0804FB12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FB18: .4byte gTasks - thumb_func_end sub_804F9F4 - - thumb_func_start sub_804FB1C -sub_804FB1C: @ 804FB1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0804FB9C @ =gUnknown_03004854 - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FBA0 @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA8 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FBA4 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FC30 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FC30 - ldr r2, _0804FBA8 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r6, 0x8 - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0 - bne _0804FC3E - ldr r1, _0804FBAC @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FC1C - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FBB0 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r5] - adds r0, 0x56 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _0804FBB4 @ =0x000001f3 - cmp r1, r0 - bgt _0804FBD0 - cmp r2, 0x58 - bls _0804FBC0 - ldr r1, _0804FBB8 @ =gRecvCmds - ldr r0, _0804FBBC @ =0x00004523 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FB9C: .4byte gUnknown_03004854 -_0804FBA0: .4byte 0x0000ffff -_0804FBA4: .4byte gUnknown_08216303 -_0804FBA8: .4byte gTasks -_0804FBAC: .4byte 0x0000014b -_0804FBB0: .4byte 0x0000028f -_0804FBB4: .4byte 0x000001f3 -_0804FBB8: .4byte gRecvCmds -_0804FBBC: .4byte 0x00004523 -_0804FBC0: - ldr r1, _0804FBC8 @ =gRecvCmds - ldr r0, _0804FBCC @ =0x00005432 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FBC8: .4byte gRecvCmds -_0804FBCC: .4byte 0x00005432 -_0804FBD0: - cmp r2, 0x3C - bls _0804FBE4 - ldr r1, _0804FBDC @ =gRecvCmds - ldr r0, _0804FBE0 @ =0x00004523 - b _0804FBF4 - .align 2, 0 -_0804FBDC: .4byte gRecvCmds -_0804FBE0: .4byte 0x00004523 -_0804FBE4: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _0804FBF6 - ldr r1, _0804FC10 @ =gRecvCmds - ldr r0, _0804FC14 @ =0x00005432 -_0804FBF4: - strh r0, [r1, 0x16] -_0804FBF6: - cmp r2, 0x4 - bhi _0804FC02 - movs r0, 0x3 - movs r1, 0x5 - bl sub_804F890 -_0804FC02: - ldr r0, _0804FC18 @ =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FC3C - .align 2, 0 -_0804FC10: .4byte gRecvCmds -_0804FC14: .4byte 0x00005432 -_0804FC18: .4byte gTasks -_0804FC1C: - ldr r0, _0804FC28 @ =gRecvCmds - ldr r1, _0804FC2C @ =0x00004523 - strh r1, [r0, 0x16] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FC3E - .align 2, 0 -_0804FC28: .4byte gRecvCmds -_0804FC2C: .4byte 0x00004523 -_0804FC30: - ldr r0, _0804FC44 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FC3C: - strh r0, [r1, 0x8] -_0804FC3E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FC44: .4byte gTasks - thumb_func_end sub_804FB1C - - thumb_func_start sub_804FC48 -sub_804FC48: @ 804FC48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - mov r8, r7 - lsls r1, 24 - ldr r0, _0804FCBC @ =gSpriteTemplate_821645C - ldr r4, _0804FCC0 @ =gUnknown_082162E4 - lsrs r1, 23 - adds r2, r1, r4 - ldrb r6, [r2] - ldr r5, _0804FCC4 @ =gUnknown_082162CC - adds r2, r1, r5 - movs r3, 0 - ldrsb r3, [r2, r3] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 1 - subs r6, r2 - adds r4, 0x1 - adds r4, r1, r4 - ldrb r2, [r4] - adds r5, 0x1 - adds r1, r5 - movs r3, 0 - ldrsb r3, [r1, r3] - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 1 - subs r2, r1 - adds r1, r6, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0804FCC8 @ =0x00004523 - cmp r7, r0 - bne _0804FCD4 - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - ldr r5, _0804FCCC @ =gSprites - adds r0, r4, r5 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _0804FCD0 @ =sub_8051684 - str r0, [r4] - movs r0, 0x28 - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCBC: .4byte gSpriteTemplate_821645C -_0804FCC0: .4byte gUnknown_082162E4 -_0804FCC4: .4byte gUnknown_082162CC -_0804FCC8: .4byte 0x00004523 -_0804FCCC: .4byte gSprites -_0804FCD0: .4byte sub_8051684 -_0804FCD4: - ldr r0, _0804FCF4 @ =0x00005432 - cmp r7, r0 - bne _0804FCFC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804FCF8 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x1F - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCF4: .4byte 0x00005432 -_0804FCF8: .4byte gSprites -_0804FCFC: - ldr r0, _0804FD28 @ =0x00002345 - cmp r8, r0 - bne _0804FD18 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r1, _0804FD2C @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x20 - bl PlaySE -_0804FD18: - bl sub_805156C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FD28: .4byte 0x00002345 -_0804FD2C: .4byte gSprites - thumb_func_end sub_804FC48 - - thumb_func_start sub_804FD30 -sub_804FD30: @ 804FD30 - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r5, r4, 0 - bl sub_804E290 - ldr r0, _0804FD50 @ =0x00004523 - cmp r4, r0 - beq _0804FD64 - cmp r4, r0 - bgt _0804FD58 - ldr r0, _0804FD54 @ =0x00002345 - cmp r4, r0 - beq _0804FE34 - b _0804FE60 - .align 2, 0 -_0804FD50: .4byte 0x00004523 -_0804FD54: .4byte 0x00002345 -_0804FD58: - ldr r0, _0804FD60 @ =0x00005432 - cmp r5, r0 - beq _0804FDFC - b _0804FE60 - .align 2, 0 -_0804FD60: .4byte 0x00005432 -_0804FD64: - ldr r7, _0804FD94 @ =gUnknown_03004854 - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x56 - ldrh r6, [r5] - movs r0, 0 - ldrsh r1, [r5, r0] - ldr r0, _0804FD98 @ =0x000005db - cmp r1, r0 - bgt _0804FDA0 - ldr r1, _0804FD9C @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xC0 - lsls r0, 1 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - b _0804FE60 - .align 2, 0 -_0804FD94: .4byte gUnknown_03004854 -_0804FD98: .4byte 0x000005db -_0804FD9C: .4byte gUnknown_082165DA -_0804FDA0: - ldr r1, _0804FDF8 @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - movs r1, 0xA2 - lsls r1, 1 - adds r4, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - ldr r0, [r7] - movs r1, 0xA3 - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - b _0804FE60 - .align 2, 0 -_0804FDF8: .4byte gUnknown_082165DA -_0804FDFC: - ldr r0, _0804FE28 @ =gUnknown_03004854 - ldr r2, [r0] - adds r4, r2, 0 - adds r4, 0x56 - ldrh r5, [r4] - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, _0804FE2C @ =0x000005db - cmp r1, r0 - bgt _0804FE60 - ldr r1, _0804FE30 @ =gUnknown_082165DA - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - adds r0, r5, r0 - b _0804FE5E - .align 2, 0 -_0804FE28: .4byte gUnknown_03004854 -_0804FE2C: .4byte 0x000005db -_0804FE30: .4byte gUnknown_082165DA -_0804FE34: - ldr r0, _0804FE68 @ =gUnknown_03004854 - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x56 - ldr r1, _0804FE6C @ =gUnknown_082165DA - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - ldrh r1, [r4] - subs r1, r0 - strh r1, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - bgt _0804FE60 - movs r0, 0x80 -_0804FE5E: - strh r0, [r4] -_0804FE60: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FE68: .4byte gUnknown_03004854 -_0804FE6C: .4byte gUnknown_082165DA - thumb_func_end sub_804FD30 - - thumb_func_start sub_804FE70 -sub_804FE70: @ 804FE70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0804FF40 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _0804FEB6 - ldr r3, _0804FF44 @ =gSendCmd - ldrh r0, [r3, 0x4] - ldr r2, _0804FF48 @ =gRecvCmds - cmp r0, 0 - beq _0804FE98 - movs r1, 0 - strh r0, [r2, 0x10] - ldr r0, _0804FF4C @ =0x00004444 - strh r0, [r2] - strh r1, [r3, 0x4] -_0804FE98: - ldr r0, _0804FF48 @ =gRecvCmds - ldr r3, _0804FF4C @ =0x00004444 - adds r1, r2, 0x2 - adds r2, r0, 0 - adds r2, 0x12 - movs r6, 0x2 -_0804FEA4: - ldrh r0, [r2] - cmp r0, 0 - beq _0804FEAC - strh r3, [r1] -_0804FEAC: - adds r1, 0x2 - adds r2, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _0804FEA4 -_0804FEB6: - movs r6, 0 - ldr r7, _0804FF50 @ =gUnknown_03004854 - adds r1, r7, 0 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _0804FEC8 - b _0805005C -_0804FEC8: - movs r2, 0 - str r2, [sp] - mov r9, r2 - ldr r0, _0804FF48 @ =gRecvCmds - adds r0, 0x10 - mov r8, r0 - ldr r1, _0804FF54 @ =0x00005432 - mov r10, r1 -_0804FED8: - ldr r2, [sp] - ldr r1, _0804FF48 @ =gRecvCmds - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0804FF4C @ =0x00004444 - cmp r1, r0 - beq _0804FEE8 - b _0805003E -_0804FEE8: - ldr r0, [r7] - adds r0, 0xA2 - adds r0, r2 - ldrh r5, [r0] - mov r2, r8 - ldrh r4, [r2] - ldr r0, _0804FF58 @ =0x00004523 - cmp r4, r0 - bne _0804FF60 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x37 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, 16 - ldr r0, _0804FF5C @ =0x03e70000 - cmp r1, r0 - bls _0804FF26 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4] -_0804FF26: - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, _0804FF58 @ =0x00004523 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA6 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA - .align 2, 0 -_0804FF40: .4byte gSpecialVar_0x8004 -_0804FF44: .4byte gSendCmd -_0804FF48: .4byte gRecvCmds -_0804FF4C: .4byte 0x00004444 -_0804FF50: .4byte gUnknown_03004854 -_0804FF54: .4byte 0x00005432 -_0804FF58: .4byte 0x00004523 -_0804FF5C: .4byte 0x03e70000 -_0804FF60: - cmp r4, r10 - bne _0804FF9E - mov r0, r10 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x46 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, r5, 24 - lsrs r1, 24 - mov r0, r10 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA7 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA -_0804FF9E: - ldr r0, _08050018 @ =0x00002345 - cmp r4, r0 - bne _0804FFD6 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804FC48 - adds r0, r4, 0 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1] - ldr r0, _0805001C @ =0x000003e6 - cmp r2, r0 - bhi _0804FFCC - adds r0, r2, 0x1 -_0804FFCA: - strh r0, [r1] -_0804FFCC: - mov r0, r8 - ldrh r1, [r0] - ldr r0, _08050018 @ =0x00002345 - cmp r1, r0 - beq _0804FFE4 -_0804FFD6: - mov r1, r8 - ldrh r0, [r1] - ldr r2, _08050020 @ =0x00004523 - cmp r0, r2 - beq _0804FFE4 - cmp r0, r10 - bne _0805003E -_0804FFE4: - ldr r0, _08050024 @ =gUnknown_03004854 - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0x56 - movs r0, 0 - ldrsh r1, [r2, r0] - ldr r0, _08050028 @ =0x000005dc - cmp r1, r0 - ble _08050034 - adds r0, r1, 0 - ldr r2, _0805002C @ =0xfffffd12 - adds r0, r2 - movs r1, 0x14 - bl __divsi3 - adds r1, r0, 0 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08050030 @ =gMPlay_BGM - bl m4aMPlayTempoControl - b _0805003E - .align 2, 0 -_08050018: .4byte 0x00002345 -_0805001C: .4byte 0x000003e6 -_08050020: .4byte 0x00004523 -_08050024: .4byte gUnknown_03004854 -_08050028: .4byte 0x000005dc -_0805002C: .4byte 0xfffffd12 -_08050030: .4byte gMPlay_BGM -_08050034: - ldr r0, _08050098 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl -_0805003E: - ldr r1, [sp] - adds r1, 0x2 - str r1, [sp] - movs r2, 0x6 - add r9, r2 - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - ldr r7, _0805009C @ =gUnknown_03004854 - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _0805005C - b _0804FED8 -_0805005C: - ldr r0, _080500A0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _08050088 - movs r6, 0 - ldr r3, _0805009C @ =gUnknown_03004854 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _08050088 - movs r2, 0 - ldr r1, _080500A4 @ =gRecvCmds -_08050076: - strh r2, [r1] - strh r2, [r1, 0x10] - adds r1, 0x2 - adds r6, 0x1 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _08050076 -_08050088: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050098: .4byte gMPlay_BGM -_0805009C: .4byte gUnknown_03004854 -_080500A0: .4byte gSpecialVar_0x8004 -_080500A4: .4byte gRecvCmds - thumb_func_end sub_804FE70 - - thumb_func_start sub_80500A8 -sub_80500A8: @ 80500A8 - push {r4-r6,lr} - movs r6, 0 - ldr r5, _080500EC @ =gUnknown_03004854 - ldr r4, [r5] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 23 - adds r4, 0xA2 - adds r4, r0 - ldrb r3, [r4] - ldr r0, [r5] - adds r0, 0x6F - ldrb r0, [r0] - cmp r0, 0 - bne _0805018A - ldr r0, _080500F0 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x2 - bne _080500FC - ldr r2, _080500F4 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - ldrh r0, [r2, 0x28] - ldr r1, _080500F8 @ =0x00000201 - bics r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r6, r0, 31 - b _0805010A - .align 2, 0 -_080500EC: .4byte gUnknown_03004854 -_080500F0: .4byte gSaveBlock2 -_080500F4: .4byte gMain -_080500F8: .4byte 0x00000201 -_080500FC: - ldr r0, _0805015C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - movs r6, 0x1 -_0805010A: - cmp r6, 0 - beq _0805018A - ldr r4, _08050160 @ =gUnknown_03004854 - ldr r1, [r4] - lsls r2, r3, 1 - adds r0, r1, 0 - adds r0, 0x9A - adds r0, r2 - adds r1, 0x5C - ldrh r0, [r0] - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08050164 @ =gSprites - adds r0, r1 - adds r1, r3, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldr r0, [r4] - adds r0, 0x54 - ldrh r4, [r0] - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08050170 - ldr r1, _08050168 @ =gSendCmd - ldr r0, _0805016C @ =0x00004523 - b _08050188 - .align 2, 0 -_0805015C: .4byte gMain -_08050160: .4byte gUnknown_03004854 -_08050164: .4byte gSprites -_08050168: .4byte gSendCmd -_0805016C: .4byte 0x00004523 -_08050170: - cmp r0, 0x1 - bne _08050184 - ldr r1, _0805017C @ =gSendCmd - ldr r0, _08050180 @ =0x00005432 - b _08050188 - .align 2, 0 -_0805017C: .4byte gSendCmd -_08050180: .4byte 0x00005432 -_08050184: - ldr r1, _080501E4 @ =gSendCmd - ldr r0, _080501E8 @ =0x00002345 -_08050188: - strh r0, [r1, 0x4] -_0805018A: - ldr r2, _080501EC @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x7E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _080501BA - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x56 - ldrh r3, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0x80 - ble _080501B2 - subs r0, r3, 0x1 - strh r0, [r1] -_080501B2: - ldr r0, [r2] - adds r0, 0x7E - movs r1, 0 - strb r1, [r0] -_080501BA: - ldr r0, _080501F0 @ =gUnknown_020297ED - ldrb r0, [r0] - cmp r0, 0 - beq _080501DE - ldr r0, _080501F4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080501DE - ldr r0, [r2] - ldr r1, _080501F8 @ =0x0000014b - adds r2, r0, r1 - ldrb r0, [r2] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2] -_080501DE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080501E4: .4byte gSendCmd -_080501E8: .4byte 0x00002345 -_080501EC: .4byte gUnknown_03004854 -_080501F0: .4byte gUnknown_020297ED -_080501F4: .4byte gMain -_080501F8: .4byte 0x0000014b - thumb_func_end sub_80500A8 - - thumb_func_start sub_80501FC -sub_80501FC: @ 80501FC - push {r4-r6,lr} - bl sub_8051474 - ldr r4, _08050294 @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0x96 - lsls r1, 1 - adds r2, r0, r1 - ldr r1, [r2] - ldr r0, _08050298 @ =0x00057e03 - cmp r1, r0 - bhi _08050218 - adds r0, r1, 0x1 - str r0, [r2] -_08050218: - bl sub_80500A8 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - movs r5, 0x9F - lsls r5, 1 - adds r1, r5 - ldrh r1, [r1] - bl SetLinkDebugValues - bl sub_804FE70 - ldr r0, [r4] - adds r0, r5 - ldrh r0, [r0] - movs r6, 0xFA - lsls r6, 2 - adds r1, r6, 0 - bl sub_805194C - ldr r0, [r4] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_8051B18 - bl sub_805123C - ldr r2, [r4] - adds r3, r2, 0 - adds r3, 0x6F - ldrb r0, [r3] - cmp r0, 0 - bne _0805027E - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0805029C @ =0x000003e7 - cmp r1, r0 - bls _0805027E - adds r0, r2, r5 - strh r6, [r0] - movs r0, 0x1 - strb r0, [r3] - ldr r0, _080502A0 @ =sub_8050954 - bl SetMainCallback2 -_0805027E: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08050294: .4byte gUnknown_03004854 -_08050298: .4byte 0x00057e03 -_0805029C: .4byte 0x000003e7 -_080502A0: .4byte sub_8050954 - thumb_func_end sub_80501FC - - thumb_func_start help_system_is_not_first_time -help_system_is_not_first_time: @ 80502A4 - push {r4,r5,lr} - lsls r1, 24 - lsls r2, 24 - lsrs r1, 20 - adds r4, r1, r0 - lsrs r2, 20 - adds r5, r2, r0 - ldrh r0, [r4] - ldrh r1, [r5] - cmp r0, r1 - bne _080502E2 - adds r0, r4, 0x2 - adds r1, r5, 0x2 - bl StringCompare - cmp r0, 0 - bne _080502F0 - ldr r0, [r4, 0x8] - ldr r2, _080502E8 @ =0xffffff00 - ands r0, r2 - ldr r1, [r5, 0x8] - ands r1, r2 - cmp r0, r1 - bne _080502F0 - ldr r0, [r4, 0xC] - ldr r2, _080502EC @ =0x00ffffff - ands r0, r2 - ldr r1, [r5, 0xC] - ands r1, r2 - cmp r0, r1 - bne _080502F0 -_080502E2: - movs r0, 0x1 - b _080502F2 - .align 2, 0 -_080502E8: .4byte 0xffffff00 -_080502EC: .4byte 0x00ffffff -_080502F0: - movs r0, 0 -_080502F2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end help_system_is_not_first_time - - thumb_func_start sub_80502F8 -sub_80502F8: @ 80502F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - mov r2, sp - movs r4, 0x5 -_08050314: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050314 - movs r6, 0 - mov r1, sp - movs r4, 0x4 -_08050328: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08050332 - adds r6, 0x1 -_08050332: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050328 - cmp r6, 0x5 - beq _08050386 - cmp r3, 0x3 - bhi _08050386 - movs r4, 0 - ldr r3, [sp, 0x10] - cmp r4, r3 - bge _0805039E - mov r3, r10 -_0805034C: - movs r6, 0 - ldr r7, [sp, 0x10] - cmp r6, r7 - bge _08050394 - mov r9, r3 - mov r5, r10 - lsls r0, r4, 24 - mov r8, r0 -_0805035C: - mov r1, r9 - ldrh r0, [r1] - ldrh r2, [r5] - cmp r0, r2 - bne _0805038A - cmp r4, r6 - beq _0805038A - cmp r0, 0xAF - bne _08050386 - lsls r2, r6, 24 - lsrs r2, 24 - mov r0, r10 - mov r7, r8 - lsrs r1, r7, 24 - str r3, [sp, 0xC] - bl help_system_is_not_first_time - lsls r0, 24 - ldr r3, [sp, 0xC] - cmp r0, 0 - beq _0805038A -_08050386: - movs r0, 0xC - b _080504DE -_0805038A: - adds r5, 0x10 - adds r6, 0x1 - ldr r0, [sp, 0x10] - cmp r6, r0 - blt _0805035C -_08050394: - adds r3, 0x10 - adds r4, 0x1 - ldr r1, [sp, 0x10] - cmp r4, r1 - blt _0805034C -_0805039E: - movs r2, 0 - mov r1, sp - movs r4, 0x4 -_080503A4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080503B2 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080503B2: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080503A4 - cmp r2, 0x3 - bls _080503C2 - movs r0, 0xD - b _080504DE -_080503C2: - cmp r2, 0x3 - bne _080503CA - movs r0, 0xB - b _080504DE -_080503CA: - movs r4, 0 - mov r1, sp -_080503CE: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x32 - ble _080503D8 - b _080504D8 -_080503D8: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _080503CE - cmp r2, 0x1 - bne _0805042A - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _080503F2 - movs r0, 0x1 - b _080504DE -_080503F2: - mov r0, sp - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - ble _08050400 - movs r0, 0x2 - b _080504DE -_08050400: - mov r0, sp - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - ble _0805040E - movs r0, 0x3 - b _080504DE -_0805040E: - mov r0, sp - movs r4, 0x6 - ldrsh r0, [r0, r4] - cmp r0, 0 - ble _0805041C - movs r0, 0x4 - b _080504DE -_0805041C: - mov r0, sp - movs r7, 0x8 - ldrsh r0, [r0, r7] - cmp r0, 0 - ble _0805042A - movs r0, 0x5 - b _080504DE -_0805042A: - cmp r2, 0x2 - bne _080504DC - movs r4, 0 - ldr r5, _08050474 @ =gUnknown_03000520 - mov r1, sp - adds r2, r5, 0 -_08050436: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08050442 - strh r4, [r2] - adds r2, 0x2 -_08050442: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _08050436 - movs r4, 0 - ldrsh r3, [r5, r4] - lsls r0, r3, 1 - mov r7, sp - adds r1, r7, r0 - movs r0, 0x2 - ldrsh r2, [r5, r0] - lsls r0, r2, 1 - add r0, sp - movs r4, 0 - ldrsh r1, [r1, r4] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _08050498 - adds r0, r3, 0 - cmp r0, 0 - bne _08050478 - lsls r0, r2, 16 - b _080504A2 - .align 2, 0 -_08050474: .4byte gUnknown_03000520 -_08050478: - cmp r0, 0x1 - bne _08050480 - lsls r0, r2, 16 - b _080504AE -_08050480: - cmp r0, 0x2 - bne _08050488 - lsls r0, r2, 16 - b _080504BA -_08050488: - cmp r0, 0x3 - bne _08050490 - lsls r0, r2, 16 - b _080504C6 -_08050490: - cmp r0, 0x4 - bne _080504DC - lsls r0, r2, 16 - b _080504D2 -_08050498: - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080504A8 - lsls r0, r3, 16 -_080504A2: - movs r1, 0x6 - orrs r0, r1 - b _080504DE -_080504A8: - cmp r0, 0x1 - bne _080504B4 - lsls r0, r3, 16 -_080504AE: - movs r1, 0x7 - orrs r0, r1 - b _080504DE -_080504B4: - cmp r0, 0x2 - bne _080504C0 - lsls r0, r3, 16 -_080504BA: - movs r1, 0x8 - orrs r0, r1 - b _080504DE -_080504C0: - cmp r0, 0x3 - bne _080504CC - lsls r0, r3, 16 -_080504C6: - movs r1, 0x9 - orrs r0, r1 - b _080504DE -_080504CC: - cmp r0, 0x4 - bne _080504DC - lsls r0, r3, 16 -_080504D2: - movs r1, 0xA - orrs r0, r1 - b _080504DE -_080504D8: - movs r0, 0xE - b _080504DE -_080504DC: - movs r0, 0 -_080504DE: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80502F8 - - thumb_func_start sub_80504F0 -sub_80504F0: @ 80504F0 - ldr r1, _080504F8 @ =gUnknown_0300052C - strh r0, [r1] - bx lr - .align 2, 0 -_080504F8: .4byte gUnknown_0300052C - thumb_func_end sub_80504F0 - - thumb_func_start unref_sub_80504FC -unref_sub_80504FC: @ 80504FC - ldr r0, _08050504 @ =gUnknown_0300052C - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_08050504: .4byte gUnknown_0300052C - thumb_func_end unref_sub_80504FC - - thumb_func_start sub_8050508 -sub_8050508: @ 8050508 - ldr r1, _08050510 @ =gUnknown_0300052E - strh r0, [r1] - bx lr - .align 2, 0 -_08050510: .4byte gUnknown_0300052E - thumb_func_end sub_8050508 - - thumb_func_start unref_sub_8050514 -unref_sub_8050514: @ 8050514 - ldr r0, _0805051C @ =gUnknown_0300052E - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0805051C: .4byte gUnknown_0300052E - thumb_func_end unref_sub_8050514 - - thumb_func_start sub_8050520 -sub_8050520: @ 8050520 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp] - mov r8, r1 - str r3, [sp, 0x4] - ldr r0, [sp, 0x30] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r7, _080505DC @ =gUnknown_03000510 - adds r2, r7, 0 - movs r1, 0 - adds r0, r7, 0 - adds r0, 0xA -_0805054A: - strh r1, [r0] - subs r0, 0x2 - cmp r0, r2 - bge _0805054A - movs r6, 0 - cmp r6, r9 - bge _08050580 - ldr r0, _080505DC @ =gUnknown_03000510 - mov r12, r0 - ldr r5, [sp] - adds r5, 0x9 -_08050560: - movs r3, 0 - adds r4, r5, 0 - mov r2, r12 -_08050566: - adds r1, r4, r3 - ldrh r0, [r2] - ldrb r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x5 - ble _08050566 - adds r5, 0x10 - adds r6, 0x1 - cmp r6, r9 - blt _08050560 -_08050580: - movs r1, 0 - ldrsh r3, [r7, r1] - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - subs r0, r1 - strh r0, [r7] - ldrh r0, [r7, 0x4] - subs r1, r0 - strh r1, [r7, 0x2] - ldrh r1, [r7, 0x6] - subs r0, r1 - strh r0, [r7, 0x4] - ldrh r0, [r7, 0x8] - subs r1, r0 - strh r1, [r7, 0x6] - subs r0, r3 - strh r0, [r7, 0x8] - movs r3, 0 - movs r2, 0 - adds r1, r7, 0 - movs r6, 0x4 -_080505AA: - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _080505B6 - strh r2, [r1] - adds r3, 0x1 -_080505B6: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505AA - lsls r0, r3, 24 - lsrs r0, 24 - mov r10, r0 - movs r4, 0 - ldr r1, _080505DC @ =gUnknown_03000510 - movs r6, 0x4 -_080505CA: - ldrh r2, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _080505E4 - cmp r0, r3 - bge _080505E0 - strh r4, [r1] - b _080505E4 - .align 2, 0 -_080505DC: .4byte gUnknown_03000510 -_080505E0: - subs r0, r2, r3 - strh r0, [r1] -_080505E4: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505CA - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506C8 @ =gUnknown_03000530 - movs r6, 0x4 -_080505F2: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505F2 - ldr r1, _080506CC @ =0x0000014d - ldr r0, [sp, 0x8] - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - adds r3, r0, 0 - adds r3, 0x64 - ldr r4, _080506D0 @ =gUnknown_0300055C - str r3, [r4] - movs r6, 0x4 -_08050616: - movs r0, 0 - ldrsh r5, [r7, r0] - adds r0, r5, 0 - muls r0, r3 - movs r1, 0xA - str r3, [sp, 0xC] - bl __divsi3 - adds r5, r0, 0 - movs r1, 0xA - bl __modsi3 - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - ldr r3, [sp, 0xC] - cmp r4, 0x4 - ble _08050642 - adds r5, 0x1 -_08050642: - strh r5, [r7] - adds r7, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050616 - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506D4 @ =gUnknown_03000548 - movs r6, 0x4 -_08050652: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050652 - ldr r4, _080506C4 @ =gUnknown_03000510 - ldr r0, [sp] - adds r1, r4, 0 - mov r2, r9 - mov r3, r10 - bl sub_80502F8 - mov r5, r8 - strb r0, [r5] - movs r1, 0xA - ldrsh r0, [r4, r1] - mov r1, r9 - bl __divsi3 - mov r3, r9 - subs r0, r3 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0805068C - movs r0, 0 - strh r0, [r4, 0xA] -_0805068C: - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0xC - bne _080506E6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r6, 0 - ldr r0, _080506D8 @ =gUnknown_082165DF - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0 - movs r4, 0x1 - movs r3, 0x2 -_080506B4: - adds r2, r0, 0 - asrs r2, r6 - ands r2, r4 - cmp r2, 0 - beq _080506DC - strh r3, [r1] - b _080506DE - .align 2, 0 -_080506C4: .4byte gUnknown_03000510 -_080506C8: .4byte gUnknown_03000530 -_080506CC: .4byte 0x0000014d -_080506D0: .4byte gUnknown_0300055C -_080506D4: .4byte gUnknown_03000548 -_080506D8: .4byte gUnknown_082165DF -_080506DC: - strh r2, [r1] -_080506DE: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _080506B4 -_080506E6: - ldr r7, _08050740 @ =gUnknown_03000510 - movs r2, 0xFF - adds r1, r7, 0 - movs r6, 0x5 -_080506EE: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xFF - ble _080506F8 - strh r2, [r1] -_080506F8: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080506EE - ldrh r0, [r7] - mov r4, r8 - strb r0, [r4, 0x1] - ldrh r0, [r7, 0x2] - strb r0, [r4, 0x2] - ldrh r0, [r7, 0x4] - strb r0, [r4, 0x3] - ldrh r0, [r7, 0x6] - strb r0, [r4, 0x4] - ldrh r0, [r7, 0x8] - strb r0, [r4, 0x5] - ldrh r0, [r7, 0xA] - strb r0, [r4, 0x6] - movs r6, 0 - adds r2, r7, 0 -_0805071E: - ldr r5, [sp, 0x4] - adds r1, r5, r6 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x5 - ble _0805071E - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050740: .4byte gUnknown_03000510 - thumb_func_end sub_8050520 - - thumb_func_start sub_8050744 -sub_8050744: @ 8050744 - push {r4,lr} - sub sp, 0x4 - ldr r4, [sp, 0xC] - lsls r2, 24 - lsrs r2, 24 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp] - bl sub_8050520 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8050744 - - thumb_func_start sub_8050760 -sub_8050760: @ 8050760 - push {r4-r6,lr} - ldr r0, _08050780 @ =gUnknown_03004854 - ldr r0, [r0] - movs r2, 0x96 - lsls r2, 1 - adds r1, r0, r2 - ldrh r1, [r1] - adds r0, 0x5A - ldrh r4, [r0] - movs r2, 0 - ldr r5, _08050784 @ =0x00000383 - cmp r1, r5 - bhi _08050788 - movs r2, 0x5 - b _080507DA - .align 2, 0 -_08050780: .4byte gUnknown_03004854 -_08050784: .4byte 0x00000383 -_08050788: - ldr r3, _0805079C @ =0xfffffc7c - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080507A0 @ =0x00000257 - cmp r0, r3 - bhi _080507A4 - movs r2, 0x4 - b _080507DA - .align 2, 0 -_0805079C: .4byte 0xfffffc7c -_080507A0: .4byte 0x00000257 -_080507A4: - ldr r6, _080507B4 @ =0xfffffa24 - adds r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r3 - bhi _080507B8 - movs r2, 0x3 - b _080507DA - .align 2, 0 -_080507B4: .4byte 0xfffffa24 -_080507B8: - ldr r3, _080507C8 @ =0xfffff7cc - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bhi _080507CC - movs r2, 0x2 - b _080507DA - .align 2, 0 -_080507C8: .4byte 0xfffff7cc -_080507CC: - ldr r6, _080507F8 @ =0xfffff31c - adds r0, r1, r6 - lsls r0, 16 - ldr r1, _080507FC @ =0x012b0000 - cmp r0, r1 - bhi _080507DA - movs r2, 0x1 -_080507DA: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_8050508 - movs r2, 0 - cmp r4, 0x40 - bhi _080508BC - adds r0, r4, 0 - subs r0, 0x32 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050804 - ldr r2, _08050800 @ =0x0000ffff - b _080508BC - .align 2, 0 -_080507F8: .4byte 0xfffff31c -_080507FC: .4byte 0x012b0000 -_08050800: .4byte 0x0000ffff -_08050804: - adds r0, r4, 0 - subs r0, 0x64 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050818 - ldr r2, _08050814 @ =0x0000fffe - b _080508BC - .align 2, 0 -_08050814: .4byte 0x0000fffe -_08050818: - adds r0, r4, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805082C - ldr r2, _08050828 @ =0x0000fffd - b _080508BC - .align 2, 0 -_08050828: .4byte 0x0000fffd -_0805082C: - adds r0, r4, 0 - subs r0, 0xC8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050840 - ldr r2, _0805083C @ =0x0000fffc - b _080508BC - .align 2, 0 -_0805083C: .4byte 0x0000fffc -_08050840: - adds r0, r4, 0 - subs r0, 0xFA - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050854 - ldr r2, _08050850 @ =0x0000fffb - b _080508BC - .align 2, 0 -_08050850: .4byte 0x0000fffb -_08050854: - ldr r1, _08050864 @ =0xfffffea2 - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805086C - ldr r2, _08050868 @ =0x0000fffa - b _080508BC - .align 2, 0 -_08050864: .4byte 0xfffffea2 -_08050868: .4byte 0x0000fffa -_0805086C: - ldr r3, _0805087C @ =0xfffffe70 - adds r0, r4, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050884 - ldr r2, _08050880 @ =0x0000fff9 - b _080508BC - .align 2, 0 -_0805087C: .4byte 0xfffffe70 -_08050880: .4byte 0x0000fff9 -_08050884: - ldr r6, _08050894 @ =0xfffffe0c - adds r0, r4, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805089C - ldr r2, _08050898 @ =0x0000fff8 - b _080508BC - .align 2, 0 -_08050894: .4byte 0xfffffe0c -_08050898: .4byte 0x0000fff8 -_0805089C: - ldr r1, _080508AC @ =0xfffffdda - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _080508B4 - ldr r2, _080508B0 @ =0x0000fff7 - b _080508BC - .align 2, 0 -_080508AC: .4byte 0xfffffdda -_080508B0: .4byte 0x0000fff7 -_080508B4: - ldr r0, _080508CC @ =0x00000257 - cmp r4, r0 - bls _080508BC - ldr r2, _080508D0 @ =0x0000fff6 -_080508BC: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_80504F0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080508CC: .4byte 0x00000257 -_080508D0: .4byte 0x0000fff6 - thumb_func_end sub_8050760 - - thumb_func_start sub_80508D4 -sub_80508D4: @ 80508D4 - push {lr} - ldr r2, _080508F8 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0xAA - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xAA - ldrb r1, [r0] - lsls r1, 28 - movs r0, 0x90 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xC0 - bl sub_814A880 - pop {r0} - bx r0 - .align 2, 0 -_080508F8: .4byte gUnknown_03004854 - thumb_func_end sub_80508D4 - - thumb_func_start sub_80508FC -sub_80508FC: @ 80508FC - push {r4,lr} - sub sp, 0x4 - ldr r4, _08050944 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuDrawTextWindow - ldr r1, _08050948 @ =0x0000ffff - ldr r3, _0805094C @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - ldr r0, _08050950 @ =gOtherText_YesNoTerminating - movs r1, 0x18 - movs r2, 0x9 - bl MenuPrint - ldr r0, [r4] - adds r0, 0xAA - ldrb r0, [r0] - bl sub_80508D4 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08050944: .4byte gUnknown_03004854 -_08050948: .4byte 0x0000ffff -_0805094C: .4byte 0x00002d9f -_08050950: .4byte gOtherText_YesNoTerminating - thumb_func_end sub_80508FC - - thumb_func_start sub_8050954 -sub_8050954: @ 8050954 - push {r4-r7,lr} - bl sub_8051474 - bl GetMultiplayerId - ldr r0, _08050978 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xC - bls _0805096E - b _08050CB6 -_0805096E: - lsls r0, 2 - ldr r1, _0805097C @ =_08050980 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050978: .4byte gUnknown_03004854 -_0805097C: .4byte _08050980 - .align 2, 0 -_08050980: - .4byte _080509B4 - .4byte _080509F8 - .4byte _08050A4C - .4byte _08050A94 - .4byte _08050AD0 - .4byte _08050ADE - .4byte _08050B08 - .4byte _08050B34 - .4byte _08050B42 - .4byte _08050B58 - .4byte _08050BE0 - .4byte _08050C64 - .4byte _08050C98 -_080509B4: - bl ClearLinkCallback - ldr r0, _080509C8 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl - movs r4, 0 - b _080509E4 - .align 2, 0 -_080509C8: .4byte gMPlay_BGM -_080509CC: - ldr r0, _080509F0 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - bl DestroyTask - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080509E4: - ldr r0, _080509F4 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bcc _080509CC - b _08050C82 - .align 2, 0 -_080509F0: .4byte gUnknown_03004854 -_080509F4: .4byte gSpecialVar_0x8004 -_080509F8: - ldr r1, _08050A24 @ =gUnknown_03004854 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - ldrh r0, [r2] - subs r0, 0x20 - strh r0, [r2] - lsls r0, 16 - adds r4, r1, 0 - cmp r0, 0 - bgt _08050A40 - movs r0, 0 - strh r0, [r2] - ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08050A2C - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - b _08050A32 - .align 2, 0 -_08050A24: .4byte gUnknown_03004854 -_08050A28: .4byte gReceivedRemoteLinkPlayers -_08050A2C: - adds r1, r3, 0 - adds r1, 0x6F - movs r0, 0x5 -_08050A32: - strb r0, [r1] - ldr r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, _08050A48 @ =gMPlay_SE2 - bl m4aMPlayStop -_08050A40: - bl sub_804E290 - b _08050CB6 - .align 2, 0 -_08050A48: .4byte gMPlay_SE2 -_08050A4C: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _08050A58 - b _08050C82 -_08050A58: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _08050A64 - b _08050CB6 -_08050A64: - ldr r4, _08050A90 @ =gUnknown_03004854 - ldr r3, [r4] - movs r2, 0xDE - lsls r2, 1 - adds r1, r3, r2 - movs r5, 0x96 - lsls r5, 1 - adds r0, r3, r5 - ldr r0, [r0] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x5A - ldrh r2, [r0] - adds r5, 0x94 - adds r0, r3, r5 - strh r2, [r0] - movs r0, 0 - movs r2, 0x28 - bl SendBlock - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050A90: .4byte gUnknown_03004854 -_08050A94: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08050AA0 - b _08050CB6 -_08050AA0: - ldr r2, _08050AC8 @ =gBlockRecvBuffer - ldr r0, _08050ACC @ =gUnknown_03004854 - ldr r3, [r0] - ldrh r0, [r2, 0x4] - adds r1, r3, 0 - adds r1, 0x5A - strh r0, [r1] - movs r0, 0x96 - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r2] - str r0, [r1] - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl ResetBlockReceivedFlags - b _08050CB6 - .align 2, 0 -_08050AC8: .4byte gBlockRecvBuffer -_08050ACC: .4byte gUnknown_03004854 -_08050AD0: - bl sub_8052228 - lsls r0, 24 - cmp r0, 0 - bne _08050ADC - b _08050CB6 -_08050ADC: - b _08050C82 -_08050ADE: - bl sub_8051C58 - lsls r0, 24 - cmp r0, 0 - bne _08050AEA - b _08050CB6 -_08050AEA: - ldr r0, _08050AFC @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - bne _08050B00 - movs r0, 0x22 - bl IncrementGameStat - b _08050C82 - .align 2, 0 -_08050AFC: .4byte gUnknown_03004834 -_08050B00: - movs r0, 0x21 - bl IncrementGameStat - b _08050C82 -_08050B08: - ldr r0, _08050B2C @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _08050CB6 - .align 2, 0 -_08050B2C: .4byte gUnknown_03004854 -_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt -_08050B34: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050B40 - b _08050CB6 -_08050B40: - b _08050C82 -_08050B42: - ldr r4, _08050B54 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - bl sub_80508FC - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050B54: .4byte gUnknown_03004854 -_08050B58: - ldr r0, _08050B80 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08050B88 - ldr r0, _08050B84 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0 - beq _08050B76 - movs r0, 0x5 - bl PlaySE -_08050B76: - movs r0, 0 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050B80: .4byte gMain -_08050B84: .4byte gUnknown_03004854 -_08050B88: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08050BA8 - ldr r0, _08050BA4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0x1 - beq _08050BD4 - movs r0, 0x5 - bl PlaySE - b _08050BD4 - .align 2, 0 -_08050BA4: .4byte gUnknown_03004854 -_08050BA8: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08050BB8 - movs r0, 0x5 - bl PlaySE - b _08050C82 -_08050BB8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08050BC2 - b _08050CB6 -_08050BC2: - movs r0, 0x5 - bl PlaySE - ldr r0, _08050BDC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08050BD4: - movs r0, 0x1 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050BDC: .4byte gUnknown_03004854 -_08050BE0: - ldr r6, _08050C10 @ =gSendCmd - movs r7, 0 - ldr r0, _08050C14 @ =0x00002fff - strh r0, [r6] - ldr r4, _08050C18 @ =gUnknown_03004854 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xAA - ldrb r5, [r0] - cmp r5, 0 - bne _08050C50 - movs r0, 0x4 - bl IsBagPocketNonEmpty - lsls r0, 24 - cmp r0, 0 - bne _08050C20 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x2 - strh r1, [r0] - ldr r0, _08050C1C @ =0x00009999 - b _08050C48 - .align 2, 0 -_08050C10: .4byte gSendCmd -_08050C14: .4byte 0x00002fff -_08050C18: .4byte gUnknown_03004854 -_08050C1C: .4byte 0x00009999 -_08050C20: - bl sub_810CA00 - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08050C40 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x3 - strh r1, [r0] - ldr r0, _08050C3C @ =0x0000aaaa - b _08050C48 - .align 2, 0 -_08050C3C: .4byte 0x0000aaaa -_08050C40: - ldr r0, [r4] - adds r0, 0x7C - strh r5, [r0] - ldr r0, _08050C4C @ =0x00007779 -_08050C48: - strh r0, [r6, 0x2] - b _08050C82 - .align 2, 0 -_08050C4C: .4byte 0x00007779 -_08050C50: - adds r1, r2, 0 - adds r1, 0x7C - movs r0, 0x1 - strh r0, [r1] - ldr r0, _08050C60 @ =0x00008888 - strh r0, [r6, 0x2] - subs r1, 0xD - b _08050C88 - .align 2, 0 -_08050C60: .4byte 0x00008888 -_08050C64: - ldr r0, _08050C70 @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - beq _08050C78 - ldr r0, _08050C74 @ =sub_80510E8 - b _08050CA4 - .align 2, 0 -_08050C70: .4byte gUnknown_03004834 -_08050C74: .4byte sub_80510E8 -_08050C78: - ldr r0, _08050C90 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_08050C82: - ldr r0, _08050C94 @ =gUnknown_03004854 - ldr r1, [r0] -_08050C86: - adds r1, 0x6F -_08050C88: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08050CB6 - .align 2, 0 -_08050C90: .4byte gOtherText_LinkStandby3 -_08050C94: .4byte gUnknown_03004854 -_08050C98: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08050CB6 - ldr r0, _08050CE0 @ =sub_8050E30 -_08050CA4: - bl SetMainCallback2 - ldr r2, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x6F - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0] -_08050CB6: - bl sub_8051B18 - ldr r0, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050CE0: .4byte sub_8050E30 -_08050CE4: .4byte gUnknown_03004854 - thumb_func_end sub_8050954 - - thumb_func_start sub_8050CE8 -sub_8050CE8: @ 8050CE8 - push {r4,lr} - ldr r1, _08050D08 @ =gUnknown_03004854 - ldr r0, [r1] - movs r2, 0xE2 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _08050CFE - b _08050E28 -_08050CFE: - lsls r0, 2 - ldr r1, _08050D0C @ =_08050D10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050D08: .4byte gUnknown_03004854 -_08050D0C: .4byte _08050D10 - .align 2, 0 -_08050D10: - .4byte _08050D2C - .4byte _08050D44 - .4byte _08050D70 - .4byte _08050D80 - .4byte _08050DA6 - .4byte _08050DEC - .4byte _08050E06 -_08050D2C: - bl sub_80084A4 - ldr r0, _08050D40 @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0x1 - b _08050DF8 - .align 2, 0 -_08050D40: .4byte gUnknown_03004854 -_08050D44: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - ldr r0, _08050D68 @ =gUnknown_03004854 - ldr r1, [r0] - movs r2, 0xE2 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, _08050D6C @ =gSoftResetDisabled - movs r0, 0x1 - strb r0, [r1] - b _08050E28 - .align 2, 0 -_08050D68: .4byte gUnknown_03004854 -_08050D6C: .4byte gSoftResetDisabled -_08050D70: - bl sub_8125E2C - ldr r0, _08050D7C @ =gUnknown_03004854 - ldr r2, [r0] - b _08050DEE - .align 2, 0 -_08050D7C: .4byte gUnknown_03004854 -_08050D80: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - bne _08050E28 - bl sub_80084A4 - ldr r1, [r4] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _08050E28 -_08050DA6: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - bl sub_8125E6C - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08050DD0 - ldr r0, _08050DCC @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - movs r1, 0x5 - str r1, [r0] - b _08050E28 - .align 2, 0 -_08050DCC: .4byte gUnknown_03004854 -_08050DD0: - ldr r0, _08050DE8 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r0, r1, r3 - str r2, [r0] - movs r0, 0xE2 - lsls r0, 1 - adds r1, r0 - movs r0, 0x3 - str r0, [r1] - b _08050E28 - .align 2, 0 -_08050DE8: .4byte gUnknown_03004854 -_08050DEC: - ldr r2, [r4] -_08050DEE: - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 -_08050DF8: - str r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] - b _08050E28 -_08050E06: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - ble _08050E28 - ldr r1, _08050E24 @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08050E2A - .align 2, 0 -_08050E24: .4byte gSoftResetDisabled -_08050E28: - movs r0, 0 -_08050E2A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8050CE8 - - thumb_func_start sub_8050E30 -sub_8050E30: @ 8050E30 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _08050E50 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0xC - bls _08050E44 - b _080510C4 -_08050E44: - lsls r0, 2 - ldr r1, _08050E54 @ =_08050E58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050E50: .4byte gUnknown_03004854 -_08050E54: .4byte _08050E58 - .align 2, 0 -_08050E58: - .4byte _08050E8C - .4byte _08050ED8 - .4byte _08050F18 - .4byte _08050F6C - .4byte _08050F8C - .4byte _08050FAA - .4byte _08050FD4 - .4byte _08051004 - .4byte _08051020 - .4byte _08051030 - .4byte _08051054 - .4byte _08051094 - .4byte _080510B6 -_08050E8C: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r2, [r0] - ldr r0, _08050EB8 @ =0x00002222 - cmp r2, r0 - bne _08050E9C - b _08050FA2 -_08050E9C: - ldr r0, _08050EBC @ =0x00001111 - cmp r2, r0 - beq _08050EA4 - b _080510C4 -_08050EA4: - adds r0, r1, 0 - adds r0, 0x78 - ldrh r2, [r0] - ldr r0, _08050EC0 @ =0x00009999 - cmp r2, r0 - bne _08050EC4 - adds r1, 0x6F - movs r0, 0x2 - strb r0, [r1] - b _080510C4 - .align 2, 0 -_08050EB8: .4byte 0x00002222 -_08050EBC: .4byte 0x00001111 -_08050EC0: .4byte 0x00009999 -_08050EC4: - ldr r0, _08050ED4 @ =0x0000aaaa - cmp r2, r0 - bne _08050FA2 - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _080510C4 - .align 2, 0 -_08050ED4: .4byte 0x0000aaaa -_08050ED8: - ldr r0, [r5] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F0C @ =gStringVar4 - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F10 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _08050F14 @ =gOtherText_OtherCaseIsFull - b _08050F4C - .align 2, 0 -_08050F0C: .4byte gStringVar4 -_08050F10: .4byte gLinkPlayers + 0x8 -_08050F14: .4byte gOtherText_OtherCaseIsFull -_08050F18: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F60 @ =gStringVar4 - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F64 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _08050F68 @ =gOtherText_NoBerriesForBlend -_08050F4C: - adds r0, r4, 0 - bl StringAppend - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _080510C4 - .align 2, 0 -_08050F60: .4byte gStringVar4 -_08050F64: .4byte gLinkPlayers + 0x8 -_08050F68: .4byte gOtherText_NoBerriesForBlend -_08050F6C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050F78 - b _080510C4 -_08050F78: - ldr r0, _08050F88 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _080510AC - .align 2, 0 -_08050F88: .4byte gUnknown_03004854 -_08050F8C: - ldr r2, [r5] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _08050FA0 - b _080510C4 -_08050FA0: - adds r1, r2, 0 -_08050FA2: - adds r1, 0x6F - movs r0, 0x5 - strb r0, [r1] - b _080510C4 -_08050FAA: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050FCC @ =gMultiText_Saving - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - bl sub_80084A4 - ldr r0, _08050FD0 @ =gUnknown_03004854 - ldr r1, [r0] - b _080510AC - .align 2, 0 -_08050FCC: .4byte gMultiText_Saving -_08050FD0: .4byte gUnknown_03004854 -_08050FD4: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - ldr r3, _08051000 @ =gUnknown_03004854 - ldr r1, [r3] - movs r2, 0x98 - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - str r2, [r0] - b _080510C4 - .align 2, 0 -_08051000: .4byte gUnknown_03004854 -_08051004: - bl sub_8050CE8 - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - movs r0, 0x37 - bl PlaySE - ldr r0, _0805101C @ =gUnknown_03004854 - ldr r1, [r0] - b _080510AC - .align 2, 0 -_0805101C: .4byte gUnknown_03004854 -_08051020: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80084A4 - b _080510C4 -_08051030: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08051050 @ =gUnknown_03004854 - ldr r1, [r0] - b _080510AC - .align 2, 0 -_08051050: .4byte gUnknown_03004854 -_08051054: - ldr r0, _0805107C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080510C4 - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _08051080 @ =0x00002222 - cmp r1, r0 - bne _08051088 - ldr r0, _08051084 @ =sub_804E538 - bl SetMainCallback2 - b _080510C4 - .align 2, 0 -_0805107C: .4byte gPaletteFade -_08051080: .4byte 0x00002222 -_08051084: .4byte sub_804E538 -_08051088: - movs r1, 0x98 - lsls r1, 1 - adds r0, r2, r1 - str r3, [r0] - adds r1, r2, 0 - b _080510AC -_08051094: - ldr r1, [r5] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080510C4 - bl sub_800832C - ldr r1, [r5] -_080510AC: - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080510C4 -_080510B6: - ldr r0, _080510E0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080510C4 - ldr r0, _080510E4 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080510C4: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080510E0: .4byte gReceivedRemoteLinkPlayers -_080510E4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_8050E30 - - thumb_func_start sub_80510E8 -sub_80510E8: @ 80510E8 - push {lr} - ldr r1, _08051104 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0xA - bls _080510FA - b _0805121E -_080510FA: - lsls r0, 2 - ldr r1, _08051108 @ =_0805110C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051104: .4byte gUnknown_03004854 -_08051108: .4byte _0805110C - .align 2, 0 -_0805110C: - .4byte _08051138 - .4byte _0805116E - .4byte _08051190 - .4byte _080511BC - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _080511D8 - .4byte _080511F0 -_08051138: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x1 - bhi _0805114A - adds r1, 0x6F - movs r0, 0x9 - strb r0, [r1] -_0805114A: - ldr r2, [r3] - adds r0, r2, 0 - adds r0, 0x7C - ldrh r1, [r0] - cmp r1, 0x2 - bne _0805115A - subs r0, 0xD - strb r1, [r0] -_0805115A: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x3 - bne _0805121E - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _0805121E -_0805116E: - ldr r0, [r3] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0805118C @ =gOtherText_CaseIsFull - b _080511AC - .align 2, 0 -_0805118C: .4byte gOtherText_CaseIsFull -_08051190: - ldr r0, [r3] - adds r0, 0x6F - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080511B8 @ =gOtherText_OutOfBerries -_080511AC: - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0805121E - .align 2, 0 -_080511B8: .4byte gOtherText_OutOfBerries -_080511BC: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805121E - ldr r0, _080511D4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x9 - strb r1, [r0] - b _0805121E - .align 2, 0 -_080511D4: .4byte gUnknown_03004854 -_080511D8: - movs r0, 0x3 - bl BeginFastPaletteFade - ldr r0, _080511EC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805121E - .align 2, 0 -_080511EC: .4byte gUnknown_03004854 -_080511F0: - ldr r0, _08051210 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0805121E - ldr r0, [r3] - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _08051218 - ldr r0, _08051214 @ =sub_804E538 - bl SetMainCallback2 - b _0805121E - .align 2, 0 -_08051210: .4byte gPaletteFade -_08051214: .4byte sub_804E538 -_08051218: - ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0805121E: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_80510E8 - - thumb_func_start sub_805123C -sub_805123C: @ 805123C - push {r4-r6,lr} - ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08051248 - b _08051404 -_08051248: - ldr r4, _08051270 @ =gRecvCmds - ldrh r1, [r4] - ldr r0, _08051274 @ =0x00002fff - cmp r1, r0 - bne _080512C6 - ldrh r1, [r4, 0x8] - ldr r0, _08051278 @ =0x00001111 - cmp r1, r0 - bne _080512B8 - ldrh r3, [r4, 0x10] - ldr r0, _0805127C @ =0x00009999 - cmp r3, r0 - beq _08051298 - cmp r3, r0 - bgt _08051284 - ldr r0, _08051280 @ =0x00008888 - b _08051286 - .align 2, 0 -_0805126C: .4byte gReceivedRemoteLinkPlayers -_08051270: .4byte gRecvCmds -_08051274: .4byte 0x00002fff -_08051278: .4byte 0x00001111 -_0805127C: .4byte 0x00009999 -_08051280: .4byte 0x00008888 -_08051284: - ldr r0, _08051290 @ =0x0000aaaa -_08051286: - cmp r3, r0 - beq _08051298 - ldr r2, _08051294 @ =gUnknown_03004854 - b _080512A8 - .align 2, 0 -_08051290: .4byte 0x0000aaaa -_08051294: .4byte gUnknown_03004854 -_08051298: - ldr r2, _080512B0 @ =gUnknown_03004854 - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x78 - strh r3, [r1] - ldrh r1, [r4, 0x18] - adds r0, 0x7A - strh r1, [r0] -_080512A8: - ldr r0, [r2] - adds r0, 0x70 - ldr r1, _080512B4 @ =0x00001111 - b _080512C4 - .align 2, 0 -_080512B0: .4byte gUnknown_03004854 -_080512B4: .4byte 0x00001111 -_080512B8: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512C6 - ldr r0, _080512F8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x70 -_080512C4: - strh r1, [r0] -_080512C6: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080512D2 - b _08051404 -_080512D2: - ldr r2, _080512F8 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _080512FC @ =0x00001111 - cmp r1, r0 - bne _080512E2 - b _08051404 -_080512E2: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512EA - b _08051404 -_080512EA: - movs r4, 0 - ldr r6, _08051300 @ =0x00002fff - adds r5, r2, 0 - b _0805134E - .align 2, 0 -_080512F4: .4byte 0x00002222 -_080512F8: .4byte gUnknown_03004854 -_080512FC: .4byte 0x00001111 -_08051300: .4byte 0x00002fff -_08051304: - ldr r1, _08051328 @ =gRecvCmds - lsls r2, r4, 1 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r6 - bne _08051348 - adds r0, r1, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldrh r1, [r0] - ldr r0, _0805132C @ =0x00008888 - cmp r1, r0 - beq _08051340 - cmp r1, r0 - bgt _08051334 - ldr r0, _08051330 @ =0x00007779 - b _0805133C - .align 2, 0 -_08051328: .4byte gRecvCmds -_0805132C: .4byte 0x00008888 -_08051330: .4byte 0x00007779 -_08051334: - ldr r0, _08051360 @ =0x00009999 - cmp r1, r0 - beq _08051340 - ldr r0, _08051364 @ =0x0000aaaa -_0805133C: - cmp r1, r0 - bne _08051348 -_08051340: - ldr r0, [r5] - adds r0, 0x70 - adds r0, r2 - strh r1, [r0] -_08051348: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805134E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08051304 - movs r4, 0 - b _0805136E - .align 2, 0 -_08051360: .4byte 0x00009999 -_08051364: .4byte 0x0000aaaa -_08051368: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805136E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _0805138A - ldr r0, _0805139C @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08051368 -_0805138A: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _08051404 - movs r4, 0 - ldr r5, _080513A0 @ =0x00007779 - b _080513AA - .align 2, 0 -_0805139C: .4byte gUnknown_03004854 -_080513A0: .4byte 0x00007779 -_080513A4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080513AA: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _080513C6 - ldr r0, _080513E0 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080513A4 -_080513C6: - ldr r5, _080513E4 @ =gSendCmd - movs r6, 0 - ldr r0, _080513E8 @ =0x00002fff - strh r0, [r5] - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _080513F0 - ldr r0, _080513EC @ =0x00002222 - strh r0, [r5, 0x2] - b _08051404 - .align 2, 0 -_080513E0: .4byte gUnknown_03004854 -_080513E4: .4byte gSendCmd -_080513E8: .4byte 0x00002fff -_080513EC: .4byte 0x00002222 -_080513F0: - ldr r0, _0805140C @ =0x00001111 - strh r0, [r5, 0x2] - ldr r0, _08051410 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - strh r4, [r5, 0x6] -_08051404: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805140C: .4byte 0x00001111 -_08051410: .4byte gUnknown_03004854 - thumb_func_end sub_805123C - - thumb_func_start sub_8051414 -sub_8051414: @ 8051414 - push {lr} - sub sp, 0x14 - adds r1, r0, 0 - movs r0, 0xF0 - lsls r0, 7 - str r0, [sp] - movs r0, 0xA0 - lsls r0, 7 - str r0, [sp, 0x4] - mov r3, sp - ldr r0, _08051470 @ =gUnknown_03004854 - ldr r0, [r0] - mov r12, r0 - movs r0, 0xA2 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x78 - subs r0, r2 - strh r0, [r3, 0x8] - movs r0, 0xA3 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x50 - subs r0, r2 - strh r0, [r3, 0xA] - mov r2, sp - movs r3, 0xA1 - lsls r3, 1 - add r3, r12 - ldrh r0, [r3] - strh r0, [r2, 0xC] - ldrh r0, [r3] - strh r0, [r2, 0xE] - mov r0, r12 - adds r0, 0x54 - ldrh r0, [r0] - strh r0, [r2, 0x10] - mov r0, sp - movs r2, 0x1 - bl BgAffineSet - add sp, 0x14 - pop {r0} - bx r0 - .align 2, 0 -_08051470: .4byte gUnknown_03004854 - thumb_func_end sub_8051414 - - thumb_func_start sub_8051474 -sub_8051474: @ 8051474 - push {lr} - ldr r0, _080514A0 @ =gUnknown_03004854 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x54 - ldrh r2, [r1] - adds r0, r3, 0 - adds r0, 0x58 - strh r2, [r0] - subs r0, 0x2 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - movs r1, 0xB4 - lsls r1, 1 - adds r0, r3, r1 - bl sub_8051414 - pop {r0} - bx r0 - .align 2, 0 -_080514A0: .4byte gUnknown_03004854 - thumb_func_end sub_8051474 - - thumb_func_start sub_80514A4 -sub_80514A4: @ 80514A4 - ldr r1, _080514E8 @ =REG_BG2PA - ldr r0, _080514EC @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xB4 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - adds r3, 0x4 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080514E8: .4byte REG_BG2PA -_080514EC: .4byte gUnknown_03004854 - thumb_func_end sub_80514A4 - - thumb_func_start sub_80514F0 -sub_80514F0: @ 80514F0 - ldr r1, _0805151C @ =REG_BG1HOFS - ldr r0, _08051520 @ =gUnknown_03004854 - ldr r3, [r0] - movs r0, 0xA2 - lsls r0, 1 - adds r2, r3, r0 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - movs r0, 0xA3 - lsls r0, 1 - adds r3, r0 - ldrh r0, [r3] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r3] - strh r0, [r1] - bx lr - .align 2, 0 -_0805151C: .4byte REG_BG1HOFS -_08051520: .4byte gUnknown_03004854 - thumb_func_end sub_80514F0 - - thumb_func_start sub_8051524 -sub_8051524: @ 8051524 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051542 - adds r0, 0x7 -_08051542: - asrs r0, 3 - strh r0, [r2, 0x24] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051550 - adds r0, 0x7 -_08051550: - asrs r0, 3 - strh r0, [r2, 0x26] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08051568 - adds r0, r2, 0 - bl DestroySprite -_08051568: - pop {r0} - bx r0 - thumb_func_end sub_8051524 - - thumb_func_start sub_805156C -sub_805156C: @ 805156C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - bl Random - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0x1 - ands r1, r0 - adds r0, r1, 0x1 - cmp r0, 0 - beq _08051628 - ldr r0, _08051638 @ =gSineTable - mov r9, r0 - ldr r2, _0805163C @ =gSprites - mov r10, r2 - adds r6, r1, 0x1 - movs r3, 0x1F - mov r8, r3 - movs r7, 0x10 -_08051598: - bl Random - ldr r1, _08051640 @ =gUnknown_03004854 - ldr r4, [r1] - adds r4, 0x54 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - ldrh r1, [r4] - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - add r0, r9 - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - bge _080515CC - adds r1, 0x3 -_080515CC: - asrs r1, 2 - lsls r0, r2, 1 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _080515DC - adds r0, 0x3 -_080515DC: - asrs r2, r0, 2 - adds r1, 0x78 - adds r2, 0x50 - ldr r0, _08051644 @ =gSpriteTemplate_82164FC - movs r3, 0x1 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - mov r3, r10 - adds r4, r5, r3 - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - ands r0, r1 - subs r0, r7, r0 - strh r0, [r4, 0x2E] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r2, r8 - ands r0, r2 - subs r0, r7, r0 - strh r0, [r4, 0x30] - ldr r3, _08051648 @ =gSprites + 0x1C - adds r5, r3 - ldr r0, _0805164C @ =sub_8051524 - str r0, [r5] - subs r6, 0x1 - cmp r6, 0 - bne _08051598 -_08051628: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051638: .4byte gSineTable -_0805163C: .4byte gSprites -_08051640: .4byte gUnknown_03004854 -_08051644: .4byte gSpriteTemplate_82164FC -_08051648: .4byte gSprites + 0x1C -_0805164C: .4byte sub_8051524 - thumb_func_end sub_805156C - - thumb_func_start sub_8051650 -sub_8051650: @ 8051650 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0805167C - adds r0, r4, 0 - bl DestroySprite -_0805167C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8051650 - - thumb_func_start sub_8051684 -sub_8051684: @ 8051684 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xC - negs r1, r1 - cmp r0, r1 - bge _080516A8 - ldr r0, _080516C0 @ =0x0000fff4 - strh r0, [r2, 0x26] -_080516A8: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080516BC - adds r0, r2, 0 - bl DestroySprite -_080516BC: - pop {r0} - bx r0 - .align 2, 0 -_080516C0: .4byte 0x0000fff4 - thumb_func_end sub_8051684 - - thumb_func_start sub_80516C4 -sub_80516C4: @ 80516C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080516F4 @ =gUnknown_03004854 - ldr r3, [r2] - lsls r4, r0, 1 - adds r2, r3, 0 - adds r2, 0x80 - adds r2, r4 - strh r1, [r2] - lsls r0, 4 - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - adds r3, r0 - adds r0, r3, 0 - bl sub_804E844 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080516F4: .4byte gUnknown_03004854 - thumb_func_end sub_80516C4 - - thumb_func_start unref_sub_80516F8 -unref_sub_80516F8: @ 80516F8 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080517B8 @ =gTasks - adds r4, r0, r1 - ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r6] - cmp r0, 0 - beq _0805180C - bl GetMultiplayerId - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080517D4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _08051730 - strh r1, [r4, 0x8] -_08051730: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x64 - bne _080517A0 - ldr r0, _080517C0 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x4 - movs r1, 0x14 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl ZeroFillWindowRect - movs r0, 0x4 - movs r1, 0x4 - movs r2, 0xA - movs r3, 0xC - bl MenuDrawTextWindow - movs r2, 0 - ldr r6, _080517C4 @ =gLinkPlayers + 0x4 -_0805175C: - adds r4, r2, 0x1 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - cmp r0, 0 - beq _08051784 - ldr r1, _080517C8 @ =gUnknown_08216284 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - lsls r2, 25 - movs r1, 0xA0 - lsls r1, 19 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint -_08051784: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _080517CC @ =gOtherText_PressAToStart - movs r1, 0x1 - movs r2, 0xF - bl MenuPrint - adds r2, r4, 0 - cmp r2, 0x2 - ble _0805175C -_080517A0: - ldr r0, _080517D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805180C - bl sub_8007E4C - adds r0, r5, 0 - bl DestroyTask - b _0805180C - .align 2, 0 -_080517B8: .4byte gTasks -_080517BC: .4byte gReceivedRemoteLinkPlayers -_080517C0: .4byte gUnknown_03004854 -_080517C4: .4byte gLinkPlayers + 0x4 -_080517C8: .4byte gUnknown_08216284 -_080517CC: .4byte gOtherText_PressAToStart -_080517D0: .4byte gMain -_080517D4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080517E6 - ldr r0, _08051814 @ =gOtherText_PleaseWait - movs r1, 0x3 - movs r2, 0xA - bl MenuPrint -_080517E6: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _080517F8 - movs r0, 0 - strh r0, [r4, 0x8] -_080517F8: - ldr r0, _08051818 @ =byte_3002A68 - ldrb r0, [r0] - cmp r0, 0x4 - bls _0805180C - ldrb r0, [r6] - cmp r0, 0x1 - bne _0805180C - adds r0, r5, 0 - bl DestroyTask -_0805180C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051814: .4byte gOtherText_PleaseWait -_08051818: .4byte byte_3002A68 - thumb_func_end unref_sub_80516F8 - - thumb_func_start sub_805181C -sub_805181C: @ 805181C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051858 - cmp r0, 0x1 - bgt _08051832 - cmp r0, 0 - beq _08051838 - b _080518BE -_08051832: - cmp r0, 0x2 - beq _08051872 - b _080518BE -_08051838: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x58 - ble _080518BE - movs r0, 0x58 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _080518BE -_08051858: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080518BE - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x32] - b _080518BE -_08051872: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _080518BE - ldrh r0, [r4, 0x34] - adds r0, 0x1 - adds r1, r0, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080518AC - adds r0, r4, 0 - bl DestroySprite - ldr r0, _080518A8 @ =gSpriteTemplate_821657C - movs r2, 0x14 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x2 - bl CreateSprite - b _080518BE - .align 2, 0 -_080518A8: .4byte gSpriteTemplate_821657C -_080518AC: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080518C8 @ =0x0000fff0 - strh r0, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080518BE: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080518C8: .4byte 0x0000fff0 - thumb_func_end sub_805181C - - thumb_func_start sub_80518CC -sub_80518CC: @ 80518CC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051908 - cmp r0, 0x1 - bgt _080518E2 - cmp r0, 0 - beq _080518E8 - b _0805193C -_080518E2: - cmp r0, 0x2 - beq _0805191E - b _0805193C -_080518E8: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5C - ble _0805193C - movs r0, 0x5C - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x15 - bl PlaySE - b _0805193C -_08051908: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0805193C - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0805193C -_0805191E: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _0805193C - ldr r0, _08051948 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_0805193C: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051948: .4byte gUnknown_03004854 - thumb_func_end sub_80518CC - - thumb_func_start sub_805194C -sub_805194C: @ 805194C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r1, _08051978 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA0 - lsls r2, 1 - adds r1, r2 - ldrh r2, [r1] - cmp r2, r0 - bcs _08051972 - adds r0, r2, 0x2 - strh r0, [r1] - ldrh r0, [r1] - adds r1, r3, 0 - bl sub_805197C -_08051972: - pop {r0} - bx r0 - .align 2, 0 -_08051978: .4byte gUnknown_03004854 - thumb_func_end sub_805194C - - thumb_func_start sub_805197C -sub_805197C: @ 805197C - push {r4-r7,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r7, _08051A0C @ =0x06006000 - lsrs r0, 10 - bl __divsi3 - adds r1, r0, 0 - cmp r1, 0 - bge _08051994 - adds r0, r1, 0x7 -_08051994: - asrs r4, r0, 3 - movs r3, 0 - cmp r3, r4 - bge _080519BC - ldr r0, _08051A10 @ =0x000081e9 - adds r6, r0, 0 - adds r0, 0x10 - adds r5, r0, 0 - adds r2, r7, 0 - adds r2, 0x56 - adds r0, r7, 0 - adds r3, r4, 0 -_080519AC: - strh r6, [r0, 0x16] - strh r5, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080519AC - adds r3, r4, 0 -_080519BC: - adds r0, r1, 0 - cmp r1, 0 - bge _080519C4 - adds r0, r1, 0x7 -_080519C4: - asrs r2, r0, 3 - lsls r0, r2, 3 - subs r2, r1, r0 - cmp r2, 0 - beq _080519E2 - lsls r0, r3, 1 - adds r0, r7 - ldr r4, _08051A14 @ =0xffff81e1 - adds r1, r2, r4 - strh r1, [r0, 0x16] - adds r0, 0x56 - adds r4, 0x10 - adds r1, r2, r4 - strh r1, [r0] - adds r3, 0x1 -_080519E2: - cmp r3, 0x7 - bgt _08051A06 - ldr r0, _08051A18 @ =0x000081e1 - adds r4, r0, 0 - adds r0, 0x10 - adds r2, r0, 0 - lsls r1, r3, 1 - adds r0, r1, 0 - adds r0, 0x56 - adds r0, r7 - adds r1, r7 -_080519F8: - strh r4, [r1, 0x16] - strh r2, [r0] - adds r0, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x7 - ble _080519F8 -_08051A06: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051A0C: .4byte 0x06006000 -_08051A10: .4byte 0x000081e9 -_08051A14: .4byte 0xffff81e1 -_08051A18: .4byte 0x000081e1 - thumb_func_end sub_805197C - - thumb_func_start sub_8051A1C -sub_8051A1C: @ 8051A1C - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08051A34 @ =0x00057e40 - muls r0, r1 - cmp r0, 0 - bge _08051A2E - ldr r1, _08051A38 @ =0x0000ffff - adds r0, r1 -_08051A2E: - asrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08051A34: .4byte 0x00057e40 -_08051A38: .4byte 0x0000ffff - thumb_func_end sub_8051A1C - - thumb_func_start sub_8051A3C -sub_8051A3C: @ 8051A3C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - bl sub_8051A1C - adds r5, r0, 0 - ldr r0, _08051ABC @ =gUnknown_03004854 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x5A - ldrh r0, [r1] - cmp r0, r5 - bcs _08051A5A - strh r5, [r1] -_08051A5A: - movs r6, 0 -_08051A5C: - mov r0, sp - adds r4, r0, r6 - adds r0, r5, 0 - movs r1, 0xA - bl __umodsi3 - strb r0, [r4] - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bls _08051A5C - ldr r2, _08051AC0 @ =0x06006458 - mov r0, sp - ldr r3, _08051AC4 @ =0x00008172 - adds r1, r3, 0 - ldrb r0, [r0, 0x4] - adds r0, r1, r0 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x3] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x2] - adds r0, r1 - strh r0, [r2] - adds r2, 0x4 - mov r0, sp - ldrb r0, [r0, 0x1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0] - adds r1, r0 - strh r1, [r2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051ABC: .4byte gUnknown_03004854 -_08051AC0: .4byte 0x06006458 -_08051AC4: .4byte 0x00008172 - thumb_func_end sub_8051A3C - - thumb_func_start sub_8051AC8 -sub_8051AC8: @ 8051AC8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 16 - lsrs r5, r4, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08051AEC - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __umodsi3 - lsrs r1, r4, 17 - subs r0, r1 - strh r0, [r6] -_08051AEC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8051AC8 - - thumb_func_start sub_8051AF4 -sub_8051AF4: @ 8051AF4 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bge _08051B06 - adds r0, r2, 0x1 - strh r0, [r1] -_08051B06: - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08051B14 - subs r0, r2, 0x1 - strh r0, [r1] -_08051B14: - pop {r0} - bx r0 - thumb_func_end sub_8051AF4 - - thumb_func_start sub_8051B18 -sub_8051B18: @ 8051B18 - push {r4,lr} - ldr r4, _08051B3C @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0xA2 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - ldr r0, [r4] - movs r1, 0xA3 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051B3C: .4byte gUnknown_03004854 - thumb_func_end sub_8051B18 - - thumb_func_start sub_8051B40 -sub_8051B40: @ 8051B40 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r5, 0x8 - cmp r1, 0x9 - bhi _08051B50 - movs r5, 0x10 -_08051B50: - ldrh r0, [r4] - movs r2, 0 - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08051B6E - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsrs r1, r5, 1 - subs r0, r1 - b _08051B82 -_08051B6E: - cmp r1, 0 - bge _08051B76 - adds r0, 0x1 - strh r0, [r4] -_08051B76: - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08051B84 - subs r0, r1, 0x1 -_08051B82: - strh r0, [r4] -_08051B84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8051B40 - - thumb_func_start sub_8051B8C -sub_8051B8C: @ 8051B8C - push {r4,r5,lr} - ldr r5, _08051BE4 @ =gUnknown_03004854 - ldr r2, [r5] - movs r4, 0x98 - lsls r4, 1 - adds r0, r2, r4 - ldr r1, [r0] - cmp r1, 0 - bne _08051BAC - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] -_08051BAC: - ldr r0, [r5] - adds r2, r0, r4 - ldr r1, [r2] - adds r1, 0x1 - str r1, [r2] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_8051B40 - ldr r1, [r5] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r1, r3 - adds r1, r4 - ldrh r1, [r1] - bl sub_8051B40 - ldr r2, [r5] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x14 - beq _08051BE8 - movs r0, 0 - b _08051BFC - .align 2, 0 -_08051BE4: .4byte gUnknown_03004854 -_08051BE8: - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x1 -_08051BFC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8051B8C - - thumb_func_start sub_8051C04 -sub_8051C04: @ 8051C04 - ldr r1, _08051C20 @ =gUnknown_03004854 - ldr r2, [r1] - movs r3, 0xA2 - lsls r3, 1 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x24] - adds r3, 0x2 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x26] - bx lr - .align 2, 0 -_08051C20: .4byte gUnknown_03004854 - thumb_func_end sub_8051C04 - - thumb_func_start sub_8051C24 -sub_8051C24: @ 8051C24 - push {lr} - ldr r2, _08051C4C @ =gSaveBlock1 - ldr r0, _08051C50 @ =gUnknown_03004854 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 1 - ldr r3, _08051C54 @ =0x0000096c - adds r2, r3 - adds r2, r0, r2 - adds r1, 0x5A - ldrh r1, [r1] - ldrh r0, [r2] - cmp r0, r1 - bcs _08051C48 - strh r1, [r2] -_08051C48: - pop {r0} - bx r0 - .align 2, 0 -_08051C4C: .4byte gSaveBlock1 -_08051C50: .4byte gUnknown_03004854 -_08051C54: .4byte 0x0000096c - thumb_func_end sub_8051C24 - - thumb_func_start sub_8051C58 -sub_8051C58: @ 8051C58 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - ldr r1, _08051C7C @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _08051C72 - b _0805200A -_08051C72: - lsls r0, 2 - ldr r1, _08051C80 @ =_08051C84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051C7C: .4byte gUnknown_03004854 -_08051C80: .4byte _08051C84 - .align 2, 0 -_08051C84: - .4byte _08051CA0 - .4byte _08051CB6 - .4byte _08051CD0 - .4byte _08051D20 - .4byte _08051F44 - .4byte _08051F58 - .4byte _08051FF8 -_08051CA0: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0x11 - str r1, [r0] - b _0805200A -_08051CB6: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08051CCA - b _0805200A -_08051CCA: - movs r0, 0 - str r0, [r2] - b _08051FE2 -_08051CD0: - ldr r1, [r2] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _08051CE4 - b _0805200A -_08051CE4: - movs r6, 0 -_08051CE6: - ldr r4, _08051D18 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x50 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051D1C @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x2 - bls _08051CE6 - ldr r1, [r4] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FE2 - .align 2, 0 -_08051D18: .4byte gUnknown_03004854 -_08051D1C: .4byte gSprites -_08051D20: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _08051F14 @ =gOtherText_ResultsOfBlending - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - movs r6, 0 - ldr r1, _08051F18 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - add r2, sp, 0xC - mov r9, r2 - mov r2, sp - adds r2, 0x16 - str r2, [sp, 0x30] - ldrb r0, [r0] - cmp r6, r0 - bcs _08051E04 - mov r8, r1 - ldr r0, _08051F1C @ =gLinkPlayers - mov r10, r0 -_08051D56: - mov r1, r8 - ldr r2, [r1] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r2, r1 - adds r0, r6 - ldrb r5, [r0] - mov r7, r9 - lsls r1, r5, 4 - adds r1, r2 - movs r2, 0xBF - lsls r2, 1 - adds r1, r2 - adds r0, r7, 0 - bl StringCopy - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - mov r1, r10 - adds r0, r4, r1 - ldrb r1, [r0, 0x1A] - adds r0, r7, 0 - bl ConvertInternationalString - adds r0, r7, 0 - ldr r1, _08051F20 @ =gOtherText_Berry - bl StringAppend - mov r2, r8 - ldr r0, [r2] - adds r7, r0, 0 - adds r7, 0xAB - adds r5, r6, 0x1 - adds r0, r7, 0 - adds r1, r5, 0 - bl ConvertIntToDecimalString - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - ldr r0, _08051F24 @ =gLinkPlayers + 0x8 - adds r4, r0 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x58 - movs r3, 0 - bl sub_8072C74 - adds r7, r0, 0 - add r1, sp, 0xC - movs r2, 0x9D - movs r3, 0 - bl sub_8072C74 - mov r2, r8 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xAB - ldr r3, _08051F28 @ =gUnknown_082165E9 - adds r1, 0x88 - ldrb r2, [r1] - adds r3, r2, r3 - ldr r1, _08051F2C @ =gUnknown_082165EE - adds r2, r1 - ldrb r1, [r2] - adds r2, r6, 0 - muls r2, r1 - ldrb r3, [r3] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r5, 16 - lsrs r6, r5, 16 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bcc _08051D56 -_08051E04: - ldr r6, _08051F18 @ =gUnknown_03004854 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F30 @ =gOtherText_MaxSpeed - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r7, 0 - movs r2, 0x79 - movs r3, 0x1 - bl sub_8072C14 - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - adds r0, r7, 0 - mov r1, r9 - movs r2, 0x8E - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F34 @ =gOtherText_RPM - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xD - bl MenuPrint - ldr r0, [r6] - movs r2, 0x96 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x3C - bl __udivsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [sp, 0x30] - adds r1, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F38 @ =gOtherText_RequiredTime - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - mov r1, r9 - movs r2, 0x66 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F3C @ =gOtherText_Min - bl StringAppend - adds r7, r0, 0 - ldr r1, [sp, 0x30] - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F40 @ =gOtherText_Sec - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xF - bl MenuPrint - ldr r1, [r6] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FE2 - .align 2, 0 -_08051F14: .4byte gOtherText_ResultsOfBlending -_08051F18: .4byte gUnknown_03004854 -_08051F1C: .4byte gLinkPlayers -_08051F20: .4byte gOtherText_Berry -_08051F24: .4byte gLinkPlayers + 0x8 -_08051F28: .4byte gUnknown_082165E9 -_08051F2C: .4byte gUnknown_082165EE -_08051F30: .4byte gOtherText_MaxSpeed -_08051F34: .4byte gOtherText_RPM -_08051F38: .4byte gOtherText_RequiredTime -_08051F3C: .4byte gOtherText_Min -_08051F40: .4byte gOtherText_Sec -_08051F44: - ldr r0, _08051F54 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805200A - ldr r1, [r2] - b _08051FE2 - .align 2, 0 -_08051F54: .4byte gMain -_08051F58: - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r6, 0 - add r5, sp, 0x28 - ldr r0, _08051FEC @ =gUnknown_03004854 - ldr r0, [r0] - adds r3, r0, 0 - adds r3, 0x80 - add r2, sp, 0x20 -_08051F76: - lsls r1, r6, 1 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _08051F86 - adds r1, r2, r1 - subs r0, 0x85 - strh r0, [r1] -_08051F86: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08051F76 - bl sub_8050760 - ldr r4, _08051FEC @ =gUnknown_03004854 - ldr r3, [r4] - movs r1, 0xBE - lsls r1, 1 - adds r0, r3, r1 - adds r1, r3, 0 - adds r1, 0x88 - ldrb r2, [r1] - subs r1, 0x2E - ldrh r1, [r1] - str r1, [sp] - adds r1, r5, 0 - add r3, sp, 0x4 - bl sub_8050520 - ldr r1, [r4] - adds r1, 0xAB - adds r0, r5, 0 - bl sub_805201C - ldr r0, _08051FF0 @ =sub_8052BD0 - movs r1, 0x6 - bl CreateTask - ldr r0, [r4] - adds r0, 0xAB - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r0, _08051FF4 @ =gScriptItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - bl sub_810CA34 - ldr r1, [r4] -_08051FE2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805200A - .align 2, 0 -_08051FEC: .4byte gUnknown_03004854 -_08051FF0: .4byte sub_8052BD0 -_08051FF4: .4byte gScriptItemId -_08051FF8: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805200A - bl sub_8051C24 - movs r0, 0x1 - b _0805200C -_0805200A: - movs r0, 0 -_0805200C: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8051C58 - - thumb_func_start sub_805201C -sub_805201C: @ 805201C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - strb r0, [r6] - ldr r1, _080520B0 @ =gPokeblockNames - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - ldr r1, _080520B4 @ =gOtherText_PokeBlockMade - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520B8 @ =gUnknown_082162C8 - adds r0, r6, 0 - bl StringAppend - adds r0, r5, 0 - bl sub_810C9B0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_810C9E8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080520BC @ =gOtherText_BlockLevelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C0 @ =gOtherText_BlockFeelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C4 @ =gOtherText_Period - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520C8 @ =gUnknown_08216249 - adds r0, r6, 0 - bl StringAppend - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080520B0: .4byte gPokeblockNames -_080520B4: .4byte gOtherText_PokeBlockMade -_080520B8: .4byte gUnknown_082162C8 -_080520BC: .4byte gOtherText_BlockLevelIs -_080520C0: .4byte gOtherText_BlockFeelIs -_080520C4: .4byte gOtherText_Period -_080520C8: .4byte gUnknown_08216249 - thumb_func_end sub_805201C - - thumb_func_start sub_80520CC -sub_80520CC: @ 80520CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - mov r12, r2 - lsls r1, 24 - lsrs r7, r1, 24 - movs r0, 0 - cmp r0, r7 - bge _08052118 -_080520E2: - movs r5, 0 - adds r1, r0, 0x1 - mov r8, r1 - cmp r5, r7 - bge _08052112 - mov r1, r9 - adds r6, r1, r0 -_080520F0: - ldrb r4, [r6] - lsls r1, r4, 2 - add r1, r12 - mov r0, r9 - adds r2, r0, r5 - ldrb r3, [r2] - lsls r0, r3, 2 - add r0, r12 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - bls _0805210C - strb r3, [r6] - strb r4, [r2] -_0805210C: - adds r5, 0x1 - cmp r5, r7 - blt _080520F0 -_08052112: - mov r0, r8 - cmp r0, r7 - blt _080520E2 -_08052118: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80520CC - - thumb_func_start sub_8052124 -sub_8052124: @ 8052124 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r5, 0 - ldr r1, _08052144 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - mov r10, r1 - mov r2, sp - adds r2, 0x4 - str r2, [sp, 0x14] - b _08052158 - .align 2, 0 -_08052144: .4byte gUnknown_03004854 -_08052148: - mov r4, sp - adds r0, r4, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r1] - adds r0, 0x88 -_08052158: - ldrb r0, [r0] - cmp r5, r0 - bcc _08052148 - movs r5, 0 - mov r1, r10 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x88 - ldrb r2, [r1] - cmp r5, r2 - bcs _080521D6 - ldr r4, [sp, 0x14] - mov r9, r4 - movs r2, 0xA6 - lsls r2, 1 - adds r2, r0 - mov r8, r2 - mov r12, r1 - movs r4, 0xA7 - lsls r4, 1 - adds r7, r0, r4 - movs r1, 0xA8 - lsls r1, 1 - adds r6, r0, r1 -_08052188: - lsls r4, r5, 2 - add r4, r9 - lsls r3, r5, 1 - adds r3, r5 - lsls r3, 1 - mov r2, r8 - adds r0, r2, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r1, r0, 6 - subs r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r1, 6 - str r1, [r4] - adds r0, r7, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - str r1, [r4] - movs r0, 0xFA - lsls r0, 2 - adds r1, r0 - adds r3, r6, r3 - ldrh r0, [r3] - subs r1, r0 - str r1, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r12 - ldrb r1, [r1] - cmp r5, r1 - bcc _08052188 -_080521D6: - mov r2, r10 - ldr r0, [r2] - adds r0, 0x88 - ldrb r1, [r0] - mov r0, sp - ldr r2, [sp, 0x14] - bl sub_80520CC - movs r5, 0 - mov r4, r10 - ldr r0, [r4] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcs _08052218 - mov r2, r10 - movs r3, 0xB2 - lsls r3, 1 -_080521FA: - ldr r1, [r2] - adds r1, r3 - adds r1, r5 - mov r4, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r2] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcc _080521FA -_08052218: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8052124 - - thumb_func_start sub_8052228 -sub_8052228: @ 8052228 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _08052248 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _0805223C - b _080524AE -_0805223C: - lsls r0, 2 - ldr r1, _0805224C @ =_08052250 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052248: .4byte gUnknown_03004854 -_0805224C: .4byte _08052250 - .align 2, 0 -_08052250: - .4byte _0805226C - .4byte _08052282 - .4byte _0805229C - .4byte _080522B6 - .4byte _08052464 - .4byte _0805247E - .4byte _080524A4 -_0805226C: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - str r1, [r0] - b _080524AE -_08052282: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08052296 - b _080524AE -_08052296: - movs r0, 0 - str r0, [r2] - b _08052494 -_0805229C: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - cmp r0, 0x14 - bgt _080522B0 - b _080524AE -_080522B0: - movs r0, 0 - str r0, [r2] - b _08052494 -_080522B6: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _0805236C @ =gOtherText_Ranking - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - ldr r6, _08052370 @ =gSpriteTemplate_821645C - adds r0, r6, 0 - movs r1, 0x8C - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r7, _08052374 @ =gUnknown_03004854 - ldr r1, [r7] - adds r1, 0x50 - strb r0, [r1] - ldr r1, _08052378 @ =gSprites - mov r8, r1 - ldr r2, [r7] - adds r2, 0x50 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r5, r8 - adds r5, 0x1C - adds r0, r5 - ldr r4, _0805237C @ =SpriteCallbackDummy - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x3 - bl StartSpriteAnim - adds r0, r6, 0 - movs r1, 0xA4 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x51 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x51 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - adds r0, r6, 0 - movs r1, 0xBC - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x52 - strb r0, [r1] - ldr r2, [r7] - adds r2, 0x52 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x1 - bl StartSpriteAnim - bl sub_8052124 - movs r2, 0 - mov r8, r2 - b _0805243C - .align 2, 0 -_0805236C: .4byte gOtherText_Ranking -_08052370: .4byte gSpriteTemplate_821645C -_08052374: .4byte gUnknown_03004854 -_08052378: .4byte gSprites -_0805237C: .4byte SpriteCallbackDummy -_08052380: - ldr r1, [r7] - movs r2, 0xB2 - lsls r2, 1 - adds r0, r1, r2 - add r0, r8 - ldrb r5, [r0] - adds r2, r1, 0 - adds r2, 0xAB - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x4 - strb r0, [r2, 0x2] - adds r2, 0x3 - mov r6, r8 - adds r6, 0x1 - adds r0, r2, 0 - adds r1, r6, 0 - bl ConvertIntToDecimalString - adds r2, r0, 0 - movs r1, 0 - strb r1, [r2] - movs r0, 0xAD - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - adds r2, 0x3 - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - ldr r0, _08052458 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, [r7] - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 1 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x6C - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA7 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x84 - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x9C - movs r3, 0x1 - bl sub_8072C14 - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xAB - ldr r2, _0805245C @ =gUnknown_082165F3 - adds r1, 0x88 - ldrb r1, [r1] - adds r1, r2 - ldrb r1, [r1] - mov r2, r8 - muls r2, r1 - adds r2, 0x8 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r6, 16 - lsrs r6, 16 - mov r8, r6 -_0805243C: - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r8, r0 - bcc _08052380 - ldr r0, _08052460 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08052494 - .align 2, 0 -_08052458: .4byte gLinkPlayers + 0x8 -_0805245C: .4byte gUnknown_082165F3 -_08052460: .4byte gUnknown_03004854 -_08052464: - ldr r2, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - ble _080524AE - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _080524AE -_0805247E: - ldr r0, _0805249C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080524AE - movs r0, 0x5 - bl PlaySE - ldr r0, _080524A0 @ =gUnknown_03004854 - ldr r1, [r0] -_08052494: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080524AE - .align 2, 0 -_0805249C: .4byte gMain -_080524A0: .4byte gUnknown_03004854 -_080524A4: - ldr r1, [r2] - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _080524B0 -_080524AE: - movs r0, 0 -_080524B0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8052228 - - thumb_func_start unref_sub_80524BC -unref_sub_80524BC: @ 80524BC - push {r4,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0805251C @ =sub_804E2D8 - bl SetVBlankCallback - ldr r4, _08052520 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r0, _08052524 @ =gMain - ldrh r0, [r0, 0x20] - bl SeedRng - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xAA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r1, _08052528 @ =gUnknown_03000560 - movs r0, 0xFA - lsls r0, 5 - strh r0, [r1, 0x1A] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - ldr r0, _0805252C @ =sub_8052AF8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805251C: .4byte sub_804E2D8 -_08052520: .4byte gWindowConfig_81E6CE4 -_08052524: .4byte gMain -_08052528: .4byte gUnknown_03000560 -_0805252C: .4byte sub_8052AF8 - thumb_func_end unref_sub_80524BC - - thumb_func_start sub_8052530 -sub_8052530: @ 8052530 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x98 - ldr r1, _080525C8 @ =gOtherText_BPMAndDash - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0 - bl MenuPrint - ldr r4, _080525CC @ =gUnknown_03000560 - movs r1, 0x1A - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - mov r0, sp - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r0, sp - movs r1, 0x6 - movs r2, 0 - bl MenuPrint - movs r6, 0 - mov r2, sp - adds r2, 0x3 - str r2, [sp, 0x84] - mov r3, sp - adds r3, 0x6 - str r3, [sp, 0x88] - mov r0, sp - adds r0, 0x9 - str r0, [sp, 0x8C] - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x90] - adds r2, 0xC - str r2, [sp, 0x94] - mov r8, r4 - mov r7, sp - ldr r3, _080525D0 @ =gBerries - mov r9, r3 - ldr r0, _080525D4 @ =gUnknown_082165F8 - mov r10, r0 -_0805259E: - mov r1, r8 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, r6 - bne _080525D8 - movs r0, 0xEF - strb r0, [r7] - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - adds r1, 0x1 - bl CopyItemName - b _080525F8 - .align 2, 0 -_080525C8: .4byte gOtherText_BPMAndDash -_080525CC: .4byte gUnknown_03000560 -_080525D0: .4byte gBerries -_080525D4: .4byte gUnknown_082165F8 -_080525D8: - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - bl CopyItemName - movs r0, 0 - strb r0, [r7, 0x6] - movs r0, 0xFF - strb r0, [r7, 0x7] -_080525F8: - lsls r5, r6, 1 - adds r5, r6 - adds r5, 0x3 - lsls r5, 24 - lsrs r5, 24 - mov r0, sp - movs r1, 0x2 - adds r2, r5, 0 - bl MenuPrint - mov r4, r8 - adds r4, 0x1 - adds r4, r6, r4 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x15] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x16] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x17] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x18] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x19] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x1A] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r2, 0x1 - negs r2, r2 - add r3, sp, 0x80 - strb r2, [r3] - movs r0, 0xFF - strb r0, [r7, 0x11] - mov r0, sp - movs r1, 0x7 - adds r2, r5, 0 - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080526EC - b _0805259E -_080526EC: - mov r1, r8 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _080527A4 - ldr r1, _080527B4 @ =gPokeblockNames - mov r2, r8 - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - mov r3, r8 - ldrb r1, [r3, 0x11] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - ldr r4, _080527B8 @ =gUnknown_082165F8 - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x12] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x13] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r3, r8 - ldrb r1, [r3, 0x14] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x15] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x16] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r1, sp - ldrb r0, [r1, 0x11] - add r3, sp, 0x80 - ldrb r3, [r3] - orrs r0, r3 - strb r0, [r1, 0x11] - mov r0, sp - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint -_080527A4: - add sp, 0x98 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080527B4: .4byte gPokeblockNames -_080527B8: .4byte gUnknown_082165F8 - thumb_func_end sub_8052530 - - thumb_func_start sub_80527BC -sub_80527BC: @ 80527BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x58 - ldr r0, _08052844 @ =gUnknown_020297DC - ldrb r0, [r0] - add r6, sp, 0x48 - cmp r0, 0x1 - bne _08052814 - movs r1, 0 - ldr r3, _08052848 @ =gUnknown_03004840 - movs r2, 0 -_080527D6: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9 - bls _080527D6 - bl Random - ldr r1, _0805284C @ =gUnknown_03004830 - strh r0, [r1] - ldr r1, _08052850 @ =gUnknown_020297E0 - movs r0, 0 - str r0, [r1] - ldr r1, _08052844 @ =gUnknown_020297DC - movs r0, 0x2 - strb r0, [r1] - movs r4, 0 - ldr r2, _08052854 @ =0x02000000 - movs r1, 0 -_08052800: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xC7 - bls _08052800 - ldr r1, _08052858 @ =gUnknown_020297E8 - movs r0, 0 - strb r0, [r1] -_08052814: - movs r4, 0 - movs r0, 0x1 - mov r8, r0 - ldr r7, _08052858 @ =gUnknown_020297E8 - ldr r5, _08052850 @ =gUnknown_020297E0 - ldr r1, _08052854 @ =0x02000000 - mov r9, r1 - ldr r3, _0805285C @ =gUnknown_020297E4 -_08052824: - str r3, [sp, 0x54] - bl Random - lsls r0, 16 - lsrs r0, 31 - mov r1, r8 - ands r0, r1 - ldr r3, [sp, 0x54] - ldrb r1, [r7] - cmp r0, r1 - bne _08052860 - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - b _0805287A - .align 2, 0 -_08052844: .4byte gUnknown_020297DC -_08052848: .4byte gUnknown_03004840 -_0805284C: .4byte gUnknown_03004830 -_08052850: .4byte gUnknown_020297E0 -_08052854: .4byte 0x02000000 -_08052858: .4byte gUnknown_020297E8 -_0805285C: .4byte gUnknown_020297E4 -_08052860: - ldr r2, [r3] - lsls r0, r2, 1 - add r0, r9 - ldr r1, [r5] - strh r1, [r0] - adds r2, 0x1 - str r2, [r3] - movs r0, 0 - str r0, [r5] - ldrb r0, [r7] - mov r1, r8 - eors r0, r1 - strb r0, [r7] -_0805287A: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x63 - bls _08052824 - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - ldr r0, _08052900 @ =gUnknown_03004830 - ldrh r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _08052904 @ =gUnknown_082165F8 - mov r0, sp - bl StringAppend - ldr r0, _08052908 @ =gUnknown_020297E0 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _0805290C @ =gUnknown_08216600 - mov r0, sp - bl StringAppend - ldr r4, _08052910 @ =gUnknown_020297DC - ldrb r0, [r4] - cmp r0, 0x3 - bne _080528E8 - ldr r0, _08052914 @ =gUnknown_020297E4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x10 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - movs r0, 0 - strb r0, [r4] -_080528E8: - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - add sp, 0x58 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052900: .4byte gUnknown_03004830 -_08052904: .4byte gUnknown_082165F8 -_08052908: .4byte gUnknown_020297E0 -_0805290C: .4byte gUnknown_08216600 -_08052910: .4byte gUnknown_020297DC -_08052914: .4byte gUnknown_020297E4 - thumb_func_end sub_80527BC - - thumb_func_start sub_8052918 -sub_8052918: @ 8052918 - push {r4-r6,lr} - sub sp, 0x4C - ldr r2, _08052A88 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - ldr r4, _08052A8C @ =gUnknown_03000560 - cmp r0, 0 - beq _0805294C - movs r1, 0xFA - lsls r1, 2 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - ldr r1, _08052A90 @ =0x75300000 - cmp r0, r1 - ble _08052946 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4, 0x1A] -_08052946: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_0805294C: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08052972 - ldr r1, _08052A94 @ =0xfffffc18 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - bge _0805296C - ldr r0, _08052A98 @ =0x00007530 - strh r0, [r4, 0x1A] -_0805296C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052972: - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08052992 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bge _0805298C - movs r0, 0x3 - strb r0, [r4] -_0805298C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052992: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529B4 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080529AE - movs r0, 0 - strb r0, [r4] -_080529AE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529B4: - ldrh r1, [r2, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080529E4 - adds r3, r4, 0 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r5, r3, 0x1 - adds r1, r5 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080529DE - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r5 - movs r1, 0x2A - strb r1, [r0] -_080529DE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529E4: - ldrh r1, [r2, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08052A16 - ldr r3, _08052A8C @ =gUnknown_03000560 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r4, r3, 0x1 - adds r1, r4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2A - ble _08052A10 - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r4 - movs r1, 0 - strb r1, [r0] -_08052A10: - ldrb r0, [r3, 0x10] - adds r0, 0x1 - strb r0, [r3, 0x10] -_08052A16: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052AA0 - movs r6, 0 - movs r4, 0 - ldr r5, _08052A8C @ =gUnknown_03000560 -_08052A26: - adds r0, r5, 0x1 - adds r2, r4, r0 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x2A - beq _08052A64 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r4, 1 - mov r1, sp - adds r1, r0 - adds r1, 0x4 - movs r0, 0 - ldrsb r0, [r2, r0] - strh r0, [r1] - add r0, sp, 0xC - lsls r1, r4, 4 - adds r0, r1 - movs r1, 0 - ldrsb r1, [r2, r1] - adds r1, 0x85 - lsls r1, 16 - lsrs r1, 16 - bl sub_804E844 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08052A26 -_08052A64: - cmp r6, 0x1 - bls _08052A9C - add r0, sp, 0xC - adds r1, r5, 0 - adds r1, 0x8 - lsls r2, r6, 24 - lsrs r2, 24 - adds r3, r5, 0 - adds r3, 0x11 - ldrh r4, [r5, 0x1A] - str r4, [sp] - bl sub_8050744 - ldrb r0, [r5, 0x10] - adds r0, 0x1 - strb r0, [r5, 0x10] - b _08052AA0 - .align 2, 0 -_08052A88: .4byte gMain -_08052A8C: .4byte gUnknown_03000560 -_08052A90: .4byte 0x75300000 -_08052A94: .4byte 0xfffffc18 -_08052A98: .4byte 0x00007530 -_08052A9C: - movs r0, 0xFF - strb r0, [r5, 0x8] -_08052AA0: - ldr r4, _08052AE8 @ =gUnknown_03000560 - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _08052AB0 - bl sub_8052530 - movs r0, 0 - strb r0, [r4, 0x10] -_08052AB0: - ldr r3, _08052AEC @ =gMain - ldrh r1, [r3, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08052AD4 - ldr r2, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r2] - adds r1, r0, 0 - cmp r1, 0 - bne _08052ADC - adds r0, 0x1 - strb r0, [r2] - ldr r0, _08052AF4 @ =gUnknown_020297E0 - str r1, [r0] - ldrh r0, [r3, 0x20] - bl SeedRng -_08052AD4: - ldr r0, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r0] - cmp r0, 0 - beq _08052AE0 -_08052ADC: - bl sub_80527BC -_08052AE0: - add sp, 0x4C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08052AE8: .4byte gUnknown_03000560 -_08052AEC: .4byte gMain -_08052AF0: .4byte gUnknown_020297DC -_08052AF4: .4byte gUnknown_020297E0 - thumb_func_end sub_8052918 - - thumb_func_start sub_8052AF8 -sub_8052AF8: @ 8052AF8 - push {lr} - bl sub_8052918 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8052AF8 - - thumb_func_start ShowBerryBlenderRecordWindow -ShowBerryBlenderRecordWindow: @ 8052B14 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x20 - movs r0, 0x6 - movs r1, 0x3 - movs r2, 0x17 - movs r3, 0x10 - bl MenuDrawTextWindow - ldr r0, _08052BBC @ =gMultiText_BerryBlenderMaxSpeedRecord - movs r1, 0x8 - movs r2, 0x4 - bl MenuPrint - ldr r0, _08052BC0 @ =gMultiText_2P3P4P - movs r1, 0x8 - movs r2, 0x9 - bl MenuPrint - movs r0, 0 - mov r8, r0 - ldr r0, _08052BC4 @ =gSaveBlock1 - movs r7, 0x90 - lsls r7, 20 - ldr r1, _08052BC8 @ =0x0000096c - adds r6, r0, r1 - movs r0, 0 - mov r9, r0 -_08052B50: - ldrh r4, [r6] - adds r0, r4, 0 - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - mov r0, sp - movs r2, 0x12 - movs r3, 0x1 - bl sub_8072C14 - adds r5, r0, 0 - mov r1, r9 - strb r1, [r5] - movs r0, 0xAD - strb r0, [r5, 0x1] - strb r1, [r5, 0x2] - adds r5, 0x3 - adds r0, r4, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - ldr r1, _08052BCC @ =gOtherText_RPM - bl StringAppend - lsrs r2, r7, 24 - mov r0, sp - movs r1, 0xF - bl MenuPrint - movs r0, 0x80 - lsls r0, 18 - adds r7, r0 - adds r6, 0x2 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x2 - ble _08052B50 - add sp, 0x20 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052BBC: .4byte gMultiText_BerryBlenderMaxSpeedRecord -_08052BC0: .4byte gMultiText_2P3P4P -_08052BC4: .4byte gSaveBlock1 -_08052BC8: .4byte 0x0000096c -_08052BCC: .4byte gOtherText_RPM - thumb_func_end ShowBerryBlenderRecordWindow - - thumb_func_start sub_8052BD0 -sub_8052BD0: @ 8052BD0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _08052C1C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08052BF6 - ldr r0, _08052C20 @ =0x0000016f - bl PlayFanfare - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08052BF6: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08052C16 - ldr r0, _08052C24 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08052C16: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08052C1C: .4byte gTasks -_08052C20: .4byte 0x0000016f -_08052C24: .4byte gUnknown_03004854 - thumb_func_end sub_8052BD0 diff --git a/asm/cable_car.s b/asm/cable_car.s index e4d989844..385cd404d 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -256,22 +256,22 @@ _081233EC: ldr r0, _0812345C @ =gCableCarMtChimneyTilemap ldr r4, _08123460 @ =0x02019000 adds r1, r4, 0 - bl sub_800D238 + bl LZDecompressWram ldr r0, _08123464 @ =gCableCarTreeTilemap movs r2, 0xB4 lsls r2, 1 adds r1, r4, r2 - bl sub_800D238 + bl LZDecompressWram ldr r0, _08123468 @ =gCableCarMountainTilemap movs r2, 0xA5 lsls r2, 3 adds r1, r4, r2 - bl sub_800D238 + bl LZDecompressWram ldr r0, _0812346C @ =gCableCarPylonStemTilemap ldr r1, _08123470 @ =0x000009d8 adds r4, r1 adds r1, r4, 0 - bl sub_800D238 + bl LZDecompressWram ldr r0, _08123474 @ =gCableCarBG_Pal movs r1, 0 movs r2, 0x80 diff --git a/asm/cable_club.s b/asm/cable_club.s deleted file mode 100644 index 68804ca21..000000000 --- a/asm/cable_club.s +++ /dev/null @@ -1,1671 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8082CD4 -sub_8082CD4: @ 8082CD4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r4, _08082D10 @ =sub_8082F20 - adds r0, r4, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08082D08 - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08082D14 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r6, [r1, 0xA] - strh r5, [r1, 0xC] -_08082D08: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08082D10: .4byte sub_8082F20 -_08082D14: .4byte gTasks - thumb_func_end sub_8082CD4 - - thumb_func_start sub_8082D18 -sub_8082D18: @ 8082D18 - push {lr} - adds r1, r0, 0 - ldr r0, _08082D44 @ =gStringVar1 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - movs r0, 0x12 - movs r1, 0xA - movs r2, 0x1C - movs r3, 0xD - bl MenuDrawTextWindow - ldr r0, _08082D48 @ =gOtherText_PLink - movs r1, 0x13 - movs r2, 0xB - movs r3, 0x48 - bl sub_8072BD8 - pop {r0} - bx r0 - .align 2, 0 -_08082D44: .4byte gStringVar1 -_08082D48: .4byte gOtherText_PLink - thumb_func_end sub_8082D18 - - thumb_func_start sub_8082D4C -sub_8082D4C: @ 8082D4C - push {lr} - movs r0, 0x12 - movs r1, 0xA - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end sub_8082D4C - - thumb_func_start sub_8082D60 -sub_8082D60: @ 8082D60 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08082D88 @ =gTasks + 0x8 - adds r1, r0 - adds r5, r1, 0x6 - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r4, r0 - beq _08082D94 - cmp r4, 0x1 - bhi _08082D8C - bl sub_8082D4C - b _08082D92 - .align 2, 0 -_08082D88: .4byte gTasks + 0x8 -_08082D8C: - adds r0, r4, 0 - bl sub_8082D18 -_08082D92: - strh r4, [r5] -_08082D94: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082D60 - - thumb_func_start sub_8082D9C -sub_8082D9C: @ 8082D9C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - bl GetLinkPlayerDataExchangeStatusTimed - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _08082DEC - cmp r0, 0x2 - bgt _08082DBC - cmp r0, 0x1 - beq _08082DC2 - b _08082DEC -_08082DBC: - cmp r0, 0x3 - beq _08082DE8 - b _08082DEC -_08082DC2: - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r4, r1 - bgt _08082DD6 - cmp r1, r5 - bgt _08082DD6 - movs r0, 0x1 - b _08082DEE -_08082DD6: - ldr r0, _08082DE4 @ =gStringVar1 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - movs r0, 0x4 - b _08082DEE - .align 2, 0 -_08082DE4: .4byte gStringVar1 -_08082DE8: - movs r0, 0x3 - b _08082DEE -_08082DEC: - movs r0, 0 -_08082DEE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8082D9C - - thumb_func_start sub_8082DF4 -sub_8082DF4: @ 8082DF4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl HasLinkErrorOccurred - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08082E0A - movs r0, 0 - b _08082E1A -_08082E0A: - ldr r0, _08082E20 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08082E24 @ =sub_8083418 - str r0, [r1] - movs r0, 0x1 -_08082E1A: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08082E20: .4byte gTasks -_08082E24: .4byte sub_8083418 - thumb_func_end sub_8082DF4 - - thumb_func_start sub_8082E28 -sub_8082E28: @ 8082E28 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08082E58 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08082E64 - bl IsLinkConnectionEstablished - lsls r0, 24 - cmp r0, 0 - bne _08082E64 - ldr r0, _08082E5C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08082E60 @ =sub_80833EC - str r0, [r1] - movs r0, 0x1 - b _08082E66 - .align 2, 0 -_08082E58: .4byte gMain -_08082E5C: .4byte gTasks -_08082E60: .4byte sub_80833EC -_08082E64: - movs r0, 0 -_08082E66: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8082E28 - - thumb_func_start sub_8082E6C -sub_8082E6C: @ 8082E6C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsLinkConnectionEstablished - lsls r0, 24 - cmp r0, 0 - beq _08082E82 - movs r0, 0x1 - bl SetSuppressLinkErrorMessage -_08082E82: - ldr r0, _08082E94 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08082E98 - movs r0, 0 - b _08082EA8 - .align 2, 0 -_08082E94: .4byte gMain -_08082E98: - ldr r0, _08082EB0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08082EB4 @ =sub_80833EC - str r0, [r1] - movs r0, 0x1 -_08082EA8: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08082EB0: .4byte gTasks -_08082EB4: .4byte sub_80833EC - thumb_func_end sub_8082E6C - - thumb_func_start sub_8082EB8 -sub_8082EB8: @ 8082EB8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl GetSioMultiSI - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08082ECE - movs r0, 0 - b _08082EDE -_08082ECE: - ldr r0, _08082EE4 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08082EE8 @ =sub_8083418 - str r0, [r1] - movs r0, 0x1 -_08082EDE: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08082EE4: .4byte gTasks -_08082EE8: .4byte sub_8083418 - thumb_func_end sub_8082EB8 - - thumb_func_start unref_sub_8082EEC -unref_sub_8082EEC: @ 8082EEC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08082F1C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _08082F16 - movs r0, 0x2 - bl sub_8007E9C - adds r0, r4, 0 - bl DestroyTask -_08082F16: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08082F1C: .4byte gTasks - thumb_func_end unref_sub_8082EEC - - thumb_func_start sub_8082F20 -sub_8082F20: @ 8082F20 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08082F48 @ =gTasks + 0x8 - adds r4, r1, r0 - movs r3, 0 - ldrsh r2, [r4, r3] - cmp r2, 0 - bne _08082F4C - bl OpenLinkTimed - bl sub_80082EC - bl ResetLinkPlayers - b _08082F58 - .align 2, 0 -_08082F48: .4byte gTasks + 0x8 -_08082F4C: - cmp r2, 0x9 - ble _08082F58 - subs r0, 0x8 - adds r0, r1, r0 - ldr r1, _08082F64 @ =sub_8082F68 - str r1, [r0] -_08082F58: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08082F64: .4byte sub_8082F68 - thumb_func_end sub_8082F20 - - thumb_func_start sub_8082F68 -sub_8082F68: @ 8082F68 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - bl sub_8082E28 - cmp r0, 0x1 - beq _08082FDC - adds r0, r4, 0 - bl sub_8082E6C - cmp r0, 0x1 - beq _08082FDC - cmp r5, 0x1 - bls _08082FDC - movs r0, 0x1 - bl SetSuppressLinkErrorMessage - ldr r1, _08082FC0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r1 - movs r0, 0 - strh r0, [r4, 0xE] - bl IsLinkMaster - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08082FCC - movs r0, 0x15 - bl PlaySE - ldr r0, _08082FC4 @ =gUnknown_081A4932 - bl ShowFieldAutoScrollMessage - ldr r0, _08082FC8 @ =sub_8082FEC - b _08082FDA - .align 2, 0 -_08082FC0: .4byte gTasks -_08082FC4: .4byte gUnknown_081A4932 -_08082FC8: .4byte sub_8082FEC -_08082FCC: - movs r0, 0x16 - bl PlaySE - ldr r0, _08082FE4 @ =gUnknown_081A49B6 - bl ShowFieldAutoScrollMessage - ldr r0, _08082FE8 @ =sub_80831F8 -_08082FDA: - str r0, [r4] -_08082FDC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08082FE4: .4byte gUnknown_081A49B6 -_08082FE8: .4byte sub_80831F8 - thumb_func_end sub_8082F68 - - thumb_func_start sub_8082FEC -sub_8082FEC: @ 8082FEC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_8082E28 - cmp r0, 0x1 - beq _0808302C - adds r0, r4, 0 - bl sub_8082EB8 - cmp r0, 0x1 - beq _0808302C - adds r0, r4, 0 - bl sub_8082DF4 - cmp r0, 0x1 - beq _0808302C - bl GetFieldMessageBoxMode - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _0808302C - ldr r0, _08083034 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - strh r2, [r1, 0xE] - ldr r0, _08083038 @ =sub_808303C - str r0, [r1] -_0808302C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08083034: .4byte gTasks -_08083038: .4byte sub_808303C - thumb_func_end sub_8082FEC - -.section .text_80830E4 - - - - - - - - - - thumb_func_start sub_80833C4 -sub_80833C4: @ 80833C4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080833E8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080833E0 - bl sub_8082D4C - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_080833E0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080833E8: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_80833C4 - - thumb_func_start sub_80833EC -sub_80833EC: @ 80833EC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _08083414 @ =gScriptResult - movs r0, 0x5 - strh r0, [r1] - bl sub_8082D4C - bl HideFieldMessageBox - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08083414: .4byte gScriptResult - thumb_func_end sub_80833EC - - thumb_func_start sub_8083418 -sub_8083418: @ 8083418 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _08083440 @ =gScriptResult - movs r0, 0x6 - strh r0, [r1] - bl sub_8082D4C - bl HideFieldMessageBox - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08083440: .4byte gScriptResult - thumb_func_end sub_8083418 - - thumb_func_start sub_8083444 -sub_8083444: @ 8083444 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08083468 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r0, [r2, 0x10] - adds r0, 0x1 - strh r0, [r2, 0x10] - lsls r0, 16 - movs r1, 0x96 - lsls r1, 18 - cmp r0, r1 - bgt _0808346C - movs r0, 0 - b _08083472 - .align 2, 0 -_08083468: .4byte gTasks -_0808346C: - ldr r0, _08083478 @ =sub_8083418 - str r0, [r2] - movs r0, 0x1 -_08083472: - pop {r1} - bx r1 - .align 2, 0 -_08083478: .4byte sub_8083418 - thumb_func_end sub_8083444 - - thumb_func_start sub_808347C -sub_808347C: @ 808347C - push {r4,lr} - movs r3, 0x2 - movs r2, 0x2 - ldr r0, _08083494 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0x2 - beq _080834B0 - cmp r0, 0x2 - bgt _08083498 - cmp r0, 0x1 - beq _0808349E - b _080834CC - .align 2, 0 -_08083494: .4byte gSpecialVar_0x8004 -_08083498: - cmp r0, 0x5 - beq _080834C0 - b _080834CC -_0808349E: - movs r3, 0x2 - ldr r1, _080834A8 @ =gLinkType - ldr r4, _080834AC @ =0x00002233 - b _080834C8 - .align 2, 0 -_080834A8: .4byte gLinkType -_080834AC: .4byte 0x00002233 -_080834B0: - movs r3, 0x2 - ldr r1, _080834B8 @ =gLinkType - ldr r4, _080834BC @ =0x00002244 - b _080834C8 - .align 2, 0 -_080834B8: .4byte gLinkType -_080834BC: .4byte 0x00002244 -_080834C0: - movs r3, 0x4 - movs r2, 0x4 - ldr r1, _080834DC @ =gLinkType - ldr r4, _080834E0 @ =0x00002255 -_080834C8: - adds r0, r4, 0 - strh r0, [r1] -_080834CC: - adds r0, r3, 0 - adds r1, r2, 0 - bl sub_8082CD4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080834DC: .4byte gLinkType -_080834E0: .4byte 0x00002255 - thumb_func_end sub_808347C - - thumb_func_start sub_80834E4 -sub_80834E4: @ 80834E4 - push {lr} - ldr r1, _08083500 @ =gLinkType - ldr r2, _08083504 @ =0x00001133 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _08083508 @ =gBattleTypeFlags - movs r0, 0 - strh r0, [r1] - movs r0, 0x2 - movs r1, 0x2 - bl sub_8082CD4 - pop {r0} - bx r0 - .align 2, 0 -_08083500: .4byte gLinkType -_08083504: .4byte 0x00001133 -_08083508: .4byte gBattleTypeFlags - thumb_func_end sub_80834E4 - - thumb_func_start sub_808350C -sub_808350C: @ 808350C - push {lr} - ldr r0, _0808352C @ =gScriptResult - movs r2, 0 - strh r2, [r0] - ldr r1, _08083530 @ =gLinkType - ldr r3, _08083534 @ =0x00003311 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _08083538 @ =gBattleTypeFlags - strh r2, [r0] - movs r0, 0x2 - movs r1, 0x4 - bl sub_8082CD4 - pop {r0} - bx r0 - .align 2, 0 -_0808352C: .4byte gScriptResult -_08083530: .4byte gLinkType -_08083534: .4byte 0x00003311 -_08083538: .4byte gBattleTypeFlags - thumb_func_end sub_808350C - - thumb_func_start sub_808353C -sub_808353C: @ 808353C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0808355C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08083560 - cmp r0, 0x1 - beq _080835BC - b _080835CE - .align 2, 0 -_0808355C: .4byte gTasks -_08083560: - ldr r0, _08083594 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - bne _08083586 - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - cmp r1, r0 - bge _08083586 - ldr r2, _08083598 @ =gLinkPlayers -_08083578: - ldrh r4, [r2, 0x1A] - cmp r4, 0x1 - beq _0808359C - adds r2, 0x1C - adds r1, 0x1 - cmp r1, r0 - blt _08083578 -_08083586: - bl EnableBothScriptContexts - adds r0, r5, 0 - bl DestroyTask - b _080835CE - .align 2, 0 -_08083594: .4byte gScriptResult -_08083598: .4byte gLinkPlayers -_0808359C: - ldr r1, _080835B4 @ =gScriptResult - movs r0, 0x7 - strh r0, [r1] - bl sub_8008480 - ldr r1, _080835B8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - b _080835CE - .align 2, 0 -_080835B4: .4byte gScriptResult -_080835B8: .4byte gTasks -_080835BC: - ldr r0, _080835D4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080835CE - bl EnableBothScriptContexts - adds r0, r5, 0 - bl DestroyTask -_080835CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080835D4: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_808353C - - thumb_func_start sub_80835D8 -sub_80835D8: @ 80835D8 - push {r4,lr} - ldr r4, _0808360C @ =sub_808353C - adds r0, r4, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _08083604 - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _08083610 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] -_08083604: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808360C: .4byte sub_808353C -_08083610: .4byte gTasks - thumb_func_end sub_80835D8 - - thumb_func_start sub_8083614 -sub_8083614: @ 8083614 - push {lr} - ldr r1, _08083630 @ =gLinkType - ldr r2, _08083634 @ =0x00004411 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _08083638 @ =gBattleTypeFlags - movs r0, 0 - strh r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - bl sub_8082CD4 - pop {r0} - bx r0 - .align 2, 0 -_08083630: .4byte gLinkType -_08083634: .4byte 0x00004411 -_08083638: .4byte gBattleTypeFlags - thumb_func_end sub_8083614 - - thumb_func_start sub_808363C -sub_808363C: @ 808363C - push {lr} - ldr r1, _08083658 @ =gLinkType - ldr r2, _0808365C @ =0x00006601 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _08083660 @ =gBattleTypeFlags - movs r0, 0 - strh r0, [r1] - movs r0, 0x4 - movs r1, 0x4 - bl sub_8082CD4 - pop {r0} - bx r0 - .align 2, 0 -_08083658: .4byte gLinkType -_0808365C: .4byte 0x00006601 -_08083660: .4byte gBattleTypeFlags - thumb_func_end sub_808363C - - thumb_func_start sub_8083664 -sub_8083664: @ 8083664 - push {lr} - ldr r0, _08083678 @ =sub_8083710 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _0808367C - movs r0, 0xFF - b _08083700 - .align 2, 0 -_08083678: .4byte sub_8083710 -_0808367C: - ldr r0, _08083690 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - subs r0, 0x1 - cmp r0, 0x4 - bhi _080836F4 - lsls r0, 2 - ldr r1, _08083694 @ =_08083698 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08083690: .4byte gSpecialVar_0x8004 -_08083694: .4byte _08083698 - .align 2, 0 -_08083698: - .4byte _080836AC - .4byte _080836BC - .4byte _080836DC - .4byte _080836EC - .4byte _080836CC -_080836AC: - ldr r1, _080836B4 @ =gLinkType - ldr r2, _080836B8 @ =0x00002233 - b _080836F0 - .align 2, 0 -_080836B4: .4byte gLinkType -_080836B8: .4byte 0x00002233 -_080836BC: - ldr r1, _080836C4 @ =gLinkType - ldr r2, _080836C8 @ =0x00002244 - b _080836F0 - .align 2, 0 -_080836C4: .4byte gLinkType -_080836C8: .4byte 0x00002244 -_080836CC: - ldr r1, _080836D4 @ =gLinkType - ldr r2, _080836D8 @ =0x00002255 - b _080836F0 - .align 2, 0 -_080836D4: .4byte gLinkType -_080836D8: .4byte 0x00002255 -_080836DC: - ldr r1, _080836E4 @ =gLinkType - ldr r2, _080836E8 @ =0x00001111 - b _080836F0 - .align 2, 0 -_080836E4: .4byte gLinkType -_080836E8: .4byte 0x00001111 -_080836EC: - ldr r1, _08083704 @ =gLinkType - ldr r2, _08083708 @ =0x00003322 -_080836F0: - adds r0, r2, 0 - strh r0, [r1] -_080836F4: - ldr r0, _0808370C @ =sub_8083710 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 -_08083700: - pop {r1} - bx r1 - .align 2, 0 -_08083704: .4byte gLinkType -_08083708: .4byte 0x00003322 -_0808370C: .4byte sub_8083710 - thumb_func_end sub_8083664 - - thumb_func_start sub_8083710 -sub_8083710: @ 8083710 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0808373C @ =gTasks + 0x8 - adds r4, r1, r0 - movs r3, 0 - ldrsh r2, [r4, r3] - cmp r2, 0 - bne _08083744 - bl OpenLink - bl ResetLinkPlayers - ldr r0, _08083740 @ =sub_8083C50 - movs r1, 0x50 - bl CreateTask - b _08083750 - .align 2, 0 -_0808373C: .4byte gTasks + 0x8 -_08083740: .4byte sub_8083C50 -_08083744: - cmp r2, 0x9 - ble _08083750 - subs r0, 0x8 - adds r0, r1, r0 - ldr r1, _0808375C @ =sub_8083760 - str r1, [r0] -_08083750: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808375C: .4byte sub_8083760 - thumb_func_end sub_8083710 - - thumb_func_start sub_8083760 -sub_8083760: @ 8083760 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080837A6 - bl IsLinkMaster - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08083798 - ldr r0, _08083790 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08083794 @ =sub_80837B4 - b _080837A4 - .align 2, 0 -_08083790: .4byte gTasks -_08083794: .4byte sub_80837B4 -_08083798: - ldr r0, _080837AC @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080837B0 @ =sub_80837EC -_080837A4: - str r0, [r1] -_080837A6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080837AC: .4byte gTasks -_080837B0: .4byte sub_80837EC - thumb_func_end sub_8083760 - - thumb_func_start sub_80837B4 -sub_80837B4: @ 80837B4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_800820C - adds r4, r0, 0 - bl GetLinkPlayerCount_2 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080837DE - bl sub_8007F4C - ldr r0, _080837E4 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080837E8 @ =sub_80837EC - str r0, [r1] -_080837DE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080837E4: .4byte gTasks -_080837E8: .4byte sub_80837EC - thumb_func_end sub_80837B4 - - thumb_func_start sub_80837EC -sub_80837EC: @ 80837EC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808381C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _08083814 - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08083814 - bl sub_800826C - bl sub_8007B14 - adds r0, r4, 0 - bl DestroyTask -_08083814: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808381C: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_80837EC - - thumb_func_start sub_8083820 -sub_8083820: @ 8083820 - push {lr} - bl InitSaveDialog - pop {r0} - bx r0 - thumb_func_end sub_8083820 - - thumb_func_start sub_808382C -sub_808382C: @ 808382C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08083850 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _08083846 - b _08083940 -_08083846: - lsls r0, 2 - ldr r1, _08083854 @ =_08083858 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08083850: .4byte gTasks -_08083854: .4byte _08083858 - .align 2, 0 -_08083858: - .4byte _08083870 - .4byte _08083890 - .4byte _080838A0 - .4byte _080838B0 - .4byte _080838B6 - .4byte _080838CC -_08083870: - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _08083888 @ =gLinkType - ldr r2, _0808388C @ =0x00002211 - adds r0, r2, 0 - strh r0, [r1] - bl ClearLinkCallback_2 - b _080838BE - .align 2, 0 -_08083888: .4byte gLinkType -_0808388C: .4byte 0x00002211 -_08083890: - ldr r0, _0808389C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - b _080838BA - .align 2, 0 -_0808389C: .4byte gPaletteFade -_080838A0: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08083940 - b _080838BE -_080838B0: - bl sub_800832C - b _080838BE -_080838B6: - ldr r0, _080838C8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] -_080838BA: - cmp r0, 0 - bne _08083940 -_080838BE: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08083940 - .align 2, 0 -_080838C8: .4byte gReceivedRemoteLinkPlayers -_080838CC: - ldr r0, _080838E4 @ =gLinkPlayers - ldr r0, [r0, 0x4] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080838E8 - movs r0, 0xE6 - lsls r0, 1 - bl current_map_music_set__default_for_battle - b _080838EE - .align 2, 0 -_080838E4: .4byte gLinkPlayers -_080838E8: - ldr r0, _08083900 @ =0x000001cb - bl current_map_music_set__default_for_battle -_080838EE: - ldr r0, _08083904 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0x2 - beq _08083918 - cmp r0, 0x2 - bgt _08083908 - cmp r0, 0x1 - beq _0808390E - b _0808392E - .align 2, 0 -_08083900: .4byte 0x000001cb -_08083904: .4byte gSpecialVar_0x8004 -_08083908: - cmp r0, 0x5 - beq _08083924 - b _0808392E -_0808390E: - ldr r1, _08083914 @ =gBattleTypeFlags - movs r0, 0xA - b _0808392C - .align 2, 0 -_08083914: .4byte gBattleTypeFlags -_08083918: - ldr r1, _08083920 @ =gBattleTypeFlags - movs r0, 0xB - b _0808392C - .align 2, 0 -_08083920: .4byte gBattleTypeFlags -_08083924: - bl ReducePlayerPartyToThree - ldr r1, _08083948 @ =gBattleTypeFlags - movs r0, 0x4B -_0808392C: - strh r0, [r1] -_0808392E: - ldr r0, _0808394C @ =sub_800E7C4 - bl SetMainCallback2 - ldr r1, _08083950 @ =gMain - ldr r0, _08083954 @ =sub_8083958 - str r0, [r1, 0x8] - adds r0, r5, 0 - bl DestroyTask -_08083940: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08083948: .4byte gBattleTypeFlags -_0808394C: .4byte sub_800E7C4 -_08083950: .4byte gMain -_08083954: .4byte sub_8083958 - thumb_func_end sub_808382C - - thumb_func_start sub_8083958 -sub_8083958: @ 8083958 - push {lr} - bl call_map_music_set_to_zero - bl LoadPlayerParty - bl SavePlayerBag - bl sub_810FEFC - ldr r0, _08083990 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0x5 - beq _0808397E - ldr r0, _08083994 @ =gUnknown_03004860 - ldrb r1, [r0] - movs r0, 0x1 - eors r0, r1 - bl UpdateLinkBattleRecords -_0808397E: - ldr r0, _08083998 @ =gMain - ldr r1, _0808399C @ =sub_805465C - str r1, [r0, 0x8] - ldr r0, _080839A0 @ =sub_8071B28 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08083990: .4byte gSpecialVar_0x8004 -_08083994: .4byte gUnknown_03004860 -_08083998: .4byte gMain -_0808399C: .4byte sub_805465C -_080839A0: .4byte sub_8071B28 - thumb_func_end sub_8083958 - - thumb_func_start sub_80839A4 -sub_80839A4: @ 80839A4 - push {lr} - ldr r0, _080839CC @ =gSpecialVar_0x8004 - ldrh r1, [r0] - subs r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080839B8 - cmp r1, 0x5 - bne _080839C0 -_080839B8: - bl LoadPlayerParty - bl SavePlayerBag -_080839C0: - movs r0, 0x7F - bl copy_saved_warp2_bank_and_enter_x_to_warp1 - pop {r0} - bx r0 - .align 2, 0 -_080839CC: .4byte gSpecialVar_0x8004 - thumb_func_end sub_80839A4 - - thumb_func_start sub_80839D0 -sub_80839D0: @ 80839D0 - push {lr} - bl sub_805559C - pop {r0} - bx r0 - thumb_func_end sub_80839D0 - - thumb_func_start sub_80839DC -sub_80839DC: @ 80839DC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08083A00 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08083A20 - cmp r0, 0x1 - bgt _08083A04 - cmp r0, 0 - beq _08083A0E - b _08083A7E - .align 2, 0 -_08083A00: .4byte gTasks -_08083A04: - cmp r0, 0x2 - beq _08083A40 - cmp r0, 0x3 - beq _08083A68 - b _08083A7E -_08083A0E: - ldr r0, _08083A1C @ =gUnknown_081A490C - bl ShowFieldMessage - movs r0, 0x1 - strh r0, [r5, 0x8] - b _08083A7E - .align 2, 0 -_08083A1C: .4byte gUnknown_081A490C -_08083A20: - bl IsFieldMessageBoxHidden - lsls r0, 24 - cmp r0, 0 - beq _08083A7E - bl sub_8055574 - ldr r0, _08083A3C @ =gSpecialVar_0x8005 - ldrb r0, [r0] - bl sub_8007270 - movs r0, 0x2 - strh r0, [r5, 0x8] - b _08083A7E - .align 2, 0 -_08083A3C: .4byte gSpecialVar_0x8005 -_08083A40: - bl sub_80554F8 - cmp r0, 0x1 - beq _08083A52 - cmp r0, 0x1 - ble _08083A7E - cmp r0, 0x2 - beq _08083A62 - b _08083A7E -_08083A52: - bl HideFieldMessageBox - movs r0, 0 - strh r0, [r5, 0x8] - adds r0, r4, 0 - bl SwitchTaskToFollowupFunc - b _08083A7E -_08083A62: - movs r0, 0x3 - strh r0, [r5, 0x8] - b _08083A7E -_08083A68: - bl sub_8055588 - bl HideFieldMessageBox - bl MenuZeroFillScreen - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts -_08083A7E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80839DC - - thumb_func_start sub_8083A84 -sub_8083A84: @ 8083A84 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _08083AA8 @ =sub_80839DC - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - adds r2, r5, 0 - bl SetTaskFuncWithFollowupFunc - bl ScriptContext1_Stop - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08083AA8: .4byte sub_80839DC - thumb_func_end sub_8083A84 - - thumb_func_start sub_8083AAC -sub_8083AAC: @ 8083AAC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08083AD0 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08083AF0 - cmp r0, 0x1 - bgt _08083AD4 - cmp r0, 0 - beq _08083ADE - b _08083B34 - .align 2, 0 -_08083AD0: .4byte gTasks -_08083AD4: - cmp r0, 0x2 - beq _08083B04 - cmp r0, 0x3 - beq _08083B20 - b _08083B34 -_08083ADE: - bl ScriptContext2_Enable - movs r0, 0x1 - movs r1, 0 - bl fade_screen - bl ClearLinkCallback_2 - b _08083B14 -_08083AF0: - ldr r0, _08083B00 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08083B34 - b _08083B14 - .align 2, 0 -_08083B00: .4byte gPaletteFade -_08083B04: - ldr r1, _08083B1C @ =gUnknown_020297D8 - movs r0, 0 - strb r0, [r1] - strb r0, [r1, 0x1] - bl m4aMPlayAllStop - bl sub_800832C -_08083B14: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08083B34 - .align 2, 0 -_08083B1C: .4byte gUnknown_020297D8 -_08083B20: - ldr r0, _08083B3C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08083B34 - ldr r0, _08083B40 @ =sub_8047CD8 - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_08083B34: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08083B3C: .4byte gReceivedRemoteLinkPlayers -_08083B40: .4byte sub_8047CD8 - thumb_func_end sub_8083AAC - - thumb_func_start sub_8083B44 -sub_8083B44: @ 8083B44 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8083B6C - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8083B44 - - thumb_func_start sub_8083B5C -sub_8083B5C: @ 8083B5C - push {lr} - ldr r0, _08083B68 @ =sub_8083B44 - bl sub_8083A84 - pop {r0} - bx r0 - .align 2, 0 -_08083B68: .4byte sub_8083B44 - thumb_func_end sub_8083B5C - - thumb_func_start sub_8083B6C -sub_8083B6C: @ 8083B6C - push {lr} - ldr r0, _08083B7C @ =sub_8083AAC - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08083B7C: .4byte sub_8083AAC - thumb_func_end sub_8083B6C - - thumb_func_start sub_8083B80 -sub_8083B80: @ 8083B80 - push {lr} - bl sub_8083B6C - bl ScriptContext1_Stop - pop {r0} - bx r0 - thumb_func_end sub_8083B80 - - thumb_func_start sub_8083B90 -sub_8083B90: @ 8083B90 - push {lr} - ldr r0, _08083BA4 @ =gLinkType - ldr r2, _08083BA8 @ =0x00002211 - adds r1, r2, 0 - strh r1, [r0] - ldr r0, _08083BAC @ =sub_808382C - bl sub_8083A84 - pop {r0} - bx r0 - .align 2, 0 -_08083BA4: .4byte gLinkType -_08083BA8: .4byte 0x00002211 -_08083BAC: .4byte sub_808382C - thumb_func_end sub_8083B90 - - thumb_func_start unref_sub_8083BB0 -unref_sub_8083BB0: @ 8083BB0 - push {r4,lr} - ldr r4, _08083BD4 @ =sub_80839DC - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08083BD8 @ =Task_RecordMixing_Main - adds r1, r4, 0 - bl SetTaskFuncWithFollowupFunc - bl ScriptContext1_Stop - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08083BD4: .4byte sub_80839DC -_08083BD8: .4byte Task_RecordMixing_Main - thumb_func_end unref_sub_8083BB0 - - thumb_func_start sub_8083BDC -sub_8083BDC: @ 8083BDC - push {lr} - ldr r0, _08083BEC @ =gSpecialVar_0x8006 - ldrb r0, [r0] - ldr r1, _08083BF0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl sub_8093130 - pop {r0} - bx r0 - .align 2, 0 -_08083BEC: .4byte gSpecialVar_0x8006 -_08083BF0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_8083BDC - - thumb_func_start sub_8083BF4 -sub_8083BF4: @ 8083BF4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08083C34 @ =gSpecialVar_0x8006 - strh r4, [r0] - ldr r0, _08083C38 @ =gStringVar1 - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 2 - ldr r2, _08083C3C @ =gLinkPlayers + 0x8 - adds r1, r2 - bl StringCopy - adds r0, r4, 0 - bl sub_80934C4 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08083C48 - ldr r0, _08083C40 @ =gStringVar2 - ldr r2, _08083C44 @ =gTrainerCardColorNames - subs r1, 0x1 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - movs r0, 0x1 - b _08083C4A - .align 2, 0 -_08083C34: .4byte gSpecialVar_0x8006 -_08083C38: .4byte gStringVar1 -_08083C3C: .4byte gLinkPlayers + 0x8 -_08083C40: .4byte gStringVar2 -_08083C44: .4byte gTrainerCardColorNames -_08083C48: - movs r0, 0 -_08083C4A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8083BF4 - - thumb_func_start sub_8083C50 -sub_8083C50: @ 8083C50 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08083C98 @ =gTasks - adds r0, r1 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - movs r0, 0x96 - lsls r0, 17 - cmp r1, r0 - ble _08083C82 - bl CloseLink - ldr r0, _08083C9C @ =CB2_LinkError - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08083C82: - ldr r0, _08083CA0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08083C90 - adds r0, r5, 0 - bl DestroyTask -_08083C90: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08083C98: .4byte gTasks -_08083C9C: .4byte CB2_LinkError -_08083CA0: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_8083C50 - - thumb_func_start sub_8083CA4 -sub_8083CA4: @ 8083CA4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08083CC4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08083CBC - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_08083CBC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08083CC4: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_8083CA4 - - thumb_func_start unref_sub_8083CC8 -unref_sub_8083CC8: @ 8083CC8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_800832C - ldr r1, _08083CE8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08083CEC @ =sub_8083CA4 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08083CE8: .4byte gTasks -_08083CEC: .4byte sub_8083CA4 - thumb_func_end unref_sub_8083CC8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/contest.s b/asm/contest.s index 4a85f3d16..c5dfe3e2e 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -6904,7 +6904,7 @@ sub_80AE9FC: @ 80AE9FC adds r0, r5, 0 mov r1, r8 adds r2, r6, 0 - bl species_and_otid_get_pal + bl GetMonSpritePalFromOtIdPersonality movs r1, 0x90 lsls r1, 1 movs r2, 0x20 diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 93dd26eee..b91a9665b 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -1361,7 +1361,7 @@ _080C2B14: adds r0, r6, 0 ldr r1, [sp, 0xC] adds r2, r4, 0 - bl sub_80409C8 + bl GetMonSpritePalStructFromOtIdPersonality adds r4, r0, 0 bl LoadCompressedObjectPalette adds r0, r6, 0 @@ -1601,7 +1601,7 @@ _080C2D42: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl GetNationalPokedexFlag + bl GetSetPokedexFlag adds r5, 0x40 subs r4, 0x1 cmp r4, 0 diff --git a/asm/cute_sketch.s b/asm/cute_sketch.s index afacc19f6..14c28327d 100644 --- a/asm/cute_sketch.s +++ b/asm/cute_sketch.s @@ -6,445 +6,6 @@ .text - thumb_func_start sub_80FC7A0 -sub_80FC7A0: @ 80FC7A0 - push {lr} - ldr r2, _080FC7E8 @ =gUnknown_03005DEC - ldr r1, [r0, 0x4] - str r1, [r2] - ldr r2, _080FC7EC @ =gUnknown_03005E00 - ldrb r1, [r0, 0x1F] - strb r1, [r2] - ldr r2, _080FC7F0 @ =gUnknown_03005DE8 - ldrb r1, [r0, 0x19] - strb r1, [r2] - ldr r2, _080FC7F4 @ =gUnknown_03005DFC - ldrb r1, [r0, 0x1A] - strb r1, [r2] - ldr r2, _080FC7F8 @ =gUnknown_03005DF8 - ldrb r1, [r0, 0x1B] - strb r1, [r2] - ldr r2, _080FC7FC @ =gUnknown_03005DF0 - ldrb r1, [r0, 0x1C] - strb r1, [r2] - ldr r2, _080FC800 @ =gUnknown_03005E04 - ldrb r1, [r0, 0x1D] - strb r1, [r2] - ldr r2, _080FC804 @ =gUnknown_03005DF4 - ldrb r1, [r0, 0x1E] - strb r1, [r2] - ldrb r0, [r0] - subs r0, 0x2 - cmp r0, 0x22 - bls _080FC7DC - b _080FC928 -_080FC7DC: - lsls r0, 2 - ldr r1, _080FC808 @ =_080FC80C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FC7E8: .4byte gUnknown_03005DEC -_080FC7EC: .4byte gUnknown_03005E00 -_080FC7F0: .4byte gUnknown_03005DE8 -_080FC7F4: .4byte gUnknown_03005DFC -_080FC7F8: .4byte gUnknown_03005DF8 -_080FC7FC: .4byte gUnknown_03005DF0 -_080FC800: .4byte gUnknown_03005E04 -_080FC804: .4byte gUnknown_03005DF4 -_080FC808: .4byte _080FC80C - .align 2, 0 -_080FC80C: - .4byte _080FC898 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC8F8 - .4byte _080FC928 - .4byte _080FC89E - .4byte _080FC8A4 - .4byte _080FC8B8 - .4byte _080FC8CA - .4byte _080FC928 - .4byte _080FC8E0 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC8E6 - .4byte _080FC8C4 - .4byte _080FC8EC - .4byte _080FC8F2 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC904 -_080FC898: - bl sub_80FCAA4 - b _080FC928 -_080FC89E: - bl sub_80FCB5C - b _080FC928 -_080FC8A4: - bl sub_80FCD54 - ldr r0, _080FC8B4 @ =gUnknown_03005E00 - ldrb r0, [r0] - bl sub_80FCC18 - b _080FC928 - .align 2, 0 -_080FC8B4: .4byte gUnknown_03005E00 -_080FC8B8: - bl sub_80FCD54 - bl sub_80FCEA4 - bl sub_80FCCBC -_080FC8C4: - bl sub_80FCEA4 - b _080FC928 -_080FC8CA: - bl sub_80FCD54 - bl sub_80FD06C - bl sub_80FD06C - bl sub_80FD114 - bl sub_80FCCBC - b _080FC928 -_080FC8E0: - bl sub_80FCF3C - b _080FC928 -_080FC8E6: - bl sub_80FCD54 - b _080FC928 -_080FC8EC: - bl sub_80FD06C - b _080FC928 -_080FC8F2: - bl sub_80FD114 - b _080FC928 -_080FC8F8: - bl sub_80FCAC4 - movs r0, 0x3 - bl sub_80FC92C - b _080FC928 -_080FC904: - bl sub_80FCD54 - bl sub_80FD06C - bl sub_80FD114 - bl sub_80FCCBC - bl sub_80FCB5C - bl sub_80FCB5C - movs r0, 0x2 - bl sub_80FC92C - movs r0, 0x4 - bl sub_80FC9E4 -_080FC928: - pop {r0} - bx r0 - thumb_func_end sub_80FC7A0 - - thumb_func_start sub_80FC92C -sub_80FC92C: @ 80FC92C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r2, 0 - ldr r0, _080FC9CC @ =gUnknown_03005DF0 - mov r8, r0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080FC9BE - ldr r1, _080FC9D0 @ =gUnknown_03005DF8 - mov r12, r1 - ldr r3, _080FC9D4 @ =gUnknown_03005E04 - mov r10, r3 - ldr r0, _080FC9D8 @ =gUnknown_03005DE8 - mov r9, r0 -_080FC952: - ldr r1, _080FC9DC @ =gUnknown_03005DFC - ldrb r0, [r1] - adds r0, r2 - mov r3, r10 - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080FC9E0 @ =gUnknown_03005DEC - ldr r1, [r3] - adds r1, r0 - mov r3, r9 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r4, 0 - adds r5, r2, 0x1 - mov r0, r12 - ldrb r0, [r0] - cmp r4, r0 - bcs _080FC9B2 - movs r6, 0x80 - lsls r6, 8 -_080FC97E: - ldrh r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _080FC9A2 - movs r0, 0x1F - ands r0, r1 - adds r0, r7 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _080FC998 - movs r2, 0x1F -_080FC998: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080FC9A2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r3, 0x2 - mov r1, r12 - ldrb r1, [r1] - cmp r4, r1 - bcc _080FC97E -_080FC9B2: - lsls r0, r5, 24 - lsrs r2, r0, 24 - mov r3, r8 - ldrb r3, [r3] - cmp r2, r3 - bcc _080FC952 -_080FC9BE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC9CC: .4byte gUnknown_03005DF0 -_080FC9D0: .4byte gUnknown_03005DF8 -_080FC9D4: .4byte gUnknown_03005E04 -_080FC9D8: .4byte gUnknown_03005DE8 -_080FC9DC: .4byte gUnknown_03005DFC -_080FC9E0: .4byte gUnknown_03005DEC - thumb_func_end sub_80FC92C - - thumb_func_start sub_80FC9E4 -sub_80FC9E4: @ 80FC9E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080FCA8C @ =gUnknown_03005DF0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080FCA7C - ldr r1, _080FCA90 @ =gUnknown_03005DF8 - mov r10, r1 -_080FCA02: - ldr r3, _080FCA94 @ =gUnknown_03005DFC - ldrb r0, [r3] - adds r0, r2 - ldr r3, _080FCA98 @ =gUnknown_03005E04 - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080FCA9C @ =gUnknown_03005DEC - ldr r1, [r3] - adds r1, r0 - ldr r3, _080FCAA0 @ =gUnknown_03005DE8 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r5, 0 - adds r7, r2, 0x1 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcs _080FCA70 - movs r1, 0x80 - lsls r1, 8 - mov r9, r1 - movs r0, 0x1F - mov r12, r0 - mov r1, r8 - subs r6, r0, r1 -_080FCA38: - ldrh r1, [r3] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080FCA60 - movs r4, 0x1F - mov r2, r12 - ands r2, r1 - cmp r2, r6 - ble _080FCA56 - mov r1, r8 - lsrs r0, r1, 1 - subs r0, r4, r0 - lsls r0, 24 - lsrs r2, r0, 24 -_080FCA56: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080FCA60: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r3, 0x2 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcc _080FCA38 -_080FCA70: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r1, _080FCA8C @ =gUnknown_03005DF0 - ldrb r1, [r1] - cmp r2, r1 - bcc _080FCA02 -_080FCA7C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FCA8C: .4byte gUnknown_03005DF0 -_080FCA90: .4byte gUnknown_03005DF8 -_080FCA94: .4byte gUnknown_03005DFC -_080FCA98: .4byte gUnknown_03005E04 -_080FCA9C: .4byte gUnknown_03005DEC -_080FCAA0: .4byte gUnknown_03005DE8 - thumb_func_end sub_80FC9E4 - - thumb_func_start sub_80FCAA4 -sub_80FCAA4: @ 80FCAA4 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080FCAC0 @ =0x00000c7f -_080FCAAA: - lsls r0, r4, 16 - lsrs r0, 16 - bl sub_80FD1C8 - adds r4, 0x1 - cmp r4, r5 - bls _080FCAAA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FCAC0: .4byte 0x00000c7f - thumb_func_end sub_80FCAA4 - - thumb_func_start sub_80FCAC4 -sub_80FCAC4: @ 80FCAC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080FCB44 @ =gUnknown_03005DF0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080FCB36 - ldr r0, _080FCB48 @ =gUnknown_03005DEC - mov r8, r0 - ldr r3, _080FCB4C @ =gUnknown_03005DF8 -_080FCADC: - ldr r0, _080FCB50 @ =gUnknown_03005DFC - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080FCB54 @ =gUnknown_03005E04 - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080FCB58 @ =gUnknown_03005DE8 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080FCB2A - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080FCB08: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080FCB1C - adds r0, r4, 0 - str r3, [sp] - bl sub_80FD39C - strh r0, [r4] - ldr r3, [sp] -_080FCB1C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080FCB08 -_080FCB2A: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080FCB44 @ =gUnknown_03005DF0 - ldrb r0, [r0] - cmp r2, r0 - bcc _080FCADC -_080FCB36: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FCB44: .4byte gUnknown_03005DF0 -_080FCB48: .4byte gUnknown_03005DEC -_080FCB4C: .4byte gUnknown_03005DF8 -_080FCB50: .4byte gUnknown_03005DFC -_080FCB54: .4byte gUnknown_03005E04 -_080FCB58: .4byte gUnknown_03005DE8 - thumb_func_end sub_80FCAC4 thumb_func_start sub_80FCB5C sub_80FCB5C: @ 80FCB5C diff --git a/asm/daycare.s b/asm/daycare.s deleted file mode 100644 index a0ea9124a..000000000 --- a/asm/daycare.s +++ /dev/null @@ -1,2399 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80416A0 -sub_80416A0: @ 80416A0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - lsls r0, r4, 2 - mov r8, r0 - add r4, r8 - lsls r4, 4 - adds r4, r5, r4 - adds r0, r4, 0 - bl GetLevelFromBoxMonExp - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0x88 - lsls r0, 1 - adds r5, r0 - add r5, r8 - ldr r1, [r5] - adds r0, r4, 0 - bl Daycare_GetLevelAfterSteps - lsls r0, 24 - lsrs r0, 24 - subs r0, r6 - lsls r0, 24 - lsrs r0, 24 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80416A0 - - thumb_func_start sub_80416E8 -sub_80416E8: @ 80416E8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - adds r1, r4, 0 - bl sub_80416A0 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r6, r0 - ldr r1, _08041720 @ =gStringVar1 - adds r0, r6, 0 - bl GetBoxMonNick - ldr r0, _08041724 @ =gStringVar2 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08041720: .4byte gStringVar1 -_08041724: .4byte gStringVar2 - thumb_func_end sub_80416E8 - - thumb_func_start sub_8041728 -sub_8041728: @ 8041728 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - adds r1, r4, 0 - bl sub_80416A0 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r6, r0 - ldr r1, _08041768 @ =gStringVar1 - adds r0, r6, 0 - bl GetBoxMonNick - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - adds r4, 0x64 - ldr r0, _0804176C @ =gStringVar2 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08041768: .4byte gStringVar1 -_0804176C: .4byte gStringVar2 - thumb_func_end sub_8041728 - - thumb_func_start sub_8041770 -sub_8041770: @ 8041770 - push {lr} - ldr r0, _08041784 @ =gSaveBlock1 + 0x2F9C - ldr r1, _08041788 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_8041728 - ldr r1, _0804178C @ =gSpecialVar_0x8005 - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08041784: .4byte gSaveBlock1 + 0x2F9C -_08041788: .4byte gSpecialVar_0x8004 -_0804178C: .4byte gSpecialVar_0x8005 - thumb_func_end sub_8041770 - - thumb_func_start sub_8041790 -sub_8041790: @ 8041790 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080417AC @ =gSaveBlock1 - ldr r1, _080417B0 @ =0x000030ac - adds r3, r2, r1 - ldr r1, [r3] - adds r1, r0 - str r1, [r3] - ldr r1, _080417B4 @ =0x000030b0 - adds r2, r1 - ldr r1, [r2] - adds r1, r0 - str r1, [r2] - bx lr - .align 2, 0 -_080417AC: .4byte gSaveBlock1 -_080417B0: .4byte 0x000030ac -_080417B4: .4byte 0x000030b0 - thumb_func_end sub_8041790 - - thumb_func_start sub_80417B8 -sub_80417B8: @ 80417B8 - push {r4,r5,lr} - ldr r5, _080417D8 @ =gSpecialVar_0x8004 - ldrh r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r4, _080417DC @ =gSaveBlock1 + 0x2F9C - adds r0, r4 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - bne _080417E0 - movs r0, 0 - b _080417EC - .align 2, 0 -_080417D8: .4byte gSpecialVar_0x8004 -_080417DC: .4byte gSaveBlock1 + 0x2F9C -_080417E0: - ldrb r1, [r5] - adds r0, r4, 0 - bl sub_80416E8 - lsls r0, 24 - lsrs r0, 24 -_080417EC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80417B8 - - thumb_func_start sub_80417F4 -sub_80417F4: @ 80417F4 - push {lr} - movs r3, 0 - movs r2, 0x7 - adds r1, r0, 0 - adds r1, 0x2B -_080417FE: - strb r3, [r1] - subs r1, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _080417FE - adds r2, r0, 0 - adds r2, 0x2C - movs r3, 0 - adds r1, r0, 0 - adds r1, 0x36 -_08041812: - strb r3, [r1] - subs r1, 0x1 - cmp r1, r2 - bge _08041812 - bl ClearMailStruct - pop {r0} - bx r0 - thumb_func_end sub_80417F4 - - thumb_func_start unref_sub_8041824 -unref_sub_8041824: @ 8041824 - push {r4-r6,lr} - adds r6, r0, 0 - movs r5, 0 -_0804182A: - lsls r4, r5, 2 - adds r0, r4, r5 - lsls r0, 4 - adds r0, r6, r0 - bl ZeroBoxMonData - movs r1, 0x88 - lsls r1, 1 - adds r0, r6, r1 - adds r0, r4 - movs r4, 0 - str r4, [r0] - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 3 - adds r0, 0xA0 - adds r0, r6, r0 - bl sub_80417F4 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _0804182A - movs r2, 0x8C - lsls r2, 1 - adds r0, r6, r2 - movs r1, 0 - strh r4, [r0] - adds r2, 0x2 - adds r0, r6, r2 - strb r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end unref_sub_8041824 - - thumb_func_start sub_8041870 -sub_8041870: @ 8041870 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r2, r0, 16 - movs r0, 0 - mov r8, r0 - ldr r0, _0804189C @ =gEvolutionTable - mov r12, r0 -_08041882: - movs r7, 0 - movs r6, 0x1 - movs r4, 0x80 - lsls r4, 9 - movs r5, 0x28 - mov r3, r12 - adds r3, 0x28 -_08041890: - movs r1, 0 - ldrh r0, [r3, 0x4] - cmp r0, r2 - bne _080418A0 - lsrs r2, r4, 16 - b _080418CC - .align 2, 0 -_0804189C: .4byte gEvolutionTable -_080418A0: - adds r1, 0x1 - cmp r1, 0x4 - bgt _080418B6 - lsls r0, r1, 3 - adds r0, r5 - add r0, r12 - ldrh r0, [r0, 0x4] - cmp r0, r2 - bne _080418A0 - lsrs r2, r4, 16 - movs r7, 0x1 -_080418B6: - cmp r7, 0 - bne _080418CC - movs r0, 0x80 - lsls r0, 9 - adds r4, r0 - adds r5, 0x28 - adds r3, 0x28 - adds r6, 0x1 - ldr r0, _080418EC @ =0x0000019b - cmp r6, r0 - ble _08041890 -_080418CC: - movs r0, 0xCE - lsls r0, 1 - cmp r6, r0 - beq _080418DE - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x4 - ble _08041882 -_080418DE: - adds r0, r2, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080418EC: .4byte 0x0000019b - thumb_func_end sub_8041870 - - thumb_func_start sub_80418F0 -sub_80418F0: @ 80418F0 - push {r4,lr} - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08041918 @ =0x0000fffe - bl __umodsi3 - adds r0, 0x1 - movs r1, 0x8C - lsls r1, 1 - adds r4, r1 - strh r0, [r4] - movs r0, 0x86 - bl FlagSet - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08041918: .4byte 0x0000fffe - thumb_func_end sub_80418F0 - - thumb_func_start sub_804191C -sub_804191C: @ 804191C - push {r4,lr} - adds r4, r0, 0 - bl Random - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - movs r2, 0x8C - lsls r2, 1 - adds r4, r2 - orrs r1, r0 - strh r1, [r4] - movs r0, 0x86 - bl FlagSet - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804191C - - thumb_func_start sub_8041940 -sub_8041940: @ 8041940 - push {lr} - ldr r0, _0804194C @ =gSaveBlock1 + 0x2F9C - bl sub_80418F0 - pop {r0} - bx r0 - .align 2, 0 -_0804194C: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sub_8041940 - - thumb_func_start sub_8041950 -sub_8041950: @ 8041950 - push {lr} - ldr r0, _0804195C @ =gSaveBlock1 + 0x2F9C - bl sub_804191C - pop {r0} - bx r0 - .align 2, 0 -_0804195C: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sub_8041950 - - thumb_func_start sub_8041960 -sub_8041960: @ 8041960 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r1, r4, r1 - movs r0, 0xFF - strb r0, [r1] - movs r2, 0 -_08041972: - mov r1, sp - adds r0, r1, r2 - adds r1, r4, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x5 - ble _08041972 - movs r3, 0 - movs r2, 0 -_08041986: - mov r1, sp - adds r0, r1, r2 - ldrb r1, [r0] - adds r0, r1, 0 - cmp r0, 0xFF - beq _08041998 - adds r0, r4, r3 - strb r1, [r0] - adds r3, 0x1 -_08041998: - adds r2, 0x1 - cmp r2, 0x5 - ble _08041986 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8041960 - - thumb_func_start sub_80419A8 -sub_80419A8: @ 80419A8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - mov r9, r0 - mov r8, r1 - movs r5, 0 - add r1, sp, 0x4 - add r7, sp, 0xC - adds r2, r1, 0 -_080419BE: - adds r0, r2, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080419BE - movs r5, 0 - adds r6, r1, 0 -_080419D0: - bl Random - mov r1, sp - adds r4, r1, r5 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - subs r1, r5 - bl __modsi3 - adds r0, r6, r0 - ldrb r0, [r0] - strb r0, [r4] - ldrb r1, [r4] - adds r0, r6, 0 - bl sub_8041960 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080419D0 - movs r5, 0 - movs r4, 0x1 -_08041A00: - bl Random - adds r1, r7, r5 - lsls r0, 16 - lsrs r0, 16 - ands r0, r4 - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _08041A00 - movs r5, 0 -_08041A1A: - mov r1, sp - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _08041B02 - lsls r0, 2 - ldr r1, _08041A30 @ =_08041A34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08041A30: .4byte _08041A34 - .align 2, 0 -_08041A34: - .4byte _08041A4C - .4byte _08041A6C - .4byte _08041A88 - .4byte _08041AA4 - .4byte _08041AC0 - .4byte _08041AE2 -_08041A4C: - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x27 - bl GetBoxMonData - add r2, sp, 0x10 - strb r0, [r2] - mov r0, r9 - movs r1, 0x27 - bl SetMonData - b _08041B02 -_08041A6C: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x28 - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x28 - b _08041ADA -_08041A88: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x29 - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x29 - b _08041ADA -_08041AA4: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x2A - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x2A - b _08041ADA -_08041AC0: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x2B - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x2B -_08041ADA: - adds r2, r4, 0 - bl SetMonData - b _08041B02 -_08041AE2: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x2C - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x2C - adds r2, r4, 0 - bl SetMonData -_08041B02: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _08041A1A - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80419A8 - - thumb_func_start pokemon_get_eggmoves -pokemon_get_eggmoves: @ 8041B1C - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - movs r6, 0 - movs r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r5, _08041B44 @ =gEggMoves - ldrh r1, [r5] - ldr r7, _08041B48 @ =0x00004e20 - adds r0, r3, r7 - cmp r1, r0 - bne _08041B4C - movs r4, 0x1 - b _08041B6E - .align 2, 0 -_08041B44: .4byte gEggMoves -_08041B48: .4byte 0x00004e20 -_08041B4C: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _08041BB8 @ =0x00000471 - ldr r5, _08041BBC @ =gEggMoves - cmp r2, r0 - bhi _08041B6E - lsls r0, r2, 1 - adds r0, r5 - ldrh r1, [r0] - ldr r7, _08041BC0 @ =0x00004e20 - adds r0, r3, r7 - cmp r1, r0 - bne _08041B4C - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_08041B6E: - movs r2, 0 - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - ldr r1, _08041BC0 @ =0x00004e20 - cmp r0, r1 - bhi _08041BAA - adds r7, r5, 0 - adds r3, r1, 0 -_08041B80: - lsls r1, r2, 1 - add r1, r8 - adds r0, r4, r2 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9 - bhi _08041BAA - adds r0, r4, r2 - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, r3 - bls _08041B80 -_08041BAA: - lsls r0, r6, 24 - lsrs r0, 24 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08041BB8: .4byte 0x00000471 -_08041BBC: .4byte gEggMoves -_08041BC0: .4byte 0x00004e20 - thumb_func_end pokemon_get_eggmoves - - thumb_func_start daycare_build_child_moveset -daycare_build_child_moveset: @ 8041BC4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r7, r0, 0 - mov r10, r1 - mov r9, r2 - movs r0, 0 - str r0, [sp] - movs r6, 0 - ldr r5, _08041CC8 @ =gUnknown_03000500 - movs r2, 0 - ldr r4, _08041CCC @ =gUnknown_030004D8 - ldr r3, _08041CD0 @ =gUnknown_030004E0 -_08041BE4: - lsls r1, r6, 1 - adds r0, r1, r5 - strh r2, [r0] - adds r0, r1, r4 - strh r2, [r0] - adds r1, r3 - strh r2, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08041BE4 - movs r6, 0 - ldr r2, _08041CD4 @ =gUnknown_030004E8 - movs r1, 0 -_08041C02: - lsls r0, r6, 1 - adds r0, r2 - strh r1, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x9 - bls _08041C02 - movs r6, 0 - ldr r2, _08041CD8 @ =gUnknown_03000470 - movs r1, 0 -_08041C18: - lsls r0, r6, 1 - adds r0, r2 - strh r1, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x31 - bls _08041C18 - adds r0, r7, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08041CD8 @ =gUnknown_03000470 - bl GetLevelUpMovesBySpecies - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r6, 0 - ldr r1, _08041CCC @ =gUnknown_030004D8 - mov r8, r1 -_08041C46: - adds r5, r6, 0 - adds r5, 0xD - mov r0, r10 - adds r1, r5, 0 - bl GetBoxMonData - lsls r4, r6, 1 - mov r2, r8 - adds r1, r4, r2 - strh r0, [r1] - mov r0, r9 - adds r1, r5, 0 - bl GetBoxMonData - ldr r1, _08041CC8 @ =gUnknown_03000500 - adds r4, r1 - strh r0, [r4] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08041C46 - ldr r1, _08041CD4 @ =gUnknown_030004E8 - adds r0, r7, 0 - bl pokemon_get_eggmoves - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r6, 0 -_08041C82: - ldr r0, _08041CCC @ =gUnknown_030004D8 - lsls r1, r6, 1 - adds r2, r1, r0 - ldrh r1, [r2] - mov r9, r0 - cmp r1, 0 - beq _08041CF8 - movs r5, 0 - cmp r5, r8 - bcs _08041CEA - adds r4, r2, 0 - ldr r2, _08041CDC @ =0x0000ffff -_08041C9A: - ldr r0, _08041CD4 @ =gUnknown_030004E8 - lsls r1, r5, 1 - adds r1, r0 - ldrh r0, [r4] - ldrh r1, [r1] - cmp r0, r1 - bne _08041CE0 - adds r1, r0, 0 - adds r0, r7, 0 - str r2, [sp, 0x8] - bl GiveMoveToMon - lsls r0, 16 - lsrs r0, 16 - ldr r2, [sp, 0x8] - cmp r0, r2 - bne _08041CEA - ldrh r1, [r4] - adds r0, r7, 0 - bl DeleteFirstMoveAndGiveMoveToMon - b _08041CEA - .align 2, 0 -_08041CC8: .4byte gUnknown_03000500 -_08041CCC: .4byte gUnknown_030004D8 -_08041CD0: .4byte gUnknown_030004E0 -_08041CD4: .4byte gUnknown_030004E8 -_08041CD8: .4byte gUnknown_03000470 -_08041CDC: .4byte 0x0000ffff -_08041CE0: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r8 - bcc _08041C9A -_08041CEA: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, _08041E14 @ =gUnknown_030004D8 - mov r9, r3 - cmp r6, 0x3 - bls _08041C82 -_08041CF8: - movs r6, 0 -_08041CFA: - lsls r0, r6, 1 - mov r2, r9 - adds r1, r0, r2 - ldrh r1, [r1] - adds r2, r0, 0 - adds r6, 0x1 - mov r8, r6 - cmp r1, 0 - beq _08041D5C - movs r5, 0 - ldr r0, _08041E14 @ =gUnknown_030004D8 - adds r4, r2, r0 - ldr r6, _08041E18 @ =0x0000ffff - mov r9, r0 -_08041D16: - ldr r3, _08041E1C @ =0x00000121 - adds r0, r5, r3 - lsls r0, 16 - lsrs r0, 16 - bl ItemIdToBattleMoveId - ldrh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bne _08041D52 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r7, 0 - bl CanMonLearnTMHM - cmp r0, 0 - beq _08041D52 - ldrh r1, [r4] - adds r0, r7, 0 - bl GiveMoveToMon - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bne _08041D52 - ldrh r1, [r4] - adds r0, r7, 0 - bl DeleteFirstMoveAndGiveMoveToMon -_08041D52: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x39 - bls _08041D16 -_08041D5C: - mov r1, r8 - lsls r0, r1, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08041CFA - movs r6, 0 - mov r2, r9 - ldrh r0, [r2] - ldr r3, _08041E20 @ =gUnknown_030004E0 - mov r10, r3 - cmp r0, 0 - beq _08041DC6 - mov r4, r9 - ldr r0, _08041E24 @ =gUnknown_03000500 - mov r9, r0 - mov r12, r10 -_08041D7C: - movs r5, 0 - lsls r2, r6, 1 - adds r6, 0x1 - mov r8, r6 - adds r3, r2, r4 -_08041D86: - lsls r0, r5, 1 - add r0, r9 - ldrh r2, [r3] - adds r1, r2, 0 - ldrh r0, [r0] - cmp r1, r0 - bne _08041DA8 - cmp r1, 0 - beq _08041DA8 - ldr r1, [sp] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - lsls r1, 1 - add r1, r12 - strh r2, [r1] -_08041DA8: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _08041D86 - mov r1, r8 - lsls r0, r1, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bhi _08041DC6 - lsls r0, r6, 1 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0 - bne _08041D7C -_08041DC6: - movs r6, 0 - mov r2, r10 - ldrh r0, [r2] - cmp r0, 0 - beq _08041E50 -_08041DD0: - movs r5, 0 - adds r3, r6, 0x1 - mov r8, r3 - ldr r0, [sp, 0x4] - cmp r5, r0 - bcs _08041E38 - ldr r2, _08041E18 @ =0x0000ffff -_08041DDE: - ldr r1, _08041E28 @ =gUnknown_03000470 - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - cmp r1, 0 - beq _08041E2C - lsls r0, r6, 1 - mov r3, r10 - adds r4, r0, r3 - ldrh r0, [r4] - cmp r0, r1 - bne _08041E2C - adds r1, r0, 0 - adds r0, r7, 0 - str r2, [sp, 0x8] - bl GiveMoveToMon - lsls r0, 16 - lsrs r0, 16 - ldr r2, [sp, 0x8] - cmp r0, r2 - bne _08041E38 - ldrh r1, [r4] - adds r0, r7, 0 - bl DeleteFirstMoveAndGiveMoveToMon - b _08041E38 - .align 2, 0 -_08041E14: .4byte gUnknown_030004D8 -_08041E18: .4byte 0x0000ffff -_08041E1C: .4byte 0x00000121 -_08041E20: .4byte gUnknown_030004E0 -_08041E24: .4byte gUnknown_03000500 -_08041E28: .4byte gUnknown_03000470 -_08041E2C: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, [sp, 0x4] - cmp r5, r0 - bcc _08041DDE -_08041E38: - mov r1, r8 - lsls r0, r1, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bhi _08041E50 - ldr r0, _08041E60 @ =gUnknown_030004E0 - lsls r1, r6, 1 - adds r1, r0 - ldrh r1, [r1] - mov r10, r0 - cmp r1, 0 - bne _08041DD0 -_08041E50: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08041E60: .4byte gUnknown_030004E0 - thumb_func_end daycare_build_child_moveset - - thumb_func_start sub_8041E64 -sub_8041E64: @ 8041E64 - adds r3, r0, 0 - movs r1, 0x8C - lsls r1, 1 - adds r0, r3, r1 - movs r2, 0 - movs r1, 0 - strh r1, [r0] - movs r1, 0x8D - lsls r1, 1 - adds r0, r3, r1 - strb r2, [r0] - bx lr - thumb_func_end sub_8041E64 - - thumb_func_start sub_8041E7C -sub_8041E7C: @ 8041E7C - push {lr} - ldr r0, _08041E88 @ =gSaveBlock1 + 0x2F9C - bl sub_8041E64 - pop {r0} - bx r0 - .align 2, 0 -_08041E88: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sub_8041E7C - - thumb_func_start incense_effects -incense_effects: @ 8041E8C - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrh r1, [r4] - movs r7, 0xB4 - lsls r7, 1 - cmp r1, r7 - beq _08041EA4 - movs r0, 0xAF - lsls r0, 1 - cmp r1, r0 - bne _08041EE6 -_08041EA4: - adds r0, r5, 0 - movs r1, 0xC - bl GetBoxMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r5, 0 - adds r0, 0x50 - movs r1, 0xC - bl GetBoxMonData - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r4] - cmp r0, r7 - bne _08041ED0 - cmp r6, 0xDD - beq _08041ED0 - cmp r2, 0xDD - beq _08041ED0 - movs r0, 0xCA - strh r0, [r4] -_08041ED0: - ldrh r1, [r4] - movs r0, 0xAF - lsls r0, 1 - cmp r1, r0 - bne _08041EE6 - cmp r6, 0xDC - beq _08041EE6 - cmp r2, 0xDC - beq _08041EE6 - movs r0, 0xB7 - strh r0, [r4] -_08041EE6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end incense_effects - - thumb_func_start sub_8041EEC -sub_8041EEC: @ 8041EEC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r6, r1, 0 - movs r4, 0 - movs r7, 0x1 -_08041EFC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - mov r1, r8 - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetBoxMonData - lsls r1, r4, 1 - add r1, sp - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x84 - bne _08041F26 - adds r0, r4, 0 - eors r0, r7 - strb r0, [r6] - strb r4, [r6, 0x1] - b _08041F3C -_08041F26: - adds r0, r5, 0 - bl GetBoxMonGender - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFE - bne _08041F3C - strb r4, [r6] - adds r0, r4, 0 - eors r0, r7 - strb r0, [r6, 0x1] -_08041F3C: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _08041EFC - ldrb r0, [r6] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - bl sub_8041870 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1D - bne _08041F6E - movs r0, 0x8C - lsls r0, 1 - add r0, r8 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08041F6E - movs r4, 0x20 -_08041F6E: - ldr r0, _08041FC0 @ =0x00000183 - cmp r4, r0 - bne _08041F88 - subs r0, 0x6B - add r0, r8 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08041F88 - movs r4, 0xC1 - lsls r4, 1 -_08041F88: - ldrb r0, [r6, 0x1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - cmp r0, 0x84 - bne _08041FB2 - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - bl GetBoxMonGender - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFE - beq _08041FB2 - ldrb r1, [r6, 0x1] - ldrb r0, [r6] - strb r0, [r6, 0x1] - strb r1, [r6] -_08041FB2: - adds r0, r4, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08041FC0: .4byte 0x00000183 - thumb_func_end sub_8041EEC - - thumb_func_start sub_8041FC4 -sub_8041FC4: @ 8041FC4 - push {r4-r6,lr} - sub sp, 0x6C - adds r5, r0, 0 - add r6, sp, 0x64 - adds r1, r6, 0 - bl sub_8041EEC - add r4, sp, 0x68 - strh r0, [r4] - adds r0, r4, 0 - adds r1, r5, 0 - bl incense_effects - ldrh r1, [r4] - mov r0, sp - adds r2, r5, 0 - bl sub_80420FC - mov r0, sp - adds r1, r5, 0 - bl sub_80419A8 - ldrb r0, [r6, 0x1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - adds r1, r5, r1 - ldrb r0, [r6] - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 4 - adds r2, r5, r2 - mov r0, sp - bl daycare_build_child_moveset - mov r2, sp - adds r2, 0x6A - movs r0, 0x1 - strb r0, [r2] - mov r0, sp - movs r1, 0x2D - bl SetMonData - ldr r0, _08042040 @ =gPlayerParty - movs r1, 0xFA - lsls r1, 1 - adds r0, r1 - mov r1, sp - movs r2, 0x64 - bl memcpy - bl party_compaction - bl CalculatePlayerPartyCount - adds r0, r5, 0 - bl sub_8041E64 - add sp, 0x6C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08042040: .4byte gPlayerParty - thumb_func_end sub_8041FC4 - - thumb_func_start sub_8042044 -sub_8042044: @ 8042044 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - adds r7, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 24 - lsrs r6, 24 - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - adds r1, r5, 0 - movs r2, 0x5 - movs r3, 0x20 - bl CreateMon - movs r0, 0x12 - add r0, sp - mov r8, r0 - strb r4, [r0] - movs r1, 0x4 - add r0, sp, 0x10 - strh r1, [r0] - mov r4, sp - adds r4, 0x13 - movs r0, 0x1 - mov r9, r0 - mov r0, r9 - strb r0, [r4] - adds r0, r7, 0 - movs r1, 0x26 - add r2, sp, 0x10 - bl SetMonData - ldr r2, _080420F4 @ =gUnknown_08209AD4 - adds r0, r7, 0 - movs r1, 0x2 - bl SetMonData - lsls r2, r5, 3 - subs r2, r5 - lsls r2, 2 - ldr r0, _080420F8 @ =gBaseStats + 0x11 @ egg cycles offset - adds r2, r0 - adds r0, r7, 0 - movs r1, 0x20 - bl SetMonData - adds r0, r7, 0 - movs r1, 0x24 - mov r2, r8 - bl SetMonData - adds r0, r7, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl SetMonData - cmp r6, 0 - beq _080420D6 - add r2, sp, 0x14 - movs r0, 0xFD - strb r0, [r2] - adds r0, r7, 0 - movs r1, 0x23 - bl SetMonData -_080420D6: - mov r2, sp - adds r2, 0x15 - mov r0, r9 - strb r0, [r2] - adds r0, r7, 0 - movs r1, 0x2D - bl SetMonData - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080420F4: .4byte gUnknown_08209AD4 -_080420F8: .4byte gBaseStats + 0x11 @ egg cycles offset - thumb_func_end sub_8042044 - - thumb_func_start sub_80420FC -sub_80420FC: @ 80420FC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x14 - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - lsls r5, 16 - lsrs r5, 16 - bl Random - movs r1, 0x8C - lsls r1, 1 - adds r4, r1 - ldrh r1, [r4] - lsls r0, 16 - orrs r1, r0 - movs r0, 0x1 - mov r8, r0 - str r0, [sp] - str r1, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - str r4, [sp, 0xC] - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x5 - movs r3, 0x20 - bl CreateMon - movs r1, 0x12 - add r1, sp - mov r9, r1 - strb r4, [r1] - movs r1, 0x4 - add r0, sp, 0x10 - strh r1, [r0] - mov r4, sp - adds r4, 0x13 - mov r0, r8 - strb r0, [r4] - adds r0, r6, 0 - movs r1, 0x26 - add r2, sp, 0x10 - bl SetMonData - ldr r2, _08042198 @ =gUnknown_08209AD4 - adds r0, r6, 0 - movs r1, 0x2 - bl SetMonData - lsls r2, r5, 3 - subs r2, r5 - lsls r2, 2 - ldr r0, _0804219C @ =gBaseStats + 0x11 @ egg cycles offset - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x20 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x24 - mov r2, r9 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl SetMonData - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08042198: .4byte gUnknown_08209AD4 -_0804219C: .4byte gBaseStats + 0x11 @ egg cycles offset - thumb_func_end sub_80420FC - - thumb_func_start sp0B8_daycare -sp0B8_daycare: @ 80421A0 - push {lr} - ldr r0, _080421AC @ =gSaveBlock1 + 0x2F9C - bl sub_8041FC4 - pop {r0} - bx r0 - .align 2, 0 -_080421AC: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sp0B8_daycare - - thumb_func_start sub_80421B0 -sub_80421B0: @ 80421B0 - push {r4-r7,lr} - sub sp, 0x8 - adds r7, r0, 0 - movs r2, 0 - movs r6, 0 - adds r5, r7, 0 -_080421BC: - lsls r4, r6, 2 - adds r0, r5, 0 - movs r1, 0x5 - str r2, [sp, 0x4] - bl GetBoxMonData - ldr r2, [sp, 0x4] - cmp r0, 0 - beq _080421DE - movs r0, 0x88 - lsls r0, 1 - adds r1, r7, r0 - adds r1, r4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - adds r2, 0x1 -_080421DE: - adds r5, 0x50 - adds r6, 0x1 - cmp r6, 0x1 - bls _080421BC - movs r1, 0x8C - lsls r1, 1 - adds r0, r7, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08042226 - cmp r2, 0x2 - bne _08042226 - subs r1, 0x4 - adds r0, r7, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08042226 - adds r0, r7, 0 - bl daycare_relationship_score - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - muls r0, r1 - ldr r1, _08042240 @ =0x0000ffff - bl __udivsi3 - cmp r4, r0 - bls _08042226 - bl sub_8041940 -_08042226: - movs r0, 0x8D - lsls r0, 1 - adds r1, r7, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08042290 - movs r6, 0 - b _08042288 - .align 2, 0 -_08042240: .4byte 0x0000ffff -_08042244: - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, _08042270 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08042286 - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - str r0, [sp] - cmp r0, 0 - bne _08042278 - ldr r0, _08042274 @ =gSpecialVar_0x8004 - strh r6, [r0] - movs r0, 0x1 - b _08042292 - .align 2, 0 -_08042270: .4byte gPlayerParty -_08042274: .4byte gSpecialVar_0x8004 -_08042278: - subs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0x20 - mov r2, sp - bl SetMonData -_08042286: - adds r6, 0x1 -_08042288: - ldr r0, _0804229C @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r6, r0 - bcc _08042244 -_08042290: - movs r0, 0 -_08042292: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0804229C: .4byte gPlayerPartyCount - thumb_func_end sub_80421B0 - - thumb_func_start sub_80422A0 -sub_80422A0: @ 80422A0 - push {lr} - ldr r0, _080422B0 @ =gSaveBlock1 + 0x2F9C - bl sub_80421B0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080422B0: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sub_80422A0 - - thumb_func_start sub_80422B4 -sub_80422B4: @ 80422B4 - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - ldrh r1, [r0] - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - bx lr - thumb_func_end sub_80422B4 - - thumb_func_start sub_80422C4 -sub_80422C4: @ 80422C4 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _080422FC - ldr r1, _0804231C @ =gStringVar1 - adds r0, r6, 0 - bl GetBoxMonNick - adds r0, r6, 0 - movs r1, 0x3 - bl GetBoxMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _08042320 @ =gStringVar3 - adds r0, r6, 0 - movs r1, 0x7 - adds r2, r5, 0 - bl GetBoxMonData - adds r0, r5, 0 - adds r1, r4, 0 - bl ConvertInternationalString -_080422FC: - adds r4, r6, 0 - adds r4, 0x50 - adds r0, r4, 0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _08042314 - ldr r1, _08042324 @ =gStringVar2 - adds r0, r4, 0 - bl GetBoxMonNick -_08042314: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804231C: .4byte gStringVar1 -_08042320: .4byte gStringVar3 -_08042324: .4byte gStringVar2 - thumb_func_end sub_80422C4 - - thumb_func_start sub_8042328 -sub_8042328: @ 8042328 - push {r4-r6,lr} - ldr r6, _08042354 @ =gLastFieldPokeMenuOpened - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _08042358 @ =gPlayerParty - adds r0, r4 - ldr r1, _0804235C @ =gStringVar1 - bl GetBoxMonNick - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xB - bl GetBoxMonData - lsls r0, 16 - lsrs r0, 16 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08042354: .4byte gLastFieldPokeMenuOpened -_08042358: .4byte gPlayerParty -_0804235C: .4byte gStringVar1 - thumb_func_end sub_8042328 - - thumb_func_start sp0B5_daycare -sp0B5_daycare: @ 8042360 - push {lr} - ldr r0, _0804236C @ =gSaveBlock1 + 0x2F9C - bl sub_80422C4 - pop {r0} - bx r0 - .align 2, 0 -_0804236C: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sp0B5_daycare - - thumb_func_start sp0B6_daycare -sp0B6_daycare: @ 8042370 - push {r4,lr} - ldr r4, _08042384 @ =gSaveBlock1 + 0x2F9C - adds r0, r4, 0 - bl sub_80422B4 - lsls r0, 24 - cmp r0, 0 - beq _08042388 - movs r0, 0x1 - b _080423A0 - .align 2, 0 -_08042384: .4byte gSaveBlock1 + 0x2F9C -_08042388: - adds r0, r4, 0 - bl Daycare_CountPokemon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0804239A - movs r0, 0 - b _080423A0 -_0804239A: - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 -_080423A0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sp0B6_daycare - - thumb_func_start sub_80423A8 -sub_80423A8: @ 80423A8 - push {r4-r6,lr} - adds r5, r1, 0 - movs r4, 0 - adds r1, r0, 0 -_080423B0: - movs r3, 0 - ldrh r0, [r1] - adds r2, r5, 0 -_080423B6: - ldrh r6, [r2] - cmp r0, r6 - bne _080423C0 - movs r0, 0x1 - b _080423D2 -_080423C0: - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x1 - ble _080423B6 - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x1 - ble _080423B0 - movs r0, 0 -_080423D2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80423A8 - - thumb_func_start daycare_relationship_score -daycare_relationship_score: @ 80423D8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - movs r1, 0 - mov r8, r1 - mov r2, sp - adds r2, 0x8 - str r2, [sp, 0x1C] - add r1, sp, 0xC - mov r10, r1 - adds r2, 0xC - str r2, [sp, 0x20] - mov r1, sp - adds r1, 0x2 - ldr r2, _08042488 @ =gBaseStats - mov r9, r2 - ldr r5, [sp, 0x1C] - adds r7, r1, 0 - mov r6, sp - ldr r1, [sp, 0x20] - str r1, [sp, 0x24] - mov r2, r10 - str r2, [sp, 0x28] - adds r4, r0, 0 -_0804240E: - adds r0, r4, 0 - movs r1, 0xB - bl GetBoxMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x1 - bl GetBoxMonData - ldr r1, [sp, 0x28] - stm r1!, {r0} - str r1, [sp, 0x28] - adds r0, r4, 0 - movs r1, 0 - bl GetBoxMonData - adds r1, r0, 0 - ldrh r0, [r5] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - ldr r2, [sp, 0x24] - stm r2!, {r0} - str r2, [sp, 0x24] - ldrh r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x14] - strh r0, [r6] - ldrh r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x15] - strh r0, [r7] - adds r5, 0x2 - adds r7, 0x4 - adds r6, 0x4 - adds r4, 0x50 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x1 - bls _0804240E - mov r0, sp - ldrh r1, [r0] - cmp r1, 0xF - beq _08042484 - ldrh r0, [r0, 0x4] - cmp r0, 0xF - beq _08042484 - cmp r1, 0xD - bne _0804248C - cmp r0, 0xD - bne _08042490 -_08042484: - movs r0, 0 - b _080424E4 - .align 2, 0 -_08042488: .4byte gBaseStats -_0804248C: - cmp r0, 0xD - bne _0804249C -_08042490: - ldr r1, [sp, 0xC] - mov r2, r10 - ldr r0, [r2, 0x4] - cmp r1, r0 - beq _080424DE - b _080424E2 -_0804249C: - ldr r0, [sp, 0x14] - ldr r2, [sp, 0x20] - ldr r1, [r2, 0x4] - cmp r0, r1 - beq _08042484 - cmp r0, 0xFF - beq _08042484 - cmp r1, 0xFF - beq _08042484 - add r1, sp, 0x4 - mov r0, sp - bl sub_80423A8 - lsls r0, 24 - cmp r0, 0 - beq _08042484 - ldr r0, [sp, 0x1C] - ldrh r1, [r0, 0x2] - ldrh r0, [r0] - cmp r0, r1 - bne _080424D4 - ldr r1, [sp, 0xC] - mov r2, r10 - ldr r0, [r2, 0x4] - cmp r1, r0 - beq _080424E2 - movs r0, 0x46 - b _080424E4 -_080424D4: - ldr r1, [sp, 0xC] - mov r2, r10 - ldr r0, [r2, 0x4] - cmp r1, r0 - bne _080424E2 -_080424DE: - movs r0, 0x14 - b _080424E4 -_080424E2: - movs r0, 0x32 -_080424E4: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end daycare_relationship_score - - thumb_func_start daycare_relationship_score_from_savegame -daycare_relationship_score_from_savegame: @ 80424F4 - push {lr} - ldr r0, _08042504 @ =gSaveBlock1 + 0x2F9C - bl daycare_relationship_score - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08042504: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end daycare_relationship_score_from_savegame - - thumb_func_start sp0B9_daycare_relationship_comment -sp0B9_daycare_relationship_comment: @ 8042508 - push {lr} - bl daycare_relationship_score_from_savegame - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - movs r1, 0 - cmp r0, 0 - bne _0804251C - movs r1, 0x3 -_0804251C: - cmp r0, 0x14 - bne _08042522 - movs r1, 0x2 -_08042522: - cmp r0, 0x32 - bne _08042528 - movs r1, 0x1 -_08042528: - cmp r2, 0x46 - bne _0804252E - movs r1, 0 -_0804252E: - ldr r0, _08042540 @ =gStringVar4 - ldr r2, _08042544 @ =gUnknown_08209AC4 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - pop {r0} - bx r0 - .align 2, 0 -_08042540: .4byte gStringVar4 -_08042544: .4byte gUnknown_08209AC4 - thumb_func_end sp0B9_daycare_relationship_comment - - thumb_func_start NameHasGenderSymbol -NameHasGenderSymbol: @ 8042548 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - mov r2, sp - mov r1, sp - movs r0, 0 - strb r0, [r1, 0x1] - strb r0, [r2] - movs r3, 0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _0804258C -_08042564: - adds r1, r4, r3 - ldrb r0, [r1] - cmp r0, 0xB5 - bne _08042572 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] -_08042572: - ldrb r0, [r1] - cmp r0, 0xB6 - bne _0804257E - ldrb r0, [r2, 0x1] - adds r0, 0x1 - strb r0, [r2, 0x1] -_0804257E: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r4, r3 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08042564 -_0804258C: - cmp r5, 0 - bne _080425A0 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - beq _080425A0 - mov r0, sp - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080425B4 -_080425A0: - cmp r5, 0xFE - bne _080425B8 - mov r0, sp - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080425B8 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _080425B8 -_080425B4: - movs r0, 0x1 - b _080425BA -_080425B8: - movs r0, 0 -_080425BA: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end NameHasGenderSymbol - - thumb_func_start AppendGenderSymbol -AppendGenderSymbol: @ 80425C4 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - bne _080425E4 - movs r1, 0 - bl NameHasGenderSymbol - lsls r0, 24 - cmp r0, 0 - bne _08042600 - ldr r1, _080425E0 @ =gOtherText_MaleSymbol3 - b _08042602 - .align 2, 0 -_080425E0: .4byte gOtherText_MaleSymbol3 -_080425E4: - cmp r1, 0xFE - bne _08042600 - adds r0, r4, 0 - movs r1, 0xFE - bl NameHasGenderSymbol - lsls r0, 24 - cmp r0, 0 - bne _08042600 - ldr r1, _080425FC @ =gOtherText_FemaleSymbol3 - b _08042602 - .align 2, 0 -_080425FC: .4byte gOtherText_FemaleSymbol3 -_08042600: - ldr r1, _08042610 @ =gOtherText_GenderlessSymbol -_08042602: - adds r0, r4, 0 - bl StringAppend - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08042610: .4byte gOtherText_GenderlessSymbol - thumb_func_end AppendGenderSymbol - - thumb_func_start MonAppendGenderSymbol -MonAppendGenderSymbol: @ 8042614 - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - bl GetBoxMonGender - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl AppendGenderSymbol - pop {r4} - pop {r1} - bx r1 - thumb_func_end MonAppendGenderSymbol - - thumb_func_start DaycareLevelMenuGetText -DaycareLevelMenuGetText: @ 8042630 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x28 - mov r8, r0 - adds r7, r1, 0 - movs r0, 0xFF - strb r0, [r7] - movs r6, 0 - add r0, sp, 0x14 - mov r9, r0 -_08042648: - lsls r0, r6, 2 - adds r0, r6 - lsls r4, r0, 4 - add r4, r8 - lsls r0, 2 - mov r1, sp - adds r5, r1, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl GetBoxMonNick - adds r0, r5, 0 - adds r1, r4, 0 - bl MonAppendGenderSymbol - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - bls _08042648 - adds r0, r7, 0 - mov r1, sp - bl StringCopy - ldr r4, _080426A8 @ =gOtherText_NewLine2 - adds r0, r7, 0 - adds r1, r4, 0 - bl StringAppend - adds r0, r7, 0 - mov r1, r9 - bl StringAppend - adds r0, r7, 0 - adds r1, r4, 0 - bl StringAppend - ldr r1, _080426AC @ =gOtherText_CancelAndLv - adds r0, r7, 0 - bl StringAppend - add sp, 0x28 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080426A8: .4byte gOtherText_NewLine2 -_080426AC: .4byte gOtherText_CancelAndLv - thumb_func_end DaycareLevelMenuGetText - - thumb_func_start DaycareLevelMenuGetLevelText -DaycareLevelMenuGetLevelText: @ 80426B0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - movs r0, 0xFF - strb r0, [r4] - movs r5, 0 - movs r0, 0xFC - mov r8, r0 - movs r7, 0x14 -_080426C6: - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 4 - adds r0, r6, r0 - movs r3, 0x88 - lsls r3, 1 - adds r1, r6, r3 - adds r1, r2 - ldr r1, [r1] - bl Daycare_GetLevelAfterSteps - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x34 - strb r0, [r4] - mov r0, r8 - strb r0, [r4, 0x1] - strb r7, [r4, 0x2] - movs r0, 0x6 - strb r0, [r4, 0x3] - adds r0, r4, 0x4 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r4, r0, 0 - mov r3, r8 - strb r3, [r4] - strb r7, [r4, 0x1] - movs r0, 0 - strb r0, [r4, 0x2] - adds r0, r4, 0x3 - ldr r1, _08042728 @ =gOtherText_NewLine2 - bl StringCopy - adds r4, r0, 0 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _080426C6 - movs r0, 0xFF - strb r0, [r4] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08042728: .4byte gOtherText_NewLine2 - thumb_func_end DaycareLevelMenuGetLevelText - - thumb_func_start DaycareLevelMenuProcessKeyInput -DaycareLevelMenuProcessKeyInput: @ 804272C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, _08042760 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08042768 - ldr r0, _08042764 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _08042816 - subs r0, r2, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x1 - negs r0, r0 - b _0804278A - .align 2, 0 -_08042760: .4byte gMain -_08042764: .4byte gTasks -_08042768: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804279C - ldr r0, _08042798 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0x2 - beq _08042816 - adds r0, r2, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x1 -_0804278A: - bl MoveMenuCursor - movs r0, 0x5 - bl PlaySE - b _08042816 - .align 2, 0 -_08042798: .4byte gTasks -_0804279C: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080427E8 - bl HandleDestroyMenuCursors - movs r0, 0x5 - bl PlaySE - ldr r3, _080427DC @ =gLastFieldPokeMenuOpened - ldr r2, _080427E0 @ =gScriptResult - ldr r1, _080427E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - strh r0, [r2] - strb r0, [r3] - adds r0, r4, 0 - bl DestroyTask - movs r0, 0xF - movs r1, 0x6 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - bl EnableBothScriptContexts - b _08042816 - .align 2, 0 -_080427DC: .4byte gLastFieldPokeMenuOpened -_080427E0: .4byte gScriptResult -_080427E4: .4byte gTasks -_080427E8: - movs r4, 0x2 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08042816 - bl HandleDestroyMenuCursors - ldr r0, _0804281C @ =gLastFieldPokeMenuOpened - ldr r1, _08042820 @ =gScriptResult - strh r4, [r1] - movs r1, 0x2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyTask - movs r0, 0xF - movs r1, 0x6 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - bl EnableBothScriptContexts -_08042816: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804281C: .4byte gLastFieldPokeMenuOpened -_08042820: .4byte gScriptResult - thumb_func_end DaycareLevelMenuProcessKeyInput - - thumb_func_start ShowDaycareLevelMenu -ShowDaycareLevelMenu: @ 8042824 - push {r4,lr} - sub sp, 0x6C - movs r0, 0xF - movs r1, 0x6 - movs r2, 0x1D - movs r3, 0xD - bl MenuDrawTextWindow - ldr r4, _08042880 @ =gSaveBlock1 + 0x2F9C - adds r0, r4, 0 - add r1, sp, 0x8 - bl DaycareLevelMenuGetText - add r0, sp, 0x8 - movs r1, 0x10 - movs r2, 0x7 - bl MenuPrint - adds r0, r4, 0 - add r1, sp, 0x8 - bl DaycareLevelMenuGetLevelText - add r0, sp, 0x8 - movs r1, 0xCE - movs r2, 0x38 - movs r3, 0x1 - bl MenuPrint_PixelCoords - movs r0, 0 - str r0, [sp] - movs r0, 0xD - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x10 - movs r2, 0x7 - movs r3, 0x3 - bl InitMenu - ldr r0, _08042884 @ =DaycareLevelMenuProcessKeyInput - movs r1, 0x3 - bl CreateTask - add sp, 0x6C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08042880: .4byte gSaveBlock1 + 0x2F9C -_08042884: .4byte DaycareLevelMenuProcessKeyInput - thumb_func_end ShowDaycareLevelMenu - - thumb_func_start ChooseSendDaycareMon -ChooseSendDaycareMon: @ 8042888 - push {lr} - movs r0, 0x6 - movs r1, 0 - bl OpenPartyMenu - ldr r1, _0804289C @ =gMain - ldr r0, _080428A0 @ =c2_exit_to_overworld_2_switch - str r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0804289C: .4byte gMain -_080428A0: .4byte c2_exit_to_overworld_2_switch - thumb_func_end ChooseSendDaycareMon - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 6b85e1e76..7bb496641 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -9975,7 +9975,7 @@ _080EAE50: lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl GetNationalPokedexFlag + bl GetSetPokedexFlag b _080EAE7C _080EAE62: ldr r0, _080EAE74 @ =gUnknown_083DB694 diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s deleted file mode 100644 index 7365f4da6..000000000 --- a/asm/egg_hatch.s +++ /dev/null @@ -1,1630 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start AddHatchedMonToParty -AddHatchedMonToParty: @ 80429EC - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - adds r5, r0, 0 - muls r5, r1 - ldr r0, _08042A9C @ =gPlayerParty - adds r5, r0 - ldr r1, _08042AA0 @ =gEnemyParty - adds r0, r5, 0 - bl CreatedHatchedMon - add r2, sp, 0xC - movs r6, 0 - strb r6, [r2] - adds r0, r5, 0 - movs r1, 0x2D - bl SetMonData - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, sp - adds r1, r4, 0 - bl GetSpeciesName - adds r0, r5, 0 - movs r1, 0x2 - mov r2, sp - bl SetMonData - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetNationalPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - bl GetNationalPokedexFlag - ldr r1, _08042AA4 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNick - mov r2, sp - adds r2, 0xE - movs r0, 0x4 - strh r0, [r2] - adds r0, r5, 0 - movs r1, 0x26 - bl SetMonData - add r2, sp, 0x10 - strh r6, [r2] - adds r0, r5, 0 - movs r1, 0x24 - bl SetMonData - bl sav1_map_get_name - mov r2, sp - adds r2, 0x12 - strb r0, [r2] - adds r0, r5, 0 - movs r1, 0x23 - bl SetMonData - adds r0, r5, 0 - bl MonRestorePP - adds r0, r5, 0 - bl CalculateMonStats - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08042A9C: .4byte gPlayerParty -_08042AA0: .4byte gEnemyParty -_08042AA4: .4byte gStringVar1 - thumb_func_end AddHatchedMonToParty - - thumb_func_start ScriptHatchMon -ScriptHatchMon: @ 8042AA8 - push {lr} - ldr r0, _08042AB8 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl AddHatchedMonToParty - pop {r0} - bx r0 - .align 2, 0 -_08042AB8: .4byte gSpecialVar_0x8004 - thumb_func_end ScriptHatchMon - - thumb_func_start sub_8042ABC -sub_8042ABC: @ 8042ABC - push {r4-r6,lr} - sub sp, 0x20 - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r0, r5, r0 - mov r1, sp - bl GetBoxMonNick - lsls r0, r4, 3 - subs r0, r4 - lsls r1, r0, 3 - adds r0, r5, r1 - adds r0, 0xC0 - ldrh r0, [r0] - cmp r0, 0 - beq _08042B40 - adds r0, r1, 0 - adds r0, 0xA0 - adds r5, r0 - adds r6, r5, 0 - adds r6, 0x2C - mov r0, sp - adds r1, r6, 0 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _08042B08 - ldr r0, _08042B30 @ =gSaveBlock2 - adds r1, r5, 0 - adds r1, 0x24 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - beq _08042B40 -_08042B08: - ldr r0, _08042B34 @ =gStringVar1 - mov r1, sp - bl StringCopy - ldr r4, _08042B38 @ =gStringVar2 - adds r1, r5, 0 - adds r1, 0x24 - adds r0, r4, 0 - bl StringCopy - ldr r0, _08042B3C @ =gStringVar3 - adds r1, r6, 0 - bl StringCopy - adds r0, r4, 0 - bl SanitizeNameString - movs r0, 0x1 - b _08042B42 - .align 2, 0 -_08042B30: .4byte gSaveBlock2 -_08042B34: .4byte gStringVar1 -_08042B38: .4byte gStringVar2 -_08042B3C: .4byte gStringVar3 -_08042B40: - movs r0, 0 -_08042B42: - add sp, 0x20 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8042ABC - - thumb_func_start sub_8042B4C -sub_8042B4C: @ 8042B4C - push {lr} - ldr r0, _08042B60 @ =gSaveBlock1 + 0x2F9C - ldr r1, _08042B64 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_8042ABC - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08042B60: .4byte gSaveBlock1 + 0x2F9C -_08042B64: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8042B4C - - thumb_func_start EggHatchCreateMonSprite -EggHatchCreateMonSprite: @ 8042B68 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r1, r2, 24 - adds r2, r1, 0 - movs r5, 0 - mov r9, r5 - movs r7, 0 - cmp r3, 0 - bne _08042B96 - movs r0, 0x64 - muls r1, r0 - ldr r0, _08042BB0 @ =gPlayerParty - adds r7, r1, r0 - movs r5, 0x1 -_08042B96: - cmp r3, 0x1 - bne _08042BA6 - movs r0, 0x64 - adds r1, r2, 0 - muls r1, r0 - ldr r0, _08042BB0 @ =gPlayerParty - adds r7, r1, r0 - movs r5, 0x3 -_08042BA6: - cmp r6, 0 - beq _08042BB4 - cmp r6, 0x1 - beq _08042C14 - b _08042C50 - .align 2, 0 -_08042BB0: .4byte gPlayerParty -_08042BB4: - adds r0, r7, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r7, 0 - movs r1, 0 - bl GetMonData - mov r8, r0 - lsls r0, r5, 3 - ldr r1, _08042C04 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08042C08 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - ldr r3, _08042C0C @ =0x02000000 - ldr r6, _08042C10 @ =gUnknown_081FAF4C - lsls r4, 1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r6 - ldr r4, [r4] - str r4, [sp] - str r5, [sp, 0x4] - mov r4, r8 - str r4, [sp, 0x8] - bl HandleLoadSpecialPokePic - adds r0, r7, 0 - bl sub_8040990 - bl LoadCompressedObjectPalette - b _08042C50 - .align 2, 0 -_08042C04: .4byte gMonFrontPicTable -_08042C08: .4byte gMonFrontPicCoords -_08042C0C: .4byte 0x02000000 -_08042C10: .4byte gUnknown_081FAF4C -_08042C14: - adds r0, r7, 0 - bl sub_8040990 - ldrh r0, [r0, 0x4] - adds r1, r5, 0 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08042C60 @ =gUnknown_02024E8C - movs r1, 0x78 - movs r2, 0x46 - movs r3, 0x6 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r4, _08042C64 @ =gSprites - lsls r1, r0, 4 - add r1, r9 - lsls r1, 2 - adds r2, r1, r4 - adds r2, 0x3E - ldrb r0, [r2] - movs r3, 0x4 - orrs r0, r3 - strb r0, [r2] - adds r4, 0x1C - adds r1, r4 - ldr r0, _08042C68 @ =SpriteCallbackDummy - str r0, [r1] -_08042C50: - mov r0, r9 - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08042C60: .4byte gUnknown_02024E8C -_08042C64: .4byte gSprites -_08042C68: .4byte SpriteCallbackDummy - thumb_func_end EggHatchCreateMonSprite - - thumb_func_start VBlankCB_EggHatch -VBlankCB_EggHatch: @ 8042C6C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end VBlankCB_EggHatch - - thumb_func_start EggHatch -EggHatch: @ 8042C80 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _08042CA8 @ =Task_EggHatch - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08042CA8: .4byte Task_EggHatch - thumb_func_end EggHatch - - thumb_func_start Task_EggHatch -Task_EggHatch: @ 8042CAC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08042CD8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08042CD0 - ldr r0, _08042CDC @ =CB2_EggHatch_0 - bl SetMainCallback2 - ldr r1, _08042CE0 @ =gFieldCallback - ldr r0, _08042CE4 @ =sub_8080990 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_08042CD0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08042CD8: .4byte gPaletteFade -_08042CDC: .4byte CB2_EggHatch_0 -_08042CE0: .4byte gFieldCallback -_08042CE4: .4byte sub_8080990 - thumb_func_end Task_EggHatch - - thumb_func_start CB2_EggHatch_0 -CB2_EggHatch_0: @ 8042CE8 - push {r4-r7,lr} - ldr r0, _08042D04 @ =gMain - ldr r1, _08042D08 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _08042CF8 - b _08042F6E -_08042CF8: - lsls r0, 2 - ldr r1, _08042D0C @ =_08042D10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08042D04: .4byte gMain -_08042D08: .4byte 0x0000043c -_08042D0C: .4byte _08042D10 - .align 2, 0 -_08042D10: - .4byte _08042D34 - .4byte _08042D90 - .4byte _08042DC4 - .4byte _08042E20 - .4byte _08042E40 - .4byte _08042E74 - .4byte _08042E88 - .4byte _08042EB0 - .4byte _08042F40 -_08042D34: - movs r0, 0x80 - lsls r0, 19 - movs r2, 0 - strh r2, [r0] - ldr r1, _08042D74 @ =gUnknown_0300481C - ldr r0, _08042D78 @ =0x02018000 - str r0, [r1] - ldr r1, _08042D7C @ =gSpecialVar_0x8004 - ldrh r1, [r1] - strb r1, [r0, 0x4] - adds r0, 0x3A - strb r2, [r0] - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _08042D80 @ =VBlankCB_EggHatch - bl SetVBlankCallback - ldr r1, _08042D84 @ =gMain - ldr r2, _08042D88 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl GetCurrentMapMusic - ldr r1, _08042D8C @ =gSpecialVar_0x8005 - strh r0, [r1] - b _08042F6E - .align 2, 0 -_08042D74: .4byte gUnknown_0300481C -_08042D78: .4byte 0x02018000 -_08042D7C: .4byte gSpecialVar_0x8004 -_08042D80: .4byte VBlankCB_EggHatch -_08042D84: .4byte gMain -_08042D88: .4byte 0x0000043c -_08042D8C: .4byte gSpecialVar_0x8005 -_08042D90: - ldr r5, _08042DBC @ =gWindowConfig_81E6F84 - adds r0, r5, 0 - bl SetUpWindowConfig - ldr r4, _08042DC0 @ =gUnknown_0300481C - ldr r0, [r4] - adds r0, 0x8 - adds r1, r5, 0 - bl InitWindowFromConfig - movs r0, 0x14 - bl SetTextWindowBaseTileNum - ldr r1, [r4] - adds r1, 0x38 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x8 - bl LoadTextWindowGraphics - b _08042F04 - .align 2, 0 -_08042DBC: .4byte gWindowConfig_81E6F84 -_08042DC0: .4byte gUnknown_0300481C -_08042DC4: - ldr r0, _08042DFC @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _08042E00 @ =gUnknown_08D00524 - ldr r4, _08042E04 @ =0x02000000 - movs r2, 0x80 - lsls r2, 4 - adds r1, r4, 0 - bl CpuSet - ldr r1, _08042E08 @ =0x040000d4 - str r4, [r1] - ldr r0, _08042E0C @ =0x06002800 - str r0, [r1, 0x4] - ldr r0, _08042E10 @ =0x80000280 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, _08042E14 @ =gUnknown_08D004E0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _08042E18 @ =gMain - ldr r2, _08042E1C @ =0x0000043c - adds r1, r2 - b _08042F0A - .align 2, 0 -_08042DFC: .4byte gUnknown_08D00000 -_08042E00: .4byte gUnknown_08D00524 -_08042E04: .4byte 0x02000000 -_08042E08: .4byte 0x040000d4 -_08042E0C: .4byte 0x06002800 -_08042E10: .4byte 0x80000280 -_08042E14: .4byte gUnknown_08D004E0 -_08042E18: .4byte gMain -_08042E1C: .4byte 0x0000043c -_08042E20: - ldr r0, _08042E34 @ =gUnknown_0820A3B0 - bl LoadSpriteSheet - ldr r0, _08042E38 @ =gUnknown_0820A3B8 - bl LoadSpriteSheet - ldr r0, _08042E3C @ =gUnknown_0820A3C0 - bl LoadSpritePalette - b _08042F04 - .align 2, 0 -_08042E34: .4byte gUnknown_0820A3B0 -_08042E38: .4byte gUnknown_0820A3B8 -_08042E3C: .4byte gUnknown_0820A3C0 -_08042E40: - ldr r0, _08042E64 @ =gSpriteTemplate_820A3C8 - movs r1, 0x78 - movs r2, 0x4B - movs r3, 0x5 - bl CreateSprite - ldr r2, _08042E68 @ =gUnknown_0300481C - ldr r1, [r2] - strb r0, [r1] - ldr r0, [r2] - ldrb r0, [r0, 0x4] - bl AddHatchedMonToParty - ldr r1, _08042E6C @ =gMain - ldr r2, _08042E70 @ =0x0000043c - adds r1, r2 - b _08042F0A - .align 2, 0 -_08042E64: .4byte gSpriteTemplate_820A3C8 -_08042E68: .4byte gUnknown_0300481C -_08042E6C: .4byte gMain -_08042E70: .4byte 0x0000043c -_08042E74: - ldr r0, _08042E84 @ =gUnknown_0300481C - ldr r0, [r0] - ldrb r2, [r0, 0x4] - movs r0, 0 - movs r1, 0 - bl EggHatchCreateMonSprite - b _08042F04 - .align 2, 0 -_08042E84: .4byte gUnknown_0300481C -_08042E88: - ldr r4, _08042EA4 @ =gUnknown_0300481C - ldr r0, [r4] - ldrb r2, [r0, 0x4] - movs r0, 0 - movs r1, 0x1 - bl EggHatchCreateMonSprite - ldr r1, [r4] - strb r0, [r1, 0x1] - ldr r1, _08042EA8 @ =gMain - ldr r2, _08042EAC @ =0x0000043c - adds r1, r2 - b _08042F0A - .align 2, 0 -_08042EA4: .4byte gUnknown_0300481C -_08042EA8: .4byte gMain -_08042EAC: .4byte 0x0000043c -_08042EB0: - ldr r0, _08042F14 @ =REG_BG2CNT - ldr r2, _08042F18 @ =0x00004c06 - adds r1, r2, 0 - strh r1, [r0] - ldr r0, _08042F1C @ =gUnknown_0820C9F8 - movs r1, 0x10 - movs r2, 0xA0 - bl LoadPalette - ldr r3, _08042F20 @ =gUnknown_0820CA98 - ldr r4, _08042F24 @ =0x06004000 - movs r5, 0x98 - lsls r5, 5 - ldr r1, _08042F28 @ =0x040000d4 - ldr r6, _08042F2C @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08042ED6: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _08042ED6 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _08042F30 @ =gUnknown_0820F798 - ldr r2, _08042F34 @ =0x06006000 - ldr r0, _08042F28 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08042F2C @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] -_08042F04: - ldr r1, _08042F38 @ =gMain - ldr r0, _08042F3C @ =0x0000043c - adds r1, r0 -_08042F0A: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08042F6E - .align 2, 0 -_08042F14: .4byte REG_BG2CNT -_08042F18: .4byte 0x00004c06 -_08042F1C: .4byte gUnknown_0820C9F8 -_08042F20: .4byte gUnknown_0820CA98 -_08042F24: .4byte 0x06004000 -_08042F28: .4byte 0x040000d4 -_08042F2C: .4byte 0x80000800 -_08042F30: .4byte gUnknown_0820F798 -_08042F34: .4byte 0x06006000 -_08042F38: .4byte gMain -_08042F3C: .4byte 0x0000043c -_08042F40: - ldr r1, _08042F74 @ =REG_BG1CNT - ldr r2, _08042F78 @ =0x00000501 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08042F7C @ =REG_BG0HOFS - movs r4, 0 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - ldr r0, _08042F80 @ =CB2_EggHatch_1 - bl SetMainCallback2 - ldr r0, _08042F84 @ =gUnknown_0300481C - ldr r0, [r0] - strb r4, [r0, 0x2] -_08042F6E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08042F74: .4byte REG_BG1CNT -_08042F78: .4byte 0x00000501 -_08042F7C: .4byte REG_BG0HOFS -_08042F80: .4byte CB2_EggHatch_1 -_08042F84: .4byte gUnknown_0300481C - thumb_func_end CB2_EggHatch_0 - - thumb_func_start EggHatchSetMonNickname -EggHatchSetMonNickname: @ 8042F88 - push {lr} - ldr r0, _08042FA8 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08042FAC @ =gPlayerParty - adds r0, r1 - ldr r2, _08042FB0 @ =gStringVar3 - movs r1, 0x2 - bl SetMonData - ldr r0, _08042FB4 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08042FA8: .4byte gSpecialVar_0x8004 -_08042FAC: .4byte gPlayerParty -_08042FB0: .4byte gStringVar3 -_08042FB4: .4byte c2_exit_to_overworld_2_switch - thumb_func_end EggHatchSetMonNickname - - thumb_func_start Task_EggHatchPlayBGM -Task_EggHatchPlayBGM: @ 8042FB8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08043004 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08042FD4 - bl StopMapMusic -_08042FD4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _08042FE4 - movs r0, 0xBC - lsls r0, 1 - bl PlayBGM -_08042FE4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x3C - ble _08042FF8 - ldr r0, _08043008 @ =0x00000179 - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08042FF8: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08043004: .4byte gTasks -_08043008: .4byte 0x00000179 - thumb_func_end Task_EggHatchPlayBGM - - thumb_func_start CB2_EggHatch_1 -CB2_EggHatch_1: @ 804300C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - ldr r1, _08043030 @ =gUnknown_0300481C - ldr r0, [r1] - ldrb r0, [r0, 0x2] - adds r5, r1, 0 - cmp r0, 0xB - bls _08043026 - b _080432BA -_08043026: - lsls r0, 2 - ldr r1, _08043034 @ =_08043038 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08043030: .4byte gUnknown_0300481C -_08043034: .4byte _08043038 - .align 2, 0 -_08043038: - .4byte _08043068 - .4byte _080430A0 - .4byte _080430C0 - .4byte _080430F8 - .4byte _08043124 - .4byte _08043164 - .4byte _08043172 - .4byte _08043180 - .4byte _080431B8 - .4byte _080431DA - .4byte _08043288 - .4byte _080432A8 -_08043068: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xBA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08043098 @ =gUnknown_0300481C - ldr r1, [r0] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - ldr r0, _0804309C @ =Task_EggHatchPlayBGM - movs r1, 0x5 - bl CreateTask - b _080432BA - .align 2, 0 -_08043098: .4byte gUnknown_0300481C -_0804309C: .4byte Task_EggHatchPlayBGM -_080430A0: - ldr r0, _080430BC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080430B2 - b _080432BA -_080430B2: - ldr r0, [r5] - strb r1, [r0, 0x3] - ldr r1, [r5] - b _0804329C - .align 2, 0 -_080430BC: .4byte gPaletteFade -_080430C0: - ldr r1, [r5] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bhi _080430D2 - b _080432BA -_080430D2: - ldr r1, [r5] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - ldr r2, _080430F0 @ =gSprites - ldr r0, [r5] - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080430F4 @ =SpriteCB_Egg_0 - str r1, [r0] - b _080432BA - .align 2, 0 -_080430F0: .4byte gSprites -_080430F4: .4byte SpriteCB_Egg_0 -_080430F8: - ldr r2, _0804311C @ =gSprites - ldr r3, [r5] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08043120 @ =SpriteCallbackDummy - cmp r1, r0 - beq _08043112 - b _080432BA -_08043112: - ldrb r0, [r3, 0x2] - adds r0, 0x1 - strb r0, [r3, 0x2] - b _080432BA - .align 2, 0 -_0804311C: .4byte gSprites -_08043120: .4byte SpriteCallbackDummy -_08043124: - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08043150 @ =gPlayerParty - adds r0, r1 - ldr r1, _08043154 @ =gStringVar1 - bl GetMonNick - ldr r4, _08043158 @ =gStringVar4 - ldr r1, _0804315C @ =gOtherText_HatchedFromEgg - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - bl EggHatchPrintMessage2 - ldr r0, _08043160 @ =0x00000173 - bl PlayFanfare - ldr r1, [r5] - b _0804329C - .align 2, 0 -_08043150: .4byte gPlayerParty -_08043154: .4byte gStringVar1 -_08043158: .4byte gStringVar4 -_0804315C: .4byte gOtherText_HatchedFromEgg -_08043160: .4byte 0x00000173 -_08043164: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - bne _08043170 - b _080432BA -_08043170: - b _08043298 -_08043172: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - bne _0804317E - b _080432BA -_0804317E: - b _08043298 -_08043180: - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080431A8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080431AC @ =gStringVar1 - bl GetMonNick - ldr r4, _080431B0 @ =gStringVar4 - ldr r1, _080431B4 @ =gOtherText_NickHatchPrompt - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - bl EggHatchPrintMessage1 - ldr r1, [r5] - b _0804329C - .align 2, 0 -_080431A8: .4byte gPlayerParty -_080431AC: .4byte gStringVar1 -_080431B0: .4byte gStringVar4 -_080431B4: .4byte gOtherText_NickHatchPrompt -_080431B8: - bl EggHatchUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _080432BA - movs r0, 0x16 - movs r1, 0x8 - movs r2, 0x1B - movs r3, 0xD - bl MenuDrawTextWindow - movs r0, 0x16 - movs r1, 0x8 - movs r2, 0x4 - bl InitYesNoMenu - b _08043298 -_080431DA: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - movs r1, 0x2 - negs r1, r1 - cmp r0, r1 - beq _080432BA - lsls r0, r2, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08043298 - cmp r1, 0x1 - beq _08043298 - ldr r0, _08043278 @ =gUnknown_0300481C - mov r9, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - movs r1, 0x64 - mov r8, r1 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldr r6, _0804327C @ =gPlayerParty - adds r0, r6 - ldr r1, _08043280 @ =gStringVar3 - mov r10, r1 - bl GetMonNick - mov r2, r9 - ldr r0, [r2] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r2, r9 - ldr r0, [r2] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - bl GetMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r2, r9 - ldr r0, [r2] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0 - movs r2, 0 - bl GetMonData - str r0, [sp] - ldr r0, _08043284 @ =EggHatchSetMonNickname - str r0, [sp, 0x4] - movs r0, 0x3 - mov r1, r10 - adds r2, r5, 0 - adds r3, r4, 0 - bl DoNamingScreen - b _080432BA - .align 2, 0 -_08043278: .4byte gUnknown_0300481C -_0804327C: .4byte gPlayerParty -_08043280: .4byte gStringVar3 -_08043284: .4byte EggHatchSetMonNickname -_08043288: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08043298: - ldr r0, _080432A4 @ =gUnknown_0300481C - ldr r1, [r0] -_0804329C: - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - b _080432BA - .align 2, 0 -_080432A4: .4byte gUnknown_0300481C -_080432A8: - ldr r0, _080432DC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080432BA - ldr r0, _080432E0 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 -_080432BA: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080432DC: .4byte gPaletteFade -_080432E0: .4byte c2_exit_to_overworld_2_switch - thumb_func_end CB2_EggHatch_1 - - thumb_func_start SpriteCB_Egg_0 -SpriteCB_Egg_0: @ 80432E4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08043304 - ldr r0, _08043300 @ =SpriteCB_Egg_1 - str r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r4, 0x2E] - b _08043334 - .align 2, 0 -_08043300: .4byte SpriteCB_Egg_1 -_08043304: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x1 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _08043334 - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - bl CreateRandomEggShardSprite -_08043334: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_0 - - thumb_func_start SpriteCB_Egg_1 -SpriteCB_Egg_1: @ 804333C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _08043398 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0804336C - ldr r0, _08043368 @ =SpriteCB_Egg_2 - str r0, [r4, 0x1C] - strh r1, [r4, 0x2E] - strh r1, [r4, 0x32] - b _08043398 - .align 2, 0 -_08043368: .4byte SpriteCB_Egg_2 -_0804336C: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x2 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _08043398 - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim -_08043398: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_1 - - thumb_func_start SpriteCB_Egg_2 -SpriteCB_Egg_2: @ 80433A0 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - movs r6, 0 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _0804345A - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x26 - ble _08043418 - ldr r0, _08043404 @ =SpriteCB_Egg_3 - str r0, [r4, 0x1C] - strh r6, [r4, 0x2E] - ldr r5, _08043408 @ =gUnknown_0300481C - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804340C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - ldr r4, _08043410 @ =gSprites - ldr r3, [r5] - ldrb r2, [r3, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r6, [r1, 0x24] - ldrb r2, [r3, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldr r2, _08043414 @ =gMonFrontPicCoords - lsrs r0, 14 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - b _0804345A - .align 2, 0 -_08043404: .4byte SpriteCB_Egg_3 -_08043408: .4byte gUnknown_0300481C -_0804340C: .4byte gPlayerParty -_08043410: .4byte gSprites -_08043414: .4byte gMonFrontPicCoords -_08043418: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x2 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _0804344C - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - bl CreateRandomEggShardSprite - bl CreateRandomEggShardSprite -_0804344C: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1E - bne _0804345A - movs r0, 0x17 - bl PlaySE -_0804345A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_2 - - thumb_func_start SpriteCB_Egg_3 -SpriteCB_Egg_3: @ 8043460 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - ble _0804347A - ldr r0, _08043480 @ =SpriteCB_Egg_4 - str r0, [r1, 0x1C] - movs r0, 0 - strh r0, [r1, 0x2E] -_0804347A: - pop {r0} - bx r0 - .align 2, 0 -_08043480: .4byte SpriteCB_Egg_4 - thumb_func_end SpriteCB_Egg_3 - - thumb_func_start SpriteCB_Egg_4 -SpriteCB_Egg_4: @ 8043484 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080434A4 - movs r1, 0x1 - negs r1, r1 - ldr r0, _080434F8 @ =0x0000ffff - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080434A4: - ldrh r0, [r5, 0x2E] - cmp r0, 0x3 - bhi _080434C0 - movs r4, 0 -_080434AC: - bl CreateRandomEggShardSprite - lsls r0, r4, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080434AC -_080434C0: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - ldr r0, _080434FC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080434EE - movs r0, 0x71 - bl PlaySE - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _08043500 @ =SpriteCB_Egg_5 - str r0, [r5, 0x1C] - strh r4, [r5, 0x2E] -_080434EE: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080434F8: .4byte 0x0000ffff -_080434FC: .4byte gPaletteFade -_08043500: .4byte SpriteCB_Egg_5 - thumb_func_end SpriteCB_Egg_4 - - thumb_func_start SpriteCB_Egg_5 -SpriteCB_Egg_5: @ 8043504 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08043540 - ldr r4, _08043594 @ =gSprites - ldr r3, _08043598 @ =gUnknown_0300481C - ldr r0, [r3] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, [r3] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAffineAnim -_08043540: - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x8 - bne _0804355A - movs r1, 0x1 - negs r1, r1 - ldr r0, _0804359C @ =0x0000ffff - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0804355A: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x9 - bgt _08043578 - ldr r2, _08043594 @ =gSprites - ldr r0, _08043598 @ =gUnknown_0300481C - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x1 - strh r1, [r0, 0x22] -_08043578: - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x28 - ble _08043586 - ldr r0, _080435A0 @ =SpriteCallbackDummy - str r0, [r5, 0x1C] -_08043586: - adds r0, r1, 0x1 - strh r0, [r5, 0x2E] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08043594: .4byte gSprites -_08043598: .4byte gUnknown_0300481C -_0804359C: .4byte 0x0000ffff -_080435A0: .4byte SpriteCallbackDummy - thumb_func_end SpriteCB_Egg_5 - - thumb_func_start SpriteCB_EggShard -SpriteCB_EggShard: @ 80435A4 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - adds r0, r1 - strh r0, [r2, 0x36] - ldrh r1, [r2, 0x32] - ldrh r3, [r2, 0x38] - adds r0, r1, r3 - strh r0, [r2, 0x38] - movs r4, 0x36 - ldrsh r0, [r2, r4] - cmp r0, 0 - bge _080435C2 - adds r0, 0xFF -_080435C2: - asrs r0, 8 - strh r0, [r2, 0x24] - movs r3, 0x38 - ldrsh r0, [r2, r3] - cmp r0, 0 - bge _080435D0 - adds r0, 0xFF -_080435D0: - asrs r0, 8 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r3, r1, r0 - strh r3, [r2, 0x32] - movs r4, 0x22 - ldrsh r1, [r2, r4] - movs r4, 0x26 - ldrsh r0, [r2, r4] - adds r0, r1, r0 - adds r1, 0x14 - cmp r0, r1 - ble _080435F6 - lsls r0, r3, 16 - cmp r0, 0 - ble _080435F6 - adds r0, r2, 0 - bl DestroySprite -_080435F6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_EggShard - - thumb_func_start CreateRandomEggShardSprite -CreateRandomEggShardSprite: @ 80435FC - push {r4-r6,lr} - sub sp, 0x8 - ldr r3, _0804364C @ =gEggShardVelocities - ldr r0, _08043650 @ =gUnknown_0300481C - ldr r4, [r0] - adds r4, 0x3A - ldrb r2, [r4] - lsls r0, r2, 2 - adds r1, r0, r3 - ldrh r6, [r1] - adds r3, 0x2 - adds r0, r3 - ldrh r5, [r0] - adds r2, 0x1 - strb r2, [r4] - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsls r6, 16 - asrs r6, 16 - lsls r5, 16 - asrs r5, 16 - movs r0, 0x64 - str r0, [sp] - lsrs r1, 16 - str r1, [sp, 0x4] - movs r0, 0x78 - movs r1, 0x3C - adds r2, r6, 0 - adds r3, r5, 0 - bl CreateEggShardSprite - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804364C: .4byte gEggShardVelocities -_08043650: .4byte gUnknown_0300481C - thumb_func_end CreateRandomEggShardSprite - - thumb_func_start CreateEggShardSprite -CreateEggShardSprite: @ 8043654 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - mov r8, r3 - ldr r0, [sp, 0x1C] - mov r9, r0 - ldr r1, [sp, 0x20] - mov r10, r1 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - lsrs r6, 16 - mov r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r1, r9 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _080436CC @ =gSpriteTemplate_820A418 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0x4 - bl CreateSprite - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080436D0 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x30] - mov r1, r8 - strh r1, [r0, 0x32] - mov r1, r9 - strh r1, [r0, 0x34] - mov r1, r10 - bl StartSpriteAnim - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080436CC: .4byte gSpriteTemplate_820A418 -_080436D0: .4byte gSprites - thumb_func_end CreateEggShardSprite - - thumb_func_start EggHatchPrintMessage1 -EggHatchPrintMessage1: @ 80436D4 - push {lr} - sub sp, 0x4 - adds r1, r0, 0 - ldr r0, _080436F8 @ =gUnknown_0300481C - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x8 - adds r2, 0x38 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x3 - bl sub_8002EB0 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080436F8: .4byte gUnknown_0300481C - thumb_func_end EggHatchPrintMessage1 - - thumb_func_start EggHatchPrintMessage2 -EggHatchPrintMessage2: @ 80436FC - push {lr} - sub sp, 0x4 - adds r1, r0, 0 - ldr r0, _08043720 @ =gUnknown_0300481C - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x8 - adds r2, 0x38 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x3 - bl sub_8003460 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08043720: .4byte gUnknown_0300481C - thumb_func_end EggHatchPrintMessage2 - - thumb_func_start EggHatchUpdateWindowText -EggHatchUpdateWindowText: @ 8043724 - push {lr} - ldr r0, _08043738 @ =gUnknown_0300481C - ldr r0, [r0] - adds r0, 0x8 - bl sub_80035AC - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08043738: .4byte gUnknown_0300481C - thumb_func_end EggHatchUpdateWindowText - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s deleted file mode 100644 index 1130e085e..000000000 --- a/asm/evolution_graphics.s +++ /dev/null @@ -1,1829 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_84 -nullsub_84: @ 814951C - bx lr - thumb_func_end nullsub_84 - - thumb_func_start sub_8149520 -sub_8149520: @ 8149520 - push {r4,r5,lr} - sub sp, 0x4 - movs r4, 0 - ldr r5, _08149554 @ =gUnknown_08416ED0 -_08149528: - adds r0, r4, 0 - adds r0, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 1 - adds r1, r5 - ldrh r1, [r1] - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xB - bls _08149528 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149554: .4byte gUnknown_08416ED0 - thumb_func_end sub_8149520 - - thumb_func_start sub_8149558 -sub_8149558: @ 8149558 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - ble _08149606 - movs r2, 0x3C - ldrsh r0, [r4, r2] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x50 - bl __divsi3 - movs r1, 0x58 - subs r1, r0 - strh r1, [r4, 0x22] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _08149592 - adds r0, 0x3 -_08149592: - asrs r0, 2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x3A] - adds r0, 0x4 - strh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081495BC - ldrh r0, [r4, 0x38] - subs r0, 0x1 - strh r0, [r4, 0x38] -_081495BC: - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - movs r1, 0x26 - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _081495D2 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1 - b _081495D8 -_081495D2: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x14 -_081495D8: - strb r0, [r1] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _081495E4 - adds r0, 0x3 -_081495E4: - asrs r0, 2 - adds r0, 0x14 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _081495F2 - movs r2, 0x1F -_081495F2: - movs r0, 0x1F - ands r2, r0 - lsls r2, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - b _0814960C -_08149606: - adds r0, r4, 0 - bl DestroySprite -_0814960C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8149558 - - thumb_func_start sub_8149614 -sub_8149614: @ 8149614 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08149664 @ =gSpriteTemplate_8416EB8 - movs r1, 0x78 - movs r2, 0x58 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0814965E - ldr r4, _08149668 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - movs r0, 0x30 - strh r0, [r2, 0x38] - strh r5, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0x34 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r2, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r2, 0x3] - adds r4, 0x1C - adds r3, r4 - ldr r0, _0814966C @ =sub_8149558 - str r0, [r3] -_0814965E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149664: .4byte gSpriteTemplate_8416EB8 -_08149668: .4byte gSprites -_0814966C: .4byte sub_8149558 - thumb_func_end sub_8149614 - - thumb_func_start sub_8149670 -sub_8149670: @ 8149670 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0x57 - bgt _081496D6 - movs r2, 0x3C - ldrsh r0, [r4, r2] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x5 - bl __divsi3 - adds r0, 0x8 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _081496A8 - adds r0, 0x3 -_081496A8: - asrs r0, 2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r0, 26 - lsrs r0, 24 - movs r1, 0x28 - bl Sin - adds r0, 0x8 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - b _081496DC -_081496D6: - adds r0, r4, 0 - bl DestroySprite -_081496DC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8149670 - - thumb_func_start sub_81496E4 -sub_81496E4: @ 81496E4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08149740 @ =gSpriteTemplate_8416EB8 - movs r1, 0x78 - movs r2, 0x8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0814973A - ldr r4, _08149744 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - movs r0, 0x8 - strh r0, [r2, 0x38] - strh r5, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0xC - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x32 - orrs r0, r1 - strb r0, [r2, 0x3] - adds r2, 0x43 - movs r0, 0x1 - strb r0, [r2] - adds r4, 0x1C - adds r3, r4 - ldr r0, _08149748 @ =sub_8149670 - str r0, [r3] -_0814973A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149740: .4byte gSpriteTemplate_8416EB8 -_08149744: .4byte gSprites -_08149748: .4byte sub_8149670 - thumb_func_end sub_81496E4 - - thumb_func_start sub_814974C -sub_814974C: @ 814974C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - ble _08149788 - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x38] - ldrh r1, [r4, 0x34] - subs r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3A] - adds r0, 0x4 - strh r0, [r4, 0x3A] - b _0814978E -_08149788: - adds r0, r4, 0 - bl DestroySprite -_0814978E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_814974C - - thumb_func_start sub_8149794 -sub_8149794: @ 8149794 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _081497F0 @ =gSpriteTemplate_8416EB8 - movs r1, 0x78 - movs r2, 0x38 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081497EA - ldr r4, _081497F4 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - strh r5, [r2, 0x34] - movs r0, 0x78 - strh r0, [r2, 0x38] - strh r6, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0x7C - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r2, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r2, 0x3] - adds r2, 0x43 - movs r0, 0x1 - strb r0, [r2] - adds r4, 0x1C - adds r3, r4 - ldr r0, _081497F8 @ =sub_814974C - str r0, [r3] -_081497EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081497F0: .4byte gSpriteTemplate_8416EB8 -_081497F4: .4byte gSprites -_081497F8: .4byte sub_814974C - thumb_func_end sub_8149794 - - thumb_func_start sub_81497FC -sub_81497FC: @ 81497FC - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08149810 - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_08149810: - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x7F - bgt _081498C0 - lsls r0, r1, 24 - lsrs r0, 24 - movs r5, 0x38 - ldrsh r1, [r4, r5] - bl Sin - negs r0, r0 - strh r0, [r4, 0x26] - movs r0, 0x34 - ldrsh r1, [r4, r0] - movs r2, 0x3C - ldrsh r0, [r4, r2] - muls r0, r1 - movs r1, 0x3 - bl __divsi3 - adds r0, 0x78 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x3A] - adds r3, r0, 0x1 - strh r3, [r4, 0x3A] - movs r5, 0x3A - ldrsh r1, [r4, r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - cmp r0, 0 - bge _08149854 - adds r0, 0x7F -_08149854: - asrs r0, 7 - movs r1, 0x1F - subs r1, r0 - lsls r1, 24 - lsrs r2, r1, 24 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x40 - ble _08149870 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1 - strb r0, [r1] - b _081498A0 -_08149870: - adds r3, r4, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x14 - strb r0, [r1] - ldrh r1, [r4, 0x3A] - movs r5, 0x3A - ldrsh r0, [r4, r5] - cmp r0, 0x70 - ble _081498A0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081498A0 - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] -_081498A0: - cmp r2, 0x13 - bhi _081498A6 - movs r2, 0x14 -_081498A6: - movs r0, 0x1F - ands r2, r0 - lsls r2, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - b _081498C6 -_081498C0: - adds r0, r4, 0 - bl DestroySprite -_081498C6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81497FC - - thumb_func_start sub_81498CC -sub_81498CC: @ 81498CC - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, _08149948 @ =gSpriteTemplate_8416EB8 - movs r1, 0x78 - movs r2, 0x38 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _0814993C - bl Random - ldr r6, _0814994C @ =gSprites - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - adds r4, r5, r6 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - bl __umodsi3 - movs r1, 0x3 - subs r1, r0 - movs r0, 0 - mov r8, r0 - strh r1, [r4, 0x34] - bl Random - movs r1, 0x3F - ands r1, r0 - adds r1, 0x30 - strh r1, [r4, 0x38] - mov r0, r8 - strh r0, [r4, 0x3C] - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r4, 0x3] - adds r4, 0x43 - movs r0, 0x14 - strb r0, [r4] - adds r6, 0x1C - adds r5, r6 - ldr r0, _08149950 @ =sub_81497FC - str r0, [r5] -_0814993C: - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149948: .4byte gSpriteTemplate_8416EB8 -_0814994C: .4byte gSprites -_08149950: .4byte sub_81497FC - thumb_func_end sub_81498CC - - thumb_func_start sub_8149954 -sub_8149954: @ 8149954 - push {lr} - ldr r0, _08149968 @ =gUnknown_08416E84 - bl LoadCompressedObjectPic - ldr r0, _0814996C @ =gUnknown_08416E94 - bl LoadSpritePalettes - pop {r0} - bx r0 - .align 2, 0 -_08149968: .4byte gUnknown_08416E84 -_0814996C: .4byte gUnknown_08416E94 - thumb_func_end sub_8149954 - - thumb_func_start sub_8149970 -sub_8149970: @ 8149970 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08149998 @ =sub_81499A0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0814999C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08149998: .4byte sub_81499A0 -_0814999C: .4byte gTasks - thumb_func_end sub_8149970 - - thumb_func_start sub_81499A0 -sub_81499A0: @ 81499A0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r0, _081499E4 @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - movs r0, 0xA - ldrsh r1, [r5, r0] - movs r0, 0x3 - lsls r0, r1 - ldr r1, _081499E8 @ =0x00007fff - str r1, [sp] - movs r1, 0xA - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _081499EC @ =sub_81499F0 - str r0, [r5] - movs r0, 0x8C - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081499E4: .4byte gTasks -_081499E8: .4byte 0x00007fff -_081499EC: .4byte sub_81499F0 - thumb_func_end sub_81499A0 - - thumb_func_start sub_81499F0 -sub_81499F0: @ 81499F0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08149A48 @ =gTasks - lsls r3, r5, 2 - adds r0, r3, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x26] - movs r4, 0x26 - ldrsh r0, [r1, r4] - cmp r0, 0x3F - bgt _08149A4C - movs r0, 0x7 - ands r0, r2 - adds r7, r3, 0 - cmp r0, 0 - bne _08149A36 - movs r4, 0 - adds r6, r1, 0 -_08149A18: - ldrh r1, [r6, 0x26] - movs r0, 0x78 - ands r0, r1 - lsls r0, 1 - lsls r1, r4, 6 - adds r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl sub_8149614 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08149A18 -_08149A36: - ldr r0, _08149A48 @ =gTasks - adds r1, r7, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149A54 - .align 2, 0 -_08149A48: .4byte gTasks -_08149A4C: - movs r0, 0x60 - strh r0, [r1, 0x26] - ldr r0, _08149A5C @ =sub_8149A60 - str r0, [r1] -_08149A54: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08149A5C: .4byte sub_8149A60 - thumb_func_end sub_81499F0 - - thumb_func_start sub_8149A60 -sub_8149A60: @ 8149A60 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _08149A80 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - ldrh r3, [r1, 0x26] - movs r4, 0x26 - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _08149A84 - subs r0, r3, 0x1 - strh r0, [r1, 0x26] - b _08149A8A - .align 2, 0 -_08149A80: .4byte gTasks -_08149A84: - adds r0, r2, 0 - bl DestroyTask -_08149A8A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8149A60 - - thumb_func_start sub_8149A90 -sub_8149A90: @ 8149A90 - push {lr} - ldr r0, _08149AA4 @ =sub_8149AA8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08149AA4: .4byte sub_8149AA8 - thumb_func_end sub_8149A90 - - thumb_func_start sub_8149AA8 -sub_8149AA8: @ 8149AA8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r1, _08149AD4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x26] - ldr r1, _08149AD8 @ =sub_8149ADC - str r1, [r0] - movs r0, 0xB7 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08149AD4: .4byte gTasks -_08149AD8: .4byte sub_8149ADC - thumb_func_end sub_8149AA8 - - thumb_func_start sub_8149ADC -sub_8149ADC: @ 8149ADC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08149B20 @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0x5F - bgt _08149B24 - adds r6, r2, 0 - cmp r0, 0x5 - bgt _08149B0E - movs r4, 0 -_08149AFC: - lsls r0, r4, 28 - lsrs r0, 24 - bl sub_81496E4 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x8 - bls _08149AFC -_08149B0E: - ldr r0, _08149B20 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149B28 - .align 2, 0 -_08149B20: .4byte gTasks -_08149B24: - ldr r0, _08149B30 @ =sub_8149B34 - str r0, [r1] -_08149B28: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149B30: .4byte sub_8149B34 - thumb_func_end sub_8149ADC - - thumb_func_start sub_8149B34 -sub_8149B34: @ 8149B34 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - pop {r0} - bx r0 - thumb_func_end sub_8149B34 - - thumb_func_start sub_8149B44 -sub_8149B44: @ 8149B44 - push {lr} - ldr r0, _08149B58 @ =sub_8149B5C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08149B58: .4byte sub_8149B5C - thumb_func_end sub_8149B44 - - thumb_func_start sub_8149B5C -sub_8149B5C: @ 8149B5C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r1, _08149B88 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x26] - ldr r1, _08149B8C @ =sub_8149B90 - str r1, [r0] - movs r0, 0x66 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08149B88: .4byte gTasks -_08149B8C: .4byte sub_8149B90 - thumb_func_end sub_8149B5C - - thumb_func_start sub_8149B90 -sub_8149B90: @ 8149B90 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08149BFC @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0x2F - bgt _08149C00 - adds r6, r2, 0 - cmp r0, 0 - bne _08149BC4 - movs r4, 0 -_08149BB0: - lsls r0, r4, 28 - lsrs r0, 24 - movs r1, 0x4 - bl sub_8149794 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _08149BB0 -_08149BC4: - ldr r0, _08149BFC @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0x20 - bne _08149BEA - movs r4, 0 -_08149BD6: - lsls r0, r4, 28 - lsrs r0, 24 - movs r1, 0x8 - bl sub_8149794 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _08149BD6 -_08149BEA: - ldr r0, _08149BFC @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149C04 - .align 2, 0 -_08149BFC: .4byte gTasks -_08149C00: - ldr r0, _08149C0C @ =sub_8149C10 - str r0, [r1] -_08149C04: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149C0C: .4byte sub_8149C10 - thumb_func_end sub_8149B90 - - thumb_func_start sub_8149C10 -sub_8149C10: @ 8149C10 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - pop {r0} - bx r0 - thumb_func_end sub_8149C10 - - thumb_func_start sub_8149C20 -sub_8149C20: @ 8149C20 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08149C48 @ =sub_8149C50 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08149C4C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xC] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08149C48: .4byte sub_8149C50 -_08149C4C: .4byte gTasks - thumb_func_end sub_8149C20 - - thumb_func_start sub_8149C50 -sub_8149C50: @ 8149C50 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r0, _08149C98 @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - ldr r0, _08149C9C @ =gPlttBufferFaded + 0x40 - ldr r1, _08149CA0 @ =gPlttBufferUnfaded + 0x40 - movs r2, 0x30 - bl CpuSet - ldr r0, _08149CA4 @ =0xfff9001c - ldr r1, _08149CA8 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08149CAC @ =sub_8149CB0 - str r0, [r5] - movs r0, 0xCA - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149C98: .4byte gTasks -_08149C9C: .4byte gPlttBufferFaded + 0x40 -_08149CA0: .4byte gPlttBufferUnfaded + 0x40 -_08149CA4: .4byte 0xfff9001c -_08149CA8: .4byte 0x00007fff -_08149CAC: .4byte sub_8149CB0 - thumb_func_end sub_8149C50 - - thumb_func_start sub_8149CB0 -sub_8149CB0: @ 8149CB0 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08149CE8 @ =gTasks - lsls r5, r6, 2 - adds r0, r5, r6 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x26 - ldrsh r2, [r1, r0] - cmp r2, 0x7F - bgt _08149D2C - adds r0, r2, 0 - cmp r0, 0 - beq _08149CEC - cmp r0, 0x20 - beq _08149D00 - cmp r2, 0x31 - bgt _08149D10 - bl Random - movs r1, 0x7 - ands r0, r1 - bl sub_81498CC - b _08149D10 - .align 2, 0 -_08149CE8: .4byte gTasks -_08149CEC: - movs r4, 0 -_08149CEE: - adds r0, r4, 0 - bl sub_81498CC - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08149CEE - b _08149D10 -_08149D00: - ldr r0, _08149D20 @ =0xffff001c - ldr r1, _08149D24 @ =0x00007fff - str r1, [sp] - movs r1, 0x10 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08149D10: - ldr r0, _08149D28 @ =gTasks - adds r1, r5, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149D30 - .align 2, 0 -_08149D20: .4byte 0xffff001c -_08149D24: .4byte 0x00007fff -_08149D28: .4byte gTasks -_08149D2C: - ldr r0, _08149D38 @ =sub_8149D3C - str r0, [r1] -_08149D30: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149D38: .4byte sub_8149D3C - thumb_func_end sub_8149CB0 - - thumb_func_start sub_8149D3C -sub_8149D3C: @ 8149D3C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08149D58 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08149D54 - adds r0, r2, 0 - bl DestroyTask -_08149D54: - pop {r0} - bx r0 - .align 2, 0 -_08149D58: .4byte gPaletteFade - thumb_func_end sub_8149D3C - - thumb_func_start sub_8149D5C -sub_8149D5C: @ 8149D5C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08149D84 @ =sub_8149D8C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08149D88 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xC] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08149D84: .4byte sub_8149D8C -_08149D88: .4byte gTasks - thumb_func_end sub_8149D5C - - thumb_func_start sub_8149D8C -sub_8149D8C: @ 8149D8C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r0, _08149DD4 @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - ldr r0, _08149DD8 @ =gPlttBufferFaded + 0x40 - ldr r1, _08149DDC @ =gPlttBufferUnfaded + 0x40 - movs r2, 0x30 - bl CpuSet - ldr r0, _08149DE0 @ =0xfff90001 - ldr r1, _08149DE4 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08149DE8 @ =sub_8149DEC - str r0, [r5] - movs r0, 0xCA - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149DD4: .4byte gTasks -_08149DD8: .4byte gPlttBufferFaded + 0x40 -_08149DDC: .4byte gPlttBufferUnfaded + 0x40 -_08149DE0: .4byte 0xfff90001 -_08149DE4: .4byte 0x00007fff -_08149DE8: .4byte sub_8149DEC - thumb_func_end sub_8149D8C - - thumb_func_start sub_8149DEC -sub_8149DEC: @ 8149DEC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08149E24 @ =gTasks - lsls r5, r6, 2 - adds r0, r5, r6 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x26 - ldrsh r2, [r1, r0] - cmp r2, 0x7F - bgt _08149E68 - adds r0, r2, 0 - cmp r0, 0 - beq _08149E28 - cmp r0, 0x20 - beq _08149E3C - cmp r2, 0x31 - bgt _08149E4C - bl Random - movs r1, 0x7 - ands r0, r1 - bl sub_81498CC - b _08149E4C - .align 2, 0 -_08149E24: .4byte gTasks -_08149E28: - movs r4, 0 -_08149E2A: - adds r0, r4, 0 - bl sub_81498CC - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08149E2A - b _08149E4C -_08149E3C: - ldr r0, _08149E5C @ =0xffff0001 - ldr r1, _08149E60 @ =0x00007fff - str r1, [sp] - movs r1, 0x10 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08149E4C: - ldr r0, _08149E64 @ =gTasks - adds r1, r5, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149E6C - .align 2, 0 -_08149E5C: .4byte 0xffff0001 -_08149E60: .4byte 0x00007fff -_08149E64: .4byte gTasks -_08149E68: - ldr r0, _08149E74 @ =sub_8149D3C - str r0, [r1] -_08149E6C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149E74: .4byte sub_8149D3C - thumb_func_end sub_8149DEC - - thumb_func_start nullsub_85 -nullsub_85: @ 8149E78 - bx lr - thumb_func_end nullsub_85 - - thumb_func_start sub_8149E7C -sub_8149E7C: @ 8149E7C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - movs r1, 0 - ldr r3, _08149FB0 @ =sub_8149FC8 - ldr r2, _08149FB4 @ =0x00007fff -_08149E96: - lsls r0, r1, 1 - add r0, sp - adds r0, 0x4 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _08149E96 - adds r0, r3, 0 - movs r1, 0 - bl CreateTask - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08149FB8 @ =gTasks - mov r1, r8 - lsls r6, r1, 2 - add r6, r8 - lsls r6, 3 - adds r6, r0 - strh r5, [r6, 0xA] - strh r7, [r6, 0xC] - movs r1, 0x80 - lsls r1, 1 - strh r1, [r6, 0xE] - movs r0, 0x10 - strh r0, [r6, 0x10] - movs r4, 0x80 - lsls r4, 9 - str r1, [sp] - movs r0, 0x1E - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - movs r0, 0x10 - ldrsh r1, [r6, r0] - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1F - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldr r1, _08149FBC @ =gSprites - mov r9, r1 - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - mov r3, r9 - adds r3, 0x1C - adds r0, r2, r3 - ldr r1, _08149FC0 @ =nullsub_85 - str r1, [r0] - add r2, r9 - ldrb r1, [r2, 0x1] - movs r4, 0x4 - negs r4, r4 - adds r0, r4, 0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x3C - orrs r0, r1 - strb r0, [r2, 0x3] - movs r0, 0x3E - adds r0, r2 - mov r10, r0 - ldrb r1, [r0] - movs r5, 0x5 - negs r5, r5 - adds r0, r5, 0 - ands r0, r1 - mov r1, r10 - strb r0, [r1] - ldrb r1, [r2, 0x5] - lsrs r1, 4 - lsls r1, 5 - ldr r0, _08149FC4 @ =gPlttBufferFaded + 0x200 - mov r10, r0 - add r1, r10 - add r0, sp, 0x4 - movs r2, 0x10 - str r3, [sp, 0x24] - bl CpuSet - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - ldr r3, [sp, 0x24] - adds r3, r1, r3 - ldr r0, _08149FC0 @ =nullsub_85 - str r0, [r3] - add r1, r9 - ldrb r0, [r1, 0x1] - ands r4, r0 - movs r0, 0x1 - orrs r4, r0 - strb r4, [r1, 0x1] - ldrb r0, [r1, 0x3] - movs r2, 0x3E - orrs r0, r2 - strb r0, [r1, 0x3] - adds r2, r1, 0 - adds r2, 0x3E - ldrb r0, [r2] - ands r5, r0 - strb r5, [r2] - ldrb r1, [r1, 0x5] - lsrs r1, 4 - lsls r1, 5 - add r1, r10 - add r0, sp, 0x4 - movs r2, 0x10 - bl CpuSet - movs r1, 0 - strh r1, [r6, 0x18] - mov r0, r8 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08149FB0: .4byte sub_8149FC8 -_08149FB4: .4byte 0x00007fff -_08149FB8: .4byte gTasks -_08149FBC: .4byte gSprites -_08149FC0: .4byte nullsub_85 -_08149FC4: .4byte gPlttBufferFaded + 0x200 - thumb_func_end sub_8149E7C - - thumb_func_start sub_8149FC8 -sub_8149FC8: @ 8149FC8 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08149FE4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x12] - movs r0, 0x8 - strh r0, [r1, 0x14] - ldr r0, _08149FE8 @ =sub_8149FEC - str r0, [r1] - bx lr - .align 2, 0 -_08149FE4: .4byte gTasks -_08149FE8: .4byte sub_8149FEC - thumb_func_end sub_8149FC8 - - thumb_func_start sub_8149FEC -sub_8149FEC: @ 8149FEC - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0814A00C @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x18 - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _0814A010 - adds r0, r3, 0 - bl sub_814A208 - b _0814A032 - .align 2, 0 -_0814A00C: .4byte gTasks -_0814A010: - ldrh r1, [r2, 0x14] - movs r4, 0x14 - ldrsh r0, [r2, r4] - cmp r0, 0x80 - bne _0814A022 - adds r0, r3, 0 - bl sub_814A158 - b _0814A032 -_0814A022: - adds r0, r1, 0x2 - strh r0, [r2, 0x14] - ldrh r0, [r2, 0x12] - movs r1, 0x1 - eors r0, r1 - strh r0, [r2, 0x12] - ldr r0, _0814A038 @ =sub_814A03C - str r0, [r2] -_0814A032: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0814A038: .4byte sub_814A03C - thumb_func_end sub_8149FEC - - thumb_func_start sub_814A03C -sub_814A03C: @ 814A03C - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0814A060 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x18 - ldrsh r0, [r2, r3] - adds r5, r1, 0 - cmp r0, 0 - beq _0814A068 - ldr r0, _0814A064 @ =sub_814A208 - str r0, [r2] - b _0814A14C - .align 2, 0 -_0814A060: .4byte gTasks -_0814A064: .4byte sub_814A208 -_0814A068: - movs r6, 0 - movs r7, 0x12 - ldrsh r0, [r2, r7] - cmp r0, 0 - bne _0814A0B8 - movs r0, 0xE - ldrsh r1, [r2, r0] - movs r3, 0x14 - ldrsh r0, [r2, r3] - movs r3, 0x80 - lsls r3, 1 - subs r0, r3, r0 - cmp r1, r0 - bge _0814A08E - ldrh r0, [r2, 0x14] - ldrh r7, [r2, 0xE] - adds r0, r7 - strh r0, [r2, 0xE] - b _0814A092 -_0814A08E: - strh r3, [r2, 0xE] - movs r6, 0x1 -_0814A092: - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r5 - movs r0, 0x10 - ldrsh r1, [r3, r0] - movs r7, 0x14 - ldrsh r0, [r3, r7] - adds r0, 0x10 - cmp r1, r0 - ble _0814A0B2 - ldrh r0, [r3, 0x10] - ldrh r1, [r3, 0x14] - subs r0, r1 - strh r0, [r3, 0x10] - b _0814A102 -_0814A0B2: - movs r0, 0x10 - strh r0, [r3, 0x10] - b _0814A0FC -_0814A0B8: - movs r0, 0x10 - ldrsh r1, [r2, r0] - movs r3, 0x14 - ldrsh r0, [r2, r3] - movs r3, 0x80 - lsls r3, 1 - subs r0, r3, r0 - cmp r1, r0 - bge _0814A0D4 - ldrh r0, [r2, 0x14] - ldrh r7, [r2, 0x10] - adds r0, r7 - strh r0, [r2, 0x10] - b _0814A0D8 -_0814A0D4: - strh r3, [r2, 0x10] - movs r6, 0x1 -_0814A0D8: - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r5 - movs r0, 0xE - ldrsh r1, [r3, r0] - movs r7, 0x14 - ldrsh r0, [r3, r7] - adds r0, 0x10 - cmp r1, r0 - ble _0814A0F8 - ldrh r0, [r3, 0xE] - ldrh r1, [r3, 0x14] - subs r0, r1 - strh r0, [r3, 0xE] - b _0814A102 -_0814A0F8: - movs r0, 0x10 - strh r0, [r3, 0xE] -_0814A0FC: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0814A102: - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r5 - movs r0, 0xE - ldrsh r1, [r5, r0] - movs r4, 0x80 - lsls r4, 9 - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1E - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - movs r3, 0x10 - ldrsh r1, [r5, r3] - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1F - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - cmp r6, 0x2 - bne _0814A14C - ldr r0, _0814A154 @ =sub_8149FEC - str r0, [r5] -_0814A14C: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814A154: .4byte sub_8149FEC - thumb_func_end sub_814A03C - - thumb_func_start sub_814A158 -sub_814A158: @ 814A158 - push {r4-r6,lr} - mov r6, r8 - push {r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0814A200 @ =gSprites - mov r8, r1 - ldr r1, _0814A204 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x1] - movs r6, 0x4 - negs r6, r6 - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x1] - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x3] - movs r5, 0x3F - negs r5, r5 - adds r1, r5, 0 - ands r1, r3 - strb r1, [r2, 0x3] - movs r1, 0xA - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x1] - ands r6, r2 - strb r6, [r1, 0x1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x3] - ands r5, r2 - strb r5, [r1, 0x3] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - ands r2, r3 - strb r2, [r1] - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0814A200: .4byte gSprites -_0814A204: .4byte gTasks - thumb_func_end sub_814A158 - - thumb_func_start sub_814A208 -sub_814A208: @ 814A208 - push {r4-r6,lr} - mov r6, r8 - push {r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0814A2B0 @ =gSprites - mov r8, r1 - ldr r1, _0814A2B4 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x1] - movs r6, 0x4 - negs r6, r6 - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x1] - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x3] - movs r5, 0x3F - negs r5, r5 - adds r1, r5, 0 - ands r1, r3 - strb r1, [r2, 0x3] - movs r1, 0xA - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - ands r2, r3 - strb r2, [r1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x1] - ands r6, r2 - strb r6, [r1, 0x1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x3] - ands r5, r2 - strb r5, [r1, 0x3] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r1] - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0814A2B0: .4byte gSprites -_0814A2B4: .4byte gTasks - thumb_func_end sub_814A208 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s deleted file mode 100644 index c6d3c0978..000000000 --- a/asm/evolution_scene.s +++ /dev/null @@ -1,6717 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start CB2_BeginEvolutionScene -CB2_BeginEvolutionScene: @ 8111894 - push {lr} - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end CB2_BeginEvolutionScene - - thumb_func_start Task_BeginEvolutionScene -Task_BeginEvolutionScene: @ 81118A4 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - movs r7, 0 - ldr r1, _081118C8 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _081118CC - cmp r0, 0x1 - beq _081118E4 - b _08111918 - .align 2, 0 -_081118C8: .4byte gTasks -_081118CC: - movs r0, 0x1 - negs r0, r0 - str r7, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08111918 -_081118E4: - ldr r0, _08111920 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08111918 - movs r0, 0xA - ldrsh r7, [r4, r0] - movs r1, 0xC - ldrsh r0, [r4, r1] - lsls r0, 16 - orrs r7, r0 - ldrh r5, [r4, 0x10] - ldrb r6, [r4, 0x12] - ldrh r4, [r4, 0x20] - lsls r4, 24 - lsrs r4, 24 - adds r0, r2, 0 - bl DestroyTask - adds r0, r7, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r4, 0 - bl EvolutionScene -_08111918: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08111920: .4byte gPaletteFade - thumb_func_end Task_BeginEvolutionScene - - thumb_func_start BeginEvolutionScene -BeginEvolutionScene: @ 8111924 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _08111978 @ =Task_BeginEvolutionScene - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811197C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - mov r0, r8 - strh r0, [r1, 0xA] - mov r0, r8 - lsrs r0, 16 - strh r0, [r1, 0xC] - strh r4, [r1, 0x10] - strh r5, [r1, 0x12] - strh r6, [r1, 0x20] - ldr r0, _08111980 @ =CB2_BeginEvolutionScene - bl SetMainCallback2 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08111978: .4byte Task_BeginEvolutionScene -_0811197C: .4byte gTasks -_08111980: .4byte CB2_BeginEvolutionScene - thumb_func_end BeginEvolutionScene - - thumb_func_start EvolutionScene -EvolutionScene: @ 8111984 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x38 - str r0, [sp, 0x20] - mov r10, r1 - mov r0, r10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x24] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x28] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r5, 0 - str r5, [sp, 0x1C] - add r0, sp, 0x1C - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _08111C10 @ =0x05006000 - bl CpuSet - ldr r0, _08111C14 @ =REG_MOSAIC - strh r5, [r0] - subs r0, 0xC - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - ldr r4, _08111C18 @ =gWindowConfig_81E6C58 - adds r0, r4, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _08111C1C @ =gUnknown_030042A4 - strh r5, [r0] - ldr r0, _08111C20 @ =gUnknown_030042A0 - strh r5, [r0] - ldr r0, _08111C24 @ =gUnknown_030042C0 - strh r5, [r0] - ldr r0, _08111C28 @ =gUnknown_030041B4 - strh r5, [r0] - ldr r0, _08111C2C @ =gUnknown_03004288 - strh r5, [r0] - ldr r0, _08111C30 @ =gUnknown_03004280 - strh r5, [r0] - ldr r1, _08111C34 @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111C38 @ =gUnknown_030041B8 - strh r5, [r0] - ldr r0, _08111C3C @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r1, _08111C40 @ =gBattleTerrain - movs r0, 0x9 - strb r0, [r1] - bl sub_800D6D4 - bl sub_800DAB8 - bl ResetSpriteData - bl remove_some_task - bl ResetTasks - bl FreeAllSpritePalettes - ldr r0, _08111C44 @ =gReservedSpritePaletteCount - movs r3, 0x4 - strb r3, [r0] - ldr r0, [sp, 0x20] - movs r1, 0x2 - add r2, sp, 0x8 - bl GetMonData - ldr r0, _08111C48 @ =gStringVar1 - add r1, sp, 0x8 - bl StringCopy10 - ldr r0, _08111C4C @ =gStringVar2 - movs r1, 0xB - mov r4, r10 - muls r4, r1 - adds r1, r4, 0 - ldr r2, _08111C50 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, [sp, 0x20] - movs r1, 0xB - bl GetMonData - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - ldr r0, [sp, 0x20] - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x2C] - ldr r0, [sp, 0x20] - movs r1, 0 - bl GetMonData - str r0, [sp, 0x30] - lsls r0, r6, 3 - ldr r1, _08111C54 @ =gMonFrontPicTable - adds r0, r1 - lsls r2, r6, 2 - ldr r3, _08111C58 @ =gMonFrontPicCoords - adds r2, r3 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - ldr r4, _08111C5C @ =gUnknown_081FAF4C - ldr r3, [r4, 0x4] - str r3, [sp] - str r6, [sp, 0x4] - movs r3, 0x80 - lsls r3, 18 - bl DecompressPicFromTable_2 - adds r0, r6, 0 - ldr r1, [sp, 0x2C] - ldr r2, [sp, 0x30] - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r6, 0 - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08111C60 @ =gUnknown_02024E8C - mov r9, r0 - ldr r1, _08111C64 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - lsls r1, r0, 24 - lsrs r2, r1, 24 - ldr r3, _08111C68 @ =0x02014800 - strb r0, [r3] - ldr r7, _08111C6C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - movs r4, 0x1C - adds r4, r7 - mov r8, r4 - adds r0, r1, r4 - ldr r2, _08111C70 @ =nullsub_37 - str r2, [r0] - adds r1, r7 - ldrb r2, [r1, 0x5] - movs r4, 0xF - adds r0, r4, 0 - ands r0, r2 - movs r2, 0x10 - orrs r0, r2 - strb r0, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1] - mov r1, r10 - lsls r0, r1, 3 - ldr r2, _08111C54 @ =gMonFrontPicTable - adds r0, r2 - lsls r2, r1, 2 - ldr r3, _08111C58 @ =gMonFrontPicCoords - adds r2, r3 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - str r2, [sp, 0x34] - ldr r2, _08111C5C @ =gUnknown_081FAF4C - ldr r2, [r2, 0xC] - str r2, [sp] - mov r3, r10 - str r3, [sp, 0x4] - ldr r2, [sp, 0x34] - movs r3, 0x80 - lsls r3, 18 - bl DecompressPicFromTable_2 - mov r0, r10 - ldr r1, [sp, 0x2C] - ldr r2, [sp, 0x30] - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - mov r0, r10 - movs r1, 0x3 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08111C64 @ =gDummySpriteAffineAnimTable - mov r1, r9 - str r0, [r1, 0x10] - mov r0, r9 - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - lsls r1, r0, 24 - lsrs r2, r1, 24 - ldr r3, _08111C68 @ =0x02014800 - strb r0, [r3, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r8, r1 - ldr r0, _08111C70 @ =nullsub_37 - mov r2, r8 - str r0, [r2] - adds r1, r7 - ldrb r0, [r1, 0x5] - ands r4, r0 - movs r0, 0x20 - orrs r4, r0 - strb r4, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1] - bl sub_8149954 - ldr r0, _08111C74 @ =Task_EvolutionScene - movs r1, 0 - bl CreateTask - lsls r1, r0, 24 - lsrs r2, r1, 24 - ldr r4, _08111C68 @ =0x02014800 - strb r0, [r4, 0x2] - ldr r1, _08111C78 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - strh r6, [r0, 0xE] - mov r1, r10 - strh r1, [r0, 0x10] - mov r2, sp - ldrh r2, [r2, 0x20] - strh r2, [r0, 0xA] - ldr r3, [sp, 0x20] - lsrs r1, r3, 16 - strh r1, [r0, 0xC] - mov r4, sp - ldrh r4, [r4, 0x24] - strh r4, [r0, 0x12] - movs r1, 0x1 - strh r1, [r0, 0x14] - strh r5, [r0, 0x1E] - mov r1, sp - ldrh r1, [r1, 0x28] - strh r1, [r0, 0x20] - ldr r0, _08111C7C @ =0x02009000 - ldr r1, _08111C80 @ =gPlttBufferUnfaded + 0x40 - movs r2, 0x60 - bl memcpy - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111C84 @ =HBlankCB_EvolutionScene - bl SetHBlankCallback - ldr r0, _08111C88 @ =VBlankCB_EvolutionScene - bl SetVBlankCallback - bl m4aMPlayAllStop - ldr r0, _08111C8C @ =CB2_EvolutionSceneUpdate_0 - bl SetMainCallback2 - add sp, 0x38 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08111C10: .4byte 0x05006000 -_08111C14: .4byte REG_MOSAIC -_08111C18: .4byte gWindowConfig_81E6C58 -_08111C1C: .4byte gUnknown_030042A4 -_08111C20: .4byte gUnknown_030042A0 -_08111C24: .4byte gUnknown_030042C0 -_08111C28: .4byte gUnknown_030041B4 -_08111C2C: .4byte gUnknown_03004288 -_08111C30: .4byte gUnknown_03004280 -_08111C34: .4byte gUnknown_030041B0 -_08111C38: .4byte gUnknown_030041B8 -_08111C3C: .4byte gUnknown_03004210 -_08111C40: .4byte gBattleTerrain -_08111C44: .4byte gReservedSpritePaletteCount -_08111C48: .4byte gStringVar1 -_08111C4C: .4byte gStringVar2 -_08111C50: .4byte gSpeciesNames -_08111C54: .4byte gMonFrontPicTable -_08111C58: .4byte gMonFrontPicCoords -_08111C5C: .4byte gUnknown_081FAF4C -_08111C60: .4byte gUnknown_02024E8C -_08111C64: .4byte gDummySpriteAffineAnimTable -_08111C68: .4byte 0x02014800 -_08111C6C: .4byte gSprites -_08111C70: .4byte nullsub_37 -_08111C74: .4byte Task_EvolutionScene -_08111C78: .4byte gTasks -_08111C7C: .4byte 0x02009000 -_08111C80: .4byte gPlttBufferUnfaded + 0x40 -_08111C84: .4byte HBlankCB_EvolutionScene -_08111C88: .4byte VBlankCB_EvolutionScene -_08111C8C: .4byte CB2_EvolutionSceneUpdate_0 - thumb_func_end EvolutionScene - - thumb_func_start CB2_EvolutionSceneLoadGraphics -CB2_EvolutionSceneLoadGraphics: @ 8111C90 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0xC - ldr r2, _08111E14 @ =gTasks - ldr r0, _08111E18 @ =0x02014800 - mov r9, r0 - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x20 - ldrsh r2, [r0, r1] - movs r1, 0x64 - adds r4, r2, 0 - muls r4, r1 - ldr r1, _08111E1C @ =gPlayerParty - adds r4, r1 - ldrh r6, [r0, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - mov r10, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - mov r8, r0 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r5, 0 - str r5, [sp, 0x8] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _08111E20 @ =0x05006000 - add r0, sp, 0x8 - bl CpuSet - ldr r0, _08111E24 @ =REG_MOSAIC - strh r5, [r0] - subs r0, 0xC - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - ldr r4, _08111E28 @ =gWindowConfig_81E6C58 - adds r0, r4, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _08111E2C @ =gUnknown_030042A4 - strh r5, [r0] - ldr r0, _08111E30 @ =gUnknown_030042A0 - strh r5, [r0] - ldr r0, _08111E34 @ =gUnknown_030042C0 - strh r5, [r0] - ldr r0, _08111E38 @ =gUnknown_030041B4 - strh r5, [r0] - ldr r0, _08111E3C @ =gUnknown_03004288 - strh r5, [r0] - ldr r0, _08111E40 @ =gUnknown_03004280 - strh r5, [r0] - ldr r1, _08111E44 @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111E48 @ =gUnknown_030041B8 - strh r5, [r0] - ldr r0, _08111E4C @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r1, _08111E50 @ =gBattleTerrain - movs r0, 0x9 - strb r0, [r1] - bl sub_800D6D4 - bl sub_800DAB8 - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _08111E54 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - lsls r0, r6, 3 - ldr r1, _08111E58 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08111E5C @ =gMonFrontPicCoords - lsls r2, r6, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08111E60 @ =gUnknown_081FAF4C - ldr r4, [r4, 0xC] - str r4, [sp] - str r6, [sp, 0x4] - bl DecompressPicFromTable_2 - adds r0, r6, 0 - mov r1, r10 - mov r2, r8 - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r6, 0 - movs r1, 0x3 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08111E64 @ =gUnknown_02024E8C - ldr r1, _08111E68 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - lsls r2, r0, 24 - lsrs r2, 24 - mov r1, r9 - strb r0, [r1, 0x1] - ldr r3, _08111E6C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _08111E70 @ =nullsub_37 - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - movs r2, 0x20 - orrs r0, r2 - strb r0, [r1, 0x5] - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111E74 @ =HBlankCB_EvolutionScene - bl SetHBlankCallback - ldr r0, _08111E78 @ =VBlankCB_EvolutionScene - bl SetVBlankCallback - ldr r0, _08111E7C @ =CB2_EvolutionSceneUpdate_0 - bl SetMainCallback2 - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08111E14: .4byte gTasks -_08111E18: .4byte 0x02014800 -_08111E1C: .4byte gPlayerParty -_08111E20: .4byte 0x05006000 -_08111E24: .4byte REG_MOSAIC -_08111E28: .4byte gWindowConfig_81E6C58 -_08111E2C: .4byte gUnknown_030042A4 -_08111E30: .4byte gUnknown_030042A0 -_08111E34: .4byte gUnknown_030042C0 -_08111E38: .4byte gUnknown_030041B4 -_08111E3C: .4byte gUnknown_03004288 -_08111E40: .4byte gUnknown_03004280 -_08111E44: .4byte gUnknown_030041B0 -_08111E48: .4byte gUnknown_030041B8 -_08111E4C: .4byte gUnknown_03004210 -_08111E50: .4byte gBattleTerrain -_08111E54: .4byte gReservedSpritePaletteCount -_08111E58: .4byte gMonFrontPicTable -_08111E5C: .4byte gMonFrontPicCoords -_08111E60: .4byte gUnknown_081FAF4C -_08111E64: .4byte gUnknown_02024E8C -_08111E68: .4byte gDummySpriteAffineAnimTable -_08111E6C: .4byte gSprites -_08111E70: .4byte nullsub_37 -_08111E74: .4byte HBlankCB_EvolutionScene -_08111E78: .4byte VBlankCB_EvolutionScene -_08111E7C: .4byte CB2_EvolutionSceneUpdate_0 - thumb_func_end CB2_EvolutionSceneLoadGraphics - - thumb_func_start CB2_TradeEvolutionSceneLoadGraphics -CB2_TradeEvolutionSceneLoadGraphics: @ 8111E80 - push {r4-r7,lr} - sub sp, 0x8 - ldr r2, _08111EB8 @ =gTasks - ldr r0, _08111EBC @ =0x02014800 - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x20 - ldrsh r2, [r0, r1] - movs r1, 0x64 - muls r2, r1 - ldr r1, _08111EC0 @ =gPlayerParty - adds r4, r2, r1 - ldrh r7, [r0, 0x10] - ldr r0, _08111EC4 @ =gMain - ldr r2, _08111EC8 @ =0x0000043c - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x6 - bls _08111EAE - b _081120D6 -_08111EAE: - lsls r0, 2 - ldr r1, _08111ECC @ =_08111ED0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08111EB8: .4byte gTasks -_08111EBC: .4byte 0x02014800 -_08111EC0: .4byte gPlayerParty -_08111EC4: .4byte gMain -_08111EC8: .4byte 0x0000043c -_08111ECC: .4byte _08111ED0 - .align 2, 0 -_08111ED0: - .4byte _08111EEC - .4byte _08111F68 - .4byte _08111F88 - .4byte _08111FDC - .4byte _08111FE2 - .4byte _08112048 - .4byte _081120B4 -_08111EEC: - movs r0, 0x80 - lsls r0, 19 - movs r4, 0 - strh r4, [r0] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _08111F3C @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, _08111F40 @ =gUnknown_030042A4 - strh r4, [r0] - ldr r0, _08111F44 @ =gUnknown_030042A0 - strh r4, [r0] - ldr r0, _08111F48 @ =gUnknown_030042C0 - strh r4, [r0] - ldr r0, _08111F4C @ =gUnknown_030041B4 - strh r4, [r0] - ldr r0, _08111F50 @ =gUnknown_03004288 - strh r4, [r0] - ldr r0, _08111F54 @ =gUnknown_03004280 - strh r4, [r0] - ldr r1, _08111F58 @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111F5C @ =gUnknown_030041B8 - strh r4, [r0] - ldr r1, _08111F60 @ =gMain - ldr r0, _08111F64 @ =0x0000043c - adds r1, r0 - b _0811208E - .align 2, 0 -_08111F3C: .4byte gReservedSpritePaletteCount -_08111F40: .4byte gUnknown_030042A4 -_08111F44: .4byte gUnknown_030042A0 -_08111F48: .4byte gUnknown_030042C0 -_08111F4C: .4byte gUnknown_030041B4 -_08111F50: .4byte gUnknown_03004288 -_08111F54: .4byte gUnknown_03004280 -_08111F58: .4byte gUnknown_030041B0 -_08111F5C: .4byte gUnknown_030041B8 -_08111F60: .4byte gMain -_08111F64: .4byte 0x0000043c -_08111F68: - ldr r4, _08111F80 @ =gWindowConfig_81E6F84 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, _08111F84 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - b _08112088 - .align 2, 0 -_08111F80: .4byte gWindowConfig_81E6F84 -_08111F84: .4byte gUnknown_03004828 -_08111F88: - ldr r4, _08111FC8 @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x4 - bl LoadTextWindowGraphics - movs r0, 0x2 - bl SetTextWindowBaseTileNum - ldr r1, [r4] - adds r1, 0x34 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - bl ResetPaletteFade - ldr r1, _08111FCC @ =gMain - ldr r0, _08111FD0 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _08111FD4 @ =HBlankCB_EvolutionScene - bl SetHBlankCallback - ldr r0, _08111FD8 @ =VBlankCB_TradeEvolutionScene - bl SetVBlankCallback - b _081120D6 - .align 2, 0 -_08111FC8: .4byte gUnknown_03004828 -_08111FCC: .4byte gMain -_08111FD0: .4byte 0x0000043c -_08111FD4: .4byte HBlankCB_EvolutionScene -_08111FD8: .4byte VBlankCB_TradeEvolutionScene -_08111FDC: - bl sub_804E22C - b _08112088 -_08111FE2: - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r6, r0, 0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r5, r0, 0 - lsls r0, r7, 3 - ldr r1, _08112034 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08112038 @ =gMonFrontPicCoords - lsls r2, r7, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _0811203C @ =gUnknown_081FAF4C - ldr r4, [r4, 0xC] - str r4, [sp] - str r7, [sp, 0x4] - bl DecompressPicFromTable_2 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _08112040 @ =gMain - ldr r0, _08112044 @ =0x0000043c - adds r1, r0 - b _0811208E - .align 2, 0 -_08112034: .4byte gMonFrontPicTable -_08112038: .4byte gMonFrontPicCoords -_0811203C: .4byte gUnknown_081FAF4C -_08112040: .4byte gMain -_08112044: .4byte 0x0000043c -_08112048: - adds r0, r7, 0 - movs r1, 0x3 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08112098 @ =gUnknown_02024E8C - ldr r1, _0811209C @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - ldr r1, _081120A0 @ =0x02014800 - lsls r2, r0, 24 - lsrs r2, 24 - strb r0, [r1, 0x1] - ldr r3, _081120A4 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _081120A8 @ =nullsub_37 - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - movs r2, 0x20 - orrs r0, r2 - strb r0, [r1, 0x5] -_08112088: - ldr r1, _081120AC @ =gMain - ldr r2, _081120B0 @ =0x0000043c - adds r1, r2 -_0811208E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _081120D6 - .align 2, 0 -_08112098: .4byte gUnknown_02024E8C -_0811209C: .4byte gDummySpriteAffineAnimTable -_081120A0: .4byte 0x02014800 -_081120A4: .4byte gSprites -_081120A8: .4byte nullsub_37 -_081120AC: .4byte gMain -_081120B0: .4byte 0x0000043c -_081120B4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _081120E0 @ =CB2_EvolutionSceneUpdate_1 - bl SetMainCallback2 - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] -_081120D6: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081120E0: .4byte CB2_EvolutionSceneUpdate_1 - thumb_func_end CB2_TradeEvolutionSceneLoadGraphics - - thumb_func_start TradeEvolutionScene -TradeEvolutionScene: @ 81120E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r0, [sp, 0x1C] - adds r5, r1, 0 - adds r4, r2, 0 - mov r10, r3 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 24 - lsrs r4, 24 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, [sp, 0x1C] - movs r1, 0x2 - add r2, sp, 0x8 - bl GetMonData - ldr r0, _08112234 @ =gStringVar1 - add r1, sp, 0x8 - bl StringCopy10 - ldr r0, _08112238 @ =gStringVar2 - movs r1, 0xB - muls r1, r5 - ldr r2, _0811223C @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, _08112240 @ =gAffineAnimsDisabled - movs r0, 0x1 - strb r0, [r1] - ldr r0, [sp, 0x1C] - movs r1, 0xB - bl GetMonData - mov r8, r0 - mov r1, r8 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - ldr r0, [sp, 0x1C] - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - ldr r0, [sp, 0x1C] - movs r1, 0x1 - bl GetMonData - adds r7, r0, 0 - ldr r2, _08112244 @ =0x02014800 - mov r9, r2 - strb r4, [r2] - lsls r0, r5, 3 - ldr r1, _08112248 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _0811224C @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08112250 @ =gUnknown_081FAF4C - ldr r4, [r4, 0x4] - str r4, [sp] - str r5, [sp, 0x4] - bl DecompressPicFromTable_2 - adds r0, r5, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r5, 0 - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08112254 @ =gUnknown_02024E8C - ldr r1, _08112258 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - lsls r1, r0, 24 - lsrs r2, r1, 24 - mov r1, r9 - strb r0, [r1, 0x1] - ldr r3, _0811225C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _08112260 @ =nullsub_37 - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - movs r2, 0x20 - orrs r0, r2 - strb r0, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - bl sub_8149954 - ldr r0, _08112264 @ =Task_TradeEvolutionScene - movs r1, 0 - bl CreateTask - lsls r1, r0, 24 - lsrs r2, r1, 24 - mov r1, r9 - strb r0, [r1, 0x2] - ldr r1, _08112268 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - strh r2, [r0, 0x8] - mov r1, r8 - strh r1, [r0, 0xE] - strh r5, [r0, 0x10] - mov r2, sp - ldrh r2, [r2, 0x1C] - strh r2, [r0, 0xA] - ldr r1, [sp, 0x1C] - lsrs r1, 16 - str r1, [sp, 0x20] - strh r1, [r0, 0xC] - movs r1, 0x1 - strh r1, [r0, 0x14] - movs r1, 0 - strh r1, [r0, 0x1E] - mov r2, r10 - strh r2, [r0, 0x20] - ldr r0, _0811226C @ =CB2_EvolutionSceneUpdate_1 - bl SetMainCallback2 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08112234: .4byte gStringVar1 -_08112238: .4byte gStringVar2 -_0811223C: .4byte gSpeciesNames -_08112240: .4byte gAffineAnimsDisabled -_08112244: .4byte 0x02014800 -_08112248: .4byte gMonFrontPicTable -_0811224C: .4byte gMonFrontPicCoords -_08112250: .4byte gUnknown_081FAF4C -_08112254: .4byte gUnknown_02024E8C -_08112258: .4byte gDummySpriteAffineAnimTable -_0811225C: .4byte gSprites -_08112260: .4byte nullsub_37 -_08112264: .4byte Task_TradeEvolutionScene -_08112268: .4byte gTasks -_0811226C: .4byte CB2_EvolutionSceneUpdate_1 - thumb_func_end TradeEvolutionScene - - thumb_func_start CB2_EvolutionSceneUpdate_0 -CB2_EvolutionSceneUpdate_0: @ 8112270 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _0811228C @ =gUnknown_03004210 - bl sub_800374C - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - .align 2, 0 -_0811228C: .4byte gUnknown_03004210 - thumb_func_end CB2_EvolutionSceneUpdate_0 - - thumb_func_start CB2_EvolutionSceneUpdate_1 -CB2_EvolutionSceneUpdate_1: @ 8112290 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _081122B0 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0x4 - bl sub_80035AC - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - .align 2, 0 -_081122B0: .4byte gUnknown_03004828 - thumb_func_end CB2_EvolutionSceneUpdate_1 - - thumb_func_start CreateShedinja -CreateShedinja: @ 81122B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r1 - lsls r0, 16 - lsrs r7, r0, 16 - movs r0, 0 - str r0, [sp] - ldr r0, _081123F4 @ =gEvolutionTable - mov r8, r0 - lsls r1, r7, 2 - mov r9, r1 - adds r0, r1, r7 - lsls r4, r0, 3 - mov r0, r8 - adds r6, r4, r0 - ldrh r0, [r6] - cmp r0, 0xD - beq _081122E2 - b _081123E2 -_081122E2: - ldr r1, _081123F8 @ =gPlayerPartyCount - ldrb r0, [r1] - cmp r0, 0x5 - bhi _081123E2 - adds r1, r0, 0 - movs r0, 0x64 - muls r1, r0 - ldr r0, _081123FC @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - mov r1, r10 - movs r2, 0x64 - bl CopyMon - mov r1, r8 - adds r2, r1, r4 - adds r2, 0xC - adds r0, r5, 0 - movs r1, 0xB - bl SetMonData - ldrh r1, [r6, 0xC] - movs r0, 0xB - adds r2, r1, 0 - muls r2, r0 - ldr r0, _08112400 @ =gSpeciesNames - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x2 - bl SetMonData - adds r0, r5, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - adds r0, r5, 0 - movs r1, 0x8 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - movs r1, 0xA - mov r2, sp - bl SetMonData - movs r4, 0x32 - mov r6, r9 -_08112342: - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - bl SetMonData - adds r4, 0x1 - cmp r4, 0x36 - ble _08112342 - movs r4, 0x43 -_08112354: - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - bl SetMonData - adds r4, 0x1 - cmp r4, 0x4F - ble _08112354 - adds r0, r5, 0 - movs r1, 0x37 - mov r2, sp - bl SetMonData - movs r0, 0xFF - str r0, [sp] - adds r0, r5, 0 - movs r1, 0x40 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - bl CalculateMonStats - bl CalculatePlayerPartyCount - ldr r0, _081123F4 @ =gEvolutionTable - adds r4, r6, r7 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetNationalPokedexFlag - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetNationalPokedexFlag - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - ldr r1, _08112404 @ =0x0000012f - cmp r0, r1 - bne _081123E2 - adds r0, r5, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - bne _081123E2 - mov r0, r10 - movs r1, 0xB - bl GetMonData - movs r1, 0x97 - lsls r1, 1 - cmp r0, r1 - bne _081123E2 - ldr r2, _08112408 @ =gUnknown_083F868C - adds r0, r5, 0 - movs r1, 0x2 - bl SetMonData -_081123E2: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081123F4: .4byte gEvolutionTable -_081123F8: .4byte gPlayerPartyCount -_081123FC: .4byte gPlayerParty -_08112400: .4byte gSpeciesNames -_08112404: .4byte 0x0000012f -_08112408: .4byte gUnknown_083F868C - thumb_func_end CreateShedinja - - thumb_func_start Task_EvolutionScene -Task_EvolutionScene: @ 811240C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _08112490 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r3, r0, r2 - movs r1, 0xA - ldrsh r0, [r3, r1] - mov r9, r0 - movs r1, 0xC - ldrsh r0, [r3, r1] - lsls r0, 16 - mov r1, r9 - orrs r1, r0 - mov r9, r1 - ldr r0, _08112494 @ =gMain - ldrh r1, [r0, 0x2C] - adds r6, r2, 0 - adds r4, r0, 0 - cmp r1, 0x2 - bne _0811246E - movs r2, 0x8 - ldrsh r0, [r3, r2] - cmp r0, 0x8 - bne _0811246E - ldrh r1, [r3, 0x12] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0811246E - movs r0, 0x10 - strh r0, [r3, 0x8] - ldr r0, _08112498 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _0811246E - strh r2, [r1, 0x18] -_0811246E: - lsls r1, r7, 2 - adds r0, r1, r7 - lsls r0, 3 - adds r0, r6 - movs r3, 0x8 - ldrsh r0, [r0, r3] - mov r8, r1 - cmp r0, 0x15 - bls _08112484 - bl _08112FD0 -_08112484: - lsls r0, 2 - ldr r1, _0811249C @ =_081124A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08112490: .4byte gTasks -_08112494: .4byte gMain -_08112498: .4byte gBattleCommunication -_0811249C: .4byte _081124A0 - .align 2, 0 -_081124A0: - .4byte _081124F8 - .4byte _0811253C - .4byte _08112588 - .4byte _08112594 - .4byte _081125BC - .4byte _081125FC - .4byte _08112630 - .4byte _0811266C - .4byte _081126A0 - .4byte _081126E0 - .4byte _081126FC - .4byte _08112728 - .4byte _08112754 - .4byte _081127A0 - .4byte _0811284C - .4byte _081128E4 - .4byte _08112934 - .4byte _08112974 - .4byte _081129A0 - .4byte _081129E8 - .4byte _08112A4C - .4byte _08112A88 -_081124F8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _08112530 @ =gSprites - ldr r0, _08112534 @ =0x02014800 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, _08112538 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_08112530: .4byte gSprites -_08112534: .4byte 0x02014800 -_08112538: .4byte gTasks -_0811253C: - ldr r0, _08112574 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0811254C - bl _08112FD0 -_0811254C: - ldr r4, _08112578 @ =gStringVar4 - ldr r1, _0811257C @ =gUnknown_08400C4A - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _08112580 @ =gUnknown_03004210 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112584 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_08112574: .4byte gPaletteFade -_08112578: .4byte gStringVar4 -_0811257C: .4byte gUnknown_08400C4A -_08112580: .4byte gUnknown_03004210 -_08112584: .4byte gTasks -_08112588: - ldr r0, _08112590 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - b _0811297C - .align 2, 0 -_08112590: .4byte gUnknown_03004210 -_08112594: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _081125A2 - bl _08112FD0 -_081125A2: - movs r0, 0xBC - lsls r0, 1 - bl PlaySE - ldr r0, _081125B8 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_081125B8: .4byte gTasks -_081125BC: - bl IsSEPlaying - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _081125CC - bl _08112FD0 -_081125CC: - ldr r0, _081125F4 @ =0x00000179 - bl PlayNewMapMusic - ldr r0, _081125F8 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r4, [sp] - movs r0, 0x1C - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl _08112FD0 - .align 2, 0 -_081125F4: .4byte 0x00000179 -_081125F8: .4byte gTasks -_081125FC: - ldr r0, _08112624 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0811260C - bl _08112FD0 -_0811260C: - movs r0, 0x11 - bl sub_8149970 - ldr r1, _08112628 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r0, _0811262C @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_08112624: .4byte gPaletteFade -_08112628: .4byte gBattleCommunication -_0811262C: .4byte gTasks -_08112630: - ldr r4, _08112664 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08112646 - bl _08112FD0 -_08112646: - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r6 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _08112668 @ =0x02014800 - movs r0, 0x1 - strb r0, [r1, 0x3] - bl sub_8149A90 - strb r0, [r4, 0x2] - bl _08112FD0 - .align 2, 0 -_08112664: .4byte gBattleCommunication -_08112668: .4byte 0x02014800 -_0811266C: - ldr r4, _08112698 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08112682 - bl _08112FD0 -_08112682: - ldr r1, _0811269C @ =0x02014800 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - bl sub_8149E7C - strb r0, [r4, 0x2] - mov r0, r8 - adds r1, r0, r7 - lsls r1, 3 - adds r1, r6 - b _08112A2E - .align 2, 0 -_08112698: .4byte gBattleCommunication -_0811269C: .4byte 0x02014800 -_081126A0: - ldr r1, _081126D8 @ =0x02014800 - ldrb r0, [r1, 0x3] - subs r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - cmp r0, 0 - beq _081126B2 - bl _08112FD0 -_081126B2: - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r0, _081126DC @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _081126CC - bl _08112FD0 -_081126CC: - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r6 - b _08112A2E - .align 2, 0 -_081126D8: .4byte 0x02014800 -_081126DC: .4byte gBattleCommunication -_081126E0: - bl sub_8149B44 - ldr r1, _081126F4 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r0, _081126F8 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_081126F4: .4byte gBattleCommunication -_081126F8: .4byte gTasks -_081126FC: - ldr r5, _08112724 @ =gBattleCommunication - ldrb r0, [r5, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08112712 - bl _08112FD0 -_08112712: - mov r0, r8 - adds r4, r0, r7 - lsls r4, 3 - adds r4, r6 - ldrh r0, [r4, 0x10] - bl sub_8149C20 - strb r0, [r5, 0x2] - b _08112992 - .align 2, 0 -_08112724: .4byte gBattleCommunication -_08112728: - ldr r0, _08112750 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _0811273E - bl _08112FD0 -_0811273E: - movs r0, 0x21 - bl PlaySE - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r6 - b _08112A2E - .align 2, 0 -_08112750: .4byte gBattleCommunication -_08112754: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08112762 - bl _08112FD0 -_08112762: - bl m4aMPlayAllStop - ldr r0, _08112794 @ =gTasks - mov r3, r8 - adds r4, r3, r7 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x10] - movs r1, 0 - bl PlayCry1 - ldr r0, _08112798 @ =gPlttBufferUnfaded + 0x40 - ldr r1, _0811279C @ =0x02009000 - movs r2, 0x60 - bl memcpy - movs r0, 0 - str r0, [sp] - movs r0, 0x1C - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08112992 - .align 2, 0 -_08112794: .4byte gTasks -_08112798: .4byte gPlttBufferUnfaded + 0x40 -_0811279C: .4byte 0x02009000 -_081127A0: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _081127AE - bl _08112FD0 -_081127AE: - ldr r0, _08112834 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081127BE - bl _08112FD0 -_081127BE: - ldr r4, _08112838 @ =gStringVar4 - ldr r1, _0811283C @ =gUnknown_08400C60 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _08112840 @ =gUnknown_03004210 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112844 @ =0x00000173 - bl PlayBGM - ldr r2, _08112848 @ =gTasks - mov r0, r8 - adds r1, r0, r7 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - adds r2, r1 - adds r2, 0x10 - mov r0, r9 - movs r1, 0xB - bl SetMonData - mov r0, r9 - bl CalculateMonStats - ldrh r1, [r4, 0xE] - ldrh r2, [r4, 0x10] - mov r0, r9 - bl EvolutionRenameMon - ldrh r0, [r4, 0x10] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetNationalPokedexFlag - ldrh r0, [r4, 0x10] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetNationalPokedexFlag - movs r0, 0xE - bl IncrementGameStat - b _08112FD0 - .align 2, 0 -_08112834: .4byte gPaletteFade -_08112838: .4byte gStringVar4 -_0811283C: .4byte gUnknown_08400C60 -_08112840: .4byte gUnknown_03004210 -_08112844: .4byte 0x00000173 -_08112848: .4byte gTasks -_0811284C: - ldr r0, _081128A4 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - beq _08112856 - b _08112FD0 -_08112856: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - adds r5, r0, r6 - ldrb r1, [r5, 0x14] - mov r0, r9 - bl sub_803B7C8 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - beq _081128C4 - movs r2, 0x1E - ldrsh r4, [r5, r2] - cmp r4, 0 - bne _081128C4 - bl sub_8053E90 - ldrh r1, [r5, 0x12] - movs r0, 0x80 - orrs r0, r1 - strh r0, [r5, 0x12] - strh r4, [r5, 0x14] - strh r4, [r5, 0x18] - mov r0, r9 - movs r1, 0x2 - add r2, sp, 0x4 - bl GetMonData - ldr r0, _081128A8 @ =gBattleTextBuff1 - add r1, sp, 0x4 - bl StringCopy10 - ldr r0, _081128AC @ =0x0000ffff - cmp r6, r0 - bne _081128B0 - movs r0, 0x15 - strh r0, [r5, 0x8] - b _08112FD0 - .align 2, 0 -_081128A4: .4byte gUnknown_03004210 -_081128A8: .4byte gBattleTextBuff1 -_081128AC: .4byte 0x0000ffff -_081128B0: - ldr r0, _081128C0 @ =0x0000fffe - cmp r6, r0 - bne _081128B8 - b _08112FD0 -_081128B8: - movs r0, 0x13 - strh r0, [r5, 0x8] - b _08112FD0 - .align 2, 0 -_081128C0: .4byte 0x0000fffe -_081128C4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _081128E0 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_081128E0: .4byte gTasks -_081128E4: - ldr r0, _0811292C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _081128F4 - b _08112FD0 -_081128F4: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - adds r4, r0, r6 - ldrh r1, [r4, 0x12] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0811290A - bl sub_8053E90 -_0811290A: - movs r2, 0x1E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0811291A - ldrh r0, [r4, 0xE] - mov r1, r9 - bl CreateShedinja -_0811291A: - adds r0, r7, 0 - bl DestroyTask - ldr r0, _08112930 @ =gUnknown_03005E94 - ldr r0, [r0] - bl SetMainCallback2 - b _08112FD0 - .align 2, 0 -_0811292C: .4byte gPaletteFade -_08112930: .4byte gUnknown_03005E94 -_08112934: - ldr r0, _08112968 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08112948 - b _08112FD0 -_08112948: - bl m4aMPlayAllStop - ldr r0, _0811296C @ =0x0006001c - ldr r1, _08112970 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r6 - b _08112A2E - .align 2, 0 -_08112968: .4byte gBattleCommunication -_0811296C: .4byte 0x0006001c -_08112970: .4byte 0x00007fff -_08112974: - ldr r0, _0811299C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 -_0811297C: - cmp r0, 0 - beq _08112982 - b _08112FD0 -_08112982: - mov r0, r8 - adds r4, r0, r7 - lsls r4, 3 - adds r4, r6 - ldrh r0, [r4, 0xE] - movs r1, 0 - bl PlayCry1 -_08112992: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08112FD0 - .align 2, 0 -_0811299C: .4byte gPaletteFade -_081129A0: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _081129AC - b _08112FD0 -_081129AC: - ldr r4, _081129D8 @ =gStringVar4 - ldr r1, _081129DC @ =gUnknown_08400C8D - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _081129E0 @ =gUnknown_03004210 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _081129E4 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x1E] - b _08112F9A - .align 2, 0 -_081129D8: .4byte gStringVar4 -_081129DC: .4byte gUnknown_08400C8D -_081129E0: .4byte gUnknown_03004210 -_081129E4: .4byte gTasks -_081129E8: - ldr r4, _08112A38 @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _081129F2 - b _08112FD0 -_081129F2: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _081129FE - b _08112FD0 -_081129FE: - bl sub_8024CEC - ldr r0, _08112A3C @ =0x0000016f - bl PlayFanfare - ldr r0, _08112A40 @ =gBattleStringsTable - ldr r0, [r0, 0xC] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112A44 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112A48 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x40 - strh r0, [r1, 0x14] -_08112A2E: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _08112FD0 - .align 2, 0 -_08112A38: .4byte gUnknown_03004210 -_08112A3C: .4byte 0x0000016f -_08112A40: .4byte gBattleStringsTable -_08112A44: .4byte gDisplayedStringBattle -_08112A48: .4byte gTasks -_08112A4C: - ldr r0, _08112A80 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - beq _08112A56 - b _08112FD0 -_08112A56: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112A62 - b _08112FD0 -_08112A62: - ldr r0, _08112A84 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - subs r0, 0x1 - strh r0, [r1, 0x14] - lsls r0, 16 - cmp r0, 0 - beq _08112A7A - b _08112FD0 -_08112A7A: - movs r0, 0xE - strh r0, [r1, 0x8] - b _08112FD0 - .align 2, 0 -_08112A80: .4byte gUnknown_03004210 -_08112A84: .4byte gTasks -_08112A88: - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r6 - movs r1, 0x18 - ldrsh r0, [r0, r1] - cmp r0, 0xB - bls _08112A9A - b _08112FD0 -_08112A9A: - lsls r0, 2 - ldr r1, _08112AA4 @ =_08112AA8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08112AA4: .4byte _08112AA8 - .align 2, 0 -_08112AA8: - .4byte _08112AD8 - .4byte _08112B2C - .4byte _08112B7C - .4byte _08112BC0 - .4byte _08112C0C - .4byte _08112D3C - .4byte _08112D8C - .4byte _08112E98 - .4byte _08112EE8 - .4byte _08112F38 - .4byte _08112F78 - .4byte _08112FB0 -_08112AD8: - ldr r4, _08112B1C @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _08112AE2 - b _08112FD0 -_08112AE2: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112AEE - b _08112FD0 -_08112AEE: - bl sub_8024CEC - ldr r0, _08112B20 @ =gBattleStringsTable - ldr r0, [r0, 0x10] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112B24 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112B28 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08112FCE - .align 2, 0 -_08112B1C: .4byte gUnknown_03004210 -_08112B20: .4byte gBattleStringsTable -_08112B24: .4byte gDisplayedStringBattle -_08112B28: .4byte gTasks -_08112B2C: - ldr r4, _08112B6C @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _08112B36 - b _08112FD0 -_08112B36: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112B42 - b _08112FD0 -_08112B42: - ldr r0, _08112B70 @ =gBattleStringsTable - ldr r0, [r0, 0x14] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112B74 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112B78 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08112FCE - .align 2, 0 -_08112B6C: .4byte gUnknown_03004210 -_08112B70: .4byte gBattleStringsTable -_08112B74: .4byte gDisplayedStringBattle -_08112B78: .4byte gTasks -_08112B7C: - ldr r4, _08112BF8 @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _08112B86 - b _08112FD0 -_08112B86: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08112BC0 - ldr r0, _08112BFC @ =gBattleStringsTable - ldr r0, [r0, 0x18] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112C00 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112C04 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 - strh r0, [r1, 0x1A] - movs r0, 0x9 - strh r0, [r1, 0x1C] - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] -_08112BC0: - ldr r0, _08112BF8 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - beq _08112BCA - b _08112FD0 -_08112BCA: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112BD6 - b _08112FD0 -_08112BD6: - bl sub_8023A80 - ldr r0, _08112C04 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - movs r2, 0 - strh r0, [r1, 0x18] - ldr r0, _08112C08 @ =gBattleCommunication - strb r2, [r0, 0x1] - bl sub_802BC6C - b _08112FD0 - .align 2, 0 -_08112BF8: .4byte gUnknown_03004210 -_08112BFC: .4byte gBattleStringsTable -_08112C00: .4byte gDisplayedStringBattle -_08112C04: .4byte gTasks -_08112C08: .4byte gBattleCommunication -_08112C0C: - ldr r0, _08112CA4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08112C32 - ldr r4, _08112CA8 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08112C32 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08112C32: - ldr r0, _08112CA4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08112C58 - ldr r4, _08112CA8 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08112C58 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08112C58: - ldr r0, _08112CA4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08112CE2 - bl sub_8023AD8 - ldr r0, _08112CAC @ =gBattleStringsTable - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112CB0 @ =gUnknown_03004210 - ldr r1, _08112CB4 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - movs r0, 0x5 - bl PlaySE - ldr r0, _08112CA8 @ =gBattleCommunication - ldrb r2, [r0, 0x1] - cmp r2, 0 - beq _08112CBC - ldr r0, _08112CB8 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1C] - strh r0, [r1, 0x18] - b _08112CE2 - .align 2, 0 -_08112CA4: .4byte gMain -_08112CA8: .4byte gBattleCommunication -_08112CAC: .4byte gBattleStringsTable -_08112CB0: .4byte gUnknown_03004210 -_08112CB4: .4byte gDisplayedStringBattle -_08112CB8: .4byte gTasks -_08112CBC: - ldr r0, _08112D28 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1A] - strh r0, [r1, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _08112CE2 - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08112CE2: - ldr r0, _08112D2C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08112CF0 - b _08112FD0 -_08112CF0: - bl sub_8023AD8 - ldr r0, _08112D30 @ =gBattleStringsTable - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112D34 @ =gUnknown_03004210 - ldr r1, _08112D38 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - movs r0, 0x5 - bl PlaySE - ldr r1, _08112D28 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x1C] - strh r1, [r0, 0x18] - b _08112FD0 - .align 2, 0 -_08112D28: .4byte gTasks -_08112D2C: .4byte gMain -_08112D30: .4byte gBattleStringsTable -_08112D34: .4byte gUnknown_03004210 -_08112D38: .4byte gDisplayedStringBattle -_08112D3C: - ldr r0, _08112D78 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08112D4A - b _08112FD0 -_08112D4A: - ldr r0, _08112D7C @ =gPlayerParty - mov r3, r8 - adds r5, r3, r7 - lsls r5, 3 - adds r5, r6 - ldrh r1, [r5, 0x20] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08112D80 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08112D84 @ =CB2_EvolutionSceneLoadGraphics - ldr r4, _08112D88 @ =word_2024E82 - ldrh r4, [r4] - str r4, [sp] - bl sub_809D9F0 - ldrh r0, [r5, 0x18] - adds r0, 0x1 - strh r0, [r5, 0x18] - b _08112FD0 - .align 2, 0 -_08112D78: .4byte gPaletteFade -_08112D7C: .4byte gPlayerParty -_08112D80: .4byte gPlayerPartyCount -_08112D84: .4byte CB2_EvolutionSceneLoadGraphics -_08112D88: .4byte word_2024E82 -_08112D8C: - ldr r0, _08112DC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08112D9A - b _08112FD0 -_08112D9A: - ldr r1, [r4, 0x4] - ldr r0, _08112DC4 @ =CB2_EvolutionSceneUpdate_0 - cmp r1, r0 - beq _08112DA4 - b _08112FD0 -_08112DA4: - bl sub_809FA30 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bne _08112DCC - ldr r0, _08112DC8 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x9 - b _08112FCE - .align 2, 0 -_08112DC0: .4byte gPaletteFade -_08112DC4: .4byte CB2_EvolutionSceneUpdate_0 -_08112DC8: .4byte gTasks -_08112DCC: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r9 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl IsHMMove2 - cmp r0, 0 - beq _08112E24 - ldr r0, _08112E10 @ =gBattleStringsTable - ldr r3, _08112E14 @ =0x000004cc - adds r0, r3 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112E18 @ =gUnknown_03004210 - ldr r1, _08112E1C @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08112E20 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0xB - strh r1, [r0, 0x18] - b _08112FD0 - .align 2, 0 -_08112E10: .4byte gBattleStringsTable -_08112E14: .4byte 0x000004cc -_08112E18: .4byte gUnknown_03004210 -_08112E1C: .4byte gDisplayedStringBattle -_08112E20: .4byte gTasks -_08112E24: - ldr r1, _08112E80 @ =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - lsls r4, r6, 24 - lsrs r4, 24 - mov r0, r9 - adds r1, r4, 0 - bl RemoveMonPPBonus - ldr r0, _08112E84 @ =word_2024E82 - ldrh r1, [r0] - mov r0, r9 - adds r2, r4, 0 - bl SetMonMoveSlot - ldr r0, _08112E88 @ =gBattleStringsTable - movs r3, 0xCF - lsls r3, 2 - adds r0, r3 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112E8C @ =gUnknown_03004210 - ldr r1, _08112E90 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112E94 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08112FCE - .align 2, 0 -_08112E80: .4byte gBattleTextBuff2 -_08112E84: .4byte word_2024E82 -_08112E88: .4byte gBattleStringsTable -_08112E8C: .4byte gUnknown_03004210 -_08112E90: .4byte gDisplayedStringBattle -_08112E94: .4byte gTasks -_08112E98: - ldr r4, _08112ED8 @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _08112EA2 - b _08112FD0 -_08112EA2: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112EAE - b _08112FD0 -_08112EAE: - ldr r0, _08112EDC @ =gBattleStringsTable - ldr r0, [r0, 0x1C] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112EE0 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112EE4 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08112FCE - .align 2, 0 -_08112ED8: .4byte gUnknown_03004210 -_08112EDC: .4byte gBattleStringsTable -_08112EE0: .4byte gDisplayedStringBattle -_08112EE4: .4byte gTasks -_08112EE8: - ldr r4, _08112F28 @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - bne _08112FD0 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08112FD0 - ldr r0, _08112F2C @ =gBattleStringsTable - movs r1, 0xD0 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112F30 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08112F34 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x13 - strh r1, [r0, 0x8] - b _08112FD0 - .align 2, 0 -_08112F28: .4byte gUnknown_03004210 -_08112F2C: .4byte gBattleStringsTable -_08112F30: .4byte gDisplayedStringBattle -_08112F34: .4byte gTasks -_08112F38: - ldr r0, _08112F68 @ =gBattleStringsTable - ldr r0, [r0, 0x20] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112F6C @ =gUnknown_03004210 - ldr r1, _08112F70 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08112F74 @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0xA - strh r1, [r0, 0x1A] - strh r2, [r0, 0x1C] - movs r1, 0x3 - strh r1, [r0, 0x18] - b _08112FD0 - .align 2, 0 -_08112F68: .4byte gBattleStringsTable -_08112F6C: .4byte gUnknown_03004210 -_08112F70: .4byte gDisplayedStringBattle -_08112F74: .4byte gTasks -_08112F78: - ldr r0, _08112FA0 @ =gBattleStringsTable - ldr r0, [r0, 0x24] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112FA4 @ =gUnknown_03004210 - ldr r1, _08112FA8 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08112FAC @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 -_08112F9A: - movs r1, 0xE - strh r1, [r0, 0x8] - b _08112FD0 - .align 2, 0 -_08112FA0: .4byte gBattleStringsTable -_08112FA4: .4byte gUnknown_03004210 -_08112FA8: .4byte gDisplayedStringBattle -_08112FAC: .4byte gTasks -_08112FB0: - ldr r0, _08112FE0 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _08112FD0 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08112FD0 - ldr r0, _08112FE4 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 -_08112FCE: - strh r0, [r1, 0x18] -_08112FD0: - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08112FE0: .4byte gUnknown_03004210 -_08112FE4: .4byte gTasks - thumb_func_end Task_EvolutionScene - - thumb_func_start Task_TradeEvolutionScene -Task_TradeEvolutionScene: @ 8112FE8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _0811302C @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r2 - movs r3, 0xA - ldrsh r0, [r1, r3] - mov r8, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - lsls r0, 16 - mov r3, r8 - orrs r3, r0 - mov r8, r3 - movs r3, 0x8 - ldrsh r0, [r1, r3] - adds r6, r2, 0 - cmp r0, 0x11 - bls _08113020 - bl _08113B3A -_08113020: - lsls r0, 2 - ldr r1, _08113030 @ =_08113034 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811302C: .4byte gTasks -_08113030: .4byte _08113034 - .align 2, 0 -_08113034: - .4byte _0811307C - .4byte _081130B8 - .4byte _081130DC - .4byte _0811310C - .4byte _0811314C - .4byte _0811318C - .4byte _081131C8 - .4byte _081131F4 - .4byte _0811322C - .4byte _08113248 - .4byte _08113274 - .4byte _081132A8 - .4byte _081132F8 - .4byte _081133A8 - .4byte _0811346C - .4byte _08113490 - .4byte _081134F8 - .4byte _08113538 -_0811307C: - ldr r4, _081130A8 @ =gStringVar4 - ldr r1, _081130AC @ =gUnknown_08400C4A - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _081130B0 @ =gUnknown_03004828 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _081130B4 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - b _08113298 - .align 2, 0 -_081130A8: .4byte gStringVar4 -_081130AC: .4byte gUnknown_08400C4A -_081130B0: .4byte gUnknown_03004828 -_081130B4: .4byte gTasks -_081130B8: - ldr r0, _081130D8 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _081130C6 - bl _08113B3A -_081130C6: - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r6 - ldrh r0, [r4, 0xE] - movs r1, 0 - bl PlayCry1 - b _081132E2 - .align 2, 0 -_081130D8: .4byte gUnknown_03004828 -_081130DC: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _081130EA - bl _08113B3A -_081130EA: - ldr r0, _08113104 @ =0x00000179 - bl m4aSongNumStop - movs r0, 0xBC - lsls r0, 1 - bl PlaySE - ldr r1, _08113108 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - b _08113298 - .align 2, 0 -_08113104: .4byte 0x00000179 -_08113108: .4byte gTasks -_0811310C: - bl IsSEPlaying - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _0811311C - bl _08113B3A -_0811311C: - ldr r0, _08113144 @ =0x00000179 - bl PlayBGM - ldr r1, _08113148 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - str r5, [sp] - movs r0, 0x1C - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl _08113B3A - .align 2, 0 -_08113144: .4byte 0x00000179 -_08113148: .4byte gTasks -_0811314C: - ldr r0, _08113180 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0811315C - bl _08113B3A -_0811315C: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x11 - bl sub_8149970 - ldr r1, _08113184 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r1, _08113188 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - b _08113298 - .align 2, 0 -_08113180: .4byte gPaletteFade -_08113184: .4byte gBattleCommunication -_08113188: .4byte gTasks -_0811318C: - ldr r4, _081131C0 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _081131A2 - bl _08113B3A -_081131A2: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r6 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - ldr r1, _081131C4 @ =0x02014800 - movs r0, 0x1 - strb r0, [r1, 0x3] - bl sub_8149A90 - strb r0, [r4, 0x2] - bl _08113B3A - .align 2, 0 -_081131C0: .4byte gBattleCommunication -_081131C4: .4byte 0x02014800 -_081131C8: - ldr r4, _081131EC @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _081131DE - bl _08113B3A -_081131DE: - ldr r1, _081131F0 @ =0x02014800 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - bl sub_8149E7C - strb r0, [r4, 0x2] - b _08113290 - .align 2, 0 -_081131EC: .4byte gBattleCommunication -_081131F0: .4byte 0x02014800 -_081131F4: - ldr r1, _08113224 @ =0x02014800 - ldrb r0, [r1, 0x3] - subs r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - cmp r0, 0 - beq _08113206 - bl _08113B3A -_08113206: - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r0, _08113228 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08113220 - bl _08113B3A -_08113220: - b _08113290 - .align 2, 0 -_08113224: .4byte 0x02014800 -_08113228: .4byte gBattleCommunication -_0811322C: - bl sub_8149B44 - ldr r1, _08113240 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r1, _08113244 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - b _08113298 - .align 2, 0 -_08113240: .4byte gBattleCommunication -_08113244: .4byte gTasks -_08113248: - ldr r5, _08113270 @ =gBattleCommunication - ldrb r0, [r5, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _0811325E - bl _08113B3A -_0811325E: - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r6 - ldrh r0, [r4, 0x10] - bl sub_8149D5C - strb r0, [r5, 0x2] - b _081132E2 - .align 2, 0 -_08113270: .4byte gBattleCommunication -_08113274: - ldr r0, _081132A4 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _0811328A - bl _08113B3A -_0811328A: - movs r0, 0x21 - bl PlaySE -_08113290: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r6 -_08113298: - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - bl _08113B3A - .align 2, 0 -_081132A4: .4byte gBattleCommunication -_081132A8: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _081132B6 - bl _08113B3A -_081132B6: - ldr r0, _081132EC @ =gTasks - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x10] - movs r1, 0 - bl PlayCry1 - ldr r0, _081132F0 @ =gPlttBufferUnfaded + 0x40 - ldr r1, _081132F4 @ =0x02009000 - movs r2, 0x60 - bl memcpy - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_081132E2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - bl _08113B3A - .align 2, 0 -_081132EC: .4byte gTasks -_081132F0: .4byte gPlttBufferUnfaded + 0x40 -_081132F4: .4byte 0x02009000 -_081132F8: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _08113306 - bl _08113B3A -_08113306: - ldr r0, _08113390 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08113316 - bl _08113B3A -_08113316: - ldr r4, _08113394 @ =gStringVar4 - ldr r1, _08113398 @ =gUnknown_08400C60 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _0811339C @ =gUnknown_03004828 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _081133A0 @ =0x00000173 - bl PlayFanfare - ldr r2, _081133A4 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - adds r2, r1 - adds r2, 0x10 - mov r0, r8 - movs r1, 0xB - bl SetMonData - mov r0, r8 - bl CalculateMonStats - ldrh r1, [r4, 0xE] - ldrh r2, [r4, 0x10] - mov r0, r8 - bl EvolutionRenameMon - ldrh r0, [r4, 0x10] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetNationalPokedexFlag - ldrh r0, [r4, 0x10] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetNationalPokedexFlag - movs r0, 0xE - bl IncrementGameStat - b _08113B3A - .align 2, 0 -_08113390: .4byte gPaletteFade -_08113394: .4byte gStringVar4 -_08113398: .4byte gUnknown_08400C60 -_0811339C: .4byte gUnknown_03004828 -_081133A0: .4byte 0x00000173 -_081133A4: .4byte gTasks -_081133A8: - ldr r0, _08113410 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _081133B4 - b _08113B3A -_081133B4: - bl IsFanfareTaskInactive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081133C2 - b _08113B3A -_081133C2: - ldr r1, _08113414 @ =gTasks - lsls r4, r7, 2 - adds r0, r4, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrb r1, [r5, 0x14] - mov r0, r8 - bl sub_803B7C8 - lsls r0, 16 - lsrs r6, r0, 16 - mov r9, r4 - cmp r6, 0 - beq _08113434 - movs r3, 0x1E - ldrsh r2, [r5, r3] - cmp r2, 0 - bne _08113434 - ldrh r1, [r5, 0x12] - movs r0, 0x80 - orrs r0, r1 - strh r0, [r5, 0x12] - strh r2, [r5, 0x14] - strh r2, [r5, 0x18] - mov r0, r8 - movs r1, 0x2 - add r2, sp, 0x4 - bl GetMonData - ldr r0, _08113418 @ =gBattleTextBuff1 - add r1, sp, 0x4 - bl StringCopy10 - ldr r0, _0811341C @ =0x0000ffff - cmp r6, r0 - bne _08113420 - movs r0, 0x11 - strh r0, [r5, 0x8] - b _08113B3A - .align 2, 0 -_08113410: .4byte gUnknown_03004828 -_08113414: .4byte gTasks -_08113418: .4byte gBattleTextBuff1 -_0811341C: .4byte 0x0000ffff -_08113420: - ldr r0, _08113430 @ =0x0000fffe - cmp r6, r0 - bne _08113428 - b _08113B3A -_08113428: - movs r0, 0xF - strh r0, [r5, 0x8] - b _08113B3A - .align 2, 0 -_08113430: .4byte 0x0000fffe -_08113434: - ldr r0, _0811345C @ =0x00000179 - bl PlayBGM - ldr r0, _08113460 @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _08113464 @ =gOtherText_LinkStandby2 - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08113468 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _081134DC - .align 2, 0 -_0811345C: .4byte 0x00000179 -_08113460: .4byte gUnknown_03004828 -_08113464: .4byte gOtherText_LinkStandby2 -_08113468: .4byte gTasks -_0811346C: - ldr r0, _08113488 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _08113478 - b _08113B3A -_08113478: - adds r0, r7, 0 - bl DestroyTask - ldr r0, _0811348C @ =gUnknown_03005E94 - ldr r0, [r0] - bl SetMainCallback2 - b _08113B3A - .align 2, 0 -_08113488: .4byte gUnknown_03004828 -_0811348C: .4byte gUnknown_03005E94 -_08113490: - ldr r4, _081134E4 @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _0811349C - b _08113B3A -_0811349C: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _081134A8 - b _08113B3A -_081134A8: - bl sub_8024CEC - ldr r0, _081134E8 @ =0x0000016f - bl PlayFanfare - ldr r0, _081134EC @ =gBattleStringsTable - ldr r0, [r0, 0xC] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _081134F0 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _081134F4 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x40 - strh r0, [r1, 0x14] -_081134DC: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _08113B3A - .align 2, 0 -_081134E4: .4byte gUnknown_03004828 -_081134E8: .4byte 0x0000016f -_081134EC: .4byte gBattleStringsTable -_081134F0: .4byte gDisplayedStringBattle -_081134F4: .4byte gTasks -_081134F8: - ldr r0, _08113530 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _08113504 - b _08113B3A -_08113504: - bl IsFanfareTaskInactive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08113512 - b _08113B3A -_08113512: - ldr r0, _08113534 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - subs r0, 0x1 - strh r0, [r1, 0x14] - lsls r0, 16 - cmp r0, 0 - beq _0811352A - b _08113B3A -_0811352A: - movs r0, 0xD - strh r0, [r1, 0x8] - b _08113B3A - .align 2, 0 -_08113530: .4byte gUnknown_03004828 -_08113534: .4byte gTasks -_08113538: - lsls r1, r7, 2 - adds r0, r1, r7 - lsls r0, 3 - adds r0, r6 - movs r3, 0x18 - ldrsh r0, [r0, r3] - mov r9, r1 - cmp r0, 0xB - bls _0811354C - b _08113B3A -_0811354C: - lsls r0, 2 - ldr r1, _08113558 @ =_0811355C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08113558: .4byte _0811355C - .align 2, 0 -_0811355C: - .4byte _0811358C - .4byte _081135E4 - .4byte _08113638 - .4byte _08113682 - .4byte _0811371C - .4byte _0811387C - .4byte _081138CC - .4byte _081139E8 - .4byte _08113A3C - .4byte _08113A90 - .4byte _08113AD8 - .4byte _08113B18 -_0811358C: - ldr r4, _081135D4 @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _08113598 - b _08113B3A -_08113598: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _081135A4 - b _08113B3A -_081135A4: - bl sub_8024CEC - ldr r0, _081135D8 @ =gBattleStringsTable - ldr r0, [r0, 0x10] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _081135DC @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _081135E0 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08113B38 - .align 2, 0 -_081135D4: .4byte gUnknown_03004828 -_081135D8: .4byte gBattleStringsTable -_081135DC: .4byte gDisplayedStringBattle -_081135E0: .4byte gTasks -_081135E4: - ldr r4, _08113628 @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _081135F0 - b _08113B3A -_081135F0: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _081135FC - b _08113B3A -_081135FC: - ldr r0, _0811362C @ =gBattleStringsTable - ldr r0, [r0, 0x14] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113630 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08113634 @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08113B38 - .align 2, 0 -_08113628: .4byte gUnknown_03004828 -_0811362C: .4byte gBattleStringsTable -_08113630: .4byte gDisplayedStringBattle -_08113634: .4byte gTasks -_08113638: - ldr r4, _081136FC @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _08113644 - b _08113B3A -_08113644: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08113682 - ldr r0, _08113700 @ =gBattleStringsTable - ldr r0, [r0, 0x18] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113704 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08113708 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 - strh r0, [r1, 0x1A] - movs r0, 0x9 - strh r0, [r1, 0x1C] - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] -_08113682: - ldr r5, _081136FC @ =gUnknown_03004828 - ldr r0, [r5] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _0811368E - b _08113B3A -_0811368E: - bl IsSEPlaying - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _0811369C - b _08113B3A -_0811369C: - ldr r0, [r5] - adds r0, 0x4 - movs r1, 0xD - str r1, [sp] - movs r1, 0x18 - movs r2, 0x8 - movs r3, 0x1D - bl DrawTextWindow - ldr r4, _0811370C @ =gBattleCommunication - strb r6, [r4, 0x1] - ldr r2, [r5] - adds r0, r2, 0x4 - ldr r1, _08113710 @ =gOtherText_YesNoAndPlayer - adds r2, 0x34 - ldrb r2, [r2] - adds r2, 0x80 - movs r3, 0x9 - str r3, [sp] - movs r3, 0x19 - bl InitWindow - ldr r0, [r5] - adds r0, 0x4 - bl sub_8002F44 - ldr r1, _08113714 @ =0x0000ffff - ldr r3, _08113718 @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - bl sub_81150D8 - ldr r0, _08113708 @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - movs r2, 0 - strh r0, [r1, 0x18] - strb r2, [r4, 0x1] - b _08113B3A - .align 2, 0 -_081136FC: .4byte gUnknown_03004828 -_08113700: .4byte gBattleStringsTable -_08113704: .4byte gDisplayedStringBattle -_08113708: .4byte gTasks -_0811370C: .4byte gBattleCommunication -_08113710: .4byte gOtherText_YesNoAndPlayer -_08113714: .4byte 0x0000ffff -_08113718: .4byte 0x00002d9f -_0811371C: - ldr r0, _081137CC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08113742 - ldr r4, _081137D0 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08113742 - movs r0, 0x5 - bl PlaySE - bl HBlankCB_TradeEvolutionScene - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_81150D8 -_08113742: - ldr r0, _081137CC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08113768 - ldr r4, _081137D0 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08113768 - movs r0, 0x5 - bl PlaySE - bl HBlankCB_TradeEvolutionScene - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_81150D8 -_08113768: - ldr r0, _081137CC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0811380A - ldr r4, _081137D4 @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x4 - movs r1, 0xD - str r1, [sp] - movs r1, 0x18 - movs r2, 0x8 - movs r3, 0x1D - bl ZeroFillWindowRect - bl DestroyMenuCursor - ldr r0, _081137D8 @ =gBattleStringsTable - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _081137DC @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - movs r0, 0x5 - bl PlaySE - ldr r0, _081137D0 @ =gBattleCommunication - ldrb r2, [r0, 0x1] - cmp r2, 0 - beq _081137E4 - ldr r0, _081137E0 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1C] - strh r0, [r1, 0x18] - b _0811380A - .align 2, 0 -_081137CC: .4byte gMain -_081137D0: .4byte gBattleCommunication -_081137D4: .4byte gUnknown_03004828 -_081137D8: .4byte gBattleStringsTable -_081137DC: .4byte gDisplayedStringBattle -_081137E0: .4byte gTasks -_081137E4: - ldr r0, _08113868 @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1A] - strh r0, [r1, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _0811380A - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0811380A: - ldr r0, _0811386C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08113818 - b _08113B3A -_08113818: - ldr r4, _08113870 @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x4 - movs r1, 0xD - str r1, [sp] - movs r1, 0x18 - movs r2, 0x8 - movs r3, 0x1D - bl ZeroFillWindowRect - bl DestroyMenuCursor - ldr r0, _08113874 @ =gBattleStringsTable - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113878 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - movs r0, 0x5 - bl PlaySE - ldr r1, _08113868 @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x1C] - strh r1, [r0, 0x18] - b _08113B3A - .align 2, 0 -_08113868: .4byte gTasks -_0811386C: .4byte gMain -_08113870: .4byte gUnknown_03004828 -_08113874: .4byte gBattleStringsTable -_08113878: .4byte gDisplayedStringBattle -_0811387C: - ldr r0, _081138B8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0811388A - b _08113B3A -_0811388A: - ldr r0, _081138BC @ =gPlayerParty - mov r3, r9 - adds r5, r3, r7 - lsls r5, 3 - adds r5, r6 - ldrh r1, [r5, 0x20] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _081138C0 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _081138C4 @ =CB2_TradeEvolutionSceneLoadGraphics - ldr r4, _081138C8 @ =word_2024E82 - ldrh r4, [r4] - str r4, [sp] - bl sub_809D9F0 - ldrh r0, [r5, 0x18] - adds r0, 0x1 - strh r0, [r5, 0x18] - b _08113B3A - .align 2, 0 -_081138B8: .4byte gPaletteFade -_081138BC: .4byte gPlayerParty -_081138C0: .4byte gPlayerPartyCount -_081138C4: .4byte CB2_TradeEvolutionSceneLoadGraphics -_081138C8: .4byte word_2024E82 -_081138CC: - ldr r0, _08113900 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081138DA - b _08113B3A -_081138DA: - ldr r0, _08113904 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _08113908 @ =CB2_EvolutionSceneUpdate_1 - cmp r1, r0 - beq _081138E6 - b _08113B3A -_081138E6: - bl sub_809FA30 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bne _08113910 - ldr r0, _0811390C @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x9 - b _08113B38 - .align 2, 0 -_08113900: .4byte gPaletteFade -_08113904: .4byte gMain -_08113908: .4byte CB2_EvolutionSceneUpdate_1 -_0811390C: .4byte gTasks -_08113910: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl IsHMMove2 - cmp r0, 0 - beq _08113970 - ldr r0, _0811395C @ =gBattleStringsTable - ldr r3, _08113960 @ =0x000004cc - adds r0, r3 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08113964 @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _08113968 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _0811396C @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0xB - strh r1, [r0, 0x18] - b _08113B3A - .align 2, 0 -_0811395C: .4byte gBattleStringsTable -_08113960: .4byte 0x000004cc -_08113964: .4byte gUnknown_03004828 -_08113968: .4byte gDisplayedStringBattle -_0811396C: .4byte gTasks -_08113970: - ldr r1, _081139D0 @ =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - lsls r4, r6, 24 - lsrs r4, 24 - mov r0, r8 - adds r1, r4, 0 - bl RemoveMonPPBonus - ldr r0, _081139D4 @ =word_2024E82 - ldrh r1, [r0] - mov r0, r8 - adds r2, r4, 0 - bl SetMonMoveSlot - ldr r0, _081139D8 @ =gBattleStringsTable - movs r3, 0xCF - lsls r3, 2 - adds r0, r3 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _081139DC @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _081139E0 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _081139E4 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08113B38 - .align 2, 0 -_081139D0: .4byte gBattleTextBuff2 -_081139D4: .4byte word_2024E82 -_081139D8: .4byte gBattleStringsTable -_081139DC: .4byte gUnknown_03004828 -_081139E0: .4byte gDisplayedStringBattle -_081139E4: .4byte gTasks -_081139E8: - ldr r4, _08113A2C @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _081139F4 - b _08113B3A -_081139F4: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08113A00 - b _08113B3A -_08113A00: - ldr r0, _08113A30 @ =gBattleStringsTable - ldr r0, [r0, 0x1C] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113A34 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08113A38 @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08113B38 - .align 2, 0 -_08113A2C: .4byte gUnknown_03004828 -_08113A30: .4byte gBattleStringsTable -_08113A34: .4byte gDisplayedStringBattle -_08113A38: .4byte gTasks -_08113A3C: - ldr r4, _08113A80 @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - bne _08113B3A - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08113B3A - ldr r0, _08113A84 @ =gBattleStringsTable - movs r1, 0xD0 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113A88 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r4, 0xF - str r4, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08113A8C @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - b _08113B3A - .align 2, 0 -_08113A80: .4byte gUnknown_03004828 -_08113A84: .4byte gBattleStringsTable -_08113A88: .4byte gDisplayedStringBattle -_08113A8C: .4byte gTasks -_08113A90: - ldr r0, _08113AC8 @ =gBattleStringsTable - ldr r0, [r0, 0x20] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08113ACC @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _08113AD0 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08113AD4 @ =gTasks - mov r3, r9 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0xA - strh r1, [r0, 0x1A] - strh r2, [r0, 0x1C] - movs r1, 0x3 - strh r1, [r0, 0x18] - b _08113B3A - .align 2, 0 -_08113AC8: .4byte gBattleStringsTable -_08113ACC: .4byte gUnknown_03004828 -_08113AD0: .4byte gDisplayedStringBattle -_08113AD4: .4byte gTasks -_08113AD8: - ldr r0, _08113B08 @ =gBattleStringsTable - ldr r0, [r0, 0x24] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08113B0C @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _08113B10 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08113B14 @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0xD - strh r1, [r0, 0x8] - b _08113B3A - .align 2, 0 -_08113B08: .4byte gBattleStringsTable -_08113B0C: .4byte gUnknown_03004828 -_08113B10: .4byte gDisplayedStringBattle -_08113B14: .4byte gTasks -_08113B18: - ldr r0, _08113B48 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - bne _08113B3A - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08113B3A - ldr r0, _08113B4C @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 -_08113B38: - strh r0, [r1, 0x18] -_08113B3A: - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08113B48: .4byte gUnknown_03004828 -_08113B4C: .4byte gTasks - thumb_func_end Task_TradeEvolutionScene - - thumb_func_start unref_sub_8113B50 -unref_sub_8113B50: @ 8113B50 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x3C - str r0, [sp] - str r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - movs r1, 0 - str r1, [sp, 0x10] - movs r2, 0 - str r2, [sp, 0x8] - ldr r3, _08113C60 @ =0x02014800 - mov r12, r3 - ldr r4, _08113C64 @ =0x000018c4 - add r4, r12 - mov r10, r4 - ldr r5, _08113C68 @ =0x000020c4 - add r5, r12 - mov r8, r5 -_08113B7C: - adds r0, r3, 0 - adds r0, 0x84 - ldr r1, [sp, 0x8] - adds r0, r1, r0 - strb r2, [r0] - adds r0, r3, 0x4 - adds r0, r1, r0 - strb r2, [r0] - ldr r4, _08113C6C @ =0x02014844 - adds r0, r1, r4 - strb r2, [r0] - movs r6, 0 - lsls r1, 5 - mov r9, r1 - ldr r5, [sp, 0x8] - lsls r4, r5, 6 -_08113B9C: - mov r0, r9 - adds r1, r6, r0 - ldr r5, _08113C70 @ =0x020158c4 - adds r0, r1, r5 - strb r2, [r0] - mov r5, r10 - adds r0, r1, r5 - strb r2, [r0] - mov r5, r8 - adds r0, r1, r5 - strb r2, [r0] - ldr r5, _08113C74 @ =0x020170c4 - adds r0, r1, r5 - strb r2, [r0] - adds r7, r3, 0 - adds r7, 0xC4 - adds r0, r1, r7 - strb r2, [r0] - ldr r5, _08113C78 @ =0x000008c4 - adds r0, r3, r5 - adds r0, r1, r0 - strb r2, [r0] - ldr r5, _08113C7C @ =0x000030c4 - adds r0, r3, r5 - adds r0, r1, r0 - strb r2, [r0] - ldr r5, _08113C80 @ =0x000038c4 - adds r0, r3, r5 - adds r1, r0 - strb r2, [r1] - lsls r1, r6, 1 - adds r1, r4 - ldr r5, _08113C84 @ =0x000060c4 - adds r0, r3, r5 - adds r0, r1, r0 - strh r2, [r0] - ldr r5, _08113C88 @ =0x000070c4 - adds r0, r3, r5 - adds r0, r1, r0 - strh r2, [r0] - ldr r5, _08113C8C @ =0x000080c4 - adds r0, r3, r5 - adds r0, r1, r0 - strh r2, [r0] - ldr r5, _08113C90 @ =0x000090c4 - adds r0, r3, r5 - adds r1, r0 - strh r2, [r1] - adds r6, 0x1 - cmp r6, 0x1F - ble _08113B9C - ldr r0, [sp, 0x8] - adds r0, 0x1 - str r0, [sp, 0x8] - cmp r0, 0x3F - ble _08113B7C - ldr r1, _08113C94 @ =0x0000a0c4 - add r1, r12 - movs r0, 0x40 - strb r0, [r1] - movs r1, 0 - mov r8, r1 - movs r2, 0 - str r2, [sp, 0x8] - movs r3, 0x80 - lsls r3, 5 - adds r3, r7 - mov r12, r3 - movs r4, 0xC0 - lsls r4, 5 - adds r4, r7 - mov r9, r4 - movs r5, 0 - adds r4, r7, 0 - subs r4, 0xC0 -_08113C32: - movs r3, 0 - ldr r2, [sp] - add r2, r8 - movs r6, 0 - ldr r0, [sp, 0x8] - adds r0, 0x1 - str r0, [sp, 0x30] - ldr r1, [sp, 0x8] - lsls r1, 7 - mov r10, r1 - movs r7, 0x1 - negs r7, r7 -_08113C4A: - asrs r0, r6, 1 - lsls r0, 2 - add r0, r10 - ldr r1, _08113C98 @ =0x020188c4 - adds r0, r1 - str r2, [r0] - cmp r3, 0 - beq _08113C9C - cmp r3, 0x1 - beq _08113CC6 - b _08113CF4 - .align 2, 0 -_08113C60: .4byte 0x02014800 -_08113C64: .4byte 0x000018c4 -_08113C68: .4byte 0x000020c4 -_08113C6C: .4byte 0x02014844 -_08113C70: .4byte 0x020158c4 -_08113C74: .4byte 0x020170c4 -_08113C78: .4byte 0x000008c4 -_08113C7C: .4byte 0x000030c4 -_08113C80: .4byte 0x000038c4 -_08113C84: .4byte 0x000060c4 -_08113C88: .4byte 0x000070c4 -_08113C8C: .4byte 0x000080c4 -_08113C90: .4byte 0x000090c4 -_08113C94: .4byte 0x0000a0c4 -_08113C98: .4byte 0x020188c4 -_08113C9C: - movs r0, 0x1 - ands r0, r6 - cmp r0, 0 - beq _08113CAA - cmp r0, 0x1 - beq _08113CB0 - b _08113CF4 -_08113CAA: - ldrb r1, [r2] - movs r0, 0xF - b _08113CB4 -_08113CB0: - ldrb r1, [r2] - movs r0, 0xF0 -_08113CB4: - ands r0, r1 - cmp r0, 0 - beq _08113CF4 - ldrb r0, [r4] - adds r0, r5 - add r0, r12 - strb r6, [r0] - movs r3, 0x1 - b _08113CF4 -_08113CC6: - adds r0, r6, 0 - ands r0, r3 - cmp r0, 0 - beq _08113CD4 - cmp r0, 0x1 - beq _08113CDA - b _08113CF4 -_08113CD4: - ldrb r1, [r2] - movs r0, 0xF - b _08113CDE -_08113CDA: - ldrb r1, [r2] - movs r0, 0xF0 -_08113CDE: - ands r0, r1 - cmp r0, 0 - bne _08113CF4 - ldrb r0, [r4] - adds r0, r5 - add r0, r9 - strb r7, [r0] - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - movs r3, 0 -_08113CF4: - adds r0, r6, 0x1 - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _08113D02 - adds r2, 0x1D - b _08113D0C -_08113D02: - movs r0, 0x1 - ands r0, r6 - cmp r0, 0 - beq _08113D0C - adds r2, 0x1 -_08113D0C: - adds r7, 0x1 - adds r6, 0x1 - cmp r6, 0x3F - ble _08113C4A - cmp r3, 0 - beq _08113D26 - ldrb r0, [r4] - adds r0, r5 - add r0, r9 - strb r6, [r0] - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] -_08113D26: - movs r0, 0x7 - ldr r2, [sp, 0x30] - ands r2, r0 - cmp r2, 0 - bne _08113D36 - movs r3, 0xE4 - add r8, r3 - b _08113D3A -_08113D36: - movs r0, 0x4 - add r8, r0 -_08113D3A: - adds r5, 0x20 - adds r4, 0x1 - ldr r1, [sp, 0x8] - adds r1, 0x1 - str r1, [sp, 0x8] - cmp r1, 0x3F - bgt _08113D4A - b _08113C32 -_08113D4A: - movs r2, 0 - mov r8, r2 - movs r3, 0 - str r3, [sp, 0x8] - ldr r0, _08113D84 @ =0x02014844 - movs r4, 0x82 - lsls r4, 6 - adds r4, r0 - mov r10, r4 - movs r5, 0xA2 - lsls r5, 6 - adds r7, r0, r5 - movs r5, 0 - adds r4, r0, 0 - movs r0, 0x1 - mov r9, r0 -_08113D6A: - movs r3, 0 - ldr r2, [sp, 0x4] - add r2, r8 - movs r6, 0 - ldr r1, [sp, 0x8] - adds r1, 0x1 - str r1, [sp, 0x30] -_08113D78: - cmp r3, 0 - beq _08113D88 - cmp r3, 0x1 - beq _08113DB4 - b _08113DE4 - .align 2, 0 -_08113D84: .4byte 0x02014844 -_08113D88: - adds r0, r6, 0 - mov r1, r9 - ands r0, r1 - cmp r0, 0 - beq _08113D98 - cmp r0, 0x1 - beq _08113D9E - b _08113DE4 -_08113D98: - ldrb r1, [r2] - movs r0, 0xF - b _08113DA2 -_08113D9E: - ldrb r1, [r2] - movs r0, 0xF0 -_08113DA2: - ands r0, r1 - cmp r0, 0 - beq _08113DE4 - ldrb r0, [r4] - adds r0, r5 - add r0, r10 - strb r6, [r0] - movs r3, 0x1 - b _08113DE4 -_08113DB4: - adds r0, r6, 0 - ands r0, r3 - cmp r0, 0 - beq _08113DC2 - cmp r0, 0x1 - beq _08113DC8 - b _08113DE4 -_08113DC2: - ldrb r1, [r2] - movs r0, 0xF - b _08113DCC -_08113DC8: - ldrb r1, [r2] - movs r0, 0xF0 -_08113DCC: - ands r0, r1 - cmp r0, 0 - bne _08113DE4 - ldrb r0, [r4] - adds r0, r5 - adds r0, r7 - subs r1, r6, 0x1 - strb r1, [r0] - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - movs r3, 0 -_08113DE4: - adds r1, r6, 0x1 - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _08113DF2 - adds r2, 0x1D - b _08113DFC -_08113DF2: - mov r0, r9 - ands r6, r0 - cmp r6, 0 - beq _08113DFC - adds r2, 0x1 -_08113DFC: - adds r6, r1, 0 - cmp r6, 0x3F - ble _08113D78 - cmp r3, 0 - beq _08113E14 - ldrb r0, [r4] - adds r0, r5 - adds r0, r7 - strb r6, [r0] - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] -_08113E14: - movs r0, 0x7 - ldr r1, [sp, 0x30] - ands r1, r0 - cmp r1, 0 - bne _08113E24 - movs r2, 0xE4 - add r8, r2 - b _08113E28 -_08113E24: - movs r3, 0x4 - add r8, r3 -_08113E28: - adds r5, 0x20 - adds r4, 0x1 - ldr r0, [sp, 0x8] - adds r0, 0x1 - str r0, [sp, 0x8] - cmp r0, 0x3F - ble _08113D6A - movs r1, 0 - str r1, [sp, 0x8] -_08113E3A: - ldr r3, [sp, 0x8] - ldr r4, _08113EBC @ =0x02014804 - adds r2, r3, r4 - ldr r5, _08113EC0 @ =0x02014844 - adds r1, r3, r5 - ldrb r0, [r2] - adds r3, 0x1 - str r3, [sp, 0x30] - ldrb r1, [r1] - cmp r0, r1 - bcc _08113E52 - b _08113F9E -_08113E52: - movs r0, 0 - str r0, [sp, 0xC] - ldrb r2, [r2] - cmp r0, r2 - bge _08113F54 - ldr r0, _08113EC4 @ =0x02014800 - adds r0, 0x4 - ldr r1, [sp, 0x8] - adds r0, r1, r0 - str r0, [sp, 0x18] -_08113E66: - movs r2, 0x80 - lsls r2, 1 - str r2, [sp, 0x14] - movs r6, 0 - ldr r3, [sp, 0x8] - ldr r4, _08113EC0 @ =0x02014844 - adds r0, r3, r4 - ldr r5, [sp, 0xC] - adds r5, 0x1 - str r5, [sp, 0x34] - ldrb r0, [r0] - cmp r6, r0 - bge _08113F3E - ldr r0, _08113EC4 @ =0x02014800 - mov r10, r0 - lsls r0, r3, 5 - ldr r2, [sp, 0xC] - adds r1, r2, r0 - mov r9, r0 - ldr r0, _08113EC4 @ =0x02014800 - adds r0, 0xC4 - mov r3, r9 - adds r7, r3, r0 - mov r5, r9 - ldr r4, _08113EC4 @ =0x02014800 - ldr r2, _08113EC8 @ =0x000010c4 - adds r0, r4, r2 - adds r1, r0 - mov r8, r1 - ldrb r3, [r1] - str r3, [sp, 0x1C] -_08113EA4: - ldr r0, _08113ECC @ =0x000020c4 - add r0, r10 - adds r0, r5, r0 - ldr r4, [sp, 0x1C] - ldrb r1, [r0] - cmp r4, r1 - bls _08113ED0 - mov r2, r8 - ldrb r1, [r2] - ldrb r0, [r0] - b _08113ED6 - .align 2, 0 -_08113EBC: .4byte 0x02014804 -_08113EC0: .4byte 0x02014844 -_08113EC4: .4byte 0x02014800 -_08113EC8: .4byte 0x000010c4 -_08113ECC: .4byte 0x000020c4 -_08113ED0: - ldrb r1, [r0] - mov r3, r8 - ldrb r0, [r3] -_08113ED6: - subs r3, r1, r0 - ldr r1, [sp, 0xC] - add r1, r9 - ldr r0, _08113EFC @ =0x000018c4 - add r0, r10 - adds r4, r1, r0 - ldr r0, _08113F00 @ =0x000028c4 - add r0, r10 - adds r2, r5, r0 - ldrb r0, [r4] - ldr r1, _08113F04 @ =0x02014800 - mov r12, r1 - ldrb r1, [r2] - cmp r0, r1 - bls _08113F08 - adds r1, r0, 0 - ldrb r0, [r2] - b _08113F0C - .align 2, 0 -_08113EFC: .4byte 0x000018c4 -_08113F00: .4byte 0x000028c4 -_08113F04: .4byte 0x02014800 -_08113F08: - ldrb r1, [r2] - ldrb r0, [r4] -_08113F0C: - subs r1, r0 - adds r3, r1 - ldr r2, [sp, 0x14] - cmp r2, r3 - ble _08113F2C - ldrb r0, [r7] - cmp r0, 0 - bne _08113F2C - ldr r0, _08114050 @ =0x000008c4 - add r0, r12 - adds r0, r5, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _08113F2C - str r6, [sp, 0x10] - str r3, [sp, 0x14] -_08113F2C: - adds r7, 0x1 - adds r5, 0x1 - adds r6, 0x1 - ldr r3, [sp, 0x8] - ldr r4, _08114054 @ =0x02014844 - adds r0, r3, r4 - ldrb r0, [r0] - cmp r6, r0 - blt _08113EA4 -_08113F3E: - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x10] - ldr r2, [sp, 0x8] - bl sub_81141F0 - ldr r5, [sp, 0x34] - str r5, [sp, 0xC] - ldr r0, [sp, 0x18] - ldrb r0, [r0] - cmp r5, r0 - blt _08113E66 -_08113F54: - movs r6, 0 - ldr r2, _08114058 @ =0x02014800 - ldr r1, [sp, 0x8] - ldr r3, _08114054 @ =0x02014844 - adds r0, r1, r3 - adds r4, r2, 0 - mov r12, r4 - ldrb r0, [r0] - cmp r6, r0 - bge _08113F9E - mov r0, r12 - adds r0, 0x44 - adds r4, r1, r0 -_08113F6E: - ldr r5, [sp, 0x8] - lsls r0, r5, 5 - adds r1, r6, r0 - adds r0, r2, 0 - adds r0, 0xC4 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _08113F94 - ldr r3, _08114050 @ =0x000008c4 - adds r0, r2, r3 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _08113F94 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_811430C -_08113F94: - adds r6, 0x1 - ldr r2, _08114058 @ =0x02014800 - ldrb r5, [r4] - cmp r6, r5 - blt _08113F6E -_08113F9E: - ldr r0, [sp, 0x8] - ldr r1, _0811405C @ =0x02014804 - adds r2, r0, r1 - ldr r3, _08114054 @ =0x02014844 - adds r1, r0, r3 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bne _08113FCC - movs r6, 0 - ldrb r4, [r2] - cmp r6, r4 - bge _08113FCC - adds r4, r2, 0 -_08113FBA: - adds r0, r6, 0 - adds r1, r6, 0 - ldr r2, [sp, 0x8] - bl sub_81141F0 - adds r6, 0x1 - ldrb r5, [r4] - cmp r6, r5 - blt _08113FBA -_08113FCC: - ldr r0, [sp, 0x8] - ldr r1, _0811405C @ =0x02014804 - adds r2, r0, r1 - ldr r3, _08114054 @ =0x02014844 - adds r1, r0, r3 - ldrb r0, [r2] - ldr r4, _08114058 @ =0x02014800 - ldrb r5, [r1] - cmp r0, r5 - bhi _08113FE2 - b _081141C4 -_08113FE2: - movs r0, 0 - str r0, [sp, 0x10] - ldrb r1, [r1] - cmp r0, r1 - blt _08113FEE - b _08114104 -_08113FEE: - str r2, [sp, 0x2C] - ldr r1, [sp, 0x8] - lsls r1, 5 - mov r9, r1 - adds r0, r4, 0 - adds r0, 0x44 - ldr r2, [sp, 0x8] - adds r0, r2, r0 - str r0, [sp, 0x20] - mov r3, r9 - str r3, [sp, 0x24] -_08114004: - movs r4, 0x80 - lsls r4, 1 - str r4, [sp, 0x14] - movs r6, 0 - ldr r5, [sp, 0x10] - adds r5, 0x1 - str r5, [sp, 0x38] - ldr r0, [sp, 0x2C] - ldrb r0, [r0] - cmp r6, r0 - bge _081140C4 - ldr r1, [sp, 0x10] - ldr r2, [sp, 0x24] - adds r1, r2 - mov r10, r1 - ldr r0, _08114058 @ =0x02014800 - adds r0, 0xC4 - adds r2, r0 - mov r8, r2 - ldr r7, [sp, 0x24] - ldr r3, _08114058 @ =0x02014800 - ldr r4, _08114060 @ =0x000010c4 - adds r0, r3, r4 - adds r5, r7, r0 - ldr r0, _08114064 @ =0x020168c4 - add r0, r10 - mov r12, r0 - ldrb r1, [r0] - str r1, [sp, 0x28] -_0811403E: - ldrb r0, [r5] - ldr r2, [sp, 0x28] - cmp r0, r2 - bls _08114068 - adds r1, r0, 0 - mov r3, r12 - ldrb r0, [r3] - b _0811406E - .align 2, 0 -_08114050: .4byte 0x000008c4 -_08114054: .4byte 0x02014844 -_08114058: .4byte 0x02014800 -_0811405C: .4byte 0x02014804 -_08114060: .4byte 0x000010c4 -_08114064: .4byte 0x020168c4 -_08114068: - mov r4, r12 - ldrb r1, [r4] - ldrb r0, [r5] -_0811406E: - subs r3, r1, r0 - ldr r1, _0811408C @ =0x02014800 - ldr r2, _08114090 @ =0x000018c4 - adds r0, r1, r2 - adds r4, r7, r0 - ldr r2, _08114094 @ =0x020170c4 - add r2, r10 - ldrb r0, [r4] - ldrb r1, [r2] - cmp r0, r1 - bls _08114098 - adds r1, r0, 0 - ldrb r0, [r2] - b _0811409C - .align 2, 0 -_0811408C: .4byte 0x02014800 -_08114090: .4byte 0x000018c4 -_08114094: .4byte 0x020170c4 -_08114098: - ldrb r1, [r2] - ldrb r0, [r4] -_0811409C: - subs r1, r0 - adds r3, r1 - ldr r2, [sp, 0x14] - cmp r2, r3 - ble _081140B2 - mov r4, r8 - ldrb r0, [r4] - cmp r0, 0 - bne _081140B2 - str r6, [sp, 0xC] - str r3, [sp, 0x14] -_081140B2: - movs r0, 0x1 - add r8, r0 - adds r7, 0x1 - adds r5, 0x1 - adds r6, 0x1 - ldr r1, [sp, 0x2C] - ldrb r1, [r1] - cmp r6, r1 - blt _0811403E -_081140C4: - ldr r3, [sp, 0xC] - add r3, r9 - ldr r2, _08114164 @ =0x02014800 - ldr r4, _08114168 @ =0x000030c4 - adds r1, r2, r4 - adds r1, r3, r1 - ldr r2, [sp, 0x10] - add r2, r9 - ldr r5, _0811416C @ =0x020168c4 - adds r0, r2, r5 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _08114164 @ =0x02014800 - ldr r4, _08114170 @ =0x000038c4 - adds r1, r0, r4 - adds r1, r3, r1 - ldr r5, _08114174 @ =0x020170c4 - adds r2, r5 - ldrb r0, [r2] - strb r0, [r1] - ldr r0, _08114164 @ =0x02014800 - adds r0, 0xC4 - adds r3, r0 - movs r0, 0x1 - strb r0, [r3] - ldr r0, [sp, 0x38] - str r0, [sp, 0x10] - ldr r1, [sp, 0x20] - ldrb r1, [r1] - cmp r0, r1 - bge _08114104 - b _08114004 -_08114104: - movs r6, 0 - ldr r4, _08114164 @ =0x02014800 - ldr r2, [sp, 0x8] - ldr r3, _08114178 @ =0x02014804 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r6, r0 - bge _081141C4 - adds r7, r4, 0 - mov r9, r6 - movs r5, 0xC4 - adds r5, r7 - mov r8, r5 -_0811411E: - ldr r1, [sp, 0x8] - lsls r0, r1, 5 - adds r2, r6, r0 - ldr r3, _0811417C @ =0x000020c4 - adds r0, r7, r3 - adds r0, r2 - mov r10, r0 - ldr r5, _08114168 @ =0x000030c4 - adds r0, r7, r5 - adds r0, r2, r0 - ldrb r0, [r0] - mov r1, r10 - strb r0, [r1] - ldr r3, _08114180 @ =0x000028c4 - adds r0, r7, r3 - adds r3, r2, r0 - ldr r5, _08114170 @ =0x000038c4 - adds r0, r7, r5 - adds r0, r2, r0 - ldrb r0, [r0] - strb r0, [r3] - mov r0, r8 - adds r1, r2, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _08114184 - mov r2, r9 - strb r2, [r1] - adds r0, r6, 0 - adds r1, r6, 0 - ldr r2, [sp, 0x8] - bl sub_81141F0 - b _081141B4 - .align 2, 0 -_08114164: .4byte 0x02014800 -_08114168: .4byte 0x000030c4 -_0811416C: .4byte 0x020168c4 -_08114170: .4byte 0x000038c4 -_08114174: .4byte 0x020170c4 -_08114178: .4byte 0x02014804 -_0811417C: .4byte 0x000020c4 -_08114180: .4byte 0x000028c4 -_08114184: - ldr r5, _081141E0 @ =0x000010c4 - adds r1, r4, r5 - adds r1, r2, r1 - ldr r5, _081141E4 @ =0x000018c4 - adds r0, r4, r5 - adds r0, r2, r0 - ldrb r0, [r0] - ldrb r2, [r1] - subs r0, r2 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r2, r0 - strb r2, [r3] - mov r0, r10 - strb r2, [r0] - ldrb r0, [r3] - subs r0, 0x1 - strb r0, [r3] - adds r0, r6, 0 - adds r1, r6, 0 - ldr r2, [sp, 0x8] - bl sub_81141F0 -_081141B4: - adds r6, 0x1 - ldr r4, _081141E8 @ =0x02014800 - ldr r1, [sp, 0x8] - ldr r2, _081141EC @ =0x02014804 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r6, r0 - blt _0811411E -_081141C4: - ldr r3, [sp, 0x30] - str r3, [sp, 0x8] - cmp r3, 0x3F - bgt _081141CE - b _08113E3A -_081141CE: - add sp, 0x3C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081141E0: .4byte 0x000010c4 -_081141E4: .4byte 0x000018c4 -_081141E8: .4byte 0x02014800 -_081141EC: .4byte 0x02014804 - thumb_func_end unref_sub_8113B50 - - thumb_func_start sub_81141F0 -sub_81141F0: @ 81141F0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r6, r0, 0 - mov r8, r1 - mov r9, r2 - ldr r3, _0811424C @ =0x02014800 - lsls r1, r2, 5 - mov r0, r8 - adds r4, r0, r1 - ldr r5, _08114250 @ =0x000030c4 - adds r2, r3, r5 - adds r2, r4, r2 - adds r1, r6, r1 - ldr r7, _08114254 @ =0x000010c4 - adds r0, r3, r7 - adds r5, r1, r0 - ldrb r0, [r5] - strb r0, [r2] - ldr r0, _08114258 @ =0x000038c4 - adds r2, r3, r0 - adds r2, r4, r2 - ldr r7, _0811425C @ =0x000018c4 - adds r0, r3, r7 - adds r1, r0 - ldrb r0, [r1] - strb r0, [r2] - movs r7, 0 - ldr r1, _08114260 @ =0x000020c4 - adds r0, r3, r1 - adds r2, r4, r0 - ldrb r1, [r5] - ldrb r0, [r2] - mov r12, r3 - cmp r1, r0 - bcs _08114264 - mov r0, r12 - adds r0, 0xC4 - adds r0, r4, r0 - movs r1, 0x4 - strb r1, [r0] - ldrb r1, [r2] - ldrb r0, [r5] - b _08114276 - .align 2, 0 -_0811424C: .4byte 0x02014800 -_08114250: .4byte 0x000030c4 -_08114254: .4byte 0x000010c4 -_08114258: .4byte 0x000038c4 -_0811425C: .4byte 0x000018c4 -_08114260: .4byte 0x000020c4 -_08114264: - cmp r1, r0 - bls _08114278 - mov r0, r12 - adds r0, 0xC4 - adds r0, r4, r0 - movs r1, 0x1 - strb r1, [r0] - ldrb r1, [r5] - ldrb r0, [r2] -_08114276: - subs r7, r1, r0 -_08114278: - mov r5, r8 - lsls r3, r5, 1 - mov r0, r9 - lsls r4, r0, 6 - adds r0, r3, r4 - ldr r1, _081142BC @ =0x000080c4 - add r1, r12 - adds r0, r1 - lsls r1, r7, 4 - strh r1, [r0] - movs r7, 0 - mov r1, r9 - lsls r2, r1, 5 - adds r1, r6, r2 - ldr r0, _081142C0 @ =0x000018c4 - add r0, r12 - adds r6, r1, r0 - adds r1, r5, r2 - ldr r0, _081142C4 @ =0x000028c4 - add r0, r12 - adds r5, r1, r0 - ldrb r2, [r6] - ldrb r0, [r5] - cmp r2, r0 - bcs _081142CC - ldr r0, _081142C8 @ =0x000008c4 - add r0, r12 - adds r0, r1, r0 - movs r1, 0x3 - strb r1, [r0] - ldrb r1, [r5] - ldrb r0, [r6] - b _081142DE - .align 2, 0 -_081142BC: .4byte 0x000080c4 -_081142C0: .4byte 0x000018c4 -_081142C4: .4byte 0x000028c4 -_081142C8: .4byte 0x000008c4 -_081142CC: - cmp r2, r0 - bls _081142E0 - ldr r0, _08114304 @ =0x000008c4 - add r0, r12 - adds r0, r1, r0 - movs r1, 0x2 - strb r1, [r0] - ldrb r1, [r6] - ldrb r0, [r5] -_081142DE: - subs r7, r1, r0 -_081142E0: - adds r0, r3, r4 - ldr r1, _08114308 @ =0x000090c4 - add r1, r12 - adds r0, r1 - lsls r1, r7, 4 - strh r1, [r0] - mov r1, r12 - adds r1, 0x84 - add r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08114304: .4byte 0x000008c4 -_08114308: .4byte 0x000090c4 - thumb_func_end sub_81141F0 - - thumb_func_start sub_811430C -sub_811430C: @ 811430C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r5, _081143AC @ =0x02014800 - lsls r4, r1, 5 - adds r4, r0, r4 - ldr r2, _081143B0 @ =0x000028c4 - adds r2, r5 - mov r10, r2 - add r10, r4 - mov r3, r10 - ldrb r2, [r3] - ldr r6, _081143B4 @ =0x000020c4 - adds r6, r5 - mov r8, r6 - add r8, r4 - mov r6, r8 - ldrb r3, [r6] - subs r7, r2, r3 - ldr r2, _081143B8 @ =0x000030c4 - adds r6, r5, r2 - adds r6, r4, r6 - ldr r2, _081143BC @ =0x000038c4 - adds r2, r5 - mov r9, r2 - add r9, r4 - lsrs r2, r7, 31 - adds r2, r7, r2 - asrs r2, 1 - adds r3, r2 - mov r2, r9 - strb r3, [r2] - strb r3, [r6] - adds r2, r5, 0 - adds r2, 0xC4 - adds r2, r4, r2 - movs r3, 0x5 - strb r3, [r2] - ldr r3, _081143C0 @ =0x000008c4 - adds r2, r5, r3 - adds r4, r2 - movs r2, 0x7 - strb r2, [r4] - adds r3, r5, 0 - adds r3, 0x84 - adds r3, r1, r3 - ldrb r2, [r3] - adds r2, 0x1 - strb r2, [r3] - ldrb r3, [r6] - mov r4, r8 - ldrb r2, [r4] - subs r7, r3, r2 - lsls r0, 1 - lsls r1, 6 - adds r0, r1 - ldr r6, _081143C4 @ =0x000080c4 - adds r1, r5, r6 - adds r1, r0, r1 - lsls r2, r7, 4 - strh r2, [r1] - mov r1, r10 - ldrb r2, [r1] - mov r3, r9 - ldrb r1, [r3] - subs r7, r2, r1 - ldr r4, _081143C8 @ =0x000090c4 - adds r5, r4 - adds r0, r5 - lsls r1, r7, 4 - strh r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081143AC: .4byte 0x02014800 -_081143B0: .4byte 0x000028c4 -_081143B4: .4byte 0x000020c4 -_081143B8: .4byte 0x000030c4 -_081143BC: .4byte 0x000038c4 -_081143C0: .4byte 0x000008c4 -_081143C4: .4byte 0x000080c4 -_081143C8: .4byte 0x000090c4 - thumb_func_end sub_811430C - - thumb_func_start unref_sub_81143CC -unref_sub_81143CC: @ 81143CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - movs r0, 0x1 - str r0, [sp, 0x4] - ldr r0, _08114408 @ =0x02014800 - ldr r2, _0811440C @ =0x0000a0c4 - adds r1, r0, r2 - ldrb r3, [r1] - adds r4, r0, 0 - cmp r3, 0 - beq _081143EE - subs r0, r3, 0x1 - strb r0, [r1] -_081143EE: - movs r5, 0 - str r5, [sp] -_081143F2: - movs r3, 0 - adds r2, r4, 0 - adds r0, r4, 0 - adds r0, 0x84 - ldr r1, [sp] - adds r0, r1, r0 - adds r1, 0x1 - str r1, [sp, 0x8] - bl _08114D84 - .align 2, 0 -_08114408: .4byte 0x02014800 -_0811440C: .4byte 0x0000a0c4 -_08114410: - ldr r5, [sp] - lsls r0, r5, 5 - adds r1, r3, r0 - adds r2, 0xC4 - adds r1, r2 - ldrb r2, [r1] - mov r8, r0 - adds r0, r3, 0x1 - mov r10, r0 - cmp r2, 0xC - bls _08114428 - b _081148D2 -_08114428: - lsls r0, r2, 2 - ldr r1, _08114434 @ =_08114438 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08114434: .4byte _08114438 - .align 2, 0 -_08114438: - .4byte _081148D2 - .4byte _0811446C - .4byte _081144F0 - .4byte _0811457C - .4byte _08114600 - .4byte _0811468C - .4byte _081146C8 - .4byte _08114704 - .4byte _08114740 - .4byte _0811477C - .4byte _081147D0 - .4byte _08114810 - .4byte _08114858 -_0811446C: - movs r1, 0 - str r1, [sp, 0x4] - lsls r0, r3, 1 - ldr r2, [sp] - lsls r1, r2, 6 - adds r0, r1 - ldr r5, _081144E0 @ =0x000060c4 - adds r2, r4, r5 - adds r2, r0, r2 - ldr r5, _081144E4 @ =0x000080c4 - adds r1, r4, r5 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r5, r0, 8 - movs r0, 0xFF - ands r1, r0 - strh r1, [r2] - movs r6, 0 - adds r1, r3, 0x1 - mov r10, r1 - ldr r2, [sp, 0x4] - cmp r2, r5 - blt _081144A6 - b _081148D2 -_081144A6: - mov r9, r4 - mov r4, r8 - adds r7, r3, r4 - ldr r0, _081144E8 @ =0x000030c4 - add r0, r9 - adds r4, r7, r0 - ldr r0, _081144EC @ =0x000020c4 - add r0, r9 - adds r2, r7, r0 -_081144B8: - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - ldrb r1, [r4] - ldr r0, [sp] - str r2, [sp, 0xC] - str r3, [sp, 0x10] - bl sub_8114DB4 - ldrb r0, [r4] - ldr r2, [sp, 0xC] - ldr r3, [sp, 0x10] - ldrb r1, [r2] - cmp r0, r1 - bne _081144D8 - b _081148A0 -_081144D8: - adds r6, 0x1 - cmp r6, r5 - blt _081144B8 - b _081148D2 - .align 2, 0 -_081144E0: .4byte 0x000060c4 -_081144E4: .4byte 0x000080c4 -_081144E8: .4byte 0x000030c4 -_081144EC: .4byte 0x000020c4 -_081144F0: - movs r2, 0 - str r2, [sp, 0x4] - ldr r4, _08114568 @ =0x02014800 - lsls r0, r3, 1 - ldr r5, [sp] - lsls r1, r5, 6 - adds r0, r1 - ldr r1, _0811456C @ =0x000060c4 - adds r2, r4, r1 - adds r2, r0, r2 - ldr r5, _08114570 @ =0x000080c4 - adds r1, r4, r5 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r5, r0, 8 - movs r0, 0xFF - ands r1, r0 - strh r1, [r2] - movs r6, 0 - adds r1, r3, 0x1 - mov r10, r1 - ldr r2, [sp, 0x4] - cmp r2, r5 - blt _0811452C - b _081148D2 -_0811452C: - mov r9, r4 - mov r4, r8 - adds r7, r3, r4 - ldr r0, _08114574 @ =0x000030c4 - add r0, r9 - adds r4, r7, r0 - ldr r0, _08114578 @ =0x000020c4 - add r0, r9 - adds r2, r7, r0 -_0811453E: - ldrb r0, [r4] - ldrb r1, [r2] - cmp r0, r1 - bne _08114548 - b _081148B8 -_08114548: - adds r1, r0, 0 - ldr r0, [sp] - str r2, [sp, 0xC] - str r3, [sp, 0x10] - bl sub_8114DF0 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - adds r6, 0x1 - ldr r2, [sp, 0xC] - ldr r3, [sp, 0x10] - cmp r6, r5 - blt _0811453E - b _081148D2 - .align 2, 0 -_08114568: .4byte 0x02014800 -_0811456C: .4byte 0x000060c4 -_08114570: .4byte 0x000080c4 -_08114574: .4byte 0x000030c4 -_08114578: .4byte 0x000020c4 -_0811457C: - movs r2, 0 - str r2, [sp, 0x4] - lsls r0, r3, 1 - ldr r5, [sp] - lsls r1, r5, 6 - adds r0, r1 - ldr r1, _081145F0 @ =0x000060c4 - adds r2, r4, r1 - adds r2, r0, r2 - ldr r5, _081145F4 @ =0x000080c4 - adds r1, r4, r5 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r5, r0, 8 - movs r0, 0xFF - ands r1, r0 - strh r1, [r2] - movs r6, 0 - adds r1, r3, 0x1 - mov r10, r1 - ldr r2, [sp, 0x4] - cmp r2, r5 - blt _081145B6 - b _081148D2 -_081145B6: - mov r9, r4 - mov r4, r8 - adds r7, r3, r4 - ldr r0, _081145F8 @ =0x000030c4 - add r0, r9 - adds r4, r7, r0 - ldr r0, _081145FC @ =0x000020c4 - add r0, r9 - adds r2, r7, r0 -_081145C8: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldrb r1, [r4] - ldr r0, [sp] - str r2, [sp, 0xC] - str r3, [sp, 0x10] - bl sub_8114DB4 - ldrb r0, [r4] - ldr r2, [sp, 0xC] - ldr r3, [sp, 0x10] - ldrb r1, [r2] - cmp r0, r1 - bne _081145E8 - b _081148AC -_081145E8: - adds r6, 0x1 - cmp r6, r5 - blt _081145C8 - b _081148D2 - .align 2, 0 -_081145F0: .4byte 0x000060c4 -_081145F4: .4byte 0x000080c4 -_081145F8: .4byte 0x000030c4 -_081145FC: .4byte 0x000020c4 -_08114600: - movs r2, 0 - str r2, [sp, 0x4] - ldr r4, _08114678 @ =0x02014800 - lsls r0, r3, 1 - ldr r5, [sp] - lsls r1, r5, 6 - adds r0, r1 - ldr r1, _0811467C @ =0x000060c4 - adds r2, r4, r1 - adds r2, r0, r2 - ldr r5, _08114680 @ =0x000080c4 - adds r1, r4, r5 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r5, r0, 8 - movs r0, 0xFF - ands r1, r0 - strh r1, [r2] - movs r6, 0 - adds r1, r3, 0x1 - mov r10, r1 - ldr r2, [sp, 0x4] - cmp r2, r5 - blt _0811463C - b _081148D2 -_0811463C: - mov r9, r4 - mov r4, r8 - adds r7, r3, r4 - ldr r0, _08114684 @ =0x000030c4 - add r0, r9 - adds r4, r7, r0 - ldr r0, _08114688 @ =0x000020c4 - add r0, r9 - adds r2, r7, r0 -_0811464E: - ldrb r0, [r4] - ldrb r1, [r2] - cmp r0, r1 - bne _08114658 - b _081148B8 -_08114658: - adds r1, r0, 0 - ldr r0, [sp] - str r2, [sp, 0xC] - str r3, [sp, 0x10] - bl sub_8114DF0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - adds r6, 0x1 - ldr r2, [sp, 0xC] - ldr r3, [sp, 0x10] - cmp r6, r5 - blt _0811464E - b _081148D2 - .align 2, 0 -_08114678: .4byte 0x02014800 -_0811467C: .4byte 0x000060c4 -_08114680: .4byte 0x000080c4 -_08114684: .4byte 0x000030c4 -_08114688: .4byte 0x000020c4 -_0811468C: - movs r2, 0 - str r2, [sp, 0x4] - ldr r5, _081146C0 @ =0x02014800 - mov r0, r8 - adds r4, r3, r0 - ldr r1, _081146C4 @ =0x000030c4 - adds r0, r5, r1 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r0, [sp] - str r3, [sp, 0x10] - bl sub_8114E48 - lsls r0, 24 - ldr r3, [sp, 0x10] - adds r2, r3, 0x1 - mov r10, r2 - cmp r0, 0 - bne _081146B4 - b _081148D2 -_081146B4: - adds r0, r5, 0 - adds r0, 0xC4 - adds r0, r4, r0 - movs r1, 0x9 - strb r1, [r0] - b _081148D2 - .align 2, 0 -_081146C0: .4byte 0x02014800 -_081146C4: .4byte 0x000030c4 -_081146C8: - movs r4, 0 - str r4, [sp, 0x4] - ldr r5, _081146FC @ =0x02014800 - mov r0, r8 - adds r4, r3, r0 - ldr r1, _08114700 @ =0x000030c4 - adds r0, r5, r1 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r0, [sp] - str r3, [sp, 0x10] - bl sub_8114E48 - lsls r0, 24 - ldr r3, [sp, 0x10] - adds r2, r3, 0x1 - mov r10, r2 - cmp r0, 0 - bne _081146F0 - b _081148D2 -_081146F0: - adds r0, r5, 0 - adds r0, 0xC4 - adds r0, r4, r0 - movs r1, 0xA - strb r1, [r0] - b _081148D2 - .align 2, 0 -_081146FC: .4byte 0x02014800 -_08114700: .4byte 0x000030c4 -_08114704: - movs r4, 0 - str r4, [sp, 0x4] - ldr r5, _08114738 @ =0x02014800 - mov r0, r8 - adds r4, r3, r0 - ldr r1, _0811473C @ =0x000030c4 - adds r0, r5, r1 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r0, [sp] - str r3, [sp, 0x10] - bl sub_8114E48 - lsls r0, 24 - ldr r3, [sp, 0x10] - adds r2, r3, 0x1 - mov r10, r2 - cmp r0, 0 - bne _0811472C - b _081148D2 -_0811472C: - adds r0, r5, 0 - adds r0, 0xC4 - adds r0, r4, r0 - movs r1, 0xB - strb r1, [r0] - b _081148D2 - .align 2, 0 -_08114738: .4byte 0x02014800 -_0811473C: .4byte 0x000030c4 -_08114740: - movs r4, 0 - str r4, [sp, 0x4] - ldr r5, _08114774 @ =0x02014800 - mov r0, r8 - adds r4, r3, r0 - ldr r1, _08114778 @ =0x000030c4 - adds r0, r5, r1 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r0, [sp] - str r3, [sp, 0x10] - bl sub_8114E48 - lsls r0, 24 - ldr r3, [sp, 0x10] - adds r2, r3, 0x1 - mov r10, r2 - cmp r0, 0 - bne _08114768 - b _081148D2 -_08114768: - adds r0, r5, 0 - adds r0, 0xC4 - adds r0, r4, r0 - movs r1, 0xC - strb r1, [r0] - b _081148D2 - .align 2, 0 -_08114774: .4byte 0x02014800 -_08114778: .4byte 0x000030c4 -_0811477C: - movs r4, 0 - str r4, [sp, 0x4] - ldr r6, _081147B4 @ =0x02014800 - mov r0, r8 - adds r5, r3, r0 - ldr r1, _081147B8 @ =0x000030c4 - adds r4, r6, r1 - adds r4, r5, r4 - ldrb r1, [r4] - ldr r0, [sp] - str r3, [sp, 0x10] - bl sub_8114DB4 - ldr r2, _081147BC @ =0x000020c4 - adds r0, r6, r2 - adds r0, r5, r0 - ldrb r1, [r4] - ldr r3, [sp, 0x10] - ldrb r0, [r0] - cmp r1, r0 - bne _081147C0 - adds r0, r6, 0 - adds r0, 0xC4 - adds r0, r5, r0 - mov r4, sp - ldrb r4, [r4, 0x4] - strb r4, [r0] - b _08114844 - .align 2, 0 -_081147B4: .4byte 0x02014800 -_081147B8: .4byte 0x000030c4 -_081147BC: .4byte 0x000020c4 -_081147C0: - adds r0, r6, 0 - adds r0, 0xC4 - adds r0, r5, r0 - movs r1, 0x1 - strb r1, [r0] - adds r0, r3, 0x1 - mov r10, r0 - b _081148D2 -_081147D0: - movs r1, 0 - str r1, [sp, 0x4] - ldr r6, _08114804 @ =0x02014800 - mov r2, r8 - adds r5, r3, r2 - ldr r0, _08114808 @ =0x000030c4 - adds r4, r6, r0 - adds r4, r5, r4 - ldrb r1, [r4] - ldr r0, [sp] - str r3, [sp, 0x10] - bl sub_8114DF0 - ldr r1, _0811480C @ =0x000020c4 - adds r0, r6, r1 - adds r0, r5, r0 - ldrb r1, [r4] - ldr r3, [sp, 0x10] - ldrb r0, [r0] - cmp r1, r0 - beq _08114882 - adds r0, r6, 0 - adds r0, 0xC4 - adds r0, r5, r0 - movs r1, 0x2 - b _08114842 - .align 2, 0 -_08114804: .4byte 0x02014800 -_08114808: .4byte 0x000030c4 -_0811480C: .4byte 0x000020c4 -_08114810: - movs r0, 0 - str r0, [sp, 0x4] - ldr r6, _0811484C @ =0x02014800 - mov r1, r8 - adds r5, r3, r1 - ldr r2, _08114850 @ =0x000030c4 - adds r4, r6, r2 - adds r4, r5, r4 - ldrb r1, [r4] - ldr r0, [sp] - str r3, [sp, 0x10] - bl sub_8114DB4 - ldr r1, _08114854 @ =0x000020c4 - adds r0, r6, r1 - adds r0, r5, r0 - ldrb r1, [r4] - ldr r3, [sp, 0x10] - ldrb r0, [r0] - cmp r1, r0 - beq _08114882 - adds r0, r6, 0 - adds r0, 0xC4 - adds r0, r5, r0 - movs r1, 0x3 -_08114842: - strb r1, [r0] -_08114844: - adds r5, r3, 0x1 - mov r10, r5 - b _081148D2 - .align 2, 0 -_0811484C: .4byte 0x02014800 -_08114850: .4byte 0x000030c4 -_08114854: .4byte 0x000020c4 -_08114858: - movs r0, 0 - str r0, [sp, 0x4] - ldr r6, _08114894 @ =0x02014800 - mov r1, r8 - adds r5, r3, r1 - ldr r2, _08114898 @ =0x000030c4 - adds r4, r6, r2 - adds r4, r5, r4 - ldrb r1, [r4] - ldr r0, [sp] - str r3, [sp, 0x10] - bl sub_8114DF0 - ldr r1, _0811489C @ =0x000020c4 - adds r0, r6, r1 - adds r0, r5, r0 - ldrb r1, [r4] - ldr r3, [sp, 0x10] - ldrb r0, [r0] - cmp r1, r0 - bne _081148C4 -_08114882: - adds r0, r6, 0 - adds r0, 0xC4 - adds r0, r5, r0 - mov r2, sp - ldrb r2, [r2, 0x4] - strb r2, [r0] - adds r4, r3, 0x1 - mov r10, r4 - b _081148D2 - .align 2, 0 -_08114894: .4byte 0x02014800 -_08114898: .4byte 0x000030c4 -_0811489C: .4byte 0x000020c4 -_081148A0: - mov r0, r9 - adds r0, 0xC4 - adds r0, r7, r0 - movs r5, 0 - strb r5, [r0] - b _081148D2 -_081148AC: - mov r0, r9 - adds r0, 0xC4 - adds r0, r7, r0 - movs r1, 0 - strb r1, [r0] - b _081148D2 -_081148B8: - mov r0, r9 - adds r0, 0xC4 - adds r0, r7, r0 - movs r1, 0 - strb r1, [r0] - b _081148D2 -_081148C4: - adds r0, r6, 0 - adds r0, 0xC4 - adds r0, r5, r0 - movs r1, 0x4 - strb r1, [r0] - adds r2, r3, 0x1 - mov r10, r2 -_081148D2: - ldr r0, _081148F4 @ =0x02014800 - mov r4, r8 - adds r1, r3, r4 - ldr r5, _081148F8 @ =0x000008c4 - adds r2, r0, r5 - adds r1, r2 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0xC - bls _081148E8 - b _08114D76 -_081148E8: - lsls r0, r1, 2 - ldr r1, _081148FC @ =_08114900 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081148F4: .4byte 0x02014800 -_081148F8: .4byte 0x000008c4 -_081148FC: .4byte _08114900 - .align 2, 0 -_08114900: - .4byte _08114D76 - .4byte _08114934 - .4byte _081149B8 - .4byte _08114A3C - .4byte _08114AC0 - .4byte _08114B44 - .4byte _08114B7C - .4byte _08114BB4 - .4byte _08114BEC - .4byte _08114C24 - .4byte _08114C78 - .4byte _08114CB8 - .4byte _08114CF8 -_08114934: - movs r0, 0 - str r0, [sp, 0x4] - lsls r0, r3, 1 - ldr r2, [sp] - lsls r1, r2, 6 - adds r0, r1 - ldr r5, _081149A8 @ =0x000070c4 - adds r2, r4, r5 - adds r2, r0, r2 - ldr r5, _081149AC @ =0x000090c4 - adds r1, r4, r5 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r5, r0, 8 - movs r0, 0xFF - ands r1, r0 - strh r1, [r2] - movs r6, 0 - ldr r1, [sp, 0x4] - cmp r1, r5 - blt _0811496A - b _08114D76 -_0811496A: - mov r9, r4 - mov r2, r8 - adds r7, r3, r2 - ldr r0, _081149B0 @ =0x000038c4 - add r0, r9 - adds r4, r7, r0 - movs r3, 0 - ldr r0, _081149B4 @ =0x000028c4 - add r0, r9 - adds r2, r7, r0 -_0811497E: - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - ldrb r1, [r4] - ldr r0, [sp] - str r2, [sp, 0xC] - str r3, [sp, 0x10] - bl sub_8114DB4 - ldrb r0, [r4] - ldr r2, [sp, 0xC] - ldr r3, [sp, 0x10] - ldrb r1, [r2] - cmp r0, r1 - bne _0811499E - b _08114D4C -_0811499E: - adds r6, 0x1 - cmp r6, r5 - blt _0811497E - b _08114D76 - .align 2, 0 -_081149A8: .4byte 0x000070c4 -_081149AC: .4byte 0x000090c4 -_081149B0: .4byte 0x000038c4 -_081149B4: .4byte 0x000028c4 -_081149B8: - movs r2, 0 - str r2, [sp, 0x4] - ldr r4, _08114A28 @ =0x02014800 - lsls r0, r3, 1 - ldr r5, [sp] - lsls r1, r5, 6 - adds r0, r1 - ldr r1, _08114A2C @ =0x000070c4 - adds r2, r4, r1 - adds r2, r0, r2 - ldr r5, _08114A30 @ =0x000090c4 - adds r1, r4, r5 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r5, r0, 8 - movs r0, 0xFF - ands r1, r0 - strh r1, [r2] - movs r6, 0 - ldr r1, [sp, 0x4] - cmp r1, r5 - blt _081149F0 - b _08114D76 -_081149F0: - mov r9, r4 - mov r2, r8 - adds r7, r3, r2 - ldr r0, _08114A34 @ =0x000038c4 - add r0, r9 - adds r4, r7, r0 - ldr r0, _08114A38 @ =0x000028c4 - add r0, r9 - adds r2, r7, r0 -_08114A02: - ldrb r0, [r4] - ldrb r1, [r2] - cmp r0, r1 - bne _08114A0C - b _08114D3C -_08114A0C: - adds r1, r0, 0 - ldr r0, [sp] - str r2, [sp, 0xC] - bl sub_8114DF0 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - adds r6, 0x1 - ldr r2, [sp, 0xC] - cmp r6, r5 - blt _08114A02 - b _08114D76 - .align 2, 0 -_08114A28: .4byte 0x02014800 -_08114A2C: .4byte 0x000070c4 -_08114A30: .4byte 0x000090c4 -_08114A34: .4byte 0x000038c4 -_08114A38: .4byte 0x000028c4 -_08114A3C: - movs r2, 0 - str r2, [sp, 0x4] - lsls r0, r3, 1 - ldr r5, [sp] - lsls r1, r5, 6 - adds r0, r1 - ldr r1, _08114AB0 @ =0x000070c4 - adds r2, r4, r1 - adds r2, r0, r2 - ldr r5, _08114AB4 @ =0x000090c4 - adds r1, r4, r5 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r5, r0, 8 - movs r0, 0xFF - ands r1, r0 - strh r1, [r2] - movs r6, 0 - ldr r1, [sp, 0x4] - cmp r1, r5 - blt _08114A72 - b _08114D76 -_08114A72: - mov r9, r4 - mov r2, r8 - adds r7, r3, r2 - ldr r0, _08114AB8 @ =0x000038c4 - add r0, r9 - adds r4, r7, r0 - movs r3, 0 - ldr r0, _08114ABC @ =0x000028c4 - add r0, r9 - adds r2, r7, r0 -_08114A86: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldrb r1, [r4] - ldr r0, [sp] - str r2, [sp, 0xC] - str r3, [sp, 0x10] - bl sub_8114DB4 - ldrb r0, [r4] - ldr r2, [sp, 0xC] - ldr r3, [sp, 0x10] - ldrb r1, [r2] - cmp r0, r1 - bne _08114AA6 - b _08114D4C -_08114AA6: - adds r6, 0x1 - cmp r6, r5 - blt _08114A86 - b _08114D76 - .align 2, 0 -_08114AB0: .4byte 0x000070c4 -_08114AB4: .4byte 0x000090c4 -_08114AB8: .4byte 0x000038c4 -_08114ABC: .4byte 0x000028c4 -_08114AC0: - movs r2, 0 - str r2, [sp, 0x4] - ldr r4, _08114B30 @ =0x02014800 - lsls r0, r3, 1 - ldr r5, [sp] - lsls r1, r5, 6 - adds r0, r1 - ldr r1, _08114B34 @ =0x000070c4 - adds r2, r4, r1 - adds r2, r0, r2 - ldr r5, _08114B38 @ =0x000090c4 - adds r1, r4, r5 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r5, r0, 8 - movs r0, 0xFF - ands r1, r0 - strh r1, [r2] - movs r6, 0 - ldr r1, [sp, 0x4] - cmp r1, r5 - blt _08114AF8 - b _08114D76 -_08114AF8: - mov r9, r4 - mov r2, r8 - adds r7, r3, r2 - ldr r0, _08114B3C @ =0x000038c4 - add r0, r9 - adds r4, r7, r0 - ldr r0, _08114B40 @ =0x000028c4 - add r0, r9 - adds r2, r7, r0 -_08114B0A: - ldrb r0, [r4] - ldrb r1, [r2] - cmp r0, r1 - bne _08114B14 - b _08114D5C -_08114B14: - adds r1, r0, 0 - ldr r0, [sp] - str r2, [sp, 0xC] - bl sub_8114DF0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - adds r6, 0x1 - ldr r2, [sp, 0xC] - cmp r6, r5 - blt _08114B0A - b _08114D76 - .align 2, 0 -_08114B30: .4byte 0x02014800 -_08114B34: .4byte 0x000070c4 -_08114B38: .4byte 0x000090c4 -_08114B3C: .4byte 0x000038c4 -_08114B40: .4byte 0x000028c4 -_08114B44: - movs r2, 0 - str r2, [sp, 0x4] - ldr r5, _08114B70 @ =0x02014800 - mov r0, r8 - adds r4, r3, r0 - ldr r1, _08114B74 @ =0x000038c4 - adds r0, r5, r1 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r0, [sp] - bl sub_8114E48 - lsls r0, 24 - cmp r0, 0 - bne _08114B64 - b _08114D76 -_08114B64: - ldr r2, _08114B78 @ =0x000008c4 - adds r0, r5, r2 - adds r0, r4, r0 - movs r1, 0x9 - b _08114D74 - .align 2, 0 -_08114B70: .4byte 0x02014800 -_08114B74: .4byte 0x000038c4 -_08114B78: .4byte 0x000008c4 -_08114B7C: - movs r4, 0 - str r4, [sp, 0x4] - ldr r5, _08114BA8 @ =0x02014800 - mov r0, r8 - adds r4, r3, r0 - ldr r1, _08114BAC @ =0x000038c4 - adds r0, r5, r1 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r0, [sp] - bl sub_8114E48 - lsls r0, 24 - cmp r0, 0 - bne _08114B9C - b _08114D76 -_08114B9C: - ldr r2, _08114BB0 @ =0x000008c4 - adds r0, r5, r2 - adds r0, r4, r0 - movs r1, 0xA - b _08114D74 - .align 2, 0 -_08114BA8: .4byte 0x02014800 -_08114BAC: .4byte 0x000038c4 -_08114BB0: .4byte 0x000008c4 -_08114BB4: - movs r4, 0 - str r4, [sp, 0x4] - ldr r5, _08114BE0 @ =0x02014800 - mov r0, r8 - adds r4, r3, r0 - ldr r1, _08114BE4 @ =0x000038c4 - adds r0, r5, r1 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r0, [sp] - bl sub_8114E48 - lsls r0, 24 - cmp r0, 0 - bne _08114BD4 - b _08114D76 -_08114BD4: - ldr r2, _08114BE8 @ =0x000008c4 - adds r0, r5, r2 - adds r0, r4, r0 - movs r1, 0xB - b _08114D74 - .align 2, 0 -_08114BE0: .4byte 0x02014800 -_08114BE4: .4byte 0x000038c4 -_08114BE8: .4byte 0x000008c4 -_08114BEC: - movs r4, 0 - str r4, [sp, 0x4] - ldr r5, _08114C18 @ =0x02014800 - mov r0, r8 - adds r4, r3, r0 - ldr r1, _08114C1C @ =0x000038c4 - adds r0, r5, r1 - adds r0, r4, r0 - ldrb r1, [r0] - ldr r0, [sp] - bl sub_8114E48 - lsls r0, 24 - cmp r0, 0 - bne _08114C0C - b _08114D76 -_08114C0C: - ldr r2, _08114C20 @ =0x000008c4 - adds r0, r5, r2 - adds r0, r4, r0 - movs r1, 0xC - b _08114D74 - .align 2, 0 -_08114C18: .4byte 0x02014800 -_08114C1C: .4byte 0x000038c4 -_08114C20: .4byte 0x000008c4 -_08114C24: - movs r4, 0 - str r4, [sp, 0x4] - ldr r6, _08114C58 @ =0x02014800 - mov r0, r8 - adds r5, r3, r0 - ldr r1, _08114C5C @ =0x000038c4 - adds r4, r6, r1 - adds r4, r5, r4 - ldrb r1, [r4] - ldr r0, [sp] - bl sub_8114DB4 - ldr r2, _08114C60 @ =0x000028c4 - adds r0, r6, r2 - adds r0, r5, r0 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _08114C68 - ldr r4, _08114C64 @ =0x000008c4 - adds r0, r6, r4 - adds r0, r5, r0 - mov r5, sp - ldrb r5, [r5, 0x4] - strb r5, [r0] - b _08114D76 - .align 2, 0 -_08114C58: .4byte 0x02014800 -_08114C5C: .4byte 0x000038c4 -_08114C60: .4byte 0x000028c4 -_08114C64: .4byte 0x000008c4 -_08114C68: - ldr r1, _08114C74 @ =0x000008c4 - adds r0, r6, r1 - adds r0, r5, r0 - movs r1, 0x1 - b _08114D74 - .align 2, 0 -_08114C74: .4byte 0x000008c4 -_08114C78: - movs r2, 0 - str r2, [sp, 0x4] - ldr r6, _08114CA8 @ =0x02014800 - mov r4, r8 - adds r5, r3, r4 - ldr r0, _08114CAC @ =0x000038c4 - adds r4, r6, r0 - adds r4, r5, r4 - ldrb r1, [r4] - ldr r0, [sp] - bl sub_8114DF0 - ldr r1, _08114CB0 @ =0x000028c4 - adds r0, r6, r1 - adds r0, r5, r0 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - beq _08114D1E - ldr r1, _08114CB4 @ =0x000008c4 - adds r0, r6, r1 - adds r0, r5, r0 - movs r1, 0x2 - b _08114D74 - .align 2, 0 -_08114CA8: .4byte 0x02014800 -_08114CAC: .4byte 0x000038c4 -_08114CB0: .4byte 0x000028c4 -_08114CB4: .4byte 0x000008c4 -_08114CB8: - movs r2, 0 - str r2, [sp, 0x4] - ldr r6, _08114CE8 @ =0x02014800 - mov r4, r8 - adds r5, r3, r4 - ldr r0, _08114CEC @ =0x000038c4 - adds r4, r6, r0 - adds r4, r5, r4 - ldrb r1, [r4] - ldr r0, [sp] - bl sub_8114DB4 - ldr r1, _08114CF0 @ =0x000028c4 - adds r0, r6, r1 - adds r0, r5, r0 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - beq _08114D1E - ldr r1, _08114CF4 @ =0x000008c4 - adds r0, r6, r1 - adds r0, r5, r0 - movs r1, 0x3 - b _08114D74 - .align 2, 0 -_08114CE8: .4byte 0x02014800 -_08114CEC: .4byte 0x000038c4 -_08114CF0: .4byte 0x000028c4 -_08114CF4: .4byte 0x000008c4 -_08114CF8: - movs r2, 0 - str r2, [sp, 0x4] - ldr r6, _08114D2C @ =0x02014800 - mov r4, r8 - adds r5, r3, r4 - ldr r0, _08114D30 @ =0x000038c4 - adds r4, r6, r0 - adds r4, r5, r4 - ldrb r1, [r4] - ldr r0, [sp] - bl sub_8114DF0 - ldr r1, _08114D34 @ =0x000028c4 - adds r0, r6, r1 - adds r0, r5, r0 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _08114D6C -_08114D1E: - ldr r2, _08114D38 @ =0x000008c4 - adds r0, r6, r2 - adds r0, r5, r0 - mov r4, sp - ldrb r4, [r4, 0x4] - strb r4, [r0] - b _08114D76 - .align 2, 0 -_08114D2C: .4byte 0x02014800 -_08114D30: .4byte 0x000038c4 -_08114D34: .4byte 0x000028c4 -_08114D38: .4byte 0x000008c4 -_08114D3C: - ldr r0, _08114D48 @ =0x000008c4 - add r0, r9 - adds r0, r7, r0 - movs r1, 0 - b _08114D74 - .align 2, 0 -_08114D48: .4byte 0x000008c4 -_08114D4C: - ldr r0, _08114D58 @ =0x000008c4 - add r0, r9 - adds r0, r7, r0 - strb r3, [r0] - b _08114D76 - .align 2, 0 -_08114D58: .4byte 0x000008c4 -_08114D5C: - ldr r0, _08114D68 @ =0x000008c4 - add r0, r9 - adds r0, r7, r0 - movs r1, 0 - b _08114D74 - .align 2, 0 -_08114D68: .4byte 0x000008c4 -_08114D6C: - ldr r1, _08114DAC @ =0x000008c4 - adds r0, r6, r1 - adds r0, r5, r0 - movs r1, 0x4 -_08114D74: - strb r1, [r0] -_08114D76: - mov r3, r10 - ldr r2, _08114DB0 @ =0x02014800 - adds r0, r2, 0 - adds r0, 0x84 - ldr r4, [sp] - adds r0, r4, r0 - adds r4, r2, 0 -_08114D84: - ldrb r0, [r0] - cmp r3, r0 - bge _08114D8E - bl _08114410 -_08114D8E: - ldr r5, [sp, 0x8] - str r5, [sp] - cmp r5, 0x3F - bgt _08114D9A - bl _081143F2 -_08114D9A: - ldr r0, [sp, 0x4] - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08114DAC: .4byte 0x000008c4 -_08114DB0: .4byte 0x02014800 - thumb_func_end unref_sub_81143CC - - thumb_func_start sub_8114DB4 -sub_8114DB4: @ 8114DB4 - push {lr} - lsls r1, 24 - lsrs r3, r1, 24 - ldr r2, _08114DDC @ =0x02014800 - lsrs r1, 25 - lsls r1, 2 - lsls r0, 7 - adds r1, r0 - ldr r0, _08114DE0 @ =0x000040c4 - adds r2, r0 - adds r1, r2 - ldr r2, [r1] - movs r0, 0x1 - ands r3, r0 - cmp r3, 0 - beq _08114DE4 - ldrb r0, [r2] - movs r1, 0xF0 - b _08114DE8 - .align 2, 0 -_08114DDC: .4byte 0x02014800 -_08114DE0: .4byte 0x000040c4 -_08114DE4: - ldrb r0, [r2] - movs r1, 0xF -_08114DE8: - orrs r0, r1 - strb r0, [r2] - pop {r0} - bx r0 - thumb_func_end sub_8114DB4 - - thumb_func_start sub_8114DF0 -sub_8114DF0: @ 8114DF0 - push {lr} - lsls r1, 24 - lsrs r3, r1, 24 - ldr r2, _08114E28 @ =0x02014800 - lsrs r1, 25 - lsls r1, 2 - lsls r0, 7 - adds r1, r0 - ldr r0, _08114E2C @ =0x000040c4 - adds r2, r0 - adds r1, r2 - ldr r2, [r1] - movs r0, 0xC0 - lsls r0, 7 - adds r1, r2, r0 - movs r0, 0x1 - ands r3, r0 - cmp r3, 0 - beq _08114E30 - ldrb r1, [r1] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - bne _08114E42 - ldrb r1, [r2] - movs r0, 0xF - b _08114E3E - .align 2, 0 -_08114E28: .4byte 0x02014800 -_08114E2C: .4byte 0x000040c4 -_08114E30: - ldrb r1, [r1] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _08114E42 - ldrb r1, [r2] - movs r0, 0xF0 -_08114E3E: - ands r0, r1 - strb r0, [r2] -_08114E42: - pop {r0} - bx r0 - thumb_func_end sub_8114DF0 - - thumb_func_start sub_8114E48 -sub_8114E48: @ 8114E48 - push {r4-r7,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r1, _08114E6C @ =0x02014800 - ldr r2, _08114E70 @ =0x0000a0c4 - adds r0, r1, r2 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0 - bne _08114E60 - b _08114F5E -_08114E60: - movs r1, 0 - movs r3, 0 - cmp r4, 0 - bne _08114E74 - movs r1, 0x1 - b _08114EA6 - .align 2, 0 -_08114E6C: .4byte 0x02014800 -_08114E70: .4byte 0x0000a0c4 -_08114E74: - subs r0, r4, 0x1 - lsls r0, 5 - adds r2, r3, r0 - adds r0, r5, 0 - adds r0, 0xC4 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _08114EA6 - ldr r7, _08114EC4 @ =0x000008c4 - adds r0, r5, r7 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _08114EA6 - adds r3, 0x1 - cmp r3, 0x1F - bgt _08114EA6 - cmp r4, 0 - bne _08114E74 - lsls r0, r1, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r1, r0, 24 -_08114EA6: - cmp r3, 0x20 - bne _08114EB4 - lsls r0, r1, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r1, r0, 24 -_08114EB4: - movs r3, 0 - cmp r4, 0x3F - bne _08114EC8 - lsls r0, r1, 24 - movs r7, 0x80 - lsls r7, 17 - adds r0, r7 - b _08114EF8 - .align 2, 0 -_08114EC4: .4byte 0x000008c4 -_08114EC8: - adds r0, r4, 0x1 - lsls r0, 5 - adds r2, r3, r0 - adds r0, r5, 0 - adds r0, 0xC4 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _08114EFA - ldr r7, _08114F64 @ =0x000008c4 - adds r0, r5, r7 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _08114EFA - adds r3, 0x1 - cmp r3, 0x1F - bgt _08114EFA - cmp r4, 0x3F - bne _08114EC8 - lsls r0, r1, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 -_08114EF8: - lsrs r1, r0, 24 -_08114EFA: - cmp r3, 0x20 - bne _08114F08 - lsls r0, r1, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r1, r0, 24 -_08114F08: - cmp r1, 0x2 - beq _08114F5E - subs r0, r6, 0x2 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r0, 0 - bge _08114F18 - movs r1, 0 -_08114F18: - adds r0, r6, 0x2 - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x3F - ble _08114F26 - movs r2, 0x3F -_08114F26: - lsls r1, 24 - asrs r3, r1, 24 - lsls r0, r2, 24 - asrs r2, r0, 24 - adds r6, r1, 0 - adds r7, r0, 0 - cmp r3, r2 - bge _08114F7C - cmp r4, 0 - beq _08114F7C - subs r0, r4, 0x1 - lsls r5, r0, 7 - ldr r0, _08114F68 @ =0x020188c4 - mov r12, r0 -_08114F42: - asrs r0, r3, 1 - lsls r0, 2 - adds r0, r5 - add r0, r12 - ldr r1, [r0] - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _08114F6C - ldrb r1, [r1] - movs r0, 0xF0 -_08114F58: - ands r0, r1 - cmp r0, 0 - beq _08114F72 -_08114F5E: - movs r0, 0x1 - b _08114FCA - .align 2, 0 -_08114F64: .4byte 0x000008c4 -_08114F68: .4byte 0x020188c4 -_08114F6C: - ldrb r1, [r1] - movs r0, 0xF - b _08114F58 -_08114F72: - adds r3, 0x1 - cmp r3, r2 - bge _08114F7C - cmp r4, 0 - bne _08114F42 -_08114F7C: - asrs r3, r6, 24 - asrs r1, r7, 24 - cmp r3, r1 - bge _08114FC8 - cmp r4, 0x3F - beq _08114FC8 - adds r0, r4, 0x1 - lsls r5, r0, 7 - ldr r6, _08114FB0 @ =0x020188c4 - adds r2, r1, 0 -_08114F90: - asrs r0, r3, 1 - lsls r0, 2 - adds r0, r5 - adds r0, r6 - ldr r1, [r0] - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _08114FB4 - ldrb r1, [r1] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - beq _08114FBE - b _08114F5E - .align 2, 0 -_08114FB0: .4byte 0x020188c4 -_08114FB4: - ldrb r1, [r1] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _08114F5E -_08114FBE: - adds r3, 0x1 - cmp r3, r2 - bge _08114FC8 - cmp r4, 0x3F - bne _08114F90 -_08114FC8: - movs r0, 0 -_08114FCA: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8114E48 - - thumb_func_start HBlankCB_EvolutionScene -HBlankCB_EvolutionScene: @ 8114FD0 - bx lr - thumb_func_end HBlankCB_EvolutionScene - - thumb_func_start VBlankCB_EvolutionScene -VBlankCB_EvolutionScene: @ 8114FD4 - push {lr} - ldr r1, _08115034 @ =REG_BG0CNT - ldr r2, _08115038 @ =0x00009803 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x8 - ldr r0, _0811503C @ =gUnknown_030042A4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _08115040 @ =gUnknown_030042A0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _08115044 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _08115048 @ =gUnknown_030041B4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0811504C @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _08115050 @ =gUnknown_03004280 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _08115054 @ =gUnknown_030041B0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _08115058 @ =gUnknown_030041B8 - ldrh r0, [r0] - strh r0, [r1] - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_8089668 - pop {r0} - bx r0 - .align 2, 0 -_08115034: .4byte REG_BG0CNT -_08115038: .4byte 0x00009803 -_0811503C: .4byte gUnknown_030042A4 -_08115040: .4byte gUnknown_030042A0 -_08115044: .4byte gUnknown_030042C0 -_08115048: .4byte gUnknown_030041B4 -_0811504C: .4byte gUnknown_03004288 -_08115050: .4byte gUnknown_03004280 -_08115054: .4byte gUnknown_030041B0 -_08115058: .4byte gUnknown_030041B8 - thumb_func_end VBlankCB_EvolutionScene - - thumb_func_start VBlankCB_TradeEvolutionScene -VBlankCB_TradeEvolutionScene: @ 811505C - push {lr} - ldr r1, _081150B4 @ =REG_BG0HOFS - ldr r0, _081150B8 @ =gUnknown_030042A4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _081150BC @ =gUnknown_030042A0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _081150C0 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _081150C4 @ =gUnknown_030041B4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _081150C8 @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _081150CC @ =gUnknown_03004280 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _081150D0 @ =gUnknown_030041B0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _081150D4 @ =gUnknown_030041B8 - ldrh r0, [r0] - strh r0, [r1] - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_8089668 - pop {r0} - bx r0 - .align 2, 0 -_081150B4: .4byte REG_BG0HOFS -_081150B8: .4byte gUnknown_030042A4 -_081150BC: .4byte gUnknown_030042A0 -_081150C0: .4byte gUnknown_030042C0 -_081150C4: .4byte gUnknown_030041B4 -_081150C8: .4byte gUnknown_03004288 -_081150CC: .4byte gUnknown_03004280 -_081150D0: .4byte gUnknown_030041B0 -_081150D4: .4byte gUnknown_030041B8 - thumb_func_end VBlankCB_TradeEvolutionScene - - thumb_func_start sub_81150D8 -sub_81150D8: @ 81150D8 - push {lr} - ldr r0, _081150F4 @ =gBattleCommunication - ldrb r1, [r0, 0x1] - lsls r1, 28 - movs r0, 0x90 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xC8 - bl sub_814A880 - pop {r0} - bx r0 - .align 2, 0 -_081150F4: .4byte gBattleCommunication - thumb_func_end sub_81150D8 - - thumb_func_start HBlankCB_TradeEvolutionScene -HBlankCB_TradeEvolutionScene: @ 81150F8 - bx lr - thumb_func_end HBlankCB_TradeEvolutionScene - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s deleted file mode 100644 index 9df9dfd8d..000000000 --- a/asm/field_effect_helpers.s +++ /dev/null @@ -1,4349 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start SetUpReflection -SetUpReflection: @ 812680C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r5, r2, 24 - lsrs r5, 24 - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r0, 0x22 - ldrsh r2, [r4, r0] - adds r0, r4, 0 - movs r3, 0x98 - bl obj_unfreeze - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _081268BC @ =gSprites - adds r7, r1, r0 - ldr r0, _081268C0 @ =sub_81269E0 - str r0, [r7, 0x1C] - ldrb r1, [r7, 0x5] - movs r0, 0xC - orrs r1, r0 - strb r1, [r7, 0x5] - ldr r2, _081268C4 @ =gUnknown_0830FD14 - lsrs r0, r1, 4 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 4 - movs r2, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x5] - movs r1, 0x3F - adds r1, r7 - mov r8, r1 - ldrb r0, [r1] - movs r1, 0x40 - orrs r0, r1 - mov r1, r8 - strb r0, [r1] - ldr r0, _081268C8 @ =gDummySpriteAnimTable - str r0, [r7, 0x8] - adds r0, r7, 0 - movs r1, 0 - bl StartSpriteAnim - ldr r0, _081268CC @ =gDummySpriteAffineAnimTable - str r0, [r7, 0x10] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x8 - orrs r0, r1 - mov r1, r8 - strb r0, [r1] - adds r2, r7, 0 - adds r2, 0x42 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x2E] - strh r0, [r7, 0x2E] - ldrb r0, [r6, 0x8] - strh r0, [r7, 0x30] - strh r5, [r7, 0x3C] - adds r0, r6, 0 - adds r1, r7, 0 - bl npc_pal_op - cmp r5, 0 - bne _081268B2 - ldrb r0, [r7, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r0 - movs r0, 0x1 - orrs r1, r0 - strb r1, [r7, 0x1] -_081268B2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081268BC: .4byte gSprites -_081268C0: .4byte sub_81269E0 -_081268C4: .4byte gUnknown_0830FD14 -_081268C8: .4byte gDummySpriteAnimTable -_081268CC: .4byte gDummySpriteAffineAnimTable - thumb_func_end SetUpReflection - - thumb_func_start sub_81268D0 -sub_81268D0: @ 81268D0 - push {lr} - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - ldrh r0, [r0, 0xA] - subs r0, 0x2 - lsls r0, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_81268D0 - - thumb_func_start npc_pal_op -npc_pal_op: @ 81268E4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r4, r1, 0 - ldr r1, _0812693C @ =gUnknown_08401E2C - mov r0, sp - movs r2, 0x6 - bl memcpy - movs r0, 0 - strh r0, [r4, 0x32] - ldrb r0, [r5, 0x5] - bl GetFieldObjectGraphicsInfo - ldrb r1, [r0, 0xC] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08126940 - ldrb r0, [r5, 0x1F] - bl sub_8057450 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08126926 - ldrb r0, [r5, 0x1E] - bl sub_8057450 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08126940 -_08126926: - subs r0, 0x1 - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x32] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r0, r5, 0 - bl npc_pal_op_A - b _0812694A - .align 2, 0 -_0812693C: .4byte gUnknown_08401E2C -_08126940: - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r0, r5, 0 - bl npc_pal_op_B -_0812694A: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end npc_pal_op - - thumb_func_start npc_pal_op_B -npc_pal_op_B: @ 8126954 - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - adds r2, r0, 0 - ldrh r1, [r2, 0x4] - ldr r0, _08126980 @ =0x000011ff - cmp r1, r0 - beq _081269A8 - ldrb r0, [r2, 0xC] - movs r1, 0xF - ands r1, r0 - cmp r1, 0 - bne _08126984 - ldrh r0, [r2, 0x2] - adds r1, r4, 0 - bl npc_load_two_palettes__no_record - b _081269A2 - .align 2, 0 -_08126980: .4byte 0x000011ff -_08126984: - cmp r1, 0xA - bne _08126992 - ldrh r0, [r2, 0x2] - adds r1, r4, 0 - bl npc_load_two_palettes__and_record - b _081269A2 -_08126992: - adds r0, r4, 0 - bl npc_paltag_by_palslot - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl pal_patch_for_npc -_081269A2: - adds r0, r4, 0 - bl sub_807D78C -_081269A8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end npc_pal_op_B - - thumb_func_start npc_pal_op_A -npc_pal_op_A: @ 81269B0 - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - adds r2, r0, 0 - ldrh r1, [r2, 0x4] - ldr r0, _081269DC @ =0x000011ff - cmp r1, r0 - beq _081269D4 - adds r0, r1, 0 - adds r1, r4, 0 - bl pal_patch_for_npc - adds r0, r4, 0 - bl sub_807D78C -_081269D4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081269DC: .4byte 0x000011ff - thumb_func_end npc_pal_op_A - - thumb_func_start sub_81269E0 -sub_81269E0: @ 81269E0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126A28 @ =gMapObjects - adds r7, r0, r1 - ldrb r1, [r7, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126A2C @ =gSprites - adds r5, r0, r1 - ldr r0, [r7] - ldr r1, _08126A30 @ =0x00020001 - ands r0, r1 - cmp r0, r1 - bne _08126A18 - ldrb r1, [r7, 0x8] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r1, r0 - beq _08126A34 -_08126A18: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - b _08126B3E - .align 2, 0 -_08126A28: .4byte gMapObjects -_08126A2C: .4byte gSprites -_08126A30: .4byte 0x00020001 -_08126A34: - ldr r1, _08126B4C @ =gUnknown_0830FD14 - ldrb r0, [r5, 0x5] - lsrs r0, 4 - adds r0, r1 - ldrb r1, [r0] - lsls r1, 4 - ldrb r2, [r4, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - ldrb r1, [r5, 0x1] - lsrs r1, 6 - lsls r1, 6 - ldrb r2, [r4, 0x1] - movs r3, 0x3F - adds r0, r3, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r5, 0x3] - lsrs r0, 6 - lsls r0, 6 - ldrb r2, [r4, 0x3] - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x3] - ldrb r0, [r5, 0x3] - lsls r0, 26 - lsrs r0, 27 - movs r2, 0x10 - orrs r0, r2 - lsls r0, 1 - subs r2, 0x4F - mov r9, r2 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x3] - ldrh r1, [r5, 0x4] - lsls r1, 22 - lsrs r1, 22 - ldrh r2, [r4, 0x4] - ldr r0, _08126B50 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, [r5, 0x18] - str r0, [r4, 0x18] - adds r0, r5, 0 - adds r0, 0x42 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 26 - adds r2, r4, 0 - adds r2, 0x42 - ands r3, r0 - ldrb r1, [r2] - movs r0, 0x40 - negs r0, r0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] - movs r0, 0x3E - adds r0, r5 - mov r8, r0 - ldrb r0, [r0] - adds r6, r4, 0 - adds r6, 0x3E - movs r1, 0x4 - ands r1, r0 - ldrb r2, [r6] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - ldrh r0, [r5, 0x20] - strh r0, [r4, 0x20] - adds r0, r7, 0 - bl sub_81268D0 - ldrh r1, [r5, 0x22] - adds r0, r1 - ldrh r1, [r4, 0x32] - adds r1, r0 - strh r1, [r4, 0x22] - adds r0, r5, 0 - adds r0, 0x28 - ldrb r1, [r0] - adds r0, r4, 0 - adds r0, 0x28 - strb r1, [r0] - adds r0, r5, 0 - adds r0, 0x29 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x29 - strb r0, [r1] - ldrh r0, [r5, 0x24] - strh r0, [r4, 0x24] - ldrh r0, [r5, 0x26] - negs r0, r0 - strh r0, [r4, 0x26] - mov r2, r8 - ldrb r0, [r2] - movs r1, 0x2 - ands r1, r0 - ldrb r2, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08126B3E - ldrb r0, [r4, 0x3] - mov r2, r9 - ands r2, r0 - strb r2, [r4, 0x3] - ldrb r0, [r5, 0x3] - lsls r0, 26 - lsrs r0, 27 - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08126B3E - movs r1, 0x2 - adds r0, r2, 0 - orrs r0, r1 - strb r0, [r4, 0x3] -_08126B3E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126B4C: .4byte gUnknown_0830FD14 -_08126B50: .4byte 0xfffffc00 - thumb_func_end sub_81269E0 - - thumb_func_start sub_8126B54 -sub_8126B54: @ 8126B54 - push {r4,lr} - ldr r0, _08126B9C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x20] - movs r1, 0 - movs r2, 0 - movs r3, 0x52 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - cmp r0, 0x40 - beq _08126B92 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08126BA0 @ =gSprites - adds r1, r0 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - orrs r0, r3 - strb r0, [r1] -_08126B92: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08126B9C: .4byte gFieldEffectObjectTemplatePointers -_08126BA0: .4byte gSprites - thumb_func_end sub_8126B54 - - thumb_func_start objid_set_invisible -objid_set_invisible: @ 8126BA4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08126BC0 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_08126BC0: .4byte gSprites - thumb_func_end objid_set_invisible - - thumb_func_start sub_8126BC4 -sub_8126BC4: @ 8126BC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 16 - lsrs r7, r2, 16 - lsls r3, 16 - lsrs r6, r3, 16 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r1, _08126C68 @ =gSprites - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08126C0E - movs r0, 0x2E - ldrsh r1, [r2, r0] - lsls r0, r7, 16 - asrs r0, 16 - cmp r1, r0 - bne _08126C0E - movs r0, 0x30 - ldrsh r1, [r2, r0] - lsls r0, r6, 16 - asrs r0, 16 - cmp r1, r0 - beq _08126C5A -_08126C0E: - lsls r0, r7, 16 - asrs r0, 16 - lsls r1, r6, 16 - asrs r1, 16 - mov r4, sp - adds r4, 0x2 - mov r2, sp - adds r3, r4, 0 - bl sub_80603CC - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r1, _08126C68 @ =gSprites - adds r2, r0, r1 - mov r0, sp - ldrh r0, [r0] - adds r0, 0x8 - strh r0, [r2, 0x20] - ldrh r0, [r4] - adds r0, 0x8 - strh r0, [r2, 0x22] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - strh r7, [r2, 0x2E] - strh r6, [r2, 0x30] - mov r1, r8 - subs r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim -_08126C5A: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126C68: .4byte gSprites - thumb_func_end sub_8126BC4 - - thumb_func_start FldEff_Shadow -FldEff_Shadow: @ 8126C6C - push {r4,r5,lr} - ldr r5, _08126CF8 @ =gUnknown_0202FF84 - ldrb r0, [r5] - ldrb r1, [r5, 0x4] - ldrb r2, [r5, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08126CFC @ =gMapObjects - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x5] - bl GetFieldObjectGraphicsInfo - adds r4, r0, 0 - ldr r2, _08126D00 @ =gFieldEffectObjectTemplatePointers - ldr r1, _08126D04 @ =gUnknown_08401E32 - ldrb r0, [r4, 0xC] - lsls r0, 26 - lsrs r0, 30 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - movs r1, 0 - movs r2, 0 - movs r3, 0x94 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08126CF0 - ldr r0, _08126D08 @ =gSprites - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - ldr r0, [r5] - strh r0, [r2, 0x2E] - ldr r0, [r5, 0x4] - strh r0, [r2, 0x30] - ldr r0, [r5, 0x8] - strh r0, [r2, 0x32] - ldrh r1, [r4, 0xA] - lsls r1, 16 - asrs r1, 17 - ldr r3, _08126D0C @ =gUnknown_08401E36 - ldrb r0, [r4, 0xC] - lsls r0, 26 - lsrs r0, 30 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - subs r1, r0 - strh r1, [r2, 0x34] -_08126CF0: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08126CF8: .4byte gUnknown_0202FF84 -_08126CFC: .4byte gMapObjects -_08126D00: .4byte gFieldEffectObjectTemplatePointers -_08126D04: .4byte gUnknown_08401E32 -_08126D08: .4byte gSprites -_08126D0C: .4byte gUnknown_08401E36 - thumb_func_end FldEff_Shadow - - thumb_func_start oamc_shadow -oamc_shadow: @ 8126D10 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r5, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - beq _08126D3E - adds r0, r5, 0 - movs r1, 0x3 - bl FieldEffectStop - b _08126DC4 -_08126D3E: - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126DCC @ =gMapObjects - adds r4, r0, r1 - ldrb r0, [r4, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08126DD0 @ =gSprites - adds r1, r0 - ldrb r0, [r1, 0x5] - movs r2, 0xC - ands r2, r0 - ldrb r3, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r5, 0x5] - ldrh r0, [r1, 0x20] - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x34] - ldrh r1, [r1, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldr r0, [r4] - ldr r1, _08126DD4 @ =0x00400001 - ands r0, r1 - cmp r0, r1 - bne _08126DBC - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsPokeGrass - lsls r0, 24 - cmp r0, 0 - bne _08126DBC - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _08126DBC - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _08126DBC - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsReflective - lsls r0, 24 - cmp r0, 0 - bne _08126DBC - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsReflective - lsls r0, 24 - cmp r0, 0 - beq _08126DC4 -_08126DBC: - adds r0, r5, 0 - movs r1, 0x3 - bl FieldEffectStop -_08126DC4: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08126DCC: .4byte gMapObjects -_08126DD0: .4byte gSprites -_08126DD4: .4byte 0x00400001 - thumb_func_end oamc_shadow - - thumb_func_start FldEff_TallGrass -FldEff_TallGrass: @ 8126DD8 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08126E70 @ =gUnknown_0202FF84 - ldrh r1, [r5] - mov r0, sp - strh r1, [r0] - ldrh r0, [r5, 0x4] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - mov r0, sp - adds r1, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08126E74 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x10] - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - movs r3, 0 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08126E64 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126E78 @ =gSprites - adds r3, r0, r1 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x3 - ldrb r1, [r5, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r0, [r5, 0x8] - strh r0, [r3, 0x2E] - ldr r0, [r5] - strh r0, [r3, 0x30] - ldr r0, [r5, 0x4] - strh r0, [r3, 0x32] - ldr r0, [r5, 0x10] - strh r0, [r3, 0x34] - ldr r0, [r5, 0x14] - strh r0, [r3, 0x36] - ldr r0, [r5, 0x18] - strh r0, [r3, 0x38] - ldr r0, [r5, 0x1C] - cmp r0, 0 - beq _08126E64 - adds r0, r3, 0 - movs r1, 0x4 - bl SeekSpriteAnim -_08126E64: - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08126E70: .4byte gUnknown_0202FF84 -_08126E74: .4byte gFieldEffectObjectTemplatePointers -_08126E78: .4byte gSprites - thumb_func_end FldEff_TallGrass - - thumb_func_start unc_grass_normal -unc_grass_normal: @ 8126E7C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x38] - lsrs r4, r0, 8 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, _08126F24 @ =gUnknown_0202E844 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08126EC6 - ldr r2, _08126F28 @ =gSaveBlock1 - movs r0, 0x5 - ldrsb r0, [r2, r0] - cmp r0, r4 - bne _08126EAC - movs r0, 0x4 - ldrsb r0, [r2, r0] - cmp r0, r7 - beq _08126EC6 -_08126EAC: - ldr r1, [r3, 0x4] - ldrh r0, [r5, 0x30] - subs r0, r1 - strh r0, [r5, 0x30] - ldr r1, [r3, 0x8] - ldrh r0, [r5, 0x32] - subs r0, r1 - strh r0, [r5, 0x32] - ldrb r1, [r2, 0x5] - lsls r1, 8 - ldrb r0, [r2, 0x4] - orrs r0, r1 - strh r0, [r5, 0x38] -_08126EC6: - ldrh r0, [r5, 0x34] - lsrs r1, r0, 8 - mov r8, r1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrh r0, [r5, 0x36] - lsls r0, 24 - lsrs r7, r0, 24 - movs r2, 0x30 - ldrsh r0, [r5, r2] - movs r2, 0x32 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r6, r0, 24 - mov r0, r8 - adds r1, r4, 0 - adds r2, r7, 0 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08126F1A - adds r0, r6, 0 - bl MetatileBehavior_IsTallGrass - lsls r0, 24 - cmp r0, 0 - beq _08126F1A - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08126F2C - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08126F2C -_08126F1A: - adds r0, r5, 0 - movs r1, 0x4 - bl FieldEffectStop - b _08126F70 - .align 2, 0 -_08126F24: .4byte gUnknown_0202E844 -_08126F28: .4byte gSaveBlock1 -_08126F2C: - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126F7C @ =gMapObjects - adds r2, r0, r1 - ldr r0, [r2, 0x10] - ldr r1, [r5, 0x30] - cmp r0, r1 - beq _08126F4C - ldr r0, [r2, 0x14] - cmp r0, r1 - beq _08126F4C - movs r0, 0x1 - strh r0, [r5, 0x3C] -_08126F4C: - movs r6, 0 - adds r0, r5, 0 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0 - bne _08126F5A - movs r6, 0x4 -_08126F5A: - adds r0, r5, 0 - movs r1, 0 - bl sub_806487C - ldrh r1, [r5, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - adds r2, r6, 0 - bl sub_812882C -_08126F70: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126F7C: .4byte gMapObjects - thumb_func_end unc_grass_normal - - thumb_func_start FldEff_JumpTallGrass -FldEff_JumpTallGrass: @ 8126F80 - push {r4,lr} - ldr r4, _08126FE4 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0xC - bl sub_8060470 - ldr r0, _08126FE8 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x28] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08126FDC - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08126FEC @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0xC - strh r0, [r2, 0x30] -_08126FDC: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08126FE4: .4byte gUnknown_0202FF84 -_08126FE8: .4byte gFieldEffectObjectTemplatePointers -_08126FEC: .4byte gSprites - thumb_func_end FldEff_JumpTallGrass - - thumb_func_start sub_8126FF0 -sub_8126FF0: @ 8126FF0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, [sp, 0x18] - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - movs r5, 0 - ldr r0, _08127060 @ =gSprites - mov r8, r0 - lsls r3, 16 - asrs r3, 16 - lsls r4, 16 - asrs r4, 16 -_08127014: - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - mov r1, r8 - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _08127068 - ldr r1, [r2, 0x1C] - ldr r0, _08127064 @ =unc_grass_normal - cmp r1, r0 - bne _08127068 - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r3, r0 - bne _08127068 - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r4, r0 - bne _08127068 - ldrh r1, [r2, 0x34] - lsrs r0, r1, 8 - cmp r12, r0 - bne _08127068 - movs r0, 0xFF - ands r0, r1 - cmp r7, r0 - bne _08127068 - movs r1, 0x36 - ldrsh r0, [r2, r1] - cmp r6, r0 - bne _08127068 - adds r0, r5, 0 - b _08127074 - .align 2, 0 -_08127060: .4byte gSprites -_08127064: .4byte unc_grass_normal -_08127068: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3F - bls _08127014 - movs r0, 0x40 -_08127074: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8126FF0 - - thumb_func_start FldEff_LongGrass -FldEff_LongGrass: @ 8127080 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _0812711C @ =gUnknown_0202FF84 - ldrh r1, [r5] - mov r0, sp - strh r1, [r0] - ldrh r0, [r5, 0x4] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - mov r0, sp - adds r1, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127120 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x3C] - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - movs r3, 0 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08127110 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127124 @ =gSprites - adds r4, r0, r1 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r5, 0x8] - bl ZCoordToPriority - 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] - ldr r0, [r5, 0x8] - strh r0, [r4, 0x2E] - ldr r0, [r5] - strh r0, [r4, 0x30] - ldr r0, [r5, 0x4] - strh r0, [r4, 0x32] - ldr r0, [r5, 0x10] - strh r0, [r4, 0x34] - ldr r0, [r5, 0x14] - strh r0, [r4, 0x36] - ldr r0, [r5, 0x18] - strh r0, [r4, 0x38] - ldr r0, [r5, 0x1C] - cmp r0, 0 - beq _08127110 - adds r0, r4, 0 - movs r1, 0x6 - bl SeekSpriteAnim -_08127110: - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0812711C: .4byte gUnknown_0202FF84 -_08127120: .4byte gFieldEffectObjectTemplatePointers -_08127124: .4byte gSprites - thumb_func_end FldEff_LongGrass - - thumb_func_start unc_grass_tall -unc_grass_tall: @ 8127128 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x38] - lsrs r7, r0, 8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, _081271D0 @ =gUnknown_0202E844 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08127172 - ldr r2, _081271D4 @ =gSaveBlock1 - movs r0, 0x5 - ldrsb r0, [r2, r0] - cmp r0, r7 - bne _08127158 - movs r0, 0x4 - ldrsb r0, [r2, r0] - cmp r0, r6 - beq _08127172 -_08127158: - ldr r1, [r3, 0x4] - ldrh r0, [r5, 0x30] - subs r0, r1 - strh r0, [r5, 0x30] - ldr r1, [r3, 0x8] - ldrh r0, [r5, 0x32] - subs r0, r1 - strh r0, [r5, 0x32] - ldrb r1, [r2, 0x5] - lsls r1, 8 - ldrb r0, [r2, 0x4] - orrs r0, r1 - strh r0, [r5, 0x38] -_08127172: - ldrh r0, [r5, 0x34] - lsrs r1, r0, 8 - mov r8, r1 - lsls r0, 24 - lsrs r7, r0, 24 - ldrh r0, [r5, 0x36] - lsls r0, 24 - lsrs r6, r0, 24 - movs r2, 0x30 - ldrsh r0, [r5, r2] - movs r2, 0x32 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - mov r0, r8 - adds r1, r7, 0 - adds r2, r6, 0 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _081271C6 - adds r0, r4, 0 - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _081271C6 - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081271D8 - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081271D8 -_081271C6: - adds r0, r5, 0 - movs r1, 0x11 - bl FieldEffectStop - b _0812720E - .align 2, 0 -_081271D0: .4byte gUnknown_0202E844 -_081271D4: .4byte gSaveBlock1 -_081271D8: - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812721C @ =gMapObjects - adds r2, r0, r1 - ldr r0, [r2, 0x10] - ldr r1, [r5, 0x30] - cmp r0, r1 - beq _081271F8 - ldr r0, [r2, 0x14] - cmp r0, r1 - beq _081271F8 - movs r0, 0x1 - strh r0, [r5, 0x3C] -_081271F8: - adds r0, r5, 0 - movs r1, 0 - bl sub_806487C - ldrh r1, [r5, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - movs r2, 0 - bl sub_812882C -_0812720E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812721C: .4byte gMapObjects - thumb_func_end unc_grass_tall - - thumb_func_start FldEff_JumpLongGrass -FldEff_JumpLongGrass: @ 8127220 - push {r4,lr} - ldr r4, _08127284 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127288 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x40] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0812727C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _0812728C @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0x12 - strh r0, [r2, 0x30] -_0812727C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127284: .4byte gUnknown_0202FF84 -_08127288: .4byte gFieldEffectObjectTemplatePointers -_0812728C: .4byte gSprites - thumb_func_end FldEff_JumpLongGrass - - thumb_func_start FldEff_ShortGrass -FldEff_ShortGrass: @ 8127290 - push {r4-r6,lr} - ldr r6, _08127324 @ =gUnknown_0202FF84 - ldrb r0, [r6] - ldrb r1, [r6, 0x4] - ldrb r2, [r6, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _08127328 @ =gMapObjects - adds r5, r1, r0 - ldr r0, _0812732C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x78] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0812731C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r4, _08127330 @ =gSprites - adds r2, r4 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - movs r1, 0xC - ands r1, r0 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r6] - strh r0, [r2, 0x2E] - ldr r0, [r6, 0x4] - strh r0, [r2, 0x30] - ldr r0, [r6, 0x8] - strh r0, [r2, 0x32] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x20] - strh r0, [r2, 0x34] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x22] - strh r0, [r2, 0x36] -_0812731C: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08127324: .4byte gUnknown_0202FF84 -_08127328: .4byte gMapObjects -_0812732C: .4byte gFieldEffectObjectTemplatePointers -_08127330: .4byte gSprites - thumb_func_end FldEff_ShortGrass - - thumb_func_start sub_8127334 -sub_8127334: @ 8127334 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08127372 - ldr r5, _0812737C @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x2] - lsls r0, 29 - cmp r0, 0 - blt _08127380 -_08127372: - adds r0, r4, 0 - movs r1, 0x29 - bl FieldEffectStop - b _08127416 - .align 2, 0 -_0812737C: .4byte gMapObjects -_08127380: - ldrb r0, [r1, 0x5] - bl GetFieldObjectGraphicsInfo - mov r8, r0 - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127424 @ =gSprites - adds r6, r0, r1 - ldrh r5, [r6, 0x22] - ldrh r7, [r6, 0x20] - movs r0, 0x20 - ldrsh r1, [r6, r0] - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _081273BC - lsls r0, r5, 16 - asrs r0, 16 - movs r2, 0x36 - ldrsh r1, [r4, r2] - cmp r0, r1 - beq _081273D6 -_081273BC: - strh r7, [r4, 0x34] - strh r5, [r4, 0x36] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081273D6 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim -_081273D6: - strh r7, [r4, 0x20] - strh r5, [r4, 0x22] - mov r1, r8 - ldrh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 17 - subs r0, 0x8 - strh r0, [r4, 0x26] - adds r0, r6, 0 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r0, [r6, 0x5] - movs r1, 0xC - ands r1, r0 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - adds r0, r6, 0 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - adds r0, r4, 0 - bl sub_806487C -_08127416: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08127424: .4byte gSprites - thumb_func_end sub_8127334 - - thumb_func_start FldEff_SandFootprints -FldEff_SandFootprints: @ 8127428 - push {r4,lr} - ldr r4, _08127490 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127494 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x2C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08127486 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127498 @ =gSprites - adds r0, r1 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r3] - movs r1, 0x3 - ldrb r2, [r4, 0xC] - ands r2, r1 - lsls r2, 2 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0xD - strh r1, [r0, 0x3C] - ldrb r1, [r4, 0x10] - bl StartSpriteAnim -_08127486: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127490: .4byte gUnknown_0202FF84 -_08127494: .4byte gFieldEffectObjectTemplatePointers -_08127498: .4byte gSprites - thumb_func_end FldEff_SandFootprints - - thumb_func_start FldEff_DeepSandFootprints -FldEff_DeepSandFootprints: @ 812749C - push {r4,r5,lr} - ldr r4, _08127504 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127508 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x5C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - adds r5, r1, 0 - cmp r1, 0x40 - beq _081274FC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812750C @ =gSprites - adds r0, r1 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r3] - movs r1, 0x3 - ldrb r2, [r4, 0xC] - ands r2, r1 - lsls r2, 2 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0x18 - strh r1, [r0, 0x3C] - ldrb r1, [r4, 0x10] - bl StartSpriteAnim -_081274FC: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08127504: .4byte gUnknown_0202FF84 -_08127508: .4byte gFieldEffectObjectTemplatePointers -_0812750C: .4byte gSprites - thumb_func_end FldEff_DeepSandFootprints - - thumb_func_start FldEff_BikeTireTracks -FldEff_BikeTireTracks: @ 8127510 - push {r4,r5,lr} - ldr r4, _08127578 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _0812757C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x6C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - adds r5, r1, 0 - cmp r1, 0x40 - beq _08127570 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127580 @ =gSprites - adds r0, r1 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r3] - movs r1, 0x3 - ldrb r2, [r4, 0xC] - ands r2, r1 - lsls r2, 2 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0x23 - strh r1, [r0, 0x3C] - ldrb r1, [r4, 0x10] - bl StartSpriteAnim -_08127570: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08127578: .4byte gUnknown_0202FF84 -_0812757C: .4byte gFieldEffectObjectTemplatePointers -_08127580: .4byte gSprites - thumb_func_end FldEff_BikeTireTracks - - thumb_func_start sub_8127584 -sub_8127584: @ 8127584 - push {lr} - ldr r2, _0812759C @ =gUnknown_08401E40 - movs r3, 0x2E - ldrsh r1, [r0, r3] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_0812759C: .4byte gUnknown_08401E40 - thumb_func_end sub_8127584 - - thumb_func_start sub_81275A0 -sub_81275A0: @ 81275A0 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x28 - ble _081275B6 - movs r0, 0x1 - strh r0, [r1, 0x2E] -_081275B6: - adds r0, r1, 0 - movs r1, 0 - bl sub_806487C - pop {r0} - bx r0 - thumb_func_end sub_81275A0 - - thumb_func_start sub_81275C4 -sub_81275C4: @ 81275C4 - push {r4,lr} - adds r4, r0, 0 - 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] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - ldrb r1, [r3] - lsls r1, 29 - lsrs r1, 31 - adds r0, r4, 0 - bl sub_806487C - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x38 - ble _08127608 - ldrh r1, [r4, 0x3C] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldEffectStop -_08127608: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81275C4 - - thumb_func_start FldEff_Splash -FldEff_Splash: @ 8127610 - push {r4-r6,lr} - ldr r6, _081276A4 @ =gUnknown_0202FF84 - ldrb r0, [r6] - ldrb r1, [r6, 0x4] - ldrb r2, [r6, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _081276A8 @ =gMapObjects - adds r5, r1, r0 - ldr r0, _081276AC @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x34] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _0812769A - ldrb r0, [r5, 0x5] - bl GetFieldObjectGraphicsInfo - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - ldr r4, _081276B0 @ =gSprites - adds r3, r4 - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - ldrb r1, [r1] - movs r2, 0x2 - orrs r1, r2 - mov r2, r12 - strb r1, [r2] - ldrb r2, [r5, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - movs r2, 0xC - ands r2, r1 - ldrb r4, [r3, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r4 - orrs r1, r2 - strb r1, [r3, 0x5] - ldr r1, [r6] - strh r1, [r3, 0x2E] - ldr r1, [r6, 0x4] - strh r1, [r3, 0x30] - ldr r1, [r6, 0x8] - strh r1, [r3, 0x32] - ldrh r0, [r0, 0xA] - lsls r0, 16 - asrs r0, 17 - subs r0, 0x4 - strh r0, [r3, 0x26] - movs r0, 0x46 - bl PlaySE -_0812769A: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081276A4: .4byte gUnknown_0202FF84 -_081276A8: .4byte gMapObjects -_081276AC: .4byte gFieldEffectObjectTemplatePointers -_081276B0: .4byte gSprites - thumb_func_end FldEff_Splash - - thumb_func_start sub_81276B4 -sub_81276B4: @ 81276B4 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _081276E4 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - beq _081276EE -_081276E4: - adds r0, r4, 0 - movs r1, 0xF - bl FieldEffectStop - b _0812772E -_081276EE: - ldr r3, _08127738 @ =gSprites - ldr r2, _0812773C @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x20] - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C -_0812772E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127738: .4byte gSprites -_0812773C: .4byte gMapObjects - thumb_func_end sub_81276B4 - - thumb_func_start FldEff_JumpSmallSplash -FldEff_JumpSmallSplash: @ 8127740 - push {r4,lr} - ldr r4, _081277A4 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0xC - bl sub_8060470 - ldr r0, _081277A8 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x38] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0812779C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081277AC @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0x10 - strh r0, [r2, 0x30] -_0812779C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081277A4: .4byte gUnknown_0202FF84 -_081277A8: .4byte gFieldEffectObjectTemplatePointers -_081277AC: .4byte gSprites - thumb_func_end FldEff_JumpSmallSplash - - thumb_func_start FldEff_JumpBigSplash -FldEff_JumpBigSplash: @ 81277B0 - push {r4,lr} - ldr r4, _08127814 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127818 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x30] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0812780C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _0812781C @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0xE - strh r0, [r2, 0x30] -_0812780C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127814: .4byte gUnknown_0202FF84 -_08127818: .4byte gFieldEffectObjectTemplatePointers -_0812781C: .4byte gSprites - thumb_func_end FldEff_JumpBigSplash - - thumb_func_start FldEff_FeetInFlowingWater -FldEff_FeetInFlowingWater: @ 8127820 - push {r4-r7,lr} - ldr r7, _081278C0 @ =gUnknown_0202FF84 - ldrb r0, [r7] - ldrb r1, [r7, 0x4] - ldrb r2, [r7, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _081278C4 @ =gMapObjects - adds r6, r1, r0 - ldr r0, _081278C8 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x34] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _081278B6 - ldrb r0, [r6, 0x5] - bl GetFieldObjectGraphicsInfo - adds r4, r0, 0 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r3, _081278CC @ =gSprites - adds r0, r3 - ldr r1, _081278D0 @ =sub_81278D8 - str r1, [r0, 0x1C] - adds r5, r0, 0 - adds r5, 0x3E - ldrb r1, [r5] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r5] - ldrb r2, [r6, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - ldrb r1, [r1, 0x5] - movs r2, 0xC - ands r2, r1 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r1, [r7] - strh r1, [r0, 0x2E] - ldr r1, [r7, 0x4] - strh r1, [r0, 0x30] - ldr r1, [r7, 0x8] - strh r1, [r0, 0x32] - ldr r1, _081278D4 @ =0x0000ffff - strh r1, [r0, 0x34] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x36] - ldrh r1, [r4, 0xA] - lsls r1, 16 - asrs r1, 17 - subs r1, 0x4 - strh r1, [r0, 0x26] - movs r1, 0x1 - bl StartSpriteAnim -_081278B6: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081278C0: .4byte gUnknown_0202FF84 -_081278C4: .4byte gMapObjects -_081278C8: .4byte gFieldEffectObjectTemplatePointers -_081278CC: .4byte gSprites -_081278D0: .4byte sub_81278D8 -_081278D4: .4byte 0x0000ffff - thumb_func_end FldEff_FeetInFlowingWater - - thumb_func_start sub_81278D8 -sub_81278D8: @ 81278D8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08127912 - ldr r2, _0812791C @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r5, r0, r2 - ldrb r0, [r5, 0x2] - lsls r0, 28 - cmp r0, 0 - blt _08127920 -_08127912: - adds r0, r4, 0 - movs r1, 0x22 - bl FieldEffectStop - b _0812796A - .align 2, 0 -_0812791C: .4byte gMapObjects -_08127920: - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127974 @ =gSprites - adds r0, r1 - ldrh r1, [r0, 0x20] - strh r1, [r4, 0x20] - ldrh r1, [r0, 0x22] - strh r1, [r4, 0x22] - adds r0, 0x43 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C - ldr r1, [r5, 0x10] - ldr r0, [r4, 0x34] - cmp r1, r0 - beq _0812796A - ldrh r0, [r5, 0x10] - strh r0, [r4, 0x34] - ldrh r0, [r5, 0x12] - strh r0, [r4, 0x36] - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0812796A - movs r0, 0x46 - bl PlaySE -_0812796A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08127974: .4byte gSprites - thumb_func_end sub_81278D8 - - thumb_func_start FldEff_Ripple -FldEff_Ripple: @ 8127978 - push {r4,lr} - ldr r0, _081279CC @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x14] - ldr r4, _081279D0 @ =gUnknown_0202FF84 - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081279C4 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081279D4 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x5 - strh r0, [r2, 0x2E] -_081279C4: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081279CC: .4byte gFieldEffectObjectTemplatePointers -_081279D0: .4byte gUnknown_0202FF84 -_081279D4: .4byte gSprites - thumb_func_end FldEff_Ripple - - thumb_func_start FldEff_HotSpringsWater -FldEff_HotSpringsWater: @ 81279D8 - push {r4-r6,lr} - ldr r6, _08127A6C @ =gUnknown_0202FF84 - ldrb r0, [r6] - ldrb r1, [r6, 0x4] - ldrb r2, [r6, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _08127A70 @ =gMapObjects - adds r5, r1, r0 - ldr r0, _08127A74 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x7C] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127A64 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r4, _08127A78 @ =gSprites - adds r2, r4 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - movs r1, 0xC - ands r1, r0 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r6] - strh r0, [r2, 0x2E] - ldr r0, [r6, 0x4] - strh r0, [r2, 0x30] - ldr r0, [r6, 0x8] - strh r0, [r2, 0x32] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x20] - strh r0, [r2, 0x34] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x22] - strh r0, [r2, 0x36] -_08127A64: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08127A6C: .4byte gUnknown_0202FF84 -_08127A70: .4byte gMapObjects -_08127A74: .4byte gFieldEffectObjectTemplatePointers -_08127A78: .4byte gSprites - thumb_func_end FldEff_HotSpringsWater - - thumb_func_start sub_8127A7C -sub_8127A7C: @ 8127A7C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08127AB6 - ldr r5, _08127AC0 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x2] - lsls r0, 26 - cmp r0, 0 - blt _08127AC4 -_08127AB6: - adds r0, r4, 0 - movs r1, 0x2A - bl FieldEffectStop - b _08127B08 - .align 2, 0 -_08127AC0: .4byte gMapObjects -_08127AC4: - ldrb r0, [r1, 0x5] - bl GetFieldObjectGraphicsInfo - mov r1, sp - ldrb r2, [r1] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r2, _08127B10 @ =gSprites - adds r1, r2 - ldrh r2, [r1, 0x20] - strh r2, [r4, 0x20] - ldrh r0, [r0, 0xA] - lsls r0, 16 - asrs r0, 17 - ldrh r2, [r1, 0x22] - adds r0, r2 - subs r0, 0x8 - strh r0, [r4, 0x22] - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C -_08127B08: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08127B10: .4byte gSprites - thumb_func_end sub_8127A7C - - thumb_func_start FldEff_Unknown19 -FldEff_Unknown19: @ 8127B14 - push {r4,lr} - ldr r4, _08127B74 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127B78 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x44] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127B6C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127B7C @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x13 - strh r0, [r2, 0x2E] -_08127B6C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127B74: .4byte gUnknown_0202FF84 -_08127B78: .4byte gFieldEffectObjectTemplatePointers -_08127B7C: .4byte gSprites - thumb_func_end FldEff_Unknown19 - - thumb_func_start FldEff_Unknown20 -FldEff_Unknown20: @ 8127B80 - push {r4,lr} - ldr r4, _08127BE0 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127BE4 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x48] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127BD8 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127BE8 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x14 - strh r0, [r2, 0x2E] -_08127BD8: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127BE0: .4byte gUnknown_0202FF84 -_08127BE4: .4byte gFieldEffectObjectTemplatePointers -_08127BE8: .4byte gSprites - thumb_func_end FldEff_Unknown20 - - thumb_func_start FldEff_Unknown21 -FldEff_Unknown21: @ 8127BEC - push {r4,lr} - ldr r4, _08127C4C @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127C50 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x4C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127C44 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127C54 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x15 - strh r0, [r2, 0x2E] -_08127C44: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127C4C: .4byte gUnknown_0202FF84 -_08127C50: .4byte gFieldEffectObjectTemplatePointers -_08127C54: .4byte gSprites - thumb_func_end FldEff_Unknown21 - - thumb_func_start FldEff_Unknown22 -FldEff_Unknown22: @ 8127C58 - push {r4,lr} - ldr r4, _08127CB8 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127CBC @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x50] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127CB0 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127CC0 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x16 - strh r0, [r2, 0x2E] -_08127CB0: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127CB8: .4byte gUnknown_0202FF84 -_08127CBC: .4byte gFieldEffectObjectTemplatePointers -_08127CC0: .4byte gSprites - thumb_func_end FldEff_Unknown22 - - thumb_func_start ash -ash: @ 8127CC4 - push {r4,lr} - lsls r2, 16 - lsrs r2, 16 - ldr r4, _08127CF4 @ =gUnknown_0202FF84 - lsls r0, 16 - asrs r0, 16 - str r0, [r4] - lsls r1, 16 - asrs r1, 16 - str r1, [r4, 0x4] - movs r0, 0x52 - str r0, [r4, 0x8] - movs r0, 0x1 - str r0, [r4, 0xC] - str r2, [r4, 0x10] - lsls r3, 16 - asrs r3, 16 - str r3, [r4, 0x14] - movs r0, 0x7 - bl FieldEffectStart - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127CF4: .4byte gUnknown_0202FF84 - thumb_func_end ash - - thumb_func_start FldEff_Ash -FldEff_Ash: @ 8127CF8 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08127D78 @ =gUnknown_0202FF84 - ldrh r1, [r5] - mov r0, sp - strh r1, [r0] - ldrh r0, [r5, 0x4] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - mov r0, sp - adds r1, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127D7C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x18] - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - movs r3, 0 - ldrsh r2, [r4, r3] - ldrb r3, [r5, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127D6E - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127D80 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r5, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r5] - strh r0, [r2, 0x30] - ldr r0, [r5, 0x4] - strh r0, [r2, 0x32] - ldr r0, [r5, 0x10] - strh r0, [r2, 0x34] - ldr r0, [r5, 0x14] - strh r0, [r2, 0x36] -_08127D6E: - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08127D78: .4byte gUnknown_0202FF84 -_08127D7C: .4byte gFieldEffectObjectTemplatePointers -_08127D80: .4byte gSprites - thumb_func_end FldEff_Ash - - thumb_func_start sub_8127D84 -sub_8127D84: @ 8127D84 - push {lr} - ldr r2, _08127D9C @ =gUnknown_08401E48 - movs r3, 0x2E - ldrsh r1, [r0, r3] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_08127D9C: .4byte gUnknown_08401E48 - thumb_func_end sub_8127D84 - - thumb_func_start sub_8127DA0 -sub_8127DA0: @ 8127DA0 - push {lr} - adds r3, r0, 0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - subs r2, 0x12 - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08127DCA - movs r0, 0x1 - strh r0, [r3, 0x2E] -_08127DCA: - pop {r0} - bx r0 - thumb_func_end sub_8127DA0 - - thumb_func_start sub_8127DD0 -sub_8127DD0: @ 8127DD0 - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - subs r2, 0x12 - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - ldrh r2, [r4, 0x34] - bl MapGridSetMetatileIdAt - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - ldr r2, _08127E28 @ =gMapObjects - ldr r0, _08127E2C @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - movs r0, 0x2 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127E28: .4byte gMapObjects -_08127E2C: .4byte gPlayerAvatar - thumb_func_end sub_8127DD0 - - thumb_func_start sub_8127E30 -sub_8127E30: @ 8127E30 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_806487C - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08127E50 - adds r0, r4, 0 - movs r1, 0x7 - bl FieldEffectStop -_08127E50: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127E30 - - thumb_func_start FldEff_SurfBlob -FldEff_SurfBlob: @ 8127E58 - push {r4,r5,lr} - ldr r4, _08127EC0 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127EC4 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x1C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0x96 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - cmp r0, 0x40 - beq _08127EB2 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08127EC8 @ =gSprites - adds r1, r0 - adds r3, r1, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r3] - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r1, 0x32] - ldr r0, _08127ECC @ =0x0000ffff - strh r0, [r1, 0x34] - movs r0, 0x1 - negs r0, r0 - strh r0, [r1, 0x3A] - strh r0, [r1, 0x3C] -_08127EB2: - movs r0, 0x8 - bl FieldEffectActiveListRemove - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08127EC0: .4byte gUnknown_0202FF84 -_08127EC4: .4byte gFieldEffectObjectTemplatePointers -_08127EC8: .4byte gSprites -_08127ECC: .4byte 0x0000ffff - thumb_func_end FldEff_SurfBlob - - thumb_func_start sub_8127ED0 -sub_8127ED0: @ 8127ED0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r3, _08127EF8 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrh r0, [r2, 0x2E] - movs r3, 0x10 - negs r3, r3 - ands r3, r0 - movs r0, 0xF0 - lsls r0, 20 - ands r0, r1 - lsrs r0, 24 - orrs r0, r3 - strh r0, [r2, 0x2E] - bx lr - .align 2, 0 -_08127EF8: .4byte gSprites - thumb_func_end sub_8127ED0 - - thumb_func_start sub_8127EFC -sub_8127EFC: @ 8127EFC - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r3, _08127F24 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrh r0, [r2, 0x2E] - movs r3, 0xF1 - negs r3, r3 - ands r3, r0 - movs r0, 0xF0 - lsls r0, 20 - ands r0, r1 - lsrs r0, 20 - orrs r3, r0 - strh r3, [r2, 0x2E] - bx lr - .align 2, 0 -_08127F24: .4byte gSprites - thumb_func_end sub_8127EFC - - thumb_func_start sub_8127F28 -sub_8127F28: @ 8127F28 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r4, _08127F54 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r3, r4 - ldrh r0, [r3, 0x2E] - ldr r4, _08127F58 @ =0xfffff0ff - ands r4, r0 - movs r0, 0xF0 - lsls r0, 20 - ands r0, r1 - lsrs r0, 16 - orrs r4, r0 - strh r4, [r3, 0x2E] - strh r2, [r3, 0x30] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127F54: .4byte gSprites -_08127F58: .4byte 0xfffff0ff - thumb_func_end sub_8127F28 - - thumb_func_start sub_8127F5C -sub_8127F5C: @ 8127F5C - ldrh r1, [r0, 0x2E] - movs r0, 0xF - ands r0, r1 - bx lr - thumb_func_end sub_8127F5C - - thumb_func_start sub_8127F64 -sub_8127F64: @ 8127F64 - ldrh r1, [r0, 0x2E] - movs r0, 0xF0 - ands r0, r1 - lsrs r0, 4 - bx lr - thumb_func_end sub_8127F64 - - thumb_func_start sub_8127F70 -sub_8127F70: @ 8127F70 - ldrh r1, [r0, 0x2E] - movs r0, 0xF0 - lsls r0, 4 - ands r0, r1 - lsrs r0, 8 - bx lr - thumb_func_end sub_8127F70 - - thumb_func_start sub_8127F7C -sub_8127F7C: @ 8127F7C - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x32 - ldrsh r0, [r6, r1] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08127FCC @ =gMapObjects - adds r4, r0 - ldrb r0, [r4, 0x4] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, _08127FD0 @ =gSprites - adds r5, r0 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8127FD4 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_812800C - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_81280A0 - ldrb r0, [r5, 0x5] - movs r1, 0xC - ands r1, r0 - ldrb r2, [r6, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x5] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08127FCC: .4byte gMapObjects -_08127FD0: .4byte gSprites - thumb_func_end sub_8127F7C - - thumb_func_start sub_8127FD4 -sub_8127FD4: @ 8127FD4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r4, r1, 0 - ldr r1, _08128008 @ =gUnknown_08401E54 - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - bl sub_8127F64 - lsls r0, 24 - cmp r0, 0 - bne _08128000 - ldrb r0, [r5, 0x18] - lsrs r0, 4 - add r0, sp - ldrb r1, [r0] - adds r0, r4, 0 - bl StartSpriteAnimIfDifferent -_08128000: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08128008: .4byte gUnknown_08401E54 - thumb_func_end sub_8127FD4 - - thumb_func_start sub_812800C -sub_812800C: @ 812800C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r1, 0 - ldrh r2, [r0, 0x10] - mov r1, sp - strh r2, [r1] - ldrh r1, [r0, 0x12] - mov r0, sp - adds r0, 0x2 - strh r1, [r0] - movs r2, 0x26 - ldrsh r3, [r4, r2] - mov r8, r0 - cmp r3, 0 - bne _08128094 - mov r0, sp - movs r5, 0 - ldrsh r2, [r0, r5] - movs r5, 0x3A - ldrsh r0, [r4, r5] - cmp r2, r0 - bne _08128048 - lsls r0, r1, 16 - asrs r0, 16 - movs r5, 0x3C - ldrsh r1, [r4, r5] - cmp r0, r1 - beq _08128094 -_08128048: - strh r3, [r4, 0x38] - strh r2, [r4, 0x3A] - mov r1, r8 - movs r2, 0 - ldrsh r0, [r1, r2] - strh r0, [r4, 0x3C] - movs r5, 0x1 - mov r7, r8 - mov r6, sp -_0812805A: - adds r0, r5, 0 - mov r1, sp - adds r2, r7, 0 - bl MoveCoords - movs r1, 0 - ldrsh r0, [r6, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _08128080 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _08128094 -_08128080: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4, 0x3A] - strh r0, [r6] - ldrh r0, [r4, 0x3C] - mov r1, r8 - strh r0, [r1] - cmp r5, 0x4 - bls _0812805A -_08128094: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812800C - - thumb_func_start sub_81280A0 -sub_81280A0: @ 81280A0 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r1, 0 - adds r4, r2, 0 - ldr r1, _08128104 @ =gUnknown_08401E5A - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - bl sub_8127F5C - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - cmp r2, 0 - beq _0812811A - ldrh r1, [r4, 0x36] - adds r1, 0x1 - strh r1, [r4, 0x36] - movs r3, 0x38 - ldrsh r0, [r4, r3] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _081280E0 - ldrh r0, [r4, 0x34] - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] -_081280E0: - ldrh r1, [r4, 0x36] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _081280F0 - ldrh r0, [r4, 0x34] - negs r0, r0 - strh r0, [r4, 0x34] -_081280F0: - cmp r2, 0x2 - beq _0812811A - adds r0, r4, 0 - bl sub_8127F70 - lsls r0, 24 - cmp r0, 0 - bne _08128108 - ldrh r0, [r4, 0x26] - b _0812810E - .align 2, 0 -_08128104: .4byte gUnknown_08401E5A -_08128108: - ldrh r0, [r4, 0x26] - ldrh r3, [r4, 0x30] - adds r0, r3 -_0812810E: - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x20] - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] -_0812811A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81280A0 - - thumb_func_start sub_8128124 -sub_8128124: @ 8128124 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08128168 @ =gDummySpriteTemplate - movs r1, 0 - movs r2, 0 - movs r3, 0xFF - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r1, _0812816C @ =gSprites - adds r2, r1 - ldr r1, _08128170 @ =sub_8128174 - str r1, [r2, 0x1C] - movs r1, 0x3E - adds r1, r2 - mov r12, r1 - ldrb r1, [r1] - movs r3, 0x4 - orrs r1, r3 - mov r3, r12 - strb r1, [r3] - strh r4, [r2, 0x2E] - movs r1, 0x1 - strh r1, [r2, 0x30] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08128168: .4byte gDummySpriteTemplate -_0812816C: .4byte gSprites -_08128170: .4byte sub_8128174 - thumb_func_end sub_8128124 - - thumb_func_start sub_8128174 -sub_8128174: @ 8128174 - push {lr} - adds r2, r0, 0 - movs r0, 0x2E - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081281B0 @ =gSprites - adds r3, r0, r1 - ldrh r1, [r2, 0x32] - adds r0, r1, 0x1 - strh r0, [r2, 0x32] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0812819C - ldrh r0, [r2, 0x30] - ldrh r1, [r3, 0x26] - adds r0, r1 - strh r0, [r3, 0x26] -_0812819C: - ldrh r1, [r2, 0x32] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _081281AC - ldrh r0, [r2, 0x30] - negs r0, r0 - strh r0, [r2, 0x30] -_081281AC: - pop {r0} - bx r0 - .align 2, 0 -_081281B0: .4byte gSprites - thumb_func_end sub_8128174 - - thumb_func_start FldEff_Dust -FldEff_Dust: @ 81281B4 - push {r4,lr} - ldr r4, _08128218 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0xC - bl sub_8060470 - ldr r0, _0812821C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x24] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08128210 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08128220 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0xA - strh r0, [r2, 0x30] -_08128210: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08128218: .4byte gUnknown_0202FF84 -_0812821C: .4byte gFieldEffectObjectTemplatePointers -_08128220: .4byte gSprites - thumb_func_end FldEff_Dust - - thumb_func_start FldEff_SandPile -FldEff_SandPile: @ 8128224 - push {r4-r7,lr} - ldr r7, _081282D0 @ =gUnknown_0202FF84 - ldrb r0, [r7] - ldrb r1, [r7, 0x4] - ldrb r2, [r7, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _081282D4 @ =gMapObjects - adds r6, r1, r0 - ldr r0, _081282D8 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x74] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _081282C8 - ldrb r0, [r6, 0x5] - bl GetFieldObjectGraphicsInfo - adds r5, r0, 0 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r4, _081282DC @ =gSprites - adds r0, r4 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r3] - ldrb r2, [r6, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - movs r2, 0xC - ands r2, r1 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r1, [r7] - strh r1, [r0, 0x2E] - ldr r1, [r7, 0x4] - strh r1, [r0, 0x30] - ldr r1, [r7, 0x8] - strh r1, [r0, 0x32] - ldrb r2, [r6, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x20] - strh r1, [r0, 0x34] - ldrb r2, [r6, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x22] - strh r1, [r0, 0x36] - ldrh r1, [r5, 0xA] - lsls r1, 16 - asrs r1, 17 - subs r1, 0x2 - strh r1, [r0, 0x26] - movs r1, 0x2 - bl SeekSpriteAnim -_081282C8: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081282D0: .4byte gUnknown_0202FF84 -_081282D4: .4byte gMapObjects -_081282D8: .4byte gFieldEffectObjectTemplatePointers -_081282DC: .4byte gSprites - thumb_func_end FldEff_SandPile - - thumb_func_start sub_81282E0 -sub_81282E0: @ 81282E0 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0812831A - ldr r2, _08128324 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldrb r0, [r1, 0x2] - lsls r0, 27 - cmp r0, 0 - blt _08128328 -_0812831A: - adds r0, r4, 0 - movs r1, 0x27 - bl FieldEffectStop - b _0812839A - .align 2, 0 -_08128324: .4byte gMapObjects -_08128328: - ldr r2, _081283A4 @ =gSprites - ldrb r1, [r1, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r5, [r0, 0x22] - ldrh r6, [r0, 0x20] - movs r2, 0x20 - ldrsh r1, [r0, r2] - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08128350 - lsls r0, r5, 16 - asrs r0, 16 - movs r2, 0x36 - ldrsh r1, [r4, r2] - cmp r0, r1 - beq _0812836A -_08128350: - strh r6, [r4, 0x34] - strh r5, [r4, 0x36] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0812836A - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim -_0812836A: - strh r6, [r4, 0x20] - strh r5, [r4, 0x22] - ldr r3, _081283A4 @ =gSprites - ldr r2, _081283A8 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x43 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C -_0812839A: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081283A4: .4byte gSprites -_081283A8: .4byte gMapObjects - thumb_func_end sub_81282E0 - - thumb_func_start FldEff_Bubbles -FldEff_Bubbles: @ 81283AC - push {r4,lr} - ldr r4, _08128404 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0 - bl sub_8060470 - ldr r0, _08128408 @ =gFieldEffectObjectTemplatePointers - adds r0, 0x88 - ldr r0, [r0] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0x52 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081283FC - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0812840C @ =gSprites - adds r1, r0 - adds r3, r1, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r3] - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x5] -_081283FC: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08128404: .4byte gUnknown_0202FF84 -_08128408: .4byte gFieldEffectObjectTemplatePointers -_0812840C: .4byte gSprites - thumb_func_end FldEff_Bubbles - - thumb_func_start sub_8128410 -sub_8128410: @ 8128410 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x22] - subs r1, r0 - strh r1, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C - ldrh r1, [r4, 0x3E] - ldr r0, _0812844C @ =0x00001004 - ands r0, r1 - cmp r0, 0 - beq _08128444 - adds r0, r4, 0 - movs r1, 0x35 - bl FieldEffectStop -_08128444: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812844C: .4byte 0x00001004 - thumb_func_end sub_8128410 - - thumb_func_start FldEff_BerryTreeGrowthSparkle -FldEff_BerryTreeGrowthSparkle: @ 8128450 - push {r4,lr} - ldr r4, _081284B8 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x4 - bl sub_8060470 - ldr r0, _081284BC @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x58] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081284B0 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081284C0 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - movs r1, 0xF - ands r0, r1 - movs r1, 0x50 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x17 - strh r0, [r2, 0x2E] -_081284B0: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081284B8: .4byte gUnknown_0202FF84 -_081284BC: .4byte gFieldEffectObjectTemplatePointers -_081284C0: .4byte gSprites - thumb_func_end FldEff_BerryTreeGrowthSparkle - - thumb_func_start FldEff_TreeDisguise -FldEff_TreeDisguise: @ 81284C4 - push {lr} - movs r0, 0x1C - movs r1, 0x18 - movs r2, 0x4 - bl ShowDisguiseFieldEffect - pop {r1} - bx r1 - thumb_func_end FldEff_TreeDisguise - - thumb_func_start FldEff_MountainDisguise -FldEff_MountainDisguise: @ 81284D4 - push {lr} - movs r0, 0x1D - movs r1, 0x19 - movs r2, 0x3 - bl ShowDisguiseFieldEffect - pop {r1} - bx r1 - thumb_func_end FldEff_MountainDisguise - - thumb_func_start FldEff_SandDisguise -FldEff_SandDisguise: @ 81284E4 - push {lr} - movs r0, 0x24 - movs r1, 0x1C - movs r2, 0x2 - bl ShowDisguiseFieldEffect - pop {r1} - bx r1 - thumb_func_end FldEff_SandDisguise - - thumb_func_start ShowDisguiseFieldEffect -ShowDisguiseFieldEffect: @ 81284F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r4 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r7, r2, 24 - ldr r5, _08128528 @ =gUnknown_0202FF84 - ldrb r0, [r5] - ldrb r1, [r5, 0x4] - ldrb r2, [r5, 0x8] - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - beq _0812852C - adds r0, r4, 0 - bl FieldEffectActiveListRemove - movs r0, 0x40 - b _08128598 - .align 2, 0 -_08128528: .4byte gUnknown_0202FF84 -_0812852C: - ldr r1, _081285A4 @ =gFieldEffectObjectTemplatePointers - lsls r0, r6, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - mov r1, sp - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08128594 - mov r0, sp - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081285A8 @ =gSprites - adds r2, r0 - movs r0, 0x3E - adds r0, r2 - mov r12, r0 - ldrb r3, [r0] - lsls r1, r3, 30 - lsrs r1, 31 - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - lsls r1, 1 - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - lsls r3, r7, 4 - ldrb r1, [r2, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x5] - mov r0, r8 - strh r0, [r2, 0x30] - ldr r0, [r5] - strh r0, [r2, 0x32] - ldr r0, [r5, 0x4] - strh r0, [r2, 0x34] - ldr r0, [r5, 0x8] - strh r0, [r2, 0x36] -_08128594: - mov r0, sp - ldrb r0, [r0] -_08128598: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081285A4: .4byte gFieldEffectObjectTemplatePointers -_081285A8: .4byte gSprites - thumb_func_end ShowDisguiseFieldEffect - - thumb_func_start sub_81285AC -sub_81285AC: @ 81285AC - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x32] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x34] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r5, 0x36] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - beq _081285DC - ldrh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl FieldEffectStop -_081285DC: - ldr r4, _08128694 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - mov r1, sp - ldrb r2, [r1] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x4] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - ldr r1, _08128698 @ =gSprites - adds r2, r1 - adds r1, r2, 0 - adds r1, 0x3E - ldrb r1, [r1] - movs r3, 0x3E - adds r3, r5 - mov r12, r3 - movs r3, 0x4 - ands r3, r1 - mov r1, r12 - ldrb r4, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r4 - orrs r1, r3 - mov r3, r12 - strb r1, [r3] - ldrh r1, [r2, 0x20] - strh r1, [r5, 0x20] - ldrh r0, [r0, 0xA] - lsls r0, 16 - asrs r0, 17 - ldrh r1, [r2, 0x22] - adds r0, r1 - subs r0, 0x10 - strh r0, [r5, 0x22] - adds r2, 0x43 - ldrb r0, [r2] - subs r0, 0x1 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x1 - bne _0812865C - adds r0, r1, 0x1 - strh r0, [r5, 0x2E] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_0812865C: - movs r3, 0x2E - ldrsh r0, [r5, r3] - ldrh r2, [r5, 0x2E] - cmp r0, 0x2 - bne _08128678 - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08128678 - movs r0, 0x1 - strh r0, [r5, 0x3C] -_08128678: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _0812868C - ldrh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl FieldEffectStop -_0812868C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08128694: .4byte gMapObjects -_08128698: .4byte gSprites - thumb_func_end sub_81285AC - - thumb_func_start sub_812869C -sub_812869C: @ 812869C - push {lr} - adds r1, r0, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x1 - bne _081286BA - ldr r2, _081286C0 @ =gSprites - ldrb r1, [r1, 0x1A] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x2E] - adds r1, 0x1 - strh r1, [r0, 0x2E] -_081286BA: - pop {r0} - bx r0 - .align 2, 0 -_081286C0: .4byte gSprites - thumb_func_end sub_812869C - - thumb_func_start sub_81286C4 -sub_81286C4: @ 81286C4 - push {lr} - adds r2, r0, 0 - adds r2, 0x21 - ldrb r1, [r2] - cmp r1, 0x2 - beq _081286FA - cmp r1, 0 - beq _081286FA - ldrb r1, [r0, 0x1A] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081286EC @ =gSprites - adds r1, r0, r1 - movs r3, 0x3C - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _081286F0 - movs r0, 0 - b _081286FC - .align 2, 0 -_081286EC: .4byte gSprites -_081286F0: - movs r0, 0x2 - strb r0, [r2] - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] -_081286FA: - movs r0, 0x1 -_081286FC: - pop {r1} - bx r1 - thumb_func_end sub_81286C4 - - thumb_func_start FldEff_Sparkle -FldEff_Sparkle: @ 8128700 - push {r4,lr} - ldr r4, _08128768 @ =gUnknown_0202FF84 - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - ldr r0, [r4, 0x4] - adds r0, 0x7 - str r0, [r4, 0x4] - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _0812876C @ =gFieldEffectObjectTemplatePointers - adds r0, 0x8C - ldr r0, [r0] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0x52 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _08128760 - ldr r0, _08128770 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - movs r0, 0x3 - ldrb r2, [r4, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] -_08128760: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08128768: .4byte gUnknown_0202FF84 -_0812876C: .4byte gFieldEffectObjectTemplatePointers -_08128770: .4byte gSprites - thumb_func_end FldEff_Sparkle - - thumb_func_start sub_8128774 -sub_8128774: @ 8128774 - push {lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _081287A8 - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081287A0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_081287A0: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _081287BE -_081287A8: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x22 - ble _081287BE - adds r0, r2, 0 - movs r1, 0x36 - bl FieldEffectStop -_081287BE: - pop {r0} - bx r0 - thumb_func_end sub_8128774 - - thumb_func_start sub_81287C4 -sub_81287C4: @ 81287C4 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081287E2 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldEffectStop - b _081287F8 -_081287E2: - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - movs r2, 0 - bl SetObjectSubpriorityByZCoord -_081287F8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81287C4 - - thumb_func_start sub_8128800 -sub_8128800: @ 8128800 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0812881E - ldrh r1, [r2, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl FieldEffectStop - b _08128826 -_0812881E: - adds r0, r2, 0 - movs r1, 0 - bl sub_806487C -_08128826: - pop {r0} - bx r0 - thumb_func_end sub_8128800 - - thumb_func_start sub_812882C -sub_812882C: @ 812882C - push {r4-r7,lr} - adds r6, r0, 0 - adds r0, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - adds r1, r6, 0 - bl SetObjectSubpriorityByZCoord - movs r7, 0 -_08128842: - lsls r0, r7, 3 - adds r0, r7 - lsls r0, 2 - ldr r1, _081288DC @ =gMapObjects - adds r4, r0, r1 - ldrb r0, [r4] - lsls r0, 31 - cmp r0, 0 - beq _081288E4 - ldrb r0, [r4, 0x5] - bl GetFieldObjectGraphicsInfo - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081288E0 @ =gSprites - adds r5, r0, r1 - adds r0, r6, 0 - adds r0, 0x28 - movs r2, 0 - ldrsb r2, [r0, r2] - ldrh r0, [r6, 0x20] - adds r1, r0, r2 - subs r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x20 - ldrsh r2, [r5, r0] - cmp r1, r2 - bge _081288E4 - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, r2 - ble _081288E4 - adds r0, r5, 0 - adds r0, 0x29 - movs r3, 0 - ldrsb r3, [r0, r3] - ldrh r2, [r5, 0x22] - adds r2, r3 - ldrh r4, [r5, 0x22] - adds r0, r6, 0 - adds r0, 0x29 - movs r1, 0 - ldrsb r1, [r0, r1] - ldrh r0, [r6, 0x22] - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - adds r3, r0, r3 - lsls r2, 16 - asrs r2, 16 - lsls r3, 16 - asrs r3, 16 - cmp r2, r3 - blt _081288BC - cmp r2, r0 - bge _081288E4 -_081288BC: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, r3 - ble _081288E4 - adds r2, r6, 0 - adds r2, 0x43 - adds r0, r5, 0 - adds r0, 0x43 - ldrb r1, [r0] - ldrb r0, [r2] - cmp r0, r1 - bhi _081288E4 - adds r0, r1, 0x2 - strb r0, [r2] - b _081288EE - .align 2, 0 -_081288DC: .4byte gMapObjects -_081288E0: .4byte gSprites -_081288E4: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0xF - bls _08128842 -_081288EE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812882C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s deleted file mode 100644 index 1f489ceb3..000000000 --- a/asm/field_fadetransition.s +++ /dev/null @@ -1,1221 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start task_mpl_807DD60 -task_mpl_807DD60: @ 80809CC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r2, _080809F0 @ =gTasks - adds r4, r0, r2 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08080A06 - cmp r0, 0x1 - bgt _080809F4 - cmp r0, 0 - beq _080809FA - b _08080A36 - .align 2, 0 -_080809F0: .4byte gTasks -_080809F4: - cmp r0, 0x2 - beq _08080A24 - b _08080A36 -_080809FA: - bl sub_8083664 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xA] - b _08080A1C -_08080A06: - movs r1, 0xA - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - beq _08080A36 - bl pal_fill_for_map_transition -_08080A1C: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08080A36 -_08080A24: - bl sub_8080E70 - cmp r0, 0x1 - bne _08080A36 - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_08080A36: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end task_mpl_807DD60 - - thumb_func_start sub_8080A3C -sub_8080A3C: @ 8080A3C - push {lr} - bl ScriptContext2_Enable - bl sub_8053E90 - bl palette_bg_fill_black - ldr r0, _08080A58 @ =task_mpl_807DD60 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08080A58: .4byte task_mpl_807DD60 - thumb_func_end sub_8080A3C - - thumb_func_start sub_8080A5C -sub_8080A5C: @ 8080A5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08080A80 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08080A90 - cmp r0, 0x1 - bgt _08080A84 - cmp r0, 0 - beq _08080A8A - b _08080ABC - .align 2, 0 -_08080A80: .4byte gTasks -_08080A84: - cmp r0, 0x2 - beq _08080AA6 - b _08080ABC -_08080A8A: - bl sub_80084A4 - b _08080A9E -_08080A90: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08080ABC - bl pal_fill_for_map_transition -_08080A9E: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08080ABC -_08080AA6: - bl sub_8080E70 - cmp r0, 0x1 - bne _08080ABC - bl sub_8007B14 - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_08080ABC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8080A5C - - thumb_func_start sub_8080AC4 -sub_8080AC4: @ 8080AC4 - push {lr} - bl ScriptContext2_Enable - bl sub_8053E90 - bl palette_bg_fill_black - ldr r0, _08080AE0 @ =sub_8080A5C - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08080AE0: .4byte sub_8080A5C - thumb_func_end sub_8080AC4 - - thumb_func_start sub_8080AE4 -sub_8080AE4: @ 8080AE4 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsDoor - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08080B1C - ldr r1, _08080B18 @ =sub_8080B9C - b _08080B2E - .align 2, 0 -_08080B18: .4byte sub_8080B9C -_08080B1C: - adds r0, r4, 0 - bl MetatileBehavior_IsNonAnimDoor - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08080B40 @ =task_map_chg_seq_0807E2CC - cmp r0, 0x1 - bne _08080B2E - ldr r1, _08080B44 @ =task_map_chg_seq_0807E20C -_08080B2E: - adds r0, r1, 0 - movs r1, 0xA - bl CreateTask - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08080B40: .4byte task_map_chg_seq_0807E2CC -_08080B44: .4byte task_map_chg_seq_0807E20C - thumb_func_end sub_8080AE4 - - thumb_func_start mapldr_default -mapldr_default: @ 8080B48 - push {lr} - bl sub_8053E90 - bl pal_fill_for_map_transition - bl sub_8080AE4 - bl ScriptContext2_Enable - pop {r0} - bx r0 - thumb_func_end mapldr_default - - thumb_func_start sub_8080B60 -sub_8080B60: @ 8080B60 - push {lr} - bl sub_8053E90 - bl pal_fill_black - bl sub_8080AE4 - bl ScriptContext2_Enable - pop {r0} - bx r0 - thumb_func_end sub_8080B60 - - thumb_func_start sub_8080B78 -sub_8080B78: @ 8080B78 - push {lr} - bl sub_8053E90 - bl pal_fill_for_map_transition - movs r0, 0x2E - bl PlaySE - ldr r0, _08080B98 @ =task_map_chg_seq_0807E2CC - movs r1, 0xA - bl CreateTask - bl ScriptContext2_Enable - pop {r0} - bx r0 - .align 2, 0 -_08080B98: .4byte task_map_chg_seq_0807E2CC - thumb_func_end sub_8080B78 - - thumb_func_start sub_8080B9C -sub_8080B9C: @ 8080B9C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08080BC8 @ =gTasks - adds r5, r0, r1 - adds r6, r5, 0 - adds r6, 0xC - adds r7, r5, 0 - adds r7, 0xE - movs r2, 0x8 - ldrsh r0, [r5, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _08080CAE - lsls r0, 2 - ldr r1, _08080BCC @ =_08080BD0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08080BC8: .4byte gTasks -_08080BCC: .4byte _08080BD0 - .align 2, 0 -_08080BD0: - .4byte _08080BE4 - .4byte _08080C08 - .4byte _08080C40 - .4byte _08080C84 - .4byte _08080CA4 -_08080BE4: - movs r0, 0 - bl sub_8080958 - bl FreezeMapObjects - adds r0, r6, 0 - adds r1, r7, 0 - bl PlayerGetDestCoords - movs r1, 0 - ldrsh r0, [r6, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl FieldSetDoorOpened - movs r0, 0x1 - strh r0, [r5, 0x8] - b _08080CAE -_08080C08: - bl sub_8080E70 - cmp r0, 0 - beq _08080CAE - movs r0, 0x1 - bl sub_8080958 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08080C3C @ =gMapObjects - adds r0, r1 - movs r1, 0x8 - bl FieldObjectSetSpecialAnim - movs r0, 0x2 - strh r0, [r5, 0x8] - b _08080CAE - .align 2, 0 -_08080C3C: .4byte gMapObjects -_08080C40: - bl walkrun_is_standing_still - lsls r0, 24 - cmp r0, 0 - beq _08080CAE - movs r1, 0 - ldrsh r0, [r6, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl FieldAnimateDoorClose - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0xA] - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08080C80 @ =gMapObjects - adds r0, r1 - bl FieldObjectClearAnimIfSpecialAnimFinished - movs r0, 0x3 - strh r0, [r5, 0x8] - b _08080CAE - .align 2, 0 -_08080C80: .4byte gMapObjects -_08080C84: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0 - blt _08080C9A - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - beq _08080CAE -_08080C9A: - bl UnfreezeMapObjects - movs r0, 0x4 - strh r0, [r5, 0x8] - b _08080CAE -_08080CA4: - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask -_08080CAE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8080B9C - - thumb_func_start task_map_chg_seq_0807E20C -task_map_chg_seq_0807E20C: @ 8080CB4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08080CE0 @ =gTasks - adds r5, r0, r1 - adds r6, r5, 0 - adds r6, 0xC - adds r7, r5, 0 - adds r7, 0xE - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08080D06 - cmp r0, 0x1 - bgt _08080CE4 - cmp r0, 0 - beq _08080CEE - b _08080D6E - .align 2, 0 -_08080CE0: .4byte gTasks -_08080CE4: - cmp r0, 0x2 - beq _08080D50 - cmp r0, 0x3 - beq _08080D64 - b _08080D6E -_08080CEE: - movs r0, 0 - bl sub_8080958 - bl FreezeMapObjects - adds r0, r6, 0 - adds r1, r7, 0 - bl PlayerGetDestCoords - movs r0, 0x1 - strh r0, [r5, 0x8] - b _08080D6E -_08080D06: - bl sub_8080E70 - cmp r0, 0 - beq _08080D6E - movs r0, 0x1 - bl sub_8080958 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08080D4C @ =gMapObjects - adds r4, r0 - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - bl GetGoSpeed0AnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - movs r0, 0x2 - strh r0, [r5, 0x8] - b _08080D6E - .align 2, 0 -_08080D4C: .4byte gMapObjects -_08080D50: - bl walkrun_is_standing_still - lsls r0, 24 - cmp r0, 0 - beq _08080D6E - bl UnfreezeMapObjects - movs r0, 0x3 - strh r0, [r5, 0x8] - b _08080D6E -_08080D64: - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask -_08080D6E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end task_map_chg_seq_0807E20C - - thumb_func_start task_map_chg_seq_0807E2CC -task_map_chg_seq_0807E2CC: @ 8080D74 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08080D94 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08080D98 - cmp r0, 0x1 - beq _08080DA8 - b _08080DBE - .align 2, 0 -_08080D94: .4byte gTasks -_08080D98: - bl FreezeMapObjects - bl ScriptContext2_Enable - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08080DBE -_08080DA8: - bl sub_8080E70 - cmp r0, 0 - beq _08080DBE - bl UnfreezeMapObjects - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_08080DBE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end task_map_chg_seq_0807E2CC - - thumb_func_start sub_8080DC4 -sub_8080DC4: @ 8080DC4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8080E70 - cmp r0, 0x1 - bne _08080DE0 - adds r0, r4, 0 - bl DestroyTask - ldr r0, _08080DE8 @ =sub_80712B4 - movs r1, 0x50 - bl CreateTask -_08080DE0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08080DE8: .4byte sub_80712B4 - thumb_func_end sub_8080DC4 - - thumb_func_start atk17_seteffectuser -atk17_seteffectuser: @ 8080DEC - push {lr} - bl pal_fill_black - ldr r0, _08080E00 @ =sub_8080DC4 - bl CreateStartMenuTask - bl ScriptContext2_Enable - pop {r0} - bx r0 - .align 2, 0 -_08080E00: .4byte sub_8080DC4 - thumb_func_end atk17_seteffectuser - - thumb_func_start task_mpl_807E3C8 -task_mpl_807E3C8: @ 8080E04 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8080E70 - cmp r0, 0x1 - bne _08080E20 - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask - bl sub_8064E2C -_08080E20: - pop {r4} - pop {r0} - bx r0 - thumb_func_end task_mpl_807E3C8 - - thumb_func_start sub_8080E28 -sub_8080E28: @ 8080E28 - push {lr} - bl ScriptContext2_Enable - bl pal_fill_black - ldr r0, _08080E40 @ =task_mpl_807E3C8 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08080E40: .4byte task_mpl_807E3C8 - thumb_func_end sub_8080E28 - - thumb_func_start sub_8080E44 -sub_8080E44: @ 8080E44 - push {lr} - bl ScriptContext2_Enable - bl sub_8053E90 - bl pal_fill_black - ldr r0, _08080E60 @ =task_mpl_807E3C8 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08080E60: .4byte task_mpl_807E3C8 - thumb_func_end sub_8080E44 - - thumb_func_start sub_8080E64 -sub_8080E64: @ 8080E64 - ldr r0, _08080E6C @ =gPaletteFade - ldrb r0, [r0, 0x7] - lsrs r0, 7 - bx lr - .align 2, 0 -_08080E6C: .4byte gPaletteFade - thumb_func_end sub_8080E64 - - thumb_func_start sub_8080E70 -sub_8080E70: @ 8080E70 - push {lr} - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08080E82 - movs r0, 0 - b _08080E84 -_08080E82: - movs r0, 0x1 -_08080E84: - pop {r1} - bx r1 - thumb_func_end sub_8080E70 - - thumb_func_start sub_8080E88 -sub_8080E88: @ 8080E88 - push {lr} - bl ScriptContext2_Enable - bl sub_8053FF8 - bl fade_8080918 - bl PlayRainSoundEffect - movs r0, 0x9 - bl PlaySE - ldr r0, _08080EB4 @ =gFieldCallback - ldr r1, _08080EB8 @ =mapldr_default - str r1, [r0] - ldr r0, _08080EBC @ =task0A_fade_n_map_maybe - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08080EB4: .4byte gFieldCallback -_08080EB8: .4byte mapldr_default -_08080EBC: .4byte task0A_fade_n_map_maybe - thumb_func_end sub_8080E88 - - thumb_func_start sp13E_warp_to_last_warp -sp13E_warp_to_last_warp: @ 8080EC0 - push {lr} - bl ScriptContext2_Enable - bl sub_8053FF8 - bl fade_8080918 - bl PlayRainSoundEffect - ldr r0, _08080EE4 @ =gFieldCallback - ldr r1, _08080EE8 @ =mapldr_default - str r1, [r0] - ldr r0, _08080EEC @ =task0A_fade_n_map_maybe - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08080EE4: .4byte gFieldCallback -_08080EE8: .4byte mapldr_default -_08080EEC: .4byte task0A_fade_n_map_maybe - thumb_func_end sp13E_warp_to_last_warp - - thumb_func_start sub_8080EF0 -sub_8080EF0: @ 8080EF0 - push {lr} - bl ScriptContext2_Enable - ldr r0, _08080F08 @ =gFieldCallback - ldr r1, _08080F0C @ =mapldr_default - str r1, [r0] - ldr r0, _08080F10 @ =sub_808115C - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08080F08: .4byte gFieldCallback -_08080F0C: .4byte mapldr_default -_08080F10: .4byte sub_808115C - thumb_func_end sub_8080EF0 - - thumb_func_start sp13F_fall_to_last_warp -sp13F_fall_to_last_warp: @ 8080F14 - push {lr} - bl sp13E_warp_to_last_warp - ldr r1, _08080F24 @ =gFieldCallback - ldr r0, _08080F28 @ =sub_8086748 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08080F24: .4byte gFieldCallback -_08080F28: .4byte sub_8086748 - thumb_func_end sp13F_fall_to_last_warp - - thumb_func_start sub_8080F2C -sub_8080F2C: @ 8080F2C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ScriptContext2_Enable - adds r0, r4, 0 - movs r1, 0xA - bl sub_8086A2C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8080F2C - - thumb_func_start sub_8080F48 -sub_8080F48: @ 8080F48 - push {lr} - bl ScriptContext2_Enable - movs r0, 0xA - bl sub_80871B8 - pop {r0} - bx r0 - thumb_func_end sub_8080F48 - - thumb_func_start sub_8080F58 -sub_8080F58: @ 8080F58 - push {lr} - bl ScriptContext2_Enable - movs r0, 0xA - bl sub_8087654 - pop {r0} - bx r0 - thumb_func_end sub_8080F58 - - thumb_func_start sub_8080F68 -sub_8080F68: @ 8080F68 - push {lr} - bl ScriptContext2_Enable - bl sub_8053FF8 - bl fade_8080918 - movs r0, 0x2D - bl PlaySE - ldr r0, _08080F90 @ =task0A_fade_n_map_maybe - movs r1, 0xA - bl CreateTask - ldr r1, _08080F94 @ =gFieldCallback - ldr r0, _08080F98 @ =sub_8080B78 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08080F90: .4byte task0A_fade_n_map_maybe -_08080F94: .4byte gFieldCallback -_08080F98: .4byte sub_8080B78 - thumb_func_end sub_8080F68 - - thumb_func_start sub_8080F9C -sub_8080F9C: @ 8080F9C - push {lr} - bl ScriptContext2_Enable - bl fade_8080918 - ldr r0, _08080FB8 @ =task0A_fade_n_map_maybe - movs r1, 0xA - bl CreateTask - ldr r1, _08080FBC @ =gFieldCallback - ldr r0, _08080FC0 @ =sub_80C791C - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08080FB8: .4byte task0A_fade_n_map_maybe -_08080FBC: .4byte gFieldCallback -_08080FC0: .4byte sub_80C791C - thumb_func_end sub_8080F9C - - thumb_func_start sub_8080FC4 -sub_8080FC4: @ 8080FC4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08080FE8 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08080FF8 - cmp r0, 0x1 - bgt _08080FEC - cmp r0, 0 - beq _08080FF2 - b _08081022 - .align 2, 0 -_08080FE8: .4byte gTasks -_08080FEC: - cmp r0, 0x2 - beq _08081012 - b _08081022 -_08080FF2: - bl ScriptContext2_Enable - b _0808100A -_08080FF8: - bl sub_8080E64 - cmp r0, 0 - bne _08081022 - bl sub_8054034 - lsls r0, 24 - cmp r0, 0 - beq _08081022 -_0808100A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08081022 -_08081012: - bl warp_in - ldr r0, _08081028 @ =sub_8054588 - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_08081022: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08081028: .4byte sub_8054588 - thumb_func_end sub_8080FC4 - - thumb_func_start DoCableClubWarp -DoCableClubWarp: @ 808102C - push {lr} - bl ScriptContext2_Enable - bl sub_8053FF8 - bl fade_8080918 - movs r0, 0x9 - bl PlaySE - ldr r0, _0808104C @ =sub_8080FC4 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0808104C: .4byte sub_8080FC4 - thumb_func_end DoCableClubWarp - - thumb_func_start sub_8081050 -sub_8081050: @ 8081050 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08081074 @ =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08081096 - cmp r0, 0x1 - bgt _08081078 - cmp r0, 0 - beq _0808107E - b _080810CC - .align 2, 0 -_08081074: .4byte gTasks + 0x8 -_08081078: - cmp r0, 0x2 - beq _080810B4 - b _080810CC -_0808107E: - bl ClearLinkCallback_2 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - bl sub_8053FF8 - movs r0, 0x9 - bl PlaySE - b _080810AC -_08081096: - bl sub_8080E64 - cmp r0, 0 - bne _080810CC - bl sub_8054034 - lsls r0, 24 - cmp r0, 0 - beq _080810CC - bl sub_800832C -_080810AC: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080810CC -_080810B4: - ldr r0, _080810D4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080810CC - bl warp_in - ldr r0, _080810D8 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_080810CC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080810D4: .4byte gReceivedRemoteLinkPlayers -_080810D8: .4byte CB2_LoadMap - thumb_func_end sub_8081050 - - thumb_func_start sub_80810DC -sub_80810DC: @ 80810DC - push {lr} - ldr r0, _080810EC @ =sub_8081050 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_080810EC: .4byte sub_8081050 - thumb_func_end sub_80810DC - - thumb_func_start task0A_fade_n_map_maybe -task0A_fade_n_map_maybe: @ 80810F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08081114 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08081128 - cmp r0, 0x1 - bgt _08081118 - cmp r0, 0 - beq _0808111E - b _08081152 - .align 2, 0 -_08081114: .4byte gTasks -_08081118: - cmp r0, 0x2 - beq _08081142 - b _08081152 -_0808111E: - bl FreezeMapObjects - bl ScriptContext2_Enable - b _0808113A -_08081128: - bl sub_8080E64 - cmp r0, 0 - bne _08081152 - bl sub_8054034 - lsls r0, 24 - cmp r0, 0 - beq _08081152 -_0808113A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08081152 -_08081142: - bl warp_in - ldr r0, _08081158 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_08081152: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08081158: .4byte CB2_LoadMap - thumb_func_end task0A_fade_n_map_maybe - - thumb_func_start sub_808115C -sub_808115C: @ 808115C - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0808118C @ =gTasks - adds r5, r1, r0 - adds r4, r5, 0 - adds r4, 0xC - adds r6, r5, 0 - adds r6, 0xE - movs r2, 0x8 - ldrsh r1, [r5, r2] - adds r2, r0, 0 - cmp r1, 0x4 - bls _08081180 - b _080812BC -_08081180: - lsls r0, r1, 2 - ldr r1, _08081190 @ =_08081194 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808118C: .4byte gTasks -_08081190: .4byte _08081194 - .align 2, 0 -_08081194: - .4byte _080811A8 - .4byte _080811E4 - .4byte _08081240 - .4byte _0808128C - .4byte _080812A8 -_080811A8: - bl FreezeMapObjects - adds r0, r4, 0 - adds r1, r6, 0 - bl PlayerGetDestCoords - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0 - ldrsh r1, [r6, r2] - subs r1, 0x1 - bl sub_8058790 - lsls r0, 16 - lsrs r0, 16 - bl PlaySE - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0 - ldrsh r1, [r6, r2] - subs r1, 0x1 - bl FieldAnimateDoorOpen - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0xA] - movs r0, 0x1 - strh r0, [r5, 0x8] - b _080812BC -_080811E4: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0 - blt _080811FA - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - beq _080812BC -_080811FA: - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r4, _0808123C @ =gMapObjects - adds r0, r4 - bl FieldObjectClearAnimIfSpecialAnimActive - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x9 - bl FieldObjectSetSpecialAnim - movs r0, 0x2 - strh r0, [r5, 0x8] - b _080812BC - .align 2, 0 -_0808123C: .4byte gMapObjects -_08081240: - bl walkrun_is_standing_still - lsls r0, 24 - cmp r0, 0 - beq _080812BC - movs r2, 0 - ldrsh r0, [r4, r2] - movs r2, 0 - ldrsh r1, [r6, r2] - subs r1, 0x1 - bl FieldAnimateDoorClose - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0xA] - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08081288 @ =gMapObjects - adds r0, r1 - bl FieldObjectClearAnimIfSpecialAnimFinished - movs r0, 0 - bl sub_8080958 - movs r0, 0x3 - strh r0, [r5, 0x8] - b _080812BC - .align 2, 0 -_08081288: .4byte gMapObjects -_0808128C: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0 - blt _080812A2 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - beq _080812BC -_080812A2: - movs r0, 0x4 - strh r0, [r5, 0x8] - b _080812BC -_080812A8: - bl sub_8053FF8 - bl fade_8080918 - bl PlayRainSoundEffect - movs r0, 0 - strh r0, [r5, 0x8] - ldr r0, _080812C4 @ =task0A_fade_n_map_maybe - str r0, [r5] -_080812BC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080812C4: .4byte task0A_fade_n_map_maybe - thumb_func_end sub_808115C - - thumb_func_start sub_80812C8 -sub_80812C8: @ 80812C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080812EC @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08081300 - cmp r0, 0x1 - bgt _080812F0 - cmp r0, 0 - beq _080812F6 - b _0808132A - .align 2, 0 -_080812EC: .4byte gTasks -_080812F0: - cmp r0, 0x2 - beq _0808131A - b _0808132A -_080812F6: - bl FreezeMapObjects - bl ScriptContext2_Enable - b _08081312 -_08081300: - bl sub_8080E64 - cmp r0, 0 - bne _0808132A - bl sub_8054034 - lsls r0, 24 - cmp r0, 0 - beq _0808132A -_08081312: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0808132A -_0808131A: - bl warp_in - ldr r0, _08081330 @ =sub_8054534 - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0808132A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08081330: .4byte sub_8054534 - thumb_func_end sub_80812C8 - - thumb_func_start sub_8081334 -sub_8081334: @ 8081334 - push {lr} - bl ScriptContext2_Enable - bl sub_8053FF8 - bl fade_8080918 - bl PlayRainSoundEffect - movs r0, 0x9 - bl PlaySE - ldr r0, _08081360 @ =gFieldCallback - ldr r1, _08081364 @ =sub_8080B60 - str r1, [r0] - ldr r0, _08081368 @ =sub_80812C8 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08081360: .4byte gFieldCallback -_08081364: .4byte sub_8080B60 -_08081368: .4byte sub_80812C8 - thumb_func_end sub_8081334 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s deleted file mode 100644 index 47c4b4c60..000000000 --- a/asm/field_ground_effect.s +++ /dev/null @@ -1,1302 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start FieldObjectCheckForReflectiveSurface -FieldObjectCheckForReflectiveSurface: @ 8063A44 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r5, r0, 0 - ldrb r0, [r5, 0x5] - bl GetFieldObjectGraphicsInfo - movs r2, 0x8 - ldrsh r1, [r0, r2] - adds r1, 0x8 - lsls r1, 12 - lsrs r1, 16 - str r1, [sp] - movs r1, 0xA - ldrsh r0, [r0, r1] - adds r0, 0x8 - lsls r0, 12 - movs r4, 0 - lsrs r2, r0, 16 - str r2, [sp, 0x4] - asrs r0, 16 - cmp r4, r0 - blt _08063A7A - b _08063B80 -_08063A7A: - movs r0, 0x1 - mov r10, r0 -_08063A7E: - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - add r1, r10 - lsls r4, 16 - asrs r6, r4, 16 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - mov r9, r4 - cmp r0, 0 - bne _08063B82 - movs r1, 0x14 - ldrsh r0, [r5, r1] - movs r2, 0x16 - ldrsh r1, [r5, r2] - add r1, r10 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - movs r2, 0x1 - ldr r1, [sp] - lsls r0, r1, 16 - asrs r1, r0, 16 - mov r8, r0 - cmp r2, r1 - bge _08063B6E - movs r0, 0x80 - lsls r0, 9 - asrs r7, r0, 16 -_08063AD8: - movs r1, 0x10 - ldrsh r0, [r5, r1] - lsls r1, r2, 16 - asrs r4, r1, 16 - adds r0, r4 - movs r2, 0x12 - ldrsh r1, [r5, r2] - adds r1, r7 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - movs r1, 0x10 - ldrsh r0, [r5, r1] - subs r0, r4 - movs r2, 0x12 - ldrsh r1, [r5, r2] - adds r1, r7 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - movs r1, 0x14 - ldrsh r0, [r5, r1] - adds r0, r4 - movs r2, 0x16 - ldrsh r1, [r5, r2] - adds r1, r7 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - movs r1, 0x14 - ldrsh r0, [r5, r1] - subs r0, r4 - movs r2, 0x16 - ldrsh r1, [r5, r2] - adds r1, r7 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, r8 - blt _08063AD8 -_08063B6E: - movs r1, 0x80 - lsls r1, 9 - add r1, r9 - lsrs r4, r1, 16 - ldr r2, [sp, 0x4] - lsls r0, r2, 16 - cmp r1, r0 - bge _08063B80 - b _08063A7E -_08063B80: - movs r0, 0 -_08063B82: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end FieldObjectCheckForReflectiveSurface - - thumb_func_start GetReflectionTypeByMetatileBehavior -GetReflectionTypeByMetatileBehavior: @ 8063B94 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsIce - lsls r0, 24 - cmp r0, 0 - beq _08063BAA - movs r0, 0x1 - b _08063BBC -_08063BAA: - adds r0, r4, 0 - bl MetatileBehavior_IsReflective - lsls r0, 24 - cmp r0, 0 - bne _08063BBA - movs r0, 0 - b _08063BBC -_08063BBA: - movs r0, 0x2 -_08063BBC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetReflectionTypeByMetatileBehavior - - thumb_func_start GetLedgeJumpDirection -GetLedgeJumpDirection: @ 8063BC4 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r4, 0 - beq _08063C0A - cmp r4, 0x4 - bls _08063BE0 - subs r0, r4, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 -_08063BE0: - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r3, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08063C10 @ =gUnknown_08376040 - lsls r1, r4, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08063C14 -_08063C0A: - movs r0, 0 - b _08063C1A - .align 2, 0 -_08063C10: .4byte gUnknown_08376040 -_08063C14: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r0, 24 -_08063C1A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetLedgeJumpDirection - - thumb_func_start FieldObjectSetSpriteOamTableForLongGrass -FieldObjectSetSpriteOamTableForLongGrass: @ 8063C20 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r0, [r5] - lsls r0, 27 - cmp r0, 0 - blt _08063C74 - ldrb r0, [r5, 0x1E] - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _08063C74 - ldrb r0, [r5, 0x1F] - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _08063C74 - adds r4, 0x42 - ldrb r1, [r4] - movs r6, 0x40 - negs r6, r6 - adds r0, r6, 0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - ldrb r0, [r5, 0xB] - lsrs r0, 4 - bl ZCoordToPriority - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08063C74 - ldrb r0, [r4] - adds r1, r6, 0 - ands r1, r0 - movs r0, 0x5 - orrs r1, r0 - strb r1, [r4] -_08063C74: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end FieldObjectSetSpriteOamTableForLongGrass - - thumb_func_start IsZCoordMismatchAt -IsZCoordMismatchAt: @ 8063C7C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r0, r1, 16 - lsls r2, 16 - lsrs r1, r2, 16 - cmp r4, 0 - beq _08063CAA - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08063CAA - cmp r0, 0xF - beq _08063CAA - cmp r0, r4 - bne _08063CAE -_08063CAA: - movs r0, 0 - b _08063CB0 -_08063CAE: - movs r0, 0x1 -_08063CB0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsZCoordMismatchAt - - thumb_func_start FieldObjectUpdateZCoordAndPriority -FieldObjectUpdateZCoordAndPriority: @ 8063CB8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x3] - lsls r0, 29 - cmp r0, 0 - blt _08063D06 - adds r0, r4, 0 - bl FieldObjectUpdateZCoord - ldr r1, _08063D0C @ =gFieldObjectPriorities_08376070 - ldrb r2, [r4, 0xB] - lsls r2, 24 - lsrs r0, r2, 28 - adds r0, r1 - ldrb r0, [r0] - adds r4, r5, 0 - adds r4, 0x42 - movs r1, 0x3F - ands r1, r0 - ldrb r3, [r4] - movs r0, 0x40 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4] - ldr r0, _08063D10 @ =gFieldObjectPriorities_08376060 - lsrs r2, 28 - adds r2, r0 - movs r0, 0x3 - ldrb r1, [r2] - ands r1, r0 - lsls r1, 2 - ldrb r2, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] -_08063D06: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063D0C: .4byte gFieldObjectPriorities_08376070 -_08063D10: .4byte gFieldObjectPriorities_08376060 - thumb_func_end FieldObjectUpdateZCoordAndPriority - - thumb_func_start InitObjectPriorityByZCoord -InitObjectPriorityByZCoord: @ 8063D14 - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08063D58 @ =gFieldObjectPriorities_08376070 - adds r2, r1, r2 - ldrb r2, [r2] - movs r3, 0x42 - adds r3, r0 - mov r12, r3 - movs r3, 0x3F - ands r3, r2 - mov r2, r12 - ldrb r4, [r2] - movs r2, 0x40 - negs r2, r2 - ands r2, r4 - orrs r2, r3 - mov r3, r12 - strb r2, [r3] - ldr r2, _08063D5C @ =gFieldObjectPriorities_08376060 - adds r1, r2 - movs r3, 0x3 - ldrb r2, [r1] - ands r2, r3 - lsls r2, 2 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08063D58: .4byte gFieldObjectPriorities_08376070 -_08063D5C: .4byte gFieldObjectPriorities_08376060 - thumb_func_end InitObjectPriorityByZCoord - - thumb_func_start ZCoordToPriority -ZCoordToPriority: @ 8063D60 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08063D6C @ =gFieldObjectPriorities_08376060 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08063D6C: .4byte gFieldObjectPriorities_08376060 - thumb_func_end ZCoordToPriority - - thumb_func_start FieldObjectUpdateZCoord -FieldObjectUpdateZCoord: @ 8063D70 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x10 - ldrsh r0, [r4, r1] - movs r2, 0x12 - ldrsh r1, [r4, r2] - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x14 - ldrsh r0, [r4, r1] - movs r2, 0x16 - ldrsh r1, [r4, r2] - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r0, 24 - cmp r5, 0xF - beq _08063DBE - cmp r0, 0xF - beq _08063DBE - movs r3, 0xF - adds r0, r5, 0 - ands r0, r3 - ldrb r1, [r4, 0xB] - movs r2, 0x10 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0xB] - cmp r5, 0 - beq _08063DBE - cmp r5, 0xF - beq _08063DBE - lsls r0, r5, 4 - ands r2, r3 - orrs r2, r0 - strb r2, [r4, 0xB] -_08063DBE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end FieldObjectUpdateZCoord - - thumb_func_start SetObjectSubpriorityByZCoord -SetObjectSubpriorityByZCoord: @ 8063DC4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0 - adds r3, 0x29 - movs r5, 0 - ldrsb r5, [r3, r5] - ldrh r4, [r1, 0x22] - ldr r3, _08063E04 @ =gSpriteCoordOffsetY - subs r4, r5 - ldrh r3, [r3] - adds r4, r3 - adds r4, 0x8 - movs r3, 0xFF - ands r4, r3 - lsrs r4, 4 - movs r3, 0x10 - subs r3, r4 - lsls r3, 17 - ldr r4, _08063E08 @ =gUnknown_08376050 - adds r0, r4 - lsrs r3, 16 - ldrb r0, [r0] - adds r3, r0 - adds r2, r3 - adds r1, 0x43 - strb r2, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063E04: .4byte gSpriteCoordOffsetY -_08063E08: .4byte gUnknown_08376050 - thumb_func_end SetObjectSubpriorityByZCoord - - thumb_func_start FieldObjectUpdateSubpriority -FieldObjectUpdateSubpriority: @ 8063E0C - push {lr} - adds r2, r0, 0 - ldrb r0, [r2, 0x3] - lsls r0, 29 - cmp r0, 0 - blt _08063E22 - ldrb r0, [r2, 0xB] - lsrs r0, 4 - movs r2, 0x1 - bl SetObjectSubpriorityByZCoord -_08063E22: - pop {r0} - bx r0 - thumb_func_end FieldObjectUpdateSubpriority - - thumb_func_start AreZCoordsCompatible -AreZCoordsCompatible: @ 8063E28 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r0, 0 - beq _08063E3E - cmp r1, 0 - beq _08063E3E - cmp r0, r1 - bne _08063E42 -_08063E3E: - movs r0, 0x1 - b _08063E44 -_08063E42: - movs r0, 0 -_08063E44: - pop {r1} - bx r1 - thumb_func_end AreZCoordsCompatible - - thumb_func_start GroundEffect_SpawnOnTallGrass -GroundEffect_SpawnOnTallGrass: @ 8063E48 - push {lr} - ldr r3, _08063E8C @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r1, [r0, r2] - str r1, [r3] - movs r2, 0x12 - ldrsh r1, [r0, r2] - str r1, [r3, 0x4] - ldrb r1, [r0, 0xB] - lsrs r1, 4 - str r1, [r3, 0x8] - movs r1, 0x2 - str r1, [r3, 0xC] - ldrb r1, [r0, 0x8] - lsls r1, 8 - ldrb r2, [r0, 0x9] - orrs r1, r2 - str r1, [r3, 0x10] - ldrb r0, [r0, 0xA] - str r0, [r3, 0x14] - ldr r1, _08063E90 @ =gSaveBlock1 - ldrb r0, [r1, 0x5] - lsls r0, 8 - ldrb r1, [r1, 0x4] - orrs r0, r1 - str r0, [r3, 0x18] - movs r0, 0x1 - str r0, [r3, 0x1C] - movs r0, 0x4 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08063E8C: .4byte gUnknown_0202FF84 -_08063E90: .4byte gSaveBlock1 - thumb_func_end GroundEffect_SpawnOnTallGrass - - thumb_func_start sub_8063E94 -sub_8063E94: @ 8063E94 - push {lr} - ldr r3, _08063ED8 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r1, [r0, r2] - str r1, [r3] - movs r2, 0x12 - ldrsh r1, [r0, r2] - str r1, [r3, 0x4] - ldrb r1, [r0, 0xB] - lsrs r1, 4 - str r1, [r3, 0x8] - movs r1, 0x2 - str r1, [r3, 0xC] - ldrb r1, [r0, 0x8] - lsls r1, 8 - ldrb r2, [r0, 0x9] - orrs r1, r2 - str r1, [r3, 0x10] - ldrb r0, [r0, 0xA] - str r0, [r3, 0x14] - ldr r1, _08063EDC @ =gSaveBlock1 - ldrb r0, [r1, 0x5] - lsls r0, 8 - ldrb r1, [r1, 0x4] - orrs r0, r1 - str r0, [r3, 0x18] - movs r0, 0 - str r0, [r3, 0x1C] - movs r0, 0x4 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08063ED8: .4byte gUnknown_0202FF84 -_08063EDC: .4byte gSaveBlock1 - thumb_func_end sub_8063E94 - - thumb_func_start sub_8063EE0 -sub_8063EE0: @ 8063EE0 - push {lr} - ldr r3, _08063F24 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r1, [r0, r2] - str r1, [r3] - movs r2, 0x12 - ldrsh r1, [r0, r2] - str r1, [r3, 0x4] - ldrb r1, [r0, 0xB] - lsrs r1, 4 - str r1, [r3, 0x8] - movs r1, 0x2 - str r1, [r3, 0xC] - ldrb r1, [r0, 0x8] - lsls r1, 8 - ldrb r2, [r0, 0x9] - orrs r1, r2 - str r1, [r3, 0x10] - ldrb r0, [r0, 0xA] - str r0, [r3, 0x14] - ldr r1, _08063F28 @ =gSaveBlock1 - ldrb r0, [r1, 0x5] - lsls r0, 8 - ldrb r1, [r1, 0x4] - orrs r0, r1 - str r0, [r3, 0x18] - movs r0, 0x1 - str r0, [r3, 0x1C] - movs r0, 0x11 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08063F24: .4byte gUnknown_0202FF84 -_08063F28: .4byte gSaveBlock1 - thumb_func_end sub_8063EE0 - - thumb_func_start sub_8063F2C -sub_8063F2C: @ 8063F2C - push {lr} - ldr r3, _08063F70 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r1, [r0, r2] - str r1, [r3] - movs r2, 0x12 - ldrsh r1, [r0, r2] - str r1, [r3, 0x4] - ldrb r1, [r0, 0xB] - lsrs r1, 4 - str r1, [r3, 0x8] - movs r1, 0x2 - str r1, [r3, 0xC] - ldrb r1, [r0, 0x8] - lsls r1, 8 - ldrb r2, [r0, 0x9] - orrs r1, r2 - str r1, [r3, 0x10] - ldrb r0, [r0, 0xA] - str r0, [r3, 0x14] - ldr r1, _08063F74 @ =gSaveBlock1 - ldrb r0, [r1, 0x5] - lsls r0, 8 - ldrb r1, [r1, 0x4] - orrs r0, r1 - str r0, [r3, 0x18] - movs r0, 0 - str r0, [r3, 0x1C] - movs r0, 0x11 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08063F70: .4byte gUnknown_0202FF84 -_08063F74: .4byte gSaveBlock1 - thumb_func_end sub_8063F2C - - thumb_func_start GroundEffect_WaterReflection -GroundEffect_WaterReflection: @ 8063F78 - push {lr} - movs r2, 0 - bl SetUpReflection - pop {r0} - bx r0 - thumb_func_end GroundEffect_WaterReflection - - thumb_func_start GroundEffect_IceReflection -GroundEffect_IceReflection: @ 8063F84 - push {lr} - movs r2, 0x1 - bl SetUpReflection - pop {r0} - bx r0 - thumb_func_end GroundEffect_IceReflection - - thumb_func_start GroundEffect_FlowingWater -GroundEffect_FlowingWater: @ 8063F90 - push {lr} - adds r1, r0, 0 - movs r0, 0x22 - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_FlowingWater - - thumb_func_start sub_8063FA0 -sub_8063FA0: @ 8063FA0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x5] - bl GetFieldObjectGraphicsInfo - ldr r1, _08063FC8 @ =gUnknown_08376080 - ldrb r0, [r0, 0xD] - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl _call_via_r3 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063FC8: .4byte gUnknown_08376080 - thumb_func_end sub_8063FA0 - - thumb_func_start sub_8063FCC -sub_8063FCC: @ 8063FCC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x5] - bl GetFieldObjectGraphicsInfo - ldr r1, _08063FF4 @ =gUnknown_08376080 - ldrb r0, [r0, 0xD] - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl _call_via_r3 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063FF4: .4byte gUnknown_08376080 - thumb_func_end sub_8063FCC - - thumb_func_start nullsub_50 -nullsub_50: @ 8063FF8 - bx lr - thumb_func_end nullsub_50 - - thumb_func_start DoTracksGroundEffect_Footprints -DoTracksGroundEffect_Footprints: @ 8063FFC - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r4, r2, 24 - lsrs r4, 24 - ldr r1, _08064044 @ =gSandFootprints_FieldEffectData - mov r0, sp - movs r2, 0x4 - bl memcpy - ldr r1, _08064048 @ =gUnknown_0202FF84 - movs r2, 0x14 - ldrsh r0, [r5, r2] - str r0, [r1] - movs r2, 0x16 - ldrsh r0, [r5, r2] - str r0, [r1, 0x4] - movs r0, 0x95 - str r0, [r1, 0x8] - movs r0, 0x2 - str r0, [r1, 0xC] - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - str r0, [r1, 0x10] - lsls r4, 1 - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl FieldEffectStart - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08064044: .4byte gSandFootprints_FieldEffectData -_08064048: .4byte gUnknown_0202FF84 - thumb_func_end DoTracksGroundEffect_Footprints - - thumb_func_start DoTracksGroundEffect_BikeTireTracks -DoTracksGroundEffect_BikeTireTracks: @ 806404C - push {r4,lr} - adds r4, r0, 0 - ldr r1, [r4, 0x10] - ldr r0, [r4, 0x14] - cmp r1, r0 - beq _0806408E - ldr r2, _08064094 @ =gUnknown_0202FF84 - movs r1, 0x14 - ldrsh r0, [r4, r1] - str r0, [r2] - movs r1, 0x16 - ldrsh r0, [r4, r1] - str r0, [r2, 0x4] - movs r0, 0x95 - str r0, [r2, 0x8] - movs r0, 0x2 - str r0, [r2, 0xC] - ldr r3, _08064098 @ =gBikeTireTracks_Transitions - ldrb r1, [r4, 0x18] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 2 - subs r0, 0x5 - adds r1, r0 - adds r1, r3 - ldrb r0, [r1] - str r0, [r2, 0x10] - movs r0, 0x23 - bl FieldEffectStart -_0806408E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08064094: .4byte gUnknown_0202FF84 -_08064098: .4byte gBikeTireTracks_Transitions - thumb_func_end DoTracksGroundEffect_BikeTireTracks - - thumb_func_start GroundEffect_Ripple -GroundEffect_Ripple: @ 806409C - push {lr} - bl DoRippleFieldEffect - pop {r0} - bx r0 - thumb_func_end GroundEffect_Ripple - - thumb_func_start GroundEffect_StepOnPuddle -GroundEffect_StepOnPuddle: @ 80640A8 - push {lr} - adds r1, r0, 0 - movs r0, 0xF - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_StepOnPuddle - - thumb_func_start GroundEffect_SandPile -GroundEffect_SandPile: @ 80640B8 - push {lr} - adds r1, r0, 0 - movs r0, 0x27 - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_SandPile - - thumb_func_start GroundEffect_JumpOnTallGrass -GroundEffect_JumpOnTallGrass: @ 80640C8 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0806411C @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r0, [r5, r2] - str r0, [r1] - movs r4, 0x12 - ldrsh r0, [r5, r4] - str r0, [r1, 0x4] - ldrb r0, [r5, 0xB] - lsrs r0, 4 - str r0, [r1, 0x8] - movs r0, 0x2 - str r0, [r1, 0xC] - movs r0, 0xC - bl FieldEffectStart - ldrb r0, [r5, 0x8] - ldrb r1, [r5, 0x9] - ldrb r2, [r5, 0xA] - movs r7, 0x10 - ldrsh r3, [r5, r7] - movs r7, 0x12 - ldrsh r4, [r5, r7] - str r4, [sp] - bl sub_8126FF0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - bne _08064112 - adds r0, r5, 0 - adds r1, r6, 0 - bl GroundEffect_SpawnOnTallGrass -_08064112: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806411C: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpOnTallGrass - - thumb_func_start GroundEffect_JumpOnLongGrass -GroundEffect_JumpOnLongGrass: @ 8064120 - push {lr} - ldr r2, _08064144 @ =gUnknown_0202FF84 - movs r3, 0x10 - ldrsh r1, [r0, r3] - str r1, [r2] - movs r3, 0x12 - ldrsh r1, [r0, r3] - str r1, [r2, 0x4] - ldrb r0, [r0, 0xB] - lsrs r0, 4 - str r0, [r2, 0x8] - movs r0, 0x2 - str r0, [r2, 0xC] - movs r0, 0x12 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08064144: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpOnLongGrass - - thumb_func_start GroundEffect_JumpOnShallowWater -GroundEffect_JumpOnShallowWater: @ 8064148 - push {r4,lr} - ldr r3, _08064174 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r4, 0x12 - ldrsh r2, [r0, r4] - str r2, [r3, 0x4] - ldrb r0, [r0, 0xB] - lsrs r0, 4 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0x10 - bl FieldEffectStart - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08064174: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpOnShallowWater - - thumb_func_start GroundEffect_JumpOnWater -GroundEffect_JumpOnWater: @ 8064178 - push {r4,lr} - ldr r3, _080641A4 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r4, 0x12 - ldrsh r2, [r0, r4] - str r2, [r3, 0x4] - ldrb r0, [r0, 0xB] - lsrs r0, 4 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0xE - bl FieldEffectStart - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080641A4: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpOnWater - - thumb_func_start GroundEffect_JumpLandingDust -GroundEffect_JumpLandingDust: @ 80641A8 - push {r4,lr} - ldr r3, _080641D4 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r4, 0x12 - ldrsh r2, [r0, r4] - str r2, [r3, 0x4] - ldrb r0, [r0, 0xB] - lsrs r0, 4 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0xA - bl FieldEffectStart - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080641D4: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpLandingDust - - thumb_func_start GroundEffect_ShortGrass -GroundEffect_ShortGrass: @ 80641D8 - push {lr} - adds r1, r0, 0 - movs r0, 0x29 - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_ShortGrass - - thumb_func_start GroundEffect_HotSprings -GroundEffect_HotSprings: @ 80641E8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2A - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_HotSprings - - thumb_func_start GroundEffect_Seaweed -GroundEffect_Seaweed: @ 80641F8 - push {lr} - ldr r2, _08064214 @ =gUnknown_0202FF84 - movs r3, 0x10 - ldrsh r1, [r0, r3] - str r1, [r2] - movs r1, 0x12 - ldrsh r0, [r0, r1] - str r0, [r2, 0x4] - movs r0, 0x35 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08064214: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_Seaweed - - thumb_func_start sub_8064218 -sub_8064218: @ 8064218 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - adds r6, r1, 0 - adds r5, r2, 0 - movs r4, 0 - ldr r0, _08064258 @ =gUnknown_083760A0 - mov r8, r0 -_0806422A: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08064240 - lsls r0, r4, 2 - add r0, r8 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r6, 0 - bl _call_via_r2 -_08064240: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - lsrs r5, 1 - cmp r4, 0x13 - bls _0806422A - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08064258: .4byte gUnknown_083760A0 - thumb_func_end sub_8064218 - - thumb_func_start filters_out_some_ground_effects -filters_out_some_ground_effects: @ 806425C - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - ldrb r0, [r2] - lsls r0, 27 - cmp r0, 0 - bge _0806428A - ldrb r1, [r2, 0x2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - adds r1, 0x8 - ands r0, r1 - subs r1, 0x18 - ands r0, r1 - strb r0, [r2, 0x2] - ldr r0, [r3] - ldr r1, _08064290 @ =0xfff9f7bd - ands r0, r1 - str r0, [r3] -_0806428A: - pop {r0} - bx r0 - .align 2, 0 -_08064290: .4byte 0xfff9f7bd - thumb_func_end filters_out_some_ground_effects - - thumb_func_start FilterOutStepOnPuddleGroundEffectIfJumping -FilterOutStepOnPuddleGroundEffectIfJumping: @ 8064294 - push {lr} - adds r2, r1, 0 - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _080642A8 - ldr r0, [r2] - ldr r1, _080642AC @ =0xfffffbff - ands r0, r1 - str r0, [r2] -_080642A8: - pop {r0} - bx r0 - .align 2, 0 -_080642AC: .4byte 0xfffffbff - thumb_func_end FilterOutStepOnPuddleGroundEffectIfJumping - - thumb_func_start DoGroundEffects_OnSpawn -DoGroundEffects_OnSpawn: @ 80642B0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - lsls r0, 29 - cmp r0, 0 - bge _080642F4 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - bl FieldObjectUpdateZCoordAndPriority - adds r0, r4, 0 - mov r1, sp - bl GetAllGroundEffectFlags_OnSpawn - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetSpriteOamTableForLongGrass - ldr r2, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8064218 - ldrb r1, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r4] -_080642F4: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end DoGroundEffects_OnSpawn - - thumb_func_start DoGroundEffects_OnBeginStep -DoGroundEffects_OnBeginStep: @ 80642FC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - lsls r0, 29 - cmp r0, 0 - bge _08064348 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - bl FieldObjectUpdateZCoordAndPriority - adds r0, r4, 0 - mov r1, sp - bl GetAllGroundEffectFlags_OnBeginStep - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetSpriteOamTableForLongGrass - adds r0, r4, 0 - mov r1, sp - bl filters_out_some_ground_effects - ldr r2, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8064218 - ldrb r1, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r4] -_08064348: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end DoGroundEffects_OnBeginStep - - thumb_func_start DoGroundEffects_OnFinishStep -DoGroundEffects_OnFinishStep: @ 8064350 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - lsls r0, 28 - cmp r0, 0 - bge _0806439C - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - bl FieldObjectUpdateZCoordAndPriority - adds r0, r4, 0 - mov r1, sp - bl GetAllGroundEffectFlags_OnFinishStep - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetSpriteOamTableForLongGrass - adds r0, r4, 0 - mov r1, sp - bl FilterOutStepOnPuddleGroundEffectIfJumping - ldr r2, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8064218 - ldrb r1, [r4] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - movs r1, 0x21 - negs r1, r1 - ands r0, r1 - strb r0, [r4] -_0806439C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end DoGroundEffects_OnFinishStep - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s deleted file mode 100644 index c8c402217..000000000 --- a/asm/field_map_obj.s +++ /dev/null @@ -1,628 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - -.ifndef NONMATCHING - thumb_func_start sub_805F3EC -sub_805F3EC: @ 805F3EC - movs r0, 0 - bx lr - thumb_func_end sub_805F3EC - - thumb_func_start sub_805F3F0 -sub_805F3F0: @ 805F3F0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r1, _0805F434 @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - bl state_to_direction - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F434: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F3F0 - - thumb_func_start sub_805F438 -sub_805F438: @ 805F438 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F4EC @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F4BE - mov r1, r8 - cmp r1, 0 - beq _0805F4D2 - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F4D2 -_0805F4BE: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F4D2: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F4EC: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F438 -.endif - - thumb_func_start sub_805F4F0 -sub_805F4F0: @ 805F4F0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F5A4 @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl sub_8060744 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F576 - mov r1, r8 - cmp r1, 0 - beq _0805F58A - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F58A -_0805F576: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F58A: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F5A4: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F4F0 - - thumb_func_start sub_805F5A8 -sub_805F5A8: @ 805F5A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F65C @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl sub_806079C - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F62E - mov r1, r8 - cmp r1, 0 - beq _0805F642 - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F642 -_0805F62E: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F642: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F65C: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F5A8 - - thumb_func_start sub_805F660 -sub_805F660: @ 805F660 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F714 @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl sub_80607C8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F6E6 - mov r1, r8 - cmp r1, 0 - beq _0805F6FA - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F6FA -_0805F6E6: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F6FA: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F714: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F660 - - thumb_func_start cph_IM_DIFFERENT -cph_IM_DIFFERENT: @ 805F718 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r1, _0805F75C @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - bl state_to_direction - bl sub_806084C - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F75C: .4byte gUnknown_0836DC09 - thumb_func_end cph_IM_DIFFERENT - - thumb_func_start sub_805F760 -sub_805F760: @ 805F760 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F814 @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl sub_80608A4 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F7E6 - mov r1, r8 - cmp r1, 0 - beq _0805F7FA - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F7FA -_0805F7E6: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F7FA: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F814: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F760 - - thumb_func_start oac_hopping -oac_hopping: @ 805F818 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F8DC @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - ldrh r1, [r4, 0x10] - add r0, sp, 0x4 - strh r1, [r0] - ldrh r0, [r4, 0x12] - mov r5, sp - adds r5, 0x6 - strh r0, [r5] - movs r0, 0x2 - str r0, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - adds r2, r5, 0 - movs r3, 0x2 - bl sub_8060320 - adds r0, r6, 0 - bl GetJumpLedgeAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - add r0, sp, 0x4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F8AC - mov r1, r8 - cmp r1, 0 - beq _0805F8C0 - add r0, sp, 0x4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F8C0 -_0805F8AC: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F8C0: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F8DC: .4byte gUnknown_0836DC09 - thumb_func_end oac_hopping diff --git a/asm/fldeff_80C5CD4.s b/asm/fldeff_80C5CD4.s index 33182fc6a..011ce6427 100644 --- a/asm/fldeff_80C5CD4.s +++ b/asm/fldeff_80C5CD4.s @@ -741,7 +741,7 @@ _080C627C: .4byte gMapHeader thumb_func_start sub_80C6280 sub_80C6280: @ 80C6280 push {lr} - ldr r1, _080C6294 @ =gUnknown_0202FF84 + ldr r1, _080C6294 @ =gFieldEffectArguments ldr r0, [r1, 0x4] cmp r0, 0x2 beq _080C62AA @@ -751,7 +751,7 @@ sub_80C6280: @ 80C6280 beq _080C62A2 b _080C62BE .align 2, 0 -_080C6294: .4byte gUnknown_0202FF84 +_080C6294: .4byte gFieldEffectArguments _080C6298: cmp r0, 0x3 beq _080C62AE @@ -815,7 +815,7 @@ SetUpFieldMove_SecretPower: @ 80C62C4 bne _080C6330 bl sub_80C6264 ldr r1, _080C6320 @ =gFieldCallback - ldr r0, _080C6324 @ =sub_808AB90 + ldr r0, _080C6324 @ =FieldCallback_Teleport str r0, [r1] ldr r1, _080C6328 @ =gUnknown_03005CE4 ldr r0, _080C632C @ =sub_80C639C @@ -824,7 +824,7 @@ SetUpFieldMove_SecretPower: @ 80C62C4 _080C6318: .4byte gScriptResult _080C631C: .4byte gUnknown_0203923C _080C6320: .4byte gFieldCallback -_080C6324: .4byte sub_808AB90 +_080C6324: .4byte FieldCallback_Teleport _080C6328: .4byte gUnknown_03005CE4 _080C632C: .4byte sub_80C639C _080C6330: @@ -836,14 +836,14 @@ _080C6330: bne _080C6360 bl sub_80C6264 ldr r1, _080C6350 @ =gFieldCallback - ldr r0, _080C6354 @ =sub_808AB90 + ldr r0, _080C6354 @ =FieldCallback_Teleport str r0, [r1] ldr r1, _080C6358 @ =gUnknown_03005CE4 ldr r0, _080C635C @ =sub_80C64A8 b _080C6380 .align 2, 0 _080C6350: .4byte gFieldCallback -_080C6354: .4byte sub_808AB90 +_080C6354: .4byte FieldCallback_Teleport _080C6358: .4byte gUnknown_03005CE4 _080C635C: .4byte sub_80C64A8 _080C6360: @@ -859,7 +859,7 @@ _080C636E: _080C6372: bl sub_80C6264 ldr r1, _080C638C @ =gFieldCallback - ldr r0, _080C6390 @ =sub_808AB90 + ldr r0, _080C6390 @ =FieldCallback_Teleport str r0, [r1] ldr r1, _080C6394 @ =gUnknown_03005CE4 ldr r0, _080C6398 @ =sub_80C660C @@ -872,7 +872,7 @@ _080C6384: bx r1 .align 2, 0 _080C638C: .4byte gFieldCallback -_080C6390: .4byte sub_808AB90 +_080C6390: .4byte FieldCallback_Teleport _080C6394: .4byte gUnknown_03005CE4 _080C6398: .4byte sub_80C660C thumb_func_end SetUpFieldMove_SecretPower @@ -880,7 +880,7 @@ _080C6398: .4byte sub_80C660C thumb_func_start sub_80C639C sub_80C639C: @ 80C639C push {lr} - ldr r1, _080C63B0 @ =gUnknown_0202FF84 + ldr r1, _080C63B0 @ =gFieldEffectArguments ldr r0, _080C63B4 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -889,7 +889,7 @@ sub_80C639C: @ 80C639C pop {r0} bx r0 .align 2, 0 -_080C63B0: .4byte gUnknown_0202FF84 +_080C63B0: .4byte gFieldEffectArguments _080C63B4: .4byte gLastFieldPokeMenuOpened _080C63B8: .4byte gUnknown_081A2CE6 thumb_func_end sub_80C639C @@ -943,7 +943,7 @@ FldEff_SecretPowerCave: @ 80C63FC ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C6448 @ =gUnknown_0202FF84 + ldr r4, _080C6448 @ =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -963,7 +963,7 @@ FldEff_SecretPowerCave: @ 80C63FC _080C643C: .4byte gSpriteTemplate_83D2614 _080C6440: .4byte gSprites _080C6444: .4byte gPlayerAvatar -_080C6448: .4byte gUnknown_0202FF84 +_080C6448: .4byte gFieldEffectArguments thumb_func_end FldEff_SecretPowerCave thumb_func_start sub_80C644C @@ -1025,7 +1025,7 @@ sub_80C6498: @ 80C6498 thumb_func_start sub_80C64A8 sub_80C64A8: @ 80C64A8 push {lr} - ldr r1, _080C64BC @ =gUnknown_0202FF84 + ldr r1, _080C64BC @ =gFieldEffectArguments ldr r0, _080C64C0 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -1034,7 +1034,7 @@ sub_80C64A8: @ 80C64A8 pop {r0} bx r0 .align 2, 0 -_080C64BC: .4byte gUnknown_0202FF84 +_080C64BC: .4byte gFieldEffectArguments _080C64C0: .4byte gLastFieldPokeMenuOpened _080C64C4: .4byte gUnknown_081A2D3E thumb_func_end sub_80C64A8 @@ -1088,13 +1088,13 @@ FldEff_SecretPowerTree: @ 80C6508 ands r2, r0 cmp r2, 0x96 bne _080C652A - ldr r1, _080C6588 @ =gUnknown_0202FF84 + ldr r1, _080C6588 @ =gFieldEffectArguments movs r0, 0 str r0, [r1, 0x1C] _080C652A: cmp r2, 0x9C bne _080C6534 - ldr r1, _080C6588 @ =gUnknown_0202FF84 + ldr r1, _080C6588 @ =gFieldEffectArguments movs r0, 0x2 str r0, [r1, 0x1C] _080C6534: @@ -1110,7 +1110,7 @@ _080C6534: ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C6588 @ =gUnknown_0202FF84 + ldr r4, _080C6588 @ =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -1137,7 +1137,7 @@ _080C6576: .align 2, 0 _080C6580: .4byte gUnknown_0203923C _080C6584: .4byte 0x00000fff -_080C6588: .4byte gUnknown_0202FF84 +_080C6588: .4byte gFieldEffectArguments _080C658C: .4byte gSpriteTemplate_83D262C _080C6590: .4byte gSprites _080C6594: .4byte gPlayerAvatar @@ -1149,7 +1149,7 @@ sub_80C6598: @ 80C6598 adds r4, r0, 0 movs r0, 0x9B bl PlaySE - ldr r0, _080C65BC @ =gUnknown_0202FF84 + ldr r0, _080C65BC @ =gFieldEffectArguments ldr r1, [r0, 0x1C] adds r2, r4, 0 adds r2, 0x2A @@ -1162,7 +1162,7 @@ sub_80C6598: @ 80C6598 pop {r0} bx r0 .align 2, 0 -_080C65BC: .4byte gUnknown_0202FF84 +_080C65BC: .4byte gFieldEffectArguments _080C65C0: .4byte sub_80C65C4 thumb_func_end sub_80C6598 @@ -1177,7 +1177,7 @@ sub_80C65C4: @ 80C65C4 asrs r0, 16 cmp r0, 0x27 ble _080C65EE - ldr r0, _080C65F4 @ =gUnknown_0202FF84 + ldr r0, _080C65F4 @ =gFieldEffectArguments ldr r0, [r0, 0x1C] cmp r0, 0 beq _080C65E2 @@ -1195,7 +1195,7 @@ _080C65EE: pop {r0} bx r0 .align 2, 0 -_080C65F4: .4byte gUnknown_0202FF84 +_080C65F4: .4byte gFieldEffectArguments _080C65F8: .4byte sub_80C65FC thumb_func_end sub_80C65C4 @@ -1212,7 +1212,7 @@ sub_80C65FC: @ 80C65FC thumb_func_start sub_80C660C sub_80C660C: @ 80C660C push {lr} - ldr r1, _080C6620 @ =gUnknown_0202FF84 + ldr r1, _080C6620 @ =gFieldEffectArguments ldr r0, _080C6624 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -1221,7 +1221,7 @@ sub_80C660C: @ 80C660C pop {r0} bx r0 .align 2, 0 -_080C6620: .4byte gUnknown_0202FF84 +_080C6620: .4byte gFieldEffectArguments _080C6624: .4byte gLastFieldPokeMenuOpened _080C6628: .4byte gUnknown_081A2D96 thumb_func_end sub_80C660C @@ -1275,7 +1275,7 @@ FldEff_SecretPowerShrub: @ 80C666C ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C66B8 @ =gUnknown_0202FF84 + ldr r4, _080C66B8 @ =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -1295,7 +1295,7 @@ FldEff_SecretPowerShrub: @ 80C666C _080C66AC: .4byte gSpriteTemplate_83D2644 _080C66B0: .4byte gSprites _080C66B4: .4byte gPlayerAvatar -_080C66B8: .4byte gUnknown_0202FF84 +_080C66B8: .4byte gFieldEffectArguments thumb_func_end FldEff_SecretPowerShrub thumb_func_start sub_80C66BC @@ -2103,7 +2103,7 @@ FldEff_SandPillar: @ 80C6D3C mov r0, sp adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer - ldr r1, _080C6D78 @ =gUnknown_0202FF84 + ldr r1, _080C6D78 @ =gFieldEffectArguments mov r0, sp movs r2, 0 ldrsh r0, [r0, r2] @@ -2122,7 +2122,7 @@ FldEff_SandPillar: @ 80C6D3C beq _080C6D86 b _080C6E4C .align 2, 0 -_080C6D78: .4byte gUnknown_0202FF84 +_080C6D78: .4byte gFieldEffectArguments _080C6D7C: cmp r0, 0x3 beq _080C6DEC @@ -2240,7 +2240,7 @@ SpriteCB_SandPillar_0: @ 80C6E64 adds r5, r0, 0 movs r0, 0x83 bl PlaySE - ldr r4, _080C6E90 @ =gUnknown_0202FF84 + ldr r4, _080C6E90 @ =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] subs r1, 0x1 @@ -2255,7 +2255,7 @@ SpriteCB_SandPillar_0: @ 80C6E64 bl MapGridSetMetatileIdAt b _080C6EAA .align 2, 0 -_080C6E90: .4byte gUnknown_0202FF84 +_080C6E90: .4byte gFieldEffectArguments _080C6E94: .4byte 0x00000286 _080C6E98: .4byte 0x00000e02 _080C6E9C: @@ -2266,7 +2266,7 @@ _080C6E9C: lsls r2, 2 bl MapGridSetMetatileIdAt _080C6EAA: - ldr r4, _080C6ED8 @ =gUnknown_0202FF84 + ldr r4, _080C6ED8 @ =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] ldr r2, _080C6EDC @ =0x0000020a @@ -2286,7 +2286,7 @@ _080C6EAA: pop {r0} bx r0 .align 2, 0 -_080C6ED8: .4byte gUnknown_0202FF84 +_080C6ED8: .4byte gFieldEffectArguments _080C6EDC: .4byte 0x0000020a _080C6EE0: .4byte SpriteCB_SandPillar_1 thumb_func_end SpriteCB_SandPillar_0 @@ -2304,7 +2304,7 @@ SpriteCB_SandPillar_1: @ 80C6EE4 strh r0, [r5, 0x2E] b _080C6F14 _080C6EF8: - ldr r4, _080C6F1C @ =gUnknown_0202FF84 + ldr r4, _080C6F1C @ =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] ldr r2, _080C6F20 @ =0x00000e8c @@ -2321,7 +2321,7 @@ _080C6F14: pop {r0} bx r0 .align 2, 0 -_080C6F1C: .4byte gUnknown_0202FF84 +_080C6F1C: .4byte gFieldEffectArguments _080C6F20: .4byte 0x00000e8c _080C6F24: .4byte SpriteCB_SandPillar_2 thumb_func_end SpriteCB_SandPillar_1 diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s deleted file mode 100644 index 3ad85d7cf..000000000 --- a/asm/hall_of_fame.s +++ /dev/null @@ -1,3402 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8141E38 -sub_8141E38: @ 8141E38 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8141E38 - - thumb_func_start sub_8141E4C -sub_8141E4C: @ 8141E4C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8141E4C - - thumb_func_start sub_8141E64 -sub_8141E64: @ 8141E64 - push {r4,lr} - sub sp, 0x4 - ldr r0, _08141E80 @ =gMain - ldr r1, _08141E84 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _08141EA0 - lsls r0, 2 - ldr r1, _08141E88 @ =_08141E8C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08141E80: .4byte gMain -_08141E84: .4byte 0x0000043c -_08141E88: .4byte _08141E8C - .align 2, 0 -_08141E8C: - .4byte _08141EA0 - .4byte _08141EC0 - .4byte _08141EC6 - .4byte _08141F1C - .4byte _08141F58 -_08141EA0: - movs r0, 0 - bl SetVBlankCallback - bl sub_81433E0 - ldr r0, _08141EB8 @ =gMain - ldr r2, _08141EBC @ =0x0000043c - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - b _08141F84 - .align 2, 0 -_08141EB8: .4byte gMain -_08141EBC: .4byte 0x0000043c -_08141EC0: - bl sub_8143570 - b _08141F38 -_08141EC6: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _08141F04 @ =sub_8141E38 - bl SetVBlankCallback - ldr r3, _08141F08 @ =0x04000208 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _08141F0C @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _08141F10 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r1, _08141F14 @ =gMain - ldr r2, _08141F18 @ =0x0000043c - adds r1, r2 - b _08141F3E - .align 2, 0 -_08141F04: .4byte sub_8141E38 -_08141F08: .4byte 0x04000208 -_08141F0C: .4byte 0x04000200 -_08141F10: .4byte REG_DISPSTAT -_08141F14: .4byte gMain -_08141F18: .4byte 0x0000043c -_08141F1C: - ldr r1, _08141F48 @ =REG_BLDCNT - ldr r2, _08141F4C @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0xE2 - lsls r2, 3 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0 - strh r0, [r1] - bl sub_81435B8 -_08141F38: - ldr r1, _08141F50 @ =gMain - ldr r0, _08141F54 @ =0x0000043c - adds r1, r0 -_08141F3E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08141F84 - .align 2, 0 -_08141F48: .4byte REG_BLDCNT -_08141F4C: .4byte 0x00003f42 -_08141F50: .4byte gMain -_08141F54: .4byte 0x0000043c -_08141F58: - bl UpdatePaletteFade - ldr r0, _08141F7C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08141F84 - ldr r0, _08141F80 @ =sub_8141E4C - bl SetMainCallback2 - movs r0, 0xDA - lsls r0, 1 - bl PlayBGM - movs r0, 0 - b _08141F86 - .align 2, 0 -_08141F7C: .4byte gPaletteFade -_08141F80: .4byte sub_8141E4C -_08141F84: - movs r0, 0x1 -_08141F86: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8141E64 - - thumb_func_start sub_8141F90 -sub_8141F90: @ 8141F90 - push {r4,lr} - bl sub_8141E64 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08141FB6 - ldr r0, _08141FBC @ =sub_8141FF8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08141FC0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] -_08141FB6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08141FBC: .4byte sub_8141FF8 -_08141FC0: .4byte gTasks - thumb_func_end sub_8141F90 - - thumb_func_start sub_8141FC4 -sub_8141FC4: @ 8141FC4 - push {lr} - bl sub_8141E64 - lsls r0, 24 - cmp r0, 0 - bne _08141FEA - ldr r0, _08141FF0 @ =sub_8141FF8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08141FF4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0x8] -_08141FEA: - pop {r0} - bx r0 - .align 2, 0 -_08141FF0: .4byte sub_8141FF8 -_08141FF4: .4byte gTasks - thumb_func_end sub_8141FC4 - - thumb_func_start sub_8141FF8 -sub_8141FF8: @ 8141FF8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _081420C8 @ =0x0201c000 - mov r9, r0 - ldr r1, _081420CC @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - movs r7, 0 - ldr r4, _081420D0 @ =0xfffffe00 - mov r10, r4 -_08142024: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _081420D4 @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r3, r0, 0 - cmp r3, 0 - beq _081420DC - adds r0, r6, 0 - movs r1, 0x41 - bl GetMonData - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 2 - mov r1, r9 - adds r5, r1, r4 - ldr r2, _081420D8 @ =0x000001ff - adds r1, r2, 0 - ands r0, r1 - ldrh r1, [r5, 0x8] - mov r2, r10 - ands r1, r2 - orrs r1, r0 - strh r1, [r5, 0x8] - adds r0, r6, 0 - movs r1, 0x1 - bl GetMonData - str r0, [r5] - adds r0, r6, 0 - movs r1, 0 - bl GetMonData - mov r1, r9 - adds r1, 0x4 - adds r1, r4 - str r0, [r1] - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 1 - ldrb r2, [r5, 0x9] - movs r1, 0x1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x9] - adds r0, r6, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - movs r2, 0 - mov r6, r8 - lsls r5, r6, 2 - mov r3, r9 - adds r3, 0xA -_081420A0: - adds r1, r2, r4 - adds r1, r3, r1 - mov r6, sp - adds r0, r6, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9 - bls _081420A0 - ldr r0, _081420CC @ =gTasks - mov r2, r8 - adds r1, r5, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - adds r0, 0x1 - strh r0, [r1, 0xC] - b _08142108 - .align 2, 0 -_081420C8: .4byte 0x0201c000 -_081420CC: .4byte gTasks -_081420D0: .4byte 0xfffffe00 -_081420D4: .4byte gPlayerParty -_081420D8: .4byte 0x000001ff -_081420DC: - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 2 - mov r4, r9 - adds r2, r4, r1 - ldrh r0, [r2, 0x8] - mov r6, r10 - ands r0, r6 - strh r0, [r2, 0x8] - str r3, [r2] - mov r0, r9 - adds r0, 0x4 - adds r0, r1 - str r3, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0x1 - ands r0, r1 - strb r0, [r2, 0x9] - movs r0, 0xFF - strb r0, [r2, 0xA] - mov r0, r8 - lsls r5, r0, 2 -_08142108: - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0x5 - bls _08142024 - ldr r0, _08142158 @ =gUnknown_0203931C - movs r3, 0 - str r3, [r0] - ldr r4, _0814215C @ =gTasks - mov r2, r8 - adds r1, r5, r2 - lsls r1, 3 - adds r2, r1, r4 - strh r3, [r2, 0xA] - movs r0, 0xFF - strh r0, [r2, 0x10] - movs r7, 0 - adds r3, r4, 0 - adds r3, 0x8 - movs r2, 0xFF -_08142130: - adds r0, r7, 0x5 - lsls r0, 1 - adds r0, r1 - adds r0, r3 - strh r2, [r0] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0x5 - bls _08142130 - mov r6, r8 - adds r0, r5, r6 - lsls r0, 3 - adds r1, r0, r4 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _08142164 - ldr r0, _08142160 @ =sub_81422E8 - b _08142166 - .align 2, 0 -_08142158: .4byte gUnknown_0203931C -_0814215C: .4byte gTasks -_08142160: .4byte sub_81422E8 -_08142164: - ldr r0, _08142178 @ =sub_814217C -_08142166: - str r0, [r1] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08142178: .4byte sub_814217C - thumb_func_end sub_8141FF8 - - thumb_func_start sub_814217C -sub_814217C: @ 814217C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _081421C4 @ =0x0201c000 - mov r9, r0 - movs r7, 0x80 - lsls r7, 6 - add r7, r9 - ldr r0, _081421C8 @ =gUnknown_02039324 - ldrb r0, [r0] - cmp r0, 0 - bne _081421D4 - movs r4, 0 - mov r0, r8 - lsls r0, 2 - mov r10, r0 - ldr r5, _081421CC @ =0xfffe4000 - add r5, r9 - movs r3, 0xF0 - lsls r3, 9 - movs r2, 0 - ldr r1, _081421D0 @ =0x00001fff -_081421B2: - adds r0, r4, r3 - adds r0, r5 - strb r2, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r1 - bls _081421B2 - b _081421E0 - .align 2, 0 -_081421C4: .4byte 0x0201c000 -_081421C8: .4byte gUnknown_02039324 -_081421CC: .4byte 0xfffe4000 -_081421D0: .4byte 0x00001fff -_081421D4: - movs r0, 0x3 - bl sub_8125EC8 - mov r0, r8 - lsls r0, 2 - mov r10, r0 -_081421E0: - movs r4, 0 - ldrh r1, [r7, 0x8] - ldr r2, _081421E8 @ =0x000001ff - b _081421FA - .align 2, 0 -_081421E8: .4byte 0x000001ff -_081421EC: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r7, 0x78 - cmp r4, 0x31 - bhi _08142206 - ldrh r1, [r7, 0x8] -_081421FA: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _081421EC - cmp r4, 0x31 - bls _08142228 -_08142206: - ldr r5, _08142264 @ =0x0201e000 - adds r6, r5, 0 - adds r5, 0x78 - movs r4, 0 - subs r7, 0x78 -_08142210: - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x78 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r6, 0x78 - adds r5, 0x78 - cmp r4, 0x30 - bls _08142210 -_08142228: - adds r0, r7, 0 - mov r1, r9 - movs r2, 0x78 - bl memcpy - movs r0, 0x2 - movs r1, 0xE - movs r2, 0x1B - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08142268 @ =gMenuText_HOFSaving - movs r1, 0x3 - movs r2, 0xF - bl MenuPrint - ldr r1, _0814226C @ =gTasks - mov r0, r10 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _08142270 @ =sub_8142274 - str r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08142264: .4byte 0x0201e000 -_08142268: .4byte gMenuText_HOFSaving -_0814226C: .4byte gTasks -_08142270: .4byte sub_8142274 - thumb_func_end sub_814217C - - thumb_func_start sub_8142274 -sub_8142274: @ 8142274 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _081422A8 @ =gGameContinueCallback - ldr r0, _081422AC @ =sub_8141FC4 - str r0, [r1] - movs r0, 0x3 - bl TrySavingData - movs r0, 0x37 - bl PlaySE - ldr r1, _081422B0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _081422B4 @ =sub_81422B8 - str r1, [r0] - movs r1, 0x20 - strh r1, [r0, 0xE] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081422A8: .4byte gGameContinueCallback -_081422AC: .4byte sub_8141FC4 -_081422B0: .4byte gTasks -_081422B4: .4byte sub_81422B8 - thumb_func_end sub_8142274 - - thumb_func_start sub_81422B8 -sub_81422B8: @ 81422B8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081422D8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r2, [r1, 0xE] - movs r3, 0xE - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _081422DC - subs r0, r2, 0x1 - strh r0, [r1, 0xE] - b _081422E0 - .align 2, 0 -_081422D8: .4byte gTasks -_081422DC: - ldr r0, _081422E4 @ =sub_81422E8 - str r0, [r1] -_081422E0: - pop {r0} - bx r0 - .align 2, 0 -_081422E4: .4byte sub_81422E8 - thumb_func_end sub_81422B8 - - thumb_func_start sub_81422E8 -sub_81422E8: @ 81422E8 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _08142314 @ =gWindowConfig_81E7198 - adds r0, r5, 0 - bl SetUpWindowConfig - adds r0, r5, 0 - bl InitMenuWindow - ldr r1, _08142318 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0814231C @ =sub_8142320 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08142314: .4byte gWindowConfig_81E7198 -_08142318: .4byte gTasks -_0814231C: .4byte sub_8142320 - thumb_func_end sub_81422E8 - - thumb_func_start sub_8142320 -sub_8142320: @ 8142320 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _08142350 @ =0x0201c000 - ldr r0, _08142354 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldrh r6, [r1, 0xA] - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 2 - adds r4, r0, r2 - movs r2, 0xC - ldrsh r0, [r1, r2] - cmp r0, 0x3 - ble _0814235C - ldr r1, _08142358 @ =gUnknown_0840B534 - b _0814235E - .align 2, 0 -_08142350: .4byte 0x0201c000 -_08142354: .4byte gTasks -_08142358: .4byte gUnknown_0840B534 -_0814235C: - ldr r1, _081423F0 @ =gUnknown_0840B564 -_0814235E: - lsls r2, r6, 3 - adds r0, r2, r1 - ldrh r5, [r0] - adds r0, r1, 0x2 - adds r0, r2, r0 - ldrh r3, [r0] - adds r0, r1, 0x4 - adds r0, r2, r0 - ldrh r0, [r0] - mov r9, r0 - adds r1, 0x6 - adds r2, r1 - ldrh r2, [r2] - mov r8, r2 - ldrh r0, [r4, 0x8] - lsls r0, 23 - lsrs r0, 23 - lsls r1, r5, 16 - asrs r1, 16 - lsls r2, r3, 16 - asrs r2, 16 - ldr r3, [r4] - str r3, [sp] - ldr r3, [r4, 0x4] - str r3, [sp, 0x4] - adds r3, r6, 0 - bl sub_81436BC - lsls r0, 24 - lsrs r0, 24 - ldr r3, _081423F4 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r3 - movs r4, 0 - mov r5, r9 - strh r5, [r2, 0x30] - mov r5, r8 - strh r5, [r2, 0x32] - strh r4, [r2, 0x2E] - adds r3, 0x1C - adds r1, r3 - ldr r2, _081423F8 @ =sub_81435DC - str r2, [r1] - ldr r5, _081423FC @ =gTasks - adds r1, r6, 0x5 - lsls r1, 1 - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r1, r4 - adds r2, r5, 0 - adds r2, 0x8 - adds r1, r2 - strh r0, [r1] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r4, r5 - ldr r0, _08142400 @ =sub_8142404 - str r0, [r4] - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081423F0: .4byte gUnknown_0840B564 -_081423F4: .4byte gSprites -_081423F8: .4byte sub_81435DC -_081423FC: .4byte gTasks -_08142400: .4byte sub_8142404 - thumb_func_end sub_8142320 - - thumb_func_start sub_8142404 -sub_8142404: @ 8142404 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08142470 @ =0x0201c000 - ldr r3, _08142474 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r5, r2, r3 - ldrh r1, [r5, 0xA] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r6, r0, r4 - ldr r4, _08142478 @ =gSprites - adds r1, 0x5 - lsls r1, 1 - adds r1, r2 - adds r3, 0x8 - adds r1, r3 - movs r0, 0 - ldrsh r1, [r1, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2E - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _0814246A - ldrh r2, [r6, 0x8] - ldr r0, _0814247C @ =0x000001ff - ands r0, r2 - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08142458 - lsls r0, r2, 23 - lsrs r0, 23 - movs r1, 0 - bl PlayCry1 -_08142458: - adds r0, r6, 0 - movs r1, 0 - movs r2, 0xE - bl sub_8143088 - movs r0, 0x78 - strh r0, [r5, 0xE] - ldr r0, _08142480 @ =sub_8142484 - str r0, [r5] -_0814246A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08142470: .4byte 0x0201c000 -_08142474: .4byte gTasks -_08142478: .4byte gSprites -_0814247C: .4byte 0x000001ff -_08142480: .4byte sub_8142484 - thumb_func_end sub_8142404 - - thumb_func_start sub_8142484 -sub_8142484: @ 8142484 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _081424BC @ =0x0201c000 - ldr r1, _081424C0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - adds r4, r6, r1 - ldrh r3, [r4, 0xA] - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r2 - mov r9, r0 - ldrh r2, [r4, 0xE] - movs r7, 0xE - ldrsh r0, [r4, r7] - mov r12, r1 - cmp r0, 0 - beq _081424C4 - subs r0, r2, 0x1 - strh r0, [r4, 0xE] - b _0814255C - .align 2, 0 -_081424BC: .4byte 0x0201c000 -_081424C0: .4byte gTasks -_081424C4: - ldr r2, _0814253C @ =gUnknown_0203931C - ldr r0, _08142540 @ =gSprites - mov r8, r0 - adds r0, r3, 0x5 - lsls r0, 1 - adds r0, r6 - mov r1, r12 - adds r1, 0x8 - adds r6, r0, r1 - movs r7, 0 - ldrsh r1, [r6, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r0 - ldr r3, [r2] - orrs r3, r1 - str r3, [r2] - ldrh r2, [r4, 0xA] - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bgt _08142550 - mov r7, r9 - ldrh r1, [r7, 0x1C] - ldr r0, _08142544 @ =0x000001ff - ands r0, r1 - cmp r0, 0 - beq _08142550 - adds r0, r2, 0x1 - strh r0, [r4, 0xA] - ldr r0, _08142548 @ =0x0000735f - str r0, [sp] - adds r0, r3, 0 - movs r1, 0 - movs r2, 0xC - movs r3, 0xC - bl BeginNormalPaletteFade - movs r0, 0 - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r0, _0814254C @ =sub_8142320 - str r0, [r4] - b _0814255C - .align 2, 0 -_0814253C: .4byte gUnknown_0203931C -_08142540: .4byte gSprites -_08142544: .4byte 0x000001ff -_08142548: .4byte 0x0000735f -_0814254C: .4byte sub_8142320 -_08142550: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - add r0, r12 - ldr r1, _0814256C @ =sub_8142570 - str r1, [r0] -_0814255C: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814256C: .4byte sub_8142570 - thumb_func_end sub_8142484 - - thumb_func_start sub_8142570 -sub_8142570: @ 8142570 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08142604 @ =0xffff0000 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl BeginNormalPaletteFade - movs r3, 0 - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r5, r0, 3 - ldr r0, _08142608 @ =gTasks + 0x8 - mov r12, r0 - mov r8, r1 - ldr r6, _0814260C @ =gSprites - movs r7, 0xD - negs r7, r7 -_0814259E: - adds r0, r3, 0x5 - lsls r0, 1 - adds r0, r5 - mov r2, r12 - adds r1, r0, r2 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0xFF - beq _081425C0 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x5] - adds r0, r7, 0 - ands r0, r2 - strb r0, [r1, 0x5] -_081425C0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x5 - bls _0814259E - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xF - bl sub_8143068 - movs r0, 0x69 - bl PlaySE - ldr r1, _08142610 @ =gTasks - mov r2, r8 - adds r0, r2, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0xC8 - lsls r1, 1 - strh r1, [r0, 0xE] - ldr r1, _08142614 @ =sub_8142618 - str r1, [r0] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08142604: .4byte 0xffff0000 -_08142608: .4byte gTasks + 0x8 -_0814260C: .4byte gSprites -_08142610: .4byte gTasks -_08142614: .4byte sub_8142618 - thumb_func_end sub_8142570 - - thumb_func_start sub_8142618 -sub_8142618: @ 8142618 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _08142658 @ =gTasks - lsls r4, r6, 2 - adds r0, r4, r6 - lsls r5, r0, 3 - adds r1, r5, r7 - ldrh r2, [r1, 0xE] - movs r3, 0xE - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0814265C - subs r2, 0x1 - strh r2, [r1, 0xE] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0 - bne _081426D2 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x6E - ble _081426D2 - bl sub_81438C4 - b _081426D2 - .align 2, 0 -_08142658: .4byte gTasks -_0814265C: - movs r3, 0 - mov r9, r4 - ldr r0, _081426E4 @ =gUnknown_0203931C - mov r10, r0 - adds r4, r5, 0 - adds r7, 0x8 - mov r8, r7 - ldr r7, _081426E8 @ =gSprites - movs r1, 0xD - negs r1, r1 - mov r12, r1 - movs r5, 0x4 -_08142674: - adds r0, r3, 0x5 - lsls r0, 1 - adds r0, r4 - mov r2, r8 - adds r1, r0, r2 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0xFF - beq _08142698 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r2, [r1, 0x5] - mov r0, r12 - ands r0, r2 - orrs r0, r5 - strb r0, [r1, 0x5] -_08142698: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x5 - bls _08142674 - mov r3, r10 - ldr r0, [r3] - ldr r1, _081426EC @ =0x0000735f - str r1, [sp] - movs r1, 0 - movs r2, 0xC - movs r3, 0xC - bl BeginNormalPaletteFade - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _081426F0 @ =gTasks - mov r2, r9 - adds r0, r2, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0x7 - strh r1, [r0, 0xE] - ldr r1, _081426F4 @ =sub_81426F8 - str r1, [r0] -_081426D2: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081426E4: .4byte gUnknown_0203931C -_081426E8: .4byte gSprites -_081426EC: .4byte 0x0000735f -_081426F0: .4byte gTasks -_081426F4: .4byte sub_81426F8 - thumb_func_end sub_8142618 - - thumb_func_start sub_81426F8 -sub_81426F8: @ 81426F8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08142718 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r1, [r2, 0xE] - movs r3, 0xE - ldrsh r0, [r2, r3] - cmp r0, 0xF - ble _08142720 - ldr r0, _0814271C @ =sub_8142738 - str r0, [r2] - b _0814272E - .align 2, 0 -_08142718: .4byte gTasks -_0814271C: .4byte sub_8142738 -_08142720: - adds r0, r1, 0x1 - strh r0, [r2, 0xE] - ldr r1, _08142734 @ =REG_BLDALPHA - movs r3, 0xE - ldrsh r0, [r2, r3] - lsls r0, 8 - strh r0, [r1] -_0814272E: - pop {r0} - bx r0 - .align 2, 0 -_08142734: .4byte REG_BLDALPHA - thumb_func_end sub_81426F8 - - thumb_func_start sub_8142738 -sub_8142738: @ 8142738 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xCA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _08142784 @ =gWindowConfig_81E71B4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r0, _08142788 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - movs r1, 0x78 - movs r2, 0x48 - movs r3, 0x6 - bl sub_81437A4 - ldr r2, _0814278C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r2 - strh r0, [r1, 0x10] - movs r0, 0x78 - strh r0, [r1, 0xE] - ldr r0, _08142790 @ =sub_8142794 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08142784: .4byte gWindowConfig_81E71B4 -_08142788: .4byte gSaveBlock2 -_0814278C: .4byte gTasks -_08142790: .4byte sub_8142794 - thumb_func_end sub_8142738 - - thumb_func_start sub_8142794 -sub_8142794: @ 8142794 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081427B4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _081427B8 - subs r0, r1, 0x1 - strh r0, [r4, 0xE] - b _0814280A - .align 2, 0 -_081427B4: .4byte gTasks -_081427B8: - ldr r2, _081427D8 @ =gSprites - movs r3, 0x10 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldrh r2, [r1, 0x20] - movs r3, 0x20 - ldrsh r0, [r1, r3] - cmp r0, 0xA0 - beq _081427DC - adds r0, r2, 0x1 - strh r0, [r1, 0x20] - b _0814280A - .align 2, 0 -_081427D8: .4byte gSprites -_081427DC: - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0xF - movs r3, 0x9 - bl MenuDrawTextWindow - movs r0, 0x1 - movs r1, 0x2 - bl sub_8143300 - movs r0, 0x2 - movs r1, 0xE - movs r2, 0x1B - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08142810 @ =gMenuText_HOFCongratulations - movs r1, 0x4 - movs r2, 0xF - bl MenuPrint - ldr r0, _08142814 @ =sub_8142818 - str r0, [r4] -_0814280A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08142810: .4byte gMenuText_HOFCongratulations -_08142814: .4byte sub_8142818 - thumb_func_end sub_8142794 - - thumb_func_start sub_8142818 -sub_8142818: @ 8142818 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08142844 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0814283E - movs r0, 0x4 - bl FadeOutBGM - ldr r0, _08142848 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0814284C @ =sub_8142850 - str r0, [r1] -_0814283E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08142844: .4byte gMain -_08142848: .4byte gTasks -_0814284C: .4byte sub_8142850 - thumb_func_end sub_8142818 - - thumb_func_start sub_8142850 -sub_8142850: @ 8142850 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08142890 @ =gPlttBufferFaded - ldr r1, _08142894 @ =gPlttBufferUnfaded - movs r2, 0x80 - lsls r2, 2 - bl CpuSet - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r1, 0x8 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08142898 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0814289C @ =sub_81428A0 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08142890: .4byte gPlttBufferFaded -_08142894: .4byte gPlttBufferUnfaded -_08142898: .4byte gTasks -_0814289C: .4byte sub_81428A0 - thumb_func_end sub_8142850 - - thumb_func_start sub_81428A0 -sub_81428A0: @ 81428A0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _081428C4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081428BE - adds r0, r2, 0 - bl DestroyTask - ldr r0, _081428C8 @ =sub_81439D0 - bl SetMainCallback2 -_081428BE: - pop {r0} - bx r0 - .align 2, 0 -_081428C4: .4byte gPaletteFade -_081428C8: .4byte sub_81439D0 - thumb_func_end sub_81428A0 - - thumb_func_start sub_81428CC -sub_81428CC: @ 81428CC - push {r4,r5,lr} - ldr r0, _081428E4 @ =gMain - ldr r1, _081428E8 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _08142908 - lsls r0, 2 - ldr r1, _081428EC @ =_081428F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081428E4: .4byte gMain -_081428E8: .4byte 0x0000043c -_081428EC: .4byte _081428F0 - .align 2, 0 -_081428F0: - .4byte _08142908 - .4byte _08142928 - .4byte _0814293C - .4byte _08142980 - .4byte _081429C0 - .4byte _081429EC -_08142908: - movs r0, 0 - bl SetVBlankCallback - bl sub_81433E0 - ldr r0, _08142920 @ =gMain - ldr r2, _08142924 @ =0x0000043c - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - b _08142A12 - .align 2, 0 -_08142920: .4byte gMain -_08142924: .4byte 0x0000043c -_08142928: - bl sub_8143570 - ldr r1, _08142934 @ =gMain - ldr r3, _08142938 @ =0x0000043c - adds r1, r3 - b _081429DC - .align 2, 0 -_08142934: .4byte gMain -_08142938: .4byte 0x0000043c -_0814293C: - ldr r0, _08142968 @ =sub_8141E38 - bl SetVBlankCallback - ldr r3, _0814296C @ =0x04000208 - ldrh r2, [r3] - movs r0, 0 - strh r0, [r3] - ldr r4, _08142970 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _08142974 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r1, _08142978 @ =gMain - ldr r4, _0814297C @ =0x0000043c - adds r1, r4 - b _081429DC - .align 2, 0 -_08142968: .4byte sub_8141E38 -_0814296C: .4byte 0x04000208 -_08142970: .4byte 0x04000200 -_08142974: .4byte REG_DISPSTAT -_08142978: .4byte gMain -_0814297C: .4byte 0x0000043c -_08142980: - ldr r0, _081429AC @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl sub_81435B8 - ldr r0, _081429B0 @ =0x0201c000 - adds r2, r0, 0 - ldr r1, _081429B4 @ =gUnknown_0840B57C - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3,r5} - stm r2!, {r3,r5} - bl sub_80C5CD4 - ldr r1, _081429B8 @ =gMain - ldr r4, _081429BC @ =0x0000043c - adds r1, r4 - b _081429DC - .align 2, 0 -_081429AC: .4byte REG_BLDCNT -_081429B0: .4byte 0x0201c000 -_081429B4: .4byte gUnknown_0840B57C -_081429B8: .4byte gMain -_081429BC: .4byte 0x0000043c -_081429C0: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - bl sub_80C5DCC - lsls r0, 24 - cmp r0, 0 - beq _08142A12 - ldr r1, _081429E4 @ =gMain - ldr r5, _081429E8 @ =0x0000043c - adds r1, r5 -_081429DC: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08142A12 - .align 2, 0 -_081429E4: .4byte gMain -_081429E8: .4byte 0x0000043c -_081429EC: - ldr r1, _08142A18 @ =REG_BLDCNT - ldr r2, _08142A1C @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0xE2 - lsls r3, 3 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0 - strh r0, [r1] - ldr r0, _08142A20 @ =sub_8142A28 - movs r1, 0 - bl CreateTask - ldr r0, _08142A24 @ =sub_8141E4C - bl SetMainCallback2 -_08142A12: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08142A18: .4byte REG_BLDCNT -_08142A1C: .4byte 0x00003f42 -_08142A20: .4byte sub_8142A28 -_08142A24: .4byte sub_8141E4C - thumb_func_end sub_81428CC - - thumb_func_start sub_8142A28 -sub_8142A28: @ 8142A28 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x3 - bl sub_8125EC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08142A54 - ldr r0, _08142A4C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _08142A50 @ =sub_8142FEC - str r0, [r1] - b _08142AEA - .align 2, 0 -_08142A4C: .4byte gTasks -_08142A50: .4byte sub_8142FEC -_08142A54: - ldr r2, _08142A8C @ =0x0201e000 - movs r3, 0 - ldrh r1, [r2, 0x8] - ldr r4, _08142A90 @ =0x000001ff - adds r0, r4, 0 - ands r0, r1 - ldr r7, _08142A94 @ =gTasks - lsls r6, r5, 2 - cmp r0, 0 - beq _08142A7E -_08142A68: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - adds r2, 0x78 - cmp r3, 0x31 - bhi _08142A98 - ldrh r1, [r2, 0x8] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _08142A68 -_08142A7E: - cmp r3, 0x31 - bhi _08142A98 - adds r0, r6, r5 - lsls r0, 3 - adds r0, r7 - subs r1, r3, 0x1 - b _08142AA0 - .align 2, 0 -_08142A8C: .4byte 0x0201e000 -_08142A90: .4byte 0x000001ff -_08142A94: .4byte gTasks -_08142A98: - adds r0, r6, r5 - lsls r0, 3 - adds r0, r7 - movs r1, 0x31 -_08142AA0: - strh r1, [r0, 0x8] - movs r0, 0xA - bl GetGameStat - ldr r2, _08142AF0 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r2 - strh r0, [r1, 0xA] - movs r3, 0 - ldr r7, _08142AF4 @ =0x0600381a - ldr r4, _08142AF8 @ =0x0600385a -_08142AB8: - lsls r1, r3, 1 - adds r2, r1, r7 - adds r0, r3, 0x3 - strh r0, [r2] - adds r1, r4 - adds r0, 0x11 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x10 - bls _08142AB8 - ldr r4, _08142AFC @ =gWindowConfig_81E7198 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _08142AF0 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08142B00 @ =sub_8142B04 - str r1, [r0] -_08142AEA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08142AF0: .4byte gTasks -_08142AF4: .4byte 0x0600381a -_08142AF8: .4byte 0x0600385a -_08142AFC: .4byte gWindowConfig_81E7198 -_08142B00: .4byte sub_8142B04 - thumb_func_end sub_8142A28 - - thumb_func_start sub_8142B04 -sub_8142B04: @ 8142B04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r3, _08142BB8 @ =0x0201e000 - movs r5, 0 - ldr r1, _08142BBC @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - ldr r2, _08142BC0 @ =gUnknown_0203931C - cmp r5, r0 - bge _08142B3E - adds r1, r0, 0 -_08142B32: - adds r3, 0x78 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r1 - blt _08142B32 -_08142B3E: - adds r4, r3, 0 - movs r0, 0 - str r0, [r2] - mov r5, r8 - lsls r2, r5, 2 - adds r1, r2, r5 - lsls r1, 3 - adds r1, r6 - strh r0, [r1, 0xC] - strh r0, [r1, 0x10] - movs r5, 0 - str r2, [sp, 0xC] - ldr r6, _08142BC4 @ =0x000001ff - adds r2, r1, 0 -_08142B5A: - ldrh r1, [r4, 0x8] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _08142B6A - ldrh r0, [r2, 0x10] - adds r0, 0x1 - strh r0, [r2, 0x10] -_08142B6A: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r4, 0x14 - cmp r5, 0x5 - bls _08142B5A - adds r4, r3, 0 - movs r5, 0 - ldr r1, _08142BBC @ =gTasks - ldr r0, [sp, 0xC] - add r0, r8 - lsls r7, r0, 3 - adds r6, r7, r1 - str r6, [sp, 0x8] - adds r1, 0x8 - mov r9, r1 - ldr r0, _08142BC8 @ =gUnknown_0840B564 - mov r10, r0 -_08142B8E: - ldrh r1, [r4, 0x8] - ldr r2, _08142BC4 @ =0x000001ff - adds r0, r2, 0 - ands r0, r1 - adds r6, r1, 0 - cmp r0, 0 - beq _08142C30 - ldr r1, [sp, 0x8] - movs r2, 0x10 - ldrsh r0, [r1, r2] - cmp r0, 0x3 - ble _08142BD4 - lsls r1, r5, 3 - ldr r0, _08142BCC @ =gUnknown_0840B534 - adds r0, 0x4 - adds r0, r1, r0 - ldrh r3, [r0] - ldr r0, _08142BD0 @ =gUnknown_0840B534 + 0x6 - adds r1, r0 - b _08142BE2 - .align 2, 0 -_08142BB8: .4byte 0x0201e000 -_08142BBC: .4byte gTasks -_08142BC0: .4byte gUnknown_0203931C -_08142BC4: .4byte 0x000001ff -_08142BC8: .4byte gUnknown_0840B564 -_08142BCC: .4byte gUnknown_0840B534 -_08142BD0: .4byte gUnknown_0840B534 + 0x6 -_08142BD4: - lsls r1, r5, 3 - mov r0, r10 - adds r0, 0x4 - adds r0, r1, r0 - ldrh r3, [r0] - ldr r2, _08142C28 @ =gUnknown_0840B564 + 0x6 - adds r1, r2 -_08142BE2: - ldrh r2, [r1] - lsls r0, r6, 23 - lsrs r0, 23 - lsls r1, r3, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - ldr r3, [r4] - str r3, [sp] - ldr r3, [r4, 0x4] - str r3, [sp, 0x4] - adds r3, r5, 0 - bl sub_81436BC - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08142C2C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r3, [r1, 0x5] - movs r6, 0xD - negs r6, r6 - adds r2, r6, 0 - ands r3, r2 - movs r2, 0x4 - orrs r3, r2 - strb r3, [r1, 0x5] - adds r1, r5, 0x5 - lsls r1, 1 - adds r1, r7 - add r1, r9 - strh r0, [r1] - b _08142C3C - .align 2, 0 -_08142C28: .4byte gUnknown_0840B564 + 0x6 -_08142C2C: .4byte gSprites -_08142C30: - adds r0, r5, 0x5 - lsls r0, 1 - adds r0, r7 - add r0, r9 - movs r1, 0xFF - strh r1, [r0] -_08142C3C: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r4, 0x14 - cmp r5, 0x5 - bls _08142B8E - ldr r0, _08142CB0 @ =0xffff0000 - ldr r2, _08142CB4 @ =0x0000735f - movs r1, 0xC - bl BlendPalettes - ldr r3, _08142CB8 @ =gStringVar1 - ldr r1, _08142CBC @ =gMenuText_HOFNumber - adds r0, r3, 0 - bl StringCopy - adds r3, r0, 0 - movs r5, 0xFC - strb r5, [r3] - movs r0, 0x14 - strb r0, [r3, 0x1] - movs r0, 0x6 - strb r0, [r3, 0x2] - adds r3, 0x3 - ldr r0, _08142CC0 @ =gTasks - ldr r4, [sp, 0xC] - add r4, r8 - lsls r4, 3 - adds r4, r0 - movs r0, 0xA - ldrsh r1, [r4, r0] - adds r0, r3, 0 - bl ConvertIntToDecimalString - adds r3, r0, 0 - strb r5, [r3] - movs r0, 0x13 - strb r0, [r3, 0x1] - movs r0, 0xF0 - strb r0, [r3, 0x2] - movs r0, 0xFF - strb r0, [r3, 0x3] - ldr r0, _08142CB8 @ =gStringVar1 - movs r1, 0 - movs r2, 0 - bl MenuPrint - ldr r0, _08142CC4 @ =sub_8142CC8 - str r0, [r4] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08142CB0: .4byte 0xffff0000 -_08142CB4: .4byte 0x0000735f -_08142CB8: .4byte gStringVar1 -_08142CBC: .4byte gMenuText_HOFNumber -_08142CC0: .4byte gTasks -_08142CC4: .4byte sub_8142CC8 - thumb_func_end sub_8142B04 - - thumb_func_start sub_8142CC8 -sub_8142CC8: @ 8142CC8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08142DD0 @ =0x0201e000 - mov r8, r0 - movs r3, 0 - ldr r1, _08142DD4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - cmp r3, r0 - bge _08142CFE - adds r1, r0, 0 -_08142CF0: - movs r0, 0x78 - add r8, r0 - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r1 - blt _08142CF0 -_08142CFE: - movs r3, 0 - lsls r6, r4, 2 - adds r0, r6, r4 - lsls r5, r0, 3 - ldr r1, _08142DD8 @ =gTasks + 0x8 - mov r10, r1 - ldr r2, _08142DDC @ =gSprites - mov r12, r2 - movs r0, 0xD - negs r0, r0 - mov r9, r0 - movs r7, 0x4 -_08142D16: - adds r0, r3, 0x5 - lsls r0, 1 - adds r0, r5 - add r0, r10 - ldrh r1, [r0] - cmp r1, 0xFF - beq _08142D36 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r2, [r0, 0x5] - mov r1, r9 - ands r1, r2 - orrs r1, r7 - strb r1, [r0, 0x5] -_08142D36: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x5 - bls _08142D16 - adds r1, r6, r4 - lsls r1, 3 - ldr r2, _08142DD4 @ =gTasks - adds r5, r1, r2 - movs r2, 0xC - ldrsh r0, [r5, r2] - adds r0, 0x5 - lsls r0, 1 - adds r0, r1 - ldr r1, _08142DD4 @ =gTasks - adds r1, 0x8 - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08142DDC @ =gSprites - adds r0, r1 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - strb r1, [r0, 0x5] - lsrs r1, 4 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r1 - ldr r1, _08142DE0 @ =0xffff0000 - eors r0, r1 - ldr r2, _08142DE4 @ =gUnknown_0203931C - str r0, [r2] - ldr r2, _08142DE8 @ =0x0000735f - movs r1, 0xC - bl BlendPalettesUnfaded - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - mov r1, r8 - adds r4, r1, r0 - ldrh r1, [r4, 0x8] - ldr r0, _08142DEC @ =0x000001ff - ands r0, r1 - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08142DB2 - bl StopCryAndClearCrySongs - ldrh r0, [r4, 0x8] - lsls r0, 23 - lsrs r0, 23 - movs r1, 0 - bl PlayCry1 -_08142DB2: - adds r0, r4, 0 - movs r1, 0 - movs r2, 0xE - bl sub_8143088 - ldr r0, _08142DF0 @ =sub_8142DF4 - str r0, [r5] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08142DD0: .4byte 0x0201e000 -_08142DD4: .4byte gTasks -_08142DD8: .4byte gTasks + 0x8 -_08142DDC: .4byte gSprites -_08142DE0: .4byte 0xffff0000 -_08142DE4: .4byte gUnknown_0203931C -_08142DE8: .4byte 0x0000735f -_08142DEC: .4byte 0x000001ff -_08142DF0: .4byte sub_8142DF4 - thumb_func_end sub_8142CC8 - - thumb_func_start sub_8142DF4 -sub_8142DF4: @ 8142DF4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08142E88 @ =gMain - ldrh r2, [r1, 0x2E] - movs r0, 0x1 - ands r0, r2 - adds r3, r1, 0 - cmp r0, 0 - beq _08142EC4 - ldr r7, _08142E8C @ =gTasks - lsls r0, r6, 2 - adds r1, r0, r6 - lsls r3, r1, 3 - adds r4, r3, r7 - ldrh r2, [r4, 0x8] - movs r5, 0x8 - ldrsh r1, [r4, r5] - mov r8, r0 - cmp r1, 0 - beq _08142E98 - subs r0, r2, 0x1 - strh r0, [r4, 0x8] - movs r5, 0 - adds r7, 0x8 - mov r9, r7 - adds r7, r3, 0 -_08142E30: - adds r0, r5, 0x5 - lsls r0, 1 - adds r0, r7 - add r0, r9 - ldrb r1, [r0] - cmp r1, 0xFF - beq _08142E5E - ldr r0, _08142E90 @ =gSprites - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - adds r4, r0 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - bl GetSpritePaletteTagByPaletteNum - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - adds r0, r4, 0 - bl DestroySprite -_08142E5E: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _08142E30 - ldr r0, _08142E8C @ =gTasks - mov r2, r8 - adds r1, r2, r6 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _08142E80 - subs r0, r2, 0x1 - strh r0, [r1, 0xA] -_08142E80: - ldr r0, _08142E94 @ =sub_8142B04 - str r0, [r1] - b _08142F64 - .align 2, 0 -_08142E88: .4byte gMain -_08142E8C: .4byte gTasks -_08142E90: .4byte gSprites -_08142E94: .4byte sub_8142B04 -_08142E98: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _08142EB2 - bl StopCryAndClearCrySongs - ldr r0, _08142EB8 @ =gMPlay_BGM - ldr r1, _08142EBC @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_08142EB2: - ldr r0, _08142EC0 @ =sub_8142F78 - str r0, [r4] - b _08142F64 - .align 2, 0 -_08142EB8: .4byte gMPlay_BGM -_08142EBC: .4byte 0x0000ffff -_08142EC0: .4byte sub_8142F78 -_08142EC4: - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _08142F08 - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _08142EE6 - bl StopCryAndClearCrySongs - ldr r0, _08142EF8 @ =gMPlay_BGM - ldr r1, _08142EFC @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_08142EE6: - ldr r0, _08142F00 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _08142F04 @ =sub_8142F78 - str r0, [r1] - b _08142F64 - .align 2, 0 -_08142EF8: .4byte gMPlay_BGM -_08142EFC: .4byte 0x0000ffff -_08142F00: .4byte gTasks -_08142F04: .4byte sub_8142F78 -_08142F08: - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - beq _08142F38 - ldr r0, _08142F30 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xC] - movs r4, 0xC - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _08142F38 - subs r0, r2, 0x1 - strh r0, [r1, 0xC] - ldr r0, _08142F34 @ =sub_8142CC8 - str r0, [r1] - b _08142F64 - .align 2, 0 -_08142F30: .4byte gTasks -_08142F34: .4byte sub_8142CC8 -_08142F38: - ldrh r1, [r3, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08142F64 - ldr r1, _08142F70 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r2, r0, r1 - movs r5, 0xC - ldrsh r1, [r2, r5] - movs r3, 0x10 - ldrsh r0, [r2, r3] - subs r0, 0x1 - cmp r1, r0 - bge _08142F64 - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - ldr r0, _08142F74 @ =sub_8142CC8 - str r0, [r2] -_08142F64: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08142F70: .4byte gTasks -_08142F74: .4byte sub_8142CC8 - thumb_func_end sub_8142DF4 - - thumb_func_start sub_8142F78 -sub_8142F78: @ 8142F78 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08142FB4 @ =gPlttBufferFaded - ldr r1, _08142FB8 @ =gPlttBufferUnfaded - movs r2, 0x80 - lsls r2, 2 - bl CpuSet - ldr r0, _08142FBC @ =0x0201c000 - adds r2, r0, 0 - ldr r1, _08142FC0 @ =gUnknown_0840B57C - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5} - stm r2!, {r3,r5} - bl sub_80C5E38 - ldr r1, _08142FC4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08142FC8 @ =sub_8142FCC - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08142FB4: .4byte gPlttBufferFaded -_08142FB8: .4byte gPlttBufferUnfaded -_08142FBC: .4byte 0x0201c000 -_08142FC0: .4byte gUnknown_0840B57C -_08142FC4: .4byte gTasks -_08142FC8: .4byte sub_8142FCC - thumb_func_end sub_8142F78 - - thumb_func_start sub_8142FCC -sub_8142FCC: @ 8142FCC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80C5F98 - lsls r0, 24 - cmp r0, 0 - beq _08142FE6 - adds r0, r4, 0 - bl DestroyTask - bl ReturnFromHallOfFamePC -_08142FE6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8142FCC - - thumb_func_start sub_8142FEC -sub_8142FEC: @ 8142FEC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0xE - movs r2, 0x1B - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08143020 @ =gMenuText_HOFCorrupt - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - ldr r1, _08143024 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08143028 @ =sub_814302C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08143020: .4byte gMenuText_HOFCorrupt -_08143024: .4byte gTasks -_08143028: .4byte sub_814302C - thumb_func_end sub_8142FEC - - thumb_func_start sub_814302C -sub_814302C: @ 814302C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08143056 - ldr r0, _0814305C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08143056 - ldr r0, _08143060 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08143064 @ =sub_8142F78 - str r0, [r1] -_08143056: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0814305C: .4byte gMain -_08143060: .4byte gTasks -_08143064: .4byte sub_8142F78 - thumb_func_end sub_814302C - - thumb_func_start sub_8143068 -sub_8143068: @ 8143068 - push {lr} - lsls r2, r1, 24 - ldr r0, _08143084 @ =gMenuText_WelcomeToHOFAndDexRating - movs r1, 0x80 - lsls r1, 17 - adds r2, r1 - lsrs r2, 24 - movs r1, 0 - movs r3, 0xF0 - bl sub_8072BD8 - pop {r0} - bx r0 - .align 2, 0 -_08143084: .4byte gMenuText_WelcomeToHOFAndDexRating - thumb_func_end sub_8143068 - - thumb_func_start sub_8143088 -sub_8143088: @ 8143088 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - ldr r7, _08143188 @ =gStringVar1 - movs r0, 0xFC - strb r0, [r7] - movs r0, 0x13 - strb r0, [r7, 0x1] - movs r0, 0x28 - strb r0, [r7, 0x2] - movs r0, 0xFF - strb r0, [r7, 0x3] - mov r0, r9 - ldrh r2, [r0, 0x8] - ldr r0, _0814318C @ =0x000001ff - ands r0, r2 - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _081430EA - lsls r0, r2, 23 - lsrs r0, 23 - bl SpeciesToPokedexNum - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _08143190 @ =0x0000ffff - cmp r6, r0 - beq _081430EA - ldr r1, _08143194 @ =gOtherText_Number2 - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - adds r1, r6, 0 - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN -_081430EA: - ldr r5, _08143188 @ =gStringVar1 - mov r1, r8 - adds r1, 0x4 - lsls r1, 24 - lsrs r1, 24 - mov r4, r10 - adds r4, 0x1 - lsls r2, r4, 24 - lsrs r2, 24 - adds r0, r5, 0 - bl MenuPrint - adds r7, r5, 0 - movs r3, 0 - mov r1, r9 - ldrb r0, [r1, 0xA] - str r4, [sp] - mov r2, r8 - adds r2, 0x9 - str r2, [sp, 0xC] - mov r6, r10 - adds r6, 0x3 - str r6, [sp, 0x8] - cmp r0, 0xFF - beq _0814313A - mov r2, r9 - adds r2, 0xA -_08143120: - adds r1, r7, r3 - adds r0, r2, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x9 - bhi _0814313A - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08143120 -_0814313A: - adds r7, r3 - movs r2, 0xFF - strb r2, [r7] - mov r1, r9 - ldrh r0, [r1, 0x8] - ldr r1, _0814318C @ =0x000001ff - ands r1, r0 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bne _08143198 - movs r0, 0xFC - strb r0, [r7] - movs r0, 0x13 - strb r0, [r7, 0x1] - movs r0, 0xA0 - strb r0, [r7, 0x2] - strb r2, [r7, 0x3] - ldr r0, _08143188 @ =gStringVar1 - ldr r2, [sp, 0xC] - lsls r1, r2, 24 - lsrs r1, 24 - ldr r3, [sp] - lsls r2, r3, 24 - lsrs r2, 24 - bl MenuPrint - ldr r6, [sp, 0x8] - lsls r1, r6, 24 - lsrs r1, 24 - mov r3, r10 - adds r3, 0x4 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - movs r2, 0x1D - bl MenuZeroFillWindowRect - b _081432E4 - .align 2, 0 -_08143188: .4byte gStringVar1 -_0814318C: .4byte 0x000001ff -_08143190: .4byte 0x0000ffff -_08143194: .4byte gOtherText_Number2 -_08143198: - movs r0, 0xFC - strb r0, [r7] - movs r0, 0x13 - strb r0, [r7, 0x1] - movs r0, 0x3E - strb r0, [r7, 0x2] - adds r7, 0x3 - movs r0, 0xBA - strb r0, [r7] - adds r7, 0x1 - movs r3, 0 - ldr r2, _08143238 @ =gSpeciesNames - mov r1, r9 - ldrh r0, [r1, 0x8] - lsls r0, 23 - lsrs r0, 23 - movs r1, 0xB - muls r0, r1 - adds r0, r2 - ldrb r0, [r0] - mov r6, r8 - adds r6, 0x7 - str r6, [sp, 0x4] - mov r1, r8 - adds r1, 0xD - str r1, [sp, 0x10] - cmp r0, 0xFF - beq _08143204 - adds r5, r2, 0 - movs r4, 0xB -_081431D4: - adds r1, r7, r3 - mov r6, r9 - ldrh r0, [r6, 0x8] - lsls r0, 23 - lsrs r0, 23 - muls r0, r4 - adds r0, r3, r0 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x9 - bhi _08143204 - ldrh r0, [r6, 0x8] - lsls r0, 23 - lsrs r0, 23 - muls r0, r4 - adds r0, r3, r0 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0xFF - bne _081431D4 -_08143204: - adds r7, r3 - movs r0, 0 - strb r0, [r7] - adds r7, 0x1 - mov r1, r9 - ldrh r0, [r1, 0x8] - ldr r1, _0814323C @ =0x000001ff - ands r1, r0 - cmp r1, 0x20 - beq _0814324A - cmp r1, 0x1D - beq _0814324A - lsls r0, 23 - lsrs r0, 23 - mov r2, r9 - ldr r1, [r2, 0x4] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08143240 - cmp r0, 0xFE - beq _08143244 - b _0814324A - .align 2, 0 -_08143238: .4byte gSpeciesNames -_0814323C: .4byte 0x000001ff -_08143240: - movs r0, 0xB5 - b _08143246 -_08143244: - movs r0, 0xB6 -_08143246: - strb r0, [r7] - adds r7, 0x1 -_0814324A: - movs r4, 0xFC - strb r4, [r7] - movs r3, 0x13 - mov r8, r3 - strb r3, [r7, 0x1] - movs r0, 0xA0 - strb r0, [r7, 0x2] - movs r6, 0xFF - mov r10, r6 - strb r6, [r7, 0x3] - ldr r5, _081432F4 @ =gStringVar1 - ldr r0, [sp, 0xC] - lsls r1, r0, 24 - lsrs r1, 24 - ldr r3, [sp] - lsls r2, r3, 24 - lsrs r2, 24 - adds r0, r5, 0 - bl MenuPrint - mov r6, r9 - ldrb r0, [r6, 0x9] - lsrs r6, r0, 1 - ldr r1, _081432F8 @ =gOtherText_Level3 - adds r0, r5, 0 - bl StringCopy - adds r7, r0, 0 - strb r4, [r7] - movs r0, 0x14 - strb r0, [r7, 0x1] - movs r0, 0x6 - strb r0, [r7, 0x2] - adds r7, 0x3 - adds r0, r7, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r7, r0, 0 - strb r4, [r7] - mov r0, r8 - strb r0, [r7, 0x1] - movs r0, 0x30 - strb r0, [r7, 0x2] - mov r1, r10 - strb r1, [r7, 0x3] - ldr r2, [sp, 0x4] - lsls r1, r2, 24 - lsrs r1, 24 - ldr r3, [sp, 0x8] - lsls r4, r3, 24 - lsrs r4, 24 - adds r0, r5, 0 - adds r2, r4, 0 - bl MenuPrint - mov r0, r9 - ldrh r6, [r0] - ldr r1, _081432FC @ =gOtherText_IDNumber - adds r0, r5, 0 - bl StringCopy - adds r7, r0, 0 - adds r1, r6, 0 - movs r2, 0x2 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - ldr r2, [sp, 0x10] - lsls r1, r2, 24 - lsrs r1, 24 - adds r0, r5, 0 - adds r2, r4, 0 - bl MenuPrint -_081432E4: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081432F4: .4byte gStringVar1 -_081432F8: .4byte gOtherText_Level3 -_081432FC: .4byte gOtherText_IDNumber - thumb_func_end sub_8143088 - - thumb_func_start sub_8143300 -sub_8143300: @ 8143300 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r5, 24 - lsls r4, 24 - ldr r0, _081433CC @ =gOtherText_Name - lsrs r1, r5, 24 - mov r8, r1 - movs r2, 0x80 - lsls r2, 17 - adds r5, r2 - lsrs r5, 24 - lsrs r6, r4, 24 - adds r4, r2 - lsrs r4, 24 - adds r1, r5, 0 - adds r2, r4, 0 - bl MenuPrint - ldr r0, _081433D0 @ =gSaveBlock2 - mov r10, r0 - movs r1, 0xE - add r8, r1 - mov r2, r8 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - mov r1, r8 - adds r2, r4, 0 - bl MenuPrint_RightAligned - ldr r0, _081433D4 @ =gOtherText_IDNumber2 - adds r4, r6, 0x3 - lsls r4, 24 - lsrs r4, 24 - adds r1, r5, 0 - adds r2, r4, 0 - bl MenuPrint - mov r0, r10 - ldrb r1, [r0, 0xA] - ldrb r0, [r0, 0xB] - lsls r0, 8 - orrs r1, r0 - ldr r2, _081433D8 @ =gStringVar1 - mov r9, r2 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - mov r0, r9 - mov r1, r8 - adds r2, r4, 0 - bl MenuPrint_RightAligned - ldr r0, _081433DC @ =gMainMenuString_Time - adds r6, 0x5 - lsls r6, 24 - lsrs r6, 24 - adds r1, r5, 0 - adds r2, r6, 0 - bl MenuPrint - mov r0, r10 - ldrh r1, [r0, 0xE] - mov r0, r9 - bl ConvertIntToDecimalString - adds r2, r0, 0 - movs r1, 0 - strb r1, [r2] - movs r0, 0xF0 - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - adds r2, 0x3 - mov r0, r10 - ldrb r1, [r0, 0x10] - adds r0, r2, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r2, r0, 0 - movs r0, 0xFF - strb r0, [r2] - mov r0, r9 - mov r1, r8 - adds r2, r6, 0 - bl MenuPrint_RightAligned - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081433CC: .4byte gOtherText_Name -_081433D0: .4byte gSaveBlock2 -_081433D4: .4byte gOtherText_IDNumber2 -_081433D8: .4byte gStringVar1 -_081433DC: .4byte gMainMenuString_Time - thumb_func_end sub_8143300 - - thumb_func_start sub_81433E0 -sub_81433E0: @ 81433E0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - movs r0, 0x80 - lsls r0, 19 - movs r1, 0 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x8 - strh r1, [r0] - adds r0, 0xA - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0xA - strh r1, [r0] - adds r0, 0xC - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0xC - strh r1, [r0] - adds r0, 0xE - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - ldr r1, _0814354C @ =gHallOfFame_Gfx - mov r9, r1 - mov r2, sp - movs r6, 0 - ldr r1, _08143550 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _08143554 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_08143444: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _08143444 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _08143550 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xC0 - lsls r1, 19 - mov r0, r9 - bl LZ77UnCompVram - movs r1, 0 - ldr r3, _08143558 @ =0x06003800 - movs r2, 0x1 -_081434B2: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3F - bls _081434B2 - movs r1, 0 - ldr r5, _0814355C @ =0x02000000 - ldr r3, _08143560 @ =0x06003b80 - movs r2, 0x1 -_081434CA: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xBF - bls _081434CA - movs r1, 0 - ldr r4, _08143564 @ =0x06003000 - movs r3, 0x2 - ldr r2, _08143568 @ =0x000003ff -_081434E2: - lsls r0, r1, 1 - adds r0, r4 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bls _081434E2 - adds r2, r5, 0 - movs r3, 0x80 - lsls r3, 7 - mov r4, sp - movs r6, 0 - ldr r1, _08143550 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _08143554 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0814350A: - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r5 - subs r3, r5 - cmp r3, r5 - bhi _0814350A - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - ldr r0, _0814356C @ =gHallOfFame_Pal - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814354C: .4byte gHallOfFame_Gfx -_08143550: .4byte 0x040000d4 -_08143554: .4byte 0x81000800 -_08143558: .4byte 0x06003800 -_0814355C: .4byte 0x02000000 -_08143560: .4byte 0x06003b80 -_08143564: .4byte 0x06003000 -_08143568: .4byte 0x000003ff -_0814356C: .4byte gHallOfFame_Pal - thumb_func_end sub_81433E0 - - thumb_func_start sub_8143570 -sub_8143570: @ 8143570 - push {r4,lr} - bl remove_some_task - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _081435A8 @ =gReservedSpritePaletteCount - movs r0, 0x8 - strb r0, [r1] - ldr r0, _081435AC @ =gUnknown_0840B514 - bl LoadCompressedObjectPic - ldr r0, _081435B0 @ =gUnknown_0840B524 - bl LoadCompressedObjectPalette - ldr r4, _081435B4 @ =gWindowConfig_81E71B4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081435A8: .4byte gReservedSpritePaletteCount -_081435AC: .4byte gUnknown_0840B514 -_081435B0: .4byte gUnknown_0840B524 -_081435B4: .4byte gWindowConfig_81E71B4 - thumb_func_end sub_8143570 - - thumb_func_start sub_81435B8 -sub_81435B8: @ 81435B8 - ldr r1, _081435D8 @ =REG_BG1CNT - movs r2, 0xE0 - lsls r2, 3 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - subs r2, 0xFD - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xE - movs r2, 0xDA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_081435D8: .4byte REG_BG1CNT - thumb_func_end sub_81435B8 - - thumb_func_start sub_81435DC -sub_81435DC: @ 81435DC - push {r4,lr} - adds r2, r0, 0 - ldr r1, [r2, 0x20] - ldr r0, [r2, 0x30] - cmp r1, r0 - beq _08143632 - ldrh r3, [r2, 0x20] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r4, 0x30 - ldrsh r1, [r2, r4] - cmp r0, r1 - bge _081435FC - adds r0, r3, 0 - adds r0, 0xF - strh r0, [r2, 0x20] -_081435FC: - ldrh r3, [r2, 0x20] - movs r4, 0x20 - ldrsh r0, [r2, r4] - cmp r0, r1 - ble _0814360C - adds r0, r3, 0 - subs r0, 0xF - strh r0, [r2, 0x20] -_0814360C: - ldrh r3, [r2, 0x22] - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r4, 0x32 - ldrsh r1, [r2, r4] - cmp r0, r1 - bge _08143620 - adds r0, r3, 0 - adds r0, 0xA - strh r0, [r2, 0x22] -_08143620: - ldrh r3, [r2, 0x22] - movs r4, 0x22 - ldrsh r0, [r2, r4] - cmp r0, r1 - ble _0814363A - adds r0, r3, 0 - subs r0, 0xA - strh r0, [r2, 0x22] - b _0814363A -_08143632: - movs r0, 0x1 - strh r0, [r2, 0x2E] - ldr r0, _08143640 @ =nullsub_81 - str r0, [r2, 0x1C] -_0814363A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08143640: .4byte nullsub_81 - thumb_func_end sub_81435DC - - thumb_func_start nullsub_81 -nullsub_81: @ 8143644 - bx lr - thumb_func_end nullsub_81 - - thumb_func_start sub_8143648 -sub_8143648: @ 8143648 - push {r4-r7,lr} - lsls r1, 24 - ldr r4, _08143670 @ =gUnknown_02024E8C - adds r3, r4, 0 - ldr r2, _08143674 @ =gUnknown_0840B6B8 - ldm r2!, {r5-r7} - stm r3!, {r5-r7} - ldm r2!, {r5-r7} - stm r3!, {r5-r7} - strh r0, [r4, 0x2] - ldr r0, _08143678 @ =gUnknown_0840B69C - lsrs r1, 22 - adds r1, r0 - ldr r0, [r1] - str r0, [r4, 0xC] - ldr r0, _0814367C @ =gSpriteAnimTable_81E7C64 - str r0, [r4, 0x8] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08143670: .4byte gUnknown_02024E8C -_08143674: .4byte gUnknown_0840B6B8 -_08143678: .4byte gUnknown_0840B69C -_0814367C: .4byte gSpriteAnimTable_81E7C64 - thumb_func_end sub_8143648 - - thumb_func_start sub_8143680 -sub_8143680: @ 8143680 - push {r4-r7,lr} - lsls r1, 24 - ldr r4, _081436AC @ =gUnknown_02024E8C - adds r3, r4, 0 - ldr r2, _081436B0 @ =gUnknown_0840B6B8 - ldm r2!, {r5-r7} - stm r3!, {r5-r7} - ldm r2!, {r5-r7} - stm r3!, {r5-r7} - strh r0, [r4, 0x2] - ldr r0, _081436B4 @ =gUnknown_0840B69C - lsrs r1, 22 - adds r1, r0 - ldr r0, [r1] - str r0, [r4, 0xC] - ldr r0, _081436B8 @ =gUnknown_081EC2A4 - ldr r0, [r0] - str r0, [r4, 0x8] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081436AC: .4byte gUnknown_02024E8C -_081436B0: .4byte gUnknown_0840B6B8 -_081436B4: .4byte gUnknown_0840B69C -_081436B8: .4byte gUnknown_081EC2A4 - thumb_func_end sub_8143680 - - thumb_func_start sub_81436BC -sub_81436BC: @ 81436BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r6, r0, 0 - mov r9, r1 - mov r10, r2 - mov r8, r3 - ldr r7, [sp, 0x34] - lsls r6, 16 - lsrs r6, 16 - mov r0, r9 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - mov r1, r10 - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - mov r2, r8 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - lsls r0, r6, 3 - ldr r1, _08143790 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08143794 @ =gMonFrontPicCoords - lsls r2, r6, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08143798 @ =gUnknown_0840B5A0 - mov r12, r4 - mov r5, r8 - lsls r4, r5, 2 - add r4, r12 - ldr r4, [r4] - str r4, [sp] - str r6, [sp, 0x4] - str r7, [sp, 0x8] - movs r4, 0x1 - str r4, [sp, 0xC] - bl LoadSpecialPokePic - adds r0, r6, 0 - ldr r1, [sp, 0x30] - adds r2, r7, 0 - bl species_and_otid_get_pal - lsls r4, r5, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r4, r2 - lsls r1, 16 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - lsls r1, r5, 24 - lsrs r1, 24 - mov r0, r8 - bl sub_8143648 - ldr r0, _0814379C @ =gUnknown_02024E8C - mov r5, r9 - lsls r5, 16 - asrs r5, 16 - mov r9, r5 - mov r1, r10 - lsls r1, 16 - asrs r1, 16 - mov r10, r1 - movs r3, 0xA - mov r2, r8 - subs r3, r2 - lsls r3, 24 - lsrs r3, 24 - mov r1, r9 - mov r2, r10 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081437A0 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r4 - strb r1, [r2, 0x5] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08143790: .4byte gMonFrontPicTable -_08143794: .4byte gMonFrontPicCoords -_08143798: .4byte gUnknown_0840B5A0 -_0814379C: .4byte gUnknown_02024E8C -_081437A0: .4byte gSprites - thumb_func_end sub_81436BC - - thumb_func_start sub_81437A4 -sub_81437A4: @ 81437A4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r9, r1 - mov r10, r2 - adds r6, r3, 0 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r2, 16 - lsrs r2, 16 - mov r10, r2 - lsls r6, 16 - lsrs r6, 16 - lsls r7, r0, 3 - ldr r1, _08143854 @ =gTrainerFrontPicTable - mov r8, r1 - add r8, r7 - ldr r1, _08143858 @ =gTrainerFrontPicCoords - lsls r2, r0, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r5, _0814385C @ =gUnknown_0840B5A0 - lsls r4, r6, 2 - adds r4, r5 - ldr r4, [r4] - str r4, [sp] - str r0, [sp, 0x4] - mov r0, r8 - bl DecompressPicFromTable_2 - ldr r0, _08143860 @ =gTrainerFrontPicPaletteTable - adds r0, r7, r0 - ldr r0, [r0] - lsls r4, r6, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r4, r2 - lsls r1, 16 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - lsls r1, r6, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8143680 - ldr r0, _08143864 @ =gUnknown_02024E8C - mov r1, r9 - lsls r1, 16 - asrs r1, 16 - mov r9, r1 - mov r2, r10 - lsls r2, 16 - asrs r2, 16 - mov r10, r2 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08143868 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r4 - strb r1, [r2, 0x5] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08143854: .4byte gTrainerFrontPicTable -_08143858: .4byte gTrainerFrontPicCoords -_0814385C: .4byte gUnknown_0840B5A0 -_08143860: .4byte gTrainerFrontPicPaletteTable -_08143864: .4byte gUnknown_02024E8C -_08143868: .4byte gSprites - thumb_func_end sub_81437A4 - - thumb_func_start sub_814386C -sub_814386C: @ 814386C - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x26] - movs r2, 0x26 - ldrsh r0, [r5, r2] - cmp r0, 0x78 - ble _08143882 - adds r0, r5, 0 - bl DestroySprite - b _081438BA -_08143882: - adds r0, r1, 0x1 - ldrh r1, [r5, 0x30] - adds r0, r1 - strh r0, [r5, 0x26] - ldrh r4, [r5, 0x2E] - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r0, 0x8 - ldr r1, _081438C0 @ =gSineTable - lsls r4, 1 - adds r4, r1 - movs r2, 0 - ldrsh r1, [r4, r2] - muls r0, r1 - cmp r0, 0 - bge _081438B0 - adds r0, 0xFF -_081438B0: - asrs r0, 8 - strh r0, [r5, 0x24] - ldrh r0, [r5, 0x2E] - adds r0, 0x4 - strh r0, [r5, 0x2E] -_081438BA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081438C0: .4byte gSineTable - thumb_func_end sub_814386C - - thumb_func_start sub_81438C4 -sub_81438C4: @ 81438C4 - push {r4,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF0 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl Random - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x7 - ands r2, r0 - negs r2, r2 - ldr r0, _08143934 @ =gSpriteTemplate_840B7A4 - lsls r4, 16 - asrs r4, 16 - lsls r2, 16 - asrs r2, 16 - adds r1, r4, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08143938 @ =gSprites - adds r4, r1, r0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x11 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - bl Random - movs r1, 0x3 - ands r1, r0 - cmp r1, 0 - beq _0814393C - movs r0, 0 - b _0814393E - .align 2, 0 -_08143934: .4byte gSpriteTemplate_840B7A4 -_08143938: .4byte gSprites -_0814393C: - movs r0, 0x1 -_0814393E: - strh r0, [r4, 0x30] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81438C4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/intro_credits_graphics.s b/asm/intro_credits_graphics.s deleted file mode 100644 index 8d73f6cf6..000000000 --- a/asm/intro_credits_graphics.s +++ /dev/null @@ -1,1166 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start load_intro_part2_graphics -load_intro_part2_graphics: @ 8148B8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08148BE8 @ =gUnknown_0841225C - ldr r1, _08148BEC @ =0x06004000 - bl LZ77UnCompVram - ldr r0, _08148BF0 @ =gUnknown_084126DC - ldr r1, _08148BF4 @ =0x06007800 - bl LZ77UnCompVram - ldr r0, _08148BF8 @ =gUnknown_084121FC - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - cmp r4, 0 - beq _08148BB4 - cmp r4, 0x1 - beq _08148C14 -_08148BB4: - ldr r0, _08148BFC @ =gUnknown_084128D8 - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _08148C00 @ =gUnknown_08412EB4 - ldr r1, _08148C04 @ =0x06003000 - bl LZ77UnCompVram - ldr r0, _08148C08 @ =gUnknown_08412818 - movs r1, 0 - movs r2, 0x60 - bl LoadPalette - ldr r0, _08148C0C @ =gUnknown_08416B54 - bl LoadCompressedObjectPic - ldr r0, _08148C10 @ =gUnknown_08413184 - movs r1, 0x80 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - bl sub_8149248 - b _08148C46 - .align 2, 0 -_08148BE8: .4byte gUnknown_0841225C -_08148BEC: .4byte 0x06004000 -_08148BF0: .4byte gUnknown_084126DC -_08148BF4: .4byte 0x06007800 -_08148BF8: .4byte gUnknown_084121FC -_08148BFC: .4byte gUnknown_084128D8 -_08148C00: .4byte gUnknown_08412EB4 -_08148C04: .4byte 0x06003000 -_08148C08: .4byte gUnknown_08412818 -_08148C0C: .4byte gUnknown_08416B54 -_08148C10: .4byte gUnknown_08413184 -_08148C14: - ldr r0, _08148C58 @ =gUnknown_08413340 - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _08148C5C @ =gUnknown_084139C8 - ldr r1, _08148C60 @ =0x06003000 - bl LZ77UnCompVram - ldr r0, _08148C64 @ =gUnknown_08413300 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08148C68 @ =gUnknown_08416BDC - bl LoadCompressedObjectPic - ldr r0, _08148C6C @ =gUnknown_08413CCC - movs r1, 0x80 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - bl sub_8149264 -_08148C46: - ldr r1, _08148C70 @ =gUnknown_0203935C - movs r0, 0 - strh r0, [r1] - ldr r1, _08148C74 @ =gReservedSpritePaletteCount - movs r0, 0x8 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08148C58: .4byte gUnknown_08413340 -_08148C5C: .4byte gUnknown_084139C8 -_08148C60: .4byte 0x06003000 -_08148C64: .4byte gUnknown_08413300 -_08148C68: .4byte gUnknown_08416BDC -_08148C6C: .4byte gUnknown_08413CCC -_08148C70: .4byte gUnknown_0203935C -_08148C74: .4byte gReservedSpritePaletteCount - thumb_func_end load_intro_part2_graphics - - thumb_func_start sub_8148C78 -sub_8148C78: @ 8148C78 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08148CA4 @ =REG_BG3CNT - ldr r2, _08148CA8 @ =0x00000603 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - adds r2, 0xFF - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _08148CAC @ =0x00000f05 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - movs r2, 0xF2 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08148CA4: .4byte REG_BG3CNT -_08148CA8: .4byte 0x00000603 -_08148CAC: .4byte 0x00000f05 - thumb_func_end sub_8148C78 - - thumb_func_start sub_8148CB0 -sub_8148CB0: @ 8148CB0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08148CD4 @ =gUnknown_0841225C - ldr r1, _08148CD8 @ =0x06004000 - bl LZ77UnCompVram - ldr r0, _08148CDC @ =gUnknown_084126DC - ldr r1, _08148CE0 @ =0x06007800 - bl LZ77UnCompVram - cmp r4, 0x4 - bhi _08148CFC - lsls r0, r4, 2 - ldr r1, _08148CE4 @ =_08148CE8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08148CD4: .4byte gUnknown_0841225C -_08148CD8: .4byte 0x06004000 -_08148CDC: .4byte gUnknown_084126DC -_08148CE0: .4byte 0x06007800 -_08148CE4: .4byte _08148CE8 - .align 2, 0 -_08148CE8: - .4byte _08148CFC - .4byte _08148D58 - .4byte _08148DC4 - .4byte _08148DC4 - .4byte _08148E1C -_08148CFC: - ldr r0, _08148D34 @ =gUnknown_084121FC - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08148D38 @ =gUnknown_084128D8 - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _08148D3C @ =gUnknown_08412EB4 - ldr r1, _08148D40 @ =0x06003000 - bl LZ77UnCompVram - ldr r0, _08148D44 @ =gUnknown_08412818 - movs r1, 0 - movs r2, 0x60 - bl LoadPalette - ldr r0, _08148D48 @ =gUnknown_08416B54 - bl LoadCompressedObjectPic - ldr r0, _08148D4C @ =gUnknown_084131C4 - ldr r1, _08148D50 @ =0x06010000 - bl LZ77UnCompVram - ldr r0, _08148D54 @ =gUnknown_08413184 - b _08148D8E - .align 2, 0 -_08148D34: .4byte gUnknown_084121FC -_08148D38: .4byte gUnknown_084128D8 -_08148D3C: .4byte gUnknown_08412EB4 -_08148D40: .4byte 0x06003000 -_08148D44: .4byte gUnknown_08412818 -_08148D48: .4byte gUnknown_08416B54 -_08148D4C: .4byte gUnknown_084131C4 -_08148D50: .4byte 0x06010000 -_08148D54: .4byte gUnknown_08413184 -_08148D58: - ldr r0, _08148DA0 @ =gUnknown_0841221C - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08148DA4 @ =gUnknown_084128D8 - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _08148DA8 @ =gUnknown_08412EB4 - ldr r1, _08148DAC @ =0x06003000 - bl LZ77UnCompVram - ldr r0, _08148DB0 @ =gUnknown_08412878 - movs r1, 0 - movs r2, 0x60 - bl LoadPalette - ldr r0, _08148DB4 @ =gUnknown_08416B54 - bl LoadCompressedObjectPic - ldr r0, _08148DB8 @ =gUnknown_084131C4 - ldr r1, _08148DBC @ =0x06010000 - bl LZ77UnCompVram - ldr r0, _08148DC0 @ =gUnknown_084131A4 -_08148D8E: - movs r1, 0x80 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - bl sub_8149248 - b _08148E58 - .align 2, 0 -_08148DA0: .4byte gUnknown_0841221C -_08148DA4: .4byte gUnknown_084128D8 -_08148DA8: .4byte gUnknown_08412EB4 -_08148DAC: .4byte 0x06003000 -_08148DB0: .4byte gUnknown_08412878 -_08148DB4: .4byte gUnknown_08416B54 -_08148DB8: .4byte gUnknown_084131C4 -_08148DBC: .4byte 0x06010000 -_08148DC0: .4byte gUnknown_084131A4 -_08148DC4: - ldr r0, _08148E04 @ =gUnknown_0841221C - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08148E08 @ =gUnknown_08413340 - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _08148E0C @ =gUnknown_084139C8 - ldr r1, _08148E10 @ =0x06003000 - bl LZ77UnCompVram - ldr r4, _08148E14 @ =gUnknown_08413320 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08148E18 @ =gUnknown_08416BDC - bl LoadCompressedObjectPic - movs r1, 0x80 - lsls r1, 1 - adds r0, r4, 0 - movs r2, 0x20 - bl LoadPalette - bl sub_8149264 - b _08148E58 - .align 2, 0 -_08148E04: .4byte gUnknown_0841221C -_08148E08: .4byte gUnknown_08413340 -_08148E0C: .4byte gUnknown_084139C8 -_08148E10: .4byte 0x06003000 -_08148E14: .4byte gUnknown_08413320 -_08148E18: .4byte gUnknown_08416BDC -_08148E1C: - ldr r0, _08148E6C @ =gUnknown_0841223C - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08148E70 @ =gUnknown_08413E78 - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _08148E74 @ =gUnknown_08414084 - ldr r1, _08148E78 @ =0x06003000 - bl LZ77UnCompVram - ldr r0, _08148E7C @ =gUnknown_08413E38 - movs r1, 0 - movs r2, 0x40 - bl LoadPalette - ldr r0, _08148E80 @ =gUnknown_08416C70 - bl LoadCompressedObjectPic - ldr r0, _08148E84 @ =gUnknown_08414064 - movs r1, 0x80 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - bl sub_8149280 -_08148E58: - ldr r1, _08148E88 @ =gReservedSpritePaletteCount - movs r0, 0x8 - strb r0, [r1] - ldr r1, _08148E8C @ =gUnknown_0203935C - movs r0, 0 - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08148E6C: .4byte gUnknown_0841223C -_08148E70: .4byte gUnknown_08413E78 -_08148E74: .4byte gUnknown_08414084 -_08148E78: .4byte 0x06003000 -_08148E7C: .4byte gUnknown_08413E38 -_08148E80: .4byte gUnknown_08416C70 -_08148E84: .4byte gUnknown_08414064 -_08148E88: .4byte gReservedSpritePaletteCount -_08148E8C: .4byte gUnknown_0203935C - thumb_func_end sub_8148CB0 - - thumb_func_start sub_8148E90 -sub_8148E90: @ 8148E90 - ldr r1, _08148EB4 @ =REG_BG3CNT - ldr r2, _08148EB8 @ =0x00000603 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - adds r2, 0xFF - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _08148EBC @ =0x00000f05 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_08148EB4: .4byte REG_BG3CNT -_08148EB8: .4byte 0x00000603 -_08148EBC: .4byte 0x00000f05 - thumb_func_end sub_8148E90 - - thumb_func_start sub_8148EC0 -sub_8148EC0: @ 8148EC0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - mov r8, r2 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - lsrs r6, 16 - mov r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r3, 16 - lsrs r3, 16 - ldr r1, _08148F34 @ =sub_8148F3C - mov r9, r1 - mov r0, r9 - movs r1, 0 - str r3, [sp] - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _08148F38 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - strh r5, [r0, 0x8] - strh r6, [r0, 0xA] - strh r2, [r0, 0xC] - strh r2, [r0, 0xE] - mov r1, r8 - strh r1, [r0, 0x10] - strh r2, [r0, 0x12] - strh r2, [r0, 0x14] - ldr r3, [sp] - strh r3, [r0, 0x16] - movs r1, 0x8 - strh r1, [r0, 0x18] - strh r2, [r0, 0x1A] - adds r0, r4, 0 - bl _call_via_r9 - adds r0, r4, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08148F34: .4byte sub_8148F3C -_08148F38: .4byte gTasks - thumb_func_end sub_8148EC0 - - thumb_func_start sub_8148F3C -sub_8148F3C: @ 8148F3C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08148FB4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r1 - ldrh r0, [r3, 0xA] - lsls r4, r0, 16 - adds r6, r1, 0 - cmp r4, 0 - beq _08148F7C - movs r1, 0xC - ldrsh r0, [r3, r1] - lsls r0, 16 - ldrh r1, [r3, 0xE] - adds r2, r0, r1 - lsrs r0, r4, 12 - subs r2, r0 - asrs r1, r2, 16 - strh r1, [r3, 0xC] - strh r2, [r3, 0xE] - ldr r0, _08148FB8 @ =REG_BG1HOFS - strh r1, [r0] - ldr r2, _08148FBC @ =REG_BG1VOFS - ldr r1, _08148FC0 @ =gUnknown_02039358 - ldr r0, _08148FC4 @ =gUnknown_0203935A - ldrh r0, [r0] - ldrh r1, [r1] - adds r0, r1 - strh r0, [r2] -_08148F7C: - ldrh r0, [r3, 0x10] - lsls r4, r0, 16 - cmp r4, 0 - beq _08148FD8 - movs r1, 0x12 - ldrsh r0, [r3, r1] - lsls r0, 16 - ldrh r1, [r3, 0x14] - adds r2, r0, r1 - lsrs r0, r4, 12 - subs r2, r0 - asrs r1, r2, 16 - strh r1, [r3, 0x12] - strh r2, [r3, 0x14] - ldr r0, _08148FC8 @ =REG_BG2HOFS - strh r1, [r0] - movs r1, 0x8 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _08148FD0 - ldr r2, _08148FCC @ =REG_BG2VOFS - ldr r1, _08148FC0 @ =gUnknown_02039358 - ldr r0, _08148FC4 @ =gUnknown_0203935A - ldrh r0, [r0] - ldrh r1, [r1] - adds r0, r1 - strh r0, [r2] - b _08148FD8 - .align 2, 0 -_08148FB4: .4byte gTasks -_08148FB8: .4byte REG_BG1HOFS -_08148FBC: .4byte REG_BG1VOFS -_08148FC0: .4byte gUnknown_02039358 -_08148FC4: .4byte gUnknown_0203935A -_08148FC8: .4byte REG_BG2HOFS -_08148FCC: .4byte REG_BG2VOFS -_08148FD0: - ldr r0, _08149010 @ =REG_BG2VOFS - ldr r1, _08149014 @ =gUnknown_02039358 - ldrh r1, [r1] - strh r1, [r0] -_08148FD8: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r6 - ldrh r0, [r3, 0x16] - lsls r4, r0, 16 - cmp r4, 0 - beq _08149008 - movs r1, 0x18 - ldrsh r0, [r3, r1] - lsls r0, 16 - ldrh r1, [r3, 0x1A] - adds r2, r0, r1 - lsrs r0, r4, 12 - subs r2, r0 - asrs r1, r2, 16 - strh r1, [r3, 0x18] - strh r2, [r3, 0x1A] - ldr r0, _08149018 @ =REG_BG3HOFS - strh r1, [r0] - ldr r1, _0814901C @ =REG_BG3VOFS - ldr r0, _08149014 @ =gUnknown_02039358 - ldrh r0, [r0] - strh r0, [r1] -_08149008: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149010: .4byte REG_BG2VOFS -_08149014: .4byte gUnknown_02039358 -_08149018: .4byte REG_BG3HOFS -_0814901C: .4byte REG_BG3VOFS - thumb_func_end sub_8148F3C - - thumb_func_start sub_8149020 -sub_8149020: @ 8149020 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08149100 - cmp r0, 0x1 - ble _08149034 - cmp r0, 0x2 - beq _08149098 -_08149034: - ldr r0, _08149060 @ =gMain - ldr r2, [r0, 0x20] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0 - bne _08149100 - ldr r0, _08149064 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08149100 - movs r0, 0x4 - ands r2, r0 - cmp r2, 0 - beq _0814906C - ldr r2, _08149068 @ =gPlttBufferUnfaded - ldrh r1, [r2, 0x12] - mov r0, sp - strh r1, [r0] - ldrh r1, [r2, 0x14] - b _08149076 - .align 2, 0 -_08149060: .4byte gMain -_08149064: .4byte gPaletteFade -_08149068: .4byte gPlttBufferUnfaded -_0814906C: - ldr r2, _08149094 @ =gPlttBufferUnfaded - ldrh r1, [r2, 0x14] - mov r0, sp - strh r1, [r0] - ldrh r1, [r2, 0x12] -_08149076: - adds r0, 0x2 - strh r1, [r0] - adds r4, r0, 0 - mov r0, sp - movs r1, 0x9 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0xA - movs r2, 0x2 - bl LoadPalette - b _08149100 - .align 2, 0 -_08149094: .4byte gPlttBufferUnfaded -_08149098: - ldr r0, _081490C8 @ =gMain - ldr r2, [r0, 0x20] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0 - bne _08149100 - ldr r0, _081490CC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08149100 - movs r0, 0x4 - ands r2, r0 - cmp r2, 0 - beq _081490D8 - mov r1, sp - ldr r2, _081490D0 @ =0x00003d27 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _081490D4 @ =0x00000295 - b _081490E6 - .align 2, 0 -_081490C8: .4byte gMain -_081490CC: .4byte gPaletteFade -_081490D0: .4byte 0x00003d27 -_081490D4: .4byte 0x00000295 -_081490D8: - mov r1, sp - movs r2, 0xC7 - lsls r2, 2 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _08149108 @ =0x00003d27 -_081490E6: - adds r0, r2, 0 - strh r0, [r1] - adds r4, r1, 0 - mov r0, sp - movs r1, 0xC - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0xD - movs r2, 0x2 - bl LoadPalette -_08149100: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08149108: .4byte 0x00003d27 - thumb_func_end sub_8149020 - - thumb_func_start sub_814910C -sub_814910C: @ 814910C - push {lr} - adds r2, r0, 0 - ldr r0, _08149124 @ =gUnknown_0203935C - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08149128 - adds r0, r2, 0 - bl DestroySprite - b _0814916C - .align 2, 0 -_08149124: .4byte gUnknown_0203935C -_08149128: - movs r1, 0x20 - ldrsh r0, [r2, r1] - lsls r0, 16 - ldrh r1, [r2, 0x32] - orrs r0, r1 - ldrh r1, [r2, 0x30] - adds r0, r1 - asrs r1, r0, 16 - strh r1, [r2, 0x20] - strh r0, [r2, 0x32] - cmp r1, 0xFF - ble _08149144 - ldr r0, _08149158 @ =0x0000ffe0 - strh r0, [r2, 0x20] -_08149144: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _08149164 - ldr r1, _0814915C @ =gUnknown_02039358 - ldr r0, _08149160 @ =gUnknown_0203935A - ldrh r0, [r0] - ldrh r1, [r1] - adds r0, r1 - b _08149168 - .align 2, 0 -_08149158: .4byte 0x0000ffe0 -_0814915C: .4byte gUnknown_02039358 -_08149160: .4byte gUnknown_0203935A -_08149164: - ldr r0, _08149170 @ =gUnknown_02039358 - ldrh r0, [r0] -_08149168: - negs r0, r0 - strh r0, [r2, 0x26] -_0814916C: - pop {r0} - bx r0 - .align 2, 0 -_08149170: .4byte gUnknown_02039358 - thumb_func_end sub_814910C - - thumb_func_start sub_8149174 -sub_8149174: @ 8149174 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - str r1, [sp, 0x4] - str r2, [sp, 0x8] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - movs r7, 0 - cmp r7, r8 - bcs _0814922A - ldr r0, _0814923C @ =gSprites - mov r10, r0 - movs r2, 0x3F - mov r9, r2 -_0814919E: - lsls r6, r7, 3 - ldr r0, [sp, 0x4] - adds r6, r0 - ldrb r1, [r6, 0x1] - ldrb r2, [r6, 0x2] - ldrb r3, [r6, 0x3] - ldr r0, _08149240 @ =gSpriteTemplate_8416B3C - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - mov r2, r10 - adds r4, r5, r2 - ldrb r2, [r6] - lsls r1, r2, 26 - lsrs r1, 30 - lsrs r2, 6 - adds r0, r4, 0 - movs r3, 0 - bl CalcCenterToCornerVec - ldrb r3, [r4, 0x5] - movs r0, 0xC - orrs r3, r0 - strb r3, [r4, 0x5] - ldrb r1, [r6] - lsls r1, 26 - lsrs r1, 30 - lsls r1, 6 - ldrb r2, [r4, 0x1] - mov r0, r9 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r6] - lsrs r1, 6 - lsls r1, 6 - ldrb r2, [r4, 0x3] - mov r0, r9 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - movs r0, 0xF - ands r3, r0 - strb r3, [r4, 0x5] - ldr r0, _08149244 @ =gSprites + 0x8 - adds r5, r0 - ldr r2, [sp, 0x8] - str r2, [r5] - ldrb r1, [r6] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl StartSpriteAnim - movs r1, 0 - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x2E] - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x30] - strh r1, [r4, 0x32] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, r8 - bcc _0814919E -_0814922A: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814923C: .4byte gSprites -_08149240: .4byte gSpriteTemplate_8416B3C -_08149244: .4byte gSprites + 0x8 - thumb_func_end sub_8149174 - - thumb_func_start sub_8149248 -sub_8149248: @ 8149248 - push {lr} - ldr r1, _0814925C @ =gUnknown_08416B94 - ldr r2, _08149260 @ =gSpriteAnimTable_8416B84 - movs r0, 0 - movs r3, 0x9 - bl sub_8149174 - pop {r0} - bx r0 - .align 2, 0 -_0814925C: .4byte gUnknown_08416B94 -_08149260: .4byte gSpriteAnimTable_8416B84 - thumb_func_end sub_8149248 - - thumb_func_start sub_8149264 -sub_8149264: @ 8149264 - push {lr} - ldr r1, _08149278 @ =gUnknown_08416C10 - ldr r2, _0814927C @ =gSpriteAnimTable_8416C04 - movs r0, 0x1 - movs r3, 0xC - bl sub_8149174 - pop {r0} - bx r0 - .align 2, 0 -_08149278: .4byte gUnknown_08416C10 -_0814927C: .4byte gSpriteAnimTable_8416C04 - thumb_func_end sub_8149264 - - thumb_func_start sub_8149280 -sub_8149280: @ 8149280 - push {lr} - ldr r1, _08149294 @ =gUnknown_08416C8C - ldr r2, _08149298 @ =gSpriteAnimTable_8416C88 - movs r0, 0x1 - movs r3, 0x6 - bl sub_8149174 - pop {r0} - bx r0 - .align 2, 0 -_08149294: .4byte gUnknown_08416C8C -_08149298: .4byte gSpriteAnimTable_8416C88 - thumb_func_end sub_8149280 - - thumb_func_start nullsub_82 -nullsub_82: @ 814929C - bx lr - thumb_func_end nullsub_82 - - thumb_func_start sub_81492A0 -sub_81492A0: @ 81492A0 - push {r4,lr} - ldr r4, _0814930C @ =gSprites - movs r1, 0x2E - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r1, [r1] - movs r2, 0x3E - adds r2, r0 - mov r12, r2 - movs r2, 0x4 - ands r2, r1 - mov r1, r12 - ldrb r3, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r2 - mov r2, r12 - strb r1, [r2] - movs r1, 0x2E - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x20] - strh r1, [r0, 0x20] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x22] - adds r1, 0x8 - strh r1, [r0, 0x22] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x24] - strh r1, [r0, 0x24] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x26] - strh r1, [r0, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0814930C: .4byte gSprites - thumb_func_end sub_81492A0 - - thumb_func_start intro_create_brendan_sprite -intro_create_brendan_sprite: @ 8149310 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldr r0, _0814935C @ =gSpriteTemplate_8416CDC - lsls r5, 16 - asrs r5, 16 - lsls r4, 16 - asrs r4, 16 - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0 - bl CreateSprite - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _08149360 @ =gSpriteTemplate_8416D2C - adds r4, 0x8 - lsls r4, 16 - asrs r4, 16 - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08149364 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - strh r6, [r1, 0x2E] - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0814935C: .4byte gSpriteTemplate_8416CDC -_08149360: .4byte gSpriteTemplate_8416D2C -_08149364: .4byte gSprites - thumb_func_end intro_create_brendan_sprite - - thumb_func_start intro_create_may_sprite -intro_create_may_sprite: @ 8149368 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldr r0, _081493B4 @ =gSpriteTemplate_8416CF4 - lsls r5, 16 - asrs r5, 16 - lsls r4, 16 - asrs r4, 16 - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0 - bl CreateSprite - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _081493B8 @ =gSpriteTemplate_8416D44 - adds r4, 0x8 - lsls r4, 16 - asrs r4, 16 - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081493BC @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - strh r6, [r1, 0x2E] - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081493B4: .4byte gSpriteTemplate_8416CF4 -_081493B8: .4byte gSpriteTemplate_8416D44 -_081493BC: .4byte gSprites - thumb_func_end intro_create_may_sprite - - thumb_func_start nullsub_83 -nullsub_83: @ 81493C0 - bx lr - thumb_func_end nullsub_83 - - thumb_func_start sub_81493C4 -sub_81493C4: @ 81493C4 - push {r4,lr} - ldr r4, _08149420 @ =gSprites - movs r1, 0x2E - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r1, [r1] - movs r2, 0x3E - adds r2, r0 - mov r12, r2 - movs r2, 0x4 - ands r2, r1 - mov r1, r12 - ldrb r3, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r2 - mov r2, r12 - strb r1, [r2] - movs r1, 0x2E - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x22] - strh r1, [r0, 0x22] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x24] - strh r1, [r0, 0x24] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x26] - strh r1, [r0, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08149420: .4byte gSprites - thumb_func_end sub_81493C4 - - thumb_func_start intro_create_latios_sprite -intro_create_latios_sprite: @ 8149424 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r2, r0, 0 - adds r5, r1, 0 - ldr r0, _08149490 @ =gSpriteTemplate_8416D7C - mov r8, r0 - lsls r2, 16 - asrs r4, r2, 16 - ldr r0, _08149494 @ =0xffe00000 - adds r2, r0 - asrs r2, 16 - lsls r5, 16 - asrs r5, 16 - mov r0, r8 - adds r1, r2, 0 - adds r2, r5, 0 - movs r3, 0x2 - bl CreateSprite - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - adds r4, 0x20 - lsls r4, 16 - asrs r4, 16 - mov r0, r8 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r5, _08149498 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r0, r4, r5 - strh r6, [r0, 0x2E] - movs r1, 0x1 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _0814949C @ =sub_81493C4 - str r0, [r4] - adds r0, r6, 0 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08149490: .4byte gSpriteTemplate_8416D7C -_08149494: .4byte 0xffe00000 -_08149498: .4byte gSprites -_0814949C: .4byte sub_81493C4 - thumb_func_end intro_create_latios_sprite - - thumb_func_start intro_create_latias_sprite -intro_create_latias_sprite: @ 81494A0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r2, r0, 0 - adds r5, r1, 0 - ldr r0, _0814950C @ =gSpriteTemplate_8416D94 - mov r8, r0 - lsls r2, 16 - asrs r4, r2, 16 - ldr r0, _08149510 @ =0xffe00000 - adds r2, r0 - asrs r2, 16 - lsls r5, 16 - asrs r5, 16 - mov r0, r8 - adds r1, r2, 0 - adds r2, r5, 0 - movs r3, 0x2 - bl CreateSprite - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - adds r4, 0x20 - lsls r4, 16 - asrs r4, 16 - mov r0, r8 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r5, _08149514 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r0, r4, r5 - strh r6, [r0, 0x2E] - movs r1, 0x1 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _08149518 @ =sub_81493C4 - str r0, [r4] - adds r0, r6, 0 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0814950C: .4byte gSpriteTemplate_8416D94 -_08149510: .4byte 0xffe00000 -_08149514: .4byte gSprites -_08149518: .4byte sub_81493C4 - thumb_func_end intro_create_latias_sprite - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/learn_move.s b/asm/learn_move.s deleted file mode 100644 index 89cd2efb8..000000000 --- a/asm/learn_move.s +++ /dev/null @@ -1,2739 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_813265C -sub_813265C: @ 813265C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_813265C - - thumb_func_start sub_8132670 -sub_8132670: @ 8132670 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _08132698 @ =sub_813269C - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08132698: .4byte sub_813269C - thumb_func_end sub_8132670 - - thumb_func_start sub_813269C -sub_813269C: @ 813269C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081326C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081326C0 - ldr r0, _081326CC @ =sub_81326D8 - bl SetMainCallback2 - ldr r1, _081326D0 @ =gFieldCallback - ldr r0, _081326D4 @ =sub_8080990 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_081326C0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081326C8: .4byte gPaletteFade -_081326CC: .4byte sub_81326D8 -_081326D0: .4byte gFieldCallback -_081326D4: .4byte sub_8080990 - thumb_func_end sub_813269C - - thumb_func_start sub_81326D8 -sub_81326D8: @ 81326D8 - push {r4,r5,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r4, _08132778 @ =gUnknown_030007B0 - ldr r0, _0813277C @ =0x02017000 - str r0, [r4] - bl sub_81332A0 - ldr r1, [r4] - ldr r0, _08132780 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - ldr r2, _08132784 @ =0x000002c5 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - bl sub_8133558 - ldr r0, _08132788 @ =sub_813265C - bl SetVBlankCallback - ldr r4, _0813278C @ =gWindowConfig_81E7240 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r4, _08132790 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r0, _08132794 @ =REG_BG0VOFS - strh r5, [r0] - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - strh r5, [r0] - ldr r0, _08132798 @ =gUnknown_08402D80 - bl LoadSpriteSheet - ldr r0, _0813279C @ =gUnknown_08402D88 - bl LoadSpritePalette - bl sub_8133358 - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r0, _081327A0 @ =sub_8132870 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132778: .4byte gUnknown_030007B0 -_0813277C: .4byte 0x02017000 -_08132780: .4byte gSpecialVar_0x8004 -_08132784: .4byte 0x000002c5 -_08132788: .4byte sub_813265C -_0813278C: .4byte gWindowConfig_81E7240 -_08132790: .4byte gWindowConfig_81E6CE4 -_08132794: .4byte REG_BG0VOFS -_08132798: .4byte gUnknown_08402D80 -_0813279C: .4byte gUnknown_08402D88 -_081327A0: .4byte sub_8132870 - thumb_func_end sub_81326D8 - - thumb_func_start sub_81327A4 -sub_81327A4: @ 81327A4 - push {r4,r5,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r4, _08132844 @ =gUnknown_030007B0 - ldr r0, _08132848 @ =0x02017000 - str r0, [r4] - bl sub_8133558 - ldr r1, [r4] - ldr r0, _0813284C @ =gSpecialVar_0x8005 - ldrh r0, [r0] - ldr r2, _08132850 @ =0x000002c6 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - ldr r0, _08132854 @ =sub_813265C - bl SetVBlankCallback - ldr r4, _08132858 @ =gWindowConfig_81E7240 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r4, _0813285C @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08132860 @ =REG_BG0VOFS - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - strh r5, [r0] - ldr r0, _08132864 @ =gUnknown_08402D80 - bl LoadSpriteSheet - ldr r0, _08132868 @ =gUnknown_08402D88 - bl LoadSpritePalette - bl sub_8133358 - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r0, _0813286C @ =sub_8132870 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132844: .4byte gUnknown_030007B0 -_08132848: .4byte 0x02017000 -_0813284C: .4byte gSpecialVar_0x8005 -_08132850: .4byte 0x000002c6 -_08132854: .4byte sub_813265C -_08132858: .4byte gWindowConfig_81E7240 -_0813285C: .4byte gWindowConfig_81E6CE4 -_08132860: .4byte REG_BG0VOFS -_08132864: .4byte gUnknown_08402D80 -_08132868: .4byte gUnknown_08402D88 -_0813286C: .4byte sub_8132870 - thumb_func_end sub_81327A4 - - thumb_func_start sub_8132870 -sub_8132870: @ 8132870 - push {r4,lr} - bl sub_8132908 - ldr r4, _081328E0 @ =gUnknown_030007B0 - ldr r1, [r4] - ldrb r0, [r1, 0x1D] - cmp r0, 0 - beq _08132896 - movs r0, 0 - strb r0, [r1, 0x1D] - ldr r0, [r4] - ldrb r1, [r0, 0x18] - lsls r1, 1 - adds r1, 0x1 - lsls r1, 27 - lsrs r1, 24 - movs r0, 0x58 - bl sub_814AD7C -_08132896: - ldr r1, [r4] - ldrb r0, [r1, 0x1E] - cmp r0, 0 - beq _081328A6 - movs r0, 0 - strb r0, [r1, 0x1E] - bl sub_8133800 -_081328A6: - ldr r1, [r4] - ldr r2, _081328E4 @ =0x000002c3 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _081328C8 - adds r2, 0x1 - adds r0, r1, r2 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8133AEC - ldr r0, [r4] - ldr r1, _081328E4 @ =0x000002c3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_081328C8: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081328E0: .4byte gUnknown_030007B0 -_081328E4: .4byte 0x000002c3 - thumb_func_end sub_8132870 - - thumb_func_start sub_81328E8 -sub_81328E8: @ 81328E8 - push {r4,lr} - adds r1, r0, 0 - ldr r4, _08132904 @ =gStringVar4 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132904: .4byte gStringVar4 - thumb_func_end sub_81328E8 - - thumb_func_start sub_8132908 -sub_8132908: @ 8132908 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r1, _0813292C @ =gUnknown_030007B0 - ldr r0, [r1] - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0x21 - bls _08132920 - b _08132FD6 -_08132920: - lsls r0, 2 - ldr r1, _08132930 @ =_08132934 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813292C: .4byte gUnknown_030007B0 -_08132930: .4byte _08132934 - .align 2, 0 -_08132934: - .4byte _081329BC - .4byte _08132A0C - .4byte _08132A24 - .4byte _08132A2C - .4byte _08132A60 - .4byte _08132A66 - .4byte _08132A98 - .4byte _08132FD6 - .4byte _08132AAA - .4byte _08132AD0 - .4byte _08132FD6 - .4byte _08132FD6 - .4byte _08132B74 - .4byte _08132B98 - .4byte _08132DD8 - .4byte _08132DF8 - .4byte _08132BF0 - .4byte _08132C08 - .4byte _08132C2C - .4byte _08132D40 - .4byte _08132D68 - .4byte _08132DB8 - .4byte _08132DC6 - .4byte _08132FD6 - .4byte _08132C74 - .4byte _08132C8C - .4byte _08132CB0 - .4byte _08132D0C - .4byte _08132E18 - .4byte _08132E7C - .4byte _08132F58 - .4byte _08132F84 - .4byte _08132FA4 - .4byte _08132FBC -_081329BC: - ldr r1, [r7] - ldrb r0, [r1] - adds r0, 0x1 - movs r4, 0 - strb r0, [r1] - bl sub_8132FEC - movs r0, 0 - bl sub_8133030 - bl sub_8133800 - ldr r0, _08132A04 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - ldr r0, [r7] - ldr r1, _08132A08 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - b _08132FD6 - .align 2, 0 -_08132A04: .4byte gSprites -_08132A08: .4byte 0x000002c3 -_08132A0C: - ldr r0, _08132A20 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132A1A - b _08132FD6 -_08132A1A: - ldr r1, [r7] - movs r0, 0x4 - b _08132FD4 - .align 2, 0 -_08132A20: .4byte gPaletteFade -_08132A24: - ldr r1, [r7] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 -_08132A2C: - movs r0, 0 - bl sub_8133030 - bl sub_8133800 - ldr r2, _08132A54 @ =gUnknown_030007B0 - ldr r0, [r2] - ldr r1, _08132A58 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _08132A5C @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - b _08132FD6 - .align 2, 0 -_08132A54: .4byte gUnknown_030007B0 -_08132A58: .4byte 0x000002c3 -_08132A5C: .4byte gSprites -_08132A60: - bl sub_81330E8 - b _08132A9C -_08132A66: - movs r0, 0 - bl sub_8133140 - bl sub_8133800 - ldr r2, _08132A8C @ =gUnknown_030007B0 - ldr r0, [r2] - ldr r1, _08132A90 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08132A94 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132A8C: .4byte gUnknown_030007B0 -_08132A90: .4byte 0x000002c3 -_08132A94: .4byte gSprites -_08132A98: - bl sub_8133248 -_08132A9C: - lsls r0, 24 - cmp r0, 0 - beq _08132AA4 - b _08132FD6 -_08132AA4: - bl sub_813362C - b _08132FD6 -_08132AAA: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132AB6 - b _08132FD6 -_08132AB6: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132ACC @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132ACC: .4byte gUnknown_030007B0 -_08132AD0: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132B3A - bl sub_8133CA4 - ldr r4, _08132B1C @ =gUnknown_030007B0 - ldr r2, [r4] - ldr r1, _08132B20 @ =0x000002c5 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08132B24 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r2, 0x1B] - lsls r1, 1 - adds r2, 0x20 - adds r2, r1 - ldrh r1, [r2] - bl GiveMoveToMon - lsls r0, 16 - ldr r1, _08132B28 @ =0xffff0000 - cmp r0, r1 - beq _08132B34 - ldr r0, _08132B2C @ =gOtherText_PokeLearnedMove - bl sub_81328E8 - ldr r1, _08132B30 @ =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - ldr r1, [r4] - movs r0, 0x1F - b _08132FD4 - .align 2, 0 -_08132B1C: .4byte gUnknown_030007B0 -_08132B20: .4byte 0x000002c5 -_08132B24: .4byte gPlayerParty -_08132B28: .4byte 0xffff0000 -_08132B2C: .4byte gOtherText_PokeLearnedMove -_08132B30: .4byte gSpecialVar_0x8004 -_08132B34: - ldr r1, [r4] - movs r0, 0x10 - b _08132FD4 -_08132B3A: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132B48 - cmp r1, 0x1 - beq _08132B48 - b _08132FD6 -_08132B48: - bl sub_8133CA4 - ldr r3, _08132B70 @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132B60 - movs r0, 0x3 - strb r0, [r1] -_08132B60: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132B6C - b _08132FD6 -_08132B6C: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132B70: .4byte gUnknown_030007B0 -_08132B74: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132B80 - b _08132FD6 -_08132B80: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132B94 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132B94: .4byte gUnknown_030007B0 -_08132B98: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - bne _08132BB4 - bl sub_8133CA4 - ldr r0, _08132BB0 @ =gSpecialVar_0x8004 - strh r4, [r0] - b _08132FCE - .align 2, 0 -_08132BB0: .4byte gSpecialVar_0x8004 -_08132BB4: - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _08132BC2 - cmp r4, 0x1 - beq _08132BC2 - b _08132FD6 -_08132BC2: - bl sub_8133CA4 - ldr r3, _08132BEC @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132BDA - movs r0, 0x3 - strb r0, [r1] -_08132BDA: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132BE6 - b _08132FD6 -_08132BE6: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132BEC: .4byte gUnknown_030007B0 -_08132BF0: - ldr r0, _08132C00 @ =gOtherText_DeleteOlderMove - bl sub_81328E8 - ldr r0, _08132C04 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132C00: .4byte gOtherText_DeleteOlderMove -_08132C04: .4byte gUnknown_030007B0 -_08132C08: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132C14 - b _08132FD6 -_08132C14: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132C28 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x12 - b _08132FD4 - .align 2, 0 -_08132C28: .4byte gUnknown_030007B0 -_08132C2C: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132C54 - bl sub_8133CA4 - ldr r0, _08132C4C @ =gOtherText_WhichMoveToForget - bl sub_81328E8 - ldr r0, _08132C50 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x13 - b _08132FD4 - .align 2, 0 -_08132C4C: .4byte gOtherText_WhichMoveToForget -_08132C50: .4byte gUnknown_030007B0 -_08132C54: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132C62 - cmp r1, 0x1 - beq _08132C62 - b _08132FD6 -_08132C62: - bl sub_8133CA4 - ldr r0, _08132C70 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x18 - b _08132FD4 - .align 2, 0 -_08132C70: .4byte gUnknown_030007B0 -_08132C74: - ldr r0, _08132C84 @ =gOtherText_StopLearningMove - bl sub_81328E8 - ldr r0, _08132C88 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132C84: .4byte gOtherText_StopLearningMove -_08132C88: .4byte gUnknown_030007B0 -_08132C8C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132C98 - b _08132FD6 -_08132C98: - ldr r0, _08132CAC @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1A - strb r0, [r1] - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - b _08132FD6 - .align 2, 0 -_08132CAC: .4byte gUnknown_030007B0 -_08132CB0: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132CCC - bl sub_8133CA4 - ldr r0, _08132CC8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1B - b _08132FD4 - .align 2, 0 -_08132CC8: .4byte gUnknown_030007B0 -_08132CCC: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132CDA - cmp r1, 0x1 - beq _08132CDA - b _08132FD6 -_08132CDA: - bl sub_8133CA4 - ldr r1, _08132D08 @ =gUnknown_030007B0 - ldr r2, [r1] - movs r3, 0xB1 - lsls r3, 2 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08132CF2 - movs r0, 0x3 - strb r0, [r2] -_08132CF2: - ldr r2, [r1] - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08132D00 - movs r0, 0x5 - strb r0, [r2] -_08132D00: - ldr r1, [r1] - movs r0, 0x10 - b _08132FD4 - .align 2, 0 -_08132D08: .4byte gUnknown_030007B0 -_08132D0C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132D18 - b _08132FD6 -_08132D18: - ldr r3, _08132D3C @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132D2C - movs r0, 0x3 - strb r0, [r1] -_08132D2C: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132D38 - b _08132FD6 -_08132D38: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132D3C: .4byte gUnknown_030007B0 -_08132D40: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132D4C - b _08132FD6 -_08132D4C: - ldr r0, _08132D64 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r2, 0 - movs r0, 0x14 - strb r0, [r1] - subs r0, 0x15 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08132FD6 - .align 2, 0 -_08132D64: .4byte gUnknown_030007B0 -_08132D68: - ldr r0, _08132DA4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132D76 - b _08132FD6 -_08132D76: - ldr r0, _08132DA8 @ =gPlayerParty - ldr r5, [r7] - ldr r2, _08132DAC @ =0x000002c5 - adds r1, r5, r2 - ldrb r1, [r1] - ldr r2, _08132DB0 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08132DB4 @ =sub_81327A4 - ldrb r4, [r5, 0x1B] - lsls r4, 1 - adds r5, 0x20 - adds r5, r4 - ldrh r4, [r5] - str r4, [sp] - bl sub_809D9F0 - ldr r1, [r7] - movs r0, 0x1C - b _08132FD4 - .align 2, 0 -_08132DA4: .4byte gPaletteFade -_08132DA8: .4byte gPlayerParty -_08132DAC: .4byte 0x000002c5 -_08132DB0: .4byte gPlayerPartyCount -_08132DB4: .4byte sub_81327A4 -_08132DB8: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132DC4 - b _08132FD6 -_08132DC4: - b _08132FCE -_08132DC6: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08132FD6 -_08132DD8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08132DF4 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132DF4: .4byte gUnknown_030007B0 -_08132DF8: - ldr r0, _08132E10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132E06 - b _08132FD6 -_08132E06: - ldr r0, _08132E14 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - b _08132FD6 - .align 2, 0 -_08132E10: .4byte gPaletteFade -_08132E14: .4byte c2_exit_to_overworld_2_switch -_08132E18: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r5, _08132E74 @ =gUnknown_030007B0 - ldr r1, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8132FEC - bl sub_8133800 - ldr r0, [r5] - movs r4, 0xB1 - lsls r4, 2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08132E4E - movs r0, 0x1 - bl sub_8133030 -_08132E4E: - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08132E66 - ldr r0, _08132E78 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - movs r0, 0x1 - bl sub_8133140 -_08132E66: - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8133AEC - b _08132FD6 - .align 2, 0 -_08132E74: .4byte gUnknown_030007B0 -_08132E78: .4byte gSprites -_08132E7C: - ldr r0, _08132E9C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132E8A - b _08132FD6 -_08132E8A: - ldr r1, [r7] - ldr r0, _08132EA0 @ =0x000002c6 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0x4 - bne _08132EA4 - movs r0, 0x18 - b _08132FD4 - .align 2, 0 -_08132E9C: .4byte gPaletteFade -_08132EA0: .4byte 0x000002c6 -_08132EA4: - ldr r4, _08132F38 @ =0x000002c5 - adds r0, r1, r4 - ldrb r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08132F3C @ =gPlayerParty - adds r0, r5 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08132F40 @ =gStringVar3 - movs r1, 0xD - mov r9, r1 - mov r1, r9 - muls r1, r0 - ldr r0, _08132F44 @ =gMoveNames - mov r8, r0 - add r1, r8 - adds r0, r2, 0 - bl StringCopy - ldr r1, [r7] - adds r0, r1, r4 - ldrb r0, [r0] - muls r0, r6 - adds r0, r5 - ldr r2, _08132F48 @ =0x000002c6 - adds r1, r2 - ldrb r1, [r1] - bl RemoveMonPPBonus - ldr r3, [r7] - adds r4, r3, r4 - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - ldrb r2, [r3, 0x1B] - lsls r2, 1 - adds r1, r3, 0 - adds r1, 0x20 - adds r1, r2 - ldrh r1, [r1] - ldr r2, _08132F48 @ =0x000002c6 - adds r3, r2 - ldrb r2, [r3] - bl SetMonMoveSlot - ldr r0, _08132F4C @ =gStringVar2 - ldr r1, [r7] - ldrb r2, [r1, 0x1B] - lsls r2, 1 - adds r1, 0x20 - adds r1, r2 - ldrh r1, [r1] - mov r2, r9 - muls r2, r1 - adds r1, r2, 0 - add r1, r8 - bl StringCopy - ldr r0, _08132F50 @ =gOtherText_ForgotMove123 - bl sub_81328E8 - ldr r1, [r7] - movs r0, 0x1E - strb r0, [r1] - ldr r1, _08132F54 @ =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - b _08132FD6 - .align 2, 0 -_08132F38: .4byte 0x000002c5 -_08132F3C: .4byte gPlayerParty -_08132F40: .4byte gStringVar3 -_08132F44: .4byte gMoveNames -_08132F48: .4byte 0x000002c6 -_08132F4C: .4byte gStringVar2 -_08132F50: .4byte gOtherText_ForgotMove123 -_08132F54: .4byte gSpecialVar_0x8004 -_08132F58: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132F78 @ =gOtherText_ForgotOrDidNotLearnMove / deuOtherText_ForgotAndLearned - bl sub_81328E8 - ldr r0, _08132F7C @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1F - strb r0, [r1] - ldr r0, _08132F80 @ =0x0000016f - bl PlayFanfare - b _08132FD6 - .align 2, 0 -.ifdef ENGLISH -_08132F78: .4byte gOtherText_ForgotOrDidNotLearnMove -.else -_08132F78: .4byte deuOtherText_ForgotAndLearned -.endif -_08132F7C: .4byte gUnknown_030007B0 -_08132F80: .4byte 0x0000016f -_08132F84: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132F9C @ =0x0000016f - bl PlayFanfare - ldr r0, _08132FA0 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x20 - b _08132FD4 - .align 2, 0 -_08132F9C: .4byte 0x0000016f -_08132FA0: .4byte gUnknown_030007B0 -_08132FA4: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132FB8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x21 - b _08132FD4 - .align 2, 0 -_08132FB8: .4byte gUnknown_030007B0 -_08132FBC: - ldr r0, _08132FE4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08132FD6 - movs r0, 0x5 - bl PlaySE -_08132FCE: - ldr r0, _08132FE8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0xE -_08132FD4: - strb r0, [r1] -_08132FD6: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08132FE4: .4byte gMain -_08132FE8: .4byte gUnknown_030007B0 - thumb_func_end sub_8132908 - - thumb_func_start sub_8132FEC -sub_8132FEC: @ 8132FEC - push {r4-r6,lr} - ldr r0, _08133024 @ =gWindowConfig_81E7240 - bl BasicInitMenuWindow - movs r5, 0 - ldr r4, _08133028 @ =gUnknown_08402CF8 - adds r6, r4, 0 -_08132FFA: - lsls r3, r5, 2 - ldrb r0, [r4] - adds r1, r6, 0x1 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r6, 0x2 - adds r3, r2 - ldrb r2, [r3] - ldrb r3, [r4, 0x3] - bl MenuDrawTextWindow - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0x3 - bls _08132FFA - ldr r0, _0813302C @ =gWindowConfig_81E6CE4 - bl BasicInitMenuWindow - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08133024: .4byte gWindowConfig_81E7240 -_08133028: .4byte gUnknown_08402CF8 -_0813302C: .4byte gWindowConfig_81E6CE4 - thumb_func_end sub_8132FEC - - thumb_func_start sub_8133030 -sub_8133030: @ 8133030 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, _081330D4 @ =gSprites - ldr r5, _081330D8 @ =gUnknown_030007B0 - ldr r0, [r5] - ldrb r0, [r0, 0x3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r5] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - movs r2, 0 - ldr r6, _081330DC @ =gUnknown_08402D08 - movs r3, 0x4 -_08133070: - ldr r0, [r5] - adds r0, r2 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0xF - ble _08133070 - ldr r0, [r6] - cmp r0, 0 - beq _081330B4 - ldr r5, _081330E0 @ =gTileBuffer - adds r4, r6, 0 -_08133096: - ldr r1, [r4] - adds r0, r5, 0 - movs r2, 0x40 - movs r3, 0x2 - bl sub_8072C74 - ldrb r1, [r4, 0x4] - ldrb r2, [r4, 0x5] - adds r0, r5, 0 - bl MenuPrint - adds r4, 0x8 - ldr r0, [r4] - cmp r0, 0 - bne _08133096 -_081330B4: - cmp r7, 0 - bne _081330CC - ldr r0, _081330E4 @ =gOtherText_TeachWhichMove - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x18 - movs r2, 0x78 - movs r3, 0xC0 - bl sub_8072AB0 -_081330CC: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081330D4: .4byte gSprites -_081330D8: .4byte gUnknown_030007B0 -_081330DC: .4byte gUnknown_08402D08 -_081330E0: .4byte gTileBuffer -_081330E4: .4byte gOtherText_TeachWhichMove - thumb_func_end sub_8133030 - - thumb_func_start sub_81330E8 -sub_81330E8: @ 81330E8 - push {r4,lr} - ldr r0, _08133134 @ =gMain - ldrh r2, [r0, 0x2E] - movs r1, 0x30 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r4, r0, 31 - ldr r0, _08133138 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _0813310C - movs r0, 0xC0 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0813310C - adds r4, 0x1 -_0813310C: - cmp r4, 0 - beq _0813312A - movs r0, 0x5 - bl PlaySE - ldr r2, _0813313C @ =gUnknown_030007B0 - ldr r1, [r2] - movs r0, 0x5 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_0813312A: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08133134: .4byte gMain -_08133138: .4byte gSaveBlock2 -_0813313C: .4byte gUnknown_030007B0 - thumb_func_end sub_81330E8 - - thumb_func_start sub_8133140 -sub_8133140: @ 8133140 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - ldr r4, _08133234 @ =gSprites - ldr r5, _08133238 @ =gUnknown_030007B0 - ldr r0, [r5] - ldrb r0, [r0, 0x3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x5 - negs r3, r3 - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - adds r1, r3, 0 - ands r1, r2 - strb r1, [r0] - movs r6, 0 - ldr r7, _0813323C @ =gUnknown_08402D08 -_0813318A: - ldr r0, [r5] - adds r0, r6 - ldrb r0, [r0, 0x7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0xF - ble _0813318A - movs r6, 0 - ldr r0, [r7] - cmp r0, 0 - beq _08133208 - mov r9, r7 - mov r10, r6 - movs r0, 0x24 - add r0, r9 - mov r8, r0 -_081331BA: - mov r0, r9 - adds r0, 0x20 - add r0, r10 - ldr r1, [r0] - ldr r0, _08133240 @ =gTileBuffer - movs r2, 0x40 - movs r3, 0x2 - bl sub_8072C74 - mov r0, r8 - ldrb r5, [r0] - ldrb r4, [r0, 0x1] - ldr r0, _08133240 @ =gTileBuffer - adds r1, r5, 0 - adds r2, r4, 0 - bl MenuPrint - cmp r6, 0 - beq _081331F8 - adds r1, r4, 0x2 - lsls r1, 24 - lsrs r1, 24 - adds r2, r5, 0x7 - lsls r2, 24 - lsrs r2, 24 - adds r3, r4, 0x3 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - bl MenuZeroFillWindowRect -_081331F8: - movs r0, 0x8 - add r10, r0 - add r8, r0 - adds r7, 0x8 - adds r6, 0x1 - ldr r0, [r7] - cmp r0, 0 - bne _081331BA -_08133208: - ldr r0, [sp, 0x8] - cmp r0, 0 - bne _08133222 - ldr r0, _08133244 @ =gOtherText_TeachWhichMove - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x18 - movs r2, 0x78 - movs r3, 0xC0 - bl sub_8072AB0 -_08133222: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133234: .4byte gSprites -_08133238: .4byte gUnknown_030007B0 -_0813323C: .4byte gUnknown_08402D08 -_08133240: .4byte gTileBuffer -_08133244: .4byte gOtherText_TeachWhichMove - thumb_func_end sub_8133140 - - thumb_func_start sub_8133248 -sub_8133248: @ 8133248 - push {r4,lr} - ldr r0, _08133294 @ =gMain - ldrh r2, [r0, 0x2E] - movs r1, 0x30 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r4, r0, 31 - ldr r0, _08133298 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _0813326C - movs r0, 0xC0 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0813326C - adds r4, 0x1 -_0813326C: - cmp r4, 0 - beq _0813328A - movs r0, 0x5 - bl PlaySE - ldr r2, _0813329C @ =gUnknown_030007B0 - ldr r1, [r2] - movs r3, 0 - movs r0, 0x3 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - strb r3, [r0] -_0813328A: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08133294: .4byte gMain -_08133298: .4byte gSaveBlock2 -_0813329C: .4byte gUnknown_030007B0 - thumb_func_end sub_8133248 - - thumb_func_start sub_81332A0 -sub_81332A0: @ 81332A0 - push {r4,lr} - ldr r2, _081332F8 @ =gUnknown_030007B0 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x2] - ldr r0, [r2] - strb r1, [r0, 0x19] - ldr r0, [r2] - strb r1, [r0, 0x18] - ldr r0, [r2] - strb r1, [r0, 0x1C] - ldr r0, [r2] - strb r1, [r0, 0x1A] - ldr r0, [r2] - strb r1, [r0, 0x1B] - ldr r0, [r2] - strb r1, [r0, 0x1D] - ldr r0, [r2] - strb r1, [r0, 0x1E] - ldr r0, [r2] - ldr r3, _081332FC @ =0x000002c3 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - movs r3, 0 - adds r4, r2, 0 - movs r2, 0 -_081332E0: - ldr r0, [r4] - lsls r1, r3, 1 - adds r0, 0x20 - adds r0, r1 - strh r2, [r0] - adds r3, 0x1 - cmp r3, 0x13 - ble _081332E0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081332F8: .4byte gUnknown_030007B0 -_081332FC: .4byte 0x000002c3 - thumb_func_end sub_81332A0 - - thumb_func_start sub_8133300 -sub_8133300: @ 8133300 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - movs r0, 0xFF - ands r1, r0 - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x1 - beq _08133324 - cmp r0, 0x1 - ble _0813334A - cmp r0, 0x2 - beq _08133338 - b _0813334A -_08133324: - adds r0, r1, 0 - movs r1, 0x3 - bl Sin - ldrh r1, [r4, 0x32] - adds r2, r0, 0 - muls r2, r1 - adds r0, r2, 0 - strh r0, [r4, 0x24] - b _0813334A -_08133338: - adds r0, r1, 0 - movs r1, 0x1 - bl Sin - ldrh r1, [r4, 0x32] - adds r2, r0, 0 - muls r2, r1 - adds r0, r2, 0 - strh r0, [r4, 0x26] -_0813334A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8133300 - - thumb_func_start sub_8133358 -sub_8133358: @ 8133358 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r6, _0813353C @ =gSpriteTemplate_8402D90 - adds r0, r6, 0 - movs r1, 0x8 - movs r2, 0x10 - movs r3, 0 - bl CreateSprite - ldr r4, _08133540 @ =gUnknown_030007B0 - ldr r1, [r4] - strb r0, [r1, 0x3] - ldr r5, _08133544 @ =gSprites - ldr r2, [r4] - ldrb r1, [r2, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - mov r8, r1 - mov r1, r8 - strh r1, [r0, 0x2E] - ldrb r1, [r2, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08133548 @ =0x0000ffff - strh r1, [r0, 0x32] - adds r0, r6, 0 - movs r1, 0x48 - movs r2, 0x10 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x4] - ldr r0, [r4] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r4] - ldrb r1, [r2, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x2E] - ldrb r1, [r2, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldr r0, _0813354C @ =gSpriteTemplate_8402DC0 - mov r9, r0 - movs r1, 0xA0 - movs r2, 0x4 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x5] - ldr r0, [r4] - ldrb r1, [r0, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r4] - ldrb r1, [r2, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r6, 0x2 - strh r6, [r0, 0x2E] - ldrb r1, [r2, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x32] - mov r0, r9 - movs r1, 0xA0 - movs r2, 0x3C - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x6] - ldr r2, [r4] - ldrb r1, [r2, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r2, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - movs r5, 0 - ldr r6, _08133550 @ =gSpriteTemplate_8402E08 -_0813344E: - adds r2, r5, 0 - cmp r5, 0 - bge _08133456 - adds r2, r5, 0x3 -_08133456: - asrs r2, 2 - lsls r1, r2, 2 - subs r1, r5, r1 - lsls r1, 19 - movs r0, 0xE0 - lsls r0, 13 - adds r1, r0 - asrs r1, 16 - lsls r2, 19 - movs r0, 0xD0 - lsls r0, 14 - adds r2, r0 - asrs r2, 16 - adds r0, r6, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r2, r5, 0x4 - adds r1, 0x3 - adds r1, r2 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x3 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08133544 @ =gSprites - adds r0, r1 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1 - cmp r5, 0x7 - ble _0813344E - movs r5, 0 - ldr r7, _08133550 @ =gSpriteTemplate_8402E08 - ldr r6, _08133540 @ =gUnknown_030007B0 -_081334A6: - adds r2, r5, 0 - cmp r5, 0 - bge _081334AE - adds r2, r5, 0x3 -_081334AE: - asrs r2, 2 - lsls r1, r2, 2 - subs r1, r5, r1 - lsls r1, 19 - movs r0, 0xE0 - lsls r0, 13 - adds r1, r0 - asrs r1, 16 - lsls r2, 19 - movs r0, 0xB8 - lsls r0, 15 - adds r2, r0 - asrs r2, 16 - adds r0, r7, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r2, r5, 0 - adds r2, 0xC - adds r1, 0x3 - adds r1, r2 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x3 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08133544 @ =gSprites - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1 - cmp r5, 0x7 - ble _081334A6 - movs r5, 0 - ldr r3, _08133540 @ =gUnknown_030007B0 - movs r2, 0x4 -_08133500: - ldr r0, [r3] - adds r0, 0x3 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x13 - ble _08133500 - ldr r1, _08133548 @ =0x0000ffff - ldr r3, _08133554 @ =0x00002d9f - movs r0, 0x12 - str r0, [sp] - movs r0, 0x10 - movs r2, 0xC - bl CreateBlendedOutlineCursor - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813353C: .4byte gSpriteTemplate_8402D90 -_08133540: .4byte gUnknown_030007B0 -_08133544: .4byte gSprites -_08133548: .4byte 0x0000ffff -_0813354C: .4byte gSpriteTemplate_8402DC0 -_08133550: .4byte gSpriteTemplate_8402E08 -_08133554: .4byte 0x00002d9f - thumb_func_end sub_8133358 - - thumb_func_start sub_8133558 -sub_8133558: @ 8133558 - push {r4-r6,lr} - sub sp, 0xC - ldr r5, _081335F4 @ =gUnknown_030007B0 - ldr r1, [r5] - ldr r2, _081335F8 @ =0x000002c5 - adds r0, r1, r2 - ldrb r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081335FC @ =gPlayerParty - adds r0, r2 - adds r1, 0x20 - bl GetMoveRelearnerMoves - ldr r1, [r5] - strb r0, [r1, 0x1A] - movs r4, 0 - ldr r0, [r5] - ldrb r0, [r0, 0x1A] - cmp r4, r0 - bge _081335AA - adds r6, r5, 0 - movs r5, 0x52 -_08133586: - lsls r2, r4, 1 - ldr r1, [r6] - adds r0, r1, r5 - adds r1, 0x20 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _08133600 @ =gMoveNames - adds r1, r2 - bl StringCopy - adds r5, 0x19 - adds r4, 0x1 - ldr r0, [r6] - ldrb r0, [r0, 0x1A] - cmp r4, r0 - blt _08133586 -_081335AA: - ldr r4, _081335F4 @ =gUnknown_030007B0 - ldr r0, [r4] - ldr r1, _081335F8 @ =0x000002c5 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081335FC @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _08133604 @ =gStringVar1 - mov r1, sp - bl StringCopy10 - ldr r0, [r4] - ldrb r2, [r0, 0x1A] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, r2 - adds r1, 0x52 - adds r0, r1 - ldr r1, _08133608 @ =gUnknownText_Exit - bl StringCopy - ldr r1, [r4] - ldrb r0, [r1, 0x1A] - adds r0, 0x1 - strb r0, [r1, 0x1A] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081335F4: .4byte gUnknown_030007B0 -_081335F8: .4byte 0x000002c5 -_081335FC: .4byte gPlayerParty -_08133600: .4byte gMoveNames -_08133604: .4byte gStringVar1 -_08133608: .4byte gUnknownText_Exit - thumb_func_end sub_8133558 - - thumb_func_start sub_813360C -sub_813360C: @ 813360C - lsls r0, 24 - ldr r3, _08133628 @ =gUnknown_030007B0 - ldr r2, [r3] - ldrb r1, [r2, 0x18] - strb r1, [r2, 0x1C] - ldr r1, [r3] - lsrs r0, 24 - ldrb r2, [r1, 0x18] - adds r0, r2 - strb r0, [r1, 0x18] - ldr r1, [r3] - movs r0, 0x1 - strb r0, [r1, 0x1D] - bx lr - .align 2, 0 -_08133628: .4byte gUnknown_030007B0 - thumb_func_end sub_813360C - - thumb_func_start sub_813362C -sub_813362C: @ 813362C - push {r4,r5,lr} - ldr r2, _08133670 @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08133688 - ldr r4, _08133674 @ =gUnknown_030007B0 - ldr r0, [r4] - ldrb r0, [r0, 0x1B] - cmp r0, 0 - bne _08133646 - b _08133796 -_08133646: - movs r0, 0x5 - bl PlaySE - ldr r1, [r4] - ldrb r0, [r1, 0x1B] - subs r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r4] - ldr r1, _08133678 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0 - beq _0813367C - movs r0, 0x1 - negs r0, r0 - bl sub_813360C - b _08133796 - .align 2, 0 -_08133670: .4byte gMain -_08133674: .4byte gUnknown_030007B0 -_08133678: .4byte 0x000002c3 -_0813367C: - ldrb r0, [r1, 0x19] - cmp r0, 0 - bne _08133684 - b _08133796 -_08133684: - subs r0, 0x1 - b _081336DC -_08133688: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081336E8 - ldr r4, _081336C8 @ =gUnknown_030007B0 - ldr r0, [r4] - ldrb r1, [r0, 0x1B] - ldrb r0, [r0, 0x1A] - subs r0, 0x1 - cmp r1, r0 - blt _081336A0 - b _08133796 -_081336A0: - movs r0, 0x5 - bl PlaySE - ldr r1, [r4] - ldrb r0, [r1, 0x1B] - adds r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r4] - ldr r3, _081336CC @ =0x000002c3 - adds r0, r3 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0x2 - beq _081336D0 - movs r0, 0x1 - bl sub_813360C - b _08133796 - .align 2, 0 -_081336C8: .4byte gUnknown_030007B0 -_081336CC: .4byte 0x000002c3 -_081336D0: - ldrb r2, [r1, 0x19] - ldrb r0, [r1, 0x1A] - subs r0, 0x3 - cmp r2, r0 - beq _08133796 - adds r0, r2, 0x1 -_081336DC: - strb r0, [r1, 0x19] - ldr r1, [r4] - ldrb r0, [r1, 0x1E] - adds r0, 0x1 - strb r0, [r1, 0x1E] - b _08133796 -_081336E8: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813376C - movs r0, 0x5 - bl PlaySE - ldr r5, _08133738 @ =gUnknown_030007B0 - ldr r2, [r5] - ldrb r1, [r2, 0x1B] - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r1, r0 - beq _08133748 - movs r0, 0x8 - strb r0, [r2] - ldr r0, _0813373C @ =gStringVar2 - ldr r1, [r5] - ldrb r3, [r1, 0x1B] - lsls r2, r3, 1 - adds r2, r3 - lsls r2, 3 - adds r2, r3 - adds r2, 0x52 - adds r1, r2 - bl StringCopy - ldr r4, _08133740 @ =gStringVar4 - ldr r1, _08133744 @ =gOtherText_TeachSpecificMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - b _08133796 - .align 2, 0 -_08133738: .4byte gUnknown_030007B0 -_0813373C: .4byte gStringVar2 -_08133740: .4byte gStringVar4 -_08133744: .4byte gOtherText_TeachSpecificMove -_08133748: - ldr r4, _08133764 @ =gStringVar4 - ldr r1, _08133768 @ =gOtherText_GiveUpTeachingMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - ldr r1, [r5] - movs r0, 0xC - strb r0, [r1] - b _08133796 - .align 2, 0 -_08133764: .4byte gStringVar4 -_08133768: .4byte gOtherText_GiveUpTeachingMove -_0813376C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08133796 - movs r0, 0x5 - bl PlaySE - ldr r0, _081337D4 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0xC - strb r0, [r1] - ldr r4, _081337D8 @ =gStringVar4 - ldr r1, _081337DC @ =gOtherText_GiveUpTeachingMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage -_08133796: - ldr r0, _081337D4 @ =gUnknown_030007B0 - ldr r4, [r0] - ldrb r0, [r4, 0x1A] - cmp r0, 0x3 - bls _081337F8 - ldr r3, _081337E0 @ =gSprites - adds r5, r3, 0 - adds r5, 0xC6 - ldrb r0, [r5] - movs r1, 0x5 - negs r1, r1 - adds r2, r1, 0 - ands r2, r0 - strb r2, [r5] - movs r0, 0x85 - lsls r0, 1 - adds r0, r3 - mov r12, r0 - ldrb r0, [r0] - adds r3, r1, 0 - ands r3, r0 - mov r1, r12 - strb r3, [r1] - ldrb r0, [r4, 0x19] - cmp r0, 0 - bne _081337E4 - movs r1, 0x4 - adds r0, r2, 0 - orrs r0, r1 - strb r0, [r5] - b _081337F8 - .align 2, 0 -_081337D4: .4byte gUnknown_030007B0 -_081337D8: .4byte gStringVar4 -_081337DC: .4byte gOtherText_GiveUpTeachingMove -_081337E0: .4byte gSprites -_081337E4: - ldrb r1, [r4, 0x19] - ldrb r0, [r4, 0x1A] - subs r0, 0x3 - cmp r1, r0 - bne _081337F8 - movs r1, 0x4 - adds r0, r3, 0 - orrs r0, r1 - mov r3, r12 - strb r0, [r3] -_081337F8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813362C - - thumb_func_start sub_8133800 -sub_8133800: @ 8133800 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _08133834 @ =gUnknown_030007B0 - ldr r0, [r1] - ldrb r6, [r0, 0x19] - ldr r3, _08133838 @ =gTileBuffer - mov r10, r1 - ldr r0, _0813383C @ =gBattleMoves - mov r9, r0 - movs r1, 0x2 - mov r8, r1 -_0813381C: - mov r4, r10 - ldr r2, [r4] - ldrb r0, [r2, 0x1A] - cmp r6, r0 - bcc _08133844 - adds r0, r3, 0 - ldr r1, _08133840 @ =gEmptyString_81E72B0 - movs r2, 0x90 - movs r3, 0 - bl sub_8072C74 - b _081338FA - .align 2, 0 -_08133834: .4byte gUnknown_030007B0 -_08133838: .4byte gTileBuffer -_0813383C: .4byte gBattleMoves -_08133840: .4byte gEmptyString_81E72B0 -_08133844: - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r6, r0 - bne _08133860 - adds r0, r3, 0 - ldr r1, _0813385C @ =gUnknownText_Exit - movs r2, 0x90 - movs r3, 0 - bl sub_8072C74 - b _081338FA - .align 2, 0 -_0813385C: .4byte gUnknownText_Exit -_08133860: - lsls r1, r6, 1 - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r1 - ldrh r5, [r0] - movs r4, 0xB1 - lsls r4, 2 - adds r0, r2, r4 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - beq _081338A4 - ldr r1, _0813389C @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 27 - ldr r1, _081338A0 @ =gUnknown_083CAF70 - adds r0, r1 - ldr r1, [r0] - adds r0, r3, 0 - movs r2, 0x27 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 - lsls r4, r5, 1 - b _081338C2 - .align 2, 0 -_0813389C: .4byte gContestMoves -_081338A0: .4byte gUnknown_083CAF70 -_081338A4: - lsls r4, r5, 1 - adds r0, r4, r5 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x2] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _08133938 @ =gTypeNames - adds r1, r0 - adds r0, r3, 0 - movs r2, 0x27 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 -_081338C2: - adds r0, r7, r6 - lsls r0, 3 - adds r0, r6 - adds r0, 0x52 - mov r2, r10 - ldr r1, [r2] - adds r1, r0 - adds r0, r3, 0 - movs r2, 0x72 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 - movs r0, 0xCA - strb r0, [r3] - strb r0, [r3, 0x1] - movs r0, 0xBA - strb r0, [r3, 0x2] - adds r3, 0x3 - adds r0, r4, r5 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x4] - adds r0, r3, 0 - movs r2, 0x90 - movs r3, 0 - bl sub_8072C14 -_081338FA: - adds r3, r0, 0 - movs r0, 0xFE - strb r0, [r3] - adds r3, 0x1 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0x1 - negs r4, r4 - add r8, r4 - mov r0, r8 - cmp r0, 0 - blt _08133916 - b _0813381C -_08133916: - movs r0, 0xFF - strb r0, [r3] - ldr r0, _0813393C @ =gTileBuffer - movs r1, 0xB - movs r2, 0x1 - bl MenuPrint - movs r0, 0 - bl sub_813360C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133938: .4byte gTypeNames -_0813393C: .4byte gTileBuffer - thumb_func_end sub_8133800 - - thumb_func_start sub_8133940 -sub_8133940: @ 8133940 - push {r4-r7,lr} - sub sp, 0x34 - adds r4, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _08133968 @ =gExpandedPlaceholder_Empty - mov r0, sp - bl StringCopy - ldrb r0, [r4, 0x2] - subs r0, 0x1 - cmp r0, 0x6 - bls _0813395C - b _08133AE2 -_0813395C: - lsls r0, 2 - ldr r1, _0813396C @ =_08133970 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08133968: .4byte gExpandedPlaceholder_Empty -_0813396C: .4byte _08133970 - .align 2, 0 -_08133970: - .4byte _08133AE2 - .4byte _0813398C - .4byte _08133AE2 - .4byte _081339A4 - .4byte _08133AE2 - .4byte _081339E4 - .4byte _08133A64 -_0813398C: - ldr r0, _081339A0 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0x1 - bls _081339B4 - ldrb r1, [r1, 0x1] - b _081339CE - .align 2, 0 -_081339A0: .4byte gBattleMoves -_081339A4: - ldr r0, _081339C4 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x3] - cmp r0, 0 - bne _081339CC -_081339B4: - ldr r1, _081339C8 @ =gOtherText_ThreeDashes2 - mov r0, sp - movs r2, 0x20 - movs r3, 0x2 - bl sub_8072C74 - b _081339D8 - .align 2, 0 -_081339C4: .4byte gBattleMoves -_081339C8: .4byte gOtherText_ThreeDashes2 -_081339CC: - ldrb r1, [r1, 0x3] -_081339CE: - mov r0, sp - movs r2, 0x20 - movs r3, 0x2 - bl sub_8072C14 -_081339D8: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - mov r0, sp - bl MenuPrint - b _08133AE2 -_081339E4: - ldrb r2, [r4] - ldrb r1, [r4, 0x1] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldr r2, _08133A34 @ =gContestEffects - ldr r1, _08133A38 @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xFF - bne _08133A14 - movs r5, 0 -_08133A14: - movs r4, 0 - ldr r7, _08133A3C @ =gUnknown_030007B0 - ldr r6, _08133A40 @ =gSprites -_08133A1A: - cmp r4, r5 - bcs _08133A44 - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - bl StartSpriteAnim - b _08133A58 - .align 2, 0 -_08133A34: .4byte gContestEffects -_08133A38: .4byte gContestMoves -_08133A3C: .4byte gUnknown_030007B0 -_08133A40: .4byte gSprites -_08133A44: - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - bl StartSpriteAnim -_08133A58: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08133A1A - b _08133AE2 -_08133A64: - ldrb r2, [r4] - ldrb r1, [r4, 0x1] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldr r2, _08133AB4 @ =gContestEffects - ldr r1, _08133AB8 @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xFF - bne _08133A94 - movs r5, 0 -_08133A94: - movs r4, 0 - ldr r7, _08133ABC @ =gUnknown_030007B0 - ldr r6, _08133AC0 @ =gSprites -_08133A9A: - cmp r4, r5 - bcs _08133AC4 - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0xF] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x3 - bl StartSpriteAnim - b _08133AD8 - .align 2, 0 -_08133AB4: .4byte gContestEffects -_08133AB8: .4byte gContestMoves -_08133ABC: .4byte gUnknown_030007B0 -_08133AC0: .4byte gSprites -_08133AC4: - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0xF] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x2 - bl StartSpriteAnim -_08133AD8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08133A9A -_08133AE2: - add sp, 0x34 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8133940 - - thumb_func_start sub_8133AEC -sub_8133AEC: @ 8133AEC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r6, _08133B88 @ =gUnknown_030007B0 - ldr r2, [r6] - ldrb r1, [r2, 0x1B] - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r1, r0 - bne _08133B08 - b _08133C04 -_08133B08: - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r1 - ldrh r5, [r0] - cmp r3, 0 - beq _08133BA0 - movs r4, 0 - lsls r0, r5, 3 - mov r8, r0 - ldr r7, _08133B8C @ =gSprites - adds r3, r6, 0 - movs r6, 0x5 - negs r6, r6 -_08133B24: - ldr r0, [r3] - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xF - bls _08133B24 - movs r4, 0 -_08133B48: - ldr r0, _08133B90 @ =gUnknown_08402E3D - adds r0, r4, r0 - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08133B94 @ =gUnknown_08402E24 - adds r1, r0 - adds r0, r5, 0 - bl sub_8133940 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _08133B48 - ldr r1, _08133B98 @ =gUnknown_083CADD4 - ldr r0, _08133B9C @ =gContestMoves - add r0, r8 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x58 - movs r2, 0x48 - movs r3, 0x90 - bl sub_8072AB0 - b _08133C92 - .align 2, 0 -_08133B88: .4byte gUnknown_030007B0 -_08133B8C: .4byte gSprites -_08133B90: .4byte gUnknown_08402E3D -_08133B94: .4byte gUnknown_08402E24 -_08133B98: .4byte gUnknown_083CADD4 -_08133B9C: .4byte gContestMoves -_08133BA0: - movs r4, 0 - subs r6, r5, 0x1 -_08133BA4: - ldr r0, _08133BF8 @ =gUnknown_08402E39 - adds r0, r4, r0 - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08133BFC @ =gUnknown_08402E24 - adds r1, r0 - adds r0, r5, 0 - bl sub_8133940 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08133BA4 - ldr r1, _08133C00 @ =gMoveDescriptions - lsls r0, r6, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - str r1, [sp] - movs r1, 0x58 - movs r2, 0x48 - movs r3, 0x90 - bl sub_8072A18 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08133C92 - lsls r1, r0, 25 - movs r0, 0x90 - lsls r0, 20 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xB - movs r2, 0x1C - movs r3, 0xC - bl MenuFillWindowRectWithBlankTile - b _08133C92 - .align 2, 0 -_08133BF8: .4byte gUnknown_08402E39 -_08133BFC: .4byte gUnknown_08402E24 -_08133C00: .4byte gMoveDescriptions -_08133C04: - cmp r3, 0 - beq _08133C5C - ldr r4, _08133C54 @ =gUnknown_08402E24 - ldrb r2, [r4, 0xF] - ldrb r1, [r4, 0x10] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldrb r2, [r4, 0x12] - ldrb r1, [r4, 0x13] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - movs r4, 0 - ldr r5, _08133C58 @ =gSprites - adds r3, r6, 0 - movs r2, 0x4 -_08133C32: - ldr r0, [r3] - adds r0, r4 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xF - bls _08133C32 - b _08133C86 - .align 2, 0 -_08133C54: .4byte gUnknown_08402E24 -_08133C58: .4byte gSprites -_08133C5C: - ldr r4, _08133CA0 @ =gUnknown_08402E24 - ldrb r0, [r4, 0x3] - ldrb r1, [r4, 0x4] - adds r2, r0, 0x3 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect - ldrb r0, [r4, 0x9] - ldrb r1, [r4, 0xA] - adds r2, r0, 0x3 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect -_08133C86: - movs r0, 0xB - movs r1, 0x9 - movs r2, 0x1C - movs r3, 0xC - bl MenuZeroFillWindowRect -_08133C92: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133CA0: .4byte gUnknown_08402E24 - thumb_func_end sub_8133AEC - - thumb_func_start sub_8133CA4 -sub_8133CA4: @ 8133CA4 - push {lr} - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1B - movs r3, 0xC - bl MenuZeroFillWindowRect - ldr r0, _08133CC8 @ =gUnknown_030007B0 - ldr r0, [r0] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_8133AEC - pop {r0} - bx r0 - .align 2, 0 -_08133CC8: .4byte gUnknown_030007B0 - thumb_func_end sub_8133CA4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/macros/event.inc b/asm/macros/event.inc index cd2927c66..960b300b7 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1,10 +1,10 @@ @ Does nothing. - .macro snop + .macro nop .byte 0x00 .endm @ Does nothing. - .macro snop1 + .macro nop1 .byte 0x01 .endm @@ -25,27 +25,27 @@ .endm @ Jumps to destination and continues script execution from there. - .macro jump destination + .macro goto destination .byte 0x05 .4byte \destination .endm @ If the result of the last comparison matches condition (see Comparison operators), jumps to destination and continues script execution from there. - .macro jumpif condition, destination + .macro goto_if condition, destination .byte 0x06 .byte \condition .4byte \destination .endm @ If the result of the last comparison matches condition (see Comparison operators), calls destination. - .macro callif condition, destination + .macro call_if condition, destination .byte 0x07 .byte \condition .4byte \destination .endm @ Jumps to the standard function at index function. - .macro jumpstd function + .macro gotostd function .byte 0x08 .byte \function .endm @@ -57,58 +57,58 @@ .endm @ If the result of the last comparison matches condition (see Comparison operators), jumps to the standard function at index function. - .macro jumpstdif condition, function + .macro gotostd_if condition, function .byte 0x0a .byte \condition .byte \function .endm @ If the result of the last comparison matches condition (see Comparison operators), calls the standard function at index function. - .macro callstdif condition, function + .macro callstd_if condition, function .byte 0x0b .byte \condition .byte \function .endm @ Executes a script stored in a default RAM location. - .macro jumpram + .macro gotoram .byte 0x0c .endm @ Terminates script execution and "resets the script RAM". - .macro die + .macro killscript .byte 0x0d .endm - @ Pads the specified value to a dword, and then writes that dword to a predefined address (0x0203AAA8). - .macro setbyte value + @ Sets mystery event status + .macro setmysteryeventstatus value .byte 0x0e .byte \value .endm - @ Sets the specified script bank to value. - .macro loadptr destination, value + @ Sets the specified script bank to immediate value. + .macro loadword destination, value .byte 0x0f .byte \destination .4byte \value .endm - @ Sets the specified script bank to value. - .macro setbufferbyte destination, value + @ Sets the specified script bank to immediate value. + .macro loadbyte destination, value .byte 0x10 .byte \destination .byte \value .endm @ Sets the byte at offset to value. - .macro writebytetooffset value, offset + .macro writebytetoaddr value, offset .byte 0x11 .byte \value .4byte \offset .endm @ Copies the byte value at source into the specified script bank. - .macro loadbytefrompointer destination, source + .macro loadbytefromaddr destination, source .byte 0x12 .byte \destination .4byte \source @@ -122,7 +122,7 @@ .endm @ Copies the contents of bank source into bank destination. - .macro copybuffers destination, source + .macro copylocal destination, source .byte 0x14 .byte \destination .byte \source @@ -171,71 +171,83 @@ .endm @ Compares the values of script banks a and b, after forcing the values to bytes. - .macro comparebuffers byte1, byte2 + .macro compare_local_to_local byte1, byte2 .byte 0x1b .byte \byte1 .byte \byte2 .endm @ Compares the least-significant byte of the value of script bank a to a fixed byte value (b). - .macro comparebuffertobyte a, b + .macro compare_local_to_value a, b .byte 0x1c .byte \a .byte \b .endm @ Compares the least-significant byte of the value of script bank a to the byte located at offset b. - .macro comparebuffertoptrbyte a, b + .macro compare_local_to_addr a, b .byte 0x1d .byte \a .4byte \b .endm @ Compares the byte located at offset a to the least-significant byte of the value of script bank b. - .macro compareptrbytetobuffer a, b + .macro compare_addr_to_local a, b .byte 0x1e .4byte \a .byte \b .endm @ Compares the byte located at offset a to a fixed byte value (b). - .macro compareptrbytetobyte a, b + .macro compare_addr_to_value a, b .byte 0x1f .4byte \a .byte \b .endm @ Compares the byte located at offset a to the byte located at offset b. - .macro compareptrbytes a, b + .macro compare_addr_to_addr a, b .byte 0x20 .4byte \a .4byte \b .endm @ Compares the value of `var` to a fixed word value (b). - .macro compare var, value + .macro compare_var_to_value var, value .byte 0x21 .2byte \var .2byte \value .endm @ Compares the value of `var` to the value of `var2`. - .macro comparevars var1, var2 + .macro compare_var_to_var var1, var2 .byte 0x22 .2byte \var1 .2byte \var2 .endm - @ Calls the ASM routine stored at code. Script execution is blocked until the ASM returns (bx lr, mov pc, lr, etc.). Remember to add 1 to the offset when calling THUMB code. - .macro callasm code + @ Generic compare macro which attempts to deduce argument types based on their values + @ Any values between 0x4000 to 0x4FFF and 0x8000 to 0x8FFF are considered event variable identifiers + .macro compare arg1, arg2 + .if ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && ((\arg2 >> 12) == 4 || (\arg2 >> 12) == 8) + compare_var_to_var \arg1, \arg2 + .elseif ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && (\arg2 >= 0 && \arg2 <= 0xFFFF) + compare_var_to_value \arg1, \arg2 + .else + .error "Invalid arguments for 'compare'" + .endif + .endm + + @ Calls the native C function stored at `func`. + .macro callnative func .byte 0x23 - .4byte \code + .4byte \func .endm - @ Replaces a pointer in the script engine RAM with asm_pointer. - .macro jumpasm asm_pointer + @ Replaces the script with the function stored at `func`. Execution returns to the bytecode script when func returns TRUE. + .macro gotonative func .byte 0x24 - .4byte \asm_pointer + .4byte \func .endm @ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers. @@ -245,7 +257,7 @@ .endm @ Calls a special function. That function's output (if any) will be written to the variable you specify. - .macro specialval output, function + .macro specialvar output, function .byte 0x26 .2byte \output .2byte SPECIAL_\function @@ -257,7 +269,7 @@ .endm @ Blocks script execution for time (frames? milliseconds?). - .macro pause time + .macro delay time .byte 0x28 .2byte \time .endm @@ -281,33 +293,35 @@ .endm @ In FireRed, this command is a nop. - .macro compareflags + .macro initclock hour minute .byte 0x2c + .byte \hour + .byte \minute .endm @ In FireRed, this command is a nop. - .macro checkdailyflags + .macro dodailyevents .byte 0x2d .endm @ Resets the values of variables 0x8000, 0x8001, and 0x8002. Related to RTC in RSE? - .macro resetvars + .macro gettime .byte 0x2e .endm @ Plays the specified (sound_number) sound. Only one sound may play at a time, with newer ones interrupting older ones. - .macro playsfx sound_number + .macro playse sound_number .byte 0x2f .2byte \sound_number .endm @ Blocks script execution until the currently-playing sound (triggered by sound) finishes playing. - .macro checksound + .macro waitse .byte 0x30 .endm @ Plays the specified (fanfare_number) fanfare. - .macro fanfare fanfare_number + .macro playfanfare fanfare_number .byte 0x31 .2byte \fanfare_number .endm @@ -318,37 +332,37 @@ .endm @ Plays the specified (song_number) song. The byte is apparently supposed to be 0x00. - .macro playmusic song_number, unknown + .macro playbgm song_number, unknown .byte 0x33 .2byte \song_number .byte \unknown .endm @ Plays the specified (song_number) song. - .macro playmusicbattle song_number + .macro savebgm song_number .byte 0x34 .2byte \song_number .endm @ Crossfades the currently-playing song into the map's default song. - .macro fadedefault + .macro fadedefaultbgm .byte 0x35 .endm @ Crossfades the currently-playng song into the specified (song_number) song. - .macro fademusic song_number + .macro fadenewbgm song_number .byte 0x36 .2byte \song_number .endm @ Fades out the currently-playing song. - .macro fadeout speed + .macro fadeoutbgm speed .byte 0x37 .byte \speed .endm @ Fades the currently-playing song back in. - .macro fadein speed + .macro fadeinbgm speed .byte 0x38 .byte \speed .endm @@ -363,7 +377,7 @@ .endm @ Clone of warp that does not play a sound effect. - .macro warpmuted map, warp, X, Y + .macro warpsilent map, warp, X, Y .byte 0x3a map \map .byte \warp @@ -372,7 +386,7 @@ .endm @ Clone of warp that uses "a walking effect". - .macro warpwalk map, warp, X, Y + .macro warpdoor map, warp, X, Y .byte 0x3b map \map .byte \warp @@ -396,7 +410,7 @@ .endm @ Clone of warp. Used by an (unused?) Safari Zone script to return the player to the gatehouse and end the Safari Game. - .macro warp3 map, warp, X, Y + .macro setwarp map, warp, X, Y .byte 0x3e map \map .byte \warp @@ -405,7 +419,7 @@ .endm @ Sets a default warp place. If a warp tries to send the player to Warp 127 on Map 127.127, they will instead be sent here. Useful when a map has warps that need to go to script-controlled locations (i.e. elevators). - .macro warpplace map, warp, X, Y + .macro setdynamicwarp map, warp, X, Y .byte 0x3f map \map .byte \warp @@ -414,7 +428,7 @@ .endm @ Clone of warp3, except that this writes data to different offsets... - .macro warp4 map, warp, X, Y + .macro setdivewarp map, warp, X, Y .byte 0x40 map \map .byte \warp @@ -423,7 +437,7 @@ .endm @ Clone of warp3, except that this writes data to different offsets... - .macro warp5 map, warp, X, Y + .macro setholewarp map, warp, X, Y .byte 0x41 map \map .byte \warp @@ -504,7 +518,7 @@ .endm @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro testdecor a + .macro hasdecor a .byte 0x4d .2byte \a .endm @@ -516,148 +530,146 @@ .endm @ Applies the movement data at movements to the specified (index) Person event. Also closes any standard message boxes that are still open. - .macro move index, movements - .byte 0x4f - .2byte \index - .4byte \movements - .endm - - @ Apparent clone of applymovement. Oddly, it doesn't seem to work at all if applied to any Person other than the player (0xFF), and the X and Y arguments don't seem to do anything. @ This command in fact uses variables to access the Person event ID. So, for example, if you setvar 0x8000 to 0x3, and then use applymovementpos 0x8000 @move1, Person event 3 will have the movements at @move1 applied to them. Thank you Shiny Quagsire for bringing this to my attention. - .macro movecoords variable, movements, x, y - .byte 0x50 - .2byte \variable - .4byte \movements - .byte \x - .byte \y + .macro applymovement index, movements, mapGroup, mapNum + .ifb \mapGroup + .byte 0x4f + .2byte \index + .4byte \movements + .else + .byte 0x50 + .2byte \index + .4byte \movements + .byte \mapGroup + .byte \mapNum + .endif .endm @ Blocks script execution until the movements being applied to the specified (index) Person event finish. If the specified Person event is 0x0000, then the command will block script execution until all Person events affected by applymovement finish their movements. If the specified Person event is not currently being manipulated with applymovement, then this command does nothing. - .macro waitmove index - .byte 0x51 - .2byte \index - .endm - - @ Apparent clone of waitmovement. Oddly, it doesn't seem to work at all if applied to any Person other than the player (0xFF), and the X and Y arguments don't seem to do anything. - .macro waitmovexy index, X, Y - .byte 0x52 - .2byte \index - .byte \X - .byte \Y - .endm - - @ Attempts to hide the specified (local_ID, a local ID) Person event on the current map, by setting its visibility flag if it has a valid one. If the Person does not have a valid visibility flag, this command does nothing. - .macro disappear local_ID - .byte 0x53 - .2byte \local_ID - .endm - - @ Clone of hidesprite that also moves the Person? Test it! - .macro disappearxy index, X, Y - .byte 0x54 - .2byte \index - .byte \X - .byte \Y - .endm - - .macro reappear word - .byte 0x55 - .2byte \word - .endm - - .macro reappearxy word, byte1, byte2 - .byte 0x56 - .2byte \word - .byte \byte1 - .byte \byte2 - .endm - - .macro movesprite word1, word2, word3 - .byte 0x57 - .2byte \word1 - .2byte \word2 - .2byte \word3 - .endm - - .macro spritevisible word, byte1, byte2 - .byte 0x58 - .2byte \word - .byte \byte1 - .byte \byte2 - .endm - - .macro spriteinvisible word, byte1, byte2 - .byte 0x59 - .2byte \word - .byte \byte1 - .byte \byte2 + .macro waitmovement index, mapBank, mapNum + .ifb \mapBank + .byte 0x51 + .2byte \index + .else + .byte 0x52 + .2byte \index + .byte \mapBank + .byte \mapNum + .endif + .endm + + @ Attempts to hide the specified (local_ID, a local ID) Person event on the specified map, by setting its visibility flag if it has a valid one. If the Person does not have a valid visibility flag, this command does nothing. + @ If no map is specified, then the current map is used + .macro removeobject localId, mapGroup, mapNum + .ifb \mapGroup + .byte 0x53 + .2byte \localId + .else + .byte 0x54 + .2byte \localId + .byte \mapGroup + .byte \mapNum + .endif + .endm + + .macro addobject localId, mapGroup, mapNum + .ifb \mapGroup + .byte 0x55 + .2byte \localId + .else + .byte 0x56 + .2byte \localId + .byte \mapGroup + .byte \mapNum + .endif + .endm + + .macro setobjectxy word1, word2, word3 + .byte 0x57 + .2byte \word1 + .2byte \word2 + .2byte \word3 + .endm + + .macro showobject word, byte1, byte2 + .byte 0x58 + .2byte \word + .byte \byte1 + .byte \byte2 + .endm + + .macro hideobject word, byte1, byte2 + .byte 0x59 + .2byte \word + .byte \byte1 + .byte \byte2 .endm @ If the script was called by a Person event, then that Person will turn to face toward the tile that the player is stepping off of. .macro faceplayer - .byte 0x5a + .byte 0x5a .endm - .macro spriteface word, byte - .byte 0x5b - .2byte \word - .byte \byte + .macro turnobject word, byte + .byte 0x5b + .2byte \word + .byte \byte .endm @ If the Trainer flag for Trainer index is not set, this command does absolutely nothing. .macro trainerbattle type, trainer, word, pointer1, pointer2, pointer3, pointer4 - .byte 0x5c - .byte \type - .2byte \trainer - .2byte \word - .if \type == 0 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .elseif \type == 1 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ event script - .elseif \type == 2 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ event script - .elseif \type == 3 - .4byte \pointer1 @ text - .elseif \type == 4 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .elseif \type == 5 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .elseif \type == 6 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .4byte \pointer4 @ event script - .elseif \type == 7 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .elseif \type == 8 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .4byte \pointer4 @ event script - .endif + .byte 0x5c + .byte \type + .2byte \trainer + .2byte \word + .if \type == 0 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == 1 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == 2 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == 3 + .4byte \pointer1 @ text + .elseif \type == 4 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == 5 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == 6 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .elseif \type == 7 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == 8 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .endif .endm @ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this command behind-the-scenes), and blocks script execution until the battle finishes. - .macro reptrainerbattle + .macro battlebegin .byte 0x5d .endm - .macro endtrainerbattle + .macro ontrainerbattleend .byte 0x5e .endm - .macro endtrainerbattle2 + .macro ontrainerbattleendgoto .byte 0x5f .endm @@ -668,37 +680,37 @@ .endm @ Sets Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.) - .macro cleartrainerflag trainer + .macro settrainerflag trainer .byte 0x61 .2byte \trainer .endm @ Clears Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.) - .macro settrainerflag trainer + .macro cleartrainerflag trainer .byte 0x62 .2byte \trainer .endm - .macro movespriteperm word1, word2, word3 + .macro setobjectxyperm word1, word2, word3 .byte 0x63 .2byte \word1 .2byte \word2 .2byte \word3 .endm - .macro moveoffscreen word + .macro moveobjectoffscreen word .byte 0x64 .2byte \word .endm - .macro spritebehave word, byte + .macro setobjectmovementtype word, byte .byte 0x65 .2byte \word .byte \byte .endm @ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the box and its text have been fully drawn. - .macro waittext + .macro waitmessage .byte 0x66 .endm @@ -709,7 +721,7 @@ .endm @ Holds the current message box open until the player presses a key. The message box is then closed. - .macro closebutton + .macro closemessage .byte 0x68 .endm @@ -755,7 +767,7 @@ .endm @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If B is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. - .macro multichoicedef X, Y, list, default, B + .macro multichoicedefault X, Y, list, default, B .byte 0x70 .byte \X .byte \Y @@ -765,7 +777,7 @@ .endm @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The per_row argument determines how many list items will be shown on a single row of the box. - .macro multichoicerow X, Y, list, per_row, B + .macro multichoicegrid X, Y, list, per_row, B .byte 0x71 .byte \X .byte \Y @@ -774,7 +786,7 @@ .byte \B .endm - .macro showbox byte1, byte2, byte3, byte4 + .macro drawbox byte1, byte2, byte3, byte4 .byte 0x72 .byte \byte1 .byte \byte2 @@ -782,7 +794,7 @@ .byte \byte4 .endm - .macro hidebox byte1, byte2, byte3, byte4 + .macro erasebox byte1, byte2, byte3, byte4 .byte 0x73 .byte \byte1 .byte \byte2 @@ -790,7 +802,7 @@ .byte \byte4 .endm - .macro clearbox byte1, byte2, byte3, byte4 + .macro drawboxtext byte1, byte2, byte3, byte4 .byte 0x74 .byte \byte1 .byte \byte2 @@ -799,7 +811,7 @@ .endm @ Displays a box containing the front sprite for the specified (species) Pokmon species. - .macro showpokepic species, X, Y + .macro drawpokepic species, X, Y .byte 0x75 .2byte \species .byte \X @@ -807,24 +819,24 @@ .endm @ Hides all boxes displayed with showpokepic. - .macro hidepokepic + .macro erasepokepic .byte 0x76 .endm @ In FireRed, this command is a nop. (The argument is discarded.) - .macro showcontestwinner a + .macro drawcontestwinner a .byte 0x77 .byte \a .endm @ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille characters. - .macro braillemsg text + .macro braillemessage text .byte 0x78 .4byte \text .endm @ Gives the player one of the specified (species) Pokmon at level level holding item. The unknown arguments should all be zeroes. - .macro givepokemon species, level, item, unknown1, unknown2, unknown3 + .macro givepoke species, level, item, unknown1, unknown2, unknown3 .byte 0x79 .2byte \species .byte \level @@ -847,68 +859,68 @@ .endm @ Checks if at least one Pokmon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the Pokmon that knows the move. If not, LASTRESULT is set to 0x0006. - .macro checkattack index + .macro checkpokemove index .byte 0x7c .2byte \index .endm @ Writes the name of the Pokmon at index species to the specified buffer. - .macro bufferpoke out, species + .macro getspeciesname out, species .byte 0x7d .byte \out .2byte \species .endm @ Writes the name of the first Pokmon in the player's party to the specified buffer. - .macro bufferfirstpoke out + .macro getfirstpartypokename out .byte 0x7e .byte \out .endm @ Writes the name of the Pokmon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer. - .macro bufferpartypoke out, slot + .macro getpartypokename out, slot .byte 0x7f .byte \out .2byte \slot .endm @ Writes the name of the item at index item to the specified buffer. If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead. - .macro bufferitem out, item + .macro getitemname out, item .byte 0x80 .byte \out .2byte \item .endm @ In FireRed, this command is a nop. (The first argument is discarded immediately. The second argument is read, but not used for anything.) - .macro bufferdecor a, b + .macro getdecorname a, b .byte 0x81 .byte \a .2byte \b .endm @ Writes the name of the attack at index attack to the specified buffer. - .macro bufferattack out, attack + .macro getmovename out, attack .byte 0x82 .byte \out .2byte \attack .endm @ Converts the value of input to a decimal string, and writes that string to the specified buffer. - .macro buffernum out, input + .macro getnumberstring out, input .byte 0x83 .byte \out .2byte \input .endm @ Writes the standard string identified by index to the specified buffer. Specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption (I've observed destruction of the stored player name and crashes when entering/exiting certain menu screens). - .macro bufferstd out, index + .macro getstdstring out, index .byte 0x84 .byte \out .2byte \index .endm @ Copies the string at offset to the specified buffer. - .macro buffertext out, offset + .macro getstring out, offset .byte 0x85 .byte \out .4byte \offset @@ -932,13 +944,13 @@ .4byte \products .endm - .macro pokecasino word + .macro playslotmachine word .byte 0x89 .2byte \word .endm @ In FireRed, this command is a nop. - .macro event_8a byte1, byte2, byte3 + .macro plantberrytree byte1, byte2, byte3 .byte 0x8a .byte \byte1, \byte2, \byte3 .endm @@ -977,7 +989,7 @@ .endm @ If check is 0x00, this command subtracts value from the player's money. - .macro paymoney value, check + .macro takemoney value, check .byte 0x91 .4byte \value .byte \check @@ -991,28 +1003,28 @@ .endm @ Spawns a secondary box showing how much money the player has. - .macro showmoney X, Y + .macro showmoneybox X, Y .byte 0x93 .byte \X .byte \Y .endm @ Hides the secondary box spawned by showmoney. - .macro hidemoney X, Y + .macro hidemoneybox X, Y .byte 0x94 .byte \X .byte \Y .endm @ Updates the secondary box spawned by showmoney. (What does it do with its arguments?) - .macro updatemoney X, Y + .macro updatemoneybox X, Y .byte 0x95 .byte \X .byte \Y .endm @ In FireRed, this command is a nop. - .macro event_96 word + .macro getpricereduction word .byte 0x96 .2byte \word .endm @@ -1029,36 +1041,36 @@ .byte \byte2 .endm - .macro darken word + .macro setdarklevel word .byte 0x99 .2byte \word .endm - .macro lighten byte + .macro animdarklevel byte .byte 0x9a .byte \byte .endm - .macro message2 pointer + .macro messageautoscroll pointer .byte 0x9b .4byte \pointer .endm @ Executes the specified field move animation. - .macro doanimation animation + .macro dofieldeffect animation .byte 0x9c .2byte \animation .endm @ Tells the game which party Pokmon to use for the next field move animation. - .macro setanimation animation, slot + .macro setfieldeffect animation, slot .byte 0x9d .byte \animation .2byte \slot .endm @ Blocks script execution until all playing field move animations complete. - .macro checkanimation animation + .macro waitfieldeffect animation .byte 0x9e .2byte \animation .endm @@ -1070,12 +1082,12 @@ .endm @ Checks the player's gender. If male, then 0x0000 is stored in variable 0x800D (LASTRESULT). If female, then 0x0001 is stored in LASTRESULT. - .macro checkgender + .macro checkplayergender .byte 0xa0 .endm @ Plays the specified (species) Pokmon's cry. You can use waitcry to block script execution until the sound finishes. - .macro pokecry species, effect + .macro playpokecry species, effect .byte 0xa1 .2byte \species .2byte \effect @@ -1112,12 +1124,12 @@ .byte \subroutine .endm - .macro setmapfooter word + .macro setmaplayoutindex word .byte 0xa7 .2byte \word .endm - .macro spritelevelup word, byte1, byte2, byte3 + .macro setobjectpriority word, byte1, byte2, byte3 .byte 0xa8 .2byte \word .byte \byte1 @@ -1125,14 +1137,14 @@ .byte \byte3 .endm - .macro restorespritelevel word, byte1, byte2 + .macro resetobjectpriority word, byte1, byte2 .byte 0xa9 .2byte \word .byte \byte1 .byte \byte2 .endm - .macro createvsprite byte1, byte2, word1, word2, byte3, byte4 + .macro createvobject byte1, byte2, word1, word2, byte3, byte4 .byte 0xaa .byte \byte1 .byte \byte2 @@ -1142,52 +1154,52 @@ .byte \byte4 .endm - .macro vspriteface byte1, byte2 + .macro turnvobject byte1, byte2 .byte 0xab .byte \byte1 .byte \byte2 .endm @ Queues the opening of the door tile at (X, Y) with an animation. - .macro setdooropened X, Y + .macro opendoor X, Y .byte 0xac .2byte \X .2byte \Y .endm @ Queues the closing of the door tile at (X, Y) with an animation. - .macro setdoorclosed X, Y + .macro closedoor X, Y .byte 0xad .2byte \X .2byte \Y .endm @ Executes the state changes queued with setdooropened, setdoorclosed, setdooropened2, and setdoorclosed2. - .macro doorchange + .macro waitdooranim .byte 0xae .endm @ Queues the opening of the door tile at (X, Y) without an animation. - .macro setdooropened2 X, Y + .macro setdooropen X, Y .byte 0xaf .2byte \X .2byte \Y .endm @ Queues the closing of the door tile at (X, Y) without an animation. - .macro setdoorclosed2 X, Y + .macro setdoorclosed X, Y .byte 0xb0 .2byte \X .2byte \Y .endm @ In FireRed, this command is a nop. - .macro event_b1 + .macro addelevmenuitem .byte 0xb1 .endm @ In FireRed, this command is a nop. - .macro event_b2 + .macro showelevmenu .byte 0xb2 .endm @@ -1201,7 +1213,7 @@ .2byte \word .endm - .macro removecoins word + .macro takecoins word .byte 0xb5 .2byte \word .endm @@ -1225,7 +1237,7 @@ .2byte \word .endm - .macro vjump pointer + .macro vgoto pointer .byte 0xb9 .4byte \pointer .endm @@ -1235,63 +1247,63 @@ .4byte \pointer .endm - .macro if5 byte, pointer + .macro vgoto_if byte, pointer .byte 0xbb .byte \byte .4byte \pointer .endm - .macro if6 byte, pointer + .macro vcall_if byte, pointer .byte 0xbc .byte \byte .4byte \pointer .endm - .macro vtext pointer + .macro vmessage pointer .byte 0xbd .4byte \pointer .endm - .macro vloadptr pointer + .macro vloadword pointer .byte 0xbe .4byte \pointer .endm - .macro vbuffer byte, pointer + .macro vgetstring byte, pointer .byte 0xbf .byte \byte .4byte \pointer .endm @ Spawns a secondary box showing how many Coins the player has. - .macro showcoins X, Y + .macro showcoinsbox X, Y .byte 0xc0 .byte \X .byte \Y .endm @ Hides the secondary box spawned by showcoins. It doesn't appear to use its arguments, but they are still required. - .macro hidecoins X, Y + .macro hidecoinsbox X, Y .byte 0xc1 .byte \X .byte \Y .endm @ Updates the secondary box spawned by showcoins. (What does it do with its arguments?) - .macro updatecoins X, Y + .macro updatecoinsbox X, Y .byte 0xc2 .byte \X .byte \Y .endm @ Increases the value of the specified hidden variable by 1. The hidden variable's value will not be allowed to exceed 0x00FFFFFF. - .macro inccounter a + .macro incrementgamestat a .byte 0xc3 .byte \a .endm @ Clone of warp... Except that it doesn't appear to have any effect when used in some of FireRed's default level scripts. (If it did, Berry Forest would be impossible to enter...) - .macro warp6 map, warp, X, Y + .macro setescapewarp map, warp, X, Y .byte 0xc4 map \map .byte \warp @@ -1475,8 +1487,8 @@ @ Supplementary - .macro jumpeq dest - jumpif 1, \dest + .macro goto_if_eq dest + goto_if 1, \dest .endm .macro switch var @@ -1484,15 +1496,21 @@ .endm .macro case condition, dest - compare 0x8000, \condition - jumpeq \dest + compare_var_to_value 0x8000, \condition + goto_if_eq \dest .endm .macro msgbox text, type=4 - loadptr 0, \text + loadword 0, \text callstd \type .endm + @ Message box types + MSGBOX_YESNO = 5 + + YES = 1 + NO = 0 + .macro giveitem item, amount=1, function=0 setorcopyvar 0x8000, \item setorcopyvar 0x8001, \amount diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s deleted file mode 100644 index 726de6fc1..000000000 --- a/asm/mauville_old_man.s +++ /dev/null @@ -1,1522 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80F7DC0 -sub_80F7DC0: @ 80F7DC0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - ldr r1, _080F7E84 @ =gUnknown_083E53C8 - mov r0, sp - movs r2, 0x18 - bl memcpy - movs r5, 0 - movs r0, 0x2 - add r0, sp - mov r8, r0 - ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94 - adds r1, 0x18 - adds r3, r1, 0 -_080F7DE4: - adds r0, r3, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _080F7DE4 - movs r5, 0 - ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94 - adds r2, 0x4 - mov r9, r2 - adds r6, r1, 0 -_080F7DFC: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r4, r5, 0x1 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 16 - lsrs r1, r0, 16 - adds r2, r6, r5 - ldrb r7, [r2] - adds r1, r6, r1 - ldrb r0, [r1] - strb r0, [r2] - strb r7, [r1] - lsls r4, 16 - lsrs r5, r4, 16 - cmp r5, 0x7 - bls _080F7DFC - movs r3, 0 - mov r10, r3 - movs r5, 0 -_080F7E2A: - lsls r4, r5, 2 - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl sub_80EAE88 - add r4, r8 - strh r0, [r4] - add r0, r10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _080F7E2A - movs r0, 0 - ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94 - strb r0, [r2, 0x2] - movs r7, 0 - movs r5, 0 -_080F7E56: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x2 - bhi _080F7E90 - cmp r7, 0x7 - bhi _080F7E90 - lsls r0, r5, 1 - add r0, r9 - ldr r1, _080F7E8C @ =0x0000ffff - strh r1, [r0] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - adds r4, r5, 0x1 - b _080F7EE2 - .align 2, 0 -_080F7E84: .4byte gUnknown_083E53C8 -_080F7E88: .4byte gSaveBlock1 + 0x2D94 -_080F7E8C: .4byte 0x0000ffff -_080F7E90: - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r1, r10 - bl __umodsi3 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - adds r4, r5, 0x1 - lsls r6, r5, 1 - cmp r5, 0x5 - bhi _080F7ECC - mov r3, r8 - ldrh r0, [r3] - b _080F7EC2 -_080F7EB2: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r5, 0x5 - bhi _080F7ECC - lsls r0, r1, 2 - adds r0, r3, r0 - ldrh r0, [r0] -_080F7EC2: - subs r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bgt _080F7EB2 -_080F7ECC: - cmp r1, 0x6 - bne _080F7ED2 - movs r1, 0 -_080F7ED2: - lsls r0, r1, 2 - add r0, sp - ldrh r0, [r0] - bl sub_80EB784 - mov r2, r9 - adds r1, r2, r6 - strh r0, [r1] -_080F7EE2: - lsls r0, r4, 16 - lsrs r5, r0, 16 - cmp r5, 0x9 - bls _080F7E56 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F7DC0 - - thumb_func_start sub_80F7EFC -sub_80F7EFC: @ 80F7EFC - ldr r0, _080F7F08 @ =gSaveBlock1 + 0x2D94 - adds r0, 0x29 - movs r1, 0 - strb r1, [r0] - bx lr - .align 2, 0 -_080F7F08: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F7EFC - - thumb_func_start sub_80F7F0C -sub_80F7F0C: @ 80F7F0C - ldr r1, _080F7F14 @ =gSaveBlock1 + 0x2D94 - movs r0, 0 - strb r0, [r1, 0x1] - bx lr - .align 2, 0 -_080F7F14: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F7F0C - - thumb_func_start sub_80F7F18 -sub_80F7F18: @ 80F7F18 - push {lr} - bl sub_8109A20 - pop {r0} - bx r0 - thumb_func_end sub_80F7F18 - - thumb_func_start sub_80F7F24 -sub_80F7F24: @ 80F7F24 - push {lr} - bl sub_80F8428 - pop {r0} - bx r0 - thumb_func_end sub_80F7F24 - - thumb_func_start sub_80F7F30 -sub_80F7F30: @ 80F7F30 - push {lr} - bl GetCurrentMauvilleOldMan - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080F7F76 - lsls r0, 2 - ldr r1, _080F7F48 @ =_080F7F4C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F7F48: .4byte _080F7F4C - .align 2, 0 -_080F7F4C: - .4byte _080F7F60 - .4byte _080F7F66 - .4byte _080F7F72 - .4byte _080F7F6C - .4byte _080F7F76 -_080F7F60: - bl sub_80F7EFC - b _080F7F76 -_080F7F66: - bl sub_80F7F0C - b _080F7F76 -_080F7F6C: - bl sub_80F7F24 - b _080F7F76 -_080F7F72: - bl sub_80F7F18 -_080F7F76: - bl sub_80F83D0 - pop {r0} - bx r0 - thumb_func_end sub_80F7F30 - - thumb_func_start sub_80F7F80 -sub_80F7F80: @ 80F7F80 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080F7FA8 @ =sub_80F8184 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F7FAC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x12] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F7FA8: .4byte sub_80F8184 -_080F7FAC: .4byte gTasks - thumb_func_end sub_80F7F80 - - thumb_func_start sub_80F7FB0 -sub_80F7FB0: @ 80F7FB0 - push {r4-r7,lr} - adds r6, r1, 0 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x5 - bls _080F7FBE - b _080F817A -_080F7FBE: - lsls r0, 2 - ldr r1, _080F7FC8 @ =_080F7FCC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F7FC8: .4byte _080F7FCC - .align 2, 0 -_080F7FCC: - .4byte _080F7FE4 - .4byte _080F817A - .4byte _080F8040 - .4byte _080F8074 - .4byte _080F8074 - .4byte _080F817A -_080F7FE4: - ldr r2, _080F8034 @ =gSaveBlock1 + 0x2D94 - ldr r0, _080F8038 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - adds r1, r2, 0 - adds r1, 0xE - cmp r0, 0 - bne _080F7FF4 - adds r1, r2, 0x2 -_080F7FF4: - adds r2, r1, 0 - adds r1, r6, 0 - adds r1, 0xC - movs r3, 0x5 -_080F7FFC: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080F7FFC - ldr r2, _080F803C @ =0x0000ffff - adds r4, r2, 0 - movs r2, 0 - adds r1, r6, 0 - adds r1, 0x18 - movs r3, 0x5 -_080F8016: - ldrh r0, [r1] - orrs r0, r4 - strh r0, [r1] - strh r2, [r1, 0x2] - strh r2, [r1, 0x4] - strh r2, [r1, 0x6] - adds r1, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _080F8016 - movs r0, 0 - strb r0, [r6] - strb r0, [r6, 0x1] - strh r0, [r6, 0x4] - b _080F817A - .align 2, 0 -_080F8034: .4byte gSaveBlock1 + 0x2D94 -_080F8038: .4byte gSpecialVar_0x8004 -_080F803C: .4byte 0x0000ffff -_080F8040: - ldrb r1, [r6] - lsls r1, 1 - adds r0, r6, 0 - adds r0, 0xC - adds r0, r1 - ldrh r4, [r0] - lsrs r0, r4, 9 - ldr r1, _080F8070 @ =0x000001ff - ands r1, r4 - bl sub_814A2D0 - adds r1, r0, 0 - movs r0, 0 - strh r0, [r6, 0x4] - movs r2, 0x3 - ands r2, r4 - lsrs r4, 3 - movs r0, 0x1 - ands r4, r0 - adds r2, r4 - adds r0, r6, 0 - bl sub_814A2EC - b _080F817A - .align 2, 0 -_080F8070: .4byte 0x000001ff -_080F8074: - ldrb r1, [r6, 0x1] - lsls r0, r1, 3 - adds r0, 0x18 - adds r7, r6, r0 - ldrb r0, [r6, 0x3] - cmp r0, 0x1 - beq _080F8124 - cmp r0, 0x1 - bgt _080F808C - cmp r0, 0 - beq _080F8092 - b _080F817A -_080F808C: - cmp r0, 0xFE - beq _080F8170 - b _080F817A -_080F8092: - ldrb r0, [r6, 0x2] - cmp r0, 0 - bne _080F80D0 - cmp r1, 0x6 - beq _080F80A2 - ldrh r0, [r7] - cmp r0, 0xFF - bne _080F80A6 -_080F80A2: - movs r0, 0xFE - b _080F8178 -_080F80A6: - ldrh r0, [r7, 0x2] - strb r0, [r6, 0x2] - ldrh r0, [r7] - cmp r0, 0x32 - bhi _080F80CA - movs r1, 0x3 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0xF9 - lsls r0, 16 - lsrs r0, 16 - bl m4aSongNumStart -_080F80CA: - movs r0, 0x1 - strb r0, [r6, 0x3] - b _080F8114 -_080F80D0: - ldrh r1, [r6, 0xA] - movs r2, 0xA - ldrsh r0, [r6, r2] - cmp r0, 0xA - ble _080F80E0 - ldrh r0, [r6, 0x6] - subs r0, 0x2 - strh r0, [r6, 0x6] -_080F80E0: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F80EE - ldrh r0, [r6, 0x8] - adds r0, 0x40 - b _080F80F2 -_080F80EE: - ldrh r0, [r6, 0x8] - subs r0, 0x40 -_080F80F2: - strh r0, [r6, 0x8] - ldr r4, _080F811C @ =gMPlay_SE2 - ldr r5, _080F8120 @ =0x0000ffff - ldrh r2, [r6, 0x6] - adds r0, r4, 0 - adds r1, r5, 0 - bl m4aMPlayVolumeControl - movs r0, 0x8 - ldrsh r2, [r6, r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl m4aMPlayPitchControl - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] -_080F8114: - ldrb r0, [r6, 0x2] - subs r0, 0x1 - strb r0, [r6, 0x2] - b _080F817A - .align 2, 0 -_080F811C: .4byte gMPlay_SE2 -_080F8120: .4byte 0x0000ffff -_080F8124: - adds r0, r1, 0x1 - movs r1, 0 - strb r0, [r6, 0x1] - strb r1, [r6, 0x3] - ldrh r0, [r7] - cmp r0, 0x32 - bhi _080F817A - ldrh r0, [r7, 0x6] - lsls r0, 4 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r6, 0x6] - ldr r4, _080F8168 @ =gMPlay_SE2 - ldr r5, _080F816C @ =0x0000ffff - ldrh r2, [r6, 0x6] - adds r0, r4, 0 - adds r1, r5, 0 - bl m4aMPlayVolumeControl - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r7, [r7, 0x4] - adds r0, r7 - strh r0, [r6, 0x8] - movs r0, 0x8 - ldrsh r2, [r6, r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl m4aMPlayPitchControl - b _080F817A - .align 2, 0 -_080F8168: .4byte gMPlay_SE2 -_080F816C: .4byte 0x0000ffff -_080F8170: - ldr r0, _080F8180 @ =gMPlay_SE2 - bl m4aMPlayStop - movs r0, 0xFF -_080F8178: - strb r0, [r6, 0x3] -_080F817A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F8180: .4byte gMPlay_SE2 - thumb_func_end sub_80F7FB0 - - thumb_func_start sub_80F8184 -sub_80F8184: @ 80F8184 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080F81B4 @ =gTasks - adds r5, r0, r1 - ldr r1, _080F81B8 @ =gUnknown_03005DA0 - adds r0, r5, 0 - bl sub_80F7FB0 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x5 - bls _080F81A8 - b _080F83C8 -_080F81A8: - lsls r0, 2 - ldr r1, _080F81BC @ =_080F81C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F81B4: .4byte gTasks -_080F81B8: .4byte gUnknown_03005DA0 -_080F81BC: .4byte _080F81C0 - .align 2, 0 -_080F81C0: - .4byte _080F81D8 - .4byte _080F8218 - .4byte _080F8228 - .4byte _080F82D8 - .4byte _080F83B8 - .4byte _080F82C6 -_080F81D8: - bl sub_80F7BA0 - ldr r4, _080F820C @ =gMenuWindowPtr - ldr r0, [r4] - ldr r1, _080F8210 @ =gWindowConfig_81E6CE4 - bl InitWindowFromConfig - ldr r0, [r4] - ldr r1, _080F8214 @ =gStringVar4 - movs r2, 0xF - str r2, [sp] - movs r2, 0x2 - movs r3, 0x4 - bl sub_8002EB0 - movs r0, 0 - strh r0, [r5, 0xA] - strh r0, [r5, 0xC] - strh r0, [r5, 0xE] - strh r0, [r5, 0x10] - movs r0, 0x4 - bl FadeOutBGMTemporarily - movs r0, 0x1 - b _080F83C6 - .align 2, 0 -_080F820C: .4byte gMenuWindowPtr -_080F8210: .4byte gWindowConfig_81E6CE4 -_080F8214: .4byte gStringVar4 -_080F8218: - bl IsBGMPausedOrStopped - lsls r0, 24 - cmp r0, 0 - bne _080F8224 - b _080F83C8 -_080F8224: - movs r0, 0x2 - b _080F83C6 -_080F8228: - ldr r4, _080F8240 @ =gSaveBlock1 + 0x2D94 - movs r2, 0xE - ldrsh r1, [r5, r2] - ldr r0, _080F8244 @ =gStringVar4 - adds r1, r0 - movs r3, 0 - ldrb r0, [r1] - ldr r7, _080F8248 @ =gUnknown_03005DA0 - ldrh r2, [r5, 0x12] - ldr r6, _080F824C @ =gUnknown_020388BC - b _080F825A - .align 2, 0 -_080F8240: .4byte gSaveBlock1 + 0x2D94 -_080F8244: .4byte gStringVar4 -_080F8248: .4byte gUnknown_03005DA0 -_080F824C: .4byte gUnknown_020388BC -_080F8250: - adds r1, 0x1 - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrb r0, [r1] -_080F825A: - cmp r0, 0 - beq _080F826A - cmp r0, 0xFE - beq _080F826A - cmp r0, 0xFC - beq _080F826A - cmp r0, 0xFF - bne _080F8250 -_080F826A: - cmp r2, 0 - bne _080F8278 - movs r0, 0x10 - ldrsh r1, [r5, r0] - lsls r1, 1 - adds r0, r4, 0x2 - b _080F8282 -_080F8278: - movs r2, 0x10 - ldrsh r1, [r5, r2] - lsls r1, 1 - adds r0, r4, 0 - adds r0, 0xE -_080F8282: - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x3 - ands r1, r0 - lsrs r0, 3 - movs r2, 0x1 - ands r0, r2 - adds r1, r0 - strh r1, [r6] - movs r1, 0x4 - ldrsh r0, [r7, r1] - adds r1, r3, 0 - bl __divsi3 - movs r1, 0 - strh r0, [r7, 0x4] - lsls r0, 16 - cmp r0, 0 - bgt _080F82AC - movs r0, 0x1 - strh r0, [r7, 0x4] -_080F82AC: - ldrh r0, [r5, 0x10] - adds r0, 0x1 - strh r0, [r5, 0x10] - movs r2, 0xC - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080F82BE - movs r0, 0x3 - b _080F82C0 -_080F82BE: - movs r0, 0x5 -_080F82C0: - strh r0, [r5, 0x8] - strh r1, [r5, 0xA] - b _080F83C8 -_080F82C6: - ldrh r1, [r5, 0xC] - movs r2, 0xC - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080F82D2 - b _080F83C4 -_080F82D2: - subs r0, r1, 0x1 - strh r0, [r5, 0xC] - b _080F83C8 -_080F82D8: - ldr r1, _080F8304 @ =gStringVar4 - movs r2, 0xE - ldrsh r0, [r5, r2] - adds r0, r1 - ldrb r4, [r0] - cmp r4, 0xFF - bne _080F830C - movs r0, 0xC8 - lsls r0, 1 - movs r1, 0x6 - bl FadeInNewBGM - ldr r0, _080F8308 @ =gMPlay_SE2 - movs r1, 0x2 - bl m4aMPlayFadeOutTemporarily - bl EnableBothScriptContexts - adds r0, r6, 0 - bl DestroyTask - b _080F83C8 - .align 2, 0 -_080F8304: .4byte gStringVar4 -_080F8308: .4byte gMPlay_SE2 -_080F830C: - cmp r4, 0 - bne _080F832C - ldr r0, _080F8328 @ =gMenuWindowPtr - ldr r0, [r0] - bl sub_8003418 - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - movs r0, 0x2 - strh r0, [r5, 0x8] - strh r4, [r5, 0xC] - b _080F83C8 - .align 2, 0 -_080F8328: .4byte gMenuWindowPtr -_080F832C: - cmp r4, 0xFE - bne _080F8340 - ldrh r0, [r5, 0xE] - adds r0, 0x1 - movs r1, 0 - strh r0, [r5, 0xE] - movs r0, 0x2 - strh r0, [r5, 0x8] - strh r1, [r5, 0xC] - b _080F83C8 -_080F8340: - cmp r4, 0xFC - bne _080F8354 - ldrh r0, [r5, 0xE] - adds r0, 0x2 - strh r0, [r5, 0xE] - movs r0, 0x2 - strh r0, [r5, 0x8] - movs r0, 0x8 - strh r0, [r5, 0xC] - b _080F83C8 -_080F8354: - cmp r4, 0x37 - bne _080F8374 - movs r4, 0 - strb r4, [r0] - ldr r0, _080F8370 @ =gMenuWindowPtr - ldr r0, [r0] - bl sub_8003418 - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - strh r4, [r5, 0xC] - b _080F83C8 - .align 2, 0 -_080F8370: .4byte gMenuWindowPtr -_080F8374: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080F8394 - cmp r0, 0x1 - bgt _080F8386 - cmp r0, 0 - beq _080F838C - b _080F83C8 -_080F8386: - cmp r0, 0x2 - beq _080F83A0 - b _080F83C8 -_080F838C: - ldr r0, _080F839C @ =gMenuWindowPtr - ldr r0, [r0] - bl sub_8003418 -_080F8394: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - b _080F83C8 - .align 2, 0 -_080F839C: .4byte gMenuWindowPtr -_080F83A0: - ldrh r0, [r5, 0xE] - adds r0, 0x1 - movs r1, 0 - strh r0, [r5, 0xE] - strh r1, [r5, 0xA] - ldr r0, _080F83B4 @ =gUnknown_03005DA0 - ldrh r0, [r0, 0x4] - strh r0, [r5, 0xC] - movs r0, 0x4 - b _080F83C6 - .align 2, 0 -_080F83B4: .4byte gUnknown_03005DA0 -_080F83B8: - ldrh r0, [r5, 0xC] - subs r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080F83C8 -_080F83C4: - movs r0, 0x3 -_080F83C6: - strh r0, [r5, 0x8] -_080F83C8: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F8184 - - thumb_func_start sub_80F83D0 -sub_80F83D0: @ 80F83D0 - push {r4,lr} - ldr r4, _080F83F4 @ =0x00004010 - bl GetCurrentMauvilleOldMan - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 8 - movs r0, 0x8A - lsls r0, 15 - adds r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F83F4: .4byte 0x00004010 - thumb_func_end sub_80F83D0 - - thumb_func_start sub_80F83F8 -sub_80F83F8: @ 80F83F8 - push {r4,lr} - ldr r0, _080F8424 @ =gSaveBlock1 + 0x2D94 - movs r2, 0 - movs r1, 0x3 - strb r1, [r0] - strb r2, [r0, 0x1] - movs r4, 0 - movs r3, 0xFF - adds r1, r0, 0x4 - movs r2, 0x3 -_080F840C: - strb r4, [r1] - ldrb r0, [r1, 0x4] - orrs r0, r3 - strb r0, [r1, 0x4] - adds r1, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _080F840C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F8424: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F83F8 - - thumb_func_start sub_80F8428 -sub_80F8428: @ 80F8428 - ldr r0, _080F8434 @ =gSaveBlock1 + 0x2D94 - movs r2, 0 - movs r1, 0x3 - strb r1, [r0] - strb r2, [r0, 0x1] - bx lr - .align 2, 0 -_080F8434: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F8428 - - thumb_func_start sub_80F8438 -sub_80F8438: @ 80F8438 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x32 - bne _080F8444 - movs r0, 0 -_080F8444: - bl GetGameStat - pop {r1} - bx r1 - thumb_func_end sub_80F8438 - - thumb_func_start sub_80F844C -sub_80F844C: @ 80F844C - push {lr} - adds r3, r0, 0 - movs r2, 0 - ldr r1, _080F8460 @ =gUnknown_083E53E0 -_080F8454: - ldrb r0, [r1] - cmp r0, r3 - bne _080F8464 - adds r0, r1, 0 - b _080F846E - .align 2, 0 -_080F8460: .4byte gUnknown_083E53E0 -_080F8464: - adds r1, 0x10 - adds r2, 0x1 - cmp r2, 0x23 - ble _080F8454 - ldr r0, _080F8474 @ =gUnknown_083E5610 -_080F846E: - pop {r1} - bx r1 - .align 2, 0 -_080F8474: .4byte gUnknown_083E5610 - thumb_func_end sub_80F844C - - thumb_func_start sub_80F8478 -sub_80F8478: @ 80F8478 - push {lr} - bl sub_80F844C - ldr r0, [r0, 0x4] - pop {r1} - bx r1 - thumb_func_end sub_80F8478 - - thumb_func_start sub_80F8484 -sub_80F8484: @ 80F8484 - push {lr} - bl sub_80F844C - ldr r0, [r0, 0xC] - pop {r1} - bx r1 - thumb_func_end sub_80F8484 - - thumb_func_start sub_80F8490 -sub_80F8490: @ 80F8490 - push {lr} - bl sub_80F844C - ldr r0, [r0, 0x8] - pop {r1} - bx r1 - thumb_func_end sub_80F8490 - - thumb_func_start sub_80F849C -sub_80F849C: @ 80F849C - push {lr} - movs r1, 0 - ldr r2, _080F84C4 @ =gSaveBlock1 + 0x2D94 - ldrb r0, [r2, 0x4] - cmp r0, 0 - beq _080F84BC - adds r2, 0x4 -_080F84AA: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bhi _080F84BC - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080F84AA -_080F84BC: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080F84C4: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F849C - - thumb_func_start sub_80F84C8 -sub_80F84C8: @ 80F84C8 - lsls r0, 2 - ldr r1, _080F84E8 @ =gSaveBlock1 + 0x2DB8 - adds r0, r1 - ldrb r2, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 8 - orrs r2, r1 - ldrb r1, [r0, 0x2] - lsls r1, 16 - orrs r2, r1 - ldrb r0, [r0, 0x3] - lsls r0, 24 - orrs r2, r0 - adds r0, r2, 0 - bx lr - .align 2, 0 -_080F84E8: .4byte gSaveBlock1 + 0x2DB8 - thumb_func_end sub_80F84C8 - - thumb_func_start sub_80F84EC -sub_80F84EC: @ 80F84EC - lsls r0, 2 - ldr r2, _080F8504 @ =gSaveBlock1 + 0x2DB8 - adds r0, r2 - strb r1, [r0] - lsrs r2, r1, 8 - strb r2, [r0, 0x1] - lsrs r2, r1, 16 - strb r2, [r0, 0x2] - lsrs r1, 24 - strb r1, [r0, 0x3] - bx lr - .align 2, 0 -_080F8504: .4byte gSaveBlock1 + 0x2DB8 - thumb_func_end sub_80F84EC - - thumb_func_start sub_80F8508 -sub_80F8508: @ 80F8508 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080F8528 @ =gSaveBlock1 + 0x2D94 - adds r0, 0x4 - adds r0, r5, r0 - ldrb r0, [r0] - bl sub_80F8438 - adds r4, r0, 0 - adds r0, r5, 0 - bl sub_80F84C8 - cmp r4, r0 - bhi _080F852C - movs r0, 0 - b _080F852E - .align 2, 0 -_080F8528: .4byte gSaveBlock1 + 0x2D94 -_080F852C: - movs r0, 0x1 -_080F852E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F8508 - - thumb_func_start sub_80F8534 -sub_80F8534: @ 80F8534 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r4, r0, 3 - subs r4, r0 - ldr r0, _080F855C @ =gSaveBlock1 + 0x2D9C - adds r4, r0 - adds r0, r5, 0 - movs r1, 0xFF - movs r2, 0x8 - bl memset - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x7 - bl memcpy - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F855C: .4byte gSaveBlock1 + 0x2D9C - thumb_func_end sub_80F8534 - - thumb_func_start sub_80F8560 -sub_80F8560: @ 80F8560 - push {r4-r6,lr} - adds r6, r1, 0 - lsls r5, r0, 3 - subs r5, r0 - ldr r0, _080F8594 @ =gSaveBlock1 + 0x2D9C - adds r5, r0 - adds r0, r6, 0 - bl StringLength - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0xFF - movs r2, 0x7 - bl memset - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl StringCopyN - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F8594: .4byte gSaveBlock1 + 0x2D9C - thumb_func_end sub_80F8560 - - thumb_func_start sub_80F8598 -sub_80F8598: @ 80F8598 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r0, _080F85EC @ =gSaveBlock1 + 0x2D94 - adds r0, 0x4 - adds r0, r5, r0 - strb r6, [r0] - ldr r1, _080F85F0 @ =gSaveBlock2 - adds r0, r5, 0 - bl sub_80F8560 - lsls r4, r6, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80F8438 - adds r1, r0, 0 - adds r0, r5, 0 - bl sub_80F84EC - ldr r5, _080F85F4 @ =gStringVar1 - adds r0, r4, 0 - bl sub_80F8438 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0 - movs r3, 0xA - bl ConvertIntToDecimalStringN - ldr r4, _080F85F8 @ =gStringVar2 - adds r0, r6, 0 - bl sub_80F8490 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F85EC: .4byte gSaveBlock1 + 0x2D94 -_080F85F0: .4byte gSaveBlock2 -_080F85F4: .4byte gStringVar1 -_080F85F8: .4byte gStringVar2 - thumb_func_end sub_80F8598 - - thumb_func_start sub_80F85FC -sub_80F85FC: @ 80F85FC - push {r4-r7,lr} - adds r7, r0, 0 - adds r6, r1, 0 - movs r5, 0 - cmp r5, r6 - bge _080F8612 -_080F8608: - adds r0, r7, r5 - strb r5, [r0] - adds r5, 0x1 - cmp r5, r6 - blt _080F8608 -_080F8612: - cmp r6, 0 - ble _080F8648 - adds r5, r6, 0 -_080F8618: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __modsi3 - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __modsi3 - adds r4, r7, r4 - ldrb r2, [r4] - adds r0, r7, r0 - ldrb r1, [r0] - strb r1, [r4] - strb r2, [r0] - subs r5, 0x1 - cmp r5, 0 - bne _080F8618 -_080F8648: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F85FC - - thumb_func_start sub_80F8650 -sub_80F8650: @ 80F8650 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r7, sp - mov r10, sp - ldr r0, _080F86D4 @ =gUnknown_083E5620 - ldr r0, [r0] - lsls r0, 3 - lsrs r0, 3 - adds r0, 0x3 - lsrs r0, 2 - lsls r0, 2 - mov r1, sp - subs r1, r0 - mov sp, r1 - mov r8, sp - mov r0, sp - movs r1, 0x24 - bl sub_80F85FC - movs r5, 0 - ldr r0, _080F86D8 @ =gUnknown_083E53E0 - mov r9, r0 - ldr r3, _080F86DC @ =gSaveBlock1 + 0x2D94 -_080F8686: - mov r1, r8 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, 4 - add r0, r9 - ldrb r4, [r0] - ldrb r6, [r0, 0x1] - movs r1, 0 - ldrb r0, [r3, 0x4] - cmp r0, r4 - beq _080F86AC - ldr r2, _080F86E0 @ =gSaveBlock1 + 0x2D98 -_080F869E: - adds r1, 0x1 - cmp r1, 0x3 - bgt _080F86AC - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, r4 - bne _080F869E -_080F86AC: - cmp r1, 0x4 - bne _080F86E4 - adds r0, r4, 0 - str r3, [r7] - bl sub_80F8438 - ldr r3, [r7] - cmp r0, r6 - bcc _080F86E4 - movs r0, 0x1 - strb r0, [r3, 0x1] - bl sub_80F849C - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_80F8598 - movs r0, 0x1 - b _080F86EC - .align 2, 0 -_080F86D4: .4byte gUnknown_083E5620 -_080F86D8: .4byte gUnknown_083E53E0 -_080F86DC: .4byte gSaveBlock1 + 0x2D94 -_080F86E0: .4byte gSaveBlock1 + 0x2D98 -_080F86E4: - adds r5, 0x1 - cmp r5, 0x23 - ble _080F8686 - movs r0, 0 -_080F86EC: - mov sp, r10 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F8650 - - thumb_func_start sub_80F8700 -sub_80F8700: @ 80F8700 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080F8748 @ =gSaveBlock1 + 0x2D94 - adds r0, 0x4 - adds r0, r5, r0 - ldrb r6, [r0] - ldr r4, _080F874C @ =gStringVar1 - adds r0, r5, 0 - bl sub_80F84C8 - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0xA - bl ConvertIntToDecimalStringN - ldr r4, _080F8750 @ =gStringVar2 - adds r0, r6, 0 - bl sub_80F8490 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _080F8754 @ =gStringVar3 - adds r0, r5, 0 - bl sub_80F8534 - adds r0, r6, 0 - bl sub_80F8484 - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F8748: .4byte gSaveBlock1 + 0x2D94 -_080F874C: .4byte gStringVar1 -_080F8750: .4byte gStringVar2 -_080F8754: .4byte gStringVar3 - thumb_func_end sub_80F8700 - - thumb_func_start sub_80F8758 -sub_80F8758: @ 80F8758 - push {r4-r6,lr} - bl sub_80F849C - adds r3, r0, 0 - lsls r3, 25 - movs r0, 0x80 - lsls r0, 19 - adds r3, r0 - lsrs r3, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x19 - bl MenuDrawTextWindow - movs r4, 0 - ldr r1, _080F87BC @ =gSaveBlock1 + 0x2D94 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080F87A4 - adds r6, r1, 0x4 - movs r5, 0x80 - lsls r5, 18 -_080F8784: - bl sub_80F8478 - lsrs r2, r5, 24 - movs r1, 0x1 - bl MenuPrint - movs r1, 0x80 - lsls r1, 18 - adds r5, r1 - adds r4, 0x1 - cmp r4, 0x3 - bgt _080F87A4 - adds r0, r4, r6 - ldrb r0, [r0] - cmp r0, 0 - bne _080F8784 -_080F87A4: - ldr r0, _080F87C0 @ =gPCText_Cancel - lsls r2, r4, 25 - movs r1, 0x80 - lsls r1, 18 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x1 - bl MenuPrint - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F87BC: .4byte gSaveBlock1 + 0x2D94 -_080F87C0: .4byte gPCText_Cancel - thumb_func_end sub_80F8758 - - thumb_func_start sub_80F87C4 -sub_80F87C4: @ 80F87C4 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080F87E4 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _080F87E8 - cmp r5, 0x1 - beq _080F8810 - b _080F8862 - .align 2, 0 -_080F87E4: .4byte gTasks -_080F87E8: - bl sub_80F8758 - bl sub_80F849C - adds r3, r0, 0 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - movs r0, 0x18 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x2 - bl InitMenu - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080F8862 -_080F8810: - bl ProcessMenuInput - lsls r0, 24 - asrs r4, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _080F8862 - adds r0, 0x1 - cmp r4, r0 - beq _080F8832 - bl sub_80F849C - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _080F8840 -_080F8832: - ldr r1, _080F883C @ =gScriptResult - movs r0, 0 - strh r0, [r1] - b _080F8848 - .align 2, 0 -_080F883C: .4byte gScriptResult -_080F8840: - ldr r0, _080F886C @ =gScriptResult - strh r5, [r0] - ldr r0, _080F8870 @ =gUnknown_03000748 - strb r4, [r0] -_080F8848: - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0 - movs r2, 0x19 - movs r3, 0xC - bl MenuZeroFillWindowRect - adds r0, r6, 0 - bl DestroyTask - bl EnableBothScriptContexts -_080F8862: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F886C: .4byte gScriptResult -_080F8870: .4byte gUnknown_03000748 - thumb_func_end sub_80F87C4 - - thumb_func_start sub_80F8874 -sub_80F8874: @ 80F8874 - push {lr} - ldr r0, _080F8884 @ =sub_80F87C4 - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_080F8884: .4byte sub_80F87C4 - thumb_func_end sub_80F8874 - - thumb_func_start sub_80F8888 -sub_80F8888: @ 80F8888 - push {lr} - ldr r0, _080F8898 @ =gUnknown_03000748 - ldrb r0, [r0] - bl sub_80F8700 - pop {r0} - bx r0 - .align 2, 0 -_080F8898: .4byte gUnknown_03000748 - thumb_func_end sub_80F8888 - - thumb_func_start sub_80F889C -sub_80F889C: @ 80F889C - push {lr} - bl sub_80F849C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F889C - - thumb_func_start sub_80F88AC -sub_80F88AC: @ 80F88AC - push {r4,r5,lr} - ldr r1, _080F88C8 @ =gSaveBlock1 + 0x2D94 - ldr r5, _080F88CC @ =gUnknown_03000748 - ldrb r0, [r5] - adds r1, 0x4 - adds r1, r0, r1 - ldrb r4, [r1] - bl sub_80F8508 - cmp r0, 0x1 - beq _080F88D0 - movs r0, 0 - b _080F88DA - .align 2, 0 -_080F88C8: .4byte gSaveBlock1 + 0x2D94 -_080F88CC: .4byte gUnknown_03000748 -_080F88D0: - ldrb r0, [r5] - adds r1, r4, 0 - bl sub_80F8598 - movs r0, 0x1 -_080F88DA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F88AC - - thumb_func_start sub_80F88E0 -sub_80F88E0: @ 80F88E0 - push {lr} - ldr r0, _080F88F0 @ =gSaveBlock1 + 0x2D94 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080F88F4 - movs r0, 0x1 - b _080F88F6 - .align 2, 0 -_080F88F0: .4byte gSaveBlock1 + 0x2D94 -_080F88F4: - movs r0, 0 -_080F88F6: - pop {r1} - bx r1 - thumb_func_end sub_80F88E0 - - thumb_func_start sub_80F88FC -sub_80F88FC: @ 80F88FC - push {lr} - bl sub_80F8650 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F88FC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s deleted file mode 100644 index 02b6a0a48..000000000 --- a/asm/mystery_event_script.s +++ /dev/null @@ -1,831 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start unref_sub_81261B4 -unref_sub_81261B4: @ 81261B4 - push {r4-r7,lr} - adds r5, r0, 0 - adds r7, r1, 0 - ldrb r0, [r5] - cmp r0, 0x1 - bne _08126204 - ldrb r0, [r5, 0x11] - cmp r0, 0xF - bne _08126204 - adds r6, r5, 0 - adds r6, 0x12 - adds r0, r6, 0 - bl sub_812618C - cmp r0, 0 - bne _08126204 - adds r0, r5, 0 - adds r0, 0x16 - bl sub_812618C - adds r4, r0, 0 - subs r4, r7 - adds r4, r5 - adds r0, r5, 0 - adds r0, 0x1A - bl sub_812618C - adds r1, r0, 0 - subs r1, r7 - adds r1, r5 - subs r1, r4 - adds r0, r4, 0 - bl sub_812616C - adds r1, r0, 0 - adds r0, r6, 0 - bl sub_81261A4 - movs r0, 0x1 - b _08126206 -_08126204: - movs r0, 0 -_08126206: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end unref_sub_81261B4 - - thumb_func_start unref_sub_812620C -unref_sub_812620C: @ 812620C - push {r4-r7,lr} - adds r5, r0, 0 - adds r7, r1, 0 - ldrb r0, [r5] - cmp r0, 0x1 - bne _08126260 - ldrb r0, [r5, 0x11] - cmp r0, 0x10 - bne _08126260 - adds r6, r5, 0 - adds r6, 0x12 - adds r0, r6, 0 - bl sub_812618C - cmp r0, 0 - bne _08126260 - adds r0, r5, 0 - adds r0, 0x16 - bl sub_812618C - adds r4, r0, 0 - subs r4, r7 - adds r4, r5 - adds r0, r5, 0 - adds r0, 0x1A - bl sub_812618C - adds r1, r0, 0 - subs r1, r7 - adds r1, r5 - subs r1, r4 - adds r0, r4, 0 - bl CalcCRC16 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r6, 0 - bl sub_81261A4 - movs r0, 0x1 - b _08126262 -_08126260: - movs r0, 0 -_08126262: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end unref_sub_812620C - - thumb_func_start sub_8126268 -sub_8126268: @ 8126268 - push {lr} - movs r2, 0 - ldr r3, _08126284 @ =gSaveBlock1 + 0x3A80 - movs r1, 0 -_08126270: - adds r0, r3, r1 - ldrb r0, [r0] - adds r2, r0 - adds r1, 0x1 - cmp r1, 0xB - bls _08126270 - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 -_08126284: .4byte gSaveBlock1 + 0x3A80 - thumb_func_end sub_8126268 - - thumb_func_start sub_8126288 -sub_8126288: @ 8126288 - push {r4,lr} - ldr r4, _081262B4 @ =gSaveBlock1 + 0x3A80 - bl sub_8126268 - adds r1, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _081262B0 - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _081262B0 - ldrh r0, [r4, 0x2] - cmp r0, 0 - beq _081262B0 - cmp r1, 0 - beq _081262B0 - subs r0, r4, 0x4 - ldr r0, [r0] - cmp r1, r0 - beq _081262B8 -_081262B0: - movs r0, 0 - b _081262BA - .align 2, 0 -_081262B4: .4byte gSaveBlock1 + 0x3A80 -_081262B8: - movs r0, 0x1 -_081262BA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8126288 - - thumb_func_start sub_81262C0 -sub_81262C0: @ 81262C0 - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, _081262DC @ =gSaveBlock1 + 0x3A7C - ldr r2, _081262E0 @ =0x01000008 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_081262DC: .4byte gSaveBlock1 + 0x3A7C -_081262E0: .4byte 0x01000008 - thumb_func_end sub_81262C0 - - thumb_func_start sub_81262E4 -sub_81262E4: @ 81262E4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r5, r1, 0 - lsls r2, 16 - lsrs r2, 16 - adds r6, r2, 0 - cmp r3, 0 - beq _08126304 - cmp r1, 0 - beq _08126304 - cmp r2, 0 - bne _0812630A -_08126304: - bl sub_81262C0 - b _0812632A -_0812630A: - ldr r4, _08126330 @ =gSaveBlock1 - movs r1, 0xEA - lsls r1, 6 - adds r0, r4, r1 - strb r3, [r0] - adds r1, 0x1 - adds r0, r4, r1 - strb r5, [r0] - adds r1, 0x1 - adds r0, r4, r1 - strh r6, [r0] - bl sub_8126268 - ldr r1, _08126334 @ =0x00003a7c - adds r4, r1 - str r0, [r4] -_0812632A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08126330: .4byte gSaveBlock1 -_08126334: .4byte 0x00003a7c - thumb_func_end sub_81262E4 - - thumb_func_start sub_8126338 -sub_8126338: @ 8126338 - push {r4,r5,lr} - ldr r4, _0812634C @ =gSaveBlock1 + 0x3A80 - bl sub_8126288 - cmp r0, 0 - bne _08126350 - bl sub_81262C0 - movs r0, 0 - b _0812636E - .align 2, 0 -_0812634C: .4byte gSaveBlock1 + 0x3A80 -_08126350: - ldrh r5, [r4, 0x2] - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - cmp r0, 0 - bne _08126364 - bl sub_81262C0 - b _0812636C -_08126364: - bl sub_8126268 - subs r1, r4, 0x4 - str r0, [r1] -_0812636C: - adds r0, r5, 0 -_0812636E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8126338 - - thumb_func_start script_status_stop_and_ret_1 -script_status_stop_and_ret_1: @ 8126374 - push {lr} - bl StopScript - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end script_status_stop_and_ret_1 - - thumb_func_start sub_8126380 -sub_8126380: @ 8126380 - push {r4-r7,lr} - adds r7, r0, 0 - bl ScriptReadWord - str r0, [r7, 0x68] - adds r0, r7, 0 - bl ScriptReadHalfword - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r7, 0 - bl ScriptReadWord - adds r6, r0, 0 - adds r0, r7, 0 - bl ScriptReadHalfword - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl ScriptReadWord - adds r3, r0, 0 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_8126098 - cmp r0, 0x1 - bne _081263C4 - str r0, [r7, 0x70] - b _081263C8 -_081263C4: - bl sub_81260D0 -_081263C8: - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8126380 - - thumb_func_start sub_81263D0 -sub_81263D0: @ 81263D0 - movs r0, 0 - bx lr - thumb_func_end sub_81263D0 - - thumb_func_start sub_81263D4 -sub_81263D4: @ 81263D4 - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - str r2, [r0, 0x6C] - movs r0, 0 - bx lr - thumb_func_end sub_81263D4 - - thumb_func_start sub_81263E4 -sub_81263E4: @ 81263E4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - ldr r1, [r4, 0x68] - subs r0, r1 - ldr r1, [r4, 0x64] - adds r1, r0, r1 - cmp r5, 0xFF - beq _08126408 - ldr r0, [r4, 0x6C] - cmp r5, r0 - bne _0812640E -_08126408: - ldr r0, _08126418 @ =gStringVar4 - bl StringExpandPlaceholders -_0812640E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08126418: .4byte gStringVar4 - thumb_func_end sub_81263E4 - - thumb_func_start sub_812641C -sub_812641C: @ 812641C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldr r1, [r4, 0x68] - subs r0, r1 - ldr r1, [r4, 0x64] - adds r0, r1 - bl ScriptContext2_RunNewScript - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812641C - - thumb_func_start sub_8126438 -sub_8126438: @ 8126438 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - bl IsEnigmaBerryValid - mov r8, r0 - adds r0, r7, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r7, 0x68] - subs r4, r0 - ldr r0, [r7, 0x64] - adds r4, r0 - ldr r6, _08126484 @ =gStringVar1 - ldr r5, _08126488 @ =gSaveBlock1 + 0x3160 - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x7 - bl StringCopyN - adds r0, r4, 0 - bl SetEnigmaBerry - ldr r4, _0812648C @ =gStringVar2 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x7 - bl StringCopyN - mov r0, r8 - cmp r0, 0 - bne _08126498 - ldr r0, _08126490 @ =gStringVar4 - ldr r1, _08126494 @ =gOtherText_BerryObtainedDadHasIt - b _081264B8 - .align 2, 0 -_08126484: .4byte gStringVar1 -_08126488: .4byte gSaveBlock1 + 0x3160 -_0812648C: .4byte gStringVar2 -_08126490: .4byte gStringVar4 -_08126494: .4byte gOtherText_BerryObtainedDadHasIt -_08126498: - adds r0, r6, 0 - adds r1, r4, 0 - bl StringCompare - cmp r0, 0 - beq _081264B4 - ldr r0, _081264AC @ =gStringVar4 - ldr r1, _081264B0 @ =gOtherText_BerryTransformed - b _081264B8 - .align 2, 0 -_081264AC: .4byte gStringVar4 -_081264B0: .4byte gOtherText_BerryTransformed -_081264B4: - ldr r0, _081264D4 @ =gStringVar4 - ldr r1, _081264D8 @ =gOtherText_BerryAlreadyObtained -_081264B8: - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r7, 0x6C] - bl IsEnigmaBerryValid - cmp r0, 0x1 - bne _081264E0 - ldr r0, _081264DC @ =0x0000402d - movs r1, 0x1 - bl VarSet - b _081264E4 - .align 2, 0 -_081264D4: .4byte gStringVar4 -_081264D8: .4byte gOtherText_BerryAlreadyObtained -_081264DC: .4byte 0x0000402d -_081264E0: - movs r0, 0x1 - str r0, [r7, 0x6C] -_081264E4: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8126438 - - thumb_func_start sub_81264F0 -sub_81264F0: @ 81264F0 - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r0, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - bl GiveGiftRibbonToParty - ldr r0, _0812651C @ =gStringVar4 - ldr r1, _08126520 @ =gOtherText_SpecialRibbonReceived - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0812651C: .4byte gStringVar4 -_08126520: .4byte gOtherText_SpecialRibbonReceived - thumb_func_end sub_81264F0 - - thumb_func_start sub_8126524 -sub_8126524: @ 8126524 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r4, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r4, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - adds r5, r0, 0 - ldr r0, [r4, 0x68] - subs r5, r0 - ldr r0, [r4, 0x64] - adds r5, r0 - adds r0, r4, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r4, 0x68] - subs r1, r0 - ldr r0, [r4, 0x64] - adds r1, r0 - subs r1, r5 - lsls r1, 16 - lsrs r1, 16 - str r6, [sp] - adds r0, r5, 0 - mov r2, r9 - mov r3, r8 - bl InitRamScript - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8126524 - - thumb_func_start sub_812658C -sub_812658C: @ 812658C - push {r4,lr} - adds r4, r0, 0 - bl EnableNationalPokedex - ldr r0, _081265A8 @ =gStringVar4 - ldr r1, _081265AC @ =gOtherText_DexUpgraded - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081265A8: .4byte gStringVar4 -_081265AC: .4byte gOtherText_DexUpgraded - thumb_func_end sub_812658C - - thumb_func_start sub_81265B0 -sub_81265B0: @ 81265B0 - push {r4,lr} - adds r4, r0, 0 - ldr r1, [r4, 0x8] - ldrb r0, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - bl sub_80EB890 - ldr r0, _081265D4 @ =gStringVar4 - ldr r1, _081265D8 @ =gOtherText_RareWordAdded - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081265D4: .4byte gStringVar4 -_081265D8: .4byte gOtherText_RareWordAdded - thumb_func_end sub_81265B0 - - thumb_func_start sub_81265DC -sub_81265DC: @ 81265DC - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_81262E4 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81265DC - - thumb_func_start sub_8126608 -sub_8126608: @ 8126608 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x88 - adds r6, r0, 0 - bl ScriptReadWord - ldr r1, [r6, 0x68] - subs r0, r1 - ldr r1, [r6, 0x64] - adds r5, r0, r1 - movs r0, 0x64 - adds r0, r5 - mov r8, r0 - add r4, sp, 0x24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bne _08126658 - ldr r0, _08126650 @ =gStringVar1 - ldr r1, _08126654 @ =gSystemText_Egg - movs r2, 0xB - bl StringCopyN - b _08126662 - .align 2, 0 -_08126650: .4byte gStringVar1 -_08126654: .4byte gSystemText_Egg -_08126658: - ldr r0, _08126678 @ =gStringVar1 - ldr r1, _0812667C @ =gSystemText_Pokemon2 - movs r2, 0xB - bl StringCopyN -_08126662: - ldr r0, _08126680 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x6 - bne _0812668C - ldr r0, _08126684 @ =gStringVar4 - ldr r1, _08126688 @ =gOtherText_PartyIsFull - bl StringExpandPlaceholders - movs r0, 0x3 - b _081266F6 - .align 2, 0 -_08126678: .4byte gStringVar1 -_0812667C: .4byte gSystemText_Pokemon2 -_08126680: .4byte gPlayerPartyCount -_08126684: .4byte gStringVar4 -_08126688: .4byte gOtherText_PartyIsFull -_0812668C: - ldr r7, _08126708 @ =gPlayerParty + 5 * 0x64 - adds r0, r7, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - mov r0, sp - mov r1, r8 - movs r2, 0x24 - bl memcpy - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - beq _081266C6 - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetNationalPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - bl GetNationalPokedexFlag -_081266C6: - adds r0, r7, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _081266E4 - adds r0, r7, 0 - mov r1, sp - bl GiveMailToMon2 -_081266E4: - bl party_compaction - bl CalculatePlayerPartyCount - ldr r0, _0812670C @ =gStringVar4 - ldr r1, _08126710 @ =gOtherText_PokeWasSentOver - bl StringExpandPlaceholders - movs r0, 0x2 -_081266F6: - str r0, [r6, 0x6C] - movs r0, 0 - add sp, 0x88 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08126708: .4byte gPlayerParty + 5 * 0x64 -_0812670C: .4byte gStringVar4 -_08126710: .4byte gOtherText_PokeWasSentOver - thumb_func_end sub_8126608 - - thumb_func_start sub_8126714 -sub_8126714: @ 8126714 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r4, 0x68] - subs r1, r0 - ldr r0, [r4, 0x64] - adds r1, r0 - ldr r0, _08126748 @ =gSaveBlock2 + 0x498 - movs r2, 0xBC - bl memcpy - bl sub_813601C - ldr r0, _0812674C @ =gStringVar4 - ldr r1, _08126750 @ =gOtherText_NewTrainerInHoenn - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08126748: .4byte gSaveBlock2 + 0x498 -_0812674C: .4byte gStringVar4 -_08126750: .4byte gOtherText_NewTrainerInHoenn - thumb_func_end sub_8126714 - - thumb_func_start sub_8126754 -sub_8126754: @ 8126754 - push {r4,lr} - adds r4, r0, 0 - bl EnableResetRTC - ldr r0, _08126770 @ =gStringVar4 - ldr r1, _08126774 @ =gSystemText_ClockAdjustmentUsable - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08126770: .4byte gStringVar4 -_08126774: .4byte gSystemText_ClockAdjustmentUsable - thumb_func_end sub_8126754 - - thumb_func_start sub_8126778 -sub_8126778: @ 8126778 - push {r4-r6,lr} - adds r6, r0, 0 - bl ScriptReadWord - adds r5, r0, 0 - adds r0, r6, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r6, 0x68] - subs r4, r0 - ldr r0, [r6, 0x64] - adds r4, r0 - adds r0, r6, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r6, 0x68] - subs r1, r0 - ldr r0, [r6, 0x64] - adds r1, r0 - subs r1, r4 - adds r0, r4, 0 - bl sub_812616C - cmp r5, r0 - beq _081267B6 - movs r0, 0 - str r0, [r6, 0x70] - movs r0, 0x1 - str r0, [r6, 0x6C] -_081267B6: - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8126778 - - thumb_func_start sub_81267C0 -sub_81267C0: @ 81267C0 - push {r4-r6,lr} - adds r6, r0, 0 - bl ScriptReadWord - adds r5, r0, 0 - adds r0, r6, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r6, 0x68] - subs r4, r0 - ldr r0, [r6, 0x64] - adds r4, r0 - adds r0, r6, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r6, 0x68] - subs r1, r0 - ldr r0, [r6, 0x64] - adds r1, r0 - subs r1, r4 - adds r0, r4, 0 - bl CalcCRC16 - lsls r0, 16 - lsrs r0, 16 - cmp r5, r0 - beq _08126802 - movs r0, 0 - str r0, [r6, 0x70] - movs r0, 0x1 - str r0, [r6, 0x6C] -_08126802: - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81267C0 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/party_menu.s b/asm/party_menu.s index 8a7c153b9..ec6754b86 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -7645,7 +7645,7 @@ _08070AF4: ldr r7, _08070B28 @ =0x0201c000 ldr r0, [r7] movs r1, 0x1 - bl sub_803B7C8 + bl MonTryLearningNewMove lsls r0, 16 lsrs r4, r0, 16 ldr r1, _08070B2C @ =0xfffff282 @@ -7680,7 +7680,7 @@ _08070B40: lsrs r2, r0, 16 cmp r2, 0 beq _08070B74 - ldr r1, _08070B6C @ =gUnknown_03005E94 + ldr r1, _08070B6C @ =gCB2_AfterEvolution ldr r0, _08070B70 @ =sub_80A53F8 str r0, [r1] ldr r0, [r7] @@ -7692,7 +7692,7 @@ _08070B40: bl DestroyTask b _08070C2C .align 2, 0 -_08070B6C: .4byte gUnknown_03005E94 +_08070B6C: .4byte gCB2_AfterEvolution _08070B70: .4byte sub_80A53F8 _08070B74: adds r0, r6, 0 @@ -7703,7 +7703,7 @@ _08070B7C: ldr r1, _08070BBC @ =gStringVar1 bl GetMonNickname ldr r0, _08070BC0 @ =gStringVar2 - ldr r5, _08070BC4 @ =word_2024E82 + ldr r5, _08070BC4 @ =gMoveToLearn ldrh r2, [r5] movs r1, 0xD muls r1, r2 @@ -7729,7 +7729,7 @@ _08070B7C: .align 2, 0 _08070BBC: .4byte gStringVar1 _08070BC0: .4byte gStringVar2 -_08070BC4: .4byte word_2024E82 +_08070BC4: .4byte gMoveToLearn _08070BC8: .4byte gMoveNames _08070BCC: .4byte gStringVar4 _08070BD0: .4byte gOtherText_WantsToLearn @@ -7796,7 +7796,7 @@ sub_8070C54: @ 8070C54 ldr r7, _08070C78 @ =0x0201c000 ldr r0, [r7] movs r1, 0 - bl sub_803B7C8 + bl MonTryLearningNewMove lsls r0, 16 lsrs r4, r0, 16 ldr r0, _08070C7C @ =0x0000fffe @@ -7826,7 +7826,7 @@ _08070C8C: lsrs r2, r0, 16 cmp r2, 0 beq _08070CC0 - ldr r1, _08070CB8 @ =gUnknown_03005E94 + ldr r1, _08070CB8 @ =gCB2_AfterEvolution ldr r0, _08070CBC @ =sub_80A53F8 str r0, [r1] ldr r0, [r7] @@ -7838,7 +7838,7 @@ _08070C8C: bl DestroyTask b _08070D68 .align 2, 0 -_08070CB8: .4byte gUnknown_03005E94 +_08070CB8: .4byte gCB2_AfterEvolution _08070CBC: .4byte sub_80A53F8 _08070CC0: adds r0, r6, 0 @@ -7849,7 +7849,7 @@ _08070CC8: ldr r1, _08070D08 @ =gStringVar1 bl GetMonNickname ldr r0, _08070D0C @ =gStringVar2 - ldr r5, _08070D10 @ =word_2024E82 + ldr r5, _08070D10 @ =gMoveToLearn ldrh r2, [r5] movs r1, 0xD muls r1, r2 @@ -7875,7 +7875,7 @@ _08070CC8: .align 2, 0 _08070D08: .4byte gStringVar1 _08070D0C: .4byte gStringVar2 -_08070D10: .4byte word_2024E82 +_08070D10: .4byte gMoveToLearn _08070D14: .4byte gMoveNames _08070D18: .4byte gStringVar4 _08070D1C: .4byte gOtherText_WantsToLearn @@ -7971,7 +7971,7 @@ DoEvolutionStoneItemEffect: @ 8070DBC adds r1, r6, 0 adds r2, r5, 0 bl sub_806E8D0 - ldr r1, _08070E20 @ =gUnknown_03005E94 + ldr r1, _08070E20 @ =gCB2_AfterEvolution ldr r0, _08070E24 @ =sub_80A53F8 str r0, [r1] ldr r0, _08070E28 @ =0x0201c000 @@ -7995,7 +7995,7 @@ DoEvolutionStoneItemEffect: @ 8070DBC .align 2, 0 _08070E18: .4byte gTasks _08070E1C: .4byte TaskDummy -_08070E20: .4byte gUnknown_03005E94 +_08070E20: .4byte gCB2_AfterEvolution _08070E24: .4byte sub_80A53F8 _08070E28: .4byte 0x0201c000 _08070E2C: .4byte gUnknown_0202E8F4 diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s deleted file mode 100644 index 7df634399..000000000 --- a/asm/pokeblock_feed.s +++ /dev/null @@ -1,1836 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8147890 -sub_8147890: @ 8147890 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - bl RunTasks - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8147890 - - thumb_func_start sub_81478A8 -sub_81478A8: @ 81478A8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_81478A8 - - thumb_func_start sub_81478BC -sub_81478BC: @ 81478BC - push {r4,lr} - sub sp, 0x4 - ldr r0, _081478D8 @ =gMain - ldr r1, _081478DC @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xD - bls _081478CE - b _08147AD0 -_081478CE: - lsls r0, 2 - ldr r1, _081478E0 @ =_081478E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081478D8: .4byte gMain -_081478DC: .4byte 0x0000043c -_081478E0: .4byte _081478E4 - .align 2, 0 -_081478E4: - .4byte _0814791C - .4byte _08147938 - .4byte _0814794C - .4byte _08147960 - .4byte _08147966 - .4byte _08147980 - .4byte _0814798C - .4byte _081479B8 - .4byte _081479DC - .4byte _081479F4 - .4byte _08147A20 - .4byte _08147A3C - .4byte _08147A5C - .4byte _08147A8C -_0814791C: - bl sub_80F9438 - bl sub_80F9368 - bl sub_8147B04 - ldr r1, _08147930 @ =gMain - ldr r2, _08147934 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147930: .4byte gMain -_08147934: .4byte 0x0000043c -_08147938: - bl ResetPaletteFade - ldr r2, _08147948 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - b _08147A44 - .align 2, 0 -_08147948: .4byte gPaletteFade -_0814794C: - bl ResetSpriteData - ldr r1, _08147958 @ =gMain - ldr r2, _0814795C @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147958: .4byte gMain -_0814795C: .4byte 0x0000043c -_08147960: - bl FreeAllSpritePalettes - b _08147A44 -_08147966: - ldr r0, _08147974 @ =gWindowConfig_81E6E50 - bl SetUpWindowConfig - ldr r1, _08147978 @ =gMain - ldr r2, _0814797C @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147974: .4byte gWindowConfig_81E6E50 -_08147978: .4byte gMain -_0814797C: .4byte 0x0000043c -_08147980: - ldr r0, _08147988 @ =gWindowConfig_81E6E50 - bl MultistepInitMenuWindowBegin - b _08147A44 - .align 2, 0 -_08147988: .4byte gWindowConfig_81E6E50 -_0814798C: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - bne _08147996 - b _08147AD0 -_08147996: - ldr r0, _081479A8 @ =0x02000000 - ldr r1, _081479AC @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r1, _081479B0 @ =gMain - ldr r2, _081479B4 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_081479A8: .4byte 0x02000000 -_081479AC: .4byte 0x0001ffff -_081479B0: .4byte gMain -_081479B4: .4byte 0x0000043c -_081479B8: - ldr r0, _081479D4 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081479D8 @ =gPlayerParty - adds r0, r1 - bl sub_8147B20 - lsls r0, 24 - cmp r0, 0 - bne _081479D0 - b _08147AD0 -_081479D0: - b _08147A44 - .align 2, 0 -_081479D4: .4byte gUnknown_02039310 -_081479D8: .4byte gPlayerParty -_081479DC: - bl sub_81480B4 - ldr r1, _081479EC @ =0x02000000 - ldr r2, _081479F0 @ =0x0001fffd - adds r1, r2 - strb r0, [r1] - b _08147A44 - .align 2, 0 -_081479EC: .4byte 0x02000000 -_081479F0: .4byte 0x0001fffd -_081479F4: - ldr r0, _08147A10 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08147A14 @ =gPlayerParty - adds r0, r1 - bl sub_8147F84 - ldr r1, _08147A18 @ =0x02000000 - ldr r2, _08147A1C @ =0x0001fffe - adds r1, r2 - strb r0, [r1] - b _08147A44 - .align 2, 0 -_08147A10: .4byte gUnknown_02039310 -_08147A14: .4byte gPlayerParty -_08147A18: .4byte 0x02000000 -_08147A1C: .4byte 0x0001fffe -_08147A20: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r1, _08147A34 @ =gMain - ldr r2, _08147A38 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147A34: .4byte gMain -_08147A38: .4byte 0x0000043c -_08147A3C: - bl sub_8055870 - cmp r0, 0x1 - beq _08147AD0 -_08147A44: - ldr r1, _08147A54 @ =gMain - ldr r0, _08147A58 @ =0x0000043c - adds r1, r0 -_08147A4A: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08147AD0 - .align 2, 0 -_08147A54: .4byte gMain -_08147A58: .4byte 0x0000043c -_08147A5C: - ldr r3, _08147AB0 @ =0x04000208 - ldrh r2, [r3] - movs r0, 0 - strh r0, [r3] - ldr r4, _08147AB4 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _08147AB8 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r0, _08147ABC @ =sub_81478A8 - bl SetVBlankCallback - ldr r1, _08147AC0 @ =gMain - ldr r2, _08147AC4 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08147A8C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _08147AC8 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _08147ACC @ =sub_8147890 - bl SetMainCallback2 - movs r0, 0x1 - b _08147AD2 - .align 2, 0 -_08147AB0: .4byte 0x04000208 -_08147AB4: .4byte 0x04000200 -_08147AB8: .4byte REG_DISPSTAT -_08147ABC: .4byte sub_81478A8 -_08147AC0: .4byte gMain -_08147AC4: .4byte 0x0000043c -_08147AC8: .4byte gPaletteFade -_08147ACC: .4byte sub_8147890 -_08147AD0: - movs r0, 0 -_08147AD2: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81478BC - - thumb_func_start sub_8147ADC -sub_8147ADC: @ 8147ADC - push {lr} -_08147ADE: - bl sub_81478BC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147AF2 - movs r0, 0x1 - bl sub_8147DDC - b _08147AFE -_08147AF2: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147ADE -_08147AFE: - pop {r0} - bx r0 - thumb_func_end sub_8147ADC - - thumb_func_start sub_8147B04 -sub_8147B04: @ 8147B04 - ldr r1, _08147B18 @ =REG_BG1CNT - ldr r2, _08147B1C @ =0x00001d02 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_08147B18: .4byte REG_BG1CNT -_08147B1C: .4byte 0x00001d02 - thumb_func_end sub_8147B04 - - thumb_func_start sub_8147B20 -sub_8147B20: @ 8147B20 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r0, _08147B40 @ =0x02000000 - ldr r1, _08147B44 @ =0x0001ffff - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _08147B34 - b _08147C84 -_08147B34: - lsls r0, 2 - ldr r1, _08147B48 @ =_08147B4C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08147B40: .4byte 0x02000000 -_08147B44: .4byte 0x0001ffff -_08147B48: .4byte _08147B4C - .align 2, 0 -_08147B4C: - .4byte _08147B70 - .4byte _08147BB8 - .4byte _08147BF0 - .4byte _08147BFC - .4byte _08147C08 - .4byte _08147C14 - .4byte _08147C2C - .4byte _08147C38 - .4byte _08147C60 -_08147B70: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - lsls r0, r5, 3 - ldr r1, _08147BAC @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08147BB0 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08147BB4 @ =gUnknown_081FAF4C - ldr r4, [r4, 0x4] - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - bl HandleLoadSpecialPokePic - b _08147C40 - .align 2, 0 -_08147BAC: .4byte gMonFrontPicTable -_08147BB0: .4byte gMonFrontPicCoords -_08147BB4: .4byte gUnknown_081FAF4C -_08147BB8: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r1, r0, 0 - adds r0, r5, 0 - adds r2, r6, 0 - bl sub_80409C8 - adds r4, r0, 0 - bl LoadCompressedObjectPalette - ldrh r0, [r4, 0x4] - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - b _08147C40 -_08147BF0: - ldr r0, _08147BF8 @ =gUnknown_083F7F74 - bl LoadCompressedObjectPic - b _08147C40 - .align 2, 0 -_08147BF8: .4byte gUnknown_083F7F74 -_08147BFC: - ldr r0, _08147C04 @ =gUnknown_083F7F7C - bl LoadCompressedObjectPalette - b _08147C40 - .align 2, 0 -_08147C04: .4byte gUnknown_083F7F7C -_08147C08: - ldr r0, _08147C10 @ =gUnknown_084121DC - bl LoadCompressedObjectPic - b _08147C40 - .align 2, 0 -_08147C10: .4byte gUnknown_084121DC -_08147C14: - ldr r0, _08147C24 @ =gScriptItemId - ldrb r0, [r0] - bl sub_8147C90 - ldr r0, _08147C28 @ =gUnknown_02039350 - bl LoadCompressedObjectPalette - b _08147C40 - .align 2, 0 -_08147C24: .4byte gScriptItemId -_08147C28: .4byte gUnknown_02039350 -_08147C2C: - ldr r0, _08147C34 @ =gBattleTerrainTiles_Building - movs r1, 0xC0 - lsls r1, 19 - b _08147C3C - .align 2, 0 -_08147C34: .4byte gBattleTerrainTiles_Building -_08147C38: - ldr r0, _08147C50 @ =gUnknown_08E782FC - ldr r1, _08147C54 @ =0x0600e800 -_08147C3C: - bl LZDecompressVram -_08147C40: - ldr r1, _08147C58 @ =0x02000000 - ldr r0, _08147C5C @ =0x0001ffff - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08147C84 - .align 2, 0 -_08147C50: .4byte gUnknown_08E782FC -_08147C54: .4byte 0x0600e800 -_08147C58: .4byte 0x02000000 -_08147C5C: .4byte 0x0001ffff -_08147C60: - ldr r0, _08147C78 @ =gBattleTerrainPalette_BattleTower - movs r1, 0x20 - movs r2, 0x60 - bl LoadCompressedPalette - ldr r0, _08147C7C @ =0x02000000 - ldr r1, _08147C80 @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _08147C86 - .align 2, 0 -_08147C78: .4byte gBattleTerrainPalette_BattleTower -_08147C7C: .4byte 0x02000000 -_08147C80: .4byte 0x0001ffff -_08147C84: - movs r0, 0 -_08147C86: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8147B20 - - thumb_func_start sub_8147C90 -sub_8147C90: @ 8147C90 - push {lr} - lsls r0, 24 - lsrs r0, 21 - ldr r1, _08147CB8 @ =gSaveBlock1 + 0x7F8 - adds r0, r1 - movs r1, 0 - bl sub_810CA9C - lsls r0, 24 - ldr r2, _08147CBC @ =gUnknown_02039350 - ldr r1, _08147CC0 @ =gUnknown_084120A4 - lsrs r0, 22 - subs r0, 0x4 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r0, _08147CC4 @ =0x000039e2 - strh r0, [r2, 0x4] - pop {r0} - bx r0 - .align 2, 0 -_08147CB8: .4byte gSaveBlock1 + 0x7F8 -_08147CBC: .4byte gUnknown_02039350 -_08147CC0: .4byte gUnknown_084120A4 -_08147CC4: .4byte 0x000039e2 - thumb_func_end sub_8147C90 - - thumb_func_start sub_8147CC8 -sub_8147CC8: @ 8147CC8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08147D00 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08147CDC - b _08147DCE -_08147CDC: - ldr r0, _08147D04 @ =gTasks - lsls r2, r4, 2 - adds r1, r2, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x8 - ldrsh r3, [r1, r0] - ldr r0, _08147D08 @ =0x0000010d - adds r5, r2, 0 - cmp r3, r0 - beq _08147D50 - cmp r3, r0 - bgt _08147D0C - cmp r3, 0 - beq _08147D20 - cmp r3, 0xFF - beq _08147D38 - b _08147D8C - .align 2, 0 -_08147D00: .4byte gPaletteFade -_08147D04: .4byte gTasks -_08147D08: .4byte 0x0000010d -_08147D0C: - ldr r0, _08147D1C @ =0x00000119 - cmp r3, r0 - beq _08147D68 - adds r0, 0x10 - cmp r3, r0 - beq _08147D80 - b _08147D8C - .align 2, 0 -_08147D1C: .4byte 0x00000119 -_08147D20: - ldr r0, _08147D30 @ =gUnknown_03005F3C - strb r3, [r0] - ldr r0, _08147D34 @ =gUnknown_03005F94 - strh r3, [r0] - bl sub_81481DC - b _08147D8C - .align 2, 0 -_08147D30: .4byte gUnknown_03005F3C -_08147D34: .4byte gUnknown_03005F94 -_08147D38: - ldr r0, _08147D48 @ =0x02000000 - ldr r2, _08147D4C @ =0x0001fffd - adds r0, r2 - ldrb r0, [r0] - ldrb r1, [r1, 0xA] - bl sub_8148108 - b _08147D8C - .align 2, 0 -_08147D48: .4byte 0x02000000 -_08147D4C: .4byte 0x0001fffd -_08147D50: - bl sub_814817C - ldr r1, _08147D60 @ =0x02000000 - ldr r2, _08147D64 @ =0x0001fffc - adds r1, r2 - strb r0, [r1] - b _08147D8C - .align 2, 0 -_08147D60: .4byte 0x02000000 -_08147D64: .4byte 0x0001fffc -_08147D68: - ldr r0, _08147D78 @ =0x02000000 - ldr r1, _08147D7C @ =0x0001fffe - adds r0, r1 - ldrb r0, [r0] - bl sub_8148044 - b _08147D8C - .align 2, 0 -_08147D78: .4byte 0x02000000 -_08147D7C: .4byte 0x0001fffe -_08147D80: - ldr r0, _08147D88 @ =sub_8147E40 - str r0, [r1] - b _08147DCE - .align 2, 0 -_08147D88: .4byte sub_8147E40 -_08147D8C: - ldr r0, _08147DA0 @ =gUnknown_03005F94 - ldr r1, _08147DA4 @ =gUnknown_03005F34 - ldrh r2, [r0] - ldrh r0, [r1] - cmp r2, r0 - bcs _08147DA8 - bl sub_814825C - b _08147DB8 - .align 2, 0 -_08147DA0: .4byte gUnknown_03005F94 -_08147DA4: .4byte gUnknown_03005F34 -_08147DA8: - cmp r2, r0 - bne _08147DB8 - ldr r0, _08147DD4 @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0xFE - strh r0, [r1, 0x8] -_08147DB8: - ldr r1, _08147DD8 @ =gUnknown_03005F94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r0, _08147DD4 @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] -_08147DCE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08147DD4: .4byte gTasks -_08147DD8: .4byte gUnknown_03005F94 - thumb_func_end sub_8147CC8 - - thumb_func_start sub_8147DDC -sub_8147DDC: @ 8147DDC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08147E08 @ =sub_8147CC8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08147E0C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147E08: .4byte sub_8147CC8 -_08147E0C: .4byte gTasks - thumb_func_end sub_8147DDC - - thumb_func_start sub_8147E10 -sub_8147E10: @ 8147E10 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl MenuUpdateWindowText - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147E30 - ldr r0, _08147E38 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08147E3C @ =sub_8147F4C - str r0, [r1] -_08147E30: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147E38: .4byte gTasks -_08147E3C: .4byte sub_8147F4C - thumb_func_end sub_8147E10 - - thumb_func_start sub_8147E40 -sub_8147E40: @ 8147E40 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08147E94 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - adds r5, r1, 0 - muls r5, r0 - ldr r0, _08147E98 @ =gPlayerParty - adds r5, r0 - ldr r0, _08147E9C @ =gScriptItemId - ldrh r4, [r0] - lsls r4, 3 - ldr r0, _08147EA0 @ =gSaveBlock1 + 0x7F8 - adds r4, r0 - adds r0, r5, 0 - bl GetNature - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_810CAE4 - ldr r6, _08147EA4 @ =gUnknown_02039312 - strh r0, [r6] - ldr r1, _08147EA8 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - ldr r1, _08147EAC @ =gStringVar2 - adds r0, r4, 0 - bl sub_810CB44 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08147EB8 - ldr r0, _08147EB0 @ =gStringVar4 - ldr r1, _08147EB4 @ =gContestStatsText_NormallyAte - bl StringExpandPlaceholders - b _08147ED8 - .align 2, 0 -_08147E94: .4byte gUnknown_02039310 -_08147E98: .4byte gPlayerParty -_08147E9C: .4byte gScriptItemId -_08147EA0: .4byte gSaveBlock1 + 0x7F8 -_08147EA4: .4byte gUnknown_02039312 -_08147EA8: .4byte gStringVar1 -_08147EAC: .4byte gStringVar2 -_08147EB0: .4byte gStringVar4 -_08147EB4: .4byte gContestStatsText_NormallyAte -_08147EB8: - cmp r0, 0 - ble _08147ED0 - ldr r0, _08147EC8 @ =gStringVar4 - ldr r1, _08147ECC @ =gContestStatsText_HappilyAte - bl StringExpandPlaceholders - b _08147ED8 - .align 2, 0 -_08147EC8: .4byte gStringVar4 -_08147ECC: .4byte gContestStatsText_HappilyAte -_08147ED0: - ldr r0, _08147EF8 @ =gStringVar4 - ldr r1, _08147EFC @ =gContestStatsText_DisdainfullyAte - bl StringExpandPlaceholders -_08147ED8: - ldr r0, _08147EF8 @ =gStringVar4 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r1, _08147F00 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _08147F04 @ =sub_8147E10 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08147EF8: .4byte gStringVar4 -_08147EFC: .4byte gContestStatsText_DisdainfullyAte -_08147F00: .4byte gTasks -_08147F04: .4byte sub_8147E10 - thumb_func_end sub_8147E40 - - thumb_func_start sub_8147F08 -sub_8147F08: @ 8147F08 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08147F3C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08147F34 - ldr r0, _08147F40 @ =gMPlay_BGM - ldr r1, _08147F44 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r0, _08147F48 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08147F34: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147F3C: .4byte gPaletteFade -_08147F40: .4byte gMPlay_BGM -_08147F44: .4byte 0x0000ffff -_08147F48: .4byte gMain - thumb_func_end sub_8147F08 - - thumb_func_start sub_8147F4C -sub_8147F4C: @ 8147F4C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08147F7C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08147F80 @ =sub_8147F08 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147F7C: .4byte gTasks -_08147F80: .4byte sub_8147F08 - thumb_func_end sub_8147F4C - - thumb_func_start sub_8147F84 -sub_8147F84: @ 8147F84 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r1, 0x41 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08148024 @ =gUnknown_02024E8C - movs r1, 0x30 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08148028 @ =gUnknown_03005F24 - strh r4, [r0] - ldr r0, _0814802C @ =gUnknown_03005F2C - mov r1, r8 - strb r1, [r0] - adds r0, r5, 0 - bl GetNature - ldr r1, _08148030 @ =gUnknown_03005F30 - strb r0, [r1] - ldr r7, _08148034 @ =gSprites - mov r1, r8 - lsls r0, r1, 4 - add r0, r8 - lsls r5, r0, 2 - adds r6, r5, r7 - strh r4, [r6, 0x32] - adds r0, r7, 0 - adds r0, 0x1C - adds r0, r5, r0 - ldr r1, _08148038 @ =SpriteCallbackDummy - str r1, [r0] - ldr r0, _0814803C @ =gUnknown_03005F28 - mov r9, r0 - movs r0, 0x1 - mov r1, r9 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8040A3C - lsls r0, 24 - cmp r0, 0 - bne _08148016 - adds r0, r7, 0 - adds r0, 0x10 - adds r0, r5, r0 - ldr r1, _08148040 @ =gSpriteAffineAnimTable_84120EC - str r1, [r0] - ldrb r3, [r6, 0x1] - movs r0, 0x3 - orrs r3, r0 - strb r3, [r6, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r6, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r6, 0 - bl CalcCenterToCornerVec - movs r0, 0 - mov r1, r9 - strb r0, [r1] -_08148016: - mov r0, r8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08148024: .4byte gUnknown_02024E8C -_08148028: .4byte gUnknown_03005F24 -_0814802C: .4byte gUnknown_03005F2C -_08148030: .4byte gUnknown_03005F30 -_08148034: .4byte gSprites -_08148038: .4byte SpriteCallbackDummy -_0814803C: .4byte gUnknown_03005F28 -_08148040: .4byte gSpriteAffineAnimTable_84120EC - thumb_func_end sub_8147F84 - - thumb_func_start sub_8148044 -sub_8148044: @ 8148044 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0814806C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r3 - movs r0, 0x30 - strh r0, [r2, 0x20] - movs r0, 0x50 - strh r0, [r2, 0x22] - ldr r0, _08148070 @ =0x0000fff8 - strh r0, [r2, 0x2E] - movs r0, 0x1 - strh r0, [r2, 0x30] - adds r3, 0x1C - adds r1, r3 - ldr r0, _08148074 @ =sub_8148078 - str r0, [r1] - bx lr - .align 2, 0 -_0814806C: .4byte gSprites -_08148070: .4byte 0x0000fff8 -_08148074: .4byte sub_8148078 - thumb_func_end sub_8148044 - - thumb_func_start sub_8148078 -sub_8148078: @ 8148078 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - adds r0, 0x4 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x2E] - ldrh r2, [r4, 0x22] - adds r1, r0, r2 - strh r1, [r4, 0x22] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _0814809E - ldrh r0, [r4, 0x32] - movs r1, 0 - bl PlayCry1 -_0814809E: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x9 - bne _081480AA - ldr r0, _081480B0 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_081480AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081480B0: .4byte SpriteCallbackDummy - thumb_func_end sub_8148078 - - thumb_func_start sub_81480B4 -sub_81480B4: @ 81480B4 - push {r4,r5,lr} - movs r0, 0xBC - movs r1, 0x64 - movs r2, 0x2 - bl sub_810BA50 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _081480FC @ =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r0, r3, r5 - ldrb r2, [r0, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] - adds r1, r5, 0 - adds r1, 0x10 - adds r1, r3, r1 - ldr r2, _08148100 @ =gSpriteAffineAnimTable_84121A0 - str r2, [r1] - adds r5, 0x1C - adds r3, r5 - ldr r1, _08148104 @ =SpriteCallbackDummy - str r1, [r3] - bl InitSpriteAffineAnim - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_081480FC: .4byte gSprites -_08148100: .4byte gSpriteAffineAnimTable_84121A0 -_08148104: .4byte SpriteCallbackDummy - thumb_func_end sub_81480B4 - - thumb_func_start sub_8148108 -sub_8148108: @ 8148108 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08148148 @ =gSprites - mov r8, r0 - lsls r0, r7, 4 - adds r0, r7 - lsls r6, r0, 2 - mov r0, r8 - adds r4, r6, r0 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - cmp r5, 0 - bne _08148150 - mov r0, r8 - adds r0, 0x10 - adds r0, r6, r0 - ldr r1, _0814814C @ =gSpriteAffineAnimTable_84121A4 - b _08148158 - .align 2, 0 -_08148148: .4byte gSprites -_0814814C: .4byte gSpriteAffineAnimTable_84121A4 -_08148150: - mov r0, r8 - adds r0, 0x10 - adds r0, r6, r0 - ldr r1, _08148174 @ =gSpriteAffineAnimTable_84121A8 -_08148158: - str r1, [r0] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _08148178 @ =gSprites - adds r0, r1 - bl InitSpriteAffineAnim - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08148174: .4byte gSpriteAffineAnimTable_84121A8 -_08148178: .4byte gSprites - thumb_func_end sub_8148108 - - thumb_func_start sub_814817C -sub_814817C: @ 814817C - push {lr} - ldr r0, _081481A4 @ =gSpriteTemplate_84121E4 - movs r1, 0xAE - movs r2, 0x54 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081481A8 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r2, _081481AC @ =0x0000fff4 - strh r2, [r1, 0x2E] - movs r2, 0x1 - strh r2, [r1, 0x30] - pop {r1} - bx r1 - .align 2, 0 -_081481A4: .4byte gSpriteTemplate_84121E4 -_081481A8: .4byte gSprites -_081481AC: .4byte 0x0000fff4 - thumb_func_end sub_814817C - - thumb_func_start sub_81481B0 -sub_81481B0: @ 81481B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x20] - subs r0, 0x4 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x2E] - ldrh r3, [r2, 0x22] - adds r1, r0, r3 - strh r1, [r2, 0x22] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _081481D6 - adds r0, r2, 0 - bl DestroySprite -_081481D6: - pop {r0} - bx r0 - thumb_func_end sub_81481B0 - - thumb_func_start sub_81481DC -sub_81481DC: @ 81481DC - push {r4-r7,lr} - ldr r6, _0814824C @ =gUnknown_03005F34 - movs r0, 0x1 - strh r0, [r6] - ldr r1, _08148250 @ =gNatureToMonPokeblockAnim - ldr r0, _08148254 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrb r3, [r0] - movs r4, 0 - ldr r2, _08148258 @ =gMonPokeblockAnims - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r7, r2, 0 - adds r7, 0x8 - adds r0, r1, r7 - ldrh r0, [r0] - adds r0, 0x1 - strh r0, [r6] - adds r5, r2, 0 - adds r5, 0x12 - adds r1, r5 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _08148244 - adds r2, r6, 0 - adds r6, r5, 0 - adds r5, r7, 0 -_0814821A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r4, 0x7 - bhi _08148244 - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r0, r1, r5 - ldrh r0, [r0] - ldrh r7, [r2] - adds r0, r7 - strh r0, [r2] - adds r1, r6 - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x1 - bne _0814821A -_08148244: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814824C: .4byte gUnknown_03005F34 -_08148250: .4byte gNatureToMonPokeblockAnim -_08148254: .4byte gUnknown_03005F30 -_08148258: .4byte gMonPokeblockAnims - thumb_func_end sub_81481DC - - thumb_func_start sub_814825C -sub_814825C: @ 814825C - push {lr} - ldr r0, _08148274 @ =gUnknown_03005F3C - ldrb r0, [r0] - cmp r0, 0x5A - bls _08148268 - b _08148532 -_08148268: - lsls r0, 2 - ldr r1, _08148278 @ =_0814827C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08148274: .4byte gUnknown_03005F3C -_08148278: .4byte _0814827C - .align 2, 0 -_0814827C: - .4byte _081483E8 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _0814843C - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _0814847A - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _081484CC - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148524 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 -_081483E8: - ldr r2, _0814841C @ =gUnknown_03005F40 - ldr r1, _08148420 @ =gNatureToMonPokeblockAnim - ldr r0, _08148424 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r2, _08148428 @ =gUnknown_03005F20 - ldr r0, _0814842C @ =gUnknown_03005F2C - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08148430 @ =gSprites - adds r1, r0 - str r1, [r2] - ldr r0, _08148434 @ =gUnknown_03005F50 - movs r2, 0x44 - bl memcpy - ldr r1, _08148438 @ =gUnknown_03005F3C - movs r0, 0xA - strb r0, [r1] - b _08148532 - .align 2, 0 -_0814841C: .4byte gUnknown_03005F40 -_08148420: .4byte gNatureToMonPokeblockAnim -_08148424: .4byte gUnknown_03005F30 -_08148428: .4byte gUnknown_03005F20 -_0814842C: .4byte gUnknown_03005F2C -_08148430: .4byte gSprites -_08148434: .4byte gUnknown_03005F50 -_08148438: .4byte gUnknown_03005F3C -_0814843C: - bl sub_8148540 - ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim - ldr r0, _081484A8 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08148474 - ldr r3, _081484AC @ =gUnknown_03005F20 - ldr r2, [r3] - ldrb r0, [r2, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r2, 0x1] - ldr r2, [r3] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x3] - ldr r0, [r3] - ldr r1, _081484B0 @ =gSpriteAffineAnimTable_8412050 - str r1, [r0, 0x10] - bl InitSpriteAffineAnim -_08148474: - ldr r1, _081484B4 @ =gUnknown_03005F3C - movs r0, 0x32 - strb r0, [r1] -_0814847A: - ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim - ldr r0, _081484A8 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x1 - adds r2, r0, r1 - ldrb r1, [r2] - cmp r1, 0 - beq _081484EE - ldr r0, _081484B8 @ =gUnknown_03005F28 - ldrb r0, [r0] - cmp r0, 0 - bne _081484BC - ldr r0, _081484AC @ =gUnknown_03005F20 - ldr r0, [r0] - adds r1, 0xA - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAffineAnim - b _081484EE - .align 2, 0 -_081484A4: .4byte gNatureToMonPokeblockAnim -_081484A8: .4byte gUnknown_03005F30 -_081484AC: .4byte gUnknown_03005F20 -_081484B0: .4byte gSpriteAffineAnimTable_8412050 -_081484B4: .4byte gUnknown_03005F3C -_081484B8: .4byte gUnknown_03005F28 -_081484BC: - ldr r0, _081484C8 @ =gUnknown_03005F20 - ldr r0, [r0] - ldrb r1, [r2] - bl StartSpriteAffineAnim - b _081484EE - .align 2, 0 -_081484C8: .4byte gUnknown_03005F20 -_081484CC: - bl sub_81485CC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08148532 - ldr r0, _081484F8 @ =gUnknown_03005FA0 - movs r1, 0x12 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08148504 - ldr r1, _081484FC @ =gUnknown_03005F40 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8148540 -_081484EE: - ldr r1, _08148500 @ =gUnknown_03005F3C - movs r0, 0x3C - strb r0, [r1] - b _08148532 - .align 2, 0 -_081484F8: .4byte gUnknown_03005FA0 -_081484FC: .4byte gUnknown_03005F40 -_08148500: .4byte gUnknown_03005F3C -_08148504: - ldr r0, _0814851C @ =gUnknown_03005F20 - ldr r0, [r0] - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r1, _08148520 @ =gUnknown_03005F3C - movs r0, 0x46 - strb r0, [r1] - b _08148532 - .align 2, 0 -_0814851C: .4byte gUnknown_03005F20 -_08148520: .4byte gUnknown_03005F3C -_08148524: - bl sub_8148618 - ldr r0, _08148538 @ =gUnknown_03005F40 - movs r1, 0 - strb r1, [r0] - ldr r0, _0814853C @ =gUnknown_03005F3C - strb r1, [r0] -_08148532: - pop {r0} - bx r0 - .align 2, 0 -_08148538: .4byte gUnknown_03005F40 -_0814853C: .4byte gUnknown_03005F3C - thumb_func_end sub_814825C - - thumb_func_start sub_8148540 -sub_8148540: @ 8148540 - push {r4-r7,lr} - movs r4, 0 - ldr r5, _081485B4 @ =gUnknown_03005FA0 - mov r12, r5 - ldr r7, _081485B8 @ =gMonPokeblockAnims - ldr r6, _081485BC @ =gUnknown_03005F40 -_0814854C: - lsls r2, r4, 1 - mov r0, r12 - adds r3, r2, r0 - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - adds r2, r7 - ldrh r0, [r2] - strh r0, [r3] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _0814854C - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081485C4 - movs r2, 0 - ldrsh r0, [r5, r2] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x14] - movs r1, 0 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - bl Cos - strh r0, [r5, 0x16] - ldrh r0, [r5, 0x8] - strh r0, [r5, 0x18] - ldr r0, _081485C0 @ =gUnknown_03005F20 - ldr r1, [r0] - ldrh r0, [r1, 0x24] - strh r0, [r5, 0x1A] - ldrh r0, [r1, 0x26] - strh r0, [r5, 0x1C] - bl sub_8148710 - ldrh r0, [r5, 0x18] - strh r0, [r5, 0x8] - bl sub_814862C - ldrh r0, [r5, 0x18] - strh r0, [r5, 0x8] - movs r0, 0 - b _081485C6 - .align 2, 0 -_081485B4: .4byte gUnknown_03005FA0 -_081485B8: .4byte gMonPokeblockAnims -_081485BC: .4byte gUnknown_03005F40 -_081485C0: .4byte gUnknown_03005F20 -_081485C4: - movs r0, 0x1 -_081485C6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8148540 - - thumb_func_start sub_81485CC -sub_81485CC: @ 81485CC - push {r4,lr} - ldr r3, _08148604 @ =gUnknown_03005FA0 - ldrh r0, [r3, 0x18] - ldrh r1, [r3, 0x8] - subs r0, r1 - lsls r0, 16 - ldr r1, _08148608 @ =gUnknown_03005F20 - ldr r4, [r1] - lsrs r0, 15 - ldr r1, _0814860C @ =0x0201d000 - adds r2, r0, r1 - ldrh r2, [r2] - strh r2, [r4, 0x24] - movs r2, 0x80 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4, 0x26] - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - lsls r0, 16 - cmp r0, 0 - beq _08148610 - movs r0, 0 - b _08148612 - .align 2, 0 -_08148604: .4byte gUnknown_03005FA0 -_08148608: .4byte gUnknown_03005F20 -_0814860C: .4byte 0x0201d000 -_08148610: - movs r0, 0x1 -_08148612: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81485CC - - thumb_func_start sub_8148618 -sub_8148618: @ 8148618 - push {lr} - ldr r0, _08148628 @ =gUnknown_03005F20 - ldr r0, [r0] - bl FreeSpriteOamMatrix - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_08148628: .4byte gUnknown_03005F20 - thumb_func_end sub_8148618 - - thumb_func_start sub_814862C -sub_814862C: @ 814862C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r1, _08148700 @ =gUnknown_03005FA0 - ldrh r0, [r1, 0x10] - mov r8, r0 - ldrh r0, [r1, 0x18] - mov r2, r8 - subs r0, r2 - lsls r0, 16 - lsrs r7, r0, 16 - ldrh r0, [r1, 0xC] - ldrh r3, [r1, 0x1A] - adds r0, r3 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - ldrh r0, [r1, 0xE] - ldrh r1, [r1, 0x1C] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r6, 0 - subs r0, r7, 0x1 - ldr r4, _08148704 @ =0x0201cffe - mov r10, r4 - cmp r6, r0 - bge _081486D4 - ldr r1, [sp] - lsls r0, r1, 16 - asrs r0, 16 - str r0, [sp, 0x4] -_08148674: - mov r2, r8 - adds r5, r2, r6 - lsls r5, 1 - ldr r4, _08148708 @ =0x0201d000 - adds r3, r5, r4 - ldrh r2, [r3] - ldr r0, [sp, 0x4] - subs r1, r2, r0 - ldr r4, _0814870C @ =0x0201d400 - adds r5, r4 - ldrh r0, [r5] - mov r12, r0 - mov r4, r9 - lsls r0, r4, 16 - asrs r0, 16 - mov r4, r12 - subs r0, r4, r0 - lsls r4, r0, 16 - lsrs r4, 16 - lsls r1, 16 - asrs r1, 16 - adds r6, 0x1 - adds r0, r1, 0 - muls r0, r6 - adds r1, r7, 0 - str r2, [sp, 0x8] - str r3, [sp, 0xC] - bl __divsi3 - ldr r2, [sp, 0x8] - subs r2, r0 - ldr r3, [sp, 0xC] - strh r2, [r3] - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - muls r0, r6 - adds r1, r7, 0 - bl __divsi3 - ldrh r1, [r5] - subs r1, r0 - strh r1, [r5] - lsls r6, 16 - lsrs r6, 16 - subs r0, r7, 0x1 - cmp r6, r0 - blt _08148674 -_081486D4: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 1 - mov r2, r10 - adds r1, r0, r2 - mov r3, sp - ldrh r3, [r3] - strh r3, [r1] - movs r1, 0x80 - lsls r1, 3 - add r1, r10 - adds r0, r1 - mov r4, r9 - strh r4, [r0] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08148700: .4byte gUnknown_03005FA0 -_08148704: .4byte 0x0201cffe -_08148708: .4byte 0x0201d000 -_0814870C: .4byte 0x0201d400 - thumb_func_end sub_814862C - - thumb_func_start sub_8148710 -sub_8148710: @ 8148710 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r1, _081487A4 @ =gUnknown_03005FA0 - ldrh r2, [r1, 0x1A] - ldrh r0, [r1, 0x14] - subs r2, r0 - ldrh r3, [r1, 0x1C] - ldrh r0, [r1, 0x16] - subs r3, r0 - adds r6, r1, 0 - ldr r1, _081487A8 @ =0x0201d000 - mov r9, r1 - lsls r2, 16 - asrs r2, 16 - mov r8, r2 - movs r2, 0x80 - lsls r2, 3 - add r2, r9 - mov r10, r2 - lsls r3, 16 - asrs r7, r3, 16 -_08148746: - movs r1, 0xA - ldrsh r0, [r6, r1] - cmp r0, 0 - bge _08148750 - negs r0, r0 -_08148750: - lsls r0, 16 - lsrs r0, 16 - ldrh r2, [r6, 0x6] - adds r0, r2 - lsls r5, r0, 16 - strh r0, [r6, 0x6] - ldrh r2, [r6, 0x4] - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0 - bge _0814876A - movs r0, 0x1 - str r0, [sp] -_0814876A: - ldrh r0, [r6, 0x18] - ldrh r1, [r6, 0x8] - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r1, 0 - beq _081487F0 - ldr r1, [sp] - cmp r1, 0 - bne _081487AC - movs r1, 0 - ldrsh r0, [r6, r1] - lsrs r5, 24 - adds r1, r2, r5 - lsls r1, 16 - asrs r1, 16 - bl Sin - lsls r4, 1 - mov r2, r9 - adds r1, r4, r2 - add r0, r8 - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r6, r1] - ldrh r1, [r6, 0x6] - adds r1, r5 - b _081487CE - .align 2, 0 -_081487A4: .4byte gUnknown_03005FA0 -_081487A8: .4byte 0x0201d000 -_081487AC: - movs r1, 0 - ldrsh r0, [r6, r1] - lsrs r5, 24 - subs r1, r2, r5 - lsls r1, 16 - asrs r1, 16 - bl Sin - lsls r4, 1 - mov r2, r9 - adds r1, r4, r2 - add r0, r8 - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r6, r1] - ldrh r1, [r6, 0x6] - subs r1, r5 -_081487CE: - lsls r1, 16 - asrs r1, 16 - bl Cos - add r4, r10 - adds r0, r7, r0 - strh r0, [r4] - ldrh r0, [r6, 0x2] - ldrh r2, [r6] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r6] - ldrh r0, [r6, 0x8] - subs r0, 0x1 - strh r0, [r6, 0x8] - b _08148746 -_081487F0: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8148710 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index 542eed201..9e380f597 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -518,7 +518,7 @@ _08110A44: bl GetRoamerLocation ldrb r0, [r4, 0x10] ldrb r1, [r4, 0x11] - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] strh r0, [r4, 0x12] movs r3, 0x88 @@ -566,7 +566,7 @@ SetAreaHasMon: @ 8110A98 adds r0, r5 strb r1, [r0, 0x11] adds r0, r2, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] bl sub_80FBA04 ldrh r1, [r4] @@ -599,7 +599,7 @@ SetSpecialMapHasMon: @ 8110AE4 cmp r0, 0x1F bhi _08110B96 adds r0, r2, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r6, r0, 0 ldrb r0, [r6, 0x14] cmp r0, 0x57 diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s deleted file mode 100644 index fe1b41724..000000000 --- a/asm/pokemon_menu.s +++ /dev/null @@ -1,3438 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8089A70 -sub_8089A70: @ 8089A70 - push {lr} - ldr r0, _08089A88 @ =gPaletteFade - ldrb r1, [r0, 0x8] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0, 0x8] - movs r0, 0 - movs r1, 0 - bl OpenPartyMenu - pop {r0} - bx r0 - .align 2, 0 -_08089A88: .4byte gPaletteFade - thumb_func_end sub_8089A70 - - thumb_func_start sub_8089A8C -sub_8089A8C: @ 8089A8C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, _08089AD0 @ =gUnknown_0202FFA9 - movs r0, 0 - strb r0, [r5] - ldr r0, _08089AD4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08089AD8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08089AE0 - ldr r4, _08089ADC @ =gUnknown_0202FFAA - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl AppendToList - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl AppendToList - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl AppendToList - b _08089BC8 - .align 2, 0 -_08089AD0: .4byte gUnknown_0202FFA9 -_08089AD4: .4byte gLastFieldPokeMenuOpened -_08089AD8: .4byte gPlayerParty -_08089ADC: .4byte gUnknown_0202FFAA -_08089AE0: - movs r6, 0 - ldr r0, _08089B24 @ =gUnknown_0839F554 - ldrh r0, [r0] - mov r8, r0 -_08089AE8: - movs r4, 0 - adds r7, r6, 0x1 - mov r0, r8 - cmp r0, 0xFF - beq _08089B48 - ldr r5, _08089B24 @ =gUnknown_0839F554 -_08089AF4: - ldr r0, _08089B28 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08089B2C @ =gPlayerParty - adds r0, r1 - adds r1, r6, 0 - adds r1, 0xD - bl GetMonData - lsls r1, r4, 1 - adds r1, r5 - ldrh r1, [r1] - cmp r0, r1 - bne _08089B38 - adds r2, r4, 0 - adds r2, 0xA - lsls r2, 24 - lsrs r2, 24 - ldr r0, _08089B30 @ =gUnknown_0202FFAA - ldr r1, _08089B34 @ =gUnknown_0202FFA9 - bl AppendToList - b _08089B48 - .align 2, 0 -_08089B24: .4byte gUnknown_0839F554 -_08089B28: .4byte gLastFieldPokeMenuOpened -_08089B2C: .4byte gPlayerParty -_08089B30: .4byte gUnknown_0202FFAA -_08089B34: .4byte gUnknown_0202FFA9 -_08089B38: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, 0xFF - bne _08089AF4 -_08089B48: - lsls r0, r7, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08089AE8 - ldr r4, _08089BA4 @ =gUnknown_0202FFAA - ldr r5, _08089BA8 @ =gUnknown_0202FFA9 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl AppendToList - ldr r6, _08089BAC @ =gPlayerParty + 1 * 0x64 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08089B76 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl AppendToList -_08089B76: - ldr r0, _08089BB0 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - adds r1, r6, 0 - subs r1, 0x64 - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _08089BB4 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x7 - bl AppendToList - b _08089BBE - .align 2, 0 -_08089BA4: .4byte gUnknown_0202FFAA -_08089BA8: .4byte gUnknown_0202FFA9 -_08089BAC: .4byte gPlayerParty + 1 * 0x64 -_08089BB0: .4byte gLastFieldPokeMenuOpened -_08089BB4: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl AppendToList -_08089BBE: - ldr r0, _08089BD4 @ =gUnknown_0202FFAA - ldr r1, _08089BD8 @ =gUnknown_0202FFA9 - movs r2, 0x3 - bl AppendToList -_08089BC8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08089BD4: .4byte gUnknown_0202FFAA -_08089BD8: .4byte gUnknown_0202FFA9 - thumb_func_end sub_8089A8C - - thumb_func_start sub_8089BDC -sub_8089BDC: @ 8089BDC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - adds r4, r2, 0 - mov r8, r3 - ldr r7, [sp, 0x20] - ldr r1, [sp, 0x24] - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - bl sub_806D538 - adds r4, r5, r4 - lsls r4, 24 - lsrs r4, 24 - mov r0, r8 - lsls r3, r0, 1 - adds r3, r6, r3 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl MenuDrawTextWindow - adds r5, 0x1 - lsls r5, 24 - lsrs r5, 24 - adds r6, 0x1 - lsls r6, 24 - lsrs r6, 24 - str r7, [sp] - adds r0, r5, 0 - adds r1, r6, 0 - mov r2, r8 - ldr r3, [sp, 0x1C] - bl PrintMenuItemsReordered - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8089BDC - - thumb_func_start sub_8089C50 -sub_8089C50: @ 8089C50 - push {r4,r5,lr} - sub sp, 0xC - ldr r4, [sp, 0x18] - ldr r5, [sp, 0x1C] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - str r4, [sp] - str r5, [sp, 0x4] - movs r4, 0x1 - str r4, [sp, 0x8] - bl sub_8089BDC - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8089C50 - - thumb_func_start sub_8089C7C -sub_8089C7C: @ 8089C7C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _08089CC8 @ =gUnknown_0202FFA9 - ldrb r0, [r6] - lsls r0, 1 - movs r4, 0x12 - subs r4, r0 - lsls r4, 24 - lsrs r4, 24 - ldrb r3, [r6] - ldr r0, _08089CCC @ =gPokemonMenuActions - str r0, [sp] - ldr r0, _08089CD0 @ =gUnknown_0202FFAA - str r0, [sp, 0x4] - movs r0, 0x3 - str r0, [sp, 0x8] - movs r0, 0x13 - adds r1, r4, 0 - movs r2, 0xA - bl sub_8089BDC - movs r2, 0x1 - orrs r2, r4 - ldrb r3, [r6] - str r5, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x14 - bl InitMenu - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08089CC8: .4byte gUnknown_0202FFA9 -_08089CCC: .4byte gPokemonMenuActions -_08089CD0: .4byte gUnknown_0202FFAA - thumb_func_end sub_8089C7C - - thumb_func_start sub_8089CD4 -sub_8089CD4: @ 8089CD4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08089D00 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08089D84 - adds r0, r4, 0 - bl sub_806BD80 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _08089D04 - cmp r0, 0x2 - beq _08089D60 - b _08089D84 - .align 2, 0 -_08089D00: .4byte gPaletteFade -_08089D04: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _08089D48 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08089D4C @ =gPlayerParty - adds r0, r1 - ldr r1, _08089D50 @ =gStringVar1 - bl GetMonNickname - bl sub_8089A8C - ldr r0, _08089D54 @ =gUnknown_0202FFA8 - strb r5, [r0] - movs r0, 0 - bl sub_8089C7C - ldr r1, _08089D58 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08089D5C @ =sub_8089D94 - str r1, [r0] - adds r0, r4, 0 - bl sub_808B5B4 - b _08089D84 - .align 2, 0 -_08089D48: .4byte gLastFieldPokeMenuOpened -_08089D4C: .4byte gPlayerParty -_08089D50: .4byte gStringVar1 -_08089D54: .4byte gUnknown_0202FFA8 -_08089D58: .4byte gTasks -_08089D5C: .4byte sub_8089D94 -_08089D60: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08089D8C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08089D90 @ =sub_8089E4C - str r1, [r0] -_08089D84: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089D8C: .4byte gTasks -_08089D90: .4byte sub_8089E4C - thumb_func_end sub_8089CD4 - - thumb_func_start sub_8089D94 -sub_8089D94: @ 8089D94 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, _08089DC8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08089E44 - ldr r2, _08089DCC @ =gMain - ldrh r0, [r2, 0x30] - movs r1, 0xF0 - ands r1, r0 - cmp r1, 0x40 - bne _08089DD4 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - ldr r1, _08089DD0 @ =gUnknown_0202FFA8 - strb r0, [r1] - b _08089E1A - .align 2, 0 -_08089DC8: .4byte gPaletteFade -_08089DCC: .4byte gMain -_08089DD0: .4byte gUnknown_0202FFA8 -_08089DD4: - cmp r1, 0x80 - bne _08089DF0 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - ldr r1, _08089DEC @ =gUnknown_0202FFA8 - strb r0, [r1] - b _08089E1A - .align 2, 0 -_08089DEC: .4byte gUnknown_0202FFA8 -_08089DF0: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08089E30 - movs r0, 0x5 - bl PlaySE - ldr r1, _08089E24 @ =gPokemonMenuActions - ldr r2, _08089E28 @ =gUnknown_0202FFAA - ldr r0, _08089E2C @ =gUnknown_0202FFA8 - ldrb r0, [r0] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_08089E1A: - adds r0, r4, 0 - bl sub_808B5B4 - b _08089E44 - .align 2, 0 -_08089E24: .4byte gPokemonMenuActions -_08089E28: .4byte gUnknown_0202FFAA -_08089E2C: .4byte gUnknown_0202FFA8 -_08089E30: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08089E44 - adds r0, r5, 0 - bl PokemonMenu_Cancel - adds r0, r5, 0 - bl sub_808B5B4 -_08089E44: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8089D94 - - thumb_func_start sub_8089E4C -sub_8089E4C: @ 8089E4C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08089E78 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08089E72 - ldr r0, _08089E7C @ =gLastFieldPokeMenuOpened - strb r1, [r0] - ldr r0, _08089E80 @ =sub_805469C - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08089E72: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08089E78: .4byte gPaletteFade -_08089E7C: .4byte gLastFieldPokeMenuOpened -_08089E80: .4byte sub_805469C - thumb_func_end sub_8089E4C - - thumb_func_start sub_8089E84 -sub_8089E84: @ 8089E84 - push {lr} - ldr r0, _08089EAC @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08089EB0 @ =gPlayerParty - adds r0, r1 - ldr r1, _08089EB4 @ =gStringVar1 - bl GetMonNickname - bl sub_8089A8C - ldr r1, _08089EB8 @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - movs r0, 0 - bl sub_8089C7C - pop {r0} - bx r0 - .align 2, 0 -_08089EAC: .4byte gLastFieldPokeMenuOpened -_08089EB0: .4byte gPlayerParty -_08089EB4: .4byte gStringVar1 -_08089EB8: .4byte gUnknown_0202FFA8 - thumb_func_end sub_8089E84 - - thumb_func_start sub_8089EBC -sub_8089EBC: @ 8089EBC - push {r4,r5,lr} - ldr r4, _08089EC4 @ =0x0201b260 - ldr r5, _08089EC8 @ =gUnknown_020384F0 - b _08089ED8 - .align 2, 0 -_08089EC4: .4byte 0x0201b260 -_08089EC8: .4byte gUnknown_020384F0 -_08089ECC: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08089F04 -_08089ED8: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08089ECC - ldrb r0, [r4] - ldrb r1, [r5] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r1, _08089F0C @ =gLastFieldPokeMenuOpened - ldrb r0, [r5] - strb r0, [r1] - bl sub_8089E84 - ldr r0, _08089F10 @ =sub_806AEDC - bl SetMainCallback2 -_08089F04: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089F0C: .4byte gLastFieldPokeMenuOpened -_08089F10: .4byte sub_806AEDC - thumb_func_end sub_8089EBC - - thumb_func_start sub_8089F14 -sub_8089F14: @ 8089F14 - push {lr} - ldr r2, _08089F38 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r2, _08089F3C @ =sub_8089D94 - movs r0, 0 - movs r1, 0xFF - movs r3, 0x5 - bl sub_806AF4C - ldr r0, _08089F40 @ =sub_8089EBC - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08089F38: .4byte gPaletteFade -_08089F3C: .4byte sub_8089D94 -_08089F40: .4byte sub_8089EBC - thumb_func_end sub_8089F14 - - thumb_func_start sub_8089F44 -sub_8089F44: @ 8089F44 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _08089FAC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08089FA2 - ldr r2, _08089FB0 @ =gSprites - ldr r1, _08089FB4 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0xE] - lsls r1, 16 - asrs r1, 24 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r4, [r0, 0x2E] - lsls r4, 24 - lsrs r4, 24 - adds r0, r3, 0 - bl DestroyTask - ldr r0, _08089FB8 @ =0x0201b000 - ldr r1, _08089FBC @ =0x00000262 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08089FC0 @ =gPlayerParty - ldr r1, _08089FC4 @ =gPlayerPartyCount - ldrb r2, [r1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08089FC8 @ =sub_8089F14 - str r5, [sp] - adds r1, r4, 0 - bl ShowPokemonSummaryScreen -_08089FA2: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089FAC: .4byte gPaletteFade -_08089FB0: .4byte gSprites -_08089FB4: .4byte gTasks -_08089FB8: .4byte 0x0201b000 -_08089FBC: .4byte 0x00000262 -_08089FC0: .4byte gPlayerParty -_08089FC4: .4byte gPlayerPartyCount -_08089FC8: .4byte sub_8089F14 - thumb_func_end sub_8089F44 - - thumb_func_start PokemonMenu_Summary -PokemonMenu_Summary: @ 8089FCC - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08089FFC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A000 @ =sub_8089F44 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08089FFC: .4byte gTasks -_0808A000: .4byte sub_8089F44 - thumb_func_end PokemonMenu_Summary - - thumb_func_start sub_808A004 -sub_808A004: @ 808A004 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0808A024 @ =sub_806CA60 - ldr r2, _0808A028 @ =sub_8089CD4 - bl SetTaskFuncWithFollowupFunc - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - .align 2, 0 -_0808A024: .4byte sub_806CA60 -_0808A028: .4byte sub_8089CD4 - thumb_func_end sub_808A004 - - thumb_func_start PokemonMenu_Switch -PokemonMenu_Switch: @ 808A02C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - ldr r0, _0808A054 @ =0x02001000 - ldr r1, _0808A058 @ =sub_806CD5C - str r1, [r0, 0xC] - ldr r1, _0808A05C @ =0x0001a272 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] - adds r0, r4, 0 - bl sub_808A004 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A054: .4byte 0x02001000 -_0808A058: .4byte sub_806CD5C -_0808A05C: .4byte 0x0001a272 - thumb_func_end PokemonMenu_Switch - - thumb_func_start sub_808A060 -sub_808A060: @ 808A060 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808A0D0 @ =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0x40 - bne _0808A086 - ldr r4, _0808A0D4 @ =gUnknown_0202FFA8 - ldrb r0, [r4] - cmp r0, 0 - beq _0808A086 - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - strb r0, [r4] - movs r0, 0x5 - bl PlaySE -_0808A086: - ldr r0, _0808A0D0 @ =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0x80 - bne _0808A0A4 - ldr r4, _0808A0D4 @ =gUnknown_0202FFA8 - ldrb r0, [r4] - cmp r0, 0x2 - beq _0808A0A4 - movs r0, 0x1 - bl MoveMenuCursor - strb r0, [r4] - movs r0, 0x5 - bl PlaySE -_0808A0A4: - ldr r0, _0808A0D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808A0E0 - movs r0, 0x5 - bl PlaySE - ldr r1, _0808A0D8 @ =gUnknown_0839F578 - ldr r2, _0808A0DC @ =gPokemonMenuActions - ldr r0, _0808A0D4 @ =gUnknown_0202FFA8 - ldrb r3, [r0] - movs r0, 0 - bl PartyMenuGetPopupMenuFunc - adds r1, r0, 0 - adds r0, r5, 0 - bl _call_via_r1 - b _0808A0F6 - .align 2, 0 -_0808A0D0: .4byte gMain -_0808A0D4: .4byte gUnknown_0202FFA8 -_0808A0D8: .4byte gUnknown_0839F578 -_0808A0DC: .4byte gPokemonMenuActions -_0808A0E0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808A0F6 - ldr r1, _0808A0FC @ =gUnknown_0839F578 - movs r0, 0 - bl sub_806E7D0 - adds r0, r5, 0 - bl PokemonMenu_CancelSubmenu -_0808A0F6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A0FC: .4byte gUnknown_0839F578 - thumb_func_end sub_808A060 - - thumb_func_start sub_808A100 -sub_808A100: @ 808A100 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0808A130 @ =gUnknown_0839F578 - ldr r2, _0808A134 @ =gPokemonMenuActions - movs r0, 0 - movs r3, 0 - bl sub_806E750 - movs r0, 0xD - movs r1, 0x2 - bl sub_806D538 - ldr r1, _0808A138 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A13C @ =sub_808A060 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A130: .4byte gUnknown_0839F578 -_0808A134: .4byte gPokemonMenuActions -_0808A138: .4byte gTasks -_0808A13C: .4byte sub_808A060 - thumb_func_end sub_808A100 - - thumb_func_start PokemonMenu_Item -PokemonMenu_Item: @ 808A140 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - ldr r1, _0808A174 @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _0808A178 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A17C @ =sub_808A100 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A174: .4byte gUnknown_0202FFA8 -_0808A178: .4byte gTasks -_0808A17C: .4byte sub_808A100 - thumb_func_end PokemonMenu_Item - - thumb_func_start sub_808A180 -sub_808A180: @ 808A180 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808A1D0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A1CA - adds r0, r5, 0 - bl sub_806CA38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808A1D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl DestroyTask - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - ldr r0, _0808A1D8 @ =gSaveBlock1 + 0x2B4C - adds r1, r0 - ldr r2, _0808A1DC @ =sub_808A520 - movs r0, 0x4 - movs r3, 0x3 - bl sub_80E62A0 -_0808A1CA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A1D0: .4byte gPaletteFade -_0808A1D4: .4byte gPlayerParty -_0808A1D8: .4byte gSaveBlock1 + 0x2B4C -_0808A1DC: .4byte sub_808A520 - thumb_func_end sub_808A180 - - thumb_func_start sub_808A1E0 -sub_808A1E0: @ 808A1E0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808A21C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808A216 - adds r0, r4, 0 - bl sub_806CA38 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetHeldItemIconVisibility - movs r0, 0 - movs r1, 0 - bl sub_806D538 - ldr r1, _0808A220 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A224 @ =sub_8089CD4 - str r1, [r0] -_0808A216: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A21C: .4byte gUnknown_0202E8F6 -_0808A220: .4byte gTasks -_0808A224: .4byte sub_8089CD4 - thumb_func_end sub_808A1E0 - - thumb_func_start sub_808A228 -sub_808A228: @ 808A228 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808A268 @ =gScriptItemId - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0808A278 - ldr r0, _0808A26C @ =gUnknown_0202E8F4 - ldrb r0, [r0] - cmp r0, 0 - beq _0808A278 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808A270 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A274 @ =sub_808A180 - str r1, [r0] - b _0808A29A - .align 2, 0 -_0808A268: .4byte gScriptItemId -_0808A26C: .4byte gUnknown_0202E8F4 -_0808A270: .4byte gTasks -_0808A274: .4byte sub_808A180 -_0808A278: - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0 - bl sub_806D538 - ldr r0, _0808A2A4 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0808A2A8 @ =sub_8089CD4 - str r0, [r1] -_0808A29A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A2A4: .4byte gTasks -_0808A2A8: .4byte sub_8089CD4 - thumb_func_end sub_808A228 - - thumb_func_start sub_808A2AC -sub_808A2AC: @ 808A2AC - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0808A2D0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A2CA - ldr r0, _0808A2D4 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0808A2D8 @ =sub_808A228 - adds r0, r3, 0 - bl PartyMenuTryGiveMonHeldItem -_0808A2CA: - pop {r0} - bx r0 - .align 2, 0 -_0808A2D0: .4byte gPaletteFade -_0808A2D4: .4byte gScriptItemId -_0808A2D8: .4byte sub_808A228 - thumb_func_end sub_808A2AC - - thumb_func_start sub_808A2DC -sub_808A2DC: @ 808A2DC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - bl sub_806CA38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808A324 @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl DestroyTask - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - ldr r0, _0808A328 @ =gSaveBlock1 + 0x2B4C - adds r1, r0 - ldr r2, _0808A32C @ =sub_808A520 - movs r0, 0x4 - movs r3, 0x3 - bl sub_80E62A0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A324: .4byte gPlayerParty -_0808A328: .4byte gSaveBlock1 + 0x2B4C -_0808A32C: .4byte sub_808A520 - thumb_func_end sub_808A2DC - - thumb_func_start sub_808A330 -sub_808A330: @ 808A330 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0808A344 @ =gScriptItemId - ldrh r1, [r1] - ldr r2, _0808A348 @ =sub_808A2DC - bl PartyMenuTryGiveMonHeldItem - pop {r0} - bx r0 - .align 2, 0 -_0808A344: .4byte gScriptItemId -_0808A348: .4byte sub_808A2DC - thumb_func_end sub_808A330 - - thumb_func_start sub_808A34C -sub_808A34C: @ 808A34C - push {lr} - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_808A34C - - thumb_func_start sub_808A358 -sub_808A358: @ 808A358 - push {r4,lr} - ldr r4, _0808A360 @ =0x0201b260 - b _0808A370 - .align 2, 0 -_0808A360: .4byte 0x0201b260 -_0808A364: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808A394 -_0808A370: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A364 - ldrb r0, [r4] - ldr r1, _0808A39C @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808A3A0 @ =sub_806AEDC - bl SetMainCallback2 -_0808A394: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A39C: .4byte gLastFieldPokeMenuOpened -_0808A3A0: .4byte sub_806AEDC - thumb_func_end sub_808A358 - - thumb_func_start sub_808A3A4 -sub_808A3A4: @ 808A3A4 - push {r4,r5,lr} - ldr r4, _0808A3D8 @ =0x0201b260 - adds r5, r4, 0x2 -_0808A3AA: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A3E4 - ldrb r0, [r4] - ldr r1, _0808A3DC @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - movs r0, 0x3 - strb r0, [r5] - bl sub_8089E84 - ldr r0, _0808A3E0 @ =sub_806AEDC - bl SetMainCallback2 - b _0808A3F0 - .align 2, 0 -_0808A3D8: .4byte 0x0201b260 -_0808A3DC: .4byte gLastFieldPokeMenuOpened -_0808A3E0: .4byte sub_806AEDC -_0808A3E4: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A3AA -_0808A3F0: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808A3A4 - - thumb_func_start sub_808A3F8 -sub_808A3F8: @ 808A3F8 - push {r4,lr} - ldr r0, _0808A460 @ =gScriptItemId - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0808A47E - ldr r0, _0808A464 @ =sub_808A330 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, _0808A468 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - adds r0, r4, 0 - movs r1, 0 - bl sub_806BD58 - ldr r0, _0808A46C @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_806C994 - adds r0, r4, 0 - movs r1, 0 - bl sub_806BF74 - adds r0, r4, 0 - bl sub_806CA38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808A470 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 24 - cmp r0, 0 - bne _0808A478 - ldr r0, _0808A474 @ =sub_808A34C - bl SetMainCallback2 - b _0808A4C6 - .align 2, 0 -_0808A460: .4byte gScriptItemId -_0808A464: .4byte sub_808A330 -_0808A468: .4byte gPaletteFade -_0808A46C: .4byte gLastFieldPokeMenuOpened -_0808A470: .4byte gPlayerParty -_0808A474: .4byte sub_808A34C -_0808A478: - adds r0, r4, 0 - bl DestroyTask -_0808A47E: - ldr r2, _0808A4A4 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0808A4A8 @ =gScriptItemId - ldrh r0, [r0] - cmp r0, 0 - beq _0808A4B4 - ldr r2, _0808A4AC @ =sub_808A2AC - movs r0, 0 - movs r1, 0xFF - movs r3, 0xFF - bl sub_806AF4C - ldr r0, _0808A4B0 @ =sub_808A358 - bl SetMainCallback2 - b _0808A4C6 - .align 2, 0 -_0808A4A4: .4byte gPaletteFade -_0808A4A8: .4byte gScriptItemId -_0808A4AC: .4byte sub_808A2AC -_0808A4B0: .4byte sub_808A358 -_0808A4B4: - ldr r2, _0808A4CC @ =sub_8089D94 - movs r0, 0 - movs r1, 0xFF - movs r3, 0x5 - bl sub_806AF4C - ldr r0, _0808A4D0 @ =sub_808A3A4 - bl SetMainCallback2 -_0808A4C6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A4CC: .4byte sub_8089D94 -_0808A4D0: .4byte sub_808A3A4 - thumb_func_end sub_808A3F8 - - thumb_func_start sub_808A4D4 -sub_808A4D4: @ 808A4D4 - push {r4,lr} - ldr r4, _0808A4DC @ =0x0201b260 - b _0808A4EC - .align 2, 0 -_0808A4DC: .4byte 0x0201b260 -_0808A4E0: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808A510 -_0808A4EC: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A4E0 - ldrb r0, [r4] - ldr r1, _0808A518 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808A51C @ =sub_806AEDC - bl SetMainCallback2 -_0808A510: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A518: .4byte gLastFieldPokeMenuOpened -_0808A51C: .4byte sub_806AEDC - thumb_func_end sub_808A4D4 - - thumb_func_start sub_808A520 -sub_808A520: @ 808A520 - push {r4-r7,lr} - ldr r2, _0808A584 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0808A588 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _0808A59C - ldr r7, _0808A58C @ =gUnknown_0202E8F8 - ldrh r0, [r7] - cmp r0, 0 - beq _0808A542 - movs r1, 0x1 - bl RemoveBagItem -_0808A542: - ldr r6, _0808A590 @ =gLastFieldPokeMenuOpened - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _0808A594 @ =gPlayerParty - adds r0, r4 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl AddBagItem - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - bl TakeMailFromMon - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xC - adds r2, r7, 0 - bl SetMonData - ldr r2, _0808A598 @ =sub_8089CD4 - movs r0, 0 - movs r1, 0xFF - movs r3, 0 - bl sub_806AF4C - b _0808A5A8 - .align 2, 0 -_0808A584: .4byte gPaletteFade -_0808A588: .4byte gScriptResult -_0808A58C: .4byte gUnknown_0202E8F8 -_0808A590: .4byte gLastFieldPokeMenuOpened -_0808A594: .4byte gPlayerParty -_0808A598: .4byte sub_8089CD4 -_0808A59C: - ldr r2, _0808A5B4 @ =sub_808A5BC - movs r0, 0 - movs r1, 0xFF - movs r3, 0xFF - bl sub_806AF4C -_0808A5A8: - ldr r0, _0808A5B8 @ =sub_808A4D4 - bl SetMainCallback2 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808A5B4: .4byte sub_808A5BC -_0808A5B8: .4byte sub_808A4D4 - thumb_func_end sub_808A520 - - thumb_func_start sub_808A5BC -sub_808A5BC: @ 808A5BC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808A5F0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A5EA - ldr r0, _0808A5F4 @ =gLastFieldPokeMenuOpened - ldrb r0, [r0] - ldr r1, _0808A5F8 @ =gScriptItemId - ldrh r1, [r1] - movs r2, 0 - bl DisplayGiveHeldItemMessage - ldr r1, _0808A5FC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A600 @ =sub_808A1E0 - str r1, [r0] -_0808A5EA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A5F0: .4byte gPaletteFade -_0808A5F4: .4byte gLastFieldPokeMenuOpened -_0808A5F8: .4byte gScriptItemId -_0808A5FC: .4byte gTasks -_0808A600: .4byte sub_808A1E0 - thumb_func_end sub_808A5BC - - thumb_func_start sub_808A604 -sub_808A604: @ 808A604 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808A628 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A622 - ldr r0, _0808A62C @ =sub_80A61D0 - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0808A622: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A628: .4byte gPaletteFade -_0808A62C: .4byte sub_80A61D0 - thumb_func_end sub_808A604 - - thumb_func_start PokemonMenu_GiveItem -PokemonMenu_GiveItem: @ 808A630 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _0808A66C @ =gUnknown_0202E8F5 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808A670 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A674 @ =sub_808A604 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A66C: .4byte gUnknown_0202E8F5 -_0808A670: .4byte gTasks -_0808A674: .4byte sub_808A604 - thumb_func_end PokemonMenu_GiveItem - - thumb_func_start sub_808A678 -sub_808A678: @ 808A678 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_808A8D4 - pop {r0} - bx r0 - thumb_func_end sub_808A678 - - thumb_func_start PokemonMenu_TakeItem -PokemonMenu_TakeItem: @ 808A688 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - ldr r1, _0808A6B4 @ =sub_808A678 - adds r0, r4, 0 - bl PartyMenuTryGiveMonHeldItem_806ECE8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A6B4: .4byte sub_808A678 - thumb_func_end PokemonMenu_TakeItem - - thumb_func_start PokemonMenu_TakeMail -PokemonMenu_TakeMail: @ 808A6B8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - ldr r1, _0808A6E4 @ =sub_808A678 - adds r0, r4, 0 - bl DoTakeMail - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A6E4: .4byte sub_808A678 - thumb_func_end PokemonMenu_TakeMail - - thumb_func_start PokemonMenu_Mail -PokemonMenu_Mail: @ 808A6E8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - ldr r1, _0808A728 @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _0808A72C @ =gUnknown_0839F584 - ldr r2, _0808A730 @ =gPokemonMenuActions - movs r0, 0 - movs r3, 0 - bl sub_806E750 - ldr r1, _0808A734 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A738 @ =sub_808A73C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A728: .4byte gUnknown_0202FFA8 -_0808A72C: .4byte gUnknown_0839F584 -_0808A730: .4byte gPokemonMenuActions -_0808A734: .4byte gTasks -_0808A738: .4byte sub_808A73C - thumb_func_end PokemonMenu_Mail - - thumb_func_start sub_808A73C -sub_808A73C: @ 808A73C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808A764 @ =gMain - ldrh r0, [r0, 0x30] - cmp r0, 0x40 - bne _0808A77A - movs r0, 0x5 - bl PlaySE - ldr r4, _0808A768 @ =gUnknown_0202FFA8 - ldrb r0, [r4] - cmp r0, 0 - bne _0808A770 - ldr r0, _0808A76C @ =gUnknown_0839F584 - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - asrs r0, 24 - b _0808A774 - .align 2, 0 -_0808A764: .4byte gMain -_0808A768: .4byte gUnknown_0202FFA8 -_0808A76C: .4byte gUnknown_0839F584 -_0808A770: - movs r0, 0x1 - negs r0, r0 -_0808A774: - bl MoveMenuCursor - strb r0, [r4] -_0808A77A: - ldr r0, _0808A7A0 @ =gMain - ldrh r0, [r0, 0x30] - cmp r0, 0x80 - bne _0808A7B4 - movs r0, 0x5 - bl PlaySE - ldr r4, _0808A7A4 @ =gUnknown_0202FFA8 - ldrb r0, [r4] - ldr r1, _0808A7A8 @ =gUnknown_0839F584 - ldrb r2, [r1] - subs r1, r2, 0x1 - cmp r0, r1 - bne _0808A7AC - movs r0, 0x1 - subs r0, r2 - lsls r0, 24 - asrs r0, 24 - b _0808A7AE - .align 2, 0 -_0808A7A0: .4byte gMain -_0808A7A4: .4byte gUnknown_0202FFA8 -_0808A7A8: .4byte gUnknown_0839F584 -_0808A7AC: - movs r0, 0x1 -_0808A7AE: - bl MoveMenuCursor - strb r0, [r4] -_0808A7B4: - ldr r0, _0808A7E0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808A7F0 - movs r0, 0x5 - bl PlaySE - ldr r1, _0808A7E4 @ =gUnknown_0839F584 - ldr r2, _0808A7E8 @ =gPokemonMenuActions - ldr r0, _0808A7EC @ =gUnknown_0202FFA8 - ldrb r3, [r0] - movs r0, 0 - bl PartyMenuGetPopupMenuFunc - adds r1, r0, 0 - adds r0, r5, 0 - bl _call_via_r1 - b _0808A806 - .align 2, 0 -_0808A7E0: .4byte gMain -_0808A7E4: .4byte gUnknown_0839F584 -_0808A7E8: .4byte gPokemonMenuActions -_0808A7EC: .4byte gUnknown_0202FFA8 -_0808A7F0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808A806 - ldr r1, _0808A80C @ =gUnknown_0839F584 - movs r0, 0 - bl sub_806E7D0 - adds r0, r5, 0 - bl PokemonMenu_Cancel -_0808A806: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A80C: .4byte gUnknown_0839F584 - thumb_func_end sub_808A73C - - thumb_func_start PokemonMenu_ReadMail -PokemonMenu_ReadMail: @ 808A810 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808A840 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A844 @ =sub_808A848 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A840: .4byte gTasks -_0808A844: .4byte sub_808A848 - thumb_func_end PokemonMenu_ReadMail - - thumb_func_start sub_808A848 -sub_808A848: @ 808A848 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808A898 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A890 - adds r0, r5, 0 - bl sub_806CA38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808A89C @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl DestroyTask - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r1, _0808A8A0 @ =gSaveBlock1 + 0x2B4C - adds r0, r1 - ldr r1, _0808A8A4 @ =sub_808A8A8 - movs r2, 0x1 - bl HandleReadMail -_0808A890: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A898: .4byte gPaletteFade -_0808A89C: .4byte gPlayerParty -_0808A8A0: .4byte gSaveBlock1 + 0x2B4C -_0808A8A4: .4byte sub_808A8A8 - thumb_func_end sub_808A848 - - thumb_func_start sub_808A8A8 -sub_808A8A8: @ 808A8A8 - push {lr} - ldr r1, _0808A8C4 @ =gUnknown_020384F0 - ldr r0, _0808A8C8 @ =gLastFieldPokeMenuOpened - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _0808A8CC @ =0x0201b000 - ldr r1, _0808A8D0 @ =0x00000262 - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - bl sub_8089F14 - pop {r0} - bx r0 - .align 2, 0 -_0808A8C4: .4byte gUnknown_020384F0 -_0808A8C8: .4byte gLastFieldPokeMenuOpened -_0808A8CC: .4byte 0x0201b000 -_0808A8D0: .4byte 0x00000262 - thumb_func_end sub_808A8A8 - - thumb_func_start sub_808A8D4 -sub_808A8D4: @ 808A8D4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0808A90C @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0 - bl sub_806D538 - ldr r1, _0808A910 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A914 @ =sub_8089CD4 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A90C: .4byte gUnknown_0202FFA8 -_0808A910: .4byte gTasks -_0808A914: .4byte sub_8089CD4 - thumb_func_end sub_808A8D4 - - thumb_func_start PokemonMenu_Cancel -PokemonMenu_Cancel: @ 808A918 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_808A8D4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end PokemonMenu_Cancel - - thumb_func_start PokemonMenu_CancelSubmenu -PokemonMenu_CancelSubmenu: @ 808A938 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0x5 - bl PlaySE - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - ldr r0, _0808A978 @ =gUnknown_0202FFA8 - ldrb r0, [r0] - bl sub_8089C7C - ldr r1, _0808A97C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A980 @ =sub_8089D94 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A978: .4byte gUnknown_0202FFA8 -_0808A97C: .4byte gTasks -_0808A980: .4byte sub_8089D94 - thumb_func_end PokemonMenu_CancelSubmenu - - thumb_func_start PokemonMenu_FieldMove -PokemonMenu_FieldMove: @ 808A984 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r7, _0808A9D0 @ =gTasks + 0x8 - adds r4, r6, r7 - bl HandleDestroyMenuCursors - ldr r1, _0808A9D4 @ =gUnknown_0202FFAA - ldr r0, _0808A9D8 @ =gUnknown_0202FFA8 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - subs r0, 0xA - strh r0, [r4, 0x16] - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A9DC - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldrh r0, [r4, 0x16] - subs r0, 0xB - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0808AABA - movs r0, 0x9 - b _0808AAB2 - .align 2, 0 -_0808A9D0: .4byte gTasks + 0x8 -_0808A9D4: .4byte gUnknown_0202FFAA -_0808A9D8: .4byte gUnknown_0202FFA8 -_0808A9DC: - ldrh r1, [r4, 0x16] - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0x7 - bgt _0808AA2C - ldr r2, _0808AA20 @ =0x00000807 - adds r0, r1, r2 - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808AA2C - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - ldr r0, _0808AA24 @ =gOtherText_CantBeUsedBadge - movs r1, 0x1 - bl sub_806E834 - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0808AA28 @ =sub_808AAF0 - str r1, [r0] - b _0808AADA - .align 2, 0 -_0808AA20: .4byte 0x00000807 -_0808AA24: .4byte gOtherText_CantBeUsedBadge -_0808AA28: .4byte sub_808AAF0 -_0808AA2C: - ldr r1, _0808AA78 @ =gFieldMoveFuncs - movs r2, 0x16 - ldrsh r0, [r4, r2] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AA90 - ldr r1, _0808AA7C @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - ldrh r0, [r4, 0x16] - subs r0, 0xB - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _0808AA88 - ldr r1, _0808AA80 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808AA84 @ =sub_808AB34 - str r1, [r0] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0808AADA - .align 2, 0 -_0808AA78: .4byte gFieldMoveFuncs -_0808AA7C: .4byte gUnknown_0202FFA8 -_0808AA80: .4byte gTasks -_0808AA84: .4byte sub_808AB34 -_0808AA88: - adds r0, r5, 0 - bl sub_8133D28 - b _0808AADA -_0808AA90: - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _0808AABA - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0808AABA - movs r0, 0x8 -_0808AAB2: - movs r1, 0 - bl sub_806D538 - b _0808AACC -_0808AABA: - ldr r0, _0808AAE4 @ =gFieldMoveFuncs - movs r2, 0x16 - ldrsh r1, [r4, r2] - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x4] - movs r1, 0 - bl sub_806D538 -_0808AACC: - ldr r0, _0808AAE8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0808AAEC @ =sub_808ABF4 - str r0, [r1] -_0808AADA: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808AAE4: .4byte gFieldMoveFuncs -_0808AAE8: .4byte gTasks -_0808AAEC: .4byte sub_808ABF4 - thumb_func_end PokemonMenu_FieldMove - - thumb_func_start sub_808AAF0 -sub_808AAF0: @ 808AAF0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808AB2C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808AB24 - ldr r0, _0808AB30 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0808AB12 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808AB24 -_0808AB12: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl PokemonMenu_Cancel -_0808AB24: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AB2C: .4byte gUnknown_0202E8F6 -_0808AB30: .4byte gMain - thumb_func_end sub_808AAF0 - - thumb_func_start sub_808AB34 -sub_808AB34: @ 808AB34 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808AB6C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808AB84 - ldr r0, _0808AB70 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0x1E - ldrsh r0, [r1, r2] - cmp r0, 0x5 - bne _0808AB62 - bl ShouldDoBrailleFlyEffect - lsls r0, 24 - cmp r0, 0 - beq _0808AB78 -_0808AB62: - ldr r0, _0808AB74 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - b _0808AB7E - .align 2, 0 -_0808AB6C: .4byte gPaletteFade -_0808AB70: .4byte gTasks -_0808AB74: .4byte c2_exit_to_overworld_2_switch -_0808AB78: - ldr r0, _0808AB8C @ =CB2_InitFlyRegionMap - bl SetMainCallback2 -_0808AB7E: - adds r0, r4, 0 - bl DestroyTask -_0808AB84: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AB8C: .4byte CB2_InitFlyRegionMap - thumb_func_end sub_808AB34 - - thumb_func_start sub_808AB90 -sub_808AB90: @ 808AB90 - push {lr} - bl pal_fill_black - ldr r0, _0808ABA4 @ =sub_808ABA8 - movs r1, 0x8 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0808ABA4: .4byte sub_808ABA8 - thumb_func_end sub_808AB90 - - thumb_func_start sub_808ABA8 -sub_808ABA8: @ 808ABA8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808ABDE - ldr r0, _0808ABE4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808ABE8 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - ldr r1, _0808ABEC @ =gUnknown_0202FF84 - str r0, [r1] - ldr r0, _0808ABF0 @ =gUnknown_03005CE4 - ldr r0, [r0] - bl _call_via_r0 - adds r0, r4, 0 - bl DestroyTask -_0808ABDE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808ABE4: .4byte gLastFieldPokeMenuOpened -_0808ABE8: .4byte gPlayerParty -_0808ABEC: .4byte gUnknown_0202FF84 -_0808ABF0: .4byte gUnknown_03005CE4 - thumb_func_end sub_808ABA8 - - thumb_func_start sub_808ABF4 -sub_808ABF4: @ 808ABF4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808AC28 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0808AC0E - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808AC20 -_0808AC0E: - movs r0, 0x1 - movs r1, 0x11 - movs r2, 0x1C - movs r3, 0x12 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl PokemonMenu_Cancel -_0808AC20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AC28: .4byte gMain - thumb_func_end sub_808ABF4 - - thumb_func_start sub_808AC2C -sub_808AC2C: @ 808AC2C - push {lr} - ldr r0, _0808AC40 @ =gUnknown_0202FF84 - ldr r1, _0808AC44 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r0] - movs r0, 0x9 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_0808AC40: .4byte gUnknown_0202FF84 -_0808AC44: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_808AC2C - - thumb_func_start SetUpFieldMove_Surf -SetUpFieldMove_Surf: @ 808AC48 - push {lr} - bl PartyHasMonWithSurf - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AC84 - bl IsPlayerFacingSurfableFishableWater - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AC84 - ldr r1, _0808AC74 @ =gFieldCallback - ldr r0, _0808AC78 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808AC7C @ =gUnknown_03005CE4 - ldr r0, _0808AC80 @ =sub_808AC2C - str r0, [r1] - movs r0, 0x1 - b _0808AC86 - .align 2, 0 -_0808AC74: .4byte gFieldCallback -_0808AC78: .4byte sub_808AB90 -_0808AC7C: .4byte gUnknown_03005CE4 -_0808AC80: .4byte sub_808AC2C -_0808AC84: - movs r0, 0 -_0808AC86: - pop {r1} - bx r1 - thumb_func_end SetUpFieldMove_Surf - - thumb_func_start sub_808AC8C -sub_808AC8C: @ 808AC8C - push {lr} - ldr r0, _0808ACA0 @ =gUnknown_0202FF84 - ldr r1, _0808ACA4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r0] - movs r0, 0x1F - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_0808ACA0: .4byte gUnknown_0202FF84 -_0808ACA4: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_808AC8C - - thumb_func_start SetUpFieldMove_Fly -SetUpFieldMove_Fly: @ 808ACA8 - push {lr} - bl ShouldDoBrailleFlyEffect - lsls r0, 24 - cmp r0, 0 - beq _0808ACD0 - ldr r1, _0808ACC0 @ =gFieldCallback - ldr r0, _0808ACC4 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808ACC8 @ =gUnknown_03005CE4 - ldr r0, _0808ACCC @ =DoBrailleFlyEffect - b _0808ACF2 - .align 2, 0 -_0808ACC0: .4byte gFieldCallback -_0808ACC4: .4byte sub_808AB90 -_0808ACC8: .4byte gUnknown_03005CE4 -_0808ACCC: .4byte DoBrailleFlyEffect -_0808ACD0: - ldr r0, _0808ACE4 @ =gMapHeader - ldrb r0, [r0, 0x17] - bl is_light_level_1_2_3_or_6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808ACE8 - movs r0, 0 - b _0808ACF6 - .align 2, 0 -_0808ACE4: .4byte gMapHeader -_0808ACE8: - ldr r1, _0808ACFC @ =gFieldCallback - ldr r0, _0808AD00 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808AD04 @ =gUnknown_03005CE4 - ldr r0, _0808AD08 @ =sub_808AC8C -_0808ACF2: - str r0, [r1] - movs r0, 0x1 -_0808ACF6: - pop {r1} - bx r1 - .align 2, 0 -_0808ACFC: .4byte gFieldCallback -_0808AD00: .4byte sub_808AB90 -_0808AD04: .4byte gUnknown_03005CE4 -_0808AD08: .4byte sub_808AC8C - thumb_func_end SetUpFieldMove_Fly - - thumb_func_start sub_808AD0C -sub_808AD0C: @ 808AD0C - push {r4,lr} - ldr r4, _0808AD14 @ =0x0201b260 - b _0808AD24 - .align 2, 0 -_0808AD14: .4byte 0x0201b260 -_0808AD18: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808AD48 -_0808AD24: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AD18 - ldrb r0, [r4] - ldr r1, _0808AD50 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808AD54 @ =sub_806AEDC - bl SetMainCallback2 -_0808AD48: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AD50: .4byte gLastFieldPokeMenuOpened -_0808AD54: .4byte sub_806AEDC - thumb_func_end sub_808AD0C - - thumb_func_start sub_808AD58 -sub_808AD58: @ 808AD58 - push {lr} - ldr r2, _0808AD7C @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r2, _0808AD80 @ =sub_8089CD4 - movs r0, 0 - movs r1, 0xFF - movs r3, 0 - bl sub_806AF4C - ldr r0, _0808AD84 @ =sub_808AD0C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0808AD7C: .4byte gPaletteFade -_0808AD80: .4byte sub_8089CD4 -_0808AD84: .4byte sub_808AD0C - thumb_func_end sub_808AD58 - - thumb_func_start unref_sub_808AD88 -unref_sub_808AD88: @ 808AD88 - push {lr} - ldr r0, _0808ADA4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808ADA8 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_0808ADA4: .4byte gLastFieldPokeMenuOpened -_0808ADA8: .4byte gPlayerParty - thumb_func_end unref_sub_808AD88 - - thumb_func_start sub_808ADAC -sub_808ADAC: @ 808ADAC - push {lr} - ldr r0, _0808ADC0 @ =gUnknown_0202FF84 - ldr r1, _0808ADC4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r0] - movs r0, 0x2C - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_0808ADC0: .4byte gUnknown_0202FF84 -_0808ADC4: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_808ADAC - - thumb_func_start SetUpFieldMove_Dive -SetUpFieldMove_Dive: @ 808ADC8 - push {lr} - bl sub_8068F18 - ldr r1, _0808ADE0 @ =gUnknown_0202FF84 - lsls r0, 24 - lsrs r0, 24 - str r0, [r1, 0x4] - cmp r0, 0 - bne _0808ADE4 - movs r0, 0 - b _0808ADF2 - .align 2, 0 -_0808ADE0: .4byte gUnknown_0202FF84 -_0808ADE4: - ldr r1, _0808ADF8 @ =gFieldCallback - ldr r0, _0808ADFC @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808AE00 @ =gUnknown_03005CE4 - ldr r0, _0808AE04 @ =sub_808ADAC - str r0, [r1] - movs r0, 0x1 -_0808ADF2: - pop {r1} - bx r1 - .align 2, 0 -_0808ADF8: .4byte gFieldCallback -_0808ADFC: .4byte sub_808AB90 -_0808AE00: .4byte gUnknown_03005CE4 -_0808AE04: .4byte sub_808ADAC - thumb_func_end SetUpFieldMove_Dive - - thumb_func_start sub_808AE08 -sub_808AE08: @ 808AE08 - push {lr} - ldr r0, _0808AE1C @ =gUnknown_0202FF84 - ldr r1, _0808AE20 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r0] - movs r0, 0x2B - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_0808AE1C: .4byte gUnknown_0202FF84 -_0808AE20: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_808AE08 - - thumb_func_start SetUpFieldMove_Waterfall -SetUpFieldMove_Waterfall: @ 808AE24 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsWaterfall - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AE80 - bl IsPlayerSurfingNorth - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AE80 - ldr r1, _0808AE70 @ =gFieldCallback - ldr r0, _0808AE74 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808AE78 @ =gUnknown_03005CE4 - ldr r0, _0808AE7C @ =sub_808AE08 - str r0, [r1] - movs r0, 0x1 - b _0808AE82 - .align 2, 0 -_0808AE70: .4byte gFieldCallback -_0808AE74: .4byte sub_808AB90 -_0808AE78: .4byte gUnknown_03005CE4 -_0808AE7C: .4byte sub_808AE08 -_0808AE80: - movs r0, 0 -_0808AE82: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end SetUpFieldMove_Waterfall - - thumb_func_start sub_808AE8C -sub_808AE8C: @ 808AE8C - push {r4-r6,lr} - ldr r0, _0808AED8 @ =gScriptItemId - ldrb r0, [r0] - subs r0, 0x21 - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 -_0808AE9A: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0808AEDC @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0808AF10 - adds r0, r5, 0 - bl sub_806D668 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0808AECE - adds r0, r4, 0 - adds r1, r6, 0 - bl CanMonLearnTMHM - cmp r0, 0 - bne _0808AEE0 -_0808AECE: - adds r0, r5, 0 - movs r1, 0x9A - bl sub_806BC3C - b _0808AF10 - .align 2, 0 -_0808AED8: .4byte gScriptItemId -_0808AEDC: .4byte gPlayerParty -_0808AEE0: - ldr r0, _0808AF04 @ =gScriptItemId - ldrh r0, [r0] - bl ItemIdToBattleMoveId - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl pokemon_has_move - lsls r0, 24 - cmp r0, 0 - beq _0808AF08 - adds r0, r5, 0 - movs r1, 0xA8 - bl sub_806BC3C - b _0808AF10 - .align 2, 0 -_0808AF04: .4byte gScriptItemId -_0808AF08: - adds r0, r5, 0 - movs r1, 0x8C - bl sub_806BC3C -_0808AF10: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0808AE9A - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_808AE8C - - thumb_func_start sub_808AF20 -sub_808AF20: @ 808AF20 - push {r4,r5,lr} - movs r5, 0 -_0808AF24: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0808AF78 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0808AF66 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0808AF58 - ldr r0, _0808AF7C @ =gScriptItemId - ldrh r2, [r0] - adds r0, r4, 0 - movs r1, 0x3 - bl GetEvolutionTargetSpecies - lsls r0, 16 - cmp r0, 0 - bne _0808AF66 -_0808AF58: - adds r0, r5, 0 - bl sub_806D668 - adds r0, r5, 0 - movs r1, 0 - bl sub_806BC3C -_0808AF66: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0808AF24 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808AF78: .4byte gPlayerParty -_0808AF7C: .4byte gScriptItemId - thumb_func_end sub_808AF20 - - thumb_func_start sub_808AF80 -sub_808AF80: @ 808AF80 - push {r4,r5,lr} - ldr r5, _0808AFB0 @ =0x0201b260 -_0808AF84: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808B00C - ldr r0, _0808AFB4 @ =gUnknown_02038561 - ldrb r0, [r0] - cmp r0, 0 - bne _0808AFC6 - ldr r0, _0808AFB8 @ =gScriptItemId - ldrh r0, [r0] - bl CheckIfItemIsTMHMOrEvolutionStone - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808AFBC - cmp r0, 0x2 - beq _0808AFC2 - b _0808AFC6 - .align 2, 0 -_0808AFB0: .4byte 0x0201b260 -_0808AFB4: .4byte gUnknown_02038561 -_0808AFB8: .4byte gScriptItemId -_0808AFBC: - bl sub_808AE8C - b _0808AFC6 -_0808AFC2: - bl sub_808AF20 -_0808AFC6: - ldr r4, _0808B000 @ =gLastFieldPokeMenuOpened - ldrb r0, [r4] - cmp r0, 0x5 - bhi _0808AFE2 - adds r1, r0, 0 - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808B004 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - bne _0808AFE6 -_0808AFE2: - movs r0, 0 - strb r0, [r4] -_0808AFE6: - ldrb r0, [r5] - ldr r1, _0808B000 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r5] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808B008 @ =sub_806AEDC - bl SetMainCallback2 - b _0808B018 - .align 2, 0 -_0808B000: .4byte gLastFieldPokeMenuOpened -_0808B004: .4byte gPlayerParty -_0808B008: .4byte sub_806AEDC -_0808B00C: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AF84 -_0808B018: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808AF80 - - thumb_func_start sub_808B020 -sub_808B020: @ 808B020 - push {lr} - ldr r2, _0808B040 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0808B044 @ =gUnknown_02038561 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808B0A0 - cmp r0, 0x1 - bgt _0808B048 - cmp r0, 0 - beq _0808B052 - b _0808B0AC - .align 2, 0 -_0808B040: .4byte gPaletteFade -_0808B044: .4byte gUnknown_02038561 -_0808B048: - cmp r0, 0x3 - beq _0808B0A0 - cmp r0, 0x4 - beq _0808B08C - b _0808B0AC -_0808B052: - ldr r0, _0808B070 @ =gScriptItemId - ldrh r0, [r0] - bl CheckIfItemIsTMHMOrEvolutionStone - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808B078 - ldr r2, _0808B074 @ =sub_808B0C0 - movs r0, 0 - movs r1, 0 - movs r3, 0x14 - bl sub_806AF4C - b _0808B0AC - .align 2, 0 -_0808B070: .4byte gScriptItemId -_0808B074: .4byte sub_808B0C0 -_0808B078: - ldr r2, _0808B088 @ =sub_808B0C0 - movs r0, 0 - movs r1, 0 - movs r3, 0x3 - bl sub_806AF4C - b _0808B0AC - .align 2, 0 -_0808B088: .4byte sub_808B0C0 -_0808B08C: - ldr r2, _0808B09C @ =sub_808B1EC - movs r0, 0 - movs r1, 0 - movs r3, 0xFF - bl sub_806AF4C - b _0808B0AC - .align 2, 0 -_0808B09C: .4byte sub_808B1EC -_0808B0A0: - ldr r2, _0808B0B8 @ =sub_808B0C0 - movs r0, 0 - movs r1, 0 - movs r3, 0x4 - bl sub_806AF4C -_0808B0AC: - ldr r0, _0808B0BC @ =sub_808AF80 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0808B0B8: .4byte sub_808B0C0 -_0808B0BC: .4byte sub_808AF80 - thumb_func_end sub_808B020 - - thumb_func_start sub_808B0C0 -sub_808B0C0: @ 808B0C0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B0EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0808B1CE - adds r0, r4, 0 - bl sub_806BD80 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _0808B0F0 - cmp r0, 0x2 - beq _0808B184 - b _0808B1CE - .align 2, 0 -_0808B0EC: .4byte gPaletteFade -_0808B0F0: - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _0808B118 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808B11C @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _0808B120 - movs r0, 0x20 - bl PlaySE - b _0808B1CE - .align 2, 0 -_0808B118: .4byte gLastFieldPokeMenuOpened -_0808B11C: .4byte gPlayerParty -_0808B120: - bl sub_806D5A4 - ldr r5, _0808B16C @ =gUnknown_02038561 - ldrb r0, [r5] - cmp r0, 0 - bne _0808B13C - ldr r3, _0808B170 @ =gUnknown_03004AE4 - ldr r0, _0808B174 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0808B178 @ =sub_808B224 - ldr r3, [r3] - adds r0, r4, 0 - bl _call_via_r3 -_0808B13C: - ldrb r0, [r5] - cmp r0, 0x1 - bne _0808B154 - movs r0, 0x5 - bl PlaySE - ldr r0, _0808B174 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0808B17C @ =sub_808B2EC - adds r0, r4, 0 - bl PartyMenuTryGiveMonHeldItem -_0808B154: - ldrb r0, [r5] - cmp r0, 0x3 - bne _0808B1CE - movs r0, 0x5 - bl PlaySE - ldr r1, _0808B180 @ =sub_808B2B4 - adds r0, r4, 0 - bl PartyMenuTryGiveMonMail - b _0808B1CE - .align 2, 0 -_0808B16C: .4byte gUnknown_02038561 -_0808B170: .4byte gUnknown_03004AE4 -_0808B174: .4byte gScriptItemId -_0808B178: .4byte sub_808B224 -_0808B17C: .4byte sub_808B2EC -_0808B180: .4byte sub_808B2B4 -_0808B184: - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _0808B1D8 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r2, _0808B1DC @ =gUnknown_02038561 - ldrb r0, [r2] - cmp r0, 0x1 - bhi _0808B1BA - ldr r0, _0808B1E0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0808B1E4 @ =sub_808B25C - str r0, [r1] -_0808B1BA: - ldrb r0, [r2] - cmp r0, 0x3 - bne _0808B1CE - ldr r0, _0808B1E0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0808B1E8 @ =sub_808B2B4 - str r0, [r1] -_0808B1CE: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808B1D8: .4byte gLastFieldPokeMenuOpened -_0808B1DC: .4byte gUnknown_02038561 -_0808B1E0: .4byte gTasks -_0808B1E4: .4byte sub_808B25C -_0808B1E8: .4byte sub_808B2B4 - thumb_func_end sub_808B0C0 - - thumb_func_start sub_808B1EC -sub_808B1EC: @ 808B1EC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B214 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B20E - ldr r3, _0808B218 @ =gUnknown_03004AE4 - ldr r0, _0808B21C @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0808B220 @ =sub_808B224 - ldr r3, [r3] - adds r0, r4, 0 - bl _call_via_r3 -_0808B20E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B214: .4byte gPaletteFade -_0808B218: .4byte gUnknown_03004AE4 -_0808B21C: .4byte gScriptItemId -_0808B220: .4byte sub_808B224 - thumb_func_end sub_808B1EC - - thumb_func_start sub_808B224 -sub_808B224: @ 808B224 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808B254 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B258 @ =sub_808B25C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B254: .4byte gTasks -_0808B258: .4byte sub_808B25C - thumb_func_end sub_808B224 - - thumb_func_start sub_808B25C -sub_808B25C: @ 808B25C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B280 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B27A - ldr r0, _0808B284 @ =sub_80A5B40 - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0808B27A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B280: .4byte gPaletteFade -_0808B284: .4byte sub_80A5B40 - thumb_func_end sub_808B25C - - thumb_func_start sub_808B288 -sub_808B288: @ 808B288 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B2AC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B2A6 - ldr r0, _0808B2B0 @ =Mailbox_ReturnToMailListAfterDeposit - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0808B2A6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B2AC: .4byte gPaletteFade -_0808B2B0: .4byte Mailbox_ReturnToMailListAfterDeposit - thumb_func_end sub_808B288 - - thumb_func_start sub_808B2B4 -sub_808B2B4: @ 808B2B4 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808B2E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B2E8 @ =sub_808B288 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B2E4: .4byte gTasks -_0808B2E8: .4byte sub_808B288 - thumb_func_end sub_808B2B4 - - thumb_func_start sub_808B2EC -sub_808B2EC: @ 808B2EC - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B31C @ =gUnknown_0202E8F4 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0808B328 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808B320 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B324 @ =sub_808B338 - str r1, [r0] - b _0808B32E - .align 2, 0 -_0808B31C: .4byte gUnknown_0202E8F4 -_0808B320: .4byte gTasks -_0808B324: .4byte sub_808B338 -_0808B328: - adds r0, r4, 0 - bl sub_808B224 -_0808B32E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_808B2EC - - thumb_func_start sub_808B338 -sub_808B338: @ 808B338 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808B38C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B384 - adds r0, r5, 0 - bl sub_806CA38 - ldr r1, _0808B390 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808B394 @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl DestroyTask - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - ldr r0, _0808B398 @ =gSaveBlock1 + 0x2B4C - adds r1, r0 - ldr r2, _0808B39C @ =sub_808B3EC - movs r0, 0x4 - movs r3, 0x3 - bl sub_80E62A0 -_0808B384: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808B38C: .4byte gPaletteFade -_0808B390: .4byte gLastFieldPokeMenuOpened -_0808B394: .4byte gPlayerParty -_0808B398: .4byte gSaveBlock1 + 0x2B4C -_0808B39C: .4byte sub_808B3EC - thumb_func_end sub_808B338 - - thumb_func_start sub_808B3A0 -sub_808B3A0: @ 808B3A0 - push {r4,lr} - ldr r4, _0808B3A8 @ =0x0201b260 - b _0808B3B8 - .align 2, 0 -_0808B3A8: .4byte 0x0201b260 -_0808B3AC: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808B3DC -_0808B3B8: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808B3AC - ldrb r0, [r4] - ldr r1, _0808B3E4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808B3E8 @ =sub_806AEDC - bl SetMainCallback2 -_0808B3DC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B3E4: .4byte gLastFieldPokeMenuOpened -_0808B3E8: .4byte sub_806AEDC - thumb_func_end sub_808B3A0 - - thumb_func_start sub_808B3EC -sub_808B3EC: @ 808B3EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0808B464 @ =gPaletteFade - mov r8, r0 - ldrb r0, [r0, 0x8] - movs r1, 0x80 - orrs r0, r1 - mov r1, r8 - strb r0, [r1, 0x8] - ldr r0, _0808B468 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _0808B480 - ldr r7, _0808B46C @ =gUnknown_0202E8F8 - ldrh r0, [r7] - cmp r0, 0 - beq _0808B416 - movs r1, 0x1 - bl RemoveBagItem -_0808B416: - ldr r6, _0808B470 @ =gLastFieldPokeMenuOpened - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _0808B474 @ =gPlayerParty - adds r0, r4 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl AddBagItem - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - bl TakeMailFromMon - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xC - adds r2, r7, 0 - bl SetMonData - ldr r0, _0808B478 @ =sub_808B25C - movs r1, 0x5 - bl CreateTask - mov r0, r8 - ldrb r1, [r0, 0x8] - movs r0, 0x7F - ands r0, r1 - mov r1, r8 - strb r0, [r1, 0x8] - ldr r0, _0808B47C @ =sub_806AEDC - b _0808B48E - .align 2, 0 -_0808B464: .4byte gPaletteFade -_0808B468: .4byte gScriptResult -_0808B46C: .4byte gUnknown_0202E8F8 -_0808B470: .4byte gLastFieldPokeMenuOpened -_0808B474: .4byte gPlayerParty -_0808B478: .4byte sub_808B25C -_0808B47C: .4byte sub_806AEDC -_0808B480: - ldr r2, _0808B49C @ =sub_808B4A4 - movs r0, 0 - movs r1, 0 - movs r3, 0xFF - bl sub_806AF4C - ldr r0, _0808B4A0 @ =sub_808B3A0 -_0808B48E: - bl SetMainCallback2 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808B49C: .4byte sub_808B4A4 -_0808B4A0: .4byte sub_808B3A0 - thumb_func_end sub_808B3EC - - thumb_func_start sub_808B4A4 -sub_808B4A4: @ 808B4A4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B4D8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B4D2 - ldr r0, _0808B4DC @ =gLastFieldPokeMenuOpened - ldrb r0, [r0] - ldr r1, _0808B4E0 @ =gScriptItemId - ldrh r1, [r1] - movs r2, 0x1 - bl DisplayGiveHeldItemMessage - ldr r1, _0808B4E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B4E8 @ =sub_808B4EC - str r1, [r0] -_0808B4D2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B4D8: .4byte gPaletteFade -_0808B4DC: .4byte gLastFieldPokeMenuOpened -_0808B4E0: .4byte gScriptItemId -_0808B4E4: .4byte gTasks -_0808B4E8: .4byte sub_808B4EC - thumb_func_end sub_808B4A4 - - thumb_func_start sub_808B4EC -sub_808B4EC: @ 808B4EC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0808B504 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808B500 - adds r0, r1, 0 - bl sub_808B224 -_0808B500: - pop {r0} - bx r0 - .align 2, 0 -_0808B504: .4byte gUnknown_0202E8F6 - thumb_func_end sub_808B4EC - - thumb_func_start sub_808B508 -sub_808B508: @ 808B508 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_808B224 - pop {r0} - bx r0 - thumb_func_end sub_808B508 - - thumb_func_start sub_808B518 -sub_808B518: @ 808B518 - push {r4,lr} - ldr r4, _0808B520 @ =0x0201b260 - b _0808B530 - .align 2, 0 -_0808B520: .4byte 0x0201b260 -_0808B524: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808B554 -_0808B530: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808B524 - ldrb r0, [r4] - ldr r1, _0808B55C @ =gUnknown_020384F0 - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808B560 @ =sub_806AEDC - bl SetMainCallback2 -_0808B554: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B55C: .4byte gUnknown_020384F0 -_0808B560: .4byte sub_806AEDC - thumb_func_end sub_808B518 - - thumb_func_start sub_808B564 -sub_808B564: @ 808B564 - push {lr} - ldr r2, _0808B58C @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - bl sub_809FA30 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _0808B594 - ldr r2, _0808B590 @ =TaughtMove - movs r0, 0 - movs r1, 0 - movs r3, 0xFF - bl sub_806AF4C - b _0808B5A0 - .align 2, 0 -_0808B58C: .4byte gPaletteFade -_0808B590: .4byte TaughtMove -_0808B594: - ldr r2, _0808B5AC @ =StopTryingToTeachMove_806F588 - movs r0, 0 - movs r1, 0 - movs r3, 0xFF - bl sub_806AF4C -_0808B5A0: - ldr r0, _0808B5B0 @ =sub_808B518 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0808B5AC: .4byte StopTryingToTeachMove_806F588 -_0808B5B0: .4byte sub_808B518 - thumb_func_end sub_808B564 - - thumb_func_start sub_808B5B4 -sub_808B5B4: @ 808B5B4 - push {lr} - ldr r3, _0808B5D8 @ =gUnknown_03005CF0 - ldr r2, _0808B5DC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, [r1] - str r2, [r3] - ldr r2, _0808B5E0 @ =sub_808B5E4 - str r2, [r1] - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r2 - pop {r0} - bx r0 - .align 2, 0 -_0808B5D8: .4byte gUnknown_03005CF0 -_0808B5DC: .4byte gTasks -_0808B5E0: .4byte sub_808B5E4 - thumb_func_end sub_808B5B4 - - thumb_func_start sub_808B5E4 -sub_808B5E4: @ 808B5E4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8055870 - cmp r0, 0x1 - beq _0808B602 - ldr r1, _0808B608 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B60C @ =gUnknown_03005CF0 - ldr r1, [r1] - str r1, [r0] -_0808B602: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B608: .4byte gTasks -_0808B60C: .4byte gUnknown_03005CF0 - thumb_func_end sub_808B5E4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index db16c2788..eaf44749b 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -12958,7 +12958,7 @@ _0809C08C: adds r1, r6, r2 str r0, [r1] adds r0, r7, 0 - bl pokemon_get_pal + bl GetMonSpritePal ldr r2, _0809C11C @ =0x000011e8 adds r1, r6, r2 str r0, [r1] @@ -13031,7 +13031,7 @@ _0809C120: str r2, [r4] ldrh r0, [r5] mov r1, r9 - bl species_and_otid_get_pal + bl GetMonSpritePalFromOtIdPersonality ldr r2, _0809C1D0 @ =0x000011e8 adds r1, r6, r2 str r0, [r1] diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index fea619ac8..859fd177f 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -3859,7 +3859,7 @@ _0809F718: adds r1, r0, 0 adds r0, r5, 0 adds r2, r6, 0 - bl sub_80409C8 + bl GetMonSpritePalStructFromOtIdPersonality adds r4, r0, 0 bl LoadCompressedObjectPalette ldrh r0, [r4, 0x4] @@ -7620,7 +7620,7 @@ sub_80A1808: @ 80A1808 ldr r0, _080A1868 @ =sub_80A1888 str r0, [r4] adds r0, r6, 0 - bl sub_8040A3C + bl IsPokeSpriteNotFlipped lsls r0, 24 cmp r0, 0 bne _080A186C diff --git a/asm/pokenav.s b/asm/pokenav.s index cb6a40450..a4d585815 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -17787,7 +17787,7 @@ sub_80F4824: @ 80F4824 adds r0, r5, 0 mov r1, r8 adds r2, r4, 0 - bl species_and_otid_get_pal + bl GetMonSpritePalFromOtIdPersonality mov r2, r9 lsls r1, r2, 7 adds r1, r7, r1 @@ -22370,7 +22370,7 @@ _080F6C3A: adds r6, r0, r1 ldrh r7, [r6] adds r0, r7, 0 - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _080F6CA0 @@ -22402,7 +22402,7 @@ _080F6C3A: strb r1, [r0] ldrh r0, [r6, 0xA] ldrh r1, [r6, 0xC] - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrh r1, [r5] lsls r1, 3 adds r4, r1 @@ -22431,7 +22431,7 @@ _080F6CB4: adds r5, r0, r1 ldrh r4, [r5] adds r0, r4, 0 - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _080F6D0E diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s deleted file mode 100644 index 59b08dd01..000000000 --- a/asm/reshow_battle_screen.s +++ /dev/null @@ -1,1097 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_14 -nullsub_14: @ 807AD54 - bx lr - thumb_func_end nullsub_14 - - thumb_func_start ReshowBattleScreenAfterMenu -ReshowBattleScreenAfterMenu: @ 807AD58 - push {lr} - ldr r2, _0807AD90 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - ldr r0, _0807AD94 @ =REG_MOSAIC - movs r2, 0 - strh r2, [r0] - ldr r0, _0807AD98 @ =0x02000000 - ldr r3, _0807AD9C @ =0x0001ffff - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _0807ADA0 @ =0x0001fffe - adds r0, r1 - strb r2, [r0] - ldr r0, _0807ADA4 @ =CB2_ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0807AD90: .4byte gPaletteFade -_0807AD94: .4byte REG_MOSAIC -_0807AD98: .4byte 0x02000000 -_0807AD9C: .4byte 0x0001ffff -_0807ADA0: .4byte 0x0001fffe -_0807ADA4: .4byte CB2_ReshowBattleScreenAfterMenu - thumb_func_end ReshowBattleScreenAfterMenu - - thumb_func_start CB2_ReshowBattleScreenAfterMenu -CB2_ReshowBattleScreenAfterMenu: @ 807ADA8 - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, _0807ADC4 @ =0x02000000 - ldr r1, _0807ADC8 @ =0x0001ffff - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x13 - bls _0807ADBA - b _0807B010 -_0807ADBA: - lsls r0, 2 - ldr r1, _0807ADCC @ =_0807ADD0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807ADC4: .4byte 0x02000000 -_0807ADC8: .4byte 0x0001ffff -_0807ADCC: .4byte _0807ADD0 - .align 2, 0 -_0807ADD0: - .4byte _0807AE20 - .4byte _0807AE84 - .4byte _0807AE9C - .4byte _0807AEC8 - .4byte _0807AECE - .4byte _0807AEE0 - .4byte _0807AEE6 - .4byte _0807AF18 - .4byte _0807AF1C - .4byte _0807AF20 - .4byte _0807AF24 - .4byte _0807AF48 - .4byte _0807AF50 - .4byte _0807AF58 - .4byte _0807AF60 - .4byte _0807AF68 - .4byte _0807AF70 - .4byte _0807AF78 - .4byte _0807AF80 - .4byte _0807AF88 -_0807AE20: - bl dp12_8087EA4 - ldr r4, _0807AE5C @ =gWindowConfig_81E6C58 - adds r0, r4, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _0807AE60 @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r0, _0807AE64 @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _0807AE68 @ =gUnknown_030042A0 - strh r1, [r0] - ldr r0, _0807AE6C @ =gUnknown_030042C0 - strh r1, [r0] - ldr r0, _0807AE70 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _0807AE74 @ =gUnknown_03004288 - strh r1, [r0] - ldr r0, _0807AE78 @ =gUnknown_03004280 - strh r1, [r0] - ldr r0, _0807AE7C @ =gUnknown_030041B0 - strh r1, [r0] - ldr r0, _0807AE80 @ =gUnknown_030041B8 - strh r1, [r0] - b _0807B040 - .align 2, 0 -_0807AE5C: .4byte gWindowConfig_81E6C58 -_0807AE60: .4byte gUnknown_03004210 -_0807AE64: .4byte gUnknown_030042A4 -_0807AE68: .4byte gUnknown_030042A0 -_0807AE6C: .4byte gUnknown_030042C0 -_0807AE70: .4byte gUnknown_030041B4 -_0807AE74: .4byte gUnknown_03004288 -_0807AE78: .4byte gUnknown_03004280 -_0807AE7C: .4byte gUnknown_030041B0 -_0807AE80: .4byte gUnknown_030041B8 -_0807AE84: - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _0807AE98 @ =0x01006000 - add r0, sp, 0x4 - bl CpuFastSet - b _0807B040 - .align 2, 0 -_0807AE98: .4byte 0x01006000 -_0807AE9C: - ldr r5, _0807AEBC @ =0x02000000 - ldr r0, _0807AEC0 @ =0x0001fffe - adds r4, r5, r0 - ldrb r0, [r4] - bl sub_800E414 - lsls r0, 24 - cmp r0, 0 - bne _0807AEF8 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r0, _0807AEC4 @ =0x0001ffff - adds r1, r5, r0 - b _0807AF38 - .align 2, 0 -_0807AEBC: .4byte 0x02000000 -_0807AEC0: .4byte 0x0001fffe -_0807AEC4: .4byte 0x0001ffff -_0807AEC8: - bl ResetSpriteData - b _0807B040 -_0807AECE: - bl FreeAllSpritePalettes - ldr r1, _0807AEDC @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - b _0807B040 - .align 2, 0 -_0807AEDC: .4byte gReservedSpritePaletteCount -_0807AEE0: - bl sub_8031EE8 - b _0807B040 -_0807AEE6: - ldr r5, _0807AF00 @ =0x02000000 - ldr r1, _0807AF04 @ =0x0001fffe - adds r4, r5, r1 - ldrb r0, [r4] - bl sub_8031C30 - lsls r0, 24 - cmp r0, 0 - beq _0807AF08 -_0807AEF8: - movs r0, 0 - strb r0, [r4] - b _0807B040 - .align 2, 0 -_0807AF00: .4byte 0x02000000 -_0807AF04: .4byte 0x0001fffe -_0807AF08: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r0, _0807AF14 @ =0x0001ffff - adds r1, r5, r0 - b _0807AF38 - .align 2, 0 -_0807AF14: .4byte 0x0001ffff -_0807AF18: - movs r0, 0 - b _0807AF26 -_0807AF1C: - movs r0, 0x1 - b _0807AF26 -_0807AF20: - movs r0, 0x2 - b _0807AF26 -_0807AF24: - movs r0, 0x3 -_0807AF26: - bl sub_807B094 - lsls r0, 24 - cmp r0, 0 - beq _0807AF32 - b _0807B040 -_0807AF32: - ldr r1, _0807AF40 @ =0x02000000 - ldr r0, _0807AF44 @ =0x0001ffff - adds r1, r0 -_0807AF38: - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - b _0807B040 - .align 2, 0 -_0807AF40: .4byte 0x02000000 -_0807AF44: .4byte 0x0001ffff -_0807AF48: - movs r0, 0 - bl sub_807B184 - b _0807B040 -_0807AF50: - movs r0, 0x1 - bl sub_807B184 - b _0807B040 -_0807AF58: - movs r0, 0x2 - bl sub_807B184 - b _0807B040 -_0807AF60: - movs r0, 0x3 - bl sub_807B184 - b _0807B040 -_0807AF68: - movs r0, 0 - bl sub_807B508 - b _0807B040 -_0807AF70: - movs r0, 0x1 - bl sub_807B508 - b _0807B040 -_0807AF78: - movs r0, 0x2 - bl sub_807B508 - b _0807B040 -_0807AF80: - movs r0, 0x3 - bl sub_807B508 - b _0807B040 -_0807AF88: - bl sub_80327CC - movs r0, 0x1 - bl GetBankByPlayerAI - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, _0807B000 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0807B004 @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0807AFEC - movs r0, 0x3 - bl GetBankByPlayerAI - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 -_0807AFEC: - ldr r1, _0807B008 @ =gActionSelectionCursor - ldr r0, _0807B00C @ =gBankInMenu - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3E4 - b _0807B040 - .align 2, 0 -_0807B000: .4byte gBattlePartyID -_0807B004: .4byte gEnemyParty -_0807B008: .4byte gActionSelectionCursor -_0807B00C: .4byte gBankInMenu -_0807B010: - ldr r0, _0807B054 @ =sub_800FCD4 - bl SetHBlankCallback - ldr r0, _0807B058 @ =sub_800FCFC - bl SetVBlankCallback - bl sub_807B06C - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r2, _0807B05C @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0807B060 @ =sub_800F808 - bl SetMainCallback2 -_0807B040: - ldr r1, _0807B064 @ =0x02000000 - ldr r0, _0807B068 @ =0x0001ffff - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807B054: .4byte sub_800FCD4 -_0807B058: .4byte sub_800FCFC -_0807B05C: .4byte gPaletteFade -_0807B060: .4byte sub_800F808 -_0807B064: .4byte 0x02000000 -_0807B068: .4byte 0x0001ffff - thumb_func_end CB2_ReshowBattleScreenAfterMenu - - thumb_func_start sub_807B06C -sub_807B06C: @ 807B06C - push {lr} - bl sub_800D6D4 - ldr r3, _0807B08C @ =REG_BG1CNT - ldrb r2, [r3] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3] - ldr r2, _0807B090 @ =REG_BG2CNT - ldrb r0, [r2] - ands r1, r0 - strb r1, [r2] - pop {r0} - bx r0 - .align 2, 0 -_0807B08C: .4byte REG_BG1CNT -_0807B090: .4byte REG_BG2CNT - thumb_func_end sub_807B06C - - thumb_func_start sub_807B094 -sub_807B094: @ 807B094 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807B0D8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bcs _0807B172 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B0F2 - lsls r0, r4, 2 - ldr r1, _0807B0DC @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0807B0E8 - ldr r1, _0807B0E0 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B0E4 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - bl sub_8031794 - b _0807B168 - .align 2, 0 -_0807B0D8: .4byte gNoOfAllBanks -_0807B0DC: .4byte 0x02017800 -_0807B0E0: .4byte gBattlePartyID -_0807B0E4: .4byte gEnemyParty -_0807B0E8: - adds r0, r4, 0 - movs r1, 0 - bl sub_8032350 - b _0807B168 -_0807B0F2: - ldr r2, _0807B108 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B110 - cmp r4, 0 - bne _0807B110 - ldr r0, _0807B10C @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - b _0807B122 - .align 2, 0 -_0807B108: .4byte gBattleTypeFlags -_0807B10C: .4byte gSaveBlock2 -_0807B110: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B12A - cmp r4, 0 - bne _0807B12A - movs r0, 0x2 -_0807B122: - movs r1, 0 - bl sub_8031AF4 - b _0807B168 -_0807B12A: - lsls r0, r4, 2 - ldr r1, _0807B154 @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0807B160 - ldr r1, _0807B158 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B15C @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl sub_80318FC - b _0807B168 - .align 2, 0 -_0807B154: .4byte 0x02017800 -_0807B158: .4byte gBattlePartyID -_0807B15C: .4byte gPlayerParty -_0807B160: - adds r0, r4, 0 - movs r1, 0 - bl sub_8032350 -_0807B168: - ldr r0, _0807B17C @ =0x02000000 - ldr r1, _0807B180 @ =0x0001fffe - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_0807B172: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0807B17C: .4byte 0x02000000 -_0807B180: .4byte 0x0001fffe - thumb_func_end sub_807B094 - - thumb_func_start sub_807B184 -sub_807B184: @ 807B184 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0807B1B8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r7, r0 - bcc _0807B19E - b _0807B4D8 -_0807B19E: - lsls r2, r7, 2 - ldr r0, _0807B1BC @ =0x02017800 - adds r0, r2, r0 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - str r2, [sp] - cmp r0, 0 - beq _0807B1C0 - adds r0, r7, 0 - bl sub_8077F7C - b _0807B1C6 - .align 2, 0 -_0807B1B8: .4byte gNoOfAllBanks -_0807B1BC: .4byte 0x02017800 -_0807B1C0: - adds r0, r7, 0 - bl sub_8077F68 -_0807B1C6: - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0807B1DA - b _0807B2D8 -_0807B1DA: - ldr r1, _0807B2BC @ =gBattlePartyID - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _0807B2C0 @ =gEnemyParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B1FE - b _0807B4D8 -_0807B1FE: - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r5, _0807B2C4 @ =gUnknown_02024E8C - adds r0, r7, 0 - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r4, _0807B2C8 @ =gObjectBankIDs - adds r4, r7, r4 - strb r0, [r4] - ldr r5, _0807B2CC @ =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B2D0 @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0807B2D4 @ =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim - b _0807B4AC - .align 2, 0 -_0807B2BC: .4byte gBattlePartyID -_0807B2C0: .4byte gEnemyParty -_0807B2C4: .4byte gUnknown_02024E8C -_0807B2C8: .4byte gObjectBankIDs -_0807B2CC: .4byte gSprites -_0807B2D0: .4byte SpriteCallbackDummy -_0807B2D4: .4byte gBattleMonForms -_0807B2D8: - ldr r2, _0807B328 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B338 - cmp r7, 0 - bne _0807B338 - ldr r5, _0807B32C @ =gSaveBlock2 - ldrb r4, [r5, 0x8] - movs r0, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C5A0 - ldr r6, _0807B330 @ =gUnknown_02024E8C - ldr r1, _0807B334 @ =gTrainerBackPicCoords - ldrb r0, [r5, 0x8] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - movs r0, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - b _0807B37C - .align 2, 0 -_0807B328: .4byte gBattleTypeFlags -_0807B32C: .4byte gSaveBlock2 -_0807B330: .4byte gUnknown_02024E8C -_0807B334: .4byte gTrainerBackPicCoords -_0807B338: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B3D0 - cmp r7, 0 - bne _0807B3D0 - movs r0, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x2 - bl GetMonSpriteTemplate_803C5A0 - ldr r5, _0807B3BC @ =gUnknown_02024E8C - ldr r0, _0807B3C0 @ =gTrainerBackPicCoords - ldrb r0, [r0, 0x8] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r4, r1 - asrs r4, 16 - movs r0, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 -_0807B37C: - movs r1, 0x50 - adds r2, r4, 0 - bl CreateSprite - ldr r3, _0807B3C4 @ =gObjectBankIDs - strb r0, [r3] - ldr r4, _0807B3C8 @ =gSprites - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x5] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B3CC @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x2E] - b _0807B4AC - .align 2, 0 -_0807B3BC: .4byte gUnknown_02024E8C -_0807B3C0: .4byte gTrainerBackPicCoords -_0807B3C4: .4byte gObjectBankIDs -_0807B3C8: .4byte gSprites -_0807B3CC: .4byte SpriteCallbackDummy -_0807B3D0: - ldr r1, _0807B4E8 @ =gBattlePartyID - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _0807B4EC @ =gPlayerParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0807B4D8 - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r5, _0807B4F0 @ =gUnknown_02024E8C - adds r0, r7, 0 - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r4, _0807B4F4 @ =gObjectBankIDs - adds r4, r7, r4 - strb r0, [r4] - ldr r5, _0807B4F8 @ =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B4FC @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0807B500 @ =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim -_0807B4AC: - ldr r1, _0807B4F8 @ =gSprites - ldr r0, _0807B4F4 @ =gObjectBankIDs - adds r0, r7, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r0, _0807B504 @ =0x02017800 - ldr r1, [sp] - adds r0, r1, r0 - ldr r1, [r0] - lsls r1, 31 - adds r2, 0x3E - lsrs r1, 31 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_0807B4D8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807B4E8: .4byte gBattlePartyID -_0807B4EC: .4byte gPlayerParty -_0807B4F0: .4byte gUnknown_02024E8C -_0807B4F4: .4byte gObjectBankIDs -_0807B4F8: .4byte gSprites -_0807B4FC: .4byte SpriteCallbackDummy -_0807B500: .4byte gBattleMonForms -_0807B504: .4byte 0x02017800 - thumb_func_end sub_807B184 - - thumb_func_start sub_807B508 -sub_807B508: @ 807B508 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0807B530 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bcc _0807B518 - b _0807B68A -_0807B518: - ldr r2, _0807B534 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B538 - cmp r5, 0 - bne _0807B538 - bl battle_make_oam_safari_battle - b _0807B550 - .align 2, 0 -_0807B530: .4byte gNoOfAllBanks -_0807B534: .4byte gBattleTypeFlags -_0807B538: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B54A - cmp r5, 0 - bne _0807B54A - b _0807B68A -_0807B54A: - adds r0, r5, 0 - bl battle_make_oam_normal_battle -_0807B550: - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0807B58C @ =gHealthboxIDs - adds r4, r5, r0 - strb r6, [r4] - adds r0, r5, 0 - bl sub_8043F44 - adds r0, r6, 0 - bl sub_8043DFC - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B598 - ldrb r0, [r4] - ldr r1, _0807B590 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B594 @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - b _0807B5E4 - .align 2, 0 -_0807B58C: .4byte gHealthboxIDs -_0807B590: .4byte gBattlePartyID -_0807B594: .4byte gEnemyParty -_0807B598: - ldr r0, _0807B5C0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B5CC - ldrb r0, [r4] - ldr r1, _0807B5C4 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B5C8 @ =gPlayerParty - adds r1, r2 - movs r2, 0xA - bl sub_8045A5C - b _0807B5E4 - .align 2, 0 -_0807B5C0: .4byte gBattleTypeFlags -_0807B5C4: .4byte gBattlePartyID -_0807B5C8: .4byte gPlayerParty -_0807B5CC: - ldrb r0, [r4] - ldr r1, _0807B610 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B614 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C -_0807B5E4: - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0807B600 - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0807B61C -_0807B600: - ldr r0, _0807B618 @ =gHealthboxIDs - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x1 - bl nullsub_11 - b _0807B628 - .align 2, 0 -_0807B610: .4byte gBattlePartyID -_0807B614: .4byte gPlayerParty -_0807B618: .4byte gHealthboxIDs -_0807B61C: - ldr r0, _0807B654 @ =gHealthboxIDs - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0 - bl nullsub_11 -_0807B628: - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B660 - ldr r0, _0807B658 @ =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B65C @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B68A - adds r0, r6, 0 - bl sub_8043DB0 - b _0807B68A - .align 2, 0 -_0807B654: .4byte gHealthboxIDs -_0807B658: .4byte gBattlePartyID -_0807B65C: .4byte gEnemyParty -_0807B660: - ldr r0, _0807B690 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0807B68A - ldr r0, _0807B694 @ =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B698 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B68A - adds r0, r6, 0 - bl sub_8043DB0 -_0807B68A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807B690: .4byte gBattleTypeFlags -_0807B694: .4byte gBattlePartyID -_0807B698: .4byte gPlayerParty - thumb_func_end sub_807B508 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/shop.s b/asm/shop.s deleted file mode 100644 index a341e90a1..000000000 --- a/asm/shop.s +++ /dev/null @@ -1,2613 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B33D0 -sub_80B33D0: @ 80B33D0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r6, r0, 0 - adds r4, r1, 0 - mov r8, r2 - lsls r4, 22 - ldr r5, _080B3418 @ =gBGTilemapBuffers + 0x1800 - lsls r6, 17 - asrs r6, 16 - movs r0, 0x80 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - mov r3, r8 - bl BuyMenuDrawMapMetatileLayer - ldr r0, _080B341C @ =0xfffff800 - adds r5, r0 - movs r0, 0x8 - add r8, r0 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - mov r3, r8 - bl BuyMenuDrawMapMetatileLayer - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3418: .4byte gBGTilemapBuffers + 0x1800 -_080B341C: .4byte 0xfffff800 - thumb_func_end sub_80B33D0 - - thumb_func_start sub_80B3420 -sub_80B3420: @ 80B3420 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r1, sp - mov r0, sp - ldrh r0, [r0] - subs r0, 0x3 - strh r0, [r1] - ldrh r0, [r4] - subs r0, 0x3 - strh r0, [r4] - movs r1, 0 - ldr r0, _080B34A8 @ =0x000001ff - mov r10, r0 - ldr r2, _080B34AC @ =gMapHeader - mov r9, r2 -_080B3452: - movs r4, 0 - lsls r1, 16 - mov r8, r1 - asrs r7, r1, 16 -_080B345A: - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r4, 16 - asrs r6, r4, 16 - adds r0, r6 - mov r2, sp - movs r3, 0x2 - ldrsh r1, [r2, r3] - adds r1, r7 - bl MapGridGetMetatileIdAt - lsls r0, 16 - lsrs r5, r0, 16 - cmp r7, 0x5 - beq _080B34D0 - cmp r6, 0x6 - beq _080B34D0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, r6 - mov r2, sp - movs r3, 0x2 - ldrsh r1, [r2, r3] - adds r1, r7 - bl MapGridGetMetatileLayerTypeAt - lsls r0, 24 - lsrs r3, r0, 24 - cmp r5, r10 - bhi _080B34B0 - mov r1, r9 - ldr r0, [r1] - ldr r0, [r0, 0x10] - lsls r1, r5, 4 - ldr r2, [r0, 0xC] - adds r2, r1 - b _080B34C0 - .align 2, 0 -_080B34A8: .4byte 0x000001ff -_080B34AC: .4byte gMapHeader -_080B34B0: - mov r2, r9 - ldr r0, [r2] - ldr r1, [r0, 0x14] - ldr r2, _080B34CC @ =0xfffffe00 - adds r0, r5, r2 - lsls r0, 4 - ldr r2, [r1, 0xC] - adds r2, r0 -_080B34C0: - adds r0, r6, 0 - adds r1, r7, 0 - bl BuyMenuDrawMapMetatile - b _080B3506 - .align 2, 0 -_080B34CC: .4byte 0xfffffe00 -_080B34D0: - cmp r5, r10 - bhi _080B34EC - asrs r0, r4, 16 - mov r3, r9 - ldr r1, [r3] - ldr r1, [r1, 0x10] - lsls r3, r5, 4 - ldr r2, [r1, 0xC] - adds r2, r3 - mov r3, r8 - asrs r1, r3, 16 - bl sub_80B33D0 - b _080B3506 -_080B34EC: - asrs r0, r4, 16 - mov r2, r9 - ldr r1, [r2] - ldr r2, [r1, 0x14] - ldr r3, _080B354C @ =0xfffffe00 - adds r1, r5, r3 - lsls r1, 4 - ldr r2, [r2, 0xC] - adds r2, r1 - mov r3, r8 - asrs r1, r3, 16 - bl sub_80B33D0 -_080B3506: - cmp r7, 0 - bne _080B3520 - asrs r1, r4, 16 - cmp r1, 0 - beq _080B3520 - cmp r1, 0x6 - beq _080B3520 - lsls r1, 17 - asrs r1, 16 - ldr r0, _080B3550 @ =gBGTilemapBuffers + 0x800 - movs r2, 0x40 - bl sub_80B32EC -_080B3520: - movs r1, 0x80 - lsls r1, 9 - adds r0, r4, r1 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080B345A - adds r0, r1, 0 - add r0, r8 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080B3452 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B354C: .4byte 0xfffffe00 -_080B3550: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sub_80B3420 - - thumb_func_start BuyMenuDrawMapGraphics -BuyMenuDrawMapGraphics: @ 80B3554 - push {lr} - bl sub_80F9020 - bl sub_80B356C - bl sub_80B368C - bl sub_80B3420 - pop {r0} - bx r0 - thumb_func_end BuyMenuDrawMapGraphics - - thumb_func_start sub_80B356C -sub_80B356C: @ 80B356C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r8, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r5, 0 - ldr r2, _080B3674 @ =gUnknown_020386A4 - movs r1, 0x10 -_080B3598: - lsls r0, r5, 3 - adds r0, r2 - strh r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080B3598 - movs r5, 0 - ldr r7, _080B3678 @ =gUnknown_020386AA - subs r1, r7, 0x6 - mov r9, r1 -_080B35B0: - movs r4, 0 - adds r2, r5, 0x1 - mov r10, r2 -_080B35B6: - mov r1, sp - ldr r3, _080B367C @ =0x0000fffd - adds r0, r3, 0 - ldrh r1, [r1] - adds r0, r1 - adds r0, r4 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080B3680 @ =0x0000fffe - adds r1, r2, 0 - mov r3, sp - ldrh r3, [r3, 0x2] - adds r1, r3 - adds r1, r5 - lsls r1, 16 - lsrs r1, 16 - ldr r2, [sp, 0x4] - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x10 - beq _080B3650 - mov r0, r8 - lsls r3, r0, 3 - mov r1, r9 - adds r0, r3, r1 - movs r6, 0 - strh r2, [r0] - mov r0, r9 - adds r0, 0x2 - adds r0, r3, r0 - strh r4, [r0] - ldr r1, _080B3684 @ =gUnknown_020386A8 - adds r0, r3, r1 - strh r5, [r0] - ldr r1, _080B3688 @ =gMapObjects - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r2, r0, r1 - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x1 - bne _080B3616 - adds r0, r3, r7 - strh r6, [r0] -_080B3616: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x2 - bne _080B3626 - adds r1, r3, r7 - movs r0, 0x1 - strh r0, [r1] -_080B3626: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x3 - bne _080B3636 - adds r1, r3, r7 - movs r0, 0x2 - strh r0, [r1] -_080B3636: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x4 - bne _080B3646 - adds r1, r3, r7 - movs r0, 0x3 - strh r0, [r1] -_080B3646: - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 -_080B3650: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080B35B6 - mov r2, r10 - lsls r0, r2, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _080B35B0 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B3674: .4byte gUnknown_020386A4 -_080B3678: .4byte gUnknown_020386AA -_080B367C: .4byte 0x0000fffd -_080B3680: .4byte 0x0000fffe -_080B3684: .4byte gUnknown_020386A8 -_080B3688: .4byte gMapObjects - thumb_func_end sub_80B356C - - thumb_func_start sub_80B368C -sub_80B368C: @ 80B368C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r5, 0 - ldr r6, _080B3710 @ =gUnknown_020386A4 - adds r0, r6, 0x6 - mov r8, r0 - ldr r7, _080B3714 @ =gMapObjects -_080B369E: - lsls r4, r5, 3 - adds r1, r4, r6 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x10 - beq _080B36F8 - adds r1, r0, 0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x5] - adds r1, r6, 0x2 - adds r1, r4, r1 - ldrh r2, [r1] - lsls r2, 4 - adds r2, 0x8 - lsls r2, 16 - asrs r2, 16 - adds r1, r6, 0x4 - adds r1, r4, r1 - ldrh r3, [r1] - lsls r3, 20 - movs r1, 0x80 - lsls r1, 14 - adds r3, r1 - asrs r3, 16 - movs r1, 0x2 - str r1, [sp] - ldr r1, _080B3718 @ =SpriteCallbackDummy - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _080B371C @ =gSprites - adds r2, r0 - mov r1, r8 - adds r0, r4, r1 - ldrb r1, [r0] - adds r0, r2, 0 - bl StartSpriteAnim -_080B36F8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080B369E - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B3710: .4byte gUnknown_020386A4 -_080B3714: .4byte gMapObjects -_080B3718: .4byte SpriteCallbackDummy -_080B371C: .4byte gSprites - thumb_func_end sub_80B368C - - thumb_func_start sub_80B3720 -sub_80B3720: @ 80B3720 - push {r4-r6,lr} - movs r1, 0 - ldr r6, _080B3754 @ =gBGTilemapBuffers + 0x800 - ldr r5, _080B3758 @ =0x000003ff - ldr r4, _080B375C @ =0x02018000 - ldr r0, _080B3760 @ =0x0000c3e0 - adds r3, r0, 0 -_080B372E: - lsls r0, r1, 16 - asrs r2, r0, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, 0 - beq _080B3742 - adds r1, r6 - adds r0, r3 - strh r0, [r1] -_080B3742: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, r5 - ble _080B372E - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3754: .4byte gBGTilemapBuffers + 0x800 -_080B3758: .4byte 0x000003ff -_080B375C: .4byte 0x02018000 -_080B3760: .4byte 0x0000c3e0 - thumb_func_end sub_80B3720 - - thumb_func_start sub_80B3764 -sub_80B3764: @ 80B3764 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_80B3720 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_80B39D0 - ldr r0, _080B3798 @ =gUnknown_03000708 - ldrb r0, [r0, 0x9] - str r0, [sp] - movs r0, 0xF - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0xE - movs r2, 0x2 - movs r3, 0x8 - bl InitMenu - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3798: .4byte gUnknown_03000708 - thumb_func_end sub_80B3764 - - thumb_func_start sub_80B379C -sub_80B379C: @ 80B379C - push {r4-r7,lr} - movs r1, 0 - ldr r0, _080B37E0 @ =gBGTilemapBuffers + 0x800 - mov r12, r0 - ldr r7, _080B37E4 @ =0x02018300 - ldr r0, _080B37E8 @ =0x0000c3e0 - adds r6, r0, 0 -_080B37AA: - movs r2, 0 - adds r0, r1, 0 - adds r0, 0xC - adds r5, r1, 0x1 - lsls r4, r0, 5 - lsls r3, r1, 5 -_080B37B6: - adds r1, r4, r2 - lsls r1, 1 - add r1, r12 - adds r0, r3, r2 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - adds r0, r6, r0 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xD - bls _080B37B6 - lsls r0, r5, 16 - lsrs r1, r0, 16 - cmp r1, 0x7 - bls _080B37AA - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B37E0: .4byte gBGTilemapBuffers + 0x800 -_080B37E4: .4byte 0x02018300 -_080B37E8: .4byte 0x0000c3e0 - thumb_func_end sub_80B379C - - thumb_func_start sub_80B37EC -sub_80B37EC: @ 80B37EC - push {lr} - bl sub_80B3A70 - pop {r0} - bx r0 - thumb_func_end sub_80B37EC - - thumb_func_start sub_80B37F8 -sub_80B37F8: @ 80B37F8 - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r1, _080B3884 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - ldrb r2, [r1, 0x9] - adds r0, r2 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, _080B3888 @ =gTasks - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - adds r5, r0 - movs r1, 0xA - ldrsh r0, [r5, r1] - muls r0, r4 - movs r1, 0x6 - movs r2, 0x6 - movs r3, 0xB - bl sub_80B7A94 - ldr r0, _080B388C @ =gStringVar1 - movs r1, 0xFC - strb r1, [r0] - movs r1, 0x14 - strb r1, [r0, 0x1] - movs r1, 0x6 - strb r1, [r0, 0x2] - adds r0, 0x3 - movs r2, 0xA - ldrsh r1, [r5, r2] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _080B3890 @ =gOtherText_xString1 - movs r1, 0x1 - movs r2, 0xB - bl MenuPrint - ldr r0, _080B3894 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - ldr r1, _080B3898 @ =0x0000c3e1 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3884: .4byte gUnknown_03000708 -_080B3888: .4byte gTasks -_080B388C: .4byte gStringVar1 -_080B3890: .4byte gOtherText_xString1 -_080B3894: .4byte gBGTilemapBuffers + 0x800 -_080B3898: .4byte 0x0000c3e1 - thumb_func_end sub_80B37F8 - - thumb_func_start sub_80B389C -sub_80B389C: @ 80B389C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - mov r8, r2 - lsls r0, 16 - lsrs r2, r0, 16 - mov r9, r2 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r5, _080B392C @ =gStringVar1 - mov r0, r8 - cmp r0, 0 - beq _080B38C8 - movs r0, 0xFC - strb r0, [r5] - movs r0, 0x1 - strb r0, [r5, 0x1] - movs r0, 0x2 - strb r0, [r5, 0x2] - adds r5, 0x3 -_080B38C8: - adds r0, r2, 0 - adds r1, r5, 0 - bl CopyItemName - ldr r6, _080B392C @ =gStringVar1 - lsls r7, r4, 3 - movs r0, 0x1 - str r0, [sp] - adds r0, r6, 0 - movs r1, 0x70 - adds r2, r7, 0 - movs r3, 0x58 - bl sub_8072A18 - adds r5, r6, 0 - mov r0, r8 - cmp r0, 0 - beq _080B38EE - adds r5, r6, 0x3 -_080B38EE: - mov r0, r9 - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x4 - bl sub_80B79F8 - adds r0, r6, 0 - movs r1, 0xCA - adds r2, r7, 0 - movs r3, 0x1 - bl MenuPrint_PixelCoords - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B392C: .4byte gStringVar1 - thumb_func_end sub_80B389C - - thumb_func_start sub_80B3930 -sub_80B3930: @ 80B3930 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r2, 0 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - ldr r2, _080B39A0 @ =gStringVar1 - cmp r4, 0 - beq _080B395A - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x1 - strb r0, [r2, 0x1] - movs r0, 0x2 - strb r0, [r2, 0x2] - adds r2, 0x3 -_080B395A: - lsls r6, r3, 5 - ldr r0, _080B39A4 @ =gDecorations + 0x1 - mov r8, r0 - adds r1, r6, r0 - adds r0, r2, 0 - bl StringCopy - ldr r5, _080B39A0 @ =gStringVar1 - mov r0, r9 - lsls r7, r0, 3 - movs r0, 0x1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0x70 - adds r2, r7, 0 - movs r3, 0x58 - bl sub_8072A18 - adds r2, r5, 0 - cmp r4, 0 - beq _080B3986 - adds r2, r5, 0x3 -_080B3986: - mov r0, r8 - subs r0, 0x1 - adds r3, r6, r0 - ldrh r1, [r3, 0x14] - ldr r0, _080B39A8 @ =0x00002710 - cmp r1, r0 - bne _080B39AC - movs r0, 0x19 - mov r1, r9 - adds r2, r4, 0 - bl sub_80B7B34 - b _080B39C2 - .align 2, 0 -_080B39A0: .4byte gStringVar1 -_080B39A4: .4byte gDecorations + 0x1 -_080B39A8: .4byte 0x00002710 -_080B39AC: - ldrh r1, [r3, 0x14] - adds r0, r2, 0 - movs r2, 0x4 - bl sub_80B79F8 - adds r0, r5, 0 - movs r1, 0xCA - adds r2, r7, 0 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_080B39C2: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B3930 - - thumb_func_start sub_80B39D0 -sub_80B39D0: @ 80B39D0 - push {r4-r6,lr} - adds r6, r1, 0 - adds r5, r2, 0 - b _080B3A1A -_080B39D8: - ldrb r0, [r1, 0xC] - cmp r0, 0 - bne _080B39FC - ldrb r0, [r1, 0xB] - adds r0, r4 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 25 - movs r2, 0x80 - lsls r2, 18 - adds r1, r2 - lsrs r1, 24 - adds r2, r5, 0 - bl sub_80B389C - b _080B3A18 -_080B39FC: - ldrb r0, [r1, 0xB] - adds r0, r4 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 25 - movs r2, 0x80 - lsls r2, 18 - adds r1, r2 - lsrs r1, 24 - adds r2, r5, 0 - bl sub_80B3930 -_080B3A18: - adds r0, r4, 0x1 -_080B3A1A: - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bgt _080B3A2E - ldr r1, _080B3A68 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - adds r0, r4 - ldrb r2, [r1, 0x8] - cmp r0, r2 - blt _080B39D8 -_080B3A2E: - cmp r4, 0x8 - beq _080B3A60 - ldr r1, _080B3A68 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - adds r0, r4 - ldrb r1, [r1, 0x8] - cmp r0, r1 - bne _080B3A60 - lsls r3, r4, 1 - adds r4, r3, 0x2 - lsls r4, 24 - lsrs r4, 24 - adds r3, 0x3 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0xE - adds r1, r4, 0 - movs r2, 0x1C - bl MenuFillWindowRectWithBlankTile - ldr r0, _080B3A6C @ =gOtherText_CancelNoTerminator - movs r1, 0xE - adds r2, r4, 0 - bl MenuPrint -_080B3A60: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3A68: .4byte gUnknown_03000708 -_080B3A6C: .4byte gOtherText_CancelNoTerminator - thumb_func_end sub_80B39D0 - - thumb_func_start sub_80B3A70 -sub_80B3A70: @ 80B3A70 - push {r4,lr} - sub sp, 0x8 - ldr r2, _080B3A9C @ =gUnknown_03000708 - ldrb r1, [r2, 0xB] - ldrb r0, [r2, 0x9] - adds r0, r1, r0 - ldrb r1, [r2, 0x8] - cmp r0, r1 - beq _080B3ACC - ldrb r4, [r2, 0xC] - cmp r4, 0 - bne _080B3AA0 - ldr r1, [r2, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetDescription - movs r1, 0x30 - str r1, [sp] - str r4, [sp, 0x4] - b _080B3ABA - .align 2, 0 -_080B3A9C: .4byte gUnknown_03000708 -_080B3AA0: - ldr r1, _080B3AC8 @ =gDecorations - ldr r2, [r2, 0x4] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 5 - adds r1, 0x18 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x30 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] -_080B3ABA: - movs r1, 0x4 - movs r2, 0x68 - movs r3, 0x68 - bl sub_8072AB0 - b _080B3AE0 - .align 2, 0 -_080B3AC8: .4byte gDecorations -_080B3ACC: - ldr r0, _080B3AE8 @ =gOtherText_QuitShopping - movs r1, 0x30 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x4 - movs r2, 0x68 - movs r3, 0x68 - bl sub_8072AB0 -_080B3AE0: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3AE8: .4byte gOtherText_QuitShopping - thumb_func_end sub_80B3A70 - - thumb_func_start sub_80B3AEC -sub_80B3AEC: @ 80B3AEC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080B3B5C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B3B06 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B3B7A -_080B3B06: - ldr r4, _080B3B60 @ =gUnknown_03000708 - ldrb r1, [r4, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x4 - bne _080B3B74 - ldr r0, _080B3B64 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x9 - ble _080B3B74 - movs r0, 0xC - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B3B74 - ldr r1, _080B3B68 @ =gOtherText_FreePremierBall - ldr r2, _080B3B6C @ =sub_80B4378 - ldr r3, _080B3B70 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - b _080B3B7A - .align 2, 0 -_080B3B5C: .4byte gMain -_080B3B60: .4byte gUnknown_03000708 -_080B3B64: .4byte gTasks -_080B3B68: .4byte gOtherText_FreePremierBall -_080B3B6C: .4byte sub_80B4378 -_080B3B70: .4byte 0x0000c3e1 -_080B3B74: - adds r0, r5, 0 - bl sub_80B4378 -_080B3B7A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80B3AEC - - thumb_func_start sub_80B3B80 -sub_80B3B80: @ 80B3B80 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x26 - bl IncrementGameStat - ldr r5, _080B3BC0 @ =gSaveBlock1 + 0x490 - ldr r0, _080B3BC4 @ =gUnknown_020386A0 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_80B79E0 - movs r0, 0x5F - bl PlaySE - ldr r0, [r5] - movs r1, 0 - movs r2, 0 - bl sub_80B7BEC - ldr r1, _080B3BC8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B3BCC @ =sub_80B3AEC - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3BC0: .4byte gSaveBlock1 + 0x490 -_080B3BC4: .4byte gUnknown_020386A0 -_080B3BC8: .4byte gTasks -_080B3BCC: .4byte sub_80B3AEC - thumb_func_end sub_80B3B80 - - thumb_func_start sub_80B3BD0 -sub_80B3BD0: @ 80B3BD0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B3BF0 @ =gUnknown_03000708 - ldrb r1, [r0, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - adds r0, r4, 0 - bl sub_80B4378 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3BF0: .4byte gUnknown_03000708 - thumb_func_end sub_80B3BD0 - - thumb_func_start sub_80B3BF4 -sub_80B3BF4: @ 80B3BF4 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3C7C @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - bl sub_80B379C - bl sub_80B3420 - ldr r0, _080B3C80 @ =gSaveBlock1 - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080B3C84 @ =gUnknown_020386A0 - ldr r1, [r1] - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - beq _080B3D18 - ldr r4, _080B3C88 @ =gUnknown_03000708 - ldrb r0, [r4, 0xC] - cmp r0, 0 - bne _080B3CAC - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r2, _080B3C8C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r2 - ldrh r1, [r1, 0xA] - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - beq _080B3C9C - ldr r1, _080B3C90 @ =gOtherText_HereYouGo - ldr r2, _080B3C94 @ =sub_80B3B80 - ldr r3, _080B3C98 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - adds r0, r5, 0 - bl sub_80B4470 - b _080B3D24 - .align 2, 0 -_080B3C7C: .4byte gBGTilemapBuffers + 0x800 -_080B3C80: .4byte gSaveBlock1 -_080B3C84: .4byte gUnknown_020386A0 -_080B3C88: .4byte gUnknown_03000708 -_080B3C8C: .4byte gTasks -_080B3C90: .4byte gOtherText_HereYouGo -_080B3C94: .4byte sub_80B3B80 -_080B3C98: .4byte 0x0000c3e1 -_080B3C9C: - ldr r1, _080B3CA4 @ =gOtherText_NoRoomFor - ldr r2, _080B3CA8 @ =sub_80B3BD0 - b _080B3CD8 - .align 2, 0 -_080B3CA4: .4byte gOtherText_NoRoomFor -_080B3CA8: .4byte sub_80B3BD0 -_080B3CAC: - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - bl IsThereStorageSpaceForDecoration - lsls r0, 24 - cmp r0, 0 - beq _080B3CF0 - ldrb r0, [r4, 0xC] - cmp r0, 0x1 - bne _080B3CD4 - ldr r1, _080B3CD0 @ =gOtherText_HereYouGo2 - b _080B3CD6 - .align 2, 0 -_080B3CD0: .4byte gOtherText_HereYouGo2 -_080B3CD4: - ldr r1, _080B3CE4 @ =gOtherText_HereYouGo3 -_080B3CD6: - ldr r2, _080B3CE8 @ =sub_80B3B80 -_080B3CD8: - ldr r3, _080B3CEC @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - b _080B3D24 - .align 2, 0 -_080B3CE4: .4byte gOtherText_HereYouGo3 -_080B3CE8: .4byte sub_80B3B80 -_080B3CEC: .4byte 0x0000c3e1 -_080B3CF0: - ldr r4, _080B3D08 @ =gStringVar4 - ldr r1, _080B3D0C @ =gOtherText_SpaceForIsFull - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B3D10 @ =sub_80B3BD0 - ldr r3, _080B3D14 @ =0x0000c3e1 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B3D24 - .align 2, 0 -_080B3D08: .4byte gStringVar4 -_080B3D0C: .4byte gOtherText_SpaceForIsFull -_080B3D10: .4byte sub_80B3BD0 -_080B3D14: .4byte 0x0000c3e1 -_080B3D18: - ldr r1, _080B3D2C @ =gOtherText_NotEnoughMoney - ldr r2, _080B3D30 @ =sub_80B3BD0 - ldr r3, _080B3D34 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField -_080B3D24: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3D2C: .4byte gOtherText_NotEnoughMoney -_080B3D30: .4byte sub_80B3BD0 -_080B3D34: .4byte 0x0000c3e1 - thumb_func_end sub_80B3BF4 - - thumb_func_start sub_80B3D38 -sub_80B3D38: @ 80B3D38 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _080B3D70 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - ldr r1, _080B3D74 @ =0x0000c3e1 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - ldr r1, _080B3D78 @ =gUnknown_083CC708 - adds r0, r4, 0 - bl DoYesNoFuncWithChoice - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3D70: .4byte gBGTilemapBuffers + 0x800 -_080B3D74: .4byte 0x0000c3e1 -_080B3D78: .4byte gUnknown_083CC708 - thumb_func_end sub_80B3D38 - - thumb_func_start sub_80B3D7C -sub_80B3D7C: @ 80B3D7C - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B3DC0 @ =gUnknown_03000708 - ldrb r1, [r0, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3DC4 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - adds r0, r4, 0 - bl sub_80B4378 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3DC0: .4byte gUnknown_03000708 -_080B3DC4: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sub_80B3D7C - - thumb_func_start sub_80B3DC8 -sub_80B3DC8: @ 80B3DC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r6, 0 - ldr r7, _080B3EA8 @ =gUnknown_03000708 - ldrb r1, [r7, 0xD] - adds r0, r6, 0 - bl sub_80A52C4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B3DEE - adds r0, r6, 0 - bl sub_80B37F8 -_080B3DEE: - ldr r0, _080B3EAC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080B3ED8 - ldr r0, _080B3EB0 @ =gUnknown_020386A0 - mov r8, r0 - ldrb r0, [r7, 0xB] - ldrb r1, [r7, 0x9] - adds r0, r1 - ldr r1, [r7, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, _080B3EB4 @ =gTasks - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - adds r5, r0 - movs r1, 0xA - ldrsh r0, [r5, r1] - muls r0, r4 - mov r2, r8 - str r0, [r2] - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3EB8 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - bl sub_80B379C - bl sub_80B3420 - ldrb r0, [r7, 0xB] - ldrb r1, [r7, 0x9] - adds r0, r1 - ldr r1, [r7, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r1, _080B3EBC @ =gStringVar1 - bl CopyItemName - ldr r0, _080B3EC0 @ =gStringVar2 - movs r2, 0xA - ldrsh r1, [r5, r2] - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _080B3EC4 @ =gStringVar3 - mov r2, r8 - ldr r1, [r2] - movs r2, 0 - movs r3, 0x8 - bl ConvertIntToDecimalStringN - ldr r4, _080B3EC8 @ =gStringVar4 - ldr r1, _080B3ECC @ =gOtherText_ThatWillBe - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B3ED0 @ =sub_80B3D38 - ldr r3, _080B3ED4 @ =0x0000c3e1 - adds r0, r6, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B3EF0 - .align 2, 0 -_080B3EA8: .4byte gUnknown_03000708 -_080B3EAC: .4byte gMain -_080B3EB0: .4byte gUnknown_020386A0 -_080B3EB4: .4byte gTasks -_080B3EB8: .4byte gBGTilemapBuffers + 0x800 -_080B3EBC: .4byte gStringVar1 -_080B3EC0: .4byte gStringVar2 -_080B3EC4: .4byte gStringVar3 -_080B3EC8: .4byte gStringVar4 -_080B3ECC: .4byte gOtherText_ThatWillBe -_080B3ED0: .4byte sub_80B3D38 -_080B3ED4: .4byte 0x0000c3e1 -_080B3ED8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B3EF0 - ldrb r1, [r7, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - adds r0, r4, 0 - bl sub_80B4378 -_080B3EF0: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B3DC8 - - thumb_func_start sub_80B3EFC -sub_80B3EFC: @ 80B3EFC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080B3F78 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0xA] - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuDrawTextWindow - adds r0, r5, 0 - bl sub_80B37F8 - ldr r6, _080B3F7C @ =gUnknown_03000708 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - ldr r1, _080B3F80 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r1, r2 - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, [r1] - adds r1, r4, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x63 - bls _080B3F62 - movs r0, 0x63 -_080B3F62: - strb r0, [r6, 0xD] - ldr r0, _080B3F78 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080B3F84 @ =sub_80B3DC8 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3F78: .4byte gTasks -_080B3F7C: .4byte gUnknown_03000708 -_080B3F80: .4byte gSaveBlock1 -_080B3F84: .4byte sub_80B3DC8 - thumb_func_end sub_80B3EFC - - thumb_func_start sub_80B3F88 -sub_80B3F88: @ 80B3F88 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080B4020 @ =gMenuWindow - mov r8, r0 - ldr r1, [r0, 0x28] - ldr r3, _080B4024 @ =0x000003de - adds r1, r3 - adds r2, r1, 0 - adds r2, 0x80 - ldr r7, [r0, 0x24] - mov r10, r7 - ldr r0, _080B4028 @ =0x000003ff - mov r9, r0 - movs r6, 0xD -_080B3FAC: - adds r3, r2, 0 - subs r3, 0x40 - str r3, [sp] - movs r7, 0x40 - negs r7, r7 - adds r7, r1 - mov r12, r7 - adds r3, r2, 0 - adds r4, r1, 0 - movs r5, 0xE -_080B3FC0: - ldrh r2, [r4] - mov r1, r9 - ands r1, r2 - mov r7, r8 - ldrh r0, [r7, 0x1A] - adds r0, 0x1 - cmp r1, r0 - ble _080B3FD4 - adds r0, r2, 0 - adds r0, 0x3C -_080B3FD4: - strh r0, [r3] - adds r3, 0x2 - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _080B3FC0 - ldr r2, [sp] - mov r1, r12 - subs r6, 0x1 - cmp r6, 0 - bge _080B3FAC - ldr r1, _080B402C @ =0x00003a20 - add r1, r10 - movs r0, 0xF0 - lsls r0, 3 - adds r2, r1, r0 - ldr r3, _080B4030 @ =0x040000d4 - ldr r5, _080B4034 @ =0x800000f0 - ldr r4, _080B4038 @ =0xfffffc40 - movs r6, 0xD -_080B3FFC: - str r1, [r3] - str r2, [r3, 0x4] - str r5, [r3, 0x8] - ldr r0, [r3, 0x8] - adds r2, r4 - adds r1, r4 - subs r6, 0x1 - cmp r6, 0 - bge _080B3FFC - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B4020: .4byte gMenuWindow -_080B4024: .4byte 0x000003de -_080B4028: .4byte 0x000003ff -_080B402C: .4byte 0x00003a20 -_080B4030: .4byte 0x040000d4 -_080B4034: .4byte 0x800000f0 -_080B4038: .4byte 0xfffffc40 - thumb_func_end sub_80B3F88 - - thumb_func_start sub_80B403C -sub_80B403C: @ 80B403C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080B40D8 @ =gMenuWindow - mov r8, r0 - ldr r2, [r0, 0x28] - adds r1, r2, 0 - adds r1, 0x9E - adds r2, r1, 0 - adds r1, 0x80 - ldr r3, [r0, 0x24] - mov r10, r3 - ldr r7, _080B40DC @ =0x000003ff - mov r9, r7 - movs r6, 0xD -_080B4060: - adds r0, r2, 0 - adds r0, 0x40 - str r0, [sp] - movs r3, 0x40 - adds r3, r1 - mov r12, r3 - adds r3, r2, 0 - adds r4, r1, 0 - movs r5, 0xE -_080B4072: - ldrh r2, [r4] - mov r1, r9 - ands r1, r2 - mov r7, r8 - ldrh r0, [r7, 0x1A] - adds r0, 0x1 - cmp r1, r0 - ble _080B4086 - adds r0, r2, 0 - subs r0, 0x3C -_080B4086: - strh r0, [r3] - adds r3, 0x2 - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _080B4072 - ldr r2, [sp] - mov r1, r12 - subs r6, 0x1 - cmp r6, 0 - bge _080B4060 - movs r1, 0x96 - lsls r1, 4 - add r1, r10 - adds r2, r1, 0 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r0 - ldr r3, _080B40E0 @ =0x040000d4 - ldr r5, _080B40E4 @ =0x800000f0 - movs r4, 0xF0 - lsls r4, 2 - movs r6, 0xD -_080B40B4: - str r1, [r3] - str r2, [r3, 0x4] - str r5, [r3, 0x8] - ldr r0, [r3, 0x8] - adds r2, r4 - adds r1, r4 - subs r6, 0x1 - cmp r6, 0 - bge _080B40B4 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B40D8: .4byte gMenuWindow -_080B40DC: .4byte 0x000003ff -_080B40E0: .4byte 0x040000d4 -_080B40E4: .4byte 0x800000f0 - thumb_func_end sub_80B403C - - thumb_func_start sub_80B40E8 -sub_80B40E8: @ 80B40E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - mov r8, r7 - ldr r0, _080B4134 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080B4102 - b _080B436C -_080B4102: - ldr r2, _080B4138 @ =gMain - ldrh r0, [r2, 0x30] - movs r1, 0xF0 - ands r1, r0 - cmp r1, 0x40 - bne _080B414C - ldr r4, _080B413C @ =gUnknown_03000708 - ldrb r0, [r4, 0x9] - cmp r0, 0 - bne _080B4140 - ldrb r0, [r4, 0xB] - cmp r0, 0 - bne _080B411E - b _080B436C -_080B411E: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - subs r0, 0x1 - strb r0, [r4, 0xB] - bl sub_80B3F88 - movs r0, 0 - movs r1, 0 - b _080B417A - .align 2, 0 -_080B4134: .4byte gPaletteFade -_080B4138: .4byte gMain -_080B413C: .4byte gUnknown_03000708 -_080B4140: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _080B41A0 -_080B414C: - cmp r1, 0x80 - bne _080B41AC - ldr r4, _080B418C @ =gUnknown_03000708 - ldrb r0, [r4, 0x9] - cmp r0, 0x7 - bne _080B4190 - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldrb r1, [r4, 0x8] - cmp r0, r1 - bne _080B4166 - b _080B436C -_080B4166: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - adds r0, 0x1 - strb r0, [r4, 0xB] - bl sub_80B403C - movs r0, 0x7 - movs r1, 0x7 -_080B417A: - movs r2, 0 - bl sub_80B39D0 - bl sub_80B3A70 - bl sub_80B32A4 - b _080B436C - .align 2, 0 -_080B418C: .4byte gUnknown_03000708 -_080B4190: - ldrb r2, [r4, 0x8] - cmp r0, r2 - bne _080B4198 - b _080B436C -_080B4198: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_080B41A0: - bl MoveMenuCursor - strb r0, [r4, 0x9] - bl sub_80B3A70 - b _080B436C -_080B41AC: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B41B8 - b _080B4358 -_080B41B8: - movs r0, 0x5 - bl PlaySE - ldr r6, _080B426C @ =gUnknown_03000708 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldrb r1, [r6, 0x8] - cmp r0, r1 - bne _080B41CE - b _080B4350 -_080B41CE: - movs r0, 0 - bl PauseVerticalScrollIndicator - movs r0, 0x1 - bl PauseVerticalScrollIndicator - movs r0, 0x1 - movs r1, 0x1 - bl sub_80F979C - ldrb r1, [r6, 0x9] - adds r0, r1, 0 - movs r2, 0x1 - bl sub_80B39D0 - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0xC - movs r2, 0xD - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldrb r0, [r6, 0xC] - cmp r0, 0 - bne _080B428C - ldr r5, _080B4270 @ =gUnknown_020386A0 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - str r4, [r5] - ldr r0, _080B4274 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - adds r1, r4, 0 - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - beq _080B42BA - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r1, _080B4278 @ =gStringVar1 - bl CopyItemName - ldr r4, _080B427C @ =gStringVar4 - ldr r1, _080B4280 @ =gOtherText_HowManyYouWant - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B4284 @ =sub_80B3EFC - ldr r3, _080B4288 @ =0x0000c3e1 - adds r0, r7, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B426C: .4byte gUnknown_03000708 -_080B4270: .4byte gUnknown_020386A0 -_080B4274: .4byte gSaveBlock1 -_080B4278: .4byte gStringVar1 -_080B427C: .4byte gStringVar4 -_080B4280: .4byte gOtherText_HowManyYouWant -_080B4284: .4byte sub_80B3EFC -_080B4288: .4byte 0x0000c3e1 -_080B428C: - ldr r5, _080B42C8 @ =gUnknown_020386A0 - ldr r4, _080B42CC @ =gDecorations - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 5 - adds r0, r4 - ldrh r1, [r0, 0x14] - str r1, [r5] - ldr r0, _080B42D0 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - bne _080B42E0 -_080B42BA: - ldr r1, _080B42D4 @ =gOtherText_NotEnoughMoney - ldr r2, _080B42D8 @ =sub_80B3BD0 - ldr r3, _080B42DC @ =0x0000c3e1 - adds r0, r7, 0 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B42C8: .4byte gUnknown_020386A0 -_080B42CC: .4byte gDecorations -_080B42D0: .4byte gSaveBlock1 -_080B42D4: .4byte gOtherText_NotEnoughMoney -_080B42D8: .4byte sub_80B3BD0 -_080B42DC: .4byte 0x0000c3e1 -_080B42E0: - ldr r0, _080B4318 @ =gStringVar1 - ldrb r1, [r6, 0xB] - ldrb r2, [r6, 0x9] - adds r1, r2 - ldr r2, [r6, 0x4] - lsls r1, 1 - adds r1, r2 - ldrh r1, [r1] - lsls r1, 5 - adds r2, r4, 0x1 - adds r1, r2 - bl StringCopy - ldr r0, _080B431C @ =gStringVar2 - ldr r1, [r5] - movs r2, 0 - movs r3, 0x8 - bl ConvertIntToDecimalStringN - ldrb r0, [r6, 0xC] - cmp r0, 0x1 - bne _080B4328 - ldr r0, _080B4320 @ =gStringVar4 - ldr r1, _080B4324 @ =gOtherText_ThatWillBe2 - bl StringExpandPlaceholders - b _080B4330 - .align 2, 0 -_080B4318: .4byte gStringVar1 -_080B431C: .4byte gStringVar2 -_080B4320: .4byte gStringVar4 -_080B4324: .4byte gOtherText_ThatWillBe2 -_080B4328: - ldr r0, _080B4340 @ =gStringVar4 - ldr r1, _080B4344 @ =gOtherText_ThatWillBe3 - bl StringExpandPlaceholders -_080B4330: - ldr r1, _080B4340 @ =gStringVar4 - ldr r2, _080B4348 @ =sub_80B3D38 - ldr r3, _080B434C @ =0x0000c3e1 - mov r0, r8 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B4340: .4byte gStringVar4 -_080B4344: .4byte gOtherText_ThatWillBe3 -_080B4348: .4byte sub_80B3D38 -_080B434C: .4byte 0x0000c3e1 -_080B4350: - adds r0, r7, 0 - bl sub_80B43F0 - b _080B436C -_080B4358: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B436C - movs r0, 0x5 - bl PlaySE - mov r0, r8 - bl sub_80B43F0 -_080B436C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B40E8 - - thumb_func_start sub_80B4378 -sub_80B4378: @ 80B4378 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B43E4 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - bl sub_80B3420 - movs r0, 0x6 - movs r1, 0x7 - bl sub_80B3764 - bl sub_80B37EC - movs r0, 0 - bl StartVerticalScrollIndicators - movs r0, 0x1 - bl StartVerticalScrollIndicators - bl sub_80B32A4 - ldr r1, _080B43E8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B43EC @ =sub_80B40E8 - str r1, [r0] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B43E4: .4byte gBGTilemapBuffers + 0x800 -_080B43E8: .4byte gTasks -_080B43EC: .4byte sub_80B40E8 - thumb_func_end sub_80B4378 - - thumb_func_start sub_80B43F0 -sub_80B43F0: @ 80B43F0 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080B4428 @ =gFieldCallback - ldr r0, _080B442C @ =sub_80B3050 - str r0, [r1] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080B4430 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B4434 @ =Task_ExitBuyMenu - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4428: .4byte gFieldCallback -_080B442C: .4byte sub_80B3050 -_080B4430: .4byte gTasks -_080B4434: .4byte Task_ExitBuyMenu - thumb_func_end sub_80B43F0 - - thumb_func_start Task_ExitBuyMenu -Task_ExitBuyMenu: @ 80B4438 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080B4468 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B4462 - movs r0, 0 - movs r1, 0 - bl RemoveMoneyLabelObject - bl BuyMenuFreeMemory - ldr r0, _080B446C @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_080B4462: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4468: .4byte gPaletteFade -_080B446C: .4byte c2_exit_to_overworld_2_switch - thumb_func_end Task_ExitBuyMenu - - thumb_func_start sub_80B4470 -sub_80B4470: @ 80B4470 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r2, 0 - ldr r0, _080B44C8 @ =gUnknown_02038724 - mov r12, r0 - ldr r6, _080B44CC @ =gUnknown_03000708 - mov r8, r12 - adds r4, r6, 0 - ldr r1, _080B44D0 @ =gTasks - mov r9, r1 - lsls r0, r5, 2 - adds r0, r5 - lsls r7, r0, 3 -_080B4492: - lsls r0, r2, 2 - mov r1, r8 - adds r3, r0, r1 - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r3] - ldrh r0, [r0] - cmp r1, r0 - bne _080B44DC - ldrh r0, [r3, 0x2] - cmp r0, 0 - beq _080B44DC - adds r2, r0, 0 - mov r4, r9 - adds r1, r7, r4 - movs r4, 0xA - ldrsh r0, [r1, r4] - adds r0, r2, r0 - cmp r0, 0xFF - ble _080B44D4 - movs r0, 0xFF - strh r0, [r3, 0x2] - b _080B451E - .align 2, 0 -_080B44C8: .4byte gUnknown_02038724 -_080B44CC: .4byte gUnknown_03000708 -_080B44D0: .4byte gTasks -_080B44D4: - ldrh r0, [r1, 0xA] - adds r0, r2, r0 - strh r0, [r3, 0x2] - b _080B451E -_080B44DC: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x2 - bls _080B4492 - ldr r3, _080B452C @ =gUnknown_02038730 - ldrb r0, [r3] - cmp r0, 0x2 - bhi _080B451E - adds r2, r0, 0 - lsls r2, 2 - add r2, r12 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - ldrb r1, [r3] - lsls r1, 2 - add r1, r12 - ldr r2, _080B4530 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r2 - ldrh r0, [r0, 0xA] - strh r0, [r1, 0x2] - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] -_080B451E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B452C: .4byte gUnknown_02038730 -_080B4530: .4byte gTasks - thumb_func_end sub_80B4470 - - thumb_func_start ClearItemPurchases -ClearItemPurchases: @ 80B4534 - push {lr} - ldr r0, _080B4548 @ =gUnknown_02038730 - movs r1, 0 - strb r1, [r0] - ldr r0, _080B454C @ =gUnknown_02038724 - movs r1, 0x3 - bl ClearItemSlots - pop {r0} - bx r0 - .align 2, 0 -_080B4548: .4byte gUnknown_02038730 -_080B454C: .4byte gUnknown_02038724 - thumb_func_end ClearItemPurchases - - thumb_func_start CreatePokemartMenu -CreatePokemartMenu: @ 80B4550 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - bl ClearItemPurchases - ldr r0, _080B4570 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4570: .4byte EnableBothScriptContexts - thumb_func_end CreatePokemartMenu - - thumb_func_start CreateDecorationShop1Menu -CreateDecorationShop1Menu: @ 80B4574 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - ldr r0, _080B4590 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4590: .4byte EnableBothScriptContexts - thumb_func_end CreateDecorationShop1Menu - - thumb_func_start CreateDecorationShop2Menu -CreateDecorationShop2Menu: @ 80B4594 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - ldr r0, _080B45B0 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B45B0: .4byte EnableBothScriptContexts - thumb_func_end CreateDecorationShop2Menu - - thumb_func_start sub_80B45B4 -sub_80B45B4: @ 80B45B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r9, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - mov r10, r2 - ldr r2, _080B4648 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0x10] - subs r0, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r1, 0x12] - subs r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r4, [r1, 0xA] - movs r2, 0xC - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080B4678 - movs r2, 0 - lsls r5, 16 - str r5, [sp, 0xC] - lsls r0, r3, 16 - lsls r1, r4, 16 - asrs r0, 16 - str r0, [sp] - asrs r1, 16 - str r1, [sp, 0x4] - lsls r0, r1, 1 - mov r1, r9 - adds r7, r0, r1 -_080B4608: - movs r4, 0 - lsls r2, 16 - mov r8, r2 - asrs r0, r2, 16 - ldr r2, [sp] - adds r6, r2, r0 -_080B4614: - ldr r0, [sp, 0xC] - asrs r1, r0, 16 - lsls r4, 16 - asrs r0, r4, 16 - adds r5, r1, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - movs r2, 0 - ldrsh r1, [r7, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _080B465C - ldr r0, [sp, 0x4] - cmp r0, 0x2 - beq _080B464C - ldrh r0, [r7, 0x2] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt - b _080B465C - .align 2, 0 -_080B4648: .4byte gTasks -_080B464C: - mov r1, r9 - ldrh r0, [r1] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt -_080B465C: - movs r2, 0x80 - lsls r2, 9 - adds r0, r4, r2 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4614 - adds r0, r2, 0 - add r0, r8 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4608 - b _080B4700 -_080B4678: - movs r2, 0 - lsls r5, 16 - str r5, [sp, 0xC] - lsls r0, r3, 16 - lsls r1, r4, 16 - asrs r0, 16 - str r0, [sp, 0x8] - asrs r7, r1, 16 -_080B4688: - movs r4, 0 - lsls r2, 16 - mov r8, r2 - asrs r0, r2, 16 - ldr r1, [sp, 0x8] - adds r6, r1, r0 -_080B4694: - ldr r2, [sp, 0xC] - asrs r1, r2, 16 - lsls r4, 16 - asrs r0, r4, 16 - adds r5, r1, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - movs r1, 0x2 - subs r1, r7 - lsls r1, 1 - add r1, r9 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _080B46E6 - cmp r7, 0x2 - beq _080B46D6 - movs r0, 0x1 - subs r0, r7 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt - b _080B46E6 -_080B46D6: - mov r1, r9 - ldrh r0, [r1, 0x4] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt -_080B46E6: - movs r2, 0x80 - lsls r2, 9 - adds r0, r4, r2 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4694 - adds r0, r2, 0 - add r0, r8 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4688 -_080B4700: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B45B4 - - thumb_func_start sub_80B4710 -sub_80B4710: @ 80B4710 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080B4738 @ =gTasks + 0x8 - adds r4, r0, r1 - movs r0, 0x1 - strh r0, [r4, 0x6] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - bhi _080B47AA - lsls r0, 2 - ldr r1, _080B473C @ =_080B4740 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B4738: .4byte gTasks + 0x8 -_080B473C: .4byte _080B4740 - .align 2, 0 -_080B4740: - .4byte _080B475C - .4byte _080B4764 - .4byte _080B476C - .4byte _080B4774 - .4byte _080B477C - .4byte _080B4790 - .4byte _080B47A0 -_080B475C: - ldr r1, _080B4760 @ =gUnknown_083CC714 - b _080B4792 - .align 2, 0 -_080B4760: .4byte gUnknown_083CC714 -_080B4764: - ldr r1, _080B4768 @ =gUnknown_083CC71A - b _080B4792 - .align 2, 0 -_080B4768: .4byte gUnknown_083CC71A -_080B476C: - ldr r1, _080B4770 @ =gUnknown_083CC720 - b _080B477E - .align 2, 0 -_080B4770: .4byte gUnknown_083CC720 -_080B4774: - ldr r1, _080B4778 @ =gUnknown_083CC726 - b _080B4792 - .align 2, 0 -_080B4778: .4byte gUnknown_083CC726 -_080B477C: - ldr r1, _080B478C @ =gUnknown_083CC72C -_080B477E: - movs r2, 0xC0 - lsls r2, 4 - adds r0, r3, 0 - bl sub_80B45B4 - b _080B47AA - .align 2, 0 -_080B478C: .4byte gUnknown_083CC72C -_080B4790: - ldr r1, _080B479C @ =gUnknown_083CC732 -_080B4792: - adds r0, r3, 0 - movs r2, 0 - bl sub_80B45B4 - b _080B47AA - .align 2, 0 -_080B479C: .4byte gUnknown_083CC732 -_080B47A0: - ldr r1, _080B47D4 @ =gUnknown_083CC738 - adds r0, r3, 0 - movs r2, 0 - bl sub_80B45B4 -_080B47AA: - ldrh r0, [r4] - adds r0, 0x1 - movs r1, 0x7 - ands r0, r1 - strh r0, [r4] - adds r5, r0, 0 - cmp r5, 0 - bne _080B47CE - bl DrawWholeMapView - movs r1, 0x2 - ldrsh r0, [r4, r1] - adds r0, 0x1 - movs r1, 0x3 - bl __modsi3 - strh r0, [r4, 0x2] - strh r5, [r4, 0x6] -_080B47CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B47D4: .4byte gUnknown_083CC738 - thumb_func_end sub_80B4710 - - thumb_func_start sub_80B47D8 -sub_80B47D8: @ 80B47D8 - push {r4-r7,lr} - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r6, _080B481C @ =sub_80B4710 - adds r0, r6, 0 - movs r1, 0 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080B4820 @ =gTasks + 0x8 - adds r7, r0, r1 - adds r0, r7, 0 - adds r0, 0x8 - adds r1, r7, 0 - adds r1, 0xA - bl PlayerGetDestCoords - movs r0, 0 - strh r0, [r7] - strh r0, [r7, 0x2] - strh r5, [r7, 0x4] - adds r0, r4, 0 - bl _call_via_r6 - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080B481C: .4byte sub_80B4710 -_080B4820: .4byte gTasks + 0x8 - thumb_func_end sub_80B47D8 - - thumb_func_start sub_80B4824 -sub_80B4824: @ 80B4824 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80B47D8 - ldr r1, _080B4838 @ =gUnknown_02038731 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080B4838: .4byte gUnknown_02038731 - thumb_func_end sub_80B4824 - - thumb_func_start sub_80B483C -sub_80B483C: @ 80B483C - push {lr} - ldr r0, _080B484C @ =gUnknown_02038731 - ldrb r0, [r0] - bl DestroyTask - pop {r0} - bx r0 - .align 2, 0 -_080B484C: .4byte gUnknown_02038731 - thumb_func_end sub_80B483C - - thumb_func_start sub_80B4850 -sub_80B4850: @ 80B4850 - push {lr} - ldr r2, _080B4874 @ =gTasks - ldr r0, _080B4878 @ =gUnknown_02038731 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080B487C - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x2 - bne _080B487C - movs r0, 0 - b _080B487E - .align 2, 0 -_080B4874: .4byte gTasks -_080B4878: .4byte gUnknown_02038731 -_080B487C: - movs r0, 0x1 -_080B487E: - pop {r1} - bx r1 - thumb_func_end sub_80B4850 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 46af5bc0f..bebe3633e 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -10098,13 +10098,13 @@ sub_81063C0: @ 81063C0 ldr r0, _081063F0 @ =gSlotMachineReelTimeLights_Gfx ldr r4, _081063F4 @ =0x02010000 adds r1, r4, 0 - bl sub_800D238 + bl LZDecompressWram ldr r0, _081063F8 @ =gUnknown_083EDE8C movs r1, 0xC8 lsls r1, 6 adds r4, r1 adds r1, r4, 0 - bl sub_800D238 + bl LZDecompressWram ldr r0, _081063FC @ =gUnknown_083EDC2C bl LoadSpriteSheets ldr r0, _08106400 @ =gSlotMachineSpritePalettes diff --git a/asm/trade.s b/asm/trade.s deleted file mode 100644 index 223f62474..000000000 --- a/asm/trade.s +++ /dev/null @@ -1,12050 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - -.ifdef ENGLISH - .set sub_804A96C_alt, sub_804A96C -.endif - - thumb_func_start sub_8047CD8 -sub_8047CD8: @ 8047CD8 - push {lr} - ldr r0, _08047CE4 @ =sub_8047EC0 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08047CE4: .4byte sub_8047EC0 - thumb_func_end sub_8047CD8 - - thumb_func_start sub_8047CE8 -sub_8047CE8: @ 8047CE8 - push {r4-r6,lr} - ldr r6, _08047D44 @ =gWindowConfig_81E725C - ldr r5, _08047D48 @ =gUnknown_020296CC - ldr r1, [r5] - ldr r2, _08047D4C @ =gSaveBlock2 - adds r0, r6, 0 - movs r3, 0xC - bl sub_804AFB8 - bl GetMultiplayerId - lsls r0, 24 - ldr r1, [r5, 0xC] - movs r3, 0x80 - lsls r3, 17 - eors r3, r0 - lsrs r3, 24 - lsls r2, r3, 3 - subs r2, r3 - lsls r2, 2 - ldr r0, _08047D50 @ =gLinkPlayers + 0x8 - adds r2, r0 - adds r0, r6, 0 - movs r3, 0xC - bl sub_804AFB8 - ldr r1, [r5, 0x18] - ldr r4, _08047D54 @ =gUnknown_0820C14C - ldr r2, [r4] - adds r0, r6, 0 - movs r3, 0x8 - bl sub_804AFB8 - ldr r0, [r4, 0x4] - ldr r1, [r5, 0x20] - movs r2, 0x14 - bl sub_804ACD8 - movs r0, 0x3 - movs r1, 0 - bl nullsub_5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08047D44: .4byte gWindowConfig_81E725C -_08047D48: .4byte gUnknown_020296CC -_08047D4C: .4byte gSaveBlock2 -_08047D50: .4byte gLinkPlayers + 0x8 -_08047D54: .4byte gUnknown_0820C14C - thumb_func_end sub_8047CE8 - - thumb_func_start sub_8047D58 -sub_8047D58: @ 8047D58 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x18 - ldr r0, _08047E30 @ =gSaveBlock2 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - cmp r0, 0x5 - bls _08047D72 - movs r1, 0x1 -_08047D72: - movs r5, 0 - lsls r2, r1, 2 - mov r6, sp - ldr r0, _08047E34 @ =gTradeUnknownSpriteCoords - adds r1, r0, 0x1 - adds r1, r2 - mov r8, r1 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r4, r0, 16 -_08047D86: - mov r1, sp - ldr r0, _08047E38 @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldrh r0, [r6] - adds r0, r5 - strh r0, [r6] - asrs r1, r4, 16 - mov r0, sp - mov r3, r8 - ldrb r2, [r3] - movs r3, 0x1 - bl CreateSprite - movs r7, 0x80 - lsls r7, 14 - adds r4, r7 - adds r5, 0x1 - cmp r5, 0x2 - ble _08047D86 - bl GetMultiplayerId - lsls r0, 24 - movs r1, 0x80 - lsls r1, 17 - eors r1, r0 - lsrs r1, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _08047E3C @ =gLinkPlayers + 0x8 - adds r0, r1 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - cmp r0, 0x5 - bls _08047DDA - movs r1, 0x1 -_08047DDA: - movs r5, 0 - lsls r2, r1, 2 - mov r6, sp - ldr r0, _08047E40 @ =gTradeUnknownSpriteCoords + 0x3 - adds r1, r2, r0 - mov r8, r1 - subs r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r4, r0, 16 -_08047DEE: - mov r1, sp - ldr r0, _08047E38 @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r5, 0x3 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r6] - asrs r1, r4, 16 - mov r0, sp - mov r3, r8 - ldrb r2, [r3] - movs r3, 0x1 - bl CreateSprite - movs r7, 0x80 - lsls r7, 14 - adds r4, r7 - adds r5, 0x1 - cmp r5, 0x2 - ble _08047DEE - movs r0, 0x5 - movs r1, 0 - bl nullsub_5 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08047E30: .4byte gSaveBlock2 -_08047E34: .4byte gTradeUnknownSpriteCoords -_08047E38: .4byte gSpriteTemplate_820C0EC -_08047E3C: .4byte gLinkPlayers + 0x8 -_08047E40: .4byte gTradeUnknownSpriteCoords + 0x3 - thumb_func_end sub_8047D58 - - thumb_func_start sub_8047E44 -sub_8047E44: @ 8047E44 - push {r4-r7,lr} - sub sp, 0x18 - movs r4, 0 - mov r5, sp - movs r6, 0xD6 - lsls r6, 16 -_08047E50: - mov r1, sp - ldr r0, _08047EBC @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r4, 0x6 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - asrs r1, r6, 16 - mov r0, sp - movs r2, 0x98 - movs r3, 0x1 - bl CreateSprite - movs r2, 0x80 - lsls r2, 14 - adds r6, r2 - adds r4, 0x1 - cmp r4, 0x1 - ble _08047E50 - movs r4, 0 - mov r5, sp - movs r6, 0xC0 - lsls r6, 13 -_08047E84: - mov r1, sp - ldr r0, _08047EBC @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r4, 0 - adds r0, 0x8 - ldrh r3, [r5] - adds r0, r3 - strh r0, [r5] - asrs r1, r6, 16 - mov r0, sp - movs r2, 0x96 - movs r3, 0x1 - bl CreateSprite - movs r7, 0x80 - lsls r7, 14 - adds r6, r7 - adds r4, 0x1 - cmp r4, 0x4 - ble _08047E84 - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08047EBC: .4byte gSpriteTemplate_820C0EC - thumb_func_end sub_8047E44 - - thumb_func_start sub_8047EC0 -sub_8047EC0: @ 8047EC0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - ldr r1, _08047EE4 @ =gMain - ldr r2, _08047EE8 @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x15 - bls _08047ED8 - b _080484C6 -_08047ED8: - lsls r0, 2 - ldr r1, _08047EEC @ =_08047EF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08047EE4: .4byte gMain -_08047EE8: .4byte 0x0000043c -_08047EEC: .4byte _08047EF0 - .align 2, 0 -_08047EF0: - .4byte _08047F48 - .4byte _08048048 - .4byte _080480B4 - .4byte _080480E0 - .4byte _08048130 - .4byte _08048160 - .4byte _08048172 - .4byte _080482B4 - .4byte _080482DC - .4byte _08048300 - .4byte _08048328 - .4byte _0804834C - .4byte _08048360 - .4byte _080483B8 - .4byte _08048400 - .4byte _08048418 - .4byte _08048430 - .4byte _08048448 - .4byte _0804845A - .4byte _08048470 - .4byte _08048488 - .4byte _080484A8 -_08047F48: - ldr r5, _08048018 @ =gUnknown_03004824 - ldr r6, _0804801C @ =0x02017000 - str r6, [r5] - bl sub_804AA88 - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, [r5] - adds r0, 0xC8 - ldr r1, _08048020 @ =0x06002800 - bl sub_804A964 - ldr r0, _08048024 @ =sub_80489F4 - bl SetVBlankCallback - ldr r0, _08048028 @ =gWindowConfig_81E6CE4 - bl InitMenuWindow - ldr r4, _0804802C @ =gWindowConfig_81E6F84 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, [r5] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - movs r0, 0x14 - bl SetTextWindowBaseTileNum - ldr r1, [r5] - adds r1, 0x7A - movs r4, 0 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - bl sub_809D51C - ldr r0, [r5] - adds r0, 0x75 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7C - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x80 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x81 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x87 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0xB4 - strb r4, [r0] - ldr r0, _08048030 @ =gUnknown_03000508 - strb r4, [r0] - ldr r1, _08048034 @ =gMain - ldr r3, _08048038 @ =0x0000043c - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - bl sub_804AA0C - add r0, sp, 0x10 - strh r4, [r0] - movs r0, 0xC0 - lsls r0, 7 - adds r1, r6, r0 - ldr r2, _0804803C @ =0x01000680 - add r0, sp, 0x10 - bl CpuSet - ldr r1, _08048040 @ =gUnknown_020296CC - movs r2, 0xD8 - lsls r2, 7 - adds r6, r2 - adds r0, r1, 0 - adds r0, 0x30 - ldr r2, _08048044 @ =0xffffff00 -_0804800A: - str r6, [r0] - adds r6, r2 - subs r0, 0x4 - cmp r0, r1 - bge _0804800A - b _080484C6 - .align 2, 0 -_08048018: .4byte gUnknown_03004824 -_0804801C: .4byte 0x02017000 -_08048020: .4byte 0x06002800 -_08048024: .4byte sub_80489F4 -_08048028: .4byte gWindowConfig_81E6CE4 -_0804802C: .4byte gWindowConfig_81E6F84 -_08048030: .4byte gUnknown_03000508 -_08048034: .4byte gMain -_08048038: .4byte 0x0000043c -_0804803C: .4byte 0x01000680 -_08048040: .4byte gUnknown_020296CC -_08048044: .4byte 0xffffff00 -_08048048: - ldr r1, _08048098 @ =gLinkType - ldr r3, _0804809C @ =0x00001122 - adds r0, r3, 0 - strh r0, [r1] - bl OpenLink - movs r6, 0 - movs r4, 0 -_08048058: - movs r0, 0x64 - muls r0, r6 - ldr r1, _080480A0 @ =gEnemyParty - adds r0, r1 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - movs r1, 0 - movs r2, 0 - movs r3, 0x20 - bl CreateMon - adds r6, 0x1 - cmp r6, 0x5 - ble _08048058 - ldr r1, _080480A4 @ =gMain - ldr r0, _080480A8 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _080480AC @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xB4 - strb r2, [r0] - ldr r0, _080480B0 @ =sub_8083C50 - movs r1, 0x1 - bl CreateTask - b _080484C6 - .align 2, 0 -_08048098: .4byte gLinkType -_0804809C: .4byte 0x00001122 -_080480A0: .4byte gEnemyParty -_080480A4: .4byte gMain -_080480A8: .4byte 0x0000043c -_080480AC: .4byte gUnknown_03004824 -_080480B0: .4byte sub_8083C50 -_080480B4: - ldr r2, _080480D8 @ =gUnknown_03004824 - ldr r1, [r2] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0xB4 - ldrb r0, [r1] - cmp r0, 0xB - bhi _080480CE - b _080484C6 -_080480CE: - movs r0, 0 - strb r0, [r1] - ldr r2, _080480DC @ =0x0000043c - adds r1, r3, r2 - b _08048498 - .align 2, 0 -_080480D8: .4byte gUnknown_03004824 -_080480DC: .4byte 0x0000043c -_080480E0: - bl GetLinkPlayerCount_2 - adds r4, r0, 0 - bl sub_800820C - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bcs _080480F4 - b _080484C6 -_080480F4: - bl IsLinkMaster - lsls r0, 24 - cmp r0, 0 - beq _08048120 - ldr r0, _0804811C @ =gUnknown_03004824 - ldr r1, [r0] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bhi _08048114 - b _080484C6 -_08048114: - bl sub_8007F4C - b _08048492 - .align 2, 0 -_0804811C: .4byte gUnknown_03004824 -_08048120: - ldr r1, _08048128 @ =gMain - ldr r0, _0804812C @ =0x0000043c - adds r1, r0 - b _08048498 - .align 2, 0 -_08048128: .4byte gMain -_0804812C: .4byte 0x0000043c -_08048130: - ldr r0, _08048154 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - beq _0804813A - b _080484C6 -_0804813A: - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08048148 - b _080484C6 -_08048148: - bl CalculatePlayerPartyCount - ldr r1, _08048158 @ =gMain - ldr r2, _0804815C @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_08048154: .4byte gReceivedRemoteLinkPlayers -_08048158: .4byte gMain -_0804815C: .4byte 0x0000043c -_08048160: - bl sub_8048D44 - lsls r0, 24 - cmp r0, 0 - bne _0804816C - b _080484C6 -_0804816C: - bl sub_804AF84 - b _08048492 -_08048172: - bl CalculateEnemyPartyCount - ldr r4, _08048294 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x4 - movs r1, 0x1D - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - ldr r0, [r4] - ldr r1, _08048298 @ =gPlayerPartyCount - ldrb r1, [r1] - adds r0, 0x42 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _0804829C @ =gEnemyPartyCount - ldrb r1, [r1] - adds r0, 0x43 - strb r1, [r0] - movs r6, 0 - ldr r0, [r4] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - bge _08048216 - mov r8, r4 - ldr r7, _080482A0 @ =gTradeMonSpriteCoords -_080481BA: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080482A4 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r1, 0xE0 - lsls r1, 12 - adds r2, r1 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _080482A8 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - ldr r1, _080482AC @ =sub_809D62C - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x34 - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - blt _080481BA -_08048216: - movs r6, 0 - ldr r1, _08048294 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - bge _0804828A - ldr r0, _080482A0 @ =gTradeMonSpriteCoords - mov r8, r1 - adds r7, r0, 0 - adds r7, 0xC -_0804822C: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080482B0 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r3, 0xE0 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _080482A8 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - ldr r1, _080482AC @ =sub_809D62C - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x3A - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - blt _0804822C -_0804828A: - movs r0, 0x2 - movs r1, 0 - bl nullsub_5 - b _08048492 - .align 2, 0 -_08048294: .4byte gUnknown_03004824 -_08048298: .4byte gPlayerPartyCount -_0804829C: .4byte gEnemyPartyCount -_080482A0: .4byte gTradeMonSpriteCoords -_080482A4: .4byte gPlayerParty -_080482A8: .4byte 0xfff40000 -_080482AC: .4byte sub_809D62C -_080482B0: .4byte gEnemyParty -_080482B4: - bl LoadHeldItemIconGraphics - ldr r0, _080482D0 @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x42 - adds r1, 0x34 - movs r2, 0 - bl CreateHeldItemIcons - ldr r1, _080482D4 @ =gMain - ldr r0, _080482D8 @ =0x0000043c - adds r1, r0 - b _08048498 - .align 2, 0 -_080482D0: .4byte gUnknown_03004824 -_080482D4: .4byte gMain -_080482D8: .4byte 0x0000043c -_080482DC: - ldr r0, _080482F4 @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x42 - adds r1, 0x34 - movs r2, 0x1 - bl CreateHeldItemIcons - ldr r1, _080482F8 @ =gMain - ldr r2, _080482FC @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_080482F4: .4byte gUnknown_03004824 -_080482F8: .4byte gMain -_080482FC: .4byte 0x0000043c -_08048300: - bl sub_8047CE8 - ldr r1, _0804831C @ =gMain - ldr r3, _08048320 @ =0x0000043c - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _08048324 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xB4 - strb r2, [r0] - b _080484C6 - .align 2, 0 -_0804831C: .4byte gMain -_08048320: .4byte 0x0000043c -_08048324: .4byte gUnknown_03004824 -_08048328: - movs r0, 0x4 - movs r1, 0 - bl nullsub_5 - bl sub_804ABF8 - lsls r0, 24 - cmp r0, 0 - bne _0804833C - b _080484C6 -_0804833C: - ldr r1, _08048344 @ =gMain - ldr r0, _08048348 @ =0x0000043c - adds r1, r0 - b _08048498 - .align 2, 0 -_08048344: .4byte gMain -_08048348: .4byte 0x0000043c -_0804834C: - bl sub_8047D58 - ldr r1, _08048358 @ =gMain - ldr r2, _0804835C @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_08048358: .4byte gMain -_0804835C: .4byte 0x0000043c -_08048360: - bl sub_8047E44 - ldr r0, _080483A4 @ =gSpriteTemplate_820C134 - ldr r2, _080483A8 @ =gTradeMonSpriteCoords - ldrb r1, [r2] - lsls r1, 19 - movs r3, 0x80 - lsls r3, 14 - adds r1, r3 - asrs r1, 16 - ldrb r2, [r2, 0x1] - lsls r2, 3 - movs r3, 0x2 - bl CreateSprite - ldr r2, _080483AC @ =gUnknown_03004824 - ldr r1, [r2] - adds r1, 0x40 - movs r3, 0 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x41 - strb r3, [r0] - ldr r1, _080483B0 @ =gMain - ldr r0, _080483B4 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x6 - movs r1, 0 - bl nullsub_5 - b _080484C6 - .align 2, 0 -_080483A4: .4byte gSpriteTemplate_820C134 -_080483A8: .4byte gTradeMonSpriteCoords -_080483AC: .4byte gUnknown_03004824 -_080483B0: .4byte gMain -_080483B4: .4byte 0x0000043c -_080483B8: - movs r0, 0 - bl sub_804ACF4 - movs r0, 0 - bl sub_804A41C - ldr r2, _080483F0 @ =gUnknown_03004824 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - bl sub_8048C70 - ldr r1, _080483F4 @ =gMain - ldr r2, _080483F8 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x7 - movs r1, 0 - bl nullsub_5 - ldr r0, _080483FC @ =0x000001b3 - bl PlayBGM - b _080484C6 - .align 2, 0 -_080483F0: .4byte gUnknown_03004824 -_080483F4: .4byte gMain -_080483F8: .4byte 0x0000043c -_080483FC: .4byte 0x000001b3 -_08048400: - movs r0, 0x1 - bl sub_804ACF4 - movs r0, 0x1 - bl sub_804A41C - ldr r1, _08048428 @ =gMain - ldr r3, _0804842C @ =0x0000043c - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08048418: - movs r0, 0 - bl sub_8048B0C - ldr r1, _08048428 @ =gMain - ldr r0, _0804842C @ =0x0000043c - adds r1, r0 - b _08048498 - .align 2, 0 -_08048428: .4byte gMain -_0804842C: .4byte 0x0000043c -_08048430: - movs r0, 0x1 - bl sub_8048B0C - ldr r1, _08048440 @ =gMain - ldr r2, _08048444 @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_08048440: .4byte gMain -_08048444: .4byte 0x0000043c -_08048448: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08048492 -_0804845A: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804846C @ =0x0000043c - adds r1, r3, r0 - b _08048498 - .align 2, 0 -_0804846C: .4byte 0x0000043c -_08048470: - movs r0, 0 - bl sub_804AE3C - ldr r1, _08048480 @ =gMain - ldr r2, _08048484 @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_08048480: .4byte gMain -_08048484: .4byte 0x0000043c -_08048488: - movs r0, 0x1 - bl sub_804AE3C - bl sub_804AF10 -_08048492: - ldr r1, _080484A0 @ =gMain - ldr r3, _080484A4 @ =0x0000043c - adds r1, r3 -_08048498: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080484C6 - .align 2, 0 -_080484A0: .4byte gMain -_080484A4: .4byte 0x0000043c -_080484A8: - ldr r0, _080484E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080484C6 - ldr r0, _080484E8 @ =sub_80494D8 - str r0, [r3] - ldr r0, _080484EC @ =sub_8048AB4 - bl SetMainCallback2 - ldr r0, _080484F0 @ =gUnknown_03000508 - strb r4, [r0] -_080484C6: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080484E4: .4byte gPaletteFade -_080484E8: .4byte sub_80494D8 -_080484EC: .4byte sub_8048AB4 -_080484F0: .4byte gUnknown_03000508 - thumb_func_end sub_8047EC0 - - thumb_func_start sub_80484F4 -sub_80484F4: @ 80484F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r1, _08048518 @ =gMain - ldr r2, _0804851C @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x15 - bls _0804850C - b _080489CA -_0804850C: - lsls r0, 2 - ldr r1, _08048520 @ =_08048524 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08048518: .4byte gMain -_0804851C: .4byte 0x0000043c -_08048520: .4byte _08048524 - .align 2, 0 -_08048524: - .4byte _0804857C - .4byte _0804865C - .4byte _08048668 - .4byte _08048674 - .4byte _08048680 - .4byte _08048694 - .4byte _080486A0 - .4byte _080487E8 - .4byte _08048810 - .4byte _08048834 - .4byte _0804885C - .4byte _08048880 - .4byte _08048894 - .4byte _080489CA - .4byte _080489CA - .4byte _08048914 - .4byte _0804891C - .4byte _08048950 - .4byte _08048970 - .4byte _08048988 - .4byte _08048994 - .4byte _080489B0 -_0804857C: - ldr r5, _08048630 @ =gUnknown_03004824 - ldr r6, _08048634 @ =0x02017000 - str r6, [r5] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, [r5] - adds r0, 0xC8 - ldr r1, _08048638 @ =0x06002800 - bl sub_804A964 - ldr r0, _0804863C @ =sub_80489F4 - bl SetVBlankCallback - ldr r0, _08048640 @ =gWindowConfig_81E6CE4 - bl InitMenuWindow - ldr r4, _08048644 @ =gWindowConfig_81E6F84 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, [r5] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - movs r0, 0x14 - bl SetTextWindowBaseTileNum - ldr r1, [r5] - adds r1, 0x7A - movs r4, 0 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - bl sub_809D51C - ldr r0, [r5] - adds r0, 0x75 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7C - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x80 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x81 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x87 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0xB4 - strb r4, [r0] - ldr r0, _08048648 @ =gUnknown_03000508 - strb r4, [r0] - ldr r1, _0804864C @ =gMain - ldr r3, _08048650 @ =0x0000043c - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _08048654 @ =gUnknown_020296CC - movs r5, 0xD8 - lsls r5, 7 - adds r6, r5 - adds r0, r1, 0 - adds r0, 0x30 - ldr r2, _08048658 @ =0xffffff00 -_08048622: - str r6, [r0] - adds r6, r2 - subs r0, 0x4 - cmp r0, r1 - bge _08048622 - b _080489CA - .align 2, 0 -_08048630: .4byte gUnknown_03004824 -_08048634: .4byte 0x02017000 -_08048638: .4byte 0x06002800 -_0804863C: .4byte sub_80489F4 -_08048640: .4byte gWindowConfig_81E6CE4 -_08048644: .4byte gWindowConfig_81E6F84 -_08048648: .4byte gUnknown_03000508 -_0804864C: .4byte gMain -_08048650: .4byte 0x0000043c -_08048654: .4byte gUnknown_020296CC -_08048658: .4byte 0xffffff00 -_0804865C: - ldr r0, _08048664 @ =0x0000043c - adds r1, r2, r0 - b _0804883E - .align 2, 0 -_08048664: .4byte 0x0000043c -_08048668: - ldr r3, _08048670 @ =0x0000043c - adds r1, r2, r3 - b _0804899E - .align 2, 0 -_08048670: .4byte 0x0000043c -_08048674: - ldr r5, _0804867C @ =0x0000043c - adds r1, r2, r5 - b _0804899E - .align 2, 0 -_0804867C: .4byte 0x0000043c -_08048680: - bl CalculatePlayerPartyCount - ldr r1, _0804868C @ =gMain - ldr r0, _08048690 @ =0x0000043c - adds r1, r0 - b _0804899E - .align 2, 0 -_0804868C: .4byte gMain -_08048690: .4byte 0x0000043c -_08048694: - ldr r3, _0804869C @ =0x0000043c - adds r1, r2, r3 - b _0804899E - .align 2, 0 -_0804869C: .4byte 0x0000043c -_080486A0: - bl CalculateEnemyPartyCount - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - ldr r4, _080487C0 @ =gUnknown_03004824 - ldr r0, [r4] - ldr r1, _080487C4 @ =gPlayerPartyCount - ldrb r1, [r1] - adds r0, 0x42 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _080487C8 @ =gEnemyPartyCount - ldrb r1, [r1] - adds r0, 0x43 - strb r1, [r0] - movs r0, 0 - bl sub_804A41C - movs r0, 0x1 - bl sub_804A41C - movs r6, 0 - ldr r0, [r4] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - bge _0804873C - mov r8, r4 - ldr r7, _080487CC @ =gTradeMonSpriteCoords -_080486DE: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080487D0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r1, 0xE0 - lsls r1, 12 - adds r2, r1 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _080487D4 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - ldr r1, _080487D8 @ =sub_809D62C - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x34 - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - blt _080486DE -_0804873C: - movs r6, 0 - ldr r1, _080487C0 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - bge _080487B0 - ldr r0, _080487CC @ =gTradeMonSpriteCoords - mov r8, r1 - adds r7, r0, 0 - adds r7, 0xC -_08048752: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080487DC @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r3, 0xE0 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _080487D4 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - ldr r1, _080487D8 @ =sub_809D62C - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x3A - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - blt _08048752 -_080487B0: - movs r0, 0x2 - movs r1, 0 - bl nullsub_5 - ldr r1, _080487E0 @ =gMain - ldr r3, _080487E4 @ =0x0000043c - adds r1, r3 - b _0804899E - .align 2, 0 -_080487C0: .4byte gUnknown_03004824 -_080487C4: .4byte gPlayerPartyCount -_080487C8: .4byte gEnemyPartyCount -_080487CC: .4byte gTradeMonSpriteCoords -_080487D0: .4byte gPlayerParty -_080487D4: .4byte 0xfff40000 -_080487D8: .4byte sub_809D62C -_080487DC: .4byte gEnemyParty -_080487E0: .4byte gMain -_080487E4: .4byte 0x0000043c -_080487E8: - bl LoadHeldItemIconGraphics - ldr r0, _08048804 @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x42 - adds r1, 0x34 - movs r2, 0 - bl CreateHeldItemIcons - ldr r1, _08048808 @ =gMain - ldr r5, _0804880C @ =0x0000043c - adds r1, r5 - b _0804899E - .align 2, 0 -_08048804: .4byte gUnknown_03004824 -_08048808: .4byte gMain -_0804880C: .4byte 0x0000043c -_08048810: - ldr r0, _08048828 @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x42 - adds r1, 0x34 - movs r2, 0x1 - bl CreateHeldItemIcons - ldr r1, _0804882C @ =gMain - ldr r0, _08048830 @ =0x0000043c - adds r1, r0 - b _0804899E - .align 2, 0 -_08048828: .4byte gUnknown_03004824 -_0804882C: .4byte gMain -_08048830: .4byte 0x0000043c -_08048834: - bl sub_8047CE8 - ldr r1, _08048850 @ =gMain - ldr r2, _08048854 @ =0x0000043c - adds r1, r2 -_0804883E: - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _08048858 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xB4 - strb r2, [r0] - b _080489CA - .align 2, 0 -_08048850: .4byte gMain -_08048854: .4byte 0x0000043c -_08048858: .4byte gUnknown_03004824 -_0804885C: - movs r0, 0x4 - movs r1, 0 - bl nullsub_5 - bl sub_804ABF8 - lsls r0, 24 - cmp r0, 0 - bne _08048870 - b _080489CA -_08048870: - ldr r1, _08048878 @ =gMain - ldr r3, _0804887C @ =0x0000043c - adds r1, r3 - b _0804899E - .align 2, 0 -_08048878: .4byte gMain -_0804887C: .4byte 0x0000043c -_08048880: - bl sub_8047D58 - ldr r1, _0804888C @ =gMain - ldr r5, _08048890 @ =0x0000043c - adds r1, r5 - b _0804899E - .align 2, 0 -_0804888C: .4byte gMain -_08048890: .4byte 0x0000043c -_08048894: - bl sub_8047E44 - ldr r2, _080488AC @ =0x02018000 - ldr r0, _080488B0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x41 - ldrb r0, [r1] - cmp r0, 0x5 - bhi _080488B4 - ldrb r0, [r2, 0x9] - b _080488B8 - .align 2, 0 -_080488AC: .4byte 0x02018000 -_080488B0: .4byte gUnknown_03004824 -_080488B4: - ldrb r0, [r2, 0x9] - adds r0, 0x6 -_080488B8: - strb r0, [r1] - ldr r0, _08048900 @ =gSpriteTemplate_820C134 - ldr r3, _08048904 @ =gTradeMonSpriteCoords - ldr r4, _08048908 @ =gUnknown_03004824 - ldr r1, [r4] - adds r1, 0x41 - ldrb r2, [r1] - lsls r2, 1 - adds r1, r2, r3 - ldrb r1, [r1] - lsls r1, 19 - movs r5, 0x80 - lsls r5, 14 - adds r1, r5 - asrs r1, 16 - adds r3, 0x1 - adds r2, r3 - ldrb r2, [r2] - lsls r2, 3 - movs r3, 0x2 - bl CreateSprite - ldr r1, [r4] - adds r1, 0x40 - strb r0, [r1] - ldr r0, _0804890C @ =gMain - ldr r1, _08048910 @ =0x0000043c - adds r0, r1 - movs r1, 0xF - strb r1, [r0] - movs r0, 0x6 - movs r1, 0 - bl nullsub_5 - b _080489CA - .align 2, 0 -_08048900: .4byte gSpriteTemplate_820C134 -_08048904: .4byte gTradeMonSpriteCoords -_08048908: .4byte gUnknown_03004824 -_0804890C: .4byte gMain -_08048910: .4byte 0x0000043c -_08048914: - movs r0, 0 - bl sub_8048B0C - b _08048998 -_0804891C: - movs r0, 0x1 - bl sub_8048B0C - ldr r2, _08048944 @ =gUnknown_03004824 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - bl sub_8048C70 - movs r0, 0x7 - movs r1, 0 - bl nullsub_5 - ldr r1, _08048948 @ =gMain - ldr r3, _0804894C @ =0x0000043c - adds r1, r3 - b _0804899E - .align 2, 0 -_08048944: .4byte gUnknown_03004824 -_08048948: .4byte gMain -_0804894C: .4byte 0x0000043c -_08048950: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _08048968 @ =gMain - ldr r5, _0804896C @ =0x0000043c - adds r1, r5 - b _0804899E - .align 2, 0 -_08048968: .4byte gMain -_0804896C: .4byte 0x0000043c -_08048970: - movs r1, 0x80 - lsls r1, 19 - movs r3, 0xFA - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r5, _08048984 @ =0x0000043c - adds r1, r2, r5 - b _0804899E - .align 2, 0 -_08048984: .4byte 0x0000043c -_08048988: - ldr r0, _08048990 @ =0x0000043c - adds r1, r2, r0 - b _0804899E - .align 2, 0 -_08048990: .4byte 0x0000043c -_08048994: - bl sub_804AF10 -_08048998: - ldr r1, _080489A8 @ =gMain - ldr r2, _080489AC @ =0x0000043c - adds r1, r2 -_0804899E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080489CA - .align 2, 0 -_080489A8: .4byte gMain -_080489AC: .4byte 0x0000043c -_080489B0: - ldr r0, _080489E8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080489CA - ldr r0, _080489EC @ =sub_8048AB4 - bl SetMainCallback2 - ldr r0, _080489F0 @ =gUnknown_03000508 - strb r4, [r0] -_080489CA: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080489E8: .4byte gPaletteFade -_080489EC: .4byte sub_8048AB4 -_080489F0: .4byte gUnknown_03000508 - thumb_func_end sub_80484F4 - - thumb_func_start sub_80489F4 -sub_80489F4: @ 80489F4 - push {lr} - ldr r0, _08048A10 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xC8 - bl sub_804A940 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - .align 2, 0 -_08048A10: .4byte gUnknown_03004824 - thumb_func_end sub_80489F4 - - thumb_func_start sub_8048A14 -sub_8048A14: @ 8048A14 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08048A4C @ =gUnknown_03004824 - ldr r1, [r4] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - bls _08048A44 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0xA - strb r1, [r0] -_08048A44: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08048A4C: .4byte gUnknown_03004824 - thumb_func_end sub_8048A14 - - thumb_func_start sub_8048A50 -sub_8048A50: @ 8048A50 - push {r4,lr} - ldr r0, _08048A84 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08048A7E - ldr r2, _08048A88 @ =gUnknown_020297D8 - ldr r4, _08048A8C @ =gUnknown_03004824 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x41 - ldrb r1, [r1] - strb r1, [r2] - adds r0, 0x8A - ldrb r0, [r0] - strb r0, [r2, 0x1] - bl sub_800832C - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0xD - strb r1, [r0] -_08048A7E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08048A84: .4byte gPaletteFade -_08048A88: .4byte gUnknown_020297D8 -_08048A8C: .4byte gUnknown_03004824 - thumb_func_end sub_8048A50 - - thumb_func_start sub_8048A90 -sub_8048A90: @ 8048A90 - push {lr} - ldr r0, _08048AA8 @ =gReceivedRemoteLinkPlayers - ldrb r1, [r0] - cmp r1, 0 - bne _08048AA4 - ldr r0, _08048AAC @ =gMain - str r1, [r0] - ldr r0, _08048AB0 @ =sub_804B41C - bl SetMainCallback2 -_08048AA4: - pop {r0} - bx r0 - .align 2, 0 -_08048AA8: .4byte gReceivedRemoteLinkPlayers -_08048AAC: .4byte gMain -_08048AB0: .4byte sub_804B41C - thumb_func_end sub_8048A90 - - thumb_func_start sub_8048AB4 -sub_8048AB4: @ 8048AB4 - push {r4,lr} - bl sub_8049DE0 - bl sub_804AB30 - movs r0, 0 - bl sub_8049ED4 - movs r0, 0x1 - bl sub_8049ED4 - ldr r4, _08048B04 @ =REG_BG2HOFS - ldr r3, _08048B08 @ =gUnknown_03004824 - ldr r2, [r3] - ldrb r0, [r2] - adds r1, r0, 0x1 - strb r1, [r2] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - adds r4, 0x4 - ldr r2, [r3] - ldrb r0, [r2, 0x1] - adds r1, r0, 0 - adds r1, 0xFF - strb r1, [r2, 0x1] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08048B04: .4byte REG_BG2HOFS -_08048B08: .4byte gUnknown_03004824 - thumb_func_end sub_8048AB4 - - thumb_func_start sub_8048B0C -sub_8048B0C: @ 8048B0C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08048B1C - cmp r0, 0x1 - beq _08048BD0 - b _08048C3A -_08048B1C: - ldr r5, _08048BA0 @ =gUnknown_08EA0348 - ldr r0, _08048BA4 @ =gTradeStripesBG2Tilemap - mov r12, r0 - ldr r1, _08048BA8 @ =gUnknown_08EA02C8 - ldr r4, _08048BAC @ =gPlttBufferFaded - ldr r3, _08048BB0 @ =gPlttBufferUnfaded - movs r2, 0x2F -_08048B2A: - ldrh r0, [r1] - strh r0, [r3] - ldrh r0, [r1] - strh r0, [r4] - adds r1, 0x2 - adds r4, 0x2 - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _08048B2A - adds r3, r5, 0 - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0x94 - lsls r5, 5 - ldr r1, _08048BB4 @ =0x040000d4 - ldr r6, _08048BB8 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08048B54: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _08048B54 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - ldr r5, _08048BBC @ =0x000003ff - ldr r4, _08048BC0 @ =gUnknown_03004824 - ldr r3, _08048BC4 @ =gUnknown_08EA15C8 -_08048B7A: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0xDA - adds r0, r1 - ldrh r1, [r3] - strh r1, [r0] - adds r3, 0x2 - adds r2, 0x1 - cmp r2, r5 - ble _08048B7A - ldr r1, _08048BC8 @ =0x06003000 - ldr r0, _08048BB4 @ =0x040000d4 - mov r2, r12 - str r2, [r0] - str r1, [r0, 0x4] - ldr r1, _08048BCC @ =0x80000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _08048C3A - .align 2, 0 -_08048BA0: .4byte gUnknown_08EA0348 -_08048BA4: .4byte gTradeStripesBG2Tilemap -_08048BA8: .4byte gUnknown_08EA02C8 -_08048BAC: .4byte gPlttBufferFaded -_08048BB0: .4byte gPlttBufferUnfaded -_08048BB4: .4byte 0x040000d4 -_08048BB8: .4byte 0x80000800 -_08048BBC: .4byte 0x000003ff -_08048BC0: .4byte gUnknown_03004824 -_08048BC4: .4byte gUnknown_08EA15C8 -_08048BC8: .4byte 0x06003000 -_08048BCC: .4byte 0x80000400 -_08048BD0: - ldr r1, _08048C40 @ =gTradeStripesBG3Tilemap - ldr r2, _08048C44 @ =0x06003800 - ldr r0, _08048C48 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08048C4C @ =0x80000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r0, 0 - bl sub_804A6DC - movs r0, 0x1 - bl sub_804A6DC - ldr r0, _08048C50 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xC8 - bl sub_804A938 - ldr r2, _08048C54 @ =REG_BG0CNT - ldrh r1, [r2] - ldr r0, _08048C58 @ =0x0000fffc - ands r0, r1 - strh r0, [r2] - ldr r1, _08048C5C @ =REG_BG1CNT - ldr r2, _08048C60 @ =0x00000501 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _08048C64 @ =0x00000602 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _08048C68 @ =0x00000703 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08048C6C @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - subs r0, 0xA - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] -_08048C3A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08048C40: .4byte gTradeStripesBG3Tilemap -_08048C44: .4byte 0x06003800 -_08048C48: .4byte 0x040000d4 -_08048C4C: .4byte 0x80000400 -_08048C50: .4byte gUnknown_03004824 -_08048C54: .4byte REG_BG0CNT -_08048C58: .4byte 0x0000fffc -_08048C5C: .4byte REG_BG1CNT -_08048C60: .4byte 0x00000501 -_08048C64: .4byte 0x00000602 -_08048C68: .4byte 0x00000703 -_08048C6C: .4byte REG_BG0HOFS - thumb_func_end sub_8048B0C - - thumb_func_start sub_8048C70 -sub_8048C70: @ 8048C70 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r3, 0 - ldr r5, _08048CC0 @ =gUnknown_03004824 - mov r8, r5 - ldr r0, _08048CC4 @ =gSprites - mov r12, r0 - movs r1, 0x5 - negs r1, r1 - mov r9, r1 - movs r4, 0x6 - movs r7, 0x1 - movs r6, 0 -_08048C8E: - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x42 - ldrb r1, [r1] - cmp r3, r1 - bge _08048CC8 - adds r0, 0x34 - adds r0, r3 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - adds r1, 0x3E - ldrb r2, [r1] - mov r0, r9 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x44 - adds r0, r3 - strb r7, [r0] - b _08048CCE - .align 2, 0 -_08048CC0: .4byte gUnknown_03004824 -_08048CC4: .4byte gSprites -_08048CC8: - adds r0, 0x44 - adds r0, r3 - strb r6, [r0] -_08048CCE: - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x43 - ldrb r1, [r1] - cmp r3, r1 - bge _08048CFE - adds r0, 0x3A - adds r0, r3 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - adds r1, 0x3E - ldrb r2, [r1] - mov r0, r9 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x44 - adds r0, r4 - strb r7, [r0] - b _08048D04 -_08048CFE: - adds r0, 0x44 - adds r0, r4 - strb r6, [r0] -_08048D04: - adds r4, 0x1 - adds r3, 0x1 - cmp r3, 0x5 - ble _08048C8E - ldr r0, [r5] - adds r0, 0x50 - movs r1, 0x1 - strb r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8048C70 - - thumb_func_start nullsub_5 -nullsub_5: @ 8048D20 - bx lr - thumb_func_end nullsub_5 - - thumb_func_start sub_8048D24 -sub_8048D24: @ 8048D24 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r3, 0 - cmp r3, r2 - bcs _08048D3E -_08048D30: - adds r0, r5, r3 - adds r1, r4, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, r2 - bcc _08048D30 -_08048D3E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8048D24 - - thumb_func_start sub_8048D44 -sub_8048D44: @ 8048D44 - push {r4-r7,lr} - sub sp, 0xC - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r6, _08048D90 @ =gUnknown_03004824 - ldr r0, [r6] - adds r0, 0x75 - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0x64 - bl __udivsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetLinkDebugValues - ldr r0, [r6] - adds r0, 0x75 - ldrb r0, [r0] - cmp r0, 0x10 - bls _08048D86 - b _0804907C -_08048D86: - lsls r0, 2 - ldr r1, _08048D94 @ =_08048D98 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08048D90: .4byte gUnknown_03004824 -_08048D94: .4byte _08048D98 - .align 2, 0 -_08048D98: - .4byte _08048DDC - .4byte _08048DF8 - .4byte _08048E28 - .4byte _08048E3C - .4byte _08048E74 - .4byte _08048E90 - .4byte _08048EA4 - .4byte _08048EDC - .4byte _08048EF8 - .4byte _08048F0C - .4byte _08048F44 - .4byte _08048F60 - .4byte _08048F74 - .4byte _08048FAC - .4byte _08048FC8 - .4byte _08048FDC - .4byte _08049018 -_08048DDC: - ldr r0, _08048DEC @ =gBlockSendBuffer - ldr r1, _08048DF0 @ =gPlayerParty - movs r2, 0xC8 - bl sub_8048D24 - ldr r0, _08048DF4 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048DEC: .4byte gBlockSendBuffer -_08048DF0: .4byte gPlayerParty -_08048DF4: .4byte gUnknown_03004824 -_08048DF8: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _08048E04 - b _0804907C -_08048E04: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08048E18 - ldr r0, _08048E14 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E14: .4byte gUnknown_03004824 -_08048E18: - bl ResetBlockReceivedFlags - ldr r0, _08048E24 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E24: .4byte gUnknown_03004824 -_08048E28: - cmp r7, 0 - bne _08048E32 - movs r0, 0x1 - bl sub_8007E9C -_08048E32: - ldr r0, _08048E38 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E38: .4byte gUnknown_03004824 -_08048E3C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08048E4A - b _0804907C -_08048E4A: - ldr r0, _08048E68 @ =gEnemyParty - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08048E6C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r0, _08048E70 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E68: .4byte gEnemyParty -_08048E6C: .4byte gBlockRecvBuffer -_08048E70: .4byte gUnknown_03004824 -_08048E74: - ldr r0, _08048E84 @ =gBlockSendBuffer - ldr r1, _08048E88 @ =gPlayerParty + 2 * 0x64 - movs r2, 0xC8 - bl sub_8048D24 - ldr r0, _08048E8C @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E84: .4byte gBlockSendBuffer -_08048E88: .4byte gPlayerParty + 2 * 0x64 -_08048E8C: .4byte gUnknown_03004824 -_08048E90: - cmp r7, 0 - bne _08048E9A - movs r0, 0x1 - bl sub_8007E9C -_08048E9A: - ldr r0, _08048EA0 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048EA0: .4byte gUnknown_03004824 -_08048EA4: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08048EB2 - b _0804907C -_08048EB2: - ldr r0, _08048ED0 @ =gEnemyParty + 2 * 0x64 - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08048ED4 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r0, _08048ED8 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048ED0: .4byte gEnemyParty + 2 * 0x64 -_08048ED4: .4byte gBlockRecvBuffer -_08048ED8: .4byte gUnknown_03004824 -_08048EDC: - ldr r0, _08048EEC @ =gBlockSendBuffer - ldr r1, _08048EF0 @ =gPlayerParty + 4 * 0x64 - movs r2, 0xC8 - bl sub_8048D24 - ldr r0, _08048EF4 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048EEC: .4byte gBlockSendBuffer -_08048EF0: .4byte gPlayerParty + 4 * 0x64 -_08048EF4: .4byte gUnknown_03004824 -_08048EF8: - cmp r7, 0 - bne _08048F02 - movs r0, 0x1 - bl sub_8007E9C -_08048F02: - ldr r0, _08048F08 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048F08: .4byte gUnknown_03004824 -_08048F0C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08048F1A - b _0804907C -_08048F1A: - ldr r0, _08048F38 @ =gEnemyParty + 4 * 0x64 - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08048F3C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r0, _08048F40 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048F38: .4byte gEnemyParty + 4 * 0x64 -_08048F3C: .4byte gBlockRecvBuffer -_08048F40: .4byte gUnknown_03004824 -_08048F44: - ldr r0, _08048F54 @ =gBlockSendBuffer - ldr r1, _08048F58 @ =gSaveBlock1 + 0x2B4C - movs r2, 0xDC - bl sub_8048D24 - ldr r0, _08048F5C @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048F54: .4byte gBlockSendBuffer -_08048F58: .4byte gSaveBlock1 + 0x2B4C -_08048F5C: .4byte gUnknown_03004824 -_08048F60: - cmp r7, 0 - bne _08048F6A - movs r0, 0x3 - bl sub_8007E9C -_08048F6A: - ldr r0, _08048F70 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048F70: .4byte gUnknown_03004824 -_08048F74: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08048F82 - b _0804907C -_08048F82: - ldr r0, _08048FA0 @ =gUnknown_02029700 - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08048FA4 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xD8 - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r0, _08048FA8 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048FA0: .4byte gUnknown_02029700 -_08048FA4: .4byte gBlockRecvBuffer -_08048FA8: .4byte gUnknown_03004824 -_08048FAC: - ldr r0, _08048FBC @ =gBlockSendBuffer - ldr r1, _08048FC0 @ =gSaveBlock1 + 0x3110 - movs r2, 0xB - bl sub_8048D24 - ldr r0, _08048FC4 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048FBC: .4byte gBlockSendBuffer -_08048FC0: .4byte gSaveBlock1 + 0x3110 -_08048FC4: .4byte gUnknown_03004824 -_08048FC8: - cmp r7, 0 - bne _08048FD2 - movs r0, 0x4 - bl sub_8007E9C -_08048FD2: - ldr r0, _08048FD8 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048FD8: .4byte gUnknown_03004824 -_08048FDC: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0804907C - ldr r4, _08049010 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0xB5 - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08049014 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xB - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r1, [r4] -_08049006: - adds r1, 0x75 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804907C - .align 2, 0 -_08049010: .4byte gUnknown_03004824 -_08049014: .4byte gBlockRecvBuffer -_08049018: - ldr r4, _0804906C @ =gEnemyParty - ldr r6, _08049070 @ =0x0000012f - movs r5, 0x5 -_0804901E: - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _0804905E - cmp r0, r6 - bne _0804905E - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - beq _0804905E - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - ldr r1, _08049074 @ =gUnknown_0820C3B0 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _0804905E - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, _08049078 @ =gSpeciesNames + 0xD05 - bl SetMonData -_0804905E: - adds r4, 0x64 - subs r5, 0x1 - cmp r5, 0 - bge _0804901E - movs r0, 0x1 - b _0804907E - .align 2, 0 -_0804906C: .4byte gEnemyParty -_08049070: .4byte 0x0000012f -_08049074: .4byte gUnknown_0820C3B0 -_08049078: .4byte gSpeciesNames + 0xD05 -_0804907C: - movs r0, 0 -_0804907E: - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8048D44 - - thumb_func_start sub_8049088 -sub_8049088: @ 8049088 - push {lr} - sub sp, 0x1C - ldr r1, _080490B0 @ =gTradeText_TradeOkayPrompt - mov r0, sp - bl StringCopy - ldr r0, _080490B4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7E - ldrh r1, [r0] - lsls r1, 5 - ldr r0, _080490B8 @ =0x06010000 - adds r1, r0 - mov r0, sp - movs r2, 0x14 - bl sub_804ACD8 - add sp, 0x1C - pop {r0} - bx r0 - .align 2, 0 -_080490B0: .4byte gTradeText_TradeOkayPrompt -_080490B4: .4byte gUnknown_03004824 -_080490B8: .4byte 0x06010000 - thumb_func_end sub_8049088 - - thumb_func_start sub_80490BC -sub_80490BC: @ 80490BC - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - movs r3, 0x1 - adds r0, r4, 0 - ands r0, r3 - cmp r0, 0 - beq _08049148 - ldr r1, _080490EC @ =gBlockRecvBuffer - lsls r0, r2, 8 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _080490F0 @ =0x0000bbbb - cmp r1, r0 - beq _08049128 - cmp r1, r0 - bgt _080490F8 - ldr r0, _080490F4 @ =0x0000aabb - cmp r1, r0 - beq _08049118 - b _08049142 - .align 2, 0 -_080490EC: .4byte gBlockRecvBuffer -_080490F0: .4byte 0x0000bbbb -_080490F4: .4byte 0x0000aabb -_080490F8: - ldr r0, _0804910C @ =0x0000bbcc - cmp r1, r0 - beq _08049138 - ldr r0, _08049110 @ =0x0000eeaa - cmp r1, r0 - bne _08049142 - ldr r0, _08049114 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x84 - b _0804913E - .align 2, 0 -_0804910C: .4byte 0x0000bbcc -_08049110: .4byte 0x0000eeaa -_08049114: .4byte gUnknown_03004824 -_08049118: - ldr r0, _08049124 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x84 - strb r3, [r0] - b _08049142 - .align 2, 0 -_08049124: .4byte gUnknown_03004824 -_08049128: - ldr r0, _08049134 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x86 - strb r3, [r0] - b _08049142 - .align 2, 0 -_08049134: .4byte gUnknown_03004824 -_08049138: - ldr r0, _08049170 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x86 -_0804913E: - movs r1, 0x2 - strb r1, [r0] -_08049142: - movs r0, 0 - bl ResetBlockReceivedFlag -_08049148: - movs r2, 0x2 - adds r0, r4, 0 - ands r0, r2 - cmp r0, 0 - beq _080491DA - ldr r3, _08049174 @ =gBlockRecvBuffer - movs r1, 0x80 - lsls r1, 1 - adds r0, r3, r1 - ldrh r1, [r0] - ldr r0, _08049178 @ =0x0000bbbb - cmp r1, r0 - beq _080491BC - cmp r1, r0 - bgt _08049180 - ldr r0, _0804917C @ =0x0000aabb - cmp r1, r0 - beq _080491A0 - b _080491D4 - .align 2, 0 -_08049170: .4byte gUnknown_03004824 -_08049174: .4byte gBlockRecvBuffer -_08049178: .4byte 0x0000bbbb -_0804917C: .4byte 0x0000aabb -_08049180: - ldr r0, _08049194 @ =0x0000bbcc - cmp r1, r0 - beq _080491CC - ldr r0, _08049198 @ =0x0000eeaa - cmp r1, r0 - bne _080491D4 - ldr r0, _0804919C @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x85 - b _080491D2 - .align 2, 0 -_08049194: .4byte 0x0000bbcc -_08049198: .4byte 0x0000eeaa -_0804919C: .4byte gUnknown_03004824 -_080491A0: - ldr r2, _080491B8 @ =gUnknown_03004824 - ldr r1, [r2] - movs r4, 0x81 - lsls r4, 1 - adds r0, r3, r4 - ldrb r0, [r0] - adds r0, 0x6 - adds r1, 0x8A - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x85 - b _080491C2 - .align 2, 0 -_080491B8: .4byte gUnknown_03004824 -_080491BC: - ldr r0, _080491C8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x87 -_080491C2: - movs r1, 0x1 - strb r1, [r0] - b _080491D4 - .align 2, 0 -_080491C8: .4byte gUnknown_03004824 -_080491CC: - ldr r0, _080491E0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x87 -_080491D2: - strb r2, [r0] -_080491D4: - movs r0, 0x1 - bl ResetBlockReceivedFlag -_080491DA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080491E0: .4byte gUnknown_03004824 - thumb_func_end sub_80490BC - - thumb_func_start sub_80491E4 -sub_80491E4: @ 80491E4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r1, 24 - lsrs r5, r1, 24 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _080492BE - ldr r2, _08049210 @ =gBlockRecvBuffer - ldrh r1, [r2] - ldr r0, _08049214 @ =0x0000ddee - cmp r1, r0 - beq _080492A8 - cmp r1, r0 - bgt _08049220 - ldr r0, _08049218 @ =0x0000ccdd - cmp r1, r0 - beq _08049288 - ldr r0, _0804921C @ =0x0000dddd - cmp r1, r0 - beq _0804925C - b _080492B8 - .align 2, 0 -_08049210: .4byte gBlockRecvBuffer -_08049214: .4byte 0x0000ddee -_08049218: .4byte 0x0000ccdd -_0804921C: .4byte 0x0000dddd -_08049220: - ldr r0, _08049230 @ =0x0000eebb - cmp r1, r0 - beq _08049234 - adds r0, 0x11 - cmp r1, r0 - beq _08049258 - b _080492B8 - .align 2, 0 -_08049230: .4byte 0x0000eebb -_08049234: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x4 - bl sub_804AA0C - ldr r0, _08049254 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0xB - b _080492B6 - .align 2, 0 -_08049254: .4byte gUnknown_03004824 -_08049258: - movs r0, 0x5 - b _080492AA -_0804925C: - ldr r4, _08049284 @ =gUnknown_03004824 - ldr r1, [r4] - ldrb r0, [r2, 0x2] - adds r0, 0x6 - adds r1, 0x8A - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x41 - ldrb r0, [r0] - bl sub_8049E9C - ldr r0, [r4] - adds r0, 0x8A - ldrb r0, [r0] - bl sub_8049E9C - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x7 - b _080492B6 - .align 2, 0 -_08049284: .4byte gUnknown_03004824 -_08049288: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080492A4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0xA - b _080492B6 - .align 2, 0 -_080492A4: .4byte gUnknown_03004824 -_080492A8: - movs r0, 0x1 -_080492AA: - bl sub_804AA0C - ldr r0, _080492D4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0x8 -_080492B6: - strb r1, [r0] -_080492B8: - movs r0, 0 - bl ResetBlockReceivedFlag -_080492BE: - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _080492CC - movs r0, 0x1 - bl ResetBlockReceivedFlag -_080492CC: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080492D4: .4byte gUnknown_03004824 - thumb_func_end sub_80491E4 - - thumb_func_start sub_80492D8 -sub_80492D8: @ 80492D8 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _08049334 @ =gUnknown_03004824 - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0x84 - ldrb r0, [r1] - cmp r0, 0 - bne _080492EC - b _08049420 -_080492EC: - adds r0, r2, 0 - adds r0, 0x85 - ldrb r0, [r0] - cmp r0, 0 - bne _080492F8 - b _08049420 -_080492F8: - ldrh r1, [r1] - ldr r0, _08049338 @ =0x00000101 - cmp r1, r0 - bne _08049340 - adds r1, r2, 0 - adds r1, 0x7B - movs r0, 0x6 - strb r0, [r1] - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0x8C - movs r4, 0 - ldr r0, _0804933C @ =0x0000dddd - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x41 - ldrb r1, [r0] - adds r0, 0x4D - strh r1, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r6] - adds r2, r0, 0 - adds r2, 0x85 - strb r4, [r2] - adds r0, 0x84 - strb r4, [r0] - b _08049420 - .align 2, 0 -_08049334: .4byte gUnknown_03004824 -_08049338: .4byte 0x00000101 -_0804933C: .4byte 0x0000dddd -_08049340: - ldr r0, _08049388 @ =0x00000201 - cmp r1, r0 - bne _08049390 - movs r0, 0x1 - bl sub_804AA0C - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0x8C - movs r4, 0 - movs r3, 0 - ldr r0, _0804938C @ =0x0000eecc - strh r0, [r2] - adds r1, 0x8E - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x87 - strb r4, [r1] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x85 - strb r4, [r1] - adds r0, 0x84 - strb r4, [r0] - ldr r0, [r6] - adds r0, 0x7B - movs r1, 0x8 - b _0804941E - .align 2, 0 -_08049388: .4byte 0x00000201 -_0804938C: .4byte 0x0000eecc -_08049390: - movs r0, 0x81 - lsls r0, 1 - cmp r1, r0 - bne _080493DC - movs r0, 0x5 - bl sub_804AA0C - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0x8C - movs r4, 0 - movs r3, 0 - ldr r0, _080493D8 @ =0x0000ddee - strh r0, [r2] - adds r1, 0x8E - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x87 - strb r4, [r1] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x85 - strb r4, [r1] - adds r0, 0x84 - strb r4, [r0] - ldr r0, [r6] - adds r0, 0x7B - movs r1, 0x8 - b _0804941E - .align 2, 0 -_080493D8: .4byte 0x0000ddee -_080493DC: - ldr r0, _080494C0 @ =0x00000202 - cmp r1, r0 - bne _08049420 - adds r1, r2, 0 - adds r1, 0x8C - movs r5, 0 - movs r4, 0 - ldr r0, _080494C4 @ =0x0000eebb - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x8E - strh r4, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x85 - strb r5, [r1] - adds r0, 0x84 - strb r5, [r0] - ldr r0, [r6] - adds r0, 0x7B - movs r1, 0xB -_0804941E: - strb r1, [r0] -_08049420: - ldr r5, _080494C8 @ =gUnknown_03004824 - ldr r3, [r5] - adds r1, r3, 0 - adds r1, 0x86 - ldrb r0, [r1] - cmp r0, 0 - beq _080494B8 - adds r0, r3, 0 - adds r0, 0x87 - ldrb r0, [r0] - cmp r0, 0 - beq _080494B8 - ldrh r1, [r1] - ldr r0, _080494CC @ =0x00000101 - cmp r1, r0 - bne _0804946E - adds r1, r3, 0 - adds r1, 0x8C - movs r4, 0 - movs r2, 0 - ldr r0, _080494D0 @ =0x0000ccdd - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0x8E - strh r2, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r5] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x87 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - movs r1, 0x9 - strb r1, [r0] -_0804946E: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x86 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08049484 - adds r0, r1, 0 - adds r0, 0x87 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080494B8 -_08049484: - movs r0, 0x1 - bl sub_804AA0C - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x8C - movs r4, 0 - movs r3, 0 - ldr r0, _080494D4 @ =0x0000ddee - strh r0, [r2] - adds r1, 0x8E - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r5] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x87 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - movs r1, 0x8 - strb r1, [r0] -_080494B8: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080494C0: .4byte 0x00000202 -_080494C4: .4byte 0x0000eebb -_080494C8: .4byte gUnknown_03004824 -_080494CC: .4byte 0x00000101 -_080494D0: .4byte 0x0000ccdd -_080494D4: .4byte 0x0000ddee - thumb_func_end sub_80492D8 - - thumb_func_start sub_80494D8 -sub_80494D8: @ 80494D8 - push {r4,lr} - bl GetMultiplayerId - lsls r0, 24 - lsrs r4, r0, 24 - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08049504 - cmp r4, 0 - bne _080494FA - movs r0, 0 - bl sub_80490BC - b _08049500 -_080494FA: - adds r0, r4, 0 - bl sub_80491E4 -_08049500: - bl ResetBlockReceivedFlags -_08049504: - cmp r4, 0 - bne _0804950C - bl sub_80492D8 -_0804950C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80494D8 - - thumb_func_start sub_8049514 -sub_8049514: @ 8049514 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r6, 0 - movs r5, 0 - ldr r2, _08049548 @ =gUnknown_03004824 - ldr r3, [r2] - ldr r4, _0804954C @ =gTradeNextSelectedMonTable - lsls r2, r1, 1 - adds r2, r1 - lsls r2, 1 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r3, 0x44 - adds r2, r1 - adds r2, r4 -_0804953A: - ldrb r1, [r2] - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08049550 - adds r6, r1, 0 - b _08049558 - .align 2, 0 -_08049548: .4byte gUnknown_03004824 -_0804954C: .4byte gTradeNextSelectedMonTable -_08049550: - adds r2, 0x1 - adds r5, 0x1 - cmp r5, 0x5 - ble _0804953A -_08049558: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8049514 - - thumb_func_start sub_8049560 -sub_8049560: @ 8049560 - push {r4-r7,lr} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r7] - bl sub_8049514 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xC - bne _080495B8 - ldr r5, _080495B0 @ =gUnknown_03004824 - ldr r0, [r5] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080495B4 @ =gSprites - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r5] - adds r2, 0x40 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xE0 - strh r1, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xA0 - strh r1, [r0, 0x22] - b _08049600 - .align 2, 0 -_080495B0: .4byte gUnknown_03004824 -_080495B4: .4byte gSprites -_080495B8: - ldr r4, _08049614 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _08049618 @ =gSprites - adds r0, r5 - movs r1, 0 - bl StartSpriteAnim - ldr r4, [r4] - adds r4, 0x40 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldr r2, _0804961C @ =gTradeMonSpriteCoords - lsls r3, r6, 1 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 3 - adds r0, 0x20 - strh r0, [r1, 0x20] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - adds r2, 0x1 - adds r3, r2 - ldrb r0, [r3] - lsls r0, 3 - strh r0, [r1, 0x22] -_08049600: - ldrb r0, [r7] - cmp r0, r6 - beq _0804960C - movs r0, 0x5 - bl PlaySE -_0804960C: - strb r6, [r7] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08049614: .4byte gUnknown_03004824 -_08049618: .4byte gSprites -_0804961C: .4byte gTradeMonSpriteCoords - thumb_func_end sub_8049560 - - thumb_func_start sub_8049620 -sub_8049620: @ 8049620 - push {r4,lr} - movs r0, 0 - bl sub_804AA0C - ldr r4, _08049668 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x5 - strb r1, [r0] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08049670 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x8C - ldr r0, _0804966C @ =0x0000aabb - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x41 - ldrb r1, [r0] - adds r0, 0x4D - strh r1, [r0] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock - b _08049678 - .align 2, 0 -_08049668: .4byte gUnknown_03004824 -_0804966C: .4byte 0x0000aabb -_08049670: - ldr r0, [r4] - adds r0, 0x84 - movs r1, 0x1 - strb r1, [r0] -_08049678: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8049620 - - thumb_func_start sub_8049680 -sub_8049680: @ 8049680 - push {r4,lr} - sub sp, 0x8 - ldr r0, _080496A0 @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080496A8 - ldr r0, _080496A4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496A0: .4byte gMain -_080496A4: .4byte gUnknown_03004824 -_080496A8: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080496C4 - ldr r0, _080496C0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x1 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496C0: .4byte gUnknown_03004824 -_080496C4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080496E0 - ldr r0, _080496DC @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x2 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496DC: .4byte gUnknown_03004824 -_080496E0: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080496F4 - ldr r0, _08049750 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x3 - bl sub_8049560 -_080496F4: - ldr r0, _08049754 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080497B6 - movs r0, 0x5 - bl PlaySE - ldr r4, _08049750 @ =gUnknown_03004824 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x41 - ldrb r1, [r1] - cmp r1, 0x5 - bhi _0804975C - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0x12 - movs r2, 0xE - movs r3, 0x1C - bl DrawTextWindow - ldr r3, _08049758 @ =gUnknown_0820C320 - movs r0, 0x13 - movs r1, 0xF - movs r2, 0x2 - bl PrintMenuItems - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x13 - movs r2, 0xF - movs r3, 0x2 - bl InitMenu - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x1 - strb r1, [r0] - b _080497B6 - .align 2, 0 -_08049750: .4byte gUnknown_03004824 -_08049754: .4byte gMain -_08049758: .4byte gUnknown_0820C320 -_0804975C: - cmp r1, 0xB - bhi _0804977A - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x2 - strb r1, [r0] - b _080497B6 -_0804977A: - cmp r1, 0xC - bne _080497B6 - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0x18 - movs r2, 0xE - movs r3, 0x1D - bl DrawTextWindow - movs r0, 0x18 - movs r1, 0xE - movs r2, 0x4 - bl InitYesNoMenu - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x4 - strb r1, [r0] - ldr r0, _080497F4 @ =gUnknown_0820C14C - ldr r0, [r0, 0x10] - ldr r1, [r4] - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _080497F8 @ =0x06010000 - adds r1, r2 - movs r2, 0x14 - bl sub_804ACD8 -_080497B6: - ldr r0, _080497FC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080497EC - movs r2, 0 - ldr r3, _08049800 @ =gUnknown_03004824 -_080497C8: - ldr r0, [r3] - lsls r1, r2, 1 - adds r0, 0x8C - adds r0, r1 - strh r2, [r0] - adds r2, 0x1 - cmp r2, 0x9 - ble _080497C8 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08049800 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock -_080497EC: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080497F4: .4byte gUnknown_0820C14C -_080497F8: .4byte 0x06010000 -_080497FC: .4byte gMain -_08049800: .4byte gUnknown_03004824 - thumb_func_end sub_8049680 - - thumb_func_start sub_8049804 -sub_8049804: @ 8049804 - push {lr} - bl HandleDestroyMenuCursors - bl sub_804A80C - ldr r3, _08049850 @ =gUnknown_03004824 - ldr r0, [r3] - adds r0, 0x7B - movs r1, 0 - strb r1, [r0] - ldr r2, _08049854 @ =gSprites - ldr r0, [r3] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, _08049858 @ =gUnknown_0820C14C - ldr r0, [r0, 0x4] - ldr r1, [r3] - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _0804985C @ =0x06010000 - adds r1, r2 - movs r2, 0x14 - bl sub_804ACD8 - pop {r0} - bx r0 - .align 2, 0 -_08049850: .4byte gUnknown_03004824 -_08049854: .4byte gSprites -_08049858: .4byte gUnknown_0820C14C -_0804985C: .4byte 0x06010000 - thumb_func_end sub_8049804 - - thumb_func_start sub_8049860 -sub_8049860: @ 8049860 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0804987C @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049880 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _08049890 - .align 2, 0 -_0804987C: .4byte gMain -_08049880: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804989C - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_08049890: - bl MoveMenuCursor - ldr r1, _080498D8 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_0804989C: - ldr r0, _080498DC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049938 - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080498E0 - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080498D8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0x2 - strb r1, [r0] - b _0804994A - .align 2, 0 -_080498D8: .4byte gUnknown_03004824 -_080498DC: .4byte gMain -_080498E0: - ldr r4, _08049910 @ =gUnknown_03004824 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x51 - adds r1, r2, 0 - adds r1, 0x42 - ldrb r1, [r1] - adds r2, 0x41 - ldrb r2, [r2] - bl sub_80499F0 - lsls r0, 24 - cmp r0, 0 - bne _08049914 - movs r0, 0x3 - movs r1, 0x2 - bl sub_804AADC - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x8 - strb r1, [r0] - b _0804994A - .align 2, 0 -_08049910: .4byte gUnknown_03004824 -_08049914: - bl sub_8049620 - ldr r2, _08049934 @ =gSprites - ldr r0, [r4] - adds r0, 0x40 - 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] - b _0804994A - .align 2, 0 -_08049934: .4byte gSprites -_08049938: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804994A - movs r0, 0x5 - bl PlaySE - bl sub_8049804 -_0804994A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8049860 - - thumb_func_start sub_8049954 -sub_8049954: @ 8049954 - push {lr} - ldr r0, _08049978 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0804996A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08049974 -_0804996A: - movs r0, 0x5 - bl PlaySE - bl sub_8049804 -_08049974: - pop {r0} - bx r0 - .align 2, 0 -_08049978: .4byte gMain - thumb_func_end sub_8049954 - - thumb_func_start sub_804997C -sub_804997C: @ 804997C - push {r4,lr} - sub sp, 0x4 - ldr r0, _080499B4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080499E0 - ldr r0, _080499B8 @ =gUnknown_03004824 - ldr r2, [r0] - adds r3, r2, 0 - adds r3, 0x41 - ldrb r1, [r3] - cmp r1, 0x5 - bhi _080499C4 - ldr r0, _080499BC @ =gPlayerParty - ldrb r1, [r3] - adds r2, 0x42 - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080499C0 @ =sub_80484F4 - movs r4, 0x4 - str r4, [sp] - bl ShowPokemonSummaryScreen - b _080499E0 - .align 2, 0 -_080499B4: .4byte gPaletteFade -_080499B8: .4byte gUnknown_03004824 -_080499BC: .4byte gPlayerParty -_080499C0: .4byte sub_80484F4 -_080499C4: - ldr r0, _080499E8 @ =gEnemyParty - subs r1, 0x6 - lsls r1, 24 - lsrs r1, 24 - adds r2, 0x43 - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080499EC @ =sub_80484F4 - movs r4, 0x4 - str r4, [sp] - bl ShowPokemonSummaryScreen -_080499E0: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080499E8: .4byte gEnemyParty -_080499EC: .4byte sub_80484F4 - thumb_func_end sub_804997C - - thumb_func_start sub_80499F0 -sub_80499F0: @ 80499F0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0 - movs r3, 0 - cmp r1, r4 - bge _08049A18 -_08049A04: - cmp r2, r3 - beq _08049A12 - adds r0, r5, r3 - ldrb r0, [r0] - adds r0, r1, r0 - lsls r0, 24 - lsrs r1, r0, 24 -_08049A12: - adds r3, 0x1 - cmp r3, r4 - blt _08049A04 -_08049A18: - adds r0, r1, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80499F0 - - thumb_func_start sub_8049A20 -sub_8049A20: @ 8049A20 - push {r4,r5,lr} - sub sp, 0xC - movs r2, 0 - ldr r0, _08049A80 @ =gUnknown_03004824 - ldr r1, [r0] - adds r3, r1, 0 - adds r3, 0x42 - adds r5, r0, 0 - ldrb r0, [r3] - cmp r2, r0 - bge _08049A4C - adds r4, r1, 0 - adds r4, 0x51 -_08049A3A: - mov r1, sp - adds r0, r1, r2 - adds r1, r4, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - ldrb r0, [r3] - cmp r2, r0 - blt _08049A3A -_08049A4C: - adds r4, r5, 0 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x42 - ldrb r1, [r1] - adds r0, 0x41 - ldrb r2, [r0] - mov r0, sp - bl sub_80499F0 - lsls r0, 24 - cmp r0, 0 - bne _08049A88 - movs r0, 0x3 - movs r1, 0x2 - bl sub_804AADC - ldr r0, [r4] - adds r0, 0x8C - ldr r1, _08049A84 @ =0x0000bbcc - strh r1, [r0] - movs r0, 0xB4 - movs r1, 0 - bl sub_804AADC - b _08049AB4 - .align 2, 0 -_08049A80: .4byte gUnknown_03004824 -_08049A84: .4byte 0x0000bbcc -_08049A88: - movs r0, 0x3 - movs r1, 0x1 - bl sub_804AADC - ldr r0, [r5] - adds r0, 0x8C - ldr r1, _08049ABC @ =0x0000bbbb - strh r1, [r0] - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08049AB4 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r5] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock -_08049AB4: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08049ABC: .4byte 0x0000bbbb - thumb_func_end sub_8049A20 - - thumb_func_start sub_8049AC0 -sub_8049AC0: @ 8049AC0 - push {r4,lr} - ldr r0, _08049ADC @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049AE0 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _08049AF0 - .align 2, 0 -_08049ADC: .4byte gMain -_08049AE0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08049AFC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_08049AF0: - bl MoveMenuCursor - ldr r1, _08049B20 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_08049AFC: - ldr r0, _08049B24 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049B64 - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - lsls r0, 24 - cmp r0, 0 - bne _08049B28 - bl sub_8049A20 - b _08049B56 - .align 2, 0 -_08049B20: .4byte gUnknown_03004824 -_08049B24: .4byte gMain -_08049B28: - movs r0, 0x3 - movs r1, 0x1 - bl sub_804AADC - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08049B56 - ldr r4, _08049B5C @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x8C - ldr r1, _08049B60 @ =0x0000bbcc - strh r1, [r0] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock -_08049B56: - ldr r0, _08049B5C @ =gUnknown_03004824 - ldr r0, [r0] - b _08049BAA - .align 2, 0 -_08049B5C: .4byte gUnknown_03004824 -_08049B60: .4byte 0x0000bbcc -_08049B64: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08049BB0 - movs r0, 0x3 - movs r1, 0x1 - bl sub_804AADC - bl GetMenuCursorPos - lsls r0, 24 - cmp r0, 0 - bne _08049B8C - movs r0, 0x1 - bl MoveMenuCursor - ldr r1, _08049BB8 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_08049B8C: - ldr r4, _08049BB8 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x8C - ldr r1, _08049BBC @ =0x0000bbcc - strh r1, [r0] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock - ldr r0, [r4] -_08049BAA: - adds r0, 0x7B - movs r1, 0x64 - strb r1, [r0] -_08049BB0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049BB8: .4byte gUnknown_03004824 -_08049BBC: .4byte 0x0000bbcc - thumb_func_end sub_8049AC0 - - thumb_func_start sub_8049BC0 -sub_8049BC0: @ 8049BC0 - push {r4,r5,lr} - ldr r0, _08049BDC @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049BE0 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _08049BF0 - .align 2, 0 -_08049BDC: .4byte gMain -_08049BE0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08049BFC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_08049BF0: - bl MoveMenuCursor - ldr r1, _08049C5C @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_08049BFC: - ldr r0, _08049C60 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049C72 - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08049C6C - movs r0, 0x4 - bl sub_804AA0C - ldr r4, _08049C5C @ =gUnknown_03004824 - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x8C - ldr r1, _08049C64 @ =0x0000eeaa - strh r1, [r2] - adds r0, 0x8E - strh r5, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r2, _08049C68 @ =gSprites - ldr r0, [r4] - adds r0, 0x40 - 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] - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x64 - strb r1, [r0] - b _08049C84 - .align 2, 0 -_08049C5C: .4byte gUnknown_03004824 -_08049C60: .4byte gMain -_08049C64: .4byte 0x0000eeaa -_08049C68: .4byte gSprites -_08049C6C: - bl sub_8049804 - b _08049C84 -_08049C72: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08049C84 - movs r0, 0x5 - bl PlaySE - bl sub_8049804 -_08049C84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8049BC0 - - thumb_func_start sub_8049C8C -sub_8049C8C: @ 8049C8C - push {r4,lr} - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _08049CAE - ldr r4, _08049CC0 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x41 - ldrb r0, [r0] - bl sub_8049E9C - ldr r0, [r4] - adds r0, 0x8A - ldrb r0, [r0] - bl sub_8049E9C -_08049CAE: - ldr r0, _08049CC0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0x7 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049CC0: .4byte gUnknown_03004824 - thumb_func_end sub_8049C8C - - thumb_func_start sub_8049CC4 -sub_8049CC4: @ 8049CC4 - push {r4,lr} - ldr r4, _08049CE8 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x80 - ldrh r1, [r0] - ldr r0, _08049CEC @ =0x00000505 - cmp r1, r0 - bne _08049CE0 - bl sub_8049088 - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0xE - strb r1, [r0] -_08049CE0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049CE8: .4byte gUnknown_03004824 -_08049CEC: .4byte 0x00000505 - thumb_func_end sub_8049CC4 - - thumb_func_start DisplayMessageAndContinueTask -DisplayMessageAndContinueTask: @ 8049CF0 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08049D40 @ =gUnknown_03004824 - ldr r1, [r4] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xB4 - ldrb r0, [r0] - cmp r0, 0x78 - bls _08049D36 - adds r0, r1, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0x18 - movs r2, 0xE - movs r3, 0x1D - bl DrawTextWindow - movs r0, 0x18 - movs r1, 0xE - movs r2, 0x4 - bl InitYesNoMenu - ldr r0, [r4] - adds r0, 0xB4 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x3 - strb r1, [r0] -_08049D36: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049D40: .4byte gUnknown_03004824 - thumb_func_end DisplayMessageAndContinueTask - - thumb_func_start sub_8049D44 -sub_8049D44: @ 8049D44 - push {lr} - ldr r0, _08049D90 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049D8A - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl sub_804A840 - movs r0, 0x1 - bl sub_804A840 - ldr r2, _08049D94 @ =gUnknown_03004824 - ldr r0, [r2] - adds r0, 0x7B - movs r1, 0 - strb r1, [r0] - ldr r3, _08049D98 @ =gSprites - ldr r0, [r2] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_08049D8A: - pop {r0} - bx r0 - .align 2, 0 -_08049D90: .4byte gMain -_08049D94: .4byte gUnknown_03004824 -_08049D98: .4byte gSprites - thumb_func_end sub_8049D44 - - thumb_func_start sub_8049D9C -sub_8049D9C: @ 8049D9C - push {lr} - ldr r0, _08049DBC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08049DB8 - bl sub_800832C - ldr r0, _08049DC0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0xC - strb r1, [r0] -_08049DB8: - pop {r0} - bx r0 - .align 2, 0 -_08049DBC: .4byte gPaletteFade -_08049DC0: .4byte gUnknown_03004824 - thumb_func_end sub_8049D9C - - thumb_func_start sub_8049DC4 -sub_8049DC4: @ 8049DC4 - push {lr} - ldr r0, _08049DD8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08049DD4 - ldr r0, _08049DDC @ =sub_805465C - bl SetMainCallback2 -_08049DD4: - pop {r0} - bx r0 - .align 2, 0 -_08049DD8: .4byte gReceivedRemoteLinkPlayers -_08049DDC: .4byte sub_805465C - thumb_func_end sub_8049DC4 - - thumb_func_start sub_8049DE0 -sub_8049DE0: @ 8049DE0 - push {lr} - ldr r0, _08049DF8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0xF - bhi _08049E98 - lsls r0, 2 - ldr r1, _08049DFC @ =_08049E00 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08049DF8: .4byte gUnknown_03004824 -_08049DFC: .4byte _08049E00 - .align 2, 0 -_08049E00: - .4byte _08049E40 - .4byte _08049E46 - .4byte _08049E4C - .4byte _08049E52 - .4byte _08049E58 - .4byte _08049E98 - .4byte _08049E5E - .4byte _08049E64 - .4byte _08049E6A - .4byte _08049E70 - .4byte _08049E76 - .4byte _08049E7C - .4byte _08049E82 - .4byte _08049E88 - .4byte _08049E8E - .4byte _08049E94 -_08049E40: - bl sub_8049680 - b _08049E98 -_08049E46: - bl sub_8049860 - b _08049E98 -_08049E4C: - bl sub_804997C - b _08049E98 -_08049E52: - bl sub_8049AC0 - b _08049E98 -_08049E58: - bl sub_8049BC0 - b _08049E98 -_08049E5E: - bl sub_8049C8C - b _08049E98 -_08049E64: - bl sub_8049CC4 - b _08049E98 -_08049E6A: - bl sub_8049D44 - b _08049E98 -_08049E70: - bl sub_8048A14 - b _08049E98 -_08049E76: - bl sub_8048A50 - b _08049E98 -_08049E7C: - bl sub_8049D9C - b _08049E98 -_08049E82: - bl sub_8049DC4 - b _08049E98 -_08049E88: - bl sub_8048A90 - b _08049E98 -_08049E8E: - bl DisplayMessageAndContinueTask - b _08049E98 -_08049E94: - bl sub_8049954 -_08049E98: - pop {r0} - bx r0 - thumb_func_end sub_8049DE0 - - thumb_func_start sub_8049E9C -sub_8049E9C: @ 8049E9C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, _08049ED0 @ =gUnknown_03004824 - ldr r0, [r3] - adds r0, 0x80 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _08049EC8 - movs r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x82 - adds r0, r2 - strb r4, [r0] -_08049EC8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049ED0: .4byte gUnknown_03004824 - thumb_func_end sub_8049E9C - - thumb_func_start sub_8049ED4 -sub_8049ED4: @ 8049ED4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x74 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _08049F24 @ =gUnknown_03004824 - ldr r5, [r0] - adds r0, r5, 0 - adds r0, 0x82 - add r0, r10 - ldrb r0, [r0] - movs r1, 0x1 - str r1, [sp, 0x6C] - cmp r0, 0x5 - bhi _08049EFE - movs r2, 0 - str r2, [sp, 0x6C] -_08049EFE: - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r5, 0 - adds r0, 0x80 - mov r1, r10 - adds r3, r0, r1 - ldrb r0, [r3] - cmp r0, 0x2 - bne _08049F1A - b _0804A0AC -_08049F1A: - cmp r0, 0x2 - bgt _08049F28 - cmp r0, 0x1 - beq _08049F36 - b _0804A294 - .align 2, 0 -_08049F24: .4byte gUnknown_03004824 -_08049F28: - cmp r0, 0x3 - bne _08049F2E - b _0804A0E4 -_08049F2E: - cmp r0, 0x4 - bne _08049F34 - b _0804A244 -_08049F34: - b _0804A294 -_08049F36: - movs r4, 0 - adds r0, r5, 0 - adds r0, 0x42 - add r0, r10 - ldr r7, _0804A094 @ =gSprites - ldr r2, [sp, 0x6C] - lsls r2, 1 - mov r9, r2 - ldr r3, _0804A098 @ =gTradeMonSpriteCoords - mov r12, r3 - mov r5, r10 - lsls r5, 4 - str r5, [sp, 0x70] - ldrb r0, [r0] - cmp r4, r0 - bcs _08049F8E - adds r6, r7, 0 - ldr r2, _0804A09C @ =gUnknown_03004824 - ldr r0, [sp, 0x6C] - add r0, r9 - lsls r3, r0, 1 - movs r5, 0x4 -_08049F62: - ldr r0, [r2] - adds r1, r4, r3 - adds r0, 0x34 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r5 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [r2] - adds r0, 0x42 - add r0, r10 - ldrb r0, [r0] - cmp r4, r0 - bcc _08049F62 -_08049F8E: - ldr r1, _0804A09C @ =gUnknown_03004824 - ldr r0, [r1] - ldr r5, [sp, 0x6C] - add r5, r9 - lsls r3, r5, 1 - mov r2, r8 - adds r6, r2, r3 - adds r0, 0x34 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, _0804A09C @ =gUnknown_03004824 - ldr r4, [r0] - adds r4, 0x34 - adds r4, r6 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - movs r1, 0x14 - strh r1, [r0, 0x2E] - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r7 - lsls r5, 2 - mov r1, r12 - adds r0, r5, r1 - ldrb r0, [r0] - adds r3, 0x1 - lsls r3, 1 - add r3, r12 - ldrb r1, [r3] - adds r0, r1 - asrs r0, 1 - lsls r0, 3 - adds r0, 0xE - strh r0, [r2, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - mov r0, r12 - adds r0, 0x1 - adds r5, r0 - ldrb r0, [r5] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x36] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldr r1, _0804A0A0 @ =sub_809D62C - bl oamt_set_x3A_32 - ldr r2, _0804A09C @ =gUnknown_03004824 - ldr r1, [r2] - adds r1, 0x80 - add r1, r10 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x34 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - bl sub_8078A34 - bl HandleDestroyMenuCursors - ldr r3, _0804A09C @ =gUnknown_03004824 - ldr r0, [r3] - adds r0, 0x4 - ldr r1, _0804A0A4 @ =gUnknown_0820C330 - mov r5, r9 - adds r2, r5, r1 - ldrb r2, [r2] - adds r1, 0x1 - add r1, r9 - ldrb r1, [r1] - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - ldr r1, _0804A09C @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0xC8 - ldr r2, [sp, 0x70] - mov r3, r10 - subs r1, r2, r3 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0804A0A8 @ =gTradePartyBoxTilemap - movs r2, 0xF - str r2, [sp] - movs r2, 0x11 - str r2, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - movs r2, 0 - bl sub_804A96C_alt - ldr r0, [sp, 0x6C] - cmp r0, 0 - beq _0804A08C - b _0804A294 -_0804A08C: - bl sub_804A80C - b _0804A294 - .align 2, 0 -_0804A094: .4byte gSprites -_0804A098: .4byte gTradeMonSpriteCoords -_0804A09C: .4byte gUnknown_03004824 -_0804A0A0: .4byte sub_809D62C -_0804A0A4: .4byte gUnknown_0820C330 -_0804A0A8: .4byte gTradePartyBoxTilemap -_0804A0AC: - ldr r2, _0804A0DC @ =gSprites - ldr r1, [sp, 0x6C] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - add r0, r8 - adds r1, r5, 0 - adds r1, 0x34 - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0804A0E0 @ =sub_809D62C - cmp r1, r0 - beq _0804A0D4 - b _0804A294 -_0804A0D4: - movs r0, 0x3 - strb r0, [r3] - b _0804A294 - .align 2, 0 -_0804A0DC: .4byte gSprites -_0804A0E0: .4byte sub_809D62C -_0804A0E4: - adds r0, r5, 0 - adds r0, 0xC8 - ldr r2, [sp, 0x6C] - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0804A228 @ =gTradeMovesBoxTilemap - movs r2, 0xF - str r2, [sp] - movs r7, 0x11 - str r7, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - movs r2, 0 - bl sub_804A96C_alt - ldr r0, _0804A22C @ =gUnknown_03004824 - ldr r3, [r0] - ldr r1, [sp, 0x6C] - lsls r6, r1, 1 - adds r1, r6 - mov r9, r1 - lsls r1, 1 - mov r2, r8 - adds r0, r2, r1 - adds r3, 0x34 - adds r3, r0 - ldrb r0, [r3] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r5, _0804A230 @ =gSprites - adds r2, r5 - ldr r4, _0804A234 @ =gTradeMonSpriteCoords - mov r0, r9 - lsls r5, r0, 2 - adds r0, r5, r4 - ldrb r0, [r0] - adds r1, 0x1 - lsls r1, 1 - adds r1, r4 - ldrb r1, [r1] - adds r0, r1 - asrs r0, 1 - lsls r0, 3 - adds r0, 0xE - strh r0, [r2, 0x20] - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r2, _0804A230 @ =gSprites - adds r1, r2 - adds r4, 0x1 - adds r5, r4 - ldrb r0, [r5] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x22] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r5, 0 - strh r5, [r0, 0x24] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x26] - mov r0, sp - adds r0, 0x12 - ldr r1, [sp, 0x6C] - mov r2, r8 - bl sub_804A2B4 - add r1, sp, 0xC - movs r3, 0xFC - strb r3, [r1] - adds r2, r1, 0 - movs r1, 0x6 - strb r1, [r2, 0x1] - movs r1, 0x4 - strb r1, [r2, 0x2] - adds r1, r2, 0 - strb r3, [r1, 0x3] - strb r7, [r1, 0x4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x40 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - strb r1, [r2, 0x5] - ldr r0, _0804A22C @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r1, 0x7A - ldrb r2, [r1] - mov r1, r9 - lsls r1, 6 - mov r9, r1 - add r2, r9 - ldr r4, _0804A238 @ =gUnknown_0820C334 - ldr r3, [sp, 0x6C] - lsls r1, r3, 2 - adds r3, r1, r4 - ldrb r3, [r3] - ldr r5, _0804A23C @ =gUnknown_0820C334 + 0x1 - adds r1, r5 - ldrb r1, [r1] - str r1, [sp] - add r1, sp, 0xC - bl sub_8003460 - add r7, sp, 0x34 - adds r0, r7, 0 - ldr r1, [sp, 0x6C] - mov r2, r8 - bl sub_804A33C - ldr r0, _0804A22C @ =gUnknown_03004824 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _0804A240 @ =gOtherText_Terminator2 - adds r2, 0x7A - ldrb r2, [r2] - add r2, r9 - adds r2, 0x20 - adds r6, 0x1 - lsls r6, 1 - adds r4, r6, r4 - ldrb r5, [r4] - ldr r3, _0804A23C @ =gUnknown_0820C334 + 0x1 - adds r6, r3 - ldrb r4, [r6] - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - adds r3, r5, 0 - bl sub_8003460 - ldr r0, _0804A22C @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r1, 0x7A - ldrb r2, [r1] - add r2, r9 - adds r2, 0x26 - str r4, [sp] - adds r1, r7, 0 - adds r3, r5, 0 - bl sub_8003460 - ldr r2, _0804A22C @ =gUnknown_03004824 - ldr r1, [r2] - b _0804A28A - .align 2, 0 -_0804A228: .4byte gTradeMovesBoxTilemap -_0804A22C: .4byte gUnknown_03004824 -_0804A230: .4byte gSprites -_0804A234: .4byte gTradeMonSpriteCoords -_0804A238: .4byte gUnknown_0820C334 -_0804A23C: .4byte gUnknown_0820C334 + 0x1 -_0804A240: .4byte gOtherText_Terminator2 -_0804A244: - ldr r0, _0804A2A4 @ =gUnknown_0820C14C - ldr r0, [r0, 0x14] - adds r1, r5, 0 - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r3, _0804A2A8 @ =0x06010000 - adds r1, r3 - movs r2, 0x14 - bl sub_804ACD8 - ldr r0, _0804A2AC @ =gUnknown_0820C3D1 - mov r5, r10 - lsls r1, r5, 1 - adds r4, r1, r0 - ldrb r2, [r4] - adds r2, 0x4 - lsls r2, 24 - lsrs r2, 24 - adds r0, 0x1 - adds r1, r0 - ldrb r3, [r1] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4] - str r0, [sp] - ldrb r0, [r1] - str r0, [sp, 0x4] - mov r0, r10 - mov r1, r8 - bl sub_804A51C - ldr r0, _0804A2B0 @ =gUnknown_03004824 - ldr r1, [r0] -_0804A28A: - adds r1, 0x80 - add r1, r10 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804A294: - add sp, 0x74 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A2A4: .4byte gUnknown_0820C14C -_0804A2A8: .4byte 0x06010000 -_0804A2AC: .4byte gUnknown_0820C3D1 -_0804A2B0: .4byte gUnknown_03004824 - thumb_func_end sub_8049ED4 - - thumb_func_start sub_804A2B4 -sub_804A2B4: @ 804A2B4 - push {r4,r5,lr} - sub sp, 0xC - adds r5, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r2, 24 - cmp r1, 0 - bne _0804A2F4 - movs r0, 0x64 - adds r4, r2, 0 - muls r4, r0 - ldr r0, _0804A2F0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - adds r0, r5, 0 - mov r1, sp - bl StringCopy10 - adds r0, r4, 0 - bl GetMonGender - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - b _0804A31E - .align 2, 0 -_0804A2F0: .4byte gPlayerParty -_0804A2F4: - movs r0, 0x64 - adds r4, r2, 0 - muls r4, r0 - ldr r0, _0804A334 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - adds r0, r5, 0 - mov r1, sp - bl StringCopy10 - adds r0, r4, 0 - bl GetMonGender - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData -_0804A31E: - ldr r0, _0804A338 @ =gWindowConfig_81E7294 - adds r1, r5, 0 - bl GetStringWidthGivenWindowConfig - lsls r0, 24 - lsrs r0, 24 - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0804A334: .4byte gEnemyParty -_0804A338: .4byte gWindowConfig_81E7294 - thumb_func_end sub_804A2B4 - - thumb_func_start sub_804A33C -sub_804A33C: @ 804A33C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - adds r6, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0804A384 @ =gUnknown_03004824 - ldr r1, [r0] - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 1 - adds r0, r2, r0 - adds r1, 0x5D - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _0804A3F4 - movs r4, 0 - movs r0, 0x64 - adds r5, r2, 0 - muls r5, r0 - ldr r0, _0804A388 @ =gPlayerParty - mov r9, r0 - ldr r2, _0804A38C @ =gEnemyParty - mov r8, r2 -_0804A376: - cmp r7, 0 - bne _0804A390 - adds r1, r4, 0 - adds r1, 0xD - mov r2, r9 - b _0804A396 - .align 2, 0 -_0804A384: .4byte gUnknown_03004824 -_0804A388: .4byte gPlayerParty -_0804A38C: .4byte gEnemyParty -_0804A390: - adds r1, r4, 0 - adds r1, 0xD - mov r2, r8 -_0804A396: - adds r0, r5, r2 - movs r2, 0 - bl GetMonData - lsls r1, r4, 1 - add r1, sp - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _0804A376 - ldr r1, _0804A3E8 @ =gOtherText_Terminator - adds r0, r6, 0 - bl StringCopy - movs r4, 0 -_0804A3B8: - lsls r0, r4, 1 - mov r2, sp - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _0804A3D4 - adds r1, r0, 0 - movs r0, 0xD - muls r1, r0 - ldr r0, _0804A3EC @ =gMoveNames - adds r1, r0 - adds r0, r6, 0 - bl StringAppend -_0804A3D4: - adds r0, r6, 0 - ldr r1, _0804A3F0 @ =gOtherText_ControlAndMiscText - bl StringAppend - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _0804A3B8 - b _0804A404 - .align 2, 0 -_0804A3E8: .4byte gOtherText_Terminator -_0804A3EC: .4byte gMoveNames -_0804A3F0: .4byte gOtherText_ControlAndMiscText -_0804A3F4: - ldr r1, _0804A414 @ =gOtherText_Terminator - adds r0, r6, 0 - bl StringCopy - ldr r1, _0804A418 @ =gOtherText_FourQuestions - adds r0, r6, 0 - bl StringAppend -_0804A404: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A414: .4byte gOtherText_Terminator -_0804A418: .4byte gOtherText_FourQuestions - thumb_func_end sub_804A33C - - thumb_func_start sub_804A41C -sub_804A41C: @ 804A41C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x44 - lsls r0, 24 - lsrs r5, r0, 24 - add r3, sp, 0x1C - movs r2, 0 - movs r1, 0xFC - strb r1, [r3] - movs r0, 0x6 - strb r0, [r3, 0x1] - movs r0, 0x4 - strb r0, [r3, 0x2] - strb r1, [r3, 0x3] - movs r0, 0x11 - strb r0, [r3, 0x4] - strb r2, [r3, 0x5] - movs r6, 0 - ldr r1, _0804A470 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x42 - adds r0, r5 - ldrb r0, [r0] - cmp r6, r0 - bcs _0804A504 - mov r8, r3 - adds r7, r1, 0 - ldr r0, _0804A474 @ =gTradeMonSpriteCoords - mov r9, r0 - movs r4, 0x1 - add r4, r9 - mov r10, r4 -_0804A462: - cmp r5, 0 - bne _0804A47C - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804A478 @ =gPlayerParty - b _0804A484 - .align 2, 0 -_0804A470: .4byte gUnknown_03004824 -_0804A474: .4byte gTradeMonSpriteCoords -_0804A478: .4byte gPlayerParty -_0804A47C: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804A514 @ =gEnemyParty -_0804A484: - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0x4 - bl GetMonData - mov r0, sp - adds r0, 0x22 - add r1, sp, 0x4 - bl StringCopy10 - adds r0, r4, 0 - bl GetMonGender - mov r1, sp - adds r1, 0x22 - ldr r0, _0804A518 @ =gWindowConfig_81E7294 - bl GetStringWidthGivenWindowConfig - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x32 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - mov r0, r8 - strb r1, [r0, 0x5] - ldr r1, [r7] - adds r0, r1, 0x4 - adds r1, 0x7A - lsls r2, r5, 5 - adds r2, r5 - lsls r2, 2 - ldrb r1, [r1] - adds r2, r1 - movs r1, 0x16 - muls r1, r6 - adds r2, r1 - lsls r2, 16 - lsrs r2, 16 - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 1 - adds r1, r6, r1 - lsls r1, 1 - mov r4, r9 - adds r3, r1, r4 - ldrb r3, [r3] - add r1, r10 - ldrb r1, [r1] - str r1, [sp] - mov r1, r8 - bl sub_8003460 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [r7] - adds r0, 0x42 - adds r0, r5 - ldrb r0, [r0] - cmp r6, r0 - bcc _0804A462 -_0804A504: - add sp, 0x44 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A514: .4byte gEnemyParty -_0804A518: .4byte gWindowConfig_81E7294 - thumb_func_end sub_804A41C - - thumb_func_start sub_804A51C -sub_804A51C: @ 804A51C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - ldr r4, [sp, 0x48] - ldr r5, [sp, 0x4C] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x24] - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0804A59C @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xC8 - ldr r3, _0804A5A0 @ =gTradeMonBoxTilemap - movs r1, 0x6 - str r1, [sp] - movs r1, 0x3 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_804A96C - mov r0, r8 - cmp r0, 0 - bne _0804A5A8 - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, _0804A5A4 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x38 - movs r2, 0 - bl GetMonData - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - bl GetMonGender - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0xC - bl GetMonData - b _0804A5D4 - .align 2, 0 -_0804A59C: .4byte gUnknown_03004824 -_0804A5A0: .4byte gTradeMonBoxTilemap -_0804A5A4: .4byte gPlayerParty -_0804A5A8: - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, _0804A65C @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x38 - movs r2, 0 - bl GetMonData - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - bl GetMonGender - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0xC - bl GetMonData -_0804A5D4: - ldr r1, _0804A660 @ =gUnknown_03004824 - ldr r5, [r1] - mov r3, r8 - lsls r0, r3, 1 - add r0, r8 - lsls r0, 1 - add r0, r9 - adds r1, r5, 0 - adds r1, 0x5D - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _0804A690 - adds r0, r6, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [sp, 0x24] - lsls r2, r0, 5 - cmp r4, 0 - beq _0804A614 - mov r1, r10 - adds r0, r1, r2 - lsls r0, 1 - adds r1, r5, 0 - adds r1, 0xDA - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x60 - strh r0, [r1] -_0804A614: - ldr r3, _0804A660 @ =gUnknown_03004824 - ldr r4, [r3] - mov r0, r10 - adds r5, r0, r2 - adds r0, r5, 0x1 - lsls r0, 1 - adds r4, 0xDA - adds r4, r0 - adds r0, r6, 0 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x70 - strh r0, [r4] - cmp r7, 0 - bne _0804A664 - add r0, sp, 0xC - movs r1, 0 - bl NameHasGenderSymbol - lsls r0, 24 - cmp r0, 0 - bne _0804A6CC - ldr r3, _0804A660 @ =gUnknown_03004824 - ldr r1, [r3] - adds r0, r5, 0 - subs r0, 0x1F - lsls r0, 1 - adds r1, 0xDA - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - b _0804A6CA - .align 2, 0 -_0804A65C: .4byte gEnemyParty -_0804A660: .4byte gUnknown_03004824 -_0804A664: - cmp r7, 0xFE - bne _0804A6CC - add r0, sp, 0xC - movs r1, 0xFE - bl NameHasGenderSymbol - lsls r0, 24 - cmp r0, 0 - bne _0804A6CC - ldr r0, _0804A68C @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r5, 0 - subs r0, 0x1F - lsls r0, 1 - adds r1, 0xDA - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x2 - b _0804A6CA - .align 2, 0 -_0804A68C: .4byte gUnknown_03004824 -_0804A690: - ldr r1, [sp, 0x24] - lsls r0, r1, 5 - mov r1, r10 - adds r3, r1, r0 - adds r1, r3, 0 - subs r1, 0x20 - lsls r1, 1 - adds r2, r5, 0 - adds r2, 0xDA - adds r1, r2, r1 - adds r0, r3, 0 - subs r0, 0x21 - lsls r0, 1 - adds r0, r2, r0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, r3, 0 - subs r1, 0x1F - lsls r1, 1 - adds r1, r2, r1 - adds r0, r3, 0 - subs r0, 0x24 - lsls r0, 1 - adds r2, r0 - ldrh r2, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - orrs r0, r2 -_0804A6CA: - strh r0, [r1] -_0804A6CC: -.ifdef GERMAN - ldr r0, _0804A6E8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xD8 - movs r1, 0x1 - strb r1, [r0] -.endif - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 -.ifdef GERMAN - .align 2, 0 -_0804A6E8: .4byte gUnknown_03004824 -.endif - thumb_func_end sub_804A51C - - thumb_func_start sub_804A6DC -sub_804A6DC: @ 804A6DC - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r0, _0804A734 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x42 - adds r0, r6 - ldrb r0, [r0] - cmp r7, r0 - bge _0804A72C - lsls r0, r6, 1 - adds r0, r6 - ldr r1, _0804A738 @ =gTradeLevelDisplayCoords - lsls r0, 2 - adds r5, r0, r1 - ldr r1, _0804A73C @ =gTradeMonBoxCoords - adds r4, r0, r1 -_0804A702: - lsls r1, r7, 24 - lsrs r1, 24 - ldrb r2, [r5] - ldrb r3, [r5, 0x1] - ldrb r0, [r4] - str r0, [sp] - ldrb r0, [r4, 0x1] - str r0, [sp, 0x4] - adds r0, r6, 0 - bl sub_804A51C - adds r5, 0x2 - adds r4, 0x2 - adds r7, 0x1 - ldr r0, _0804A734 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x42 - adds r0, r6 - ldrb r0, [r0] - cmp r7, r0 - blt _0804A702 -_0804A72C: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A734: .4byte gUnknown_03004824 -_0804A738: .4byte gTradeLevelDisplayCoords -_0804A73C: .4byte gTradeMonBoxCoords - thumb_func_end sub_804A6DC - - thumb_func_start sub_804A740 -sub_804A740: @ 804A740 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - movs r7, 0 - ldr r3, _0804A800 @ =gUnknown_03004824 - ldr r0, [r3] - adds r0, 0x42 - add r0, r12 - ldrb r0, [r0] - cmp r7, r0 - bge _0804A7F2 - ldr r6, _0804A804 @ =gSprites - mov r9, r3 - mov r1, r12 - lsls r0, r1, 1 - add r0, r12 - lsls r2, r0, 1 - mov r10, r2 - ldr r1, _0804A808 @ =gTradeMonSpriteCoords - movs r2, 0 - mov r8, r2 - lsls r0, 2 - adds r5, r0, r1 -_0804A778: - mov r1, r9 - ldr r0, [r1] - mov r2, r10 - adds r4, r7, r2 - adds r0, 0x34 - adds r0, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - mov r0, r9 - ldr r3, [r0] - adds r2, r3, 0 - adds r2, 0x34 - adds r2, r4 - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r5] - lsls r0, 3 - adds r0, 0xE - strh r0, [r1, 0x20] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r5, 0x1] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x22] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r1, r8 - strh r1, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r2, r8 - strh r2, [r0, 0x26] - adds r5, 0x2 - adds r7, 0x1 - adds r3, 0x42 - add r3, r12 - ldrb r3, [r3] - cmp r7, r3 - blt _0804A778 -_0804A7F2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A800: .4byte gUnknown_03004824 -_0804A804: .4byte gSprites -_0804A808: .4byte gTradeMonSpriteCoords - thumb_func_end sub_804A740 - - thumb_func_start sub_804A80C -sub_804A80C: @ 804A80C - push {lr} - sub sp, 0x8 - ldr r0, _0804A838 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x4 - ldr r1, _0804A83C @ =gUnknown_0820C330 - ldrb r2, [r1, 0x2] - ldrb r1, [r1, 0x3] - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - movs r0, 0x1 - bl sub_804A41C - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0804A838: .4byte gUnknown_03004824 -_0804A83C: .4byte gUnknown_0820C330 - thumb_func_end sub_804A80C - - thumb_func_start sub_804A840 -sub_804A840: @ 804A840 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0804A8A8 - ldr r4, _0804A89C @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x4 - ldr r1, _0804A8A0 @ =gUnknown_0820C330 - ldrb r2, [r1] - ldrb r1, [r1, 0x1] - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - ldr r0, [r4] - adds r0, 0xC8 - ldr r3, _0804A8A4 @ =gTradePartyBoxTilemap - movs r1, 0xF - str r1, [sp] - movs r1, 0x11 - str r1, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0 - movs r2, 0 - bl sub_804A96C_alt - movs r0, 0 - bl sub_804A6DC - movs r0, 0 - bl sub_804A41C - movs r0, 0 - bl sub_804A740 - ldr r0, [r4] - adds r0, 0xC8 - bl sub_804A938 - b _0804A8FA - .align 2, 0 -_0804A89C: .4byte gUnknown_03004824 -_0804A8A0: .4byte gUnknown_0820C330 -_0804A8A4: .4byte gTradePartyBoxTilemap -_0804A8A8: - bl HandleDestroyMenuCursors - ldr r4, _0804A924 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x4 - ldr r1, _0804A928 @ =gUnknown_0820C330 - ldrb r2, [r1, 0x2] - ldrb r1, [r1, 0x3] - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - ldr r0, [r4] - adds r0, 0xC8 - ldr r3, _0804A92C @ =gTradePartyBoxTilemap - movs r1, 0xF - str r1, [sp] - movs r1, 0x11 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0xF - movs r2, 0 - bl sub_804A96C_alt - movs r0, 0x1 - bl sub_804A6DC - movs r0, 0x1 - bl sub_804A41C - movs r0, 0x1 - bl sub_804A740 - ldr r0, [r4] - adds r0, 0xC8 - bl sub_804A938 -_0804A8FA: - ldr r0, _0804A930 @ =gUnknown_0820C14C - ldr r0, [r0, 0x4] - ldr r4, _0804A924 @ =gUnknown_03004824 - ldr r1, [r4] - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _0804A934 @ =0x06010000 - adds r1, r2 - movs r2, 0x14 - bl sub_804ACD8 - ldr r0, [r4] - adds r0, 0x80 - adds r0, r5 - movs r1, 0 - strb r1, [r0] - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804A924: .4byte gUnknown_03004824 -_0804A928: .4byte gUnknown_0820C330 -_0804A92C: .4byte gTradePartyBoxTilemap -_0804A930: .4byte gUnknown_0820C14C -_0804A934: .4byte 0x06010000 - thumb_func_end sub_804A840 - - thumb_func_start sub_804A938 -sub_804A938: @ 804A938 - movs r1, 0x1 - strb r1, [r0, 0x10] - bx lr - thumb_func_end sub_804A938 - - thumb_func_start sub_804A940 -sub_804A940: @ 804A940 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _0804A95C - adds r0, r4, 0 - adds r0, 0x12 - ldr r1, [r4, 0x8] - movs r2, 0x80 - lsls r2, 3 - bl CpuSet - movs r0, 0 - strb r0, [r4, 0x10] -_0804A95C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804A940 - - thumb_func_start sub_804A964 -sub_804A964: @ 804A964 - movs r2, 0 - strb r2, [r0, 0x10] - str r1, [r0, 0x8] - bx lr - thumb_func_end sub_804A964 - -.section .text.sub_804A9F4 - - thumb_func_start sub_804A9F4 -sub_804A9F4: @ 804A9F4 - push {lr} - bl MenuZeroFillScreen - pop {r0} - bx r0 - thumb_func_end sub_804A9F4 - - thumb_func_start sub_804AA00 -sub_804AA00: @ 804AA00 - push {lr} - bl MenuZeroFillScreen - pop {r0} - bx r0 - thumb_func_end sub_804AA00 - - thumb_func_start sub_804AA0C -sub_804AA0C: @ 804AA0C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - ldr r0, _0804AA7C @ =gUnknown_03004824 - mov r8, r0 - ldr r0, [r0] - adds r0, 0x4 - ldr r2, _0804AA80 @ =gTradeMessageWindowRects - lsrs r4, 22 - adds r1, r4, r2 - ldrb r6, [r1] - adds r1, r2, 0x1 - adds r1, r4, r1 - ldrb r5, [r1] - adds r1, r2, 0x2 - adds r1, r4, r1 - ldrb r3, [r1] - adds r2, 0x3 - adds r2, r4, r2 - ldrb r1, [r2] - str r1, [sp] - adds r1, r6, 0 - adds r2, r5, 0 - bl DrawTextWindow - mov r1, r8 - ldr r3, [r1] - adds r0, r3, 0x4 - ldr r1, _0804AA84 @ =gUnknown_0820C2F0 - adds r4, r1 - ldr r1, [r4] - adds r3, 0x7A - movs r4, 0xC0 - lsls r4, 1 - adds r2, r4, 0 - ldrb r3, [r3] - adds r2, r3 - adds r6, 0x1 - lsls r6, 24 - lsrs r6, 24 - adds r5, 0x1 - lsls r5, 24 - lsrs r5, 24 - str r5, [sp] - adds r3, r6, 0 - bl sub_8003460 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804AA7C: .4byte gUnknown_03004824 -_0804AA80: .4byte gTradeMessageWindowRects -_0804AA84: .4byte gUnknown_0820C2F0 - thumb_func_end sub_804AA0C - - thumb_func_start sub_804AA88 -sub_804AA88: @ 804AA88 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r3, 0 - ldr r5, _0804AAD0 @ =gUnknown_03004824 - ldr r0, _0804AAD4 @ =0x000008dc - mov r8, r0 - movs r4, 0 - ldr r2, _0804AAD8 @ =0x000008de - mov r12, r2 - movs r7, 0x8E - lsls r7, 4 - movs r6, 0xFF -_0804AAA2: - ldr r0, [r5] - lsls r2, r3, 3 - adds r0, r2 - add r0, r8 - strb r4, [r0] - ldr r1, [r5] - adds r1, r2 - mov r2, r12 - adds r0, r1, r2 - strh r4, [r0] - adds r1, r7 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0x3 - ble _0804AAA2 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AAD0: .4byte gUnknown_03004824 -_0804AAD4: .4byte 0x000008dc -_0804AAD8: .4byte 0x000008de - thumb_func_end sub_804AA88 - - thumb_func_start sub_804AADC -sub_804AADC: @ 804AADC - push {r4-r7,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - movs r3, 0 - ldr r4, _0804AB18 @ =gUnknown_03004824 - mov r12, r4 - ldr r7, _0804AB1C @ =0x000008dc -_0804AAEE: - mov r1, r12 - ldr r0, [r1] - lsls r1, r3, 3 - adds r2, r0, r1 - adds r0, r2, r7 - ldrb r0, [r0] - cmp r0, 0 - bne _0804AB24 - ldr r3, _0804AB20 @ =0x000008de - adds r0, r2, r3 - strh r5, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strb r6, [r0] - ldr r0, [r4] - adds r0, r1 - ldr r1, _0804AB1C @ =0x000008dc - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - b _0804AB2A - .align 2, 0 -_0804AB18: .4byte gUnknown_03004824 -_0804AB1C: .4byte 0x000008dc -_0804AB20: .4byte 0x000008de -_0804AB24: - adds r3, 0x1 - cmp r3, 0x3 - ble _0804AAEE -_0804AB2A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804AADC - - thumb_func_start sub_804AB30 -sub_804AB30: @ 804AB30 - push {r4,r5,lr} - movs r4, 0 - ldr r3, _0804AB58 @ =gUnknown_03004824 -_0804AB36: - ldr r0, [r3] - lsls r1, r4, 3 - adds r2, r0, r1 - ldr r5, _0804AB5C @ =0x000008dc - adds r0, r2, r5 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0 - beq _0804ABE2 - ldr r0, _0804AB60 @ =0x000008de - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _0804AB64 - subs r0, 0x1 - strh r0, [r1] - b _0804ABE2 - .align 2, 0 -_0804AB58: .4byte gUnknown_03004824 -_0804AB5C: .4byte 0x000008dc -_0804AB60: .4byte 0x000008de -_0804AB64: - movs r1, 0x8E - lsls r1, 4 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0804ABD2 - lsls r0, 2 - ldr r1, _0804AB7C @ =_0804AB80 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804AB7C: .4byte _0804AB80 - .align 2, 0 -_0804AB80: - .4byte _0804AB98 - .4byte _0804ABB4 - .4byte _0804ABBC - .4byte _0804ABC4 - .4byte _0804ABC4 - .4byte _0804ABCC -_0804AB98: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0804ABB0 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock - b _0804ABD2 - .align 2, 0 -_0804ABB0: .4byte gUnknown_03004824 -_0804ABB4: - movs r0, 0 - bl sub_804AA0C - b _0804ABD2 -_0804ABBC: - movs r0, 0x2 - bl sub_804AA0C - b _0804ABD2 -_0804ABC4: - movs r0, 0x3 - bl sub_804AA0C - b _0804ABD2 -_0804ABCC: - movs r0, 0x3 - bl sub_804AA0C -_0804ABD2: - ldr r0, _0804ABF0 @ =gUnknown_03004824 - ldr r1, [r0] - adds r1, r5 - ldr r2, _0804ABF4 @ =0x000008dc - adds r1, r2 - movs r2, 0 - strb r2, [r1] - adds r3, r0, 0 -_0804ABE2: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804AB36 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804ABF0: .4byte gUnknown_03004824 -_0804ABF4: .4byte 0x000008dc - thumb_func_end sub_804AB30 - - thumb_func_start sub_804ABF8 -sub_804ABF8: @ 804ABF8 - push {r4,lr} - ldr r0, _0804AC14 @ =gUnknown_03004824 - ldr r1, [r0] - adds r1, 0xB4 - ldrb r1, [r1] - subs r1, 0x8 - adds r4, r0, 0 - cmp r1, 0x8 - bhi _0804ACB0 - lsls r0, r1, 2 - ldr r1, _0804AC18 @ =_0804AC1C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804AC14: .4byte gUnknown_03004824 -_0804AC18: .4byte _0804AC1C - .align 2, 0 -_0804AC1C: - .4byte _0804AC40 - .4byte _0804ACB0 - .4byte _0804ACB0 - .4byte _0804ACB0 - .4byte _0804ACB0 - .4byte _0804AC60 - .4byte _0804AC74 - .4byte _0804AC88 - .4byte _0804AC9A -_0804AC40: - ldr r0, [r4] - adds r0, 0xB4 - ldrb r0, [r0] - lsls r0, 3 - ldr r1, _0804AC5C @ =gUnknown_0820C07C - adds r0, r1 - bl LoadSpriteSheet - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0x7E - strh r0, [r2] - b _0804ACC2 - .align 2, 0 -_0804AC5C: .4byte gUnknown_0820C07C -_0804AC60: - ldr r0, _0804AC6C @ =gSpritePalette_TradeScreenText - bl LoadSpritePalette - ldr r0, _0804AC70 @ =gUnknown_03004824 - ldr r1, [r0] - b _0804ACC2 - .align 2, 0 -_0804AC6C: .4byte gSpritePalette_TradeScreenText -_0804AC70: .4byte gUnknown_03004824 -_0804AC74: - ldr r0, _0804AC80 @ =gUnknown_0820C12C - bl LoadSpritePalette - ldr r0, _0804AC84 @ =gUnknown_03004824 - ldr r1, [r0] - b _0804ACC2 - .align 2, 0 -_0804AC80: .4byte gUnknown_0820C12C -_0804AC84: .4byte gUnknown_03004824 -_0804AC88: - ldr r0, _0804ACA8 @ =gUnknown_0820C124 - bl LoadSpriteSheet - ldr r0, _0804ACAC @ =gUnknown_03004824 - ldr r1, [r0] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804AC9A: - ldr r0, _0804ACAC @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xB4 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _0804ACCC - .align 2, 0 -_0804ACA8: .4byte gUnknown_0820C124 -_0804ACAC: .4byte gUnknown_03004824 -_0804ACB0: - ldr r0, [r4] - adds r0, 0xB4 - ldrb r0, [r0] - lsls r0, 3 - ldr r1, _0804ACD4 @ =gUnknown_0820C07C - adds r0, r1 - bl LoadSpriteSheet - ldr r1, [r4] -_0804ACC2: - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_0804ACCC: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0804ACD4: .4byte gUnknown_0820C07C - thumb_func_end sub_804ABF8 - - thumb_func_start sub_804ACD8 -sub_804ACD8: @ 804ACD8 - push {r4,lr} - adds r4, r0, 0 - lsls r3, r2, 24 - lsrs r3, 24 - ldr r0, _0804ACF0 @ =gWindowConfig_81E725C - adds r2, r4, 0 - bl sub_804AFB8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804ACF0: .4byte gWindowConfig_81E725C - thumb_func_end sub_804ACD8 - - thumb_func_start sub_804ACF4 -sub_804ACF4: @ 804ACF4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0 - beq _0804AD0C - cmp r0, 0x1 - beq _0804ADA0 - b _0804AE2C -_0804AD0C: - movs r7, 0 - ldr r1, _0804AD4C @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x42 - ldrb r0, [r0] - cmp r7, r0 - blt _0804AD1C - b _0804AE2C -_0804AD1C: - adds r6, r1, 0 - movs r5, 0 - mov r9, r5 -_0804AD22: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0804AD50 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - adds r1, r0, 0 - cmp r1, 0x1 - bne _0804AD54 - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - mov r2, r9 - strb r2, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - b _0804AD84 - .align 2, 0 -_0804AD4C: .4byte gUnknown_03004824 -_0804AD50: .4byte gPlayerParty -_0804AD54: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - cmp r1, 0 - bne _0804AD72 - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - b _0804AD84 -_0804AD72: - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - mov r1, r9 -_0804AD84: - strb r1, [r0] - ldr r0, _0804AD9C @ =gUnknown_03004824 - adds r5, 0x1 - adds r7, 0x1 - ldr r0, [r0] - adds r0, 0x42 - add r0, r8 - ldrb r0, [r0] - cmp r7, r0 - blt _0804AD22 - b _0804AE2C - .align 2, 0 -_0804AD9C: .4byte gUnknown_03004824 -_0804ADA0: - movs r7, 0 - ldr r1, _0804ADE0 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x43 - ldrb r0, [r0] - cmp r7, r0 - bge _0804AE2C - adds r6, r1, 0 - movs r5, 0x6 - movs r2, 0 - mov r9, r2 -_0804ADB6: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0804ADE4 @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - adds r1, r0, 0 - cmp r1, 0x1 - bne _0804ADE8 - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - mov r2, r9 - strb r2, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - b _0804AE18 - .align 2, 0 -_0804ADE0: .4byte gUnknown_03004824 -_0804ADE4: .4byte gEnemyParty -_0804ADE8: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - cmp r1, 0 - bne _0804AE06 - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - b _0804AE18 -_0804AE06: - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - mov r1, r9 -_0804AE18: - strb r1, [r0] - ldr r0, _0804AE38 @ =gUnknown_03004824 - adds r5, 0x1 - adds r7, 0x1 - ldr r0, [r0] - adds r0, 0x42 - add r0, r8 - ldrb r0, [r0] - cmp r7, r0 - blt _0804ADB6 -_0804AE2C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AE38: .4byte gUnknown_03004824 - thumb_func_end sub_804ACF4 - - thumb_func_start sub_804AE3C -sub_804AE3C: @ 804AE3C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0804AE4C - cmp r0, 0x1 - beq _0804AEAC - b _0804AF00 -_0804AE4C: - movs r6, 0 - ldr r1, _0804AEA4 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - bcs _0804AF00 - adds r7, r1, 0 -_0804AE5C: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804AEA8 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetHPBarLevel - ldr r1, [r7] - adds r1, 0x69 - adds r1, r6 - strb r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, [r7] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - bcc _0804AE5C - b _0804AF00 - .align 2, 0 -_0804AEA4: .4byte gUnknown_03004824 -_0804AEA8: .4byte gPlayerParty -_0804AEAC: - movs r6, 0 - ldr r1, _0804AF08 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - bcs _0804AF00 - adds r7, r1, 0 -_0804AEBC: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804AF0C @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetHPBarLevel - ldr r1, [r7] - adds r1, 0x6F - adds r1, r6 - strb r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, [r7] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - bcc _0804AEBC -_0804AF00: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AF08: .4byte gUnknown_03004824 -_0804AF0C: .4byte gEnemyParty - thumb_func_end sub_804AE3C - - thumb_func_start sub_804AF10 -sub_804AF10: @ 804AF10 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r5, 0 -_0804AF18: - movs r4, 0 - ldr r2, _0804AF7C @ =gUnknown_03004824 - ldr r0, [r2] - adds r0, 0x42 - adds r0, r5 - adds r1, r5, 0x1 - mov r8, r1 - ldrb r0, [r0] - cmp r4, r0 - bge _0804AF6A - adds r6, r2, 0 - lsls r0, r5, 1 - adds r0, r5 - lsls r7, r0, 1 -_0804AF34: - ldr r2, [r6] - adds r3, r4, r7 - adds r0, r2, 0 - adds r0, 0x34 - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804AF80 @ =gSprites - adds r0, r1 - adds r2, 0x69 - adds r2, r3 - ldrb r2, [r2] - movs r1, 0x4 - subs r1, r2 - lsls r1, 24 - lsrs r1, 24 - bl sub_809D824 - adds r4, 0x1 - ldr r0, [r6] - adds r0, 0x42 - adds r0, r5 - ldrb r0, [r0] - cmp r4, r0 - blt _0804AF34 -_0804AF6A: - mov r5, r8 - cmp r5, 0x1 - ble _0804AF18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AF7C: .4byte gUnknown_03004824 -_0804AF80: .4byte gSprites - thumb_func_end sub_804AF10 - - thumb_func_start sub_804AF84 -sub_804AF84: @ 804AF84 - push {r4,lr} - movs r2, 0 - ldr r4, _0804AFB0 @ =gSaveBlock1 + 0x3110 - ldr r3, _0804AFB4 @ =gUnknown_03004824 -_0804AF8C: - adds r1, r2, r4 - ldrb r0, [r1] - cmp r0, 0 - bne _0804AFA2 - ldr r0, [r3] - adds r0, 0xB5 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0804AFA2 - strb r0, [r1] -_0804AFA2: - adds r2, 0x1 - cmp r2, 0xA - ble _0804AF8C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804AFB0: .4byte gSaveBlock1 + 0x3110 -_0804AFB4: .4byte gUnknown_03004824 - thumb_func_end sub_804AF84 - - thumb_func_start sub_804AFB8 -sub_804AFB8: @ 804AFB8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r0 - mov r8, r1 - mov r10, r2 - lsls r3, 24 - lsrs r6, r3, 24 - adds r0, r6, 0x3 - lsrs r6, r0, 2 - ldr r7, _0804B054 @ =gTileBuffer - mov r0, sp - movs r5, 0 - strh r5, [r0] - lsls r4, r6, 6 - movs r0, 0x80 - lsls r0, 17 - orrs r4, r0 - mov r0, sp - adds r1, r7, 0 - adds r2, r4, 0 - bl CpuSet - mov r0, sp - adds r0, 0x2 - strh r5, [r0] - mov r2, r9 - ldrb r1, [r2, 0xD] - lsls r1, 5 - adds r1, r7 - adds r2, r4, 0 - bl CpuSet - mov r0, r9 - adds r1, r7, 0 - mov r2, r10 - bl sub_8004E3C - movs r4, 0 - cmp r4, r6 - bcs _0804B042 -_0804B010: - lsls r0, r4, 7 - adds r0, r7, r0 - lsls r1, r4, 8 - add r1, r8 - movs r2, 0x40 - bl CpuSet - lsls r0, r4, 2 - mov r1, r9 - ldrb r1, [r1, 0xD] - adds r0, r1 - lsls r0, 5 - adds r0, r7, r0 - lsls r1, r4, 3 - adds r1, 0x4 - lsls r1, 5 - add r1, r8 - movs r2, 0x40 - bl CpuSet - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _0804B010 -_0804B042: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B054: .4byte gTileBuffer - thumb_func_end sub_804AFB8 - - thumb_func_start sub_804B058 -sub_804B058: @ 804B058 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0804B074 - movs r0, 0x17 - bl PlaySE - movs r0, 0 - strh r0, [r4, 0x2E] -_0804B074: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804B058 - - thumb_func_start sub_804B07C -sub_804B07C: @ 804B07C - push {lr} - adds r2, r0, 0 - movs r0, 0x30 - ldrsh r1, [r2, r0] - cmp r1, 0 - bne _0804B0B2 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _0804B098 - strh r1, [r2, 0x2E] -_0804B098: - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - ldr r1, _0804B0B8 @ =gTradeGlow2PaletteAnimTable - adds r0, r1 - ldrb r1, [r2, 0x5] - lsrs r1, 4 - adds r1, 0x10 - lsls r1, 4 - adds r1, 0x4 - movs r2, 0x2 - bl LoadPalette -_0804B0B2: - pop {r0} - bx r0 - .align 2, 0 -_0804B0B8: .4byte gTradeGlow2PaletteAnimTable - thumb_func_end sub_804B07C - - thumb_func_start sub_804B0BC -sub_804B0BC: @ 804B0BC - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - adds r1, 0x1 - strh r1, [r2, 0x2E] - ldrh r0, [r2, 0x26] - adds r0, 0x1 - strh r0, [r2, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xA - bne _0804B0DA - adds r0, r2, 0 - bl DestroySprite -_0804B0DA: - pop {r0} - bx r0 - thumb_func_end sub_804B0BC - - thumb_func_start sub_804B0E0 -sub_804B0E0: @ 804B0E0 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - adds r1, 0x1 - strh r1, [r2, 0x2E] - ldrh r0, [r2, 0x26] - subs r0, 0x1 - strh r0, [r2, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xA - bne _0804B0FE - adds r0, r2, 0 - bl DestroySprite -_0804B0FE: - pop {r0} - bx r0 - thumb_func_end sub_804B0E0 - - thumb_func_start sub_804B104 -sub_804B104: @ 804B104 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bne _0804B120 - movs r0, 0xCC - bl PlaySE - movs r0, 0 - strh r0, [r4, 0x2E] -_0804B120: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804B104 - - thumb_func_start sub_804B128 -sub_804B128: @ 804B128 - push {r4,r5,lr} - sub sp, 0x20 - ldr r0, _0804B1B4 @ =gUnknown_03004828 - ldr r0, [r0] - mov r12, r0 - movs r0, 0x82 - lsls r0, 1 - add r0, r12 - ldrh r1, [r0] - lsls r1, 8 - movs r0, 0x83 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - lsls r2, 8 - movs r0, 0x86 - lsls r0, 1 - add r0, r12 - movs r4, 0 - ldrsh r3, [r0, r4] - movs r0, 0x87 - lsls r0, 1 - add r0, r12 - movs r5, 0 - ldrsh r0, [r0, r5] - str r0, [sp] - movs r4, 0x8C - lsls r4, 1 - add r4, r12 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x8] - movs r0, 0x8E - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - str r0, [sp, 0xC] - add r0, sp, 0x10 - bl DoBgAffineSet - ldr r1, _0804B1B8 @ =REG_BG2PA - add r0, sp, 0x10 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - add r0, sp, 0x10 - ldrh r0, [r0, 0x2] - strh r0, [r1] - adds r1, 0x2 - add r0, sp, 0x10 - ldrh r0, [r0, 0x4] - strh r0, [r1] - adds r1, 0x2 - add r0, sp, 0x10 - ldrh r0, [r0, 0x6] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [sp, 0x18] - str r0, [r1] - adds r1, 0x4 - ldr r0, [sp, 0x1C] - str r0, [r1] - add sp, 0x20 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804B1B4: .4byte gUnknown_03004828 -_0804B1B8: .4byte REG_BG2PA - thumb_func_end sub_804B128 - - thumb_func_start sub_804B1BC -sub_804B1BC: @ 804B1BC - push {lr} - ldr r1, _0804B1FC @ =REG_BG1VOFS - ldr r0, _0804B200 @ =gUnknown_03004828 - ldr r2, [r0] - movs r3, 0x88 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - movs r0, 0x80 - lsls r0, 19 - ldrh r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0804B208 - ldr r1, _0804B204 @ =REG_BG2VOFS - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - b _0804B20C - .align 2, 0 -_0804B1FC: .4byte REG_BG1VOFS -_0804B200: .4byte gUnknown_03004828 -_0804B204: .4byte REG_BG2VOFS -_0804B208: - bl sub_804B128 -_0804B20C: - pop {r0} - bx r0 - thumb_func_end sub_804B1BC - - thumb_func_start sub_804B210 -sub_804B210: @ 804B210 - push {lr} - bl sub_804B1BC - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804B210 - - thumb_func_start sub_804B228 -sub_804B228: @ 804B228 - push {r4,lr} - ldr r4, _0804B248 @ =gUnknown_03004828 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xB4 - movs r3, 0 - movs r0, 0 - strh r0, [r2] - adds r1, 0xB2 - strb r3, [r1] - ldr r0, [r4] - adds r0, 0xB3 - strb r3, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804B248: .4byte gUnknown_03004828 - thumb_func_end sub_804B228 - - thumb_func_start sub_804B24C -sub_804B24C: @ 804B24C - push {r4,r5,lr} - ldr r1, _0804B270 @ =gUnknown_03004828 - ldr r2, [r1] - adds r0, r2, 0 - adds r0, 0xB2 - adds r3, r2, 0 - adds r3, 0xB3 - ldrb r0, [r0] - adds r5, r1, 0 - ldrb r3, [r3] - cmp r0, r3 - bne _0804B274 - adds r1, r2, 0 - adds r1, 0xB4 - ldrh r0, [r1] - adds r0, 0x1 - b _0804B27A - .align 2, 0 -_0804B270: .4byte gUnknown_03004828 -_0804B274: - adds r1, r2, 0 - adds r1, 0xB4 - movs r0, 0 -_0804B27A: - strh r0, [r1] - adds r4, r5, 0 - ldr r3, [r4] - adds r2, r3, 0 - adds r2, 0xB4 - ldrh r0, [r2] - cmp r0, 0xB4 - bls _0804B29C - movs r1, 0 - movs r0, 0 - strh r0, [r2] - adds r0, r3, 0 - adds r0, 0xB3 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xB2 - strb r1, [r0] -_0804B29C: - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0xB2 - ldrb r1, [r1] - adds r0, 0xB3 - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_804B24C - - thumb_func_start sub_804B2B0 -sub_804B2B0: @ 804B2B0 - push {lr} - ldr r0, _0804B2C0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0804B2C4 - movs r0, 0 - b _0804B2CC - .align 2, 0 -_0804B2C0: .4byte gReceivedRemoteLinkPlayers -_0804B2C4: - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 -_0804B2CC: - pop {r1} - bx r1 - thumb_func_end sub_804B2B0 - - thumb_func_start sub_804B2D0 -sub_804B2D0: @ 804B2D0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - movs r4, 0 - mov r10, r4 - cmp r7, 0 - bne _0804B2FC - ldr r0, _0804B324 @ =gUnknown_020297D8 - ldrb r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0804B328 @ =gPlayerParty - adds r1, r0 - mov r10, r1 - movs r4, 0x1 -_0804B2FC: - cmp r7, 0x1 - bne _0804B31A - ldr r0, _0804B324 @ =gUnknown_020297D8 - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r1, r0 - ldr r0, _0804B32C @ =gEnemyParty - adds r1, r0 - mov r10, r1 - movs r4, 0x3 -_0804B31A: - cmp r5, 0 - beq _0804B330 - cmp r5, 0x1 - beq _0804B3A4 - b _0804B3FA - .align 2, 0 -_0804B324: .4byte gUnknown_020297D8 -_0804B328: .4byte gPlayerParty -_0804B32C: .4byte gEnemyParty -_0804B330: - mov r0, r10 - movs r1, 0x41 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r0, r10 - movs r1, 0 - bl GetMonData - mov r9, r0 - lsls r0, r5, 3 - ldr r1, _0804B390 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _0804B394 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - ldr r3, _0804B398 @ =0x02000000 - ldr r6, _0804B39C @ =gUnknown_081FAF4C - lsls r7, 1 - mov r8, r7 - mov r4, r8 - adds r4, 0x1 - lsls r4, 2 - adds r4, r6 - ldr r4, [r4] - str r4, [sp] - str r5, [sp, 0x4] - mov r4, r9 - str r4, [sp, 0x8] - bl HandleLoadSpecialPokePic - mov r0, r10 - bl sub_8040990 - bl LoadCompressedObjectPalette - ldr r0, _0804B3A0 @ =gUnknown_03004828 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - adds r0, r1 - add r0, r8 - strh r5, [r0] - b _0804B3FA - .align 2, 0 -_0804B390: .4byte gMonFrontPicTable -_0804B394: .4byte gMonFrontPicCoords -_0804B398: .4byte 0x02000000 -_0804B39C: .4byte gUnknown_081FAF4C -_0804B3A0: .4byte gUnknown_03004828 -_0804B3A4: - mov r0, r10 - bl sub_8040990 - ldrh r0, [r0, 0x4] - adds r1, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r0, _0804B40C @ =gUnknown_02024E8C - movs r1, 0x78 - movs r2, 0x3C - movs r3, 0x6 - bl CreateSprite - ldr r4, _0804B410 @ =gUnknown_03004828 - ldr r1, [r4] - adds r1, 0xB8 - adds r1, r7 - strb r0, [r1] - ldr r3, _0804B414 @ =gSprites - ldr r0, [r4] - adds r0, 0xB8 - adds r0, r7 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xB8 - adds r0, r7 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, 0x1C - adds r0, r3 - ldr r1, _0804B418 @ =SpriteCallbackDummy - str r1, [r0] -_0804B3FA: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B40C: .4byte gUnknown_02024E8C -_0804B410: .4byte gUnknown_03004828 -_0804B414: .4byte gSprites -_0804B418: .4byte SpriteCallbackDummy - thumb_func_end sub_804B2D0 - - thumb_func_start sub_804B41C -sub_804B41C: @ 804B41C - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, _0804B43C @ =gMain - ldr r2, _0804B440 @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xC - bls _0804B430 - b _0804B76E -_0804B430: - lsls r0, 2 - ldr r1, _0804B444 @ =_0804B448 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804B43C: .4byte gMain -_0804B440: .4byte 0x0000043c -_0804B444: .4byte _0804B448 - .align 2, 0 -_0804B448: - .4byte _0804B47C - .4byte _0804B5AC - .4byte _0804B5D4 - .4byte _0804B5FC - .4byte _0804B648 - .4byte _0804B678 - .4byte _0804B6A8 - .4byte _0804B6B2 - .4byte _0804B6CC - .4byte _0804B6E4 - .4byte _0804B71C - .4byte _0804B726 - .4byte _0804B75C -_0804B47C: - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetTasks - bl CloseLink - ldr r6, _0804B570 @ =gUnknown_03004828 - ldr r5, _0804B574 @ =0x0201f000 - str r5, [r6] - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _0804B578 @ =sub_804B210 - bl SetVBlankCallback - bl sub_804B228 - ldr r4, _0804B57C @ =gWindowConfig_81E6F84 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, [r6] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - movs r0, 0x2 - bl SetTextWindowBaseTileNum - ldr r1, [r6] - adds r1, 0x34 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - ldr r1, _0804B580 @ =gLinkType - ldr r4, _0804B584 @ =0x00001144 - adds r0, r4, 0 - strh r0, [r1] - ldr r1, _0804B588 @ =gMain - ldr r0, _0804B58C @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _0804B590 @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _0804B594 @ =gUnknown_08D00524 - ldr r1, _0804B598 @ =0xfffe1000 - adds r5, r1 - movs r2, 0x80 - lsls r2, 4 - adds r1, r5, 0 - bl CpuSet - ldr r1, _0804B59C @ =0x06002800 - ldr r0, _0804B5A0 @ =0x040000d4 - str r5, [r0] - str r1, [r0, 0x4] - ldr r1, _0804B5A4 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804B5A8 @ =gUnknown_08D004E0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xB6 - movs r2, 0 - strh r2, [r0] - adds r0, 0xE - strh r2, [r0] - movs r4, 0x8F - lsls r4, 1 - adds r1, r4 - movs r0, 0x1 - strb r0, [r1] - ldr r3, [r6] - movs r1, 0x82 - lsls r1, 1 - adds r0, r3, r1 - movs r1, 0x40 - strh r1, [r0] - subs r4, 0x18 - adds r0, r3, r4 - strh r1, [r0] - adds r1, 0xC8 - adds r0, r3, r1 - strh r2, [r0] - adds r4, 0x4 - adds r0, r3, r4 - strh r2, [r0] - movs r0, 0x86 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0x78 - strh r0, [r1] - adds r4, 0x4 - adds r1, r3, r4 - movs r0, 0x50 - strh r0, [r1] - adds r0, 0xC8 - adds r1, r3, r0 - subs r0, 0x18 - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r3, r1 - strh r2, [r0] - b _0804B76E - .align 2, 0 -_0804B570: .4byte gUnknown_03004828 -_0804B574: .4byte 0x0201f000 -_0804B578: .4byte sub_804B210 -_0804B57C: .4byte gWindowConfig_81E6F84 -_0804B580: .4byte gLinkType -_0804B584: .4byte 0x00001144 -_0804B588: .4byte gMain -_0804B58C: .4byte 0x0000043c -_0804B590: .4byte gUnknown_08D00000 -_0804B594: .4byte gUnknown_08D00524 -_0804B598: .4byte 0xfffe1000 -_0804B59C: .4byte 0x06002800 -_0804B5A0: .4byte 0x040000d4 -_0804B5A4: .4byte 0x80000280 -_0804B5A8: .4byte gUnknown_08D004E0 -_0804B5AC: - bl OpenLink - ldr r1, _0804B5C8 @ =gMain - ldr r2, _0804B5CC @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _0804B5D0 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC0 - str r2, [r0] - b _0804B76E - .align 2, 0 -_0804B5C8: .4byte gMain -_0804B5CC: .4byte 0x0000043c -_0804B5D0: .4byte gUnknown_03004828 -_0804B5D4: - ldr r0, _0804B5F4 @ =gUnknown_03004828 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bhi _0804B5E8 - b _0804B76E -_0804B5E8: - movs r0, 0 - str r0, [r1] - ldr r4, _0804B5F8 @ =0x0000043c - adds r1, r2, r4 - b _0804B74C - .align 2, 0 -_0804B5F4: .4byte gUnknown_03004828 -_0804B5F8: .4byte 0x0000043c -_0804B5FC: - bl IsLinkMaster - lsls r0, 24 - cmp r0, 0 - bne _0804B608 - b _0804B746 -_0804B608: - bl GetLinkPlayerCount_2 - adds r4, r0, 0 - bl sub_800820C - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bcs _0804B61C - b _0804B76E -_0804B61C: - ldr r0, _0804B63C @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - bhi _0804B62E - b _0804B76E -_0804B62E: - bl sub_8007F4C - ldr r1, _0804B640 @ =gMain - ldr r0, _0804B644 @ =0x0000043c - adds r1, r0 - b _0804B74C - .align 2, 0 -_0804B63C: .4byte gUnknown_03004828 -_0804B640: .4byte gMain -_0804B644: .4byte 0x0000043c -_0804B648: - bl sub_804B24C - ldr r0, _0804B66C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - beq _0804B656 - b _0804B76E -_0804B656: - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0804B664 - b _0804B76E -_0804B664: - ldr r1, _0804B670 @ =gMain - ldr r4, _0804B674 @ =0x0000043c - adds r1, r4 - b _0804B74C - .align 2, 0 -_0804B66C: .4byte gReceivedRemoteLinkPlayers -_0804B670: .4byte gMain -_0804B674: .4byte 0x0000043c -_0804B678: - ldr r2, _0804B69C @ =gUnknown_03004828 - ldr r0, [r2] - adds r0, 0x9C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x9D - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xBD - strb r1, [r0] - movs r0, 0 - bl sub_804B2D0 - ldr r1, _0804B6A0 @ =gMain - ldr r0, _0804B6A4 @ =0x0000043c - adds r1, r0 - b _0804B74C - .align 2, 0 -_0804B69C: .4byte gUnknown_03004828 -_0804B6A0: .4byte gMain -_0804B6A4: .4byte 0x0000043c -_0804B6A8: - movs r0, 0 - movs r1, 0x1 - bl sub_804B2D0 - b _0804B746 -_0804B6B2: - movs r0, 0x1 - movs r1, 0 - bl sub_804B2D0 - ldr r1, _0804B6C4 @ =gMain - ldr r4, _0804B6C8 @ =0x0000043c - adds r1, r4 - b _0804B74C - .align 2, 0 -_0804B6C4: .4byte gMain -_0804B6C8: .4byte 0x0000043c -_0804B6CC: - movs r0, 0x1 - movs r1, 0x1 - bl sub_804B2D0 - ldr r1, _0804B6DC @ =gMain - ldr r0, _0804B6E0 @ =0x0000043c - adds r1, r0 - b _0804B74C - .align 2, 0 -_0804B6DC: .4byte gMain -_0804B6E0: .4byte 0x0000043c -_0804B6E4: - bl sub_804C164 - ldr r0, _0804B704 @ =gUnknown_0821594C - bl LoadSpriteSheet - ldr r0, _0804B708 @ =gUnknown_08215954 - bl LoadSpritePalette - ldr r1, _0804B70C @ =REG_BG1CNT - ldr r2, _0804B710 @ =0x00000502 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0804B714 @ =gMain - ldr r4, _0804B718 @ =0x0000043c - adds r1, r4 - b _0804B74C - .align 2, 0 -_0804B704: .4byte gUnknown_0821594C -_0804B708: .4byte gUnknown_08215954 -_0804B70C: .4byte REG_BG1CNT -_0804B710: .4byte 0x00000502 -_0804B714: .4byte gMain -_0804B718: .4byte 0x0000043c -_0804B71C: - ldr r0, _0804B754 @ =0x0000043c - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804B726: - movs r0, 0x5 - bl sub_804BBE8 - movs r0, 0 - bl sub_804BBE8 - bl sub_804C1A8 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0804B746: - ldr r1, _0804B758 @ =gMain - ldr r2, _0804B754 @ =0x0000043c - adds r1, r2 -_0804B74C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804B76E - .align 2, 0 -_0804B754: .4byte 0x0000043c -_0804B758: .4byte gMain -_0804B75C: - ldr r0, _0804B788 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804B76E - ldr r0, _0804B78C @ =sub_804DB84 - bl SetMainCallback2 -_0804B76E: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804B788: .4byte gPaletteFade -_0804B78C: .4byte sub_804DB84 - thumb_func_end sub_804B41C - - thumb_func_start sub_804B790 -sub_804B790: @ 804B790 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x10 - ldr r1, _0804B7B4 @ =gMain - ldr r2, _0804B7B8 @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xC - bls _0804B7A8 - b _0804B9F2 -_0804B7A8: - lsls r0, 2 - ldr r1, _0804B7BC @ =_0804B7C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804B7B4: .4byte gMain -_0804B7B8: .4byte 0x0000043c -_0804B7BC: .4byte _0804B7C0 - .align 2, 0 -_0804B7C0: - .4byte _0804B7F4 - .4byte _0804B9F2 - .4byte _0804B9F2 - .4byte _0804B9F2 - .4byte _0804B9F2 - .4byte _0804B914 - .4byte _0804B92C - .4byte _0804B944 - .4byte _0804B94E - .4byte _0804B968 - .4byte _0804B9A0 - .4byte _0804B9AA - .4byte _0804B9E0 -_0804B7F4: - ldr r1, _0804B8E0 @ =gUnknown_020297D8 - ldr r0, _0804B8E4 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - movs r6, 0 - strb r0, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r4, _0804B8E8 @ =gLinkPlayers + 0x8 - ldr r1, _0804B8EC @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - ldr r0, _0804B8F0 @ =gEnemyParty - movs r1, 0x7 - add r2, sp, 0x4 - bl GetMonData - adds r4, 0x1C - adds r0, r4, 0 - add r1, sp, 0x4 - bl StringCopy - movs r0, 0x80 - lsls r0, 19 - movs r3, 0 - mov r8, r3 - strh r6, [r0] - bl ResetTasks - ldr r5, _0804B8F4 @ =gUnknown_03004828 - ldr r0, _0804B8F8 @ =0x0201f000 - str r0, [r5] - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _0804B8FC @ =sub_804B210 - bl SetVBlankCallback - bl sub_804B228 - ldr r4, _0804B900 @ =gWindowConfig_81E717C - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, [r5] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - movs r0, 0x2 - bl SetTextWindowBaseTileNum - ldr r1, [r5] - adds r1, 0x34 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - ldr r1, _0804B904 @ =gLinkType - ldr r2, _0804B908 @ =0x00001144 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, [r5] - movs r3, 0x8F - lsls r3, 1 - adds r0, r3 - mov r1, r8 - strb r1, [r0] - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0xB6 - strh r6, [r0] - adds r0, 0xE - strh r6, [r0] - subs r3, 0x1A - adds r0, r2, r3 - movs r1, 0x40 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - adds r1, 0xC8 - adds r0, r2, r1 - strh r6, [r0] - adds r3, 0x4 - adds r0, r2, r3 - strh r6, [r0] - movs r0, 0x86 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0x78 - strh r0, [r1] - adds r3, 0x4 - adds r1, r2, r3 - movs r0, 0x50 - strh r0, [r1] - adds r0, 0xC8 - adds r1, r2, r0 - subs r0, 0x18 - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r2, r1 - strh r6, [r0] - adds r0, r2, 0 - adds r0, 0xC0 - str r6, [r0] - ldr r0, _0804B90C @ =gMain - ldr r2, _0804B910 @ =0x0000043c - adds r0, r2 - movs r1, 0x5 - strb r1, [r0] - b _0804B9F2 - .align 2, 0 -_0804B8E0: .4byte gUnknown_020297D8 -_0804B8E4: .4byte gSpecialVar_0x8005 -_0804B8E8: .4byte gLinkPlayers + 0x8 -_0804B8EC: .4byte gSaveBlock2 -_0804B8F0: .4byte gEnemyParty -_0804B8F4: .4byte gUnknown_03004828 -_0804B8F8: .4byte 0x0201f000 -_0804B8FC: .4byte sub_804B210 -_0804B900: .4byte gWindowConfig_81E717C -_0804B904: .4byte gLinkType -_0804B908: .4byte 0x00001144 -_0804B90C: .4byte gMain -_0804B910: .4byte 0x0000043c -_0804B914: - movs r0, 0 - movs r1, 0 - bl sub_804B2D0 - ldr r1, _0804B924 @ =gMain - ldr r3, _0804B928 @ =0x0000043c - adds r1, r3 - b _0804B9D0 - .align 2, 0 -_0804B924: .4byte gMain -_0804B928: .4byte 0x0000043c -_0804B92C: - movs r0, 0 - movs r1, 0x1 - bl sub_804B2D0 - ldr r1, _0804B93C @ =gMain - ldr r0, _0804B940 @ =0x0000043c - adds r1, r0 - b _0804B9D0 - .align 2, 0 -_0804B93C: .4byte gMain -_0804B940: .4byte 0x0000043c -_0804B944: - movs r0, 0x1 - movs r1, 0 - bl sub_804B2D0 - b _0804B9CA -_0804B94E: - movs r0, 0x1 - movs r1, 0x1 - bl sub_804B2D0 - ldr r1, _0804B960 @ =gMain - ldr r3, _0804B964 @ =0x0000043c - adds r1, r3 - b _0804B9D0 - .align 2, 0 -_0804B960: .4byte gMain -_0804B964: .4byte 0x0000043c -_0804B968: - bl sub_804C164 - ldr r0, _0804B988 @ =gUnknown_0821594C - bl LoadSpriteSheet - ldr r0, _0804B98C @ =gUnknown_08215954 - bl LoadSpritePalette - ldr r1, _0804B990 @ =REG_BG1CNT - ldr r2, _0804B994 @ =0x00000502 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0804B998 @ =gMain - ldr r3, _0804B99C @ =0x0000043c - adds r1, r3 - b _0804B9D0 - .align 2, 0 -_0804B988: .4byte gUnknown_0821594C -_0804B98C: .4byte gUnknown_08215954 -_0804B990: .4byte REG_BG1CNT -_0804B994: .4byte 0x00000502 -_0804B998: .4byte gMain -_0804B99C: .4byte 0x0000043c -_0804B9A0: - ldr r0, _0804B9D8 @ =0x0000043c - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804B9AA: - movs r0, 0x5 - bl sub_804BBE8 - movs r0, 0 - bl sub_804BBE8 - bl sub_804C1A8 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0804B9CA: - ldr r1, _0804B9DC @ =gMain - ldr r2, _0804B9D8 @ =0x0000043c - adds r1, r2 -_0804B9D0: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804B9F2 - .align 2, 0 -_0804B9D8: .4byte 0x0000043c -_0804B9DC: .4byte gMain -_0804B9E0: - ldr r0, _0804BA10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804B9F2 - ldr r0, _0804BA14 @ =sub_804BBCC - bl SetMainCallback2 -_0804B9F2: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804BA10: .4byte gPaletteFade -_0804BA14: .4byte sub_804BBCC - thumb_func_end sub_804B790 - - thumb_func_start sub_804BA18 -sub_804BA18: @ 804BA18 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r1, r0 - ldr r0, _0804BA60 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804BA5A - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetNationalPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - bl GetNationalPokedexFlag -_0804BA5A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804BA60: .4byte gPlayerParty - thumb_func_end sub_804BA18 - - thumb_func_start sub_804BA64 -sub_804BA64: @ 804BA64 - push {lr} - bl GetMultiplayerId - lsls r0, 24 - ldr r2, _0804BA90 @ =gLinkPlayers - movs r1, 0x80 - lsls r1, 17 - eors r1, r0 - lsrs r1, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x2] - movs r0, 0x80 - lsls r0, 8 - cmp r1, r0 - bne _0804BA8C - bl EnableNationalPokedex -_0804BA8C: - pop {r0} - bx r0 - .align 2, 0 -_0804BA90: .4byte gLinkPlayers - thumb_func_end sub_804BA64 - - thumb_func_start sub_804BA94 -sub_804BA94: @ 804BA94 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r4, 24 - lsrs r4, 24 - movs r5, 0x64 - mov r1, r9 - muls r1, r5 - ldr r0, _0804BB60 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r1, r4, 0 - muls r1, r5 - ldr r0, _0804BB64 @ =gEnemyParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r6, 0xFF - beq _0804BAE8 - lsls r0, r6, 3 - adds r0, r6 - lsls r0, 2 - ldr r1, _0804BB68 @ =gSaveBlock1 + 0x2B4C - adds r0, r1 - bl ClearMailStruct -_0804BAE8: - ldr r4, _0804BB6C @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x38 - adds r1, r7, 0 - movs r2, 0x64 - bl memcpy - adds r0, r7, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - ldr r1, [r4] - adds r1, 0x38 - adds r0, r5, 0 - movs r2, 0x64 - bl memcpy - movs r1, 0x46 - mov r0, sp - strb r1, [r0] - adds r0, r7, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804BB28 - adds r0, r7, 0 - movs r1, 0x20 - mov r2, sp - bl SetMonData -_0804BB28: - mov r0, r8 - cmp r0, 0xFF - beq _0804BB3E - lsls r1, r0, 3 - add r1, r8 - lsls r1, 2 - ldr r0, _0804BB70 @ =gUnknown_02029700 - adds r1, r0 - adds r0, r7, 0 - bl GiveMailToMon2 -_0804BB3E: - mov r0, r9 - bl sub_804BA18 - ldr r0, _0804BB74 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _0804BB50 - bl sub_804BA64 -_0804BB50: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804BB60: .4byte gPlayerParty -_0804BB64: .4byte gEnemyParty -_0804BB68: .4byte gSaveBlock1 + 0x2B4C -_0804BB6C: .4byte gUnknown_03004828 -_0804BB70: .4byte gUnknown_02029700 -_0804BB74: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_804BA94 - - thumb_func_start sub_804BB78 -sub_804BB78: @ 804BB78 - push {r4,lr} - ldr r4, _0804BB8C @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0xBD - ldrb r0, [r0] - cmp r0, 0x1 - beq _0804BB90 - cmp r0, 0x2 - beq _0804BBB6 - b _0804BBC0 - .align 2, 0 -_0804BB8C: .4byte gUnknown_03004828 -_0804BB90: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804BBB6 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x9E - movs r2, 0x14 - bl SendBlock - ldr r1, [r4] - adds r1, 0xBD - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804BBB6: - ldr r0, _0804BBC8 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xBD - movs r1, 0 - strb r1, [r0] -_0804BBC0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804BBC8: .4byte gUnknown_03004828 - thumb_func_end sub_804BB78 - - thumb_func_start sub_804BBCC -sub_804BBCC: @ 804BBCC - push {lr} - bl sub_804C29C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_804BBCC - - thumb_func_start sub_804BBE8 -sub_804BBE8: @ 804BBE8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x7 - bls _0804BBF4 - b _0804C0CA -_0804BBF4: - lsls r0, 2 - ldr r1, _0804BC00 @ =_0804BC04 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804BC00: .4byte _0804BC04 - .align 2, 0 -_0804BC04: - .4byte _0804BC24 - .4byte _0804BCC4 - .4byte _0804BD5C - .4byte _0804BDA4 - .4byte _0804BE48 - .4byte _0804BEF8 - .4byte _0804BFA0 - .4byte _0804C060 -_0804BC24: - ldr r0, _0804BCA0 @ =gUnknown_0820C9F8 - movs r1, 0x10 - movs r2, 0xA0 - bl LoadPalette - ldr r3, _0804BCA4 @ =gUnknown_0820CA98 - ldr r4, _0804BCA8 @ =0x06004000 - movs r5, 0x98 - lsls r5, 5 - ldr r1, _0804BCAC @ =0x040000d4 - ldr r6, _0804BCB0 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804BC42: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804BC42 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804BCB4 @ =gUnknown_0820F798 - ldr r2, _0804BCB8 @ =0x06009000 - ldr r0, _0804BCAC @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804BCB0 @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804BCBC @ =gUnknown_03004828 - ldr r2, [r0] - movs r0, 0x8A - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - strh r0, [r1] - movs r3, 0x8B - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0xB4 - strh r0, [r1] - movs r1, 0x80 - lsls r1, 19 - movs r4, 0xBA - lsls r4, 5 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0xC - ldr r2, _0804BCC0 @ =0x00005206 - adds r0, r2, 0 - strh r0, [r1] - b _0804C0CA - .align 2, 0 -_0804BCA0: .4byte gUnknown_0820C9F8 -_0804BCA4: .4byte gUnknown_0820CA98 -_0804BCA8: .4byte 0x06004000 -_0804BCAC: .4byte 0x040000d4 -_0804BCB0: .4byte 0x80000800 -_0804BCB4: .4byte gUnknown_0820F798 -_0804BCB8: .4byte 0x06009000 -_0804BCBC: .4byte gUnknown_03004828 -_0804BCC0: .4byte 0x00005206 -_0804BCC4: - ldr r0, _0804BD3C @ =gUnknown_03004828 - ldr r2, [r0] - movs r3, 0x89 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0 - strh r0, [r1] - movs r4, 0x88 - lsls r4, 1 - adds r0, r2, r4 - movs r1, 0xAE - lsls r1, 1 - strh r1, [r0] - ldr r0, _0804BD40 @ =REG_BG1VOFS - strh r1, [r0] - ldr r1, _0804BD44 @ =REG_BG1CNT - ldr r2, _0804BD48 @ =0x00008502 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804BD4C @ =gUnknown_08210798 - ldr r2, _0804BD50 @ =0x06002800 - movs r3, 0x80 - lsls r3, 5 - adds r1, 0xCA - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 1 - movs r2, 0x80 - lsls r2, 24 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r4, [r1, 0x8] - ldr r4, _0804BD54 @ =gUnknown_0820CA98 - movs r5, 0xC0 - lsls r5, 19 - movs r6, 0x98 - lsls r6, 5 - adds r7, r0, 0 -_0804BD10: - str r4, [r1] - str r5, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r4, r3 - adds r5, r3 - subs r6, r3 - cmp r6, r3 - bhi _0804BD10 - str r4, [r1] - str r5, [r1, 0x4] - lsrs r0, r6, 1 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r1, 0x80 - lsls r1, 19 - ldr r3, _0804BD58 @ =0x00001241 - adds r0, r3, 0 - strh r0, [r1] - b _0804C0CA - .align 2, 0 -_0804BD3C: .4byte gUnknown_03004828 -_0804BD40: .4byte REG_BG1VOFS -_0804BD44: .4byte REG_BG1CNT -_0804BD48: .4byte 0x00008502 -_0804BD4C: .4byte gUnknown_08210798 -_0804BD50: .4byte 0x06002800 -_0804BD54: .4byte gUnknown_0820CA98 -_0804BD58: .4byte 0x00001241 -_0804BD5C: - ldr r0, _0804BD8C @ =gUnknown_03004828 - ldr r2, [r0] - movs r4, 0x88 - lsls r4, 1 - adds r0, r2, r4 - movs r1, 0 - strh r1, [r0] - movs r3, 0x89 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r1, 0x80 - lsls r1, 19 - ldr r4, _0804BD90 @ =0x00001241 - adds r0, r4, 0 - strh r0, [r1] - ldr r1, _0804BD94 @ =gUnknown_08211798 - ldr r2, _0804BD98 @ =0x06002800 - ldr r0, _0804BD9C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804BDA0 @ =0x80000400 - b _0804C0C6 - .align 2, 0 -_0804BD8C: .4byte gUnknown_03004828 -_0804BD90: .4byte 0x00001241 -_0804BD94: .4byte gUnknown_08211798 -_0804BD98: .4byte 0x06002800 -_0804BD9C: .4byte 0x040000d4 -_0804BDA0: .4byte 0x80000400 -_0804BDA4: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x92 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804BE24 @ =gUnknown_03004828 - ldr r3, [r0] - movs r4, 0x82 - lsls r4, 1 - adds r1, r3, r4 - movs r2, 0 - movs r0, 0x40 - strh r0, [r1] - adds r4, 0x2 - adds r1, r3, r4 - strh r0, [r1] - adds r0, 0xCC - adds r1, r3, r0 - movs r0, 0x78 - strh r0, [r1] - adds r4, 0x8 - adds r1, r3, r4 - ldr r0, _0804BE28 @ =0x0000ffba - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r3, r1 - strh r2, [r0] - ldr r3, _0804BE2C @ =gUnknown_0820DD98 - ldr r4, _0804BE30 @ =0x06004000 - movs r5, 0xD0 - lsls r5, 5 - ldr r2, _0804BE34 @ =gUnknown_08211F98 - mov r12, r2 - ldr r1, _0804BE38 @ =0x040000d4 - ldr r6, _0804BE3C @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804BDF6: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804BDF6 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804BE40 @ =0x06009000 - ldr r0, _0804BE38 @ =0x040000d4 - mov r3, r12 - str r3, [r0] - str r1, [r0, 0x4] - ldr r1, _0804BE44 @ =0x80000080 - b _0804C0C6 - .align 2, 0 -_0804BE24: .4byte gUnknown_03004828 -_0804BE28: .4byte 0x0000ffba -_0804BE2C: .4byte gUnknown_0820DD98 -_0804BE30: .4byte 0x06004000 -_0804BE34: .4byte gUnknown_08211F98 -_0804BE38: .4byte 0x040000d4 -_0804BE3C: .4byte 0x80000800 -_0804BE40: .4byte 0x06009000 -_0804BE44: .4byte 0x80000080 -_0804BE48: - movs r1, 0x80 - lsls r1, 19 - ldr r4, _0804BED0 @ =0x00001441 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0xC - ldr r2, _0804BED4 @ =0x00001287 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804BED8 @ =gUnknown_03004828 - ldr r3, [r0] - movs r4, 0x82 - lsls r4, 1 - adds r1, r3, r4 - movs r2, 0 - movs r0, 0x40 - strh r0, [r1] - adds r0, 0xC6 - adds r1, r3, r0 - movs r0, 0x5C - strh r0, [r1] - adds r4, 0x14 - adds r1, r3, r4 - movs r0, 0x20 - strh r0, [r1] - adds r0, 0xFA - adds r1, r3, r0 - movs r0, 0x80 - lsls r0, 3 - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r3, r1 - strh r2, [r0] - ldr r3, _0804BEDC @ =gUnknown_08213738 - ldr r4, _0804BEE0 @ =0x06004000 - movs r5, 0x81 - lsls r5, 6 - ldr r2, _0804BEE4 @ =gUnknown_08215778 - mov r12, r2 - ldr r1, _0804BEE8 @ =0x040000d4 - ldr r6, _0804BEEC @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804BEA4: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804BEA4 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804BEF0 @ =0x06009000 - ldr r0, _0804BEE8 @ =0x040000d4 - mov r3, r12 - str r3, [r0] - str r1, [r0, 0x4] - ldr r1, _0804BEF4 @ =0x80000080 - b _0804C0C6 - .align 2, 0 -_0804BED0: .4byte 0x00001441 -_0804BED4: .4byte 0x00001287 -_0804BED8: .4byte gUnknown_03004828 -_0804BEDC: .4byte gUnknown_08213738 -_0804BEE0: .4byte 0x06004000 -_0804BEE4: .4byte gUnknown_08215778 -_0804BEE8: .4byte 0x040000d4 -_0804BEEC: .4byte 0x80000800 -_0804BEF0: .4byte 0x06009000 -_0804BEF4: .4byte 0x80000080 -_0804BEF8: - ldr r0, _0804BF78 @ =gUnknown_03004828 - ldr r2, [r0] - movs r4, 0x88 - lsls r4, 1 - adds r0, r2, r4 - movs r1, 0 - strh r1, [r0] - movs r3, 0x89 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - ldr r1, _0804BF7C @ =REG_BG1CNT - ldr r4, _0804BF80 @ =0x00000502 - adds r0, r4, 0 - strh r0, [r1] - ldr r0, _0804BF84 @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _0804BF88 @ =gUnknown_08D00524 - ldr r4, _0804BF8C @ =0x02000000 - movs r2, 0x80 - lsls r2, 4 - adds r1, r4, 0 - bl CpuSet - ldr r0, _0804BF90 @ =gUnknown_08D004E0 - movs r1, 0x70 - movs r2, 0x20 - bl LoadCompressedPalette - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - movs r0, 0xE0 - lsls r0, 7 - adds r2, r0, 0 - movs r1, 0xA0 - lsls r1, 2 -_0804BF4C: - ldrh r0, [r4] - orrs r0, r2 - strh r0, [r4] - adds r4, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _0804BF4C - ldr r1, _0804BF8C @ =0x02000000 - ldr r2, _0804BF94 @ =0x06002800 - ldr r0, _0804BF98 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804BF9C @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r0, 0x2 - movs r1, 0xF - movs r2, 0x1B - movs r3, 0x12 - bl MenuZeroFillWindowRect - b _0804C0CA - .align 2, 0 -_0804BF78: .4byte gUnknown_03004828 -_0804BF7C: .4byte REG_BG1CNT -_0804BF80: .4byte 0x00000502 -_0804BF84: .4byte gUnknown_08D00000 -_0804BF88: .4byte gUnknown_08D00524 -_0804BF8C: .4byte 0x02000000 -_0804BF90: .4byte gUnknown_08D004E0 -_0804BF94: .4byte 0x06002800 -_0804BF98: .4byte 0x040000d4 -_0804BF9C: .4byte 0x80000280 -_0804BFA0: - movs r1, 0x80 - lsls r1, 19 - ldr r2, _0804C038 @ =0x00001441 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0xC - ldr r3, _0804C03C @ =0x00001287 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _0804C040 @ =gUnknown_03004828 - ldr r3, [r0] - movs r4, 0x82 - lsls r4, 1 - adds r1, r3, r4 - movs r2, 0 - movs r0, 0x40 - strh r0, [r1] - adds r0, 0xC6 - adds r1, r3, r0 - movs r0, 0x5C - strh r0, [r1] - adds r4, 0x14 - adds r1, r3, r4 - adds r0, 0xA4 - strh r0, [r1] - adds r0, 0x1A - adds r1, r3, r0 - movs r0, 0x80 - strh r0, [r1] - subs r4, 0xC - adds r1, r3, r4 - movs r0, 0x78 - strh r0, [r1] - adds r0, 0x96 - adds r1, r3, r0 - movs r0, 0x50 - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r3, r1 - strh r2, [r0] - ldr r3, _0804C044 @ =gUnknown_08213738 - ldr r4, _0804C048 @ =0x06004000 - movs r5, 0x81 - lsls r5, 6 - ldr r2, _0804C04C @ =gUnknown_08215778 - mov r12, r2 - ldr r1, _0804C050 @ =0x040000d4 - ldr r6, _0804C054 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804C00A: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804C00A - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804C058 @ =0x06009000 - ldr r0, _0804C050 @ =0x040000d4 - mov r3, r12 - str r3, [r0] - str r1, [r0, 0x4] - ldr r1, _0804C05C @ =0x80000080 - b _0804C0C6 - .align 2, 0 -_0804C038: .4byte 0x00001441 -_0804C03C: .4byte 0x00001287 -_0804C040: .4byte gUnknown_03004828 -_0804C044: .4byte gUnknown_08213738 -_0804C048: .4byte 0x06004000 -_0804C04C: .4byte gUnknown_08215778 -_0804C050: .4byte 0x040000d4 -_0804C054: .4byte 0x80000800 -_0804C058: .4byte 0x06009000 -_0804C05C: .4byte 0x80000080 -_0804C060: - ldr r0, _0804C0D0 @ =gUnknown_03004828 - ldr r2, [r0] - movs r4, 0x8A - lsls r4, 1 - adds r0, r2, r4 - movs r1, 0 - strh r1, [r0] - movs r3, 0x8B - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - ldr r1, _0804C0D4 @ =REG_BG2CNT - ldr r4, _0804C0D8 @ =0x00005206 - adds r0, r4, 0 - strh r0, [r1] - ldr r0, _0804C0DC @ =gUnknown_0820C9F8 - movs r1, 0x10 - movs r2, 0xA0 - bl LoadPalette - ldr r3, _0804C0E0 @ =gUnknown_0820CA98 - ldr r4, _0804C0E4 @ =0x06004000 - movs r5, 0x98 - lsls r5, 5 - ldr r1, _0804C0E8 @ =0x040000d4 - ldr r6, _0804C0EC @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804C09C: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804C09C - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804C0F0 @ =gUnknown_0820F798 - ldr r2, _0804C0F4 @ =0x06009000 - ldr r0, _0804C0E8 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804C0EC @ =0x80000800 -_0804C0C6: - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] -_0804C0CA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804C0D0: .4byte gUnknown_03004828 -_0804C0D4: .4byte REG_BG2CNT -_0804C0D8: .4byte 0x00005206 -_0804C0DC: .4byte gUnknown_0820C9F8 -_0804C0E0: .4byte gUnknown_0820CA98 -_0804C0E4: .4byte 0x06004000 -_0804C0E8: .4byte 0x040000d4 -_0804C0EC: .4byte 0x80000800 -_0804C0F0: .4byte gUnknown_0820F798 -_0804C0F4: .4byte 0x06009000 - thumb_func_end sub_804BBE8 - - thumb_func_start sub_804C0F8 -sub_804C0F8: @ 804C0F8 - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _0804C130 - ldr r0, _0804C128 @ =gUnknown_03004828 - ldr r2, [r0] - movs r1, 0x88 - lsls r1, 1 - adds r0, r2, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _0804C12C @ =0x00000109 - cmp r1, r0 - bgt _0804C15A - adds r0, 0x5 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r3, 0x8E - lsls r3, 1 - adds r1, r2, r3 - b _0804C154 - .align 2, 0 -_0804C128: .4byte gUnknown_03004828 -_0804C12C: .4byte 0x00000109 -_0804C130: - ldr r0, _0804C160 @ =gUnknown_03004828 - ldr r0, [r0] - mov r12, r0 - movs r2, 0x87 - lsls r2, 1 - add r2, r12 - ldrh r3, [r2] - movs r0, 0 - ldrsh r1, [r2, r0] - movs r0, 0x40 - negs r0, r0 - cmp r1, r0 - ble _0804C15A - subs r0, r3, 0x1 - strh r0, [r2] - movs r1, 0x8E - lsls r1, 1 - add r1, r12 -_0804C154: - ldrh r0, [r1] - adds r0, 0x40 - strh r0, [r1] -_0804C15A: - pop {r0} - bx r0 - .align 2, 0 -_0804C160: .4byte gUnknown_03004828 - thumb_func_end sub_804C0F8 - - thumb_func_start sub_804C164 -sub_804C164: @ 804C164 - push {lr} - ldr r0, _0804C190 @ =gUnknown_082159A4 - bl LoadSpriteSheet - ldr r0, _0804C194 @ =gUnknown_082159F4 - bl LoadSpriteSheet - ldr r0, _0804C198 @ =gUnknown_08215A28 - bl LoadSpriteSheet - ldr r0, _0804C19C @ =gUnknown_08215A78 - bl LoadSpriteSheet - ldr r0, _0804C1A0 @ =gUnknown_082159AC - bl LoadSpritePalette - ldr r0, _0804C1A4 @ =gUnknown_082159B4 - bl LoadSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_0804C190: .4byte gUnknown_082159A4 -_0804C194: .4byte gUnknown_082159F4 -_0804C198: .4byte gUnknown_08215A28 -_0804C19C: .4byte gUnknown_08215A78 -_0804C1A0: .4byte gUnknown_082159AC -_0804C1A4: .4byte gUnknown_082159B4 - thumb_func_end sub_804C164 - - thumb_func_start sub_804C1A8 -sub_804C1A8: @ 804C1A8 - push {r4,r5,lr} - sub sp, 0x14 - ldr r0, _0804C21C @ =gUnknown_03004828 - ldr r0, [r0] - movs r1, 0x8F - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0804C23C - bl GetMultiplayerId - lsls r0, 24 - ldr r3, _0804C220 @ =gStringVar1 - movs r2, 0x80 - lsls r2, 17 - eors r2, r0 - lsrs r2, 24 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _0804C224 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - ldr r5, _0804C228 @ =gUnknown_020297D8 - ldrb r0, [r5, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x64 - muls r0, r4 - ldr r1, _0804C22C @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _0804C230 @ =gStringVar3 - mov r1, sp - bl StringCopy10 - ldrb r0, [r5] - muls r0, r4 - ldr r1, _0804C234 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _0804C238 @ =gStringVar2 - mov r1, sp - bl StringCopy10 - b _0804C278 - .align 2, 0 -_0804C21C: .4byte gUnknown_03004828 -_0804C220: .4byte gStringVar1 -_0804C224: .4byte gLinkPlayers + 0x8 -_0804C228: .4byte gUnknown_020297D8 -_0804C22C: .4byte gEnemyParty -_0804C230: .4byte gStringVar3 -_0804C234: .4byte gPlayerParty -_0804C238: .4byte gStringVar2 -_0804C23C: - ldr r0, _0804C280 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _0804C284 @ =gIngameTrades - adds r4, r0 - ldr r0, _0804C288 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x2B - bl StringCopy - ldr r0, _0804C28C @ =gStringVar3 - adds r1, r4, 0 - bl StringCopy10 - ldr r0, _0804C290 @ =gSpecialVar_0x8005 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804C294 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _0804C298 @ =gStringVar2 - mov r1, sp - bl StringCopy10 -_0804C278: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804C280: .4byte gSpecialVar_0x8004 -_0804C284: .4byte gIngameTrades -_0804C288: .4byte gStringVar1 -_0804C28C: .4byte gStringVar3 -_0804C290: .4byte gSpecialVar_0x8005 -_0804C294: .4byte gPlayerParty -_0804C298: .4byte gStringVar2 - thumb_func_end sub_804C1A8 - - thumb_func_start sub_804C29C -sub_804C29C: @ 804C29C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r1, _0804C2C0 @ =gUnknown_03004828 - ldr r0, [r1] - adds r0, 0xC4 - ldrh r0, [r0] - adds r6, r1, 0 - cmp r0, 0xC8 - bls _0804C2B6 - bl _0804D570 -_0804C2B6: - lsls r0, 2 - ldr r1, _0804C2C4 @ =_0804C2C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804C2C0: .4byte gUnknown_03004828 -_0804C2C4: .4byte _0804C2C8 - .align 2, 0 -_0804C2C8: - .4byte _0804C5EC - .4byte _0804C66C - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804C6C8 - .4byte _0804C704 - .4byte _0804C79C - .4byte _0804D570 - .4byte _0804C824 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804C848 - .4byte _0804C868 - .4byte _0804C87A - .4byte _0804C89C - .4byte _0804C8F4 - .4byte _0804C92C - .4byte _0804C978 - .4byte _0804C9C8 - .4byte _0804CA1C - .4byte _0804CAB4 - .4byte _0804CAD8 - .4byte _0804CB24 - .4byte _0804CB70 - .4byte _0804CBCC - .4byte _0804CC2C - .4byte _0804CC40 - .4byte _0804CC54 - .4byte _0804CC68 - .4byte _0804CD94 - .4byte _0804CE64 - .4byte _0804CEEC - .4byte _0804CF68 - .4byte _0804CF78 - .4byte _0804CFA0 - .4byte _0804CFFC - .4byte _0804D028 - .4byte _0804D054 - .4byte _0804D06A - .4byte _0804D0D4 - .4byte _0804D570 - .4byte _0804D0FC - .4byte _0804D13C - .4byte _0804D182 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D1A4 - .4byte _0804D1C4 - .4byte _0804D1D2 - .4byte _0804D1F4 - .4byte _0804D2A8 - .4byte _0804D2E4 - .4byte _0804D314 - .4byte _0804D3C4 - .4byte _0804D41C - .4byte _0804D48C - .4byte _0804D4A0 - .4byte _0804D4A6 - .4byte _0804D4CC - .4byte _0804D528 - .4byte _0804D54C - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804CA54 -_0804C5EC: - ldr r3, _0804C65C @ =gSprites - ldr r0, [r6] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r4, [r6] - adds r2, r4, 0 - adds r2, 0xB8 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _0804C660 @ =0x0000ff4c - strh r1, [r0, 0x24] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldr r2, _0804C664 @ =gMonFrontPicCoords - movs r3, 0x90 - lsls r3, 1 - adds r0, r4, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - adds r1, r4, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - bl GetCurrentMapMusic - ldr r1, [r6] - movs r7, 0x92 - lsls r7, 1 - adds r1, r7 - strh r0, [r1] - ldr r0, _0804C668 @ =0x00000179 - bl PlayBGM - bl _0804D570 - .align 2, 0 -_0804C65C: .4byte gSprites -_0804C660: .4byte 0x0000ff4c -_0804C664: .4byte gMonFrontPicCoords -_0804C668: .4byte 0x00000179 -_0804C66C: - ldr r4, [r6] - movs r0, 0x8B - lsls r0, 1 - adds r5, r4, r0 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - ble _0804C6A0 - ldr r2, _0804C69C @ =gSprites - adds r0, r4, 0 - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x3 - strh r1, [r0, 0x24] - ldrh r0, [r5] - subs r0, 0x3 - strh r0, [r5] - bl _0804D570 - .align 2, 0 -_0804C69C: .4byte gSprites -_0804C6A0: - ldr r2, _0804C6C4 @ =gSprites - adds r0, r4, 0 - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - strh r1, [r5] - adds r1, r4, 0 - adds r1, 0xC4 - movs r0, 0xA - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804C6C4: .4byte gSprites -_0804C6C8: - ldr r5, _0804C6F8 @ =gStringVar4 - ldr r1, _0804C6FC @ =gTradeText_WillBeSent - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r4, _0804C700 @ =gUnknown_03004828 - ldr r1, [r4] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r5, 0 - movs r3, 0x2 - bl sub_8003460 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xC4 - movs r3, 0 - movs r0, 0xB - bl _0804D40C - .align 2, 0 -_0804C6F8: .4byte gStringVar4 -_0804C6FC: .4byte gTradeText_WillBeSent -_0804C700: .4byte gUnknown_03004828 -_0804C704: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x50 - beq _0804C718 - bl _0804D570 -_0804C718: - adds r0, r2, 0 - adds r0, 0xB8 - ldrb r0, [r0] - ldr r2, _0804C78C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _0804C790 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x20 - bl sub_8047580 - ldr r1, [r6] - movs r2, 0x81 - lsls r2, 1 - adds r1, r2 - strb r0, [r1] - ldr r0, [r6] - adds r2, r0, 0 - adds r2, 0xC4 - ldrh r1, [r2] - adds r1, 0x1 - strh r1, [r2] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804C794 @ =gStringVar4 - ldr r1, _0804C798 @ =gTradeText_ByeBye - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 - bl _0804D570 - .align 2, 0 -_0804C78C: .4byte gSprites -_0804C790: .4byte 0x000fffff -_0804C794: .4byte gStringVar4 -_0804C798: .4byte gTradeText_ByeBye -_0804C79C: - ldr r7, _0804C810 @ =gSprites - ldr r2, [r6] - movs r5, 0x81 - lsls r5, 1 - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r7, 0 - adds r4, 0x1C - adds r0, r4 - ldr r1, [r0] - ldr r0, _0804C814 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0804C7C0 - bl _0804D570 -_0804C7C0: - adds r0, r2, 0x4 - bl sub_80035AC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0804C7D2 - bl _0804D570 -_0804C7D2: - ldr r0, _0804C818 @ =gSpriteTemplate_821595C - movs r1, 0x78 - movs r2, 0x20 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - ldr r2, _0804C81C @ =0x00000103 - adds r1, r2 - strb r0, [r1] - ldr r3, [r6] - adds r2, r3, r2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0804C820 @ =sub_804D738 - str r1, [r0] - adds r3, r5 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - bl DestroySprite - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C810: .4byte gSprites -_0804C814: .4byte SpriteCallbackDummy -_0804C818: .4byte gSpriteTemplate_821595C -_0804C81C: .4byte 0x00000103 -_0804C820: .4byte sub_804D738 -_0804C824: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804C844 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x14 - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804C844: .4byte gUnknown_03004828 -_0804C848: - ldr r0, _0804C864 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804C858 - bl _0804D570 -_0804C858: - movs r0, 0x4 - bl sub_804BBE8 - bl _0804D538 - .align 2, 0 -_0804C864: .4byte gPaletteFade -_0804C868: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl _0804D534 -_0804C87A: - ldr r0, _0804C898 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804C88A - bl _0804D570 -_0804C88A: - ldr r0, [r6] - adds r0, 0xC4 - movs r1, 0x17 - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804C898: .4byte gPaletteFade -_0804C89C: - ldr r4, _0804C8B8 @ =gUnknown_03004828 - ldr r0, [r4] - movs r3, 0x8D - lsls r3, 1 - adds r2, r0, r3 - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bls _0804C8BC - adds r0, r1, 0 - subs r0, 0x34 - strh r0, [r2] - b _0804C8E0 - .align 2, 0 -_0804C8B8: .4byte gUnknown_03004828 -_0804C8BC: - movs r0, 0x1 - bl sub_804BBE8 - ldr r3, [r4] - movs r7, 0x8D - lsls r7, 1 - adds r1, r3, r7 - movs r2, 0 - movs r0, 0x80 - strh r0, [r1] - adds r1, r3, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0xC0 - str r2, [r0] -_0804C8E0: - ldr r0, _0804C8F0 @ =gUnknown_03004828 - ldr r4, [r0] - movs r1, 0x8D - lsls r1, 1 - adds r0, r4, r1 - bl _0804D16E - .align 2, 0 -_0804C8F0: .4byte gUnknown_03004828 -_0804C8F4: - ldr r1, [r6] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bhi _0804C906 - bl _0804D570 -_0804C906: - movs r0, 0x3 - bl sub_804BBE8 - bl sub_804B128 - ldr r0, _0804C928 @ =gSpriteTemplate_8215A80 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBB - strb r0, [r1] - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C928: .4byte gSpriteTemplate_8215A80 -_0804C92C: - ldr r2, _0804C96C @ =gSprites - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _0804C94C - bl _0804D570 -_0804C94C: - adds r0, r1, 0 - bl DestroySprite - ldr r1, _0804C970 @ =REG_BLDCNT - movs r3, 0xC8 - lsls r3, 3 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r7, _0804C974 @ =0x0000040c - adds r0, r7, 0 - strh r0, [r1] - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C96C: .4byte gSprites -_0804C970: .4byte REG_BLDCNT -_0804C974: .4byte 0x0000040c -_0804C978: - ldr r2, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r0, r2, r3 - ldrh r1, [r0] - subs r1, 0x1 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x9E - lsls r0, 17 - cmp r1, r0 - bne _0804C99A - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804C99A: - ldr r0, [r6] - adds r0, r3 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - beq _0804C9AE - bl _0804D570 -_0804C9AE: - ldr r0, _0804C9C4 @ =gSpriteTemplate_8215A30 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBC - strb r0, [r1] - bl _0804D570 - .align 2, 0 -_0804C9C4: .4byte gSpriteTemplate_8215A30 -_0804C9C8: - ldr r0, _0804CA0C @ =gSpriteTemplate_82159BC - movs r1, 0x80 - movs r2, 0x50 - movs r3, 0x3 - bl CreateSprite - ldr r4, _0804CA10 @ =gUnknown_03004828 - ldr r1, [r4] - adds r1, 0xBA - strb r0, [r1] - ldr r0, _0804CA14 @ =gSpriteTemplate_82159FC - movs r1, 0x80 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r4] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CA18 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, [r4] - bl _0804D53C - .align 2, 0 -_0804CA0C: .4byte gSpriteTemplate_82159BC -_0804CA10: .4byte gUnknown_03004828 -_0804CA14: .4byte gSpriteTemplate_82159FC -_0804CA18: .4byte gSprites -_0804CA1C: - ldr r2, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r1, r2, r3 - ldrh r0, [r1] - subs r0, 0x2 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA6 - bne _0804CA3A - adds r1, r2, 0 - adds r1, 0xC4 - movs r0, 0xC8 - strh r0, [r1] -_0804CA3A: - movs r0, 0 - bl sub_804C0F8 - movs r1, 0x80 - lsls r1, 19 - ldr r7, _0804CA50 @ =0x00001641 - adds r0, r7, 0 - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804CA50: .4byte 0x00001641 -_0804CA54: - ldr r4, _0804CAB0 @ =gSprites - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - movs r0, 0 - bl sub_804C0F8 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r3, 0x22 - ldrsh r1, [r0, r3] - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _0804CAA4 - bl _0804D570 -_0804CAA4: - adds r1, r2, 0 - adds r1, 0xC4 - movs r0, 0x1D - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804CAB0: .4byte gSprites -_0804CAB4: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804CAD4 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x1E - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804CAD4: .4byte gUnknown_03004828 -_0804CAD8: - ldr r0, _0804CB1C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CAE8 - bl _0804D570 -_0804CAE8: - ldr r0, [r6] - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804CB20 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - movs r0, 0x2 - bl sub_804BBE8 - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804CB1C: .4byte gPaletteFade -_0804CB20: .4byte gSprites -_0804CB24: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r5, _0804CB68 @ =gSpriteTemplate_82159FC - adds r0, r5, 0 - movs r1, 0x6F - movs r2, 0xAA - movs r3, 0 - bl CreateSprite - ldr r4, _0804CB6C @ =gUnknown_03004828 - ldr r1, [r4] - adds r1, 0xBA - strb r0, [r1] - movs r2, 0xA - negs r2, r2 - adds r0, r5, 0 - movs r1, 0x81 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0xBB - strb r0, [r1] - ldr r1, [r4] - bl _0804D53C - .align 2, 0 -_0804CB68: .4byte gSpriteTemplate_82159FC -_0804CB6C: .4byte gUnknown_03004828 -_0804CB70: - ldr r0, _0804CBC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804CB8E - movs r0, 0x2E - bl PlaySE - ldr r0, _0804CBC4 @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804CB8E: - ldr r3, _0804CBC8 @ =gSprites - ldr r0, _0804CBC4 @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - bl _0804D570 - .align 2, 0 -_0804CBC0: .4byte gPaletteFade -_0804CBC4: .4byte gUnknown_03004828 -_0804CBC8: .4byte gSprites -_0804CBCC: - ldr r5, _0804CC28 @ =gSprites - ldr r4, [r6] - adds r2, r4, 0 - adds r2, 0xBA - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r6, r4, 0 - adds r6, 0xBB - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, r0, r5 - movs r7, 0x26 - ldrsh r1, [r3, r7] - movs r0, 0x5A - negs r0, r0 - cmp r1, r0 - ble _0804CC12 - bl _0804D570 -_0804CC12: - movs r2, 0x1 - strh r2, [r3, 0x30] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x30] - adds r1, r4, 0 - bl _0804D53C - .align 2, 0 -_0804CC28: .4byte gSprites -_0804CC2C: - ldr r2, _0804CC3C @ =0x0000ffff - movs r0, 0x1 - movs r1, 0x10 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC3C: .4byte 0x0000ffff -_0804CC40: - ldr r2, _0804CC50 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC50: .4byte 0x0000ffff -_0804CC54: - ldr r2, _0804CC64 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0x10 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC64: .4byte 0x0000ffff -_0804CC68: - ldr r5, _0804CCD8 @ =gUnknown_03004828 - ldr r0, [r5] - movs r1, 0x90 - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl sub_8040A3C - lsls r0, 24 - cmp r0, 0 - bne _0804CCE4 - ldr r4, _0804CCDC @ =gSprites - ldr r2, [r5] - adds r2, 0xB8 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x10 - adds r0, r1 - ldr r1, _0804CCE0 @ =gSpriteAffineAnimTable_8215AC0 - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - movs r2, 0x3 - orrs r1, r2 - strb r1, [r0, 0x1] - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - b _0804CCFA - .align 2, 0 -_0804CCD8: .4byte gUnknown_03004828 -_0804CCDC: .4byte gSprites -_0804CCE0: .4byte gSpriteAffineAnimTable_8215AC0 -_0804CCE4: - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CD88 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAffineAnim -_0804CCFA: - ldr r5, _0804CD8C @ =gUnknown_03004828 - ldr r0, [r5] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804CD88 @ =gSprites - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r2, [r5] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x3C - strh r1, [r0, 0x20] - adds r2, 0xB9 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xB4 - strh r1, [r0, 0x20] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xC0 - strh r1, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0804CD90 @ =0x0000ffe0 - strh r1, [r0, 0x22] - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - ldr r1, [r5] - bl _0804D53C - .align 2, 0 -_0804CD88: .4byte gSprites -_0804CD8C: .4byte gUnknown_03004828 -_0804CD90: .4byte 0x0000ffe0 -_0804CD94: - ldr r4, _0804CE5C @ =gSprites - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - movs r5, 0 - strh r1, [r0, 0x26] - adds r2, 0xB9 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x26] - adds r0, 0xA3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _0804CDDC - movs r0, 0x2D - bl PlaySE -_0804CDDC: - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r7, 0x26 - ldrsh r1, [r0, r7] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - blt _0804CDFA - b _0804D570 -_0804CDFA: - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r0, r2, 0 - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - ldr r2, _0804CE60 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0 - bl BlendPalettes - b _0804D570 - .align 2, 0 -_0804CE5C: .4byte gSprites -_0804CE60: .4byte 0x0000ffff -_0804CE64: - ldr r4, _0804CEE8 @ =gSprites - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xBA - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r2, 0x26 - ldrsh r1, [r0, r2] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - ble _0804CEA6 - b _0804D570 -_0804CEA6: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0xBA - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _0804D570 - .align 2, 0 -_0804CEE8: .4byte gSprites -_0804CEEC: - ldr r0, _0804CF58 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CEFA - b _0804D570 -_0804CEFA: - ldr r1, [r6] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 - bl sub_804BBE8 - ldr r0, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r0, r3 - movs r1, 0xA6 - strh r1, [r0] - ldr r0, _0804CF5C @ =gSpriteTemplate_82159BC - movs r4, 0x14 - negs r4, r4 - movs r1, 0x80 - adds r2, r4, 0 - movs r3, 0x3 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBA - strb r0, [r1] - ldr r0, _0804CF60 @ =gSpriteTemplate_82159FC - movs r1, 0x80 - adds r2, r4, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CF64 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - b _0804D570 - .align 2, 0 -_0804CF58: .4byte gPaletteFade -_0804CF5C: .4byte gSpriteTemplate_82159BC -_0804CF60: .4byte gSpriteTemplate_82159FC -_0804CF64: .4byte gSprites -_0804CF68: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - b _0804D534 -_0804CF78: - movs r1, 0x80 - lsls r1, 19 - ldr r7, _0804CF98 @ =0x00001641 - adds r0, r7, 0 - strh r0, [r1] - movs r0, 0x1 - bl sub_804C0F8 - ldr r0, _0804CF9C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CF96 - b _0804D570 -_0804CF96: - b _0804D538 - .align 2, 0 -_0804CF98: .4byte 0x00001641 -_0804CF9C: .4byte gPaletteFade -_0804CFA0: - movs r0, 0x1 - bl sub_804C0F8 - ldr r2, _0804CFF4 @ =gSprites - ldr r0, _0804CFF8 @ =gUnknown_03004828 - ldr r3, [r0] - adds r4, r3, 0 - adds r4, 0xBA - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - adds r0, r3, 0 - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r2, 0x26 - ldrsh r1, [r0, r2] - movs r7, 0x22 - ldrsh r0, [r0, r7] - adds r1, r0 - cmp r1, 0x40 - beq _0804CFEE - b _0804D570 -_0804CFEE: - adds r1, r3, 0 - b _0804D53C - .align 2, 0 -_0804CFF4: .4byte gSprites -_0804CFF8: .4byte gUnknown_03004828 -_0804CFFC: - movs r0, 0x1 - bl sub_804C0F8 - ldr r0, _0804D024 @ =gUnknown_03004828 - ldr r1, [r0] - movs r0, 0x88 - lsls r0, 1 - adds r2, r1, r0 - ldrh r0, [r2] - adds r0, 0x2 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x9E - lsls r3, 1 - cmp r0, r3 - bgt _0804D020 - b _0804D570 -_0804D020: - strh r3, [r2] - b _0804D53C - .align 2, 0 -_0804D024: .4byte gUnknown_03004828 -_0804D028: - ldr r0, [r6] - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804D050 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _0804D400 - .align 2, 0 -_0804D050: .4byte gSprites -_0804D054: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - beq _0804D066 - b _0804D570 -_0804D066: - adds r1, 0x4 - b _0804D53E -_0804D06A: - ldr r1, [r6] - movs r4, 0x88 - lsls r4, 1 - adds r2, r1, r4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - movs r3, 0xAE - lsls r3, 1 - cmp r0, r3 - ble _0804D08E - strh r3, [r2] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804D08E: - ldr r0, [r6] - adds r0, r4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - bne _0804D0B0 - ldr r0, _0804D0C8 @ =gSpriteTemplate_8215A30 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBC - strb r0, [r1] -_0804D0B0: - ldr r2, _0804D0CC @ =gSprites - ldr r0, [r6] - adds r0, 0xBC - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0804D0D0 @ =sub_804B0E0 - str r1, [r0] - b _0804D570 - .align 2, 0 -_0804D0C8: .4byte gSpriteTemplate_8215A30 -_0804D0CC: .4byte gSprites -_0804D0D0: .4byte sub_804B0E0 -_0804D0D4: - ldr r0, _0804D0F4 @ =gSpriteTemplate_8215A80 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r2, _0804D0F8 @ =gUnknown_03004828 - ldr r1, [r2] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xC4 - movs r1, 0x32 - strh r1, [r0] - b _0804D570 - .align 2, 0 -_0804D0F4: .4byte gSpriteTemplate_8215A80 -_0804D0F8: .4byte gUnknown_03004828 -_0804D0FC: - ldr r2, _0804D138 @ =gSprites - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _0804D11A - b _0804D570 -_0804D11A: - adds r0, r1, 0 - bl DestroySprite - movs r0, 0x6 - bl sub_804BBE8 - ldr r1, [r6] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x9F - bl PlaySE - b _0804D570 - .align 2, 0 -_0804D138: .4byte gSprites -_0804D13C: - ldr r1, [r6] - movs r3, 0x8D - lsls r3, 1 - adds r2, r1, r3 - ldrh r3, [r2] - ldr r0, _0804D154 @ =0x000003ff - cmp r3, r0 - bhi _0804D158 - adds r0, r3, 0 - adds r0, 0x34 - strh r0, [r2] - b _0804D166 - .align 2, 0 -_0804D154: .4byte 0x000003ff -_0804D158: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r2] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804D166: - ldr r4, [r6] - movs r7, 0x8D - lsls r7, 1 - adds r0, r4, r7 -_0804D16E: - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - movs r2, 0x8C - lsls r2, 1 - adds r1, r4, r2 - strh r0, [r1] - b _0804D570 -_0804D182: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804D1A0 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x3C - strh r1, [r0] - b _0804D570 - .align 2, 0 -_0804D1A0: .4byte gUnknown_03004828 -_0804D1A4: - ldr r0, _0804D1C0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804D1B2 - b _0804D570 -_0804D1B2: - movs r0, 0x5 - bl sub_804BBE8 - movs r0, 0x7 - bl sub_804BBE8 - b _0804D538 - .align 2, 0 -_0804D1C0: .4byte gPaletteFade -_0804D1C4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - b _0804D534 -_0804D1D2: - movs r1, 0x80 - lsls r1, 19 - movs r3, 0xA2 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _0804D1F0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804D1EC - b _0804D570 -_0804D1EC: - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D1F0: .4byte gPaletteFade -_0804D1F4: - ldr r0, _0804D290 @ =gSpriteTemplate_821595C - movs r2, 0x8 - negs r2, r2 - movs r1, 0x78 - movs r3, 0 - bl CreateSprite - ldr r6, _0804D294 @ =gUnknown_03004828 - ldr r1, [r6] - ldr r5, _0804D298 @ =0x00000103 - adds r1, r5 - movs r7, 0 - mov r8, r7 - strb r0, [r1] - ldr r4, _0804D29C @ =gSprites - ldr r2, [r6] - adds r2, r5 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x4A - strh r1, [r0, 0x34] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0804D2A0 @ =sub_804D80C - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r2, _0804D2A4 @ =0x0000ffff - movs r1, 0x10 - bl BlendPalettes - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0xC0 - mov r0, r8 - str r0, [r1] - b _0804D570 - .align 2, 0 -_0804D290: .4byte gSpriteTemplate_821595C -_0804D294: .4byte gUnknown_03004828 -_0804D298: .4byte 0x00000103 -_0804D29C: .4byte gSprites -_0804D2A0: .4byte sub_804D80C -_0804D2A4: .4byte 0x0000ffff -_0804D2A8: - ldr r2, _0804D2D8 @ =gSprites - ldr r0, [r6] - ldr r1, _0804D2DC @ =0x00000103 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r1, _0804D2E0 @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D2D8: .4byte gSprites -_0804D2DC: .4byte 0x00000103 -_0804D2E0: .4byte 0x0000ffff -_0804D2E4: - ldr r2, _0804D308 @ =gSprites - ldr r3, [r6] - ldr r7, _0804D30C @ =0x00000103 - adds r0, r3, r7 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0804D310 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0804D302 - b _0804D570 -_0804D302: - adds r1, r3, 0 - b _0804D53C - .align 2, 0 -_0804D308: .4byte gSprites -_0804D30C: .4byte 0x00000103 -_0804D310: .4byte SpriteCallbackDummy -_0804D314: - ldr r4, _0804D3B4 @ =gSprites - ldr r0, [r6] - mov r8, r0 - mov r5, r8 - adds r5, 0xB9 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r3, 0 - movs r1, 0x78 - strh r1, [r0, 0x20] - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldr r2, _0804D3B8 @ =gMonFrontPicCoords - movs r0, 0x91 - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - adds r0, 0x3C - strh r0, [r1, 0x22] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x24] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x26] - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _0804D3BC @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x54 - bl CreatePokeballSprite - ldr r0, [r6] - ldr r5, _0804D3C0 @ =0x00000103 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D3B4: .4byte gSprites -_0804D3B8: .4byte gMonFrontPicCoords -_0804D3BC: .4byte 0x000fffff -_0804D3C0: .4byte 0x00000103 -_0804D3C4: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xBA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, [r6] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804D414 @ =gStringVar4 - ldr r1, _0804D418 @ =gTradeText_SentOverPoke - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 -_0804D400: - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - movs r3, 0 -_0804D40C: - strh r0, [r2] - adds r1, 0xC0 - str r3, [r1] - b _0804D570 - .align 2, 0 -_0804D414: .4byte gStringVar4 -_0804D418: .4byte gTradeText_SentOverPoke -_0804D41C: - ldr r1, [r6] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x4 - bne _0804D430 - ldr r0, _0804D480 @ =0x00000173 - bl PlayFanfare -_0804D430: - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xC0 - ldr r0, [r0] - cmp r0, 0xF0 - beq _0804D43E - b _0804D570 -_0804D43E: - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - movs r5, 0 - strh r0, [r1] - adds r0, r2, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804D484 @ =gStringVar4 - ldr r1, _0804D488 @ =gTradeText_TakeGoodCare - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 - ldr r0, [r6] - adds r0, 0xC0 - str r5, [r0] - b _0804D570 - .align 2, 0 -_0804D480: .4byte 0x00000173 -_0804D484: .4byte gStringVar4 -_0804D488: .4byte gTradeText_TakeGoodCare -_0804D48C: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bne _0804D570 - adds r1, 0x4 - b _0804D53E -_0804D4A0: - bl sub_804E1DC - b _0804D538 -_0804D4A6: - ldr r2, [r6] - movs r3, 0x8F - lsls r3, 1 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0804D4B8 - movs r0, 0x1 - b _0804D572 -_0804D4B8: - ldr r0, _0804D4C8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804D570 - adds r1, r2, 0 - b _0804D53C - .align 2, 0 -_0804D4C8: .4byte gMain -_0804D4CC: - ldr r0, _0804D510 @ =gSpecialVar_0x8005 - ldrb r0, [r0] - movs r1, 0 - bl sub_804BA94 - ldr r1, _0804D514 @ =gUnknown_03005E94 - ldr r0, _0804D518 @ =sub_804BBCC - str r0, [r1] - ldr r7, _0804D51C @ =gUnknown_020297D8 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0804D520 @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0804D538 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _0804D524 @ =gUnknown_03004828 - ldr r1, [r1] - adds r1, 0xB9 - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _0804D538 - .align 2, 0 -_0804D510: .4byte gSpecialVar_0x8005 -_0804D514: .4byte gUnknown_03005E94 -_0804D518: .4byte sub_804BBCC -_0804D51C: .4byte gUnknown_020297D8 -_0804D520: .4byte gPlayerParty -_0804D524: .4byte gUnknown_03004828 -_0804D528: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 -_0804D534: - bl BeginNormalPaletteFade -_0804D538: - ldr r0, _0804D548 @ =gUnknown_03004828 - ldr r1, [r0] -_0804D53C: - adds r1, 0xC4 -_0804D53E: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0804D570 - .align 2, 0 -_0804D548: .4byte gUnknown_03004828 -_0804D54C: - ldr r0, _0804D580 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804D570 - ldr r0, [r6] - movs r7, 0x92 - lsls r7, 1 - adds r0, r7 - ldrh r0, [r0] - bl PlayBGM - ldr r0, _0804D584 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - bl sub_804D8E4 -_0804D570: - movs r0, 0 -_0804D572: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0804D580: .4byte gPaletteFade -_0804D584: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_804C29C - - thumb_func_start sub_804D588 -sub_804D588: @ 804D588 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0804D5A0 @ =gMain - ldr r2, _0804D5A4 @ =0x0000043c - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _0804D5A8 - cmp r0, 0x4 - beq _0804D5B8 - b _0804D614 - .align 2, 0 -_0804D5A0: .4byte gMain -_0804D5A4: .4byte 0x0000043c -_0804D5A8: - movs r0, 0x4 - strb r0, [r1] - ldr r1, _0804D5B4 @ =gSoftResetDisabled - movs r0, 0x1 - b _0804D612 - .align 2, 0 -_0804D5B4: .4byte gSoftResetDisabled -_0804D5B8: - ldr r0, _0804D5F4 @ =gUnknown_03005E94 - ldr r1, _0804D5F8 @ =sub_804DC88 - mov r8, r1 - str r1, [r0] - ldr r7, _0804D5FC @ =gUnknown_020297D8 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0804D600 @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0804D608 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _0804D604 @ =gUnknown_03004828 - ldr r1, [r1] - adds r1, 0xB9 - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _0804D60E - .align 2, 0 -_0804D5F4: .4byte gUnknown_03005E94 -_0804D5F8: .4byte sub_804DC88 -_0804D5FC: .4byte gUnknown_020297D8 -_0804D600: .4byte gPlayerParty -_0804D604: .4byte gUnknown_03004828 -_0804D608: - mov r0, r8 - bl SetMainCallback2 -_0804D60E: - ldr r1, _0804D638 @ =gUnknown_020297D8 - movs r0, 0xFF -_0804D612: - strb r0, [r1] -_0804D614: - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - bne _0804D622 - bl RunTasks -_0804D622: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804D638: .4byte gUnknown_020297D8 - thumb_func_end sub_804D588 - - thumb_func_start sub_804D63C -sub_804D63C: @ 804D63C - push {r4-r6,lr} - bl sub_804B2B0 - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0x1 - adds r0, r5, 0 - ands r0, r6 - cmp r0, 0 - beq _0804D67A - ldr r4, _0804D6A8 @ =gBlockRecvBuffer - ldrh r1, [r4] - ldr r0, _0804D6AC @ =0x0000dcba - cmp r1, r0 - bne _0804D664 - ldr r0, _0804D6B0 @ =sub_804D588 - bl SetMainCallback2 -_0804D664: - ldrh r1, [r4] - ldr r0, _0804D6B4 @ =0x0000abcd - cmp r1, r0 - bne _0804D674 - ldr r0, _0804D6B8 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0x9C - strb r6, [r0] -_0804D674: - movs r0, 0 - bl ResetBlockReceivedFlag -_0804D67A: - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _0804D6A2 - ldr r0, _0804D6A8 @ =gBlockRecvBuffer - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0804D6B4 @ =0x0000abcd - cmp r1, r0 - bne _0804D69C - ldr r0, _0804D6B8 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0x9D - movs r1, 0x1 - strb r1, [r0] -_0804D69C: - movs r0, 0x1 - bl ResetBlockReceivedFlag -_0804D6A2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804D6A8: .4byte gBlockRecvBuffer -_0804D6AC: .4byte 0x0000dcba -_0804D6B0: .4byte sub_804D588 -_0804D6B4: .4byte 0x0000abcd -_0804D6B8: .4byte gUnknown_03004828 - thumb_func_end sub_804D63C - - thumb_func_start sub_804D6BC -sub_804D6BC: @ 804D6BC - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - ldrh r4, [r5, 0x22] - adds r4, r0 - strh r4, [r5, 0x22] - ldrh r0, [r5, 0x30] - ldrh r2, [r5, 0x38] - adds r0, r2 - strh r0, [r5, 0x38] - movs r1, 0x38 - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r5, 0x20] - lsls r4, 16 - asrs r4, 16 - cmp r4, 0x4C - ble _0804D70A - movs r0, 0x4C - strh r0, [r5, 0x22] - movs r2, 0x2E - ldrsh r1, [r5, r2] - movs r2, 0x32 - ldrsh r0, [r5, r2] - muls r0, r1 - negs r0, r0 - movs r1, 0x64 - bl __divsi3 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] -_0804D70A: - movs r1, 0x20 - ldrsh r0, [r5, r1] - cmp r0, 0x78 - bne _0804D716 - movs r0, 0 - strh r0, [r5, 0x30] -_0804D716: - ldrh r0, [r5, 0x36] - ldrh r2, [r5, 0x2E] - adds r0, r2 - strh r0, [r5, 0x2E] - movs r1, 0x34 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bne _0804D72E - movs r0, 0x1 - strh r0, [r5, 0x3C] - ldr r0, _0804D734 @ =SpriteCallbackDummy - str r0, [r5, 0x1C] -_0804D72E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804D734: .4byte SpriteCallbackDummy - thumb_func_end sub_804D6BC - - thumb_func_start sub_804D738 -sub_804D738: @ 804D738 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r1, _0804D7A0 @ =gTradeBallVerticalVelocityTable - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x16 - bne _0804D760 - movs r0, 0x38 - bl PlaySE -_0804D760: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2C - bne _0804D796 - movs r0, 0x8C - bl PlaySE - ldr r0, _0804D7A4 @ =sub_804D7AC - str r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r4, 0x2E] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - movs r1, 0x1 - negs r1, r1 - ldr r2, _0804D7A8 @ =0x0000ffff - str r2, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0804D796: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D7A0: .4byte gTradeBallVerticalVelocityTable -_0804D7A4: .4byte sub_804D7AC -_0804D7A8: .4byte 0x0000ffff - thumb_func_end sub_804D738 - - thumb_func_start sub_804D7AC -sub_804D7AC: @ 804D7AC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - bne _0804D7C0 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_0804D7C0: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0804D7FE - ldr r1, _0804D804 @ =gTradeBallVerticalVelocityTable - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - ldrh r0, [r4, 0x26] - subs r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x17 - bne _0804D7FE - adds r0, r4, 0 - bl DestroySprite - ldr r0, _0804D808 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0xE - strh r1, [r0] -_0804D7FE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D804: .4byte gTradeBallVerticalVelocityTable -_0804D808: .4byte gUnknown_03004828 - thumb_func_end sub_804D7AC - - thumb_func_start sub_804D80C -sub_804D80C: @ 804D80C - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0804D83C - ldrh r0, [r4, 0x22] - adds r0, 0x4 - strh r0, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x34 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _0804D88C - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x16 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _0804D88C -_0804D83C: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x42 - bne _0804D84A - movs r0, 0x39 - bl PlaySE -_0804D84A: - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x5C - bne _0804D858 - movs r0, 0x3A - bl PlaySE -_0804D858: - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r0, 0x6B - bne _0804D866 - movs r0, 0x3B - bl PlaySE -_0804D866: - ldr r1, _0804D894 @ =gTradeBallVerticalVelocityTable - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r3, [r4, 0x26] - adds r0, r3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6C - bne _0804D88C - ldr r0, _0804D898 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_0804D88C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D894: .4byte gTradeBallVerticalVelocityTable -_0804D898: .4byte SpriteCallbackDummy - thumb_func_end sub_804D80C - - thumb_func_start sub_804D89C -sub_804D89C: @ 804D89C - push {r4-r6,lr} - ldr r0, _0804D8D0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _0804D8D4 @ =gIngameTrades - adds r4, r0 - ldr r0, _0804D8D8 @ =gStringVar1 - ldrh r1, [r4, 0x38] - movs r6, 0xB - muls r1, r6 - ldr r5, _0804D8DC @ =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, _0804D8E0 @ =gStringVar2 - ldrh r1, [r4, 0xC] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldrh r0, [r4, 0x38] - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0804D8D0: .4byte gSpecialVar_0x8004 -_0804D8D4: .4byte gIngameTrades -_0804D8D8: .4byte gStringVar1 -_0804D8DC: .4byte gSpeciesNames -_0804D8E0: .4byte gStringVar2 - thumb_func_end sub_804D89C - - thumb_func_start sub_804D8E4 -sub_804D8E4: @ 804D8E4 - push {r4,lr} - sub sp, 0x20 - ldr r0, _0804D92C @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _0804D930 @ =gIngameTrades - adds r4, r0 - ldr r0, _0804D934 @ =gSpecialVar_0x8005 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804D938 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _0804D93C @ =gStringVar1 - mov r1, sp - bl StringCopy10 - ldr r0, _0804D940 @ =gStringVar2 - ldrh r2, [r4, 0xC] - movs r1, 0xB - muls r1, r2 - ldr r2, _0804D944 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - add sp, 0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D92C: .4byte gSpecialVar_0x8004 -_0804D930: .4byte gIngameTrades -_0804D934: .4byte gSpecialVar_0x8005 -_0804D938: .4byte gPlayerParty -_0804D93C: .4byte gStringVar1 -_0804D940: .4byte gStringVar2 -_0804D944: .4byte gSpeciesNames - thumb_func_end sub_804D8E4 - - thumb_func_start sub_804D948 -sub_804D948: @ 804D948 - push {r4-r7,lr} - sub sp, 0x38 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, r1, 4 - subs r2, r1 - lsls r2, 2 - ldr r1, _0804DAA4 @ =gIngameTrades - adds r5, r2, r1 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0804DAA8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - add r4, sp, 0x34 - movs r0, 0xFE - strb r0, [r4] - ldr r6, _0804DAAC @ =gEnemyParty - ldrh r1, [r5, 0xC] - movs r3, 0x1 - str r3, [sp] - ldr r0, [r5, 0x24] - str r0, [sp, 0x4] - str r3, [sp, 0x8] - ldr r0, [r5, 0x18] - str r0, [sp, 0xC] - adds r0, r6, 0 - movs r3, 0x20 - bl CreateMon - adds r2, r5, 0 - adds r2, 0xE - adds r0, r6, 0 - movs r1, 0x27 - bl SetMonData - adds r2, r5, 0 - adds r2, 0xF - adds r0, r6, 0 - movs r1, 0x28 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x10 - adds r0, r6, 0 - movs r1, 0x29 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x11 - adds r0, r6, 0 - movs r1, 0x2A - bl SetMonData - adds r2, r5, 0 - adds r2, 0x12 - adds r0, r6, 0 - movs r1, 0x2B - bl SetMonData - adds r2, r5, 0 - adds r2, 0x13 - adds r0, r6, 0 - movs r1, 0x2C - bl SetMonData - adds r0, r6, 0 - movs r1, 0x2 - adds r2, r5, 0 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x2B - adds r0, r6, 0 - movs r1, 0x7 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x36 - adds r0, r6, 0 - movs r1, 0x31 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x14 - adds r0, r6, 0 - movs r1, 0x2E - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1D - adds r0, r6, 0 - movs r1, 0x17 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1E - adds r0, r6, 0 - movs r1, 0x18 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1C - adds r0, r6, 0 - movs r1, 0x16 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1F - adds r0, r6, 0 - movs r1, 0x21 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x20 - adds r0, r6, 0 - movs r1, 0x2F - bl SetMonData - adds r2, r5, 0 - adds r2, 0x37 - adds r0, r6, 0 - movs r1, 0x30 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x23 - adds r2, r4, 0 - bl SetMonData - mov r4, sp - adds r4, 0x35 - movs r0, 0 - strb r0, [r4] - ldrh r0, [r5, 0x28] - cmp r0, 0 - beq _0804DAC0 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0804DAB4 - add r0, sp, 0x10 - adds r1, r5, 0 - bl sub_804DAD4 - ldr r0, _0804DAB0 @ =gUnknown_02029700 - add r1, sp, 0x10 - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - adds r0, r6, 0 - movs r1, 0x40 - adds r2, r4, 0 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x28 - adds r0, r6, 0 - movs r1, 0xC - bl SetMonData - b _0804DAC0 - .align 2, 0 -_0804DAA4: .4byte gIngameTrades -_0804DAA8: .4byte gPlayerParty -_0804DAAC: .4byte gEnemyParty -_0804DAB0: .4byte gUnknown_02029700 -_0804DAB4: - adds r2, r5, 0 - adds r2, 0x28 - adds r0, r6, 0 - movs r1, 0xC - bl SetMonData -_0804DAC0: - ldr r0, _0804DAD0 @ =gEnemyParty - bl CalculateMonStats - add sp, 0x38 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804DAD0: .4byte gEnemyParty - thumb_func_end sub_804D948 - -.section .text.sub_804DB2C - - thumb_func_start sub_804DB2C -sub_804DB2C: @ 804DB2C - push {r4-r6,lr} - ldr r6, _0804DB58 @ =gSpecialVar_0x8005 - ldrh r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _0804DB5C @ =gPlayerParty - adds r0, r4 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804DB60 - ldrh r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - b _0804DB62 - .align 2, 0 -_0804DB58: .4byte gSpecialVar_0x8005 -_0804DB5C: .4byte gPlayerParty -_0804DB60: - movs r0, 0 -_0804DB62: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_804DB2C - - thumb_func_start sub_804DB68 -sub_804DB68: @ 804DB68 - push {lr} - ldr r0, _0804DB7C @ =gSpecialVar_0x8005 - ldrb r0, [r0] - ldr r1, _0804DB80 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_804D948 - pop {r0} - bx r0 - .align 2, 0 -_0804DB7C: .4byte gSpecialVar_0x8005 -_0804DB80: .4byte gSpecialVar_0x8004 - thumb_func_end sub_804DB68 - - thumb_func_start sub_804DB84 -sub_804DB84: @ 804DB84 - push {r4-r6,lr} - bl sub_804C29C - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - bne _0804DBE6 - ldr r5, _0804DC04 @ =gUnknown_03004828 - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804DC08 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r5] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, _0804DC0C @ =gUnknown_020297D8 - ldrb r4, [r0] - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804BA94 - ldr r0, [r5] - adds r2, r0, 0 - adds r2, 0x9E - ldr r1, _0804DC10 @ =0x0000abcd - strh r1, [r2] - adds r0, 0xBD - strb r6, [r0] - ldr r0, _0804DC14 @ =sub_804DC18 - bl SetMainCallback2 -_0804DBE6: - bl sub_804BB78 - bl sub_804D63C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804DC04: .4byte gUnknown_03004828 -_0804DC08: .4byte gSprites -_0804DC0C: .4byte gUnknown_020297D8 -_0804DC10: .4byte 0x0000abcd -_0804DC14: .4byte sub_804DC18 - thumb_func_end sub_804DB84 - - thumb_func_start sub_804DC18 -sub_804DC18: @ 804DC18 - push {r4,lr} - bl sub_804B2B0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_804D63C - cmp r4, 0 - bne _0804DC64 - ldr r4, _0804DC7C @ =gUnknown_03004828 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x9C - ldrh r1, [r0] - ldr r0, _0804DC80 @ =0x00000101 - cmp r1, r0 - bne _0804DC64 - adds r1, r2, 0 - adds r1, 0x9E - ldr r0, _0804DC84 @ =0x0000dcba - strh r0, [r1] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x9E - movs r2, 0x14 - bl SendBlock - ldr r0, [r4] - adds r0, 0x9C - movs r1, 0x2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x9D - strb r1, [r0] -_0804DC64: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804DC7C: .4byte gUnknown_03004828 -_0804DC80: .4byte 0x00000101 -_0804DC84: .4byte 0x0000dcba - thumb_func_end sub_804DC18 - - thumb_func_start sub_804DC88 -sub_804DC88: @ 804DC88 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _0804DCA8 @ =gMain - ldr r2, _0804DCAC @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x65 - bls _0804DC9C - b _0804E11A -_0804DC9C: - lsls r0, 2 - ldr r1, _0804DCB0 @ =_0804DCB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804DCA8: .4byte gMain -_0804DCAC: .4byte 0x0000043c -_0804DCB0: .4byte _0804DCB4 - .align 2, 0 -_0804DCB4: - .4byte _0804DE4C - .4byte _0804DE9C - .4byte _0804DF14 - .4byte _0804E11A - .4byte _0804DFE0 - .4byte _0804E078 - .4byte _0804E0A0 - .4byte _0804E0BC - .4byte _0804E0E4 - .4byte _0804E10C - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E008 - .4byte _0804E034 - .4byte _0804E04C - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804DF54 - .4byte _0804DF7C - .4byte _0804DF9C - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804DEB4 - .4byte _0804DEF4 -_0804DE4C: - ldr r5, _0804DE88 @ =gUnknown_03004828 - ldr r0, _0804DE8C @ =0x0201f000 - str r0, [r5] - ldr r1, _0804DE90 @ =0x0000043c - adds r2, r1 - ldrb r1, [r2] - adds r1, 0x1 - strb r1, [r2] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804DE94 @ =gStringVar4 - ldr r1, _0804DE98 @ =gOtherText_LinkStandby2 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r5] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - b _0804DF3E - .align 2, 0 -_0804DE88: .4byte gUnknown_03004828 -_0804DE8C: .4byte 0x0201f000 -_0804DE90: .4byte 0x0000043c -_0804DE94: .4byte gStringVar4 -_0804DE98: .4byte gOtherText_LinkStandby2 -_0804DE9C: - bl sub_80084A4 - ldr r0, _0804DEAC @ =gMain - ldr r2, _0804DEB0 @ =0x0000043c - adds r0, r2 - movs r2, 0 - movs r1, 0x64 - b _0804DFEE - .align 2, 0 -_0804DEAC: .4byte gMain -_0804DEB0: .4byte 0x0000043c -_0804DEB4: - ldr r0, _0804DEE8 @ =gUnknown_03004828 - ldr r0, [r0] - adds r3, r0, 0 - adds r3, 0xC0 - ldr r0, [r3] - adds r0, 0x1 - str r0, [r3] - cmp r0, 0xB4 - bls _0804DED2 - ldr r1, _0804DEEC @ =0x0000043c - adds r0, r2, r1 - movs r2, 0 - movs r1, 0x65 - strb r1, [r0] - str r2, [r3] -_0804DED2: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804DEDE - b _0804E11A -_0804DEDE: - ldr r0, _0804DEF0 @ =gMain - ldr r2, _0804DEEC @ =0x0000043c - adds r0, r2 - b _0804DF06 - .align 2, 0 -_0804DEE8: .4byte gUnknown_03004828 -_0804DEEC: .4byte 0x0000043c -_0804DEF0: .4byte gMain -_0804DEF4: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804DF00 - b _0804E11A -_0804DF00: - ldr r0, _0804DF0C @ =gMain - ldr r1, _0804DF10 @ =0x0000043c - adds r0, r1 -_0804DF06: - movs r1, 0x2 - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804DF0C: .4byte gMain -_0804DF10: .4byte 0x0000043c -_0804DF14: - ldr r0, _0804DF48 @ =0x0000043c - adds r1, r2, r0 - movs r0, 0x32 - strb r0, [r1] - ldr r4, _0804DF4C @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _0804DF50 @ =gSystemText_Saving - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] -_0804DF3E: - movs r3, 0x2 - bl sub_8003460 - b _0804E11A - .align 2, 0 -_0804DF48: .4byte 0x0000043c -_0804DF4C: .4byte gUnknown_03004828 -_0804DF50: .4byte gSystemText_Saving -_0804DF54: - bl SetSecretBase2Field_9_AndHideBG - movs r0, 0x15 - bl IncrementGameStat - bl sub_8125D80 - ldr r1, _0804DF74 @ =gMain - ldr r2, _0804DF78 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - b _0804DFF0 - .align 2, 0 -_0804DF74: .4byte gMain -_0804DF78: .4byte 0x0000043c -_0804DF7C: - ldr r0, _0804DF94 @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - beq _0804DF8E - b _0804E11A -_0804DF8E: - ldr r0, _0804DF98 @ =0x0000043c - adds r1, r2, r0 - b _0804E0FA - .align 2, 0 -_0804DF94: .4byte gUnknown_03004828 -_0804DF98: .4byte 0x0000043c -_0804DF9C: - bl sub_8125DA8 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804DFC0 - bl ClearSecretBase2Field_9_2 - ldr r0, _0804DFB8 @ =gMain - ldr r1, _0804DFBC @ =0x0000043c - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804DFB8: .4byte gMain -_0804DFBC: .4byte 0x0000043c -_0804DFC0: - ldr r0, _0804DFD4 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC0 - str r1, [r0] - ldr r0, _0804DFD8 @ =gMain - ldr r2, _0804DFDC @ =0x0000043c - adds r0, r2 - movs r1, 0x33 - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804DFD4: .4byte gUnknown_03004828 -_0804DFD8: .4byte gMain -_0804DFDC: .4byte 0x0000043c -_0804DFE0: - bl sub_8125DDC - ldr r0, _0804DFFC @ =gMain - ldr r1, _0804E000 @ =0x0000043c - adds r0, r1 - movs r2, 0 - movs r1, 0x28 -_0804DFEE: - strb r1, [r0] -_0804DFF0: - ldr r0, _0804E004 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC0 - str r2, [r0] - b _0804E11A - .align 2, 0 -_0804DFFC: .4byte gMain -_0804E000: .4byte 0x0000043c -_0804E004: .4byte gUnknown_03004828 -_0804E008: - ldr r0, _0804E02C @ =gUnknown_03004828 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x32 - bhi _0804E01C - b _0804E11A -_0804E01C: - movs r0, 0 - str r0, [r1] - ldr r0, _0804E030 @ =0x0000043c - adds r1, r2, r0 - movs r0, 0x29 - strb r0, [r1] - b _0804E11A - .align 2, 0 -_0804E02C: .4byte gUnknown_03004828 -_0804E030: .4byte 0x0000043c -_0804E034: - bl sub_80084A4 - ldr r0, _0804E044 @ =gMain - ldr r1, _0804E048 @ =0x0000043c - adds r0, r1 - movs r1, 0x2A - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804E044: .4byte gMain -_0804E048: .4byte 0x0000043c -_0804E04C: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804E11A - bl sub_8125E04 - ldr r1, _0804E06C @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - ldr r0, _0804E070 @ =gMain - ldr r2, _0804E074 @ =0x0000043c - adds r0, r2 - movs r1, 0x5 - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804E06C: .4byte gSoftResetDisabled -_0804E070: .4byte gMain -_0804E074: .4byte 0x0000043c -_0804E078: - ldr r0, _0804E098 @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bls _0804E11A - ldr r0, _0804E09C @ =0x0000043c - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80084A4 - b _0804E11A - .align 2, 0 -_0804E098: .4byte gUnknown_03004828 -_0804E09C: .4byte 0x0000043c -_0804E0A0: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804E11A - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E0F4 -_0804E0BC: - ldr r0, _0804E0D8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E11A - movs r0, 0x3 - bl FadeOutBGM - ldr r1, _0804E0DC @ =gMain - ldr r0, _0804E0E0 @ =0x0000043c - adds r1, r0 - b _0804E0FA - .align 2, 0 -_0804E0D8: .4byte gPaletteFade -_0804E0DC: .4byte gMain -_0804E0E0: .4byte 0x0000043c -_0804E0E4: - bl IsBGMStopped - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0804E11A - bl sub_800832C -_0804E0F4: - ldr r1, _0804E104 @ =gMain - ldr r2, _0804E108 @ =0x0000043c - adds r1, r2 -_0804E0FA: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804E11A - .align 2, 0 -_0804E104: .4byte gMain -_0804E108: .4byte 0x0000043c -_0804E10C: - ldr r0, _0804E13C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0804E11A - ldr r0, _0804E140 @ =sub_804E144 - bl SetMainCallback2 -_0804E11A: - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - bne _0804E128 - bl RunTasks -_0804E128: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E13C: .4byte gReceivedRemoteLinkPlayers -_0804E140: .4byte sub_804E144 - thumb_func_end sub_804DC88 - - thumb_func_start sub_804E144 -sub_804E144: @ 804E144 - push {lr} - ldr r0, _0804E16C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E158 - ldr r0, _0804E170 @ =sub_8047CD8 - bl SetMainCallback2 -_0804E158: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_0804E16C: .4byte gPaletteFade -_0804E170: .4byte sub_8047CD8 - thumb_func_end sub_804E144 - - thumb_func_start sub_804E174 -sub_804E174: @ 804E174 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _0804E19C @ =sub_804E1A0 - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0804E19C: .4byte sub_804E1A0 - thumb_func_end sub_804E174 - - thumb_func_start sub_804E1A0 -sub_804E1A0: @ 804E1A0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0804E1CC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E1C4 - ldr r0, _0804E1D0 @ =sub_804B790 - bl SetMainCallback2 - ldr r1, _0804E1D4 @ =gFieldCallback - ldr r0, _0804E1D8 @ =sub_8080990 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0804E1C4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804E1CC: .4byte gPaletteFade -_0804E1D0: .4byte sub_804B790 -_0804E1D4: .4byte gFieldCallback -_0804E1D8: .4byte sub_8080990 - thumb_func_end sub_804E1A0 - - thumb_func_start sub_804E1DC -sub_804E1DC: @ 804E1DC - push {r4,r5,lr} - movs r5, 0 - movs r4, 0 -_0804E1E2: - ldr r0, _0804E220 @ =gUnknown_020297D8 - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0804E224 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x43 - bl GetMonData - adds r0, r5, r0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xB - bls _0804E1E2 - cmp r5, 0 - beq _0804E21A - ldr r0, _0804E228 @ =0x0000083b - bl FlagSet -_0804E21A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E220: .4byte gUnknown_020297D8 -_0804E224: .4byte gEnemyParty -_0804E228: .4byte 0x0000083b - thumb_func_end sub_804E1DC - - thumb_func_start sub_804E22C -sub_804E22C: @ 804E22C - push {r4,lr} - ldr r0, _0804E26C @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _0804E270 @ =gUnknown_08D00524 - ldr r4, _0804E274 @ =0x02000000 - movs r2, 0x80 - lsls r2, 4 - adds r1, r4, 0 - bl CpuSet - ldr r1, _0804E278 @ =0x06002800 - ldr r0, _0804E27C @ =0x040000d4 - str r4, [r0] - str r1, [r0, 0x4] - ldr r1, _0804E280 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804E284 @ =gUnknown_08D004E0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _0804E288 @ =REG_BG1CNT - ldr r2, _0804E28C @ =0x00000502 - adds r0, r2, 0 - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804E26C: .4byte gUnknown_08D00000 -_0804E270: .4byte gUnknown_08D00524 -_0804E274: .4byte 0x02000000 -_0804E278: .4byte 0x06002800 -_0804E27C: .4byte 0x040000d4 -_0804E280: .4byte 0x80000280 -_0804E284: .4byte gUnknown_08D004E0 -_0804E288: .4byte REG_BG1CNT -_0804E28C: .4byte 0x00000502 - thumb_func_end sub_804E22C - - .align 2, 0 @ Don't pad with nop. diff --git a/asmdiff.sh b/asmdiff.sh new file mode 100644 index 000000000..a4b465b6e --- /dev/null +++ b/asmdiff.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" +OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" +$OBJDUMP $OPTIONS baserom.gba > baserom.dump +$OBJDUMP $OPTIONS pokeruby.gba > pokeruby.dump +diff baserom.dump pokeruby.dump diff --git a/common_syms/battle_anim.txt b/common_syms/battle/battle_anim.txt index a93ac9b5d..a93ac9b5d 100644 --- a/common_syms/battle_anim.txt +++ b/common_syms/battle/battle_anim.txt diff --git a/common_syms/mori_debug_menu.txt b/common_syms/debug/mori_debug_menu.txt index 77ab5531c..77ab5531c 100644 --- a/common_syms/mori_debug_menu.txt +++ b/common_syms/debug/mori_debug_menu.txt diff --git a/common_syms/sound_check_menu.txt b/common_syms/debug/sound_check_menu.txt index ba350ad8e..e9e3032e6 100644 --- a/common_syms/sound_check_menu.txt +++ b/common_syms/debug/sound_check_menu.txt @@ -1 +1,2 @@ gUnknown_03005D30 +gSoundTestCryNum diff --git a/common_syms/link.txt b/common_syms/engine/link.txt index faafda4d0..faafda4d0 100644 --- a/common_syms/link.txt +++ b/common_syms/engine/link.txt diff --git a/common_syms/load_save.txt b/common_syms/engine/load_save.txt index 3b969deca..3b969deca 100644 --- a/common_syms/load_save.txt +++ b/common_syms/engine/load_save.txt diff --git a/common_syms/main.txt b/common_syms/engine/main.txt index a620083d1..a620083d1 100644 --- a/common_syms/main.txt +++ b/common_syms/engine/main.txt diff --git a/common_syms/record_mixing.txt b/common_syms/engine/record_mixing.txt index a6f4f8df3..a6f4f8df3 100644 --- a/common_syms/record_mixing.txt +++ b/common_syms/engine/record_mixing.txt diff --git a/common_syms/rng.txt b/common_syms/engine/rng.txt index 794439ea5..794439ea5 100644 --- a/common_syms/rng.txt +++ b/common_syms/engine/rng.txt diff --git a/common_syms/rtc.txt b/common_syms/engine/rtc.txt index fa00a34d5..fa00a34d5 100644 --- a/common_syms/rtc.txt +++ b/common_syms/engine/rtc.txt diff --git a/common_syms/save.txt b/common_syms/engine/save.txt index d09a52bcf..d09a52bcf 100644 --- a/common_syms/save.txt +++ b/common_syms/engine/save.txt diff --git a/common_syms/sound.txt b/common_syms/engine/sound.txt index 0f6f2fc75..0f6f2fc75 100644 --- a/common_syms/sound.txt +++ b/common_syms/engine/sound.txt diff --git a/common_syms/sprite.txt b/common_syms/engine/sprite.txt index fe38dc61f..fe38dc61f 100644 --- a/common_syms/sprite.txt +++ b/common_syms/engine/sprite.txt diff --git a/common_syms/string_util.txt b/common_syms/engine/string_util.txt index 1ee62aaad..1ee62aaad 100644 --- a/common_syms/string_util.txt +++ b/common_syms/engine/string_util.txt diff --git a/common_syms/task.txt b/common_syms/engine/task.txt index 6601bd11b..6601bd11b 100644 --- a/common_syms/task.txt +++ b/common_syms/engine/task.txt diff --git a/common_syms/field_camera.txt b/common_syms/field/field_camera.txt index 7aad967f8..7aad967f8 100644 --- a/common_syms/field_camera.txt +++ b/common_syms/field/field_camera.txt diff --git a/common_syms/field_control_avatar.txt b/common_syms/field/field_control_avatar.txt index 040a9e6c1..040a9e6c1 100644 --- a/common_syms/field_control_avatar.txt +++ b/common_syms/field/field_control_avatar.txt diff --git a/common_syms/field_map_obj.txt b/common_syms/field/field_map_obj.txt index 32d8b1915..32d8b1915 100644 --- a/common_syms/field_map_obj.txt +++ b/common_syms/field/field_map_obj.txt diff --git a/common_syms/fieldmap.txt b/common_syms/field/fieldmap.txt index 7819b3b40..7819b3b40 100644 --- a/common_syms/fieldmap.txt +++ b/common_syms/field/fieldmap.txt diff --git a/common_syms/rom4.txt b/common_syms/field/overworld.txt index ecdb190b2..ecdb190b2 100644 --- a/common_syms/rom4.txt +++ b/common_syms/field/overworld.txt diff --git a/common_syms/start_menu.txt b/common_syms/field/start_menu.txt index bc0c247d1..bc0c247d1 100644 --- a/common_syms/start_menu.txt +++ b/common_syms/field/start_menu.txt diff --git a/common_syms/tv.txt b/common_syms/field/tv.txt index 829139f8f..829139f8f 100644 --- a/common_syms/tv.txt +++ b/common_syms/field/tv.txt diff --git a/common_syms/agb_flash.txt b/common_syms/libs/agb_flash.txt index cb421ec80..cb421ec80 100644 --- a/common_syms/agb_flash.txt +++ b/common_syms/libs/agb_flash.txt diff --git a/common_syms/m4a_2.txt b/common_syms/libs/m4a_2.txt index a80d8a79d..a80d8a79d 100644 --- a/common_syms/m4a_2.txt +++ b/common_syms/libs/m4a_2.txt diff --git a/common_syms/pokemon/pokeblock_feed.txt b/common_syms/pokemon/pokeblock_feed.txt new file mode 100644 index 000000000..827e6526e --- /dev/null +++ b/common_syms/pokemon/pokeblock_feed.txt @@ -0,0 +1,12 @@ +gPokeblockFeedPokeSprite +gPokeblockFeedMonSpecies +gPokeblockMonNotFlipped +gPokeblockFeedMonSpriteID +gPokeblockFeedMonNature +gUnknown_03005F34 +gPokeblockFeedUnused0 +gUnknown_03005F3C +gUnknown_03005F40 +gPokeblockFeedPokeSpriteCopy +gUnknown_03005F94 +gUnknown_03005FA0 diff --git a/common_syms/pokedex.txt b/common_syms/pokemon/pokedex.txt index 18b14f3ed..18b14f3ed 100644 --- a/common_syms/pokedex.txt +++ b/common_syms/pokemon/pokedex.txt diff --git a/common_syms/pokemon_1.txt b/common_syms/pokemon/pokemon_1.txt index c588d53a7..c588d53a7 100644 --- a/common_syms/pokemon_1.txt +++ b/common_syms/pokemon/pokemon_1.txt diff --git a/common_syms/pokemon/pokemon_menu.txt b/common_syms/pokemon/pokemon_menu.txt new file mode 100644 index 000000000..98a1bf53b --- /dev/null +++ b/common_syms/pokemon/pokemon_menu.txt @@ -0,0 +1,2 @@ +gLastFieldPokeMenuOpened +gUnknown_03005CE4 diff --git a/common_syms/scene/berry_blender.txt b/common_syms/scene/berry_blender.txt new file mode 100644 index 000000000..524a31411 --- /dev/null +++ b/common_syms/scene/berry_blender.txt @@ -0,0 +1,4 @@ +gUnknown_03004830 +gInGameOpponentsNo +gUnknown_03004840 +gBerryBlenderData diff --git a/common_syms/contest_painting.txt b/common_syms/scene/contest_painting.txt index 2e8490348..2e8490348 100644 --- a/common_syms/contest_painting.txt +++ b/common_syms/scene/contest_painting.txt diff --git a/common_syms/scene/cute_sketch.txt b/common_syms/scene/cute_sketch.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/common_syms/scene/cute_sketch.txt diff --git a/common_syms/scene/egg_hatch.txt b/common_syms/scene/egg_hatch.txt new file mode 100644 index 000000000..891ccc104 --- /dev/null +++ b/common_syms/scene/egg_hatch.txt @@ -0,0 +1 @@ +gEggHatchData diff --git a/common_syms/scene/evolution_scene.txt b/common_syms/scene/evolution_scene.txt new file mode 100644 index 000000000..137cd3e05 --- /dev/null +++ b/common_syms/scene/evolution_scene.txt @@ -0,0 +1 @@ +gCB2_AfterEvolution diff --git a/common_syms/intro.txt b/common_syms/scene/intro.txt index d069b1014..d069b1014 100644 --- a/common_syms/intro.txt +++ b/common_syms/scene/intro.txt diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s index 4d809241c..677aa9f21 100644 --- a/data-de/event_scripts.s +++ b/data-de/event_scripts.s @@ -386,27 +386,27 @@ gStdScripts_End:: gUnknown_0815F36C:: @ 815F36C lockall - playsfx 2 + playse 2 message UnknownString_81A3A72 - doanimation 61 + dofieldeffect 61 waitstate - waittext + waitmessage waitbutton - playsfx 5 - jump EventScript_15F384 + playse 5 + goto EventScript_15F384 end EventScript_15F384: message UnknownString_81A3A87 - waittext + waitmessage checkflag 268 - jumpeq EventScript_15F3A0 - jump EventScript_15F3E2 + goto_if_eq EventScript_15F3A0 + goto EventScript_15F3E2 end gUnknown_0815F399:: @ 815F399 lockall - jump EventScript_15F384 + goto EventScript_15F384 end EventScript_15F3A0: @@ -431,8 +431,8 @@ EventScript_15F3E2: EventScript_15F419: msgbox UnknownString_81A38FB, 5 compare RESULT, 0 - jumpeq EventScript_15F384 - closebutton + goto_if_eq EventScript_15F384 + closemessage special SecretBasePC_PackUp releaseall end @@ -448,18 +448,18 @@ EventScript_15F436: gUnknown_0815F43A:: @ 815F43A lockall message UnknownString_81A3A72 - playsfx 2 - doanimation 61 + playse 2 + dofieldeffect 61 waitstate - waittext + waitmessage waitbutton - playsfx 5 - jump EventScript_15F452 + playse 5 + goto EventScript_15F452 end EventScript_15F452: message UnknownString_81A3A87 - waittext + waitmessage multichoice 0, 0, 7, 0 switch RESULT case 0, EventScript_15F4A1 @@ -471,19 +471,19 @@ EventScript_15F452: gUnknown_0815F49A:: @ 815F49A lockall - jump EventScript_15F452 + goto EventScript_15F452 end EventScript_15F4A1: special sub_80BC56C compare RESULT, 1 - jumpeq EventScript_15F4E0 + goto_if_eq EventScript_15F4E0 compare RESULT, 2 - jumpeq EventScript_15F503 + goto_if_eq EventScript_15F503 special sub_80BC224 msgbox UnknownString_81A3958, 5 compare RESULT, 0 - jumpeq EventScript_15F452 + goto_if_eq EventScript_15F452 msgbox UnknownString_81A3A22, 3 special sub_80BC5BC special sub_80C683C @@ -493,7 +493,7 @@ EventScript_15F4A1: EventScript_15F4E0: msgbox UnknownString_81A3982, 5 compare RESULT, 0 - jumpeq EventScript_15F452 + goto_if_eq EventScript_15F452 msgbox UnknownString_81A3A3A, 3 special sub_80BC5BC special sub_80C683C @@ -503,37 +503,37 @@ EventScript_15F4E0: EventScript_15F503: msgbox UnknownString_81A39C0, 3 special sub_80C683C - closebutton + closemessage releaseall end EventScript_15F511: message UnknownString_81A3AA2 - waittext - jump EventScript_15F452 + waitmessage + goto EventScript_15F452 end EventScript_15F51D: special sub_80C683C - closebutton + closemessage releaseall end gUnknown_0815F523:: @ 815F523 - doanimation 52 + dofieldeffect 52 waitstate end gUnknown_0815F528:: @ 815F528 special GetShieldToyTVDecorationInfo compare RESULT, 0 - jumpeq EventScript_15F558 + goto_if_eq EventScript_15F558 compare RESULT, 1 - jumpeq EventScript_15F561 + goto_if_eq EventScript_15F561 compare RESULT, 2 - jumpeq EventScript_15F56A + goto_if_eq EventScript_15F56A compare RESULT, 3 - jumpeq EventScript_15F573 + goto_if_eq EventScript_15F573 end EventScript_15F558: @@ -891,7 +891,7 @@ Std_2: lock faceplayer message 0x0 - waittext + waitmessage waitbutton release return @@ -899,137 +899,137 @@ Std_2: Std_3: lockall message 0x0 - waittext + waitmessage waitbutton releaseall return Std_4: message 0x0 - waittext + waitmessage waitbutton return Std_5: message 0x0 - waittext + waitmessage yesnobox 20, 8 return @ 819F805 return -BattleTower_Lobby_EventScript_19F806:: @ 819F806 -FallarborTown_ContestLobby_EventScript_19F806:: @ 819F806 -LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806 -MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806 -OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806 -SecretBase_RedCave1_EventScript_19F806:: @ 819F806 - special InitSaveDialog +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 + special ScrSpecial_DoSaveDialog waitstate return gUnknown_0819F80B:: @ 819F80B lock special PlayTrainerEncounterMusic - special sub_80847C8 + special ScrSpecial_EndTrainerApproach waitstate - jump EventScript_19F8F2 + goto EventScript_19F8F2 gUnknown_0819F818:: @ 819F818 lock faceplayer - move LAST_TALKED, Movement_19F8F0 - waitmove 0 - specialval RESULT, sub_8082564 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 + specialvar RESULT, ScrSpecial_HasTrainerBeenFought compare RESULT, 0 - jumpif 5, EventScript_19F83F + goto_if 5, EventScript_19F83F special PlayTrainerEncounterMusic special sub_8082524 - jump EventScript_19F8F2 + goto EventScript_19F8F2 EventScript_19F83F: - endtrainerbattle + ontrainerbattleend gUnknown_0819F840:: @ 819F840 lock faceplayer call EventScript_19F8E5 - specialval RESULT, sub_8082564 + specialvar RESULT, ScrSpecial_HasTrainerBeenFought compare RESULT, 0 - jumpif 5, EventScript_19F877 + goto_if 5, EventScript_19F877 special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, EventScript_19F870 + goto_if 5, EventScript_19F870 special PlayTrainerEncounterMusic special sub_8082524 - jump EventScript_19F8F2 + goto EventScript_19F8F2 EventScript_19F870: - special sub_8082718 - waittext + special ScrSpecial_ShowTrainerNonBattlingSpeech + waitmessage waitbutton release end EventScript_19F877: - endtrainerbattle + ontrainerbattleend gUnknown_0819F878:: @ 819F878 - move LAST_TALKED, Movement_19F8F0 - waitmove 0 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 special PlayTrainerEncounterMusic - reptrainerbattle - endtrainerbattle + battlebegin + ontrainerbattleend gUnknown_0819F887:: @ 819F887 call EventScript_19F8E5 - specialval RESULT, sub_8082C9C + specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare RESULT, 0 - jumpeq EventScript_19F8AD + goto_if_eq EventScript_19F8AD special PlayTrainerEncounterMusic special sub_8082524 - special sub_80826D8 - waittext + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - special sub_80826B0 + special ScrSpecial_StartTrainerEyeRematch waitstate releaseall end EventScript_19F8AD: - endtrainerbattle + ontrainerbattleend gUnknown_0819F8AE:: @ 819F8AE - specialval RESULT, sub_8082C9C + specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare RESULT, 0 - jumpeq EventScript_19F8DD + goto_if_eq EventScript_19F8DD special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, EventScript_19F8DE + goto_if 5, EventScript_19F8DE special PlayTrainerEncounterMusic special sub_8082524 - special sub_80826D8 - waittext + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - special sub_80826B0 + special ScrSpecial_StartTrainerEyeRematch waitstate releaseall end EventScript_19F8DD: - endtrainerbattle + ontrainerbattleend EventScript_19F8DE: - special sub_8082718 - waittext + special ScrSpecial_ShowTrainerNonBattlingSpeech + waitmessage waitbutton release end EventScript_19F8E5: - move LAST_TALKED, Movement_19F8F0 - waitmove 0 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 return Movement_19F8F0:: @@ -1037,117 +1037,117 @@ Movement_19F8F0:: step_end EventScript_19F8F2: - special sub_80826D8 - waittext + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - reptrainerbattle - specialval RESULT, sub_8082558 + battlebegin + specialvar RESULT, ScrSpecial_GetTrainerBattleMode compare RESULT, 0 - jumpeq EventScript_19F934 + goto_if_eq EventScript_19F934 compare RESULT, 2 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 1 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 6 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 8 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 EventScript_19F934: releaseall end EventScript_19F936: - endtrainerbattle2 + ontrainerbattleendgoto Std_6:: message 0x0 - waittext + waitmessage waitbutton release return Event_ResetBerryTrees: @ 19F940 - event_8a 2, 7, 5 - event_8a 1, 3, 5 - event_8a 11, 7, 5 - event_8a 13, 3, 5 - event_8a 4, 7, 5 - event_8a 76, 1, 5 - event_8a 8, 1, 5 - event_8a 10, 6, 5 - event_8a 25, 20, 5 - event_8a 26, 2, 5 - event_8a 66, 2, 5 - event_8a 67, 20, 5 - event_8a 69, 22, 5 - event_8a 70, 22, 5 - event_8a 71, 22, 5 - event_8a 55, 17, 5 - event_8a 56, 17, 5 - event_8a 5, 1, 5 - event_8a 6, 6, 5 - event_8a 7, 1, 5 - event_8a 16, 18, 5 - event_8a 17, 18, 5 - event_8a 18, 18, 5 - event_8a 29, 19, 5 - event_8a 28, 19, 5 - event_8a 27, 19, 5 - event_8a 24, 4, 5 - event_8a 23, 3, 5 - event_8a 22, 3, 5 - event_8a 21, 4, 5 - event_8a 19, 16, 5 - event_8a 20, 16, 5 - event_8a 80, 7, 5 - event_8a 81, 7, 5 - event_8a 77, 8, 5 - event_8a 78, 8, 5 - event_8a 68, 8, 5 - event_8a 31, 10, 5 - event_8a 33, 10, 5 - event_8a 34, 21, 5 - event_8a 35, 21, 5 - event_8a 36, 21, 5 - event_8a 83, 24, 5 - event_8a 84, 24, 5 - event_8a 85, 10, 5 - event_8a 86, 6, 5 - event_8a 37, 5, 5 - event_8a 38, 5, 5 - event_8a 39, 5, 5 - event_8a 40, 3, 5 - event_8a 41, 3, 5 - event_8a 42, 3, 5 - event_8a 46, 19, 5 - event_8a 45, 20, 5 - event_8a 44, 18, 5 - event_8a 43, 16, 5 - event_8a 47, 8, 5 - event_8a 48, 5, 5 - event_8a 49, 4, 5 - event_8a 50, 2, 5 - event_8a 52, 18, 5 - event_8a 53, 18, 5 - event_8a 62, 6, 5 - event_8a 64, 6, 5 - event_8a 58, 21, 5 - event_8a 59, 21, 5 - event_8a 60, 25, 5 - event_8a 61, 25, 5 - event_8a 79, 23, 5 - event_8a 14, 23, 5 - event_8a 15, 21, 5 - event_8a 30, 21, 5 - event_8a 65, 25, 5 - event_8a 72, 25, 5 - event_8a 73, 23, 5 - event_8a 74, 23, 5 - event_8a 87, 3, 5 - event_8a 88, 10, 5 - event_8a 89, 4, 5 - event_8a 82, 36, 5 + plantberrytree 2, 7, 5 + plantberrytree 1, 3, 5 + plantberrytree 11, 7, 5 + plantberrytree 13, 3, 5 + plantberrytree 4, 7, 5 + plantberrytree 76, 1, 5 + plantberrytree 8, 1, 5 + plantberrytree 10, 6, 5 + plantberrytree 25, 20, 5 + plantberrytree 26, 2, 5 + plantberrytree 66, 2, 5 + plantberrytree 67, 20, 5 + plantberrytree 69, 22, 5 + plantberrytree 70, 22, 5 + plantberrytree 71, 22, 5 + plantberrytree 55, 17, 5 + plantberrytree 56, 17, 5 + plantberrytree 5, 1, 5 + plantberrytree 6, 6, 5 + plantberrytree 7, 1, 5 + plantberrytree 16, 18, 5 + plantberrytree 17, 18, 5 + plantberrytree 18, 18, 5 + plantberrytree 29, 19, 5 + plantberrytree 28, 19, 5 + plantberrytree 27, 19, 5 + plantberrytree 24, 4, 5 + plantberrytree 23, 3, 5 + plantberrytree 22, 3, 5 + plantberrytree 21, 4, 5 + plantberrytree 19, 16, 5 + plantberrytree 20, 16, 5 + plantberrytree 80, 7, 5 + plantberrytree 81, 7, 5 + plantberrytree 77, 8, 5 + plantberrytree 78, 8, 5 + plantberrytree 68, 8, 5 + plantberrytree 31, 10, 5 + plantberrytree 33, 10, 5 + plantberrytree 34, 21, 5 + plantberrytree 35, 21, 5 + plantberrytree 36, 21, 5 + plantberrytree 83, 24, 5 + plantberrytree 84, 24, 5 + plantberrytree 85, 10, 5 + plantberrytree 86, 6, 5 + plantberrytree 37, 5, 5 + plantberrytree 38, 5, 5 + plantberrytree 39, 5, 5 + plantberrytree 40, 3, 5 + plantberrytree 41, 3, 5 + plantberrytree 42, 3, 5 + plantberrytree 46, 19, 5 + plantberrytree 45, 20, 5 + plantberrytree 44, 18, 5 + plantberrytree 43, 16, 5 + plantberrytree 47, 8, 5 + plantberrytree 48, 5, 5 + plantberrytree 49, 4, 5 + plantberrytree 50, 2, 5 + plantberrytree 52, 18, 5 + plantberrytree 53, 18, 5 + plantberrytree 62, 6, 5 + plantberrytree 64, 6, 5 + plantberrytree 58, 21, 5 + plantberrytree 59, 21, 5 + plantberrytree 60, 25, 5 + plantberrytree 61, 25, 5 + plantberrytree 79, 23, 5 + plantberrytree 14, 23, 5 + plantberrytree 15, 21, 5 + plantberrytree 30, 21, 5 + plantberrytree 65, 25, 5 + plantberrytree 72, 25, 5 + plantberrytree 73, 23, 5 + plantberrytree 74, 23, 5 + plantberrytree 87, 3, 5 + plantberrytree 88, 10, 5 + plantberrytree 89, 4, 5 + plantberrytree 82, 36, 5 return gUnknown_0819FA81:: @ 819FA81 @@ -1298,13 +1298,13 @@ EverGrandeCity_HallOfFame_EventScript_19FC13:: @ 819FC13 clearflag 861 special sub_810FAA0 checkflag 291 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC62 + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC62 checkflag 255 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC70 + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC70 checkflag 298 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5A + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5A checkflag 123 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5E + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5E return EverGrandeCity_HallOfFame_EventScript_19FC5A:: @ 819FC5A @@ -1325,28 +1325,28 @@ EverGrandeCity_HallOfFame_EventScript_19FC70:: @ 819FC70 setflag 2141 return -EventScript_LeagueWhiteOut:: @ 819FC74 +S_WhiteOut:: @ 819FC74 call EverGrandeCity_HallOfFame_EventScript_19FD09 call EventScript_19FC84 - jump gUnknown_0819FC9F + goto gUnknown_0819FC9F end EventScript_19FC84: checkflag 221 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC checkflag 1213 - jumpif 0, Route101_EventScript_1A14DC + goto_if 0, Route101_EventScript_1A14DC clearflag 929 setvar 0x4053, 2 return gUnknown_0819FC9F:: @ 819FC9F compare 0x4096, 1 - jumpeq EventScript_19FCC1 + goto_if_eq EventScript_19FCC1 compare 0x4096, 2 - jumpeq EventScript_19FCD7 + goto_if_eq EventScript_19FCD7 compare 0x4096, 3 - jumpeq EventScript_19FCF0 + goto_if_eq EventScript_19FCF0 end EventScript_19FCC1: @@ -1399,15 +1399,15 @@ RustboroCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B SlateportCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B VerdanturfTown_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B checkflag 188 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC checkflag 1217 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_1A14DC + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_1A14DC checkflag 742 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49 checkflag 740 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F checkflag 741 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55 return OldaleTown_PokemonCenter_1F_EventScript_19FD49:: @ 819FD49 @@ -1438,54 +1438,54 @@ SootopolisCity_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B lock faceplayer - msgbox OldaleTown_PokemonCenter_1F_Text_1A0A7D, 5 + msgbox gText_NurseJoy_Welcome, 5 compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FD7C + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FD7C compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDC7 + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDC7 end OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C - inccounter GAME_STAT_USED_POKECENTER - message OldaleTown_PokemonCenter_1F_Text_1A1245 - waittext - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F - waitmove 0 - doanimation 25 - checkanimation 25 - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845 - waitmove 0 - special HealPlayerParty + incrementgamestat GAME_STAT_USED_POKECENTER + message gText_NurseJoy_OkayIllTakeYourPokemon + waitmessage + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F + waitmovement 0 + dofieldeffect 25 + waitfieldeffect 25 + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845 + waitmovement 0 + special ScrSpecial_HealPlayerParty checkflag 273 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE - jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE + goto OldaleTown_PokemonCenter_1F_EventScript_19FDB0 end OldaleTown_PokemonCenter_1F_EventScript_19FDB0:: @ 819FDB0 - message OldaleTown_PokemonCenter_1F_Text_1A0B14 - waittext - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4 - waitmove 0 - message OldaleTown_PokemonCenter_1F_Text_1A0AFA - waittext + message gText_NurseJoy_ThankYouForWaiting + waitmessage + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4 + waitmovement 0 + message gText_NurseJoy_WeHopeToSeeYouAgain + waitmessage return OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7 - message OldaleTown_PokemonCenter_1F_Text_1A0AFA - waittext + message gText_NurseJoy_WeHopeToSeeYouAgain + waitmessage return OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE - specialval RESULT, IsPokerusInParty + specialvar RESULT, IsPokerusInParty compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDEA + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDEA compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDB0 + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDB0 end OldaleTown_PokemonCenter_1F_EventScript_19FDEA:: @ 819FDEA - message OldaleTown_PokemonCenter_1F_Text_1A1275 - waittext + message gText_NurseJoy_Pokerus + waitmessage setflag 273 return @@ -1501,13 +1501,13 @@ Std_ObtainItem: @ 819FDF7 return Std_ObtainItem_: @ 819FE07 - bufferitem 1, 0x8000 + getitemname 1, 0x8000 checkitemtype 0x8000 call GetItem_HandlePocket compare 0x8007, 0x1 - callif 1, Std_ObtainItem_Success + call_if 1, Std_ObtainItem_Success compare 0x8007, 0x0 - callif 1, Std_ObtainItem_Fail + call_if 1, Std_ObtainItem_Fail return GetItem_HandlePocket: @@ -1520,39 +1520,39 @@ GetItem_HandlePocket: end GetItem_HandlePocket_Items: - bufferstd 2, 0xE + getstdstring 2, 0xE compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_KeyItems: - bufferstd 2, 0xF + getstdstring 2, 0xF compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_PokeBalls: - bufferstd 2, 0x10 + getstdstring 2, 0x10 compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_TMsHMs: - bufferstd 2, 0x11 + getstdstring 2, 0x11 compare 0x8007, 1 - callif 1, PlayGetTMHMFanfare + call_if 1, PlayGetTMHMFanfare return GetItem_HandlePocket_Berries: - bufferstd 2, 0x12 + getstdstring 2, 0x12 compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return Std_ObtainItem_Success: @ 819FEB7 message Message_ObtainedItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem setvar RESULT, 1 return @@ -1562,11 +1562,11 @@ Std_ObtainItem_Fail: @ 819FECC return PlayGetItemFanfare: - fanfare 0x172 + playfanfare 0x172 return PlayGetTMHMFanfare: - fanfare 0x174 + playfanfare 0x174 return Std_ObtainDecoration: @ 819FEDA @@ -1576,18 +1576,18 @@ Std_ObtainDecoration: @ 819FEDA return Std_ObtainDecoration_: @ 819FEE8 - bufferdecor 1, 0x8000 + getdecorname 1, 0x8000 compare 0x8007, 1 - callif 1, Std_ObtainDecoration_Success + call_if 1, Std_ObtainDecoration_Success compare 0x8007, 0 - callif 1, Std_ObtainDecoration_Fail + call_if 1, Std_ObtainDecoration_Fail return Std_ObtainDecoration_Success: @ 819FF03 - fanfare 0x172 + playfanfare 0x172 message Message_ObtainedDecoration waitfanfare - waittext + waitmessage msgbox Message_TransferredToPC setvar RESULT, 1 return @@ -1599,24 +1599,24 @@ Std_ObtainDecoration_Fail: @ 819FF1B Std_FindItem: @ 819FF21 lock faceplayer - checksound + waitse additem 0x8000, 0x8001 copyvar 0x8007, RESULT - bufferitem 1, 0x8000 + getitemname 1, 0x8000 checkitemtype 0x8000 call GetItem_HandlePocket compare 0x8007, 1 - callif 1, Std_FindItem_Success + call_if 1, Std_FindItem_Success compare 0x8007, 0 - callif 1, Std_FindItem_Fail + call_if 1, Std_FindItem_Fail release return Std_FindItem_Success: @ 819FF52 - disappear LAST_TALKED + removeobject LAST_TALKED message Message_FoundOneItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem return @@ -1628,22 +1628,22 @@ Std_FindItem_Fail: @ 819FF65 HiddenItemScript:: @ 819FF7B lockall - checksound + waitse additem 0x8005, 1 copyvar 0x8007, RESULT - bufferitem 0x1, 0x8005 + getitemname 0x1, 0x8005 checkitemtype 0x8005 call GetItem_HandlePocket compare 0x8007, 1 - jumpeq HiddenItemScript_Success + goto_if_eq HiddenItemScript_Success compare 0x8007, 0 - jumpeq HiddenItemScript_Fail + goto_if_eq HiddenItemScript_Fail end HiddenItemScript_Success: message Message_FoundOneItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem special SetFlagInVar releaseall @@ -1661,10 +1661,10 @@ UnusedMixRecordsScript: @ 819FFD5 faceplayer msgbox UnusedMixRecordsPromptText, 5 compare RESULT, 1 - jumpeq UnusedMixRecordsScript_Yes + goto_if_eq UnusedMixRecordsScript_Yes compare RESULT, 0 - jumpeq UnusedMixRecordsScript_Done - jump UnusedMixRecordsScript_Done + goto_if_eq UnusedMixRecordsScript_Done + goto UnusedMixRecordsScript_Done UnusedMixRecordsScript_Yes: @ 819FFFA special sub_80B929C waitstate @@ -1672,7 +1672,7 @@ UnusedMixRecordsScript_Yes: @ 819FFFA faceplayer UnusedMixRecordsScript_Done: @ 81A0000 message UnusedMixRecordsSeeYouAgainText - waittext + waitmessage waitbutton release end @@ -1681,17 +1681,17 @@ gUnknown_081A0009:: @ 81A0009 lockall setvar 0x8004, 0 special DoPCTurnOnEffect - playsfx 4 + playse 4 msgbox UnknownString_81A09EC, 4 - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A0023: message gPCText_WhichPCShouldBeAccessed - waittext - special TryCreatePCMenu + waitmessage + special ScrSpecial_CreatePCMenu waitstate - jump EventScript_1A0033 + goto EventScript_1A0033 end EventScript_1A0033: @@ -1704,23 +1704,23 @@ EventScript_1A0033: end EventScript_1A0070: - playsfx 2 + playse 2 msgbox UnknownString_81A0A54, 4 special PlayerPC waitstate - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A0085: - playsfx 2 + playse 2 checkflag 2123 - callif 0, EventScript_1A00AC + call_if 0, EventScript_1A00AC checkflag 2123 - callif 1, EventScript_1A00B5 + call_if 1, EventScript_1A00B5 msgbox UnknownString_81A0A35, 4 special ShowPokemonStorageSystem waitstate - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A00AC: @@ -1733,18 +1733,18 @@ EventScript_1A00B5: EventScript_1A00BE: setvar 0x8004, 0 - playsfx 3 + playse 3 special DoPCTurnOffEffect releaseall end EventScript_1A00CB: checkflag 2052 - jumpif 0, EventScript_1A00BE - playsfx 2 + goto_if 0, EventScript_1A00BE + playse 2 special AccessHallOfFamePC waitstate - jump EventScript_1A0033 + goto EventScript_1A0033 end FallarborTown_EventScript_1A00E1:: @ 81A00E1 @@ -1803,7 +1803,7 @@ RustboroCity_Gym_EventScript_1A00FB:: @ 81A00FB DewfordTown_EventScript_1A0102:: @ 81A0102 DewfordTown_Hall_EventScript_1A0102:: @ 81A0102 - checkdailyflags + dodailyevents setvar 0x8004, 0 special sub_80FA5BC return @@ -1816,17 +1816,17 @@ Route109_EventScript_1A010C:: @ 81A010C return UseSurfScript:: @ 81A0117 - checkattack MOVE_SURF + checkpokemove MOVE_SURF compare RESULT, 6 - jumpeq UseSurfScript_NoMon - bufferpartypoke 0, RESULT - setanimation 0, RESULT + goto_if_eq UseSurfScript_NoMon + getpartypokename 0, RESULT + setfieldeffect 0, RESULT lockall msgbox UseSurfPromptText, 5 compare RESULT, 0 - jumpeq UseSurfScript_No + goto_if_eq UseSurfScript_No msgbox UsedSurfText, 4 - doanimation 9 + dofieldeffect 9 UseSurfScript_No: @ 81A014C releaseall UseSurfScript_NoMon: @ 81A014D @@ -1841,11 +1841,11 @@ Route103_EventScript_1A014E:: @ 81A014E Route110_EventScript_1A014E:: @ 81A014E Route119_EventScript_1A014E:: @ 81A014E RustboroCity_EventScript_1A014E:: @ 81A014E - checkgender + checkplayergender compare RESULT, 0 - jumpeq RustboroCity_EventScript_1A0166 + goto_if_eq RustboroCity_EventScript_1A0166 compare RESULT, 1 - jumpeq RustboroCity_EventScript_1A016C + goto_if_eq RustboroCity_EventScript_1A016C end RustboroCity_EventScript_1A0166:: @ 81A0166 @@ -1859,11 +1859,11 @@ RustboroCity_EventScript_1A016C:: @ 81A016C LavaridgeTown_EventScript_1A0172:: @ 81A0172 Route110_EventScript_1A0172:: @ 81A0172 Route119_EventScript_1A0172:: @ 81A0172 - checkgender + checkplayergender compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_1A018A + goto_if_eq LavaridgeTown_EventScript_1A018A compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_1A0190 + goto_if_eq LavaridgeTown_EventScript_1A0190 end LavaridgeTown_EventScript_1A018A:: @ 81A018A @@ -1945,66 +1945,66 @@ SootopolisCity_Gym_1F_EventScript_1A01C0:: @ 81A01C0 end DewfordTown_Gym_EventScript_1A021E:: @ 81A021E - cleartrainerflag OPPONENT_JOSH - cleartrainerflag OPPONENT_TOMMY + settrainerflag OPPONENT_JOSH + settrainerflag OPPONENT_TOMMY return DewfordTown_Gym_EventScript_1A0225:: @ 81A0225 - cleartrainerflag OPPONENT_HIDEKI - cleartrainerflag OPPONENT_TESSA - cleartrainerflag OPPONENT_LAURA + settrainerflag OPPONENT_HIDEKI + settrainerflag OPPONENT_TESSA + settrainerflag OPPONENT_LAURA return DewfordTown_Gym_EventScript_1A022F:: @ 81A022F - cleartrainerflag OPPONENT_KIRK - cleartrainerflag OPPONENT_SHAWN - cleartrainerflag OPPONENT_BEN - cleartrainerflag OPPONENT_VIVIAN + settrainerflag OPPONENT_KIRK + settrainerflag OPPONENT_SHAWN + settrainerflag OPPONENT_BEN + settrainerflag OPPONENT_VIVIAN return DewfordTown_Gym_EventScript_1A023C:: @ 81A023C - cleartrainerflag OPPONENT_COLE - cleartrainerflag OPPONENT_AXLE - cleartrainerflag OPPONENT_ANDY - cleartrainerflag OPPONENT_ZANE - cleartrainerflag OPPONENT_SADIE + settrainerflag OPPONENT_COLE + settrainerflag OPPONENT_AXLE + settrainerflag OPPONENT_ANDY + settrainerflag OPPONENT_ZANE + settrainerflag OPPONENT_SADIE return DewfordTown_Gym_EventScript_1A024C:: @ 81A024C - cleartrainerflag OPPONENT_RANDALL - cleartrainerflag OPPONENT_PARKER - cleartrainerflag OPPONENT_GEORGE - cleartrainerflag OPPONENT_BERKE - cleartrainerflag OPPONENT_MARY - cleartrainerflag OPPONENT_LORI - cleartrainerflag OPPONENT_JODY + settrainerflag OPPONENT_RANDALL + settrainerflag OPPONENT_PARKER + settrainerflag OPPONENT_GEORGE + settrainerflag OPPONENT_BERKE + settrainerflag OPPONENT_MARY + settrainerflag OPPONENT_LORI + settrainerflag OPPONENT_JODY return DewfordTown_Gym_EventScript_1A0262:: @ 81A0262 - cleartrainerflag OPPONENT_JARED - cleartrainerflag OPPONENT_TERRELL - cleartrainerflag OPPONENT_KYLEE - cleartrainerflag OPPONENT_WILL + settrainerflag OPPONENT_JARED + settrainerflag OPPONENT_TERRELL + settrainerflag OPPONENT_KYLEE + settrainerflag OPPONENT_WILL return DewfordTown_Gym_EventScript_1A026F:: @ 81A026F - cleartrainerflag OPPONENT_PRESTON - cleartrainerflag OPPONENT_VIRGIL - cleartrainerflag OPPONENT_FRITZ - cleartrainerflag OPPONENT_HANNAH - cleartrainerflag OPPONENT_SAMANTHA - cleartrainerflag OPPONENT_MAURA + settrainerflag OPPONENT_PRESTON + settrainerflag OPPONENT_VIRGIL + settrainerflag OPPONENT_FRITZ + settrainerflag OPPONENT_HANNAH + settrainerflag OPPONENT_SAMANTHA + settrainerflag OPPONENT_MAURA return DewfordTown_Gym_EventScript_1A0282:: @ 81A0282 - cleartrainerflag OPPONENT_ANDREA - cleartrainerflag OPPONENT_CRISSY - cleartrainerflag OPPONENT_BRIANNA_2 - cleartrainerflag OPPONENT_CONNIE - cleartrainerflag OPPONENT_BRIDGET - cleartrainerflag OPPONENT_OLIVIA - cleartrainerflag OPPONENT_TIFFANY - cleartrainerflag OPPONENT_MARISSA + settrainerflag OPPONENT_ANDREA + settrainerflag OPPONENT_CRISSY + settrainerflag OPPONENT_BRIANNA_2 + settrainerflag OPPONENT_CONNIE + settrainerflag OPPONENT_BRIDGET + settrainerflag OPPONENT_OLIVIA + settrainerflag OPPONENT_TIFFANY + settrainerflag OPPONENT_MARISSA return DewfordTown_Gym_EventScript_1A029B:: @ 81A029B @@ -2101,7 +2101,7 @@ MossdeepCity_Gym_EventScript_1A02C5:: @ 81A02C5 PetalburgCity_Gym_EventScript_1A02C5:: @ 81A02C5 RustboroCity_Gym_EventScript_1A02C5:: @ 81A02C5 SootopolisCity_Gym_1F_EventScript_1A02C5:: @ 81A02C5 - fanfare 369 + playfanfare 369 waitfanfare return @@ -2110,9 +2110,9 @@ Route111_OldLadysRestStop_EventScript_1A02CA:: @ 81A02CA Route119_WeatherInstitute_1F_EventScript_1A02CA:: @ 81A02CA SSTidalRooms_EventScript_1A02CA:: @ 81A02CA fadescreen 1 - fanfare 368 + playfanfare 368 waitfanfare - special HealPlayerParty + special ScrSpecial_HealPlayerParty fadescreen 0 return @@ -2129,37 +2129,37 @@ DewfordTown_EventScript_1A02E7:: @ 81A02E7 Route104_EventScript_1A02E7:: @ 81A02E7 Route109_EventScript_1A02E7:: @ 81A02E7 setflag 0x4001 - playmusic 431, 0 + playbgm 431, 0 return DewfordTown_EventScript_1A02EF:: @ 81A02EF Route104_EventScript_1A02EF:: @ 81A02EF Route109_EventScript_1A02EF:: @ 81A02EF clearflag 0x4001 - fadedefault + fadedefaultbgm return LittlerootTown_ProfessorBirchsLab_EventScript_1A02F4:: @ 81A02F4 Route101_EventScript_1A02F4:: @ 81A02F4 Route103_EventScript_1A02F4:: @ 81A02F4 compare 0x4085, 0 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC compare 0x4049, 0 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 1 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 2 - callif 1, Route101_EventScript_1A0365 + call_if 1, Route101_EventScript_1A0365 compare 0x4049, 3 - callif 1, Route101_EventScript_1A0365 + call_if 1, Route101_EventScript_1A0365 compare 0x4049, 4 - callif 1, Route101_EventScript_1A0372 + call_if 1, Route101_EventScript_1A0372 compare 0x4049, 5 - callif 1, Route101_EventScript_1A0372 + call_if 1, Route101_EventScript_1A0372 compare 0x4049, 6 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 7 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 return Route101_EventScript_1A0358:: @ 81A0358 @@ -2190,7 +2190,7 @@ Route103_EventScript_1A037F:: @ 81A037F faceplayer msgbox Route101_Text_1C4449, 5 compare RESULT, 0 - jumpeq Route101_EventScript_1A039B + goto_if_eq Route101_EventScript_1A039B call Route101_EventScript_1A03B0 release end @@ -2203,38 +2203,38 @@ Route101_EventScript_1A039B:: @ 81A039B Route101_EventScript_1A03A5:: @ 81A03A5 copyvar 0x8004, 0x8009 special ShowPokedexRatingMessage - waittext + waitmessage waitbutton return EverGrandeCity_ChampionsRoom_EventScript_1A03B0:: @ 81A03B0 Route101_EventScript_1A03B0:: @ 81A03B0 setvar 0x8004, 0 - specialval RESULT, ScriptGetPokedexInfo + specialvar RESULT, ScriptGetPokedexInfo copyvar 0x8008, 0x8005 copyvar 0x8009, 0x8006 copyvar 0x800a, RESULT - buffernum 0, 0x8008 - buffernum 1, 0x8009 + getnumberstring 0, 0x8008 + getnumberstring 1, 0x8009 msgbox Route101_Text_1C44DC, 4 call Route101_EventScript_1A03A5 compare 0x800a, 0 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC setvar 0x8004, 1 - specialval RESULT, ScriptGetPokedexInfo + specialvar RESULT, ScriptGetPokedexInfo copyvar 0x8008, 0x8005 copyvar 0x8009, 0x8006 - buffernum 0, 0x8008 - buffernum 1, 0x8009 + getnumberstring 0, 0x8008 + getnumberstring 1, 0x8009 msgbox Route101_Text_1C4B05, 4 return BattleTower_Outside_EventScript_1A040E:: @ 81A040E LilycoveCity_Harbor_EventScript_1A040E:: @ 81A040E SlateportCity_Harbor_EventScript_1A040E:: @ 81A040E - pause 60 - move 0x8004, SlateportCity_Harbor_Movement_1A041C - waitmove 0 + delay 60 + applymovement 0x8004, SlateportCity_Harbor_Movement_1A041C + waitmovement 0 return SlateportCity_Harbor_Movement_1A041C:: @ 81A041C @@ -2260,8 +2260,8 @@ PetalburgCity_Gym_EventScript_1A0424:: @ 81A0424 return RusturfTunnel_EventScript_1A0442:: @ 81A0442 - disappear 1 - disappear 10 + removeobject 1 + removeobject 10 clearflag 808 clearflag 984 setvar 0x409a, 6 @@ -2269,14 +2269,14 @@ RusturfTunnel_EventScript_1A0442:: @ 81A0442 return EventScript_1A0457: @ unreferenced? - pause 30 - move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841 - waitmove 0 - spritevisible 255, 0, 0 - pause 30 - move 255, Movement_1A047A - waitmove 0 - pause 30 + delay 30 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841 + waitmovement 0 + showobject 255, 0, 0 + delay 30 + applymovement 255, Movement_1A047A + waitmovement 0 + delay 30 return Movement_1A047A: @@ -2286,18 +2286,18 @@ Movement_1A047A: BattleTower_Outside_EventScript_1A047C:: @ 81A047C SouthernIsland_Exterior_EventScript_1A047C:: @ 81A047C compare FACING, 1 - callif 1, BattleTower_Outside_EventScript_160B2F + call_if 1, BattleTower_Outside_EventScript_160B2F compare FACING, 3 - callif 1, BattleTower_Outside_EventScript_160B3A - pause 30 - spriteinvisible 255, 0, 0 + call_if 1, BattleTower_Outside_EventScript_160B3A + delay 30 + hideobject 255, 0, 0 call BattleTower_Outside_EventScript_1A040E return CaveOfOrigin_B4F_EventScript_1A04A0:: @ 81A04A0 lockall - checksound - pokecry SPECIES_GROUDON_OR_KYOGRE, 2 + waitse + playpokecry SPECIES_GROUDON_OR_KYOGRE, 2 waitpokecry setvar 0x4005, 1 releaseall @@ -2309,20 +2309,20 @@ CaveOfOrigin_B2F_EventScript_1A04AF:: @ 81A04AF CaveOfOrigin_B3F_EventScript_1A04AF:: @ 81A04AF lockall setvar 0x4001, 1 - jump CaveOfOrigin_1F_EventScript_1A04D3 + goto CaveOfOrigin_1F_EventScript_1A04D3 end CaveOfOrigin_B2F_EventScript_1A04BB:: @ 81A04BB CaveOfOrigin_B3F_EventScript_1A04BB:: @ 81A04BB lockall setvar 0x4002, 1 - jump CaveOfOrigin_B2F_EventScript_1A04D3 + goto CaveOfOrigin_B2F_EventScript_1A04D3 end @ 81A04C7 lockall setvar 0x4003, 1 - jump CaveOfOrigin_B2F_EventScript_1A04D3 + goto CaveOfOrigin_B2F_EventScript_1A04D3 end CaveOfOrigin_1F_EventScript_1A04D3:: @ 81A04D3 @@ -2351,9 +2351,9 @@ MagmaHideout_B1F_EventScript_1A04FD:: @ 81A04FD lock faceplayer setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE - checksound - pokecry SPECIES_ELECTRODE, 2 - pause 40 + waitse + playpokecry SPECIES_ELECTRODE, 2 + delay 40 waitpokecry setflag 977 setflag 2145 @@ -2367,9 +2367,9 @@ MagmaHideout_B1F_EventScript_1A051B:: @ 81A051B lock faceplayer setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE - checksound - pokecry SPECIES_ELECTRODE, 2 - pause 40 + waitse + playpokecry SPECIES_ELECTRODE, 2 + delay 40 waitpokecry setflag 978 setflag 2145 @@ -2382,56 +2382,56 @@ Route120_EventScript_1A0539:: @ 81A0539 lock faceplayer setvar 0x8004, 1 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0546:: @ 81A0546 lock faceplayer setvar 0x8004, 2 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0553:: @ 81A0553 lock faceplayer setvar 0x8004, 3 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0560:: @ 81A0560 lock faceplayer setvar 0x8004, 4 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A056D:: @ 81A056D lock faceplayer setvar 0x8004, 5 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route119_EventScript_1A057A:: @ 81A057A lock faceplayer setvar 0x8004, 6 - jump Route119_EventScript_1A0594 + goto Route119_EventScript_1A0594 end Route119_EventScript_1A0587:: @ 81A0587 lock faceplayer setvar 0x8004, 7 - jump Route119_EventScript_1A0594 + goto Route119_EventScript_1A0594 end Route119_EventScript_1A0594:: @ 81A0594 Route120_EventScript_1A0594:: @ 81A0594 checkitem ITEM_DEVON_SCOPE, 1 compare RESULT, 1 - jumpeq Route119_EventScript_1A05AE + goto_if_eq Route119_EventScript_1A05AE msgbox Route119_Text_171B93, 4 release end @@ -2439,36 +2439,36 @@ Route120_EventScript_1A0594:: @ 81A0594 Route119_EventScript_1A05AE:: @ 81A05AE msgbox Route119_Text_171BB6, 5 compare RESULT, 1 - jumpeq Route119_EventScript_1A05C3 + goto_if_eq Route119_EventScript_1A05C3 release end Route119_EventScript_1A05C3:: @ 81A05C3 msgbox Route119_Text_171BF6, 4 - closebutton - move LAST_TALKED, Route119_Movement_1A0839 - waitmove 0 - move LAST_TALKED, Route119_Movement_1A0662 - waitmove 0 - checksound - pokecry SPECIES_KECLEON, 2 - pause 40 + closemessage + applymovement LAST_TALKED, Route119_Movement_1A0839 + waitmovement 0 + applymovement LAST_TALKED, Route119_Movement_1A0662 + waitmovement 0 + waitse + playpokecry SPECIES_KECLEON, 2 + delay 40 waitpokecry setwildbattle SPECIES_KECLEON, 30, ITEM_NONE compare 0x8004, 1 - callif 1, Route119_EventScript_1A0646 + call_if 1, Route119_EventScript_1A0646 compare 0x8004, 2 - callif 1, Route119_EventScript_1A064A + call_if 1, Route119_EventScript_1A064A compare 0x8004, 3 - callif 1, Route119_EventScript_1A064E + call_if 1, Route119_EventScript_1A064E compare 0x8004, 4 - callif 1, Route119_EventScript_1A0652 + call_if 1, Route119_EventScript_1A0652 compare 0x8004, 5 - callif 1, Route119_EventScript_1A0656 + call_if 1, Route119_EventScript_1A0656 compare 0x8004, 6 - callif 1, Route119_EventScript_1A065A + call_if 1, Route119_EventScript_1A065A compare 0x8004, 7 - callif 1, Route119_EventScript_1A065E + call_if 1, Route119_EventScript_1A065E setflag 2145 dowildbattle clearflag 2145 @@ -2542,10 +2542,10 @@ FallarborTown_House1_EventScript_1A067F:: @ 81A067F GraniteCave_StevensRoom_EventScript_1A067F:: @ 81A067F MtPyre_Summit_EventScript_1A067F:: @ 81A067F SlateportCity_OceanicMuseum_2F_EventScript_1A067F:: @ 81A067F - bufferitem 0, 0x8004 - fanfare 372 + getitemname 0, 0x8004 + playfanfare 372 message FallarborTown_House1_Text_1A1498 - waittext + waitmessage waitfanfare removeitem 0x8004, 1 return @@ -2554,9 +2554,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_GlaciasRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_PhoebesRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693 - move 255, EverGrandeCity_SidneysRoom_Movement_1A0853 - waitmove 0 - playsfx 8 + applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0853 + waitmovement 0 + playse 8 setmaptile 6, 1, 836, 0 setmaptile 6, 2, 837, 0 setmaptile 0, 2, 734, 1 @@ -2576,9 +2576,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_GlaciasRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_PhoebesRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_SidneysRoom_EventScript_1A0710:: @ 81A0710 - move 255, EverGrandeCity_SidneysRoom_Movement_1A0847 - waitmove 0 - playsfx 52 + applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0847 + waitmovement 0 + playse 52 setmaptile 5, 12, 518, 1 setmaptile 6, 12, 518, 1 setmaptile 7, 12, 518, 1 @@ -2986,16 +2986,16 @@ UnknownString_81A0A54: @ 81A0A54 UnknownString_81A0A66: @ 81A0A66 .string "Verbindung zu LANETTES PC hergestellt.$" -OldaleTown_PokemonCenter_1F_Text_1A0A7D:: @ 81A0A7D +gText_NurseJoy_Welcome:: @ 81A0A7D .string "Willkommen im POKéMON-CENTER!\p" .string "Wir heilen deine POKéMON und\n" .string "machen sie wieder fit.\p" .string "O.K. Wir benötigen deine POKéMON.$" -OldaleTown_PokemonCenter_1F_Text_1A0AFA:: @ 81A0AFA +gText_NurseJoy_WeHopeToSeeYouAgain:: @ 81A0AFA .string "Komm jederzeit wieder vorbei!$" -OldaleTown_PokemonCenter_1F_Text_1A0B14:: @ 81A0B14 +gText_NurseJoy_ThankYouForWaiting:: @ 81A0B14 .string "Danke!\p" .string "Deine POKéMON sind wieder topfit!$" @@ -3214,11 +3214,11 @@ SlateportCity_Text_1A116E:: @ 81A116E .string "nehmen und dir unter der Hand tolle\l" .string "Sachen verkaufen.$" -OldaleTown_PokemonCenter_1F_Text_1A1245:: @ 81A1245 +gText_NurseJoy_OkayIllTakeYourPokemon:: @ 81A1245 .string "Okay, ich nehme deine POKéMON für einen\n" .string "Moment in meine Obhut.$" -OldaleTown_PokemonCenter_1F_Text_1A1275:: @ 81A1275 +gText_NurseJoy_Pokerus:: @ 81A1275 .string "Dein POKéMON scheint von dem\n" .string "POKéRUS befallen zu sein.\p" .string "Über den POKéRUS ist bisher wenig be-\n" @@ -3264,13 +3264,13 @@ gUnknown_081A14B8:: @ 81A14B8 special ExecuteWhiteOut waitstate compare RESULT, 1 - jumpeq EventScript_1A14CA + goto_if_eq EventScript_1A14CA releaseall end EventScript_1A14CA:: message UnknownString_81A1141 - waittext + waitmessage waitbutton special sub_8081924 waitstate @@ -3619,44 +3619,44 @@ gUnknown_081A2C51:: @ 81A2C51 special sub_80BB70C special sub_80BB63C compare RESULT, 1 - jumpeq EventScript_1A2E45 - checkattack MOVE_SECRET_POWER - setanimation 0, RESULT - bufferattack 1, MOVE_SECRET_POWER + goto_if_eq EventScript_1A2E45 + checkpokemove MOVE_SECRET_POWER + setfieldeffect 0, RESULT + getmovename 1, MOVE_SECRET_POWER compare 0x8007, 1 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 2 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 3 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 4 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 5 - jumpeq EventScript_1A2D08 + goto_if_eq EventScript_1A2D08 compare 0x8007, 6 - jumpeq EventScript_1A2D60 + goto_if_eq EventScript_1A2D60 end EventScript_1A2CB0: lockall compare RESULT, 6 - jumpeq EventScript_1A2CF1 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2CF1 + getpartypokename 0, RESULT msgbox UnknownString_8198F34, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 11 + closemessage + dofieldeffect 11 waitstate - jump EventScript_1A2CFA + goto EventScript_1A2CFA end gUnknown_081A2CE6:: @ 81A2CE6 lockall - doanimation 11 + dofieldeffect 11 waitstate - jump EventScript_1A2CFA + goto EventScript_1A2CFA end EventScript_1A2CF1: @@ -3665,29 +3665,29 @@ EventScript_1A2CF1: EventScript_1A2CFA: msgbox UnknownString_8198F6E, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2D08: lockall compare RESULT, 6 - jumpeq EventScript_1A2D49 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2D49 + getpartypokename 0, RESULT msgbox UnknownString_81A197B, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 26 + closemessage + dofieldeffect 26 waitstate - jump EventScript_1A2D52 + goto EventScript_1A2D52 end gUnknown_081A2D3E:: @ 81A2D3E lockall - doanimation 26 + dofieldeffect 26 waitstate - jump EventScript_1A2D52 + goto EventScript_1A2D52 end EventScript_1A2D49: @@ -3696,29 +3696,29 @@ EventScript_1A2D49: EventScript_1A2D52: msgbox UnknownString_81A19C4, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2D60: lockall compare RESULT, 6 - jumpeq EventScript_1A2DA1 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2DA1 + getpartypokename 0, RESULT msgbox UnknownString_81A1A4B, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 27 + closemessage + dofieldeffect 27 waitstate - jump EventScript_1A2DAA + goto EventScript_1A2DAA end gUnknown_081A2D96:: @ 81A2D96 lockall - doanimation 27 + dofieldeffect 27 waitstate - jump EventScript_1A2DAA + goto EventScript_1A2DAA end EventScript_1A2DA1: @@ -3727,12 +3727,12 @@ EventScript_1A2DA1: EventScript_1A2DAA: msgbox UnknownString_81A1AA9, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2DB8: - closebutton - playsfx 9 + closemessage + playse 9 setvar 0x4097, 0 setflag 173 special sub_80BB8CC @@ -3745,19 +3745,19 @@ EventScript_1A2DB8: end SecretBase_RedCave1_EventScript_1A2DDE:: @ 81A2DDE - move 255, SecretBase_RedCave1_Movement_1A2E11 - waitmove 0 + applymovement 255, SecretBase_RedCave1_Movement_1A2E11 + waitmovement 0 setvar 0x4097, 1 msgbox SecretBase_RedCave1_Text_198F89, 5 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A2E08 - closebutton - playsfx 9 + goto_if_eq SecretBase_RedCave1_EventScript_1A2E08 + closemessage + playse 9 special sub_80BC440 end SecretBase_RedCave1_EventScript_1A2E08:: @ 81A2E08 - closebutton + closemessage setflag 96 special sub_80BBC78 waitstate @@ -3771,10 +3771,10 @@ SecretBase_RedCave1_Movement_1A2E11:: @ 81A2E11 gUnknown_081A2E14:: @ 81A2E14 lockall setvar 0x4097, 1 - playsfx 9 + playse 9 special sub_80BC114 compare RESULT, 0 - jumpeq EventScript_1A2E38 + goto_if_eq EventScript_1A2E38 clearflag 173 special sub_80BBAF0 setvar 0x4089, 0 @@ -3789,63 +3789,63 @@ EventScript_1A2E38: end EventScript_1A2E45: - checkattack MOVE_SECRET_POWER + checkpokemove MOVE_SECRET_POWER compare RESULT, 6 - jumpeq EventScript_1A2EF7 - setanimation 0, RESULT + goto_if_eq EventScript_1A2EF7 + setfieldeffect 0, RESULT setorcopyvar 0x8004, RESULT lockall special GetSecretBaseNearbyMapName msgbox UnknownString_81A3C71, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UnknownString_81A38FB, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A fadescreen 1 special sub_80BC50C - closebutton + closemessage fadescreen 0 msgbox UnknownString_81A3CC9, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A - bufferpartypoke 0, 0x8004 - bufferattack 1, MOVE_SECRET_POWER + goto_if_eq EventScript_1A2F3A + getpartypokename 0, 0x8004 + getmovename 1, MOVE_SECRET_POWER msgbox UsedCutRockSmashText, 4 - closebutton - closebutton + closemessage + closemessage compare 0x8007, 1 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 2 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 3 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 4 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 5 - jumpeq gUnknown_081A2D3E + goto_if_eq gUnknown_081A2D3E compare 0x8007, 6 - jumpeq gUnknown_081A2D96 + goto_if_eq gUnknown_081A2D96 releaseall end EventScript_1A2EF7:: compare 0x8007, 1 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 2 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 3 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 4 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 5 - jumpeq EventScript_1A2D49 + goto_if_eq EventScript_1A2D49 compare 0x8007, 6 - jumpeq EventScript_1A2DA1 + goto_if_eq EventScript_1A2DA1 end EventScript_1A2F3A:: - closebutton + closemessage releaseall end @@ -3879,7 +3879,7 @@ SecretBase_RedCave1_EventScript_1A2F68:: @ 81A2F68 gUnknown_081A2F7B:: @ 81A2F7B setvar 0x8005, 0 - jump EventScript_1A2F86 + goto EventScript_1A2F86 end EventScript_1A2F86: @@ -3888,19 +3888,19 @@ EventScript_1A2F86: gUnknown_081A2F8A:: @ 81A2F8A setvar 0x8004, 0 - jump EventScript_1A2F95 + goto EventScript_1A2F95 end EventScript_1A2F95: special sub_8100A7C compare RESULT, 1 - jumpeq EventScript_1A2FBF + goto_if_eq EventScript_1A2FBF addvar 0x8004, 1 compare 0x8005, 0 - jumpeq EventScript_1A2F95 - disappear 0x8006 + goto_if_eq EventScript_1A2F95 + removeobject 0x8006 setflag 0x8005 - jump EventScript_1A2F95 + goto EventScript_1A2F95 end EventScript_1A2FBF: @@ -3932,45 +3932,45 @@ SecretBase_YellowCave3_EventScript_1A2FC0:: @ 81A2FC0 SecretBase_YellowCave4_EventScript_1A2FC0:: @ 81A2FC0 special sub_80BCE90 compare 0x8004, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3032 + goto_if_eq SecretBase_RedCave1_EventScript_1A3032 compare 0x8004, 1 - jumpeq SecretBase_RedCave1_EventScript_1A30AE + goto_if_eq SecretBase_RedCave1_EventScript_1A30AE compare 0x8004, 2 - jumpeq SecretBase_RedCave1_EventScript_1A312A + goto_if_eq SecretBase_RedCave1_EventScript_1A312A compare 0x8004, 3 - jumpeq SecretBase_RedCave1_EventScript_1A31A6 + goto_if_eq SecretBase_RedCave1_EventScript_1A31A6 compare 0x8004, 4 - jumpeq SecretBase_RedCave1_EventScript_1A3222 + goto_if_eq SecretBase_RedCave1_EventScript_1A3222 compare 0x8004, 5 - jumpeq SecretBase_RedCave1_EventScript_1A329E + goto_if_eq SecretBase_RedCave1_EventScript_1A329E compare 0x8004, 6 - jumpeq SecretBase_RedCave1_EventScript_1A331A + goto_if_eq SecretBase_RedCave1_EventScript_1A331A compare 0x8004, 7 - jumpeq SecretBase_RedCave1_EventScript_1A3396 + goto_if_eq SecretBase_RedCave1_EventScript_1A3396 compare 0x8004, 8 - jumpeq SecretBase_RedCave1_EventScript_1A3412 + goto_if_eq SecretBase_RedCave1_EventScript_1A3412 compare 0x8004, 9 - jumpeq SecretBase_RedCave1_EventScript_1A348E + goto_if_eq SecretBase_RedCave1_EventScript_1A348E end SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3086 + goto_if 0, SecretBase_RedCave1_EventScript_1A3086 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A30A5 + goto_if_eq SecretBase_RedCave1_EventScript_1A30A5 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1AEA, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A308F + goto_if_eq SecretBase_RedCave1_EventScript_1A308F setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A308F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A308F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1B83, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086 @@ -3980,7 +3980,7 @@ SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086 SecretBase_RedCave1_EventScript_1A308F:: @ 81A308F setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1B97, 2 end @@ -3990,22 +3990,22 @@ SecretBase_RedCave1_EventScript_1A30A5:: @ 81A30A5 SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3102 + goto_if 0, SecretBase_RedCave1_EventScript_1A3102 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3121 + goto_if_eq SecretBase_RedCave1_EventScript_1A3121 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1E67, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A310B + goto_if_eq SecretBase_RedCave1_EventScript_1A310B setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A310B - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A310B + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1F04, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102 @@ -4015,7 +4015,7 @@ SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102 SecretBase_RedCave1_EventScript_1A310B:: @ 81A310B setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1F2E, 2 end @@ -4025,22 +4025,22 @@ SecretBase_RedCave1_EventScript_1A3121:: @ 81A3121 SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A317E + goto_if 0, SecretBase_RedCave1_EventScript_1A317E compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A319D + goto_if_eq SecretBase_RedCave1_EventScript_1A319D lock faceplayer msgbox SecretBase_RedCave1_Text_1A218F, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3187 + goto_if_eq SecretBase_RedCave1_EventScript_1A3187 setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3187 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3187 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2220, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E @@ -4050,7 +4050,7 @@ SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E SecretBase_RedCave1_EventScript_1A3187:: @ 81A3187 setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2230, 2 end @@ -4060,22 +4060,22 @@ SecretBase_RedCave1_EventScript_1A319D:: @ 81A319D SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A31FA + goto_if 0, SecretBase_RedCave1_EventScript_1A31FA compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3219 + goto_if_eq SecretBase_RedCave1_EventScript_1A3219 lock faceplayer msgbox SecretBase_RedCave1_Text_1A24E1, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3203 + goto_if_eq SecretBase_RedCave1_EventScript_1A3203 setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3203 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3203 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A256F, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA @@ -4085,7 +4085,7 @@ SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA SecretBase_RedCave1_EventScript_1A3203:: @ 81A3203 setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A258A, 2 end @@ -4095,22 +4095,22 @@ SecretBase_RedCave1_EventScript_1A3219:: @ 81A3219 SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3276 + goto_if 0, SecretBase_RedCave1_EventScript_1A3276 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3295 + goto_if_eq SecretBase_RedCave1_EventScript_1A3295 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2830, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A327F + goto_if_eq SecretBase_RedCave1_EventScript_1A327F setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A327F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A327F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A28D7, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276 @@ -4120,7 +4120,7 @@ SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276 SecretBase_RedCave1_EventScript_1A327F:: @ 81A327F setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A28F4, 2 end @@ -4130,22 +4130,22 @@ SecretBase_RedCave1_EventScript_1A3295:: @ 81A3295 SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A32F2 + goto_if 0, SecretBase_RedCave1_EventScript_1A32F2 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3311 + goto_if_eq SecretBase_RedCave1_EventScript_1A3311 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1CB2, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A32FB + goto_if_eq SecretBase_RedCave1_EventScript_1A32FB setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A32FB - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A32FB + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1D48, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2 @@ -4155,7 +4155,7 @@ SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2 SecretBase_RedCave1_EventScript_1A32FB:: @ 81A32FB setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1D59, 2 end @@ -4165,22 +4165,22 @@ SecretBase_RedCave1_EventScript_1A3311:: @ 81A3311 SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A336E + goto_if 0, SecretBase_RedCave1_EventScript_1A336E compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A338D + goto_if_eq SecretBase_RedCave1_EventScript_1A338D lock faceplayer msgbox SecretBase_RedCave1_Text_1A2026, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3377 + goto_if_eq SecretBase_RedCave1_EventScript_1A3377 setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3377 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3377 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2095, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E @@ -4190,7 +4190,7 @@ SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E SecretBase_RedCave1_EventScript_1A3377:: @ 81A3377 setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A20AE, 2 end @@ -4200,22 +4200,22 @@ SecretBase_RedCave1_EventScript_1A338D:: @ 81A338D SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A33EA + goto_if 0, SecretBase_RedCave1_EventScript_1A33EA compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3409 + goto_if_eq SecretBase_RedCave1_EventScript_1A3409 lock faceplayer msgbox SecretBase_RedCave1_Text_1A236A, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A33F3 + goto_if_eq SecretBase_RedCave1_EventScript_1A33F3 setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A33F3 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A33F3 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2405, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA @@ -4225,7 +4225,7 @@ SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA SecretBase_RedCave1_EventScript_1A33F3:: @ 81A33F3 setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2420, 2 end @@ -4235,22 +4235,22 @@ SecretBase_RedCave1_EventScript_1A3409:: @ 81A3409 SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3466 + goto_if 0, SecretBase_RedCave1_EventScript_1A3466 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3485 + goto_if_eq SecretBase_RedCave1_EventScript_1A3485 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2663, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A346F + goto_if_eq SecretBase_RedCave1_EventScript_1A346F setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A346F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A346F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2710, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466 @@ -4260,7 +4260,7 @@ SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466 SecretBase_RedCave1_EventScript_1A346F:: @ 81A346F setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2736, 2 end @@ -4270,22 +4270,22 @@ SecretBase_RedCave1_EventScript_1A3485:: @ 81A3485 SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A34E2 + goto_if 0, SecretBase_RedCave1_EventScript_1A34E2 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3501 + goto_if_eq SecretBase_RedCave1_EventScript_1A3501 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2A13, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A34EB + goto_if_eq SecretBase_RedCave1_EventScript_1A34EB setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A34EB - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A34EB + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2AE2, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2 @@ -4295,7 +4295,7 @@ SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2 SecretBase_RedCave1_EventScript_1A34EB:: @ 81A34EB setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2AFB, 2 end @@ -4309,7 +4309,7 @@ SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A setvar 0x8005, 0 special sub_813556C waitstate - special HealPlayerParty + special ScrSpecial_HealPlayerParty release end @@ -4406,7 +4406,7 @@ FallarborTown_ContestLobby_EventScript_1ADE46:: @ 81ADE46 SlateportCity_OceanicMuseum_1F_EventScript_1ADE46:: @ 81ADE46 SlateportCity_PokemonFanClub_EventScript_1ADE46:: @ 81ADE46 special sub_80BDE48 - inccounter GAME_STAT_GOT_INTERVIEWED + incrementgamestat GAME_STAT_GOT_INTERVIEWED release end @@ -4414,13 +4414,13 @@ SlateportCity_PokemonFanClub_EventScript_1ADE4D:: @ 81ADE4D setvar 0x8005, 1 special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADED6 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADED6 copyvar 0x8009, 0x8006 msgbox SlateportCity_PokemonFanClub_Text_1A8704, 5 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE84 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE84 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9 end SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84 @@ -4432,9 +4432,9 @@ SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84 lock faceplayer compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEC3 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEC3 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9 end SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9 @@ -4445,7 +4445,7 @@ SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9 SlateportCity_PokemonFanClub_EventScript_1ADEC3:: @ 81ADEC3 msgbox SlateportCity_PokemonFanClub_Text_1A8818, 4 setvar 0x8005, 1 - jump SlateportCity_PokemonFanClub_EventScript_1ADE46 + goto SlateportCity_PokemonFanClub_EventScript_1ADE46 end SlateportCity_PokemonFanClub_EventScript_1ADED6:: @ 81ADED6 @@ -4459,24 +4459,24 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADEE0:: @ 81ADEE0 setvar 0x8005, 2 special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96 copyvar 0x8009, 0x8006 checkflag 105 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25 setflag 105 msgbox SlateportCity_OceanicMuseum_1F_Text_1A927F, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF25:: @ 81ADF25 msgbox SlateportCity_OceanicMuseum_1F_Text_1A934C, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44 @@ -4488,9 +4488,9 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44 lock faceplayer compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79 @@ -4501,7 +4501,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79 SlateportCity_OceanicMuseum_1F_EventScript_1ADF83:: @ 81ADF83 msgbox SlateportCity_OceanicMuseum_1F_Text_1A949A, 4 setvar 0x8005, 2 - jump SlateportCity_OceanicMuseum_1F_EventScript_1ADE46 + goto SlateportCity_OceanicMuseum_1F_EventScript_1ADE46 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96 @@ -4512,19 +4512,19 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96 SlateportCity_PokemonFanClub_EventScript_1ADFA0:: @ 81ADFA0 lock faceplayer - specialval RESULT, sub_80BF544 + specialvar RESULT, sub_80BF544 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE4D + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE4D setvar 0x8005, 3 special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0AC + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0AC copyvar 0x8009, 0x8006 msgbox SlateportCity_PokemonFanClub_Text_1A82F1, 5 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADFE9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADFE9 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 end SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9 @@ -4539,17 +4539,17 @@ SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9 SlateportCity_PokemonFanClub_EventScript_1AE020:: @ 81AE020 msgbox SlateportCity_PokemonFanClub_Text_1A8414, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE02E:: @ 81AE02E msgbox SlateportCity_PokemonFanClub_Text_1A8470, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE03C:: @ 81AE03C msgbox SlateportCity_PokemonFanClub_Text_1A84D5, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A @@ -4560,18 +4560,18 @@ SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A lock faceplayer compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 msgbox SlateportCity_PokemonFanClub_Text_1A852D, 4 setvar 0x8006, 1 call SlateportCity_PokemonFanClub_EventScript_1A00F3 lock faceplayer compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 msgbox SlateportCity_PokemonFanClub_Text_1A85A6, 4 copyvar 0x8007, 0x800a setvar 0x8005, 3 - jump SlateportCity_PokemonFanClub_EventScript_1ADE46 + goto SlateportCity_PokemonFanClub_EventScript_1ADE46 end SlateportCity_PokemonFanClub_EventScript_1AE0A2:: @ 81AE0A2 @@ -4591,17 +4591,17 @@ VerdanturfTown_ContestLobby_EventScript_1AE0B6:: @ 81AE0B6 lock faceplayer checkflag 2 - jumpeq FallarborTown_ContestLobby_EventScript_1AE17E + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E setvar 0x8005, 6 special sub_80BF2C4 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE17E + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E copyvar 0x8009, 0x8006 msgbox FallarborTown_ContestLobby_Text_1A6F7C, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE0F8 + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE0F8 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D end FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8 @@ -4613,9 +4613,9 @@ FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8 lock faceplayer compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE137 + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE137 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D end FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D @@ -4634,11 +4634,11 @@ FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137 lock faceplayer compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D msgbox FallarborTown_ContestLobby_Text_1A7153, 4 setflag 2 setvar 0x8005, 6 - jump FallarborTown_ContestLobby_EventScript_1ADE46 + goto FallarborTown_ContestLobby_EventScript_1ADE46 end FallarborTown_ContestLobby_EventScript_1AE17E:: @ 81AE17E @@ -4651,11 +4651,11 @@ LilycoveCity_ContestLobby_EventScript_1AE188:: @ 81AE188 SlateportCity_ContestLobby_EventScript_1AE188:: @ 81AE188 VerdanturfTown_ContestLobby_EventScript_1AE188:: @ 81AE188 compare 0x4086, 2 - jumpif 5, FallarborTown_ContestLobby_EventScript_1AE1FE + goto_if 5, FallarborTown_ContestLobby_EventScript_1AE1FE setvar 0x8005, 6 special sub_80BF2C4 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE1FE + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE1FE switch 0x4088 case 0, FallarborTown_ContestLobby_EventScript_1AE1FE case 2, FallarborTown_ContestLobby_EventScript_1AE1EE @@ -4688,28 +4688,28 @@ BattleTower_Lobby_EventScript_1AE1FF:: @ 81AE1FF lock faceplayer checkflag 2 - jumpeq BattleTower_Lobby_EventScript_1AE2E3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2E3 setvar 0x8005, 7 special sub_80BF2C4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE2E3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2E3 copyvar 0x8009, 0x8006 msgbox BattleTower_Lobby_Text_1A776D, 5 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE241 + goto_if_eq BattleTower_Lobby_EventScript_1AE241 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE297 + goto_if_eq BattleTower_Lobby_EventScript_1AE297 end BattleTower_Lobby_EventScript_1AE241:: @ 81AE241 message BattleTower_Lobby_Text_1A7823 - waittext + waitmessage multichoice 19, 8, 45, 1 copyvar 0x8008, RESULT compare RESULT, 0 - callif 1, BattleTower_Lobby_EventScript_1AE2A1 + call_if 1, BattleTower_Lobby_EventScript_1AE2A1 compare RESULT, 1 - callif 1, BattleTower_Lobby_EventScript_1AE2AA + call_if 1, BattleTower_Lobby_EventScript_1AE2AA msgbox BattleTower_Lobby_Text_1A79EB, 4 setvar 0x8004, 12 copyvar 0x8005, 0x8009 @@ -4717,9 +4717,9 @@ BattleTower_Lobby_EventScript_1AE241:: @ 81AE241 lock faceplayer compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE2B3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2B3 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE2D9 + goto_if_eq BattleTower_Lobby_EventScript_1AE2D9 end BattleTower_Lobby_EventScript_1AE297:: @ 81AE297 @@ -4737,12 +4737,12 @@ BattleTower_Lobby_EventScript_1AE2AA:: @ 81AE2AA BattleTower_Lobby_EventScript_1AE2B3:: @ 81AE2B3 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE2D9 + goto_if_eq BattleTower_Lobby_EventScript_1AE2D9 msgbox BattleTower_Lobby_Text_1A7A6E, 4 setflag 2 copyvar 0x8004, 0x8008 setvar 0x8005, 7 - jump BattleTower_Lobby_EventScript_1ADE46 + goto BattleTower_Lobby_EventScript_1ADE46 end BattleTower_Lobby_EventScript_1AE2D9:: @ 81AE2D9 @@ -4757,11 +4757,11 @@ BattleTower_Lobby_EventScript_1AE2E3:: @ 81AE2E3 BattleTower_Lobby_EventScript_1AE2ED:: @ 81AE2ED compare 0x40bc, 0 - jumpeq BattleTower_Lobby_EventScript_1AE30F + goto_if_eq BattleTower_Lobby_EventScript_1AE30F setvar 0x8005, 7 special sub_80BF2C4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE30F + goto_if_eq BattleTower_Lobby_EventScript_1AE30F clearflag 918 return @@ -4771,16 +4771,7 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F .include "data/scripts/gabby_and_ty.inc" - .include "data/scripts/bard.inc" - .include "data/scripts/hipster.inc" - .include "data/text/trader.inc" - .include "data/scripts/trader.inc" - .include "data/text/storyteller.inc" - .include "data/scripts/storyteller.inc" - .include "data/text/giddy.inc" - .include "data/scripts/giddy.inc" - .include "data/text/bard.inc" - .include "data/text/hipster.inc" + .include "data/scripts/mauville_man.inc" .include "data/field_move_scripts.inc" .include "data/item_ball_scripts.inc" @@ -4804,13 +4795,13 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F .include "data/text/magma_summit.inc" gUnknown_081B694A:: @ 81B694A - lighten 1 - darken 1 + animdarklevel 1 + setdarklevel 1 end .include "data/scripts/players_house.inc" -Event_RunningShoesManual:: @ 81B6E5A +S_RunningShoesManual:: @ 81B6E5A msgbox UnknownString_81728E3, 3 end @@ -4819,7 +4810,7 @@ Event_RunningShoesManual:: @ 81B6E5A .include "data/text/trainers.inc" -Event_RepelWoreOff:: @ 81C33E6 +S_RepelWoreOff:: @ 81C33E6 msgbox Text_RepelWoreOff, 3 end @@ -4832,25 +4823,25 @@ Text_RepelWoreOff: @ 81C33EF MauvilleCity_GameCorner_EventScript_1C407E:: @ 81C407E checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 0 - event_96 2 + getpricereduction 2 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1C40DA + goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA addvar 0x8004, 128 - jump MauvilleCity_GameCorner_EventScript_1C40DA + goto MauvilleCity_GameCorner_EventScript_1C40DA end MauvilleCity_GameCorner_EventScript_1C40AC:: @ 81C40AC checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 1 - event_96 2 + getpricereduction 2 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1C40DA + goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA addvar 0x8004, 128 - jump MauvilleCity_GameCorner_EventScript_1C40DA + goto MauvilleCity_GameCorner_EventScript_1C40DA end MauvilleCity_GameCorner_EventScript_1C40DA:: @ 81C40DA @@ -4899,7 +4890,7 @@ GraniteCave_B1F_MapScript2_1C6BB5:: @ 81C6BB5 MtPyre_2F_MapScript2_1C6BB5:: @ 81C6BB5 SkyPillar_2F_MapScript2_1C6BB5:: @ 81C6BB5 SkyPillar_4F_MapScript2_1C6BB5:: @ 81C6BB5 - map_script_2 0x4022, 0, GraniteCave_B1F_EventScript_1C6BC5 + map_script_2 0x4022, 0, S_FallDownHole .2byte 0 GraniteCave_B1F_MapScript1_1C6BBF:: @ 81C6BBF @@ -4909,24 +4900,24 @@ SkyPillar_4F_MapScript1_1C6BBF:: @ 81C6BBF copyvar 0x4022, 0x1 end -GraniteCave_B1F_EventScript_1C6BC5:: @ 81C6BC5 +S_FallDownHole:: @ 81C6BC5 lockall - pause 20 - move 255, GraniteCave_B1F_Movement_1C6BF7 - waitmove 0 - playsfx 43 - pause 60 + delay 20 + applymovement 255, GraniteCave_B1F_Movement_1C6BF7 + waitmovement 0 + playse 43 + delay 60 warphole UNDEFINED waitstate end gUnknown_081C6BDE:: @ 81C6BDE lockall - pause 20 - move 255, GraniteCave_B1F_Movement_1C6BF7 - waitmove 0 - playsfx 43 - pause 60 + delay 20 + applymovement 255, GraniteCave_B1F_Movement_1C6BF7 + waitmovement 0 + playse 43 + delay 60 special sp13F_fall_to_last_warp waitstate end @@ -4958,9 +4949,9 @@ gUnknown_081C6C02:: @ 81C6C02 @ 81C6C1D lockall - braillemsg Underwater_SealedChamber_Braille_1C533D + braillemessage Underwater_SealedChamber_Braille_1C533D waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data-de/field_move_scripts.inc b/data-de/field_move_scripts.inc index 91c3dcca8..497408299 100644 --- a/data-de/field_move_scripts.inc +++ b/data-de/field_move_scripts.inc @@ -1,34 +1,34 @@ -CuttableTreeScript:: @ 81B0DCC +S_CuttableTree:: @ 81B0DCC lockall checkflag 2055 - jumpif 0, CannotUseCut - checkattack MOVE_CUT + goto_if 0, CannotUseCut + checkpokemove MOVE_CUT compare RESULT, 6 - jumpeq CannotUseCut - setanimation 0, RESULT - bufferpartypoke 0, RESULT - bufferattack 1, MOVE_CUT + goto_if_eq CannotUseCut + setfieldeffect 0, RESULT + getpartypokename 0, RESULT + getmovename 1, MOVE_CUT msgbox UseCutPromptText, 5 compare RESULT, 0 - jumpeq Cut_ChoseNo + goto_if_eq Cut_ChoseNo msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 2 + closemessage + dofieldeffect 2 waitstate - jump DoTreeCutMovement + goto DoTreeCutMovement end -UseCutScript:: @ 81B0E16 +S_UseCut:: @ 81B0E16 lockall - doanimation 2 + dofieldeffect 2 waitstate - jump DoTreeCutMovement + goto DoTreeCutMovement end DoTreeCutMovement: @ 81B0E21 - move LAST_TALKED, TreeCutMovement @ tree cut animation - waitmove 0 - disappear LAST_TALKED @ tree disappears + applymovement LAST_TALKED, TreeCutMovement @ tree cut animation + waitmovement 0 + removeobject LAST_TALKED @ tree disappears releaseall end @@ -42,7 +42,7 @@ CannotUseCut: @ 81B0E32 end Cut_ChoseNo: @ 81B0E3C - closebutton + closemessage releaseall end @@ -59,43 +59,43 @@ CannotUseCutText: @ 81B0E8E .string "Der ZERSCHNEIDER kann hier eingesetzt\n" .string "werden.$" -BreakableRockScript:: @ 81B0EB7 +S_BreakableRock:: @ 81B0EB7 lockall checkflag 2057 - jumpif 0, CannotUseRockSmash - checkattack MOVE_ROCK_SMASH + goto_if 0, CannotUseRockSmash + checkpokemove MOVE_ROCK_SMASH compare RESULT, 6 - jumpeq CannotUseRockSmash - setanimation 0, RESULT - bufferpartypoke 0, RESULT - bufferattack 1, MOVE_ROCK_SMASH + goto_if_eq CannotUseRockSmash + setfieldeffect 0, RESULT + getpartypokename 0, RESULT + getmovename 1, MOVE_ROCK_SMASH msgbox UseRockSmashPromptText, 5 compare RESULT, 0 - jumpeq RockSmash_ChoseNo + goto_if_eq RockSmash_ChoseNo msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 37 + closemessage + dofieldeffect 37 waitstate - jump DoRockSmashMovement + goto DoRockSmashMovement end -UseRockSmashScript:: @ 81B0F01 +S_UseRockSmash:: @ 81B0F01 lockall - doanimation 37 + dofieldeffect 37 waitstate - jump DoRockSmashMovement + goto DoRockSmashMovement end DoRockSmashMovement: @ 81B0F0C - move LAST_TALKED, RockSmashMovement - waitmove 0 - disappear LAST_TALKED - specialval RESULT, sub_810F5BC + applymovement LAST_TALKED, RockSmashMovement + waitmovement 0 + removeobject LAST_TALKED + specialvar RESULT, sub_810F5BC compare RESULT, 1 - jumpeq DoRockSmashMovement_Done - special RockSmashWildEncounter + goto_if_eq DoRockSmashMovement_Done + special ScrSpecial_RockSmashWildEncounter compare RESULT, 0 - jumpeq DoRockSmashMovement_Done + goto_if_eq DoRockSmashMovement_Done waitstate releaseall end @@ -114,7 +114,7 @@ CannotUseRockSmash: @ 81B0F3E end RockSmash_ChoseNo: @ 81B0F48 - closebutton + closemessage releaseall end @@ -126,30 +126,30 @@ CannotUseRockSmashText: @ 81B0F90 .string "Ein großer Felsen. Ein POKéMON könnte\n" .string "ihn vielleicht zertrümmern.$" -PushableBoulderScript:: @ 81B0FCB +S_PushableBoulder:: @ 81B0FCB lockall checkflag 2058 - jumpif 0, CannotUseStrength + goto_if 0, CannotUseStrength checkflag 2089 - jumpeq AlreadyUsedStrength - checkattack 70 + goto_if_eq AlreadyUsedStrength + checkpokemove 70 compare RESULT, 6 - jumpeq CannotUseStrength - setanimation 0, RESULT + goto_if_eq CannotUseStrength + setfieldeffect 0, RESULT msgbox UseStrengthPromptText, 5 compare RESULT, 0 - jumpeq Strength_ChoseNo - closebutton - doanimation 40 + goto_if_eq Strength_ChoseNo + closemessage + dofieldeffect 40 waitstate - jump UsedStrength + goto UsedStrength end -UseStrengthScript:: @ 81B100E +S_UseStrength:: @ 81B100E lockall - doanimation 40 + dofieldeffect 40 waitstate - jump UsedStrength + goto UsedStrength end UsedStrength: @ 81B1019 @@ -169,7 +169,7 @@ AlreadyUsedStrength: @ 81B1030 end Strength_ChoseNo: @ 81B103A - closebutton + closemessage releaseall end @@ -191,21 +191,21 @@ AlreadyUsedStrengthText: @ 81B1127 .string "STÄRKE ermöglicht es, Felsen zu\n" .string "bewegen.$" -UseWaterfallScript:: @ 81B115A +S_UseWaterfall:: @ 81B115A lockall - checkattack MOVE_WATERFALL + checkpokemove MOVE_WATERFALL compare RESULT, 6 - jumpeq Waterfall_NoMonKnows - bufferpartypoke 0, RESULT - setanimation 0, RESULT + goto_if_eq Waterfall_NoMonKnows + getpartypokename 0, RESULT + setfieldeffect 0, RESULT msgbox UseWaterfallPromptText, 5 compare RESULT, 0 - jumpeq Waterfall_Done + goto_if_eq Waterfall_Done msgbox UsedWaterfallText, 4 - doanimation 43 - jump Waterfall_Done + dofieldeffect 43 + goto Waterfall_Done -CannotUseWaterfallScript:: @ 81B1194 +S_CannotUseWaterfall:: @ 81B1194 lockall Waterfall_NoMonKnows: @ 81B1195 msgbox CannotUseWaterfallText, 4 @@ -226,18 +226,18 @@ UsedWaterfallText: @ 81B120D UseDiveScript:: @ 81B1220 lockall - checkattack MOVE_DIVE + checkpokemove MOVE_DIVE compare RESULT, 6 - jumpeq CannotUseDive - bufferpartypoke 0, RESULT - setanimation 0, RESULT - setanimation 1, 1 + goto_if_eq CannotUseDive + getpartypokename 0, RESULT + setfieldeffect 0, RESULT + setfieldeffect 1, 1 msgbox UseDivePromptText, 5 compare RESULT, 0 - jumpeq Dive_Done + goto_if_eq Dive_Done msgbox UsedDiveText, 4 - doanimation 44 - jump Dive_Done + dofieldeffect 44 + goto Dive_Done lockall CannotUseDive: @ 81B125F @@ -247,25 +247,25 @@ Dive_Done: @ 81B1267 releaseall end -UnderwaterUseDiveScript:: @ 81B1269 +S_UseDiveUnderwater:: @ 81B1269 lockall - checkattack MOVE_DIVE + checkpokemove MOVE_DIVE compare RESULT, 6 - jumpeq UnderwaterCannotUseDive - bufferpartypoke 0, RESULT - setanimation 0, RESULT - setanimation 1, 1 + goto_if_eq UnderwaterCannotUseDive + getpartypokename 0, RESULT + setfieldeffect 0, RESULT + setfieldeffect 1, 1 msgbox UnderwaterUseDivePromptText, 5 compare RESULT, 0 - jumpeq UnderwaterDive_Done + goto_if_eq UnderwaterDive_Done msgbox UsedDiveText, 4 - doanimation 44 - jump UnderwaterDive_Done + dofieldeffect 44 + goto UnderwaterDive_Done UnderwaterCannotUseDive: @ 81B12A7 lockall msgbox UnderwaterCannotUseDiveText, 4 - jump UnderwaterDive_Done + goto UnderwaterDive_Done @ not used SurfacingBlocked: @ 81B12B5 diff --git a/data-de/text/bard.inc b/data-de/text/bard.inc index 089741d00..dbfb7d400 100644 --- a/data-de/text/bard.inc +++ b/data-de/text/bard.inc @@ -1,20 +1,20 @@ -UnknownString_81B0A83: @ 81B0A83 +gTextBard_BardTesting: @ 81B0A83 .string "BARDEN Test.$" -MauvilleCity_PokemonCenter_1F_Text_1B0A91:: @ 81B0A91 +gTextBard_HiImTheBard:: @ 81B0A91 .string "Hallo, ich bin der BARDE.\n" .string "Möchtest du meinem Lied lauschen?$" -MauvilleCity_PokemonCenter_1F_Text_1B0AC3:: @ 81B0AC3 +gTextBard_OhYouveLeftMe:: @ 81B0AC3 .string "Oh...\n" .string "Du überlässt mich meinem Blues?$" -MauvilleCity_PokemonCenter_1F_Text_1B0AED:: @ 81B0AED +gTextBard_OhWhatAMovingSong:: @ 81B0AED .string "Hach, was für ein bewegendes Lied...\n" .string "Ich wünschte, ich könnte es für\l" .string "andere spielen...$" -MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C +gTextBard_SoHowDoYouLikeMySong:: @ 81B0B2C .string "So?\n" .string "Wie fandest du mein Lied?\p" .string "Ich bin noch nicht ganz zufrieden mit\n" @@ -22,17 +22,17 @@ MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C .string "Hast du nicht Lust, den Text für mich\n" .string "neu zu schreiben?$" -MauvilleCity_PokemonCenter_1F_Text_1B0BA6:: @ 81B0BA6 +gTextBard_OhYouveLeftMe2:: @ 81B0BA6 .string "Oh... Und wieder werde ich meinem\n" .string "Blues überlassen.$" -MauvilleCity_PokemonCenter_1F_Text_1B0BD0:: @ 81B0BD0 +gTextBard_ThankYouKindly:: @ 81B0BD0 .string "Vielen herzlichen Dank!\n" .string "Ich möchte für dich singen.$" -MauvilleCity_PokemonCenter_1F_Text_1B0BFA:: @ 81B0BFA +gTextBard_WasThatHowYouWanted:: @ 81B0BFA .string "Hast du dir dein Lied so vorgestellt?$" -MauvilleCity_PokemonCenter_1F_Text_1B0C23:: @ 81B0C23 +gTextBard_OkayThatsIt:: @ 81B0C23 .string "Okay! Das ist es! Dieses Lied werde\n" .string "ich nun für eine Weile singen.$" diff --git a/data-de/text/giddy.inc b/data-de/text/giddy.inc index 6e1a46883..8bc5bebda 100644 --- a/data-de/text/giddy.inc +++ b/data-de/text/giddy.inc @@ -1,16 +1,16 @@ -MauvilleCity_PokemonCenter_1F_Text_1B092A:: @ 81B092A +gTextGiddy_Introduction:: @ 81B092A .string "Ich bin MÄRCHEN-MAN! Ich habe eine sehr\n" .string "geistreiche Geschichte für dich!\p" .string "Soll ich sie dir erzählen?$" -MauvilleCity_PokemonCenter_1F_Text_1B097C:: @ 81B097C +gTextGiddy_YouveDeflatedMe:: @ 81B097C .string "Oh...\n" .string "Du hast mir die Luft rausgelassen...$" -MauvilleCity_PokemonCenter_1F_Text_1B0998:: @ 81B0998 +gTextGiddy_AlsoIWasThinking:: @ 81B0998 .string "Und ich war in Gedanken vertieft...$" -MauvilleCity_PokemonCenter_1F_Text_1B09B0:: @ 81B09B0 +gTextGiddy_ByeBye:: @ 81B09B0 .string "Das wäre alles, glaube ich...\p" .string "Wir sollten bald wieder ein Schwätzchen\n" .string "halten! Tschüss!$" diff --git a/data-de/text/hipster.inc b/data-de/text/hipster.inc index c315b523d..8801b05fd 100644 --- a/data-de/text/hipster.inc +++ b/data-de/text/hipster.inc @@ -1,18 +1,18 @@ -MauvilleCity_PokemonCenter_1F_Text_1B0C5B:: @ 81B0C5B +gTextHipster_TheyCallMeTheHipster:: @ 81B0C5B .string "Hey, yo! Man nennt mich TRENDWIG. Ich\n" .string "zeige dir, was hip ist und abgeht.$" -MauvilleCity_PokemonCenter_1F_Text_1B0CA7:: @ 81B0CA7 +gTextHipster_TaughtYouAlready:: @ 81B0CA7 .string "Aber, hey, ich habe dir doch schon ge-\n" .string "zeigt, was hip ist und abgeht.\p" .string "Ich will das auch anderen mitteilen.$" -MauvilleCity_PokemonCenter_1F_Text_1B0D11:: @ 81B0D11 +gTextHipster_YouAlreadyKnowALot:: @ 81B0D11 .string "Aber, hey, ich habe dir doch schon ge-\n" .string "zeigt, was hip ist und abgeht.\p" .string "Ich habe nichts mehr in petto.$" -MauvilleCity_PokemonCenter_1F_Text_1B0D75:: @ 81B0D75 +gTextHipster_HaveYouHeardAbout:: @ 81B0D75 .string "Hast du schon von\n" .string "“{STR_VAR_1}” gehört?\p" .string "Was das heißt? Ähäm...\n" diff --git a/data-de/text/storyteller.inc b/data-de/text/storyteller.inc index ee2068766..abcc8a4a8 100644 --- a/data-de/text/storyteller.inc +++ b/data-de/text/storyteller.inc @@ -1,25 +1,25 @@ -MauvilleCity_PokemonCenter_1F_Text_1AECC6:: @ 81AECC6 +gTextStoryteller_Introduction:: @ 81AECC6 .string "Ich bin der GESCHICHTENERZÄHLER.\n" .string "Ich erzähle dir die Geschichten von\l" .string "legendären TRAINERN.\p" .string "Soll ich dir etwas erzählen?$" -MauvilleCity_PokemonCenter_1F_Text_1AED1D:: @ 81AED1D +gTextStoryteller_OhIFeelStifled:: @ 81AED1D .string "Oh...\n" .string "Keiner mag mich...$" -MauvilleCity_PokemonCenter_1F_Text_1AED35:: @ 81AED35 +gTextStoryteller_WhichTale:: @ 81AED35 .string "Ich kenne viele dieser Legenden.\n" .string "Welche möchtest du hören?$" -MauvilleCity_PokemonCenter_1F_Text_1AED70:: @ 81AED70 +gTextStoryteller_ButIKnowOfNoLegendaryTrainers:: @ 81AED70 .string "Aber ich weiß nichts über legendäre\n" .string "TRAINER. Also habe ich keine Ge-\l" .string "schichte auf Lager.\p" .string "Wo findet man wohl einen TRAINER, der\n" .string "einer lebenden Legende gleicht?$" -MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8 +gTextStoryteller_BirthOfANewLegend:: @ 81AEDE8 .string "Was ist?\n" .string "Du... Du...\p" .string "{STR_VAR_2}\n" @@ -27,39 +27,39 @@ MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8 .string "Das ist einfach großartig!\n" .string "Die Geburt einer neuen Legende!$" -MauvilleCity_PokemonCenter_1F_Text_1AEE50:: @ 81AEE50 +gTextStoryteller_CouldThereBeOtherTrainers:: @ 81AEE50 .string "Ich überlege, ob es nicht noch andere\n" .string "TRAINER gibt, die mir beeindruckende\l" .string "Geschichten erzählen können.$" -MauvilleCity_PokemonCenter_1F_Text_1AEEB4:: @ 81AEEB4 +gTextStoryteller_HaveYouAnyTales:: @ 81AEEB4 .string "Bist du ein TRAINER?\p" .string "Dann sag mir, ob du Geschichten\n" .string "für mich hast, die legendär sind?$" -MauvilleCity_PokemonCenter_1F_Text_1AEF0A:: @ 81AEF0A +gTextStoryteller_HearAnotherLegendaryTale:: @ 81AEF0A .string "Übrigens... Möchtest du eine weitere\n" .string "legendäre Geschichte hören?$" -MauvilleCity_PokemonCenter_1F_Text_1AEF49:: @ 81AEF49 +gTextStoryteller_ImNotSatisfied:: @ 81AEF49 .string "Hmm...\n" .string "Ich bin nicht zufrieden...\p" .string "Ich wünschte, du würdest mir Neuig-\n" .string "keiten erzählen, die den Titel Legende\l" .string "verdienen.$" -MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5 +gTextStoryteller_WishMorePeopleWould:: @ 81AEFA5 .string "Ich wollte, mehr Leute würden sich für\n" .string "meine epischen Geschichten über\l" .string "legendäre TRAINER interessieren.$" -UnknownString_81AEFFC:: @ 81AEFFC +gTextStoryteller_Story1Title:: @ 81AEFFC .string "Der speicherfreudige TRAINER$" -UnknownString_81AF013:: @ 81AF013 +gTextStoryteller_Story1Action:: @ 81AF013 .string "Hast das Spiel gespeichert?$" -UnknownString_81AF022:: @ 81AF022 +gTextStoryteller_Story1Text:: @ 81AF022 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat das Spiel\n" @@ -67,13 +67,13 @@ UnknownString_81AF022:: @ 81AF022 .string "Einen vorsichtigeren TRAINER als\n" .string "{STR_VAR_3} wird man nicht finden!$" -UnknownString_81AF0A3:: @ 81AF0A3 +gTextStoryteller_Story2Title:: @ 81AF0A3 .string "Der TRAINER als Trendsetter$" -UnknownString_81AF0BB:: @ 81AF0BB +gTextStoryteller_Story2Action:: @ 81AF0BB .string "Hast Trends gesetzt?$" -UnknownString_81AF0CA:: @ 81AF0CA +gTextStoryteller_Story2Text:: @ 81AF0CA .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -81,13 +81,13 @@ UnknownString_81AF0CA:: @ 81AF0CA .string "{STR_VAR_3} setzt den Trend für alle - in\n" .string "der ganzen HOENN-Region!$" -UnknownString_81AF149:: @ 81AF149 +gTextStoryteller_Story3Title:: @ 81AF149 .string "Der BEEREN pflanzende TRAINER$" -UnknownString_81AF164:: @ 81AF164 +gTextStoryteller_Story3Action:: @ 81AF164 .string "Hast BEEREN gepflanzt?$" -UnknownString_81AF174:: @ 81AF174 +gTextStoryteller_Story3Text:: @ 81AF174 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -95,13 +95,13 @@ UnknownString_81AF174:: @ 81AF174 .string "{STR_VAR_3} ist ein legendärer Lieb-\n" .string "haber von BEEREN!$" -UnknownString_81AF1E5:: @ 81AF1E5 +gTextStoryteller_Story4Title:: @ 81AF1E5 .string "Der RAD verrückte TRAINER$" -UnknownString_81AF1FD:: @ 81AF1FD +gTextStoryteller_Story4Action:: @ 81AF1FD .string "Hast RÄDER getauscht?$" -UnknownString_81AF20A:: @ 81AF20A +gTextStoryteller_Story4Text:: @ 81AF20A .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -109,13 +109,13 @@ UnknownString_81AF20A:: @ 81AF20A .string "{STR_VAR_3} ist ein TRAINER, dessen\n" .string "Passion das RADfahren ist!$" -UnknownString_81AF281:: @ 81AF281 +gTextStoryteller_Story5Title:: @ 81AF281 .string "Der Interviews gebende TRAINER$" -UnknownString_81AF299:: @ 81AF299 +gTextStoryteller_Story5Action:: @ 81AF299 .string "Hast Interviews gegeben?$" -UnknownString_81AF2A9:: @ 81AF2A9 +gTextStoryteller_Story5Text:: @ 81AF2A9 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER wurde {STR_VAR_1}-mal\n" @@ -123,13 +123,13 @@ UnknownString_81AF2A9:: @ 81AF2A9 .string "{STR_VAR_3} ist ein TRAINER, der überall\n" .string "Aufmerksamkeit erregt!$" -UnknownString_81AF32C:: @ 81AF32C +gTextStoryteller_Story6Title:: @ 81AF32C .string "Der kampfliebende TRAINER$" -UnknownString_81AF345:: @ 81AF345 +gTextStoryteller_Story6Action:: @ 81AF345 .string "Hast oft gekämpft?$" -UnknownString_81AF34D:: @ 81AF34D +gTextStoryteller_Story6Text:: @ 81AF34D .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -137,13 +137,13 @@ UnknownString_81AF34D:: @ 81AF34D .string "{STR_VAR_3} ist ein TRAINER, der zu\n" .string "einem Kampf nicht nein sagt!$" -UnknownString_81AF3D0:: @ 81AF3D0 +gTextStoryteller_Story7Title:: @ 81AF3D0 .string "Der POKéMON fangende TRAINER$" -UnknownString_81AF3ED:: @ 81AF3ED +gTextStoryteller_Story7Action:: @ 81AF3ED .string "Hast POKéMON gefangen?$" -UnknownString_81AF3FC:: @ 81AF3FC +gTextStoryteller_Story7Text:: @ 81AF3FC .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}\n" @@ -151,13 +151,13 @@ UnknownString_81AF3FC:: @ 81AF3FC .string "{STR_VAR_3} ist ein legendärer Fänger\n" .string "von POKéMON!$" -UnknownString_81AF46D:: @ 81AF46D +gTextStoryteller_Story8Title:: @ 81AF46D .string "Der angelnde TRAINER$" -UnknownString_81AF481:: @ 81AF481 +gTextStoryteller_Story8Action:: @ 81AF481 .string "Hast POKéMON mit einer ANGEL gefangen?$" -UnknownString_81AF49B:: @ 81AF49B +gTextStoryteller_Story8Text:: @ 81AF49B .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}\n" @@ -165,13 +165,13 @@ UnknownString_81AF49B:: @ 81AF49B .string "{STR_VAR_3} ist ein legendärer Angel-\n" .string "experte!$" -UnknownString_81AF511:: @ 81AF511 +gTextStoryteller_Story9Title:: @ 81AF511 .string "Der EIER wärmende TRAINER$" -UnknownString_81AF529:: @ 81AF529 +gTextStoryteller_Story9Action:: @ 81AF529 .string "Hast EIER ausgebrütet?$" -UnknownString_81AF536:: @ 81AF536 +gTextStoryteller_Story9Text:: @ 81AF536 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Es passierte {STR_VAR_1}-mal, dass der TRAINER\n" @@ -179,13 +179,13 @@ UnknownString_81AF536:: @ 81AF536 .string "{STR_VAR_3} ist ein legendärer Pfleger\n" .string "von EIERN!$" -UnknownString_81AF5A9:: @ 81AF5A9 +gTextStoryteller_Story10Title:: @ 81AF5A9 .string "Der TRAINER der Entwicklungen$" -UnknownString_81AF5BD:: @ 81AF5BD +gTextStoryteller_Story10Action:: @ 81AF5BD .string "Hast POKéMON sich entwickeln lassen?$" -UnknownString_81AF5CD:: @ 81AF5CD +gTextStoryteller_Story10Text:: @ 81AF5CD .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}\n" @@ -193,13 +193,13 @@ UnknownString_81AF5CD:: @ 81AF5CD .string "{STR_VAR_3} ist der ultimative Ent-\n" .string "wickler von POKéMON!$" -UnknownString_81AF63F:: @ 81AF63F +gTextStoryteller_Story11Title:: @ 81AF63F .string "Der PKMN-CENTER liebende TRAINER$" -UnknownString_81AF661:: @ 81AF661 +gTextStoryteller_Story11Action:: @ 81AF661 .string "Gingst in ein POKéMON-CENTER?$" -UnknownString_81AF676:: @ 81AF676 +gTextStoryteller_Story11Text:: @ 81AF676 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat POKéMON\n" @@ -208,13 +208,13 @@ UnknownString_81AF676:: @ 81AF676 .string "Es gibt keinen größeren Fan der\n" .string "POKéMON-CENTER als {STR_VAR_3}!$" -UnknownString_81AF711:: @ 81AF711 +gTextStoryteller_Story12Title:: @ 81AF711 .string "Der gastfreundliche TRAINER$" -UnknownString_81AF726:: @ 81AF726 +gTextStoryteller_Story12Action:: @ 81AF726 .string "POKéMON haben sich bei dir erholt?$" -UnknownString_81AF73D:: @ 81AF73D +gTextStoryteller_Story12Text:: @ 81AF73D .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat POKéMON\n" @@ -223,13 +223,13 @@ UnknownString_81AF73D:: @ 81AF73D .string "Kein TRAINER ist so gastfreundlich\n" .string "wie {STR_VAR_3}!$" -UnknownString_81AF7BF:: @ 81AF7BF +gTextStoryteller_Story13Title:: @ 81AF7BF .string "Der SAFARI liebende TRAINER$" -UnknownString_81AF7D9:: @ 81AF7D9 +gTextStoryteller_Story13Action:: @ 81AF7D9 .string "Bist in die SAFARI-ZONE gegangen?$" -UnknownString_81AF7F1:: @ 81AF7F1 +gTextStoryteller_Story13Text:: @ 81AF7F1 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER ist {STR_VAR_1}-mal in die\n" @@ -238,13 +238,13 @@ UnknownString_81AF7F1:: @ 81AF7F1 .string "wilde Seite in der SAFARI-ZONE zum\l" .string "Vorschein kommt!$" -UnknownString_81AF88A:: @ 81AF88A +gTextStoryteller_Story14Title:: @ 81AF88A .string "Der TRAINER als ZERSCHNEIDER$" -UnknownString_81AF8A1:: @ 81AF8A1 +gTextStoryteller_Story14Action:: @ 81AF8A1 .string "Hast ZERSCHNEIDER eingesetzt?$" -UnknownString_81AF8AA:: @ 81AF8AA +gTextStoryteller_Story14Text:: @ 81AF8AA .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -252,13 +252,13 @@ UnknownString_81AF8AA:: @ 81AF8AA .string "{STR_VAR_3} ist ein TRAINER, der es\n" .string "liebt, etwas zu ZERSCHNEIDEN.$" -UnknownString_81AF91B:: @ 81AF91B +gTextStoryteller_Story15Title:: @ 81AF91B .string "Der TRAINER als ZERTRÜMMERER$" -UnknownString_81AF935:: @ 81AF935 +gTextStoryteller_Story15Action:: @ 81AF935 .string "Hast Felsen ZERTRÜMMERT?$" -UnknownString_81AF943:: @ 81AF943 +gTextStoryteller_Story15Text:: @ 81AF943 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -266,13 +266,13 @@ UnknownString_81AF943:: @ 81AF943 .string "{STR_VAR_3} ist ein TRAINER, der keinen\n" .string "Felsen unbeschädigt lassen kann.$" -UnknownString_81AF9C8:: @ 81AF9C8 +gTextStoryteller_Story16Title:: @ 81AF9C8 .string "Der Umzüge liebende TRAINER$" -UnknownString_81AF9E0:: @ 81AF9E0 +gTextStoryteller_Story16Action:: @ 81AF9E0 .string "Bist du mit der GEHEIMBASIS umgezogen?$" -UnknownString_81AF9F6:: @ 81AF9F6 +gTextStoryteller_Story16Text:: @ 81AF9F6 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER ist {STR_VAR_1}-mal mit\n" @@ -280,13 +280,13 @@ UnknownString_81AF9F6:: @ 81AF9F6 .string "{STR_VAR_3} ist ein TRAINER, der es\n" .string "liebt, sich ein neues Haus einzurichten.$" -UnknownString_81AFA79:: @ 81AFA79 +gTextStoryteller_Story17Title:: @ 81AFA79 .string "Der PLATSCHER des TRAINERS$" -UnknownString_81AFA92:: @ 81AFA92 +gTextStoryteller_Story17Action:: @ 81AFA92 .string "Hast PLATSCHER eingesetzt?$" -UnknownString_81AFA9E:: @ 81AFA9E +gTextStoryteller_Story17Text:: @ 81AFA9E .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -294,13 +294,13 @@ UnknownString_81AFA9E:: @ 81AFA9E .string "{STR_VAR_3} ist ein TRAINER, der es\n" .string "liebt, zu PLATSCHEN.$" -UnknownString_81AFB17:: @ 81AFB17 +gTextStoryteller_Story18Title:: @ 81AFB17 .string "Der verbissene TRAINER$" -UnknownString_81AFB2D:: @ 81AFB2D +gTextStoryteller_Story18Action:: @ 81AFB2D .string "Hast VERZWEIFLER angewendet?$" -UnknownString_81AFB48:: @ 81AFB48 +gTextStoryteller_Story18Text:: @ 81AFB48 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat sich {STR_VAR_1}-mal\n" @@ -308,13 +308,13 @@ UnknownString_81AFB48:: @ 81AFB48 .string "{STR_VAR_3}... Ein verbissener TRAINER,\n" .string "der auch in der Not nicht aufgibt.$" -UnknownString_81AFBD8:: @ 81AFBD8 +gTextStoryteller_Story19Title:: @ 81AFBD8 .string "Der König der EINARMIGEN BANDITEN$" -UnknownString_81AFBE7:: @ 81AFBE7 +gTextStoryteller_Story19Action:: @ 81AFBE7 .string "Hast den EINARMIGEN BANDITEN besiegt?$" -UnknownString_81AFC04:: @ 81AFC04 +gTextStoryteller_Story19Text:: @ 81AFC04 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -322,13 +322,13 @@ UnknownString_81AFC04:: @ 81AFC04 .string "{STR_VAR_3}... Ein TRAINER, der am\n" .string "EINARMIGEN BANDITEN Glück hat.$" -UnknownString_81AFC8A:: @ 81AFC8A +gTextStoryteller_Story20Title:: @ 81AFC8A .string "Der König des ROULETTES$" -UnknownString_81AFC9D:: @ 81AFC9D +gTextStoryteller_Story20Action:: @ 81AFC9D .string "Hast in Folge beim ROULETTE gewonnen,$" -UnknownString_81AFCBE:: @ 81AFCBE +gTextStoryteller_Story20Text:: @ 81AFCBE .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal in Folge\n" @@ -336,13 +336,13 @@ UnknownString_81AFCBE:: @ 81AFCBE .string "{STR_VAR_3}... Ein TRAINER, dem die Kugel\n" .string "beim ROULETTE gehorcht.$" -UnknownString_81AFD44:: @ 81AFD44 +gTextStoryteller_Story21Title:: @ 81AFD44 .string "Der Herausforderer im DUELLTURM$" -UnknownString_81AFD60:: @ 81AFD60 +gTextStoryteller_Story21Action:: @ 81AFD60 .string "Hast Gegner im DUELLTURM gefordert?$" -UnknownString_81AFD80:: @ 81AFD80 +gTextStoryteller_Story21Text:: @ 81AFD80 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal Gegner\n" @@ -350,13 +350,13 @@ UnknownString_81AFD80:: @ 81AFD80 .string "{STR_VAR_3}... Ein TRAINER, der im DUELL-\n" .string "TURM nach Perfektion strebt.$" -UnknownString_81AFE1D:: @ 81AFE1D +gTextStoryteller_Story22Title:: @ 81AFE1D .string "Der mixende TRAINER$" -UnknownString_81AFE36:: @ 81AFE36 +gTextStoryteller_Story22Action:: @ 81AFE36 .string "Hast {POKEBLOCK} hergestellt?$" -UnknownString_81AFE42:: @ 81AFE42 +gTextStoryteller_Story22Text:: @ 81AFE42 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -364,13 +364,13 @@ UnknownString_81AFE42:: @ 81AFE42 .string "Niemand bedient den BEERENMIXER\n" .string "besser als {STR_VAR_3}.$" -UnknownString_81AFEC2:: @ 81AFEC2 +gTextStoryteller_Story23Title:: @ 81AFEC2 .string "Der Fan der WETTBEWERBE$" -UnknownString_81AFEDD:: @ 81AFEDD +gTextStoryteller_Story23Action:: @ 81AFEDD .string "Hast an WETTBEWERBEN teilgenommen?$" -UnknownString_81AFEEE:: @ 81AFEEE +gTextStoryteller_Story23Text:: @ 81AFEEE .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -378,13 +378,13 @@ UnknownString_81AFEEE:: @ 81AFEEE .string "{STR_VAR_3} liebt es, anderen seine\n" .string "POKéMON zu zeigen.$" -UnknownString_81AFF68:: @ 81AFF68 +gTextStoryteller_Story24Title:: @ 81AFF68 .string "Der Meister der WETTBEWERBE$" -UnknownString_81AFF7B:: @ 81AFF7B +gTextStoryteller_Story24Action:: @ 81AFF7B .string "Hast WETTBEWERBE gewonnen?$" -UnknownString_81AFF88:: @ 81AFF88 +gTextStoryteller_Story24Text:: @ 81AFF88 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -392,26 +392,26 @@ UnknownString_81AFF88:: @ 81AFF88 .string "{STR_VAR_3} ist ein unvergleichlicher\n" .string "Meister der WETTBEWERBE.$" -UnknownString_81AFFFB:: @ 81AFFFB +gTextStoryteller_Story25Title:: @ 81AFFFB .string "Der glückliche Einkäufer$" -UnknownString_81B000D:: @ 81B000D +gTextStoryteller_Story25Action:: @ 81B000D .string "Bist einkaufen gegangen?$" -UnknownString_81B0015:: @ 81B0015 +gTextStoryteller_Story25Text:: @ 81B0015 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" .string "in einem Geschäft Items gekauft!\p" .string "{STR_VAR_3} ein geborener Einkäufer.$" -UnknownString_81B009D:: @ 81B009D +gTextStoryteller_Story26Title:: @ 81B009D .string "Der TRAINER, der Items findet$" -UnknownString_81B00B6:: @ 81B00B6 +gTextStoryteller_Story26Action:: @ 81B00B6 .string "Hast den DETEKTOR eingesetzt?$" -UnknownString_81B00C9:: @ 81B00C9 +gTextStoryteller_Story26Text:: @ 81B00C9 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -419,13 +419,13 @@ UnknownString_81B00C9:: @ 81B00C9 .string "{STR_VAR_3} liebt es, den Boden nach\n" .string "verborgenen Items abzusuchen.$" -UnknownString_81B014D:: @ 81B014D +gTextStoryteller_Story27Title:: @ 81B014D .string "Der regennasse TRAINER$" -UnknownString_81B0165:: @ 81B0165 +gTextStoryteller_Story27Action:: @ 81B0165 .string "Wurdest nass geregnet?$" -UnknownString_81B0173:: @ 81B0173 +gTextStoryteller_Story27Text:: @ 81B0173 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER wurde {STR_VAR_1}-mal\n" @@ -433,13 +433,13 @@ UnknownString_81B0173:: @ 81B0173 .string "Das Charisma von {STR_VAR_3} zieht\n" .string "sogar den Regen an.$" -UnknownString_81B01E9:: @ 81B01E9 +gTextStoryteller_Story28Title:: @ 81B01E9 .string "Der passionierte POKéDEX-Leser$" -UnknownString_81B0201:: @ 81B0201 +gTextStoryteller_Story28Action:: @ 81B0201 .string "Hast im POKéDEX nachgeschlagen?$" -UnknownString_81B0213:: @ 81B0213 +gTextStoryteller_Story28Text:: @ 81B0213 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -447,13 +447,13 @@ UnknownString_81B0213:: @ 81B0213 .string "{STR_VAR_3} liebt es, alles über\n" .string "POKéMON im POKéDEX nachzulesen.$" -UnknownString_81B0290:: @ 81B0290 +gTextStoryteller_Story29Title:: @ 81B0290 .string "Der Sammler der BÄNDER$" -UnknownString_81B02A5:: @ 81B02A5 +gTextStoryteller_Story29Action:: @ 81B02A5 .string "Hast BÄNDER erhalten?$" -UnknownString_81B02B6:: @ 81B02B6 +gTextStoryteller_Story29Text:: @ 81B02B6 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}\n" @@ -461,13 +461,13 @@ UnknownString_81B02B6:: @ 81B02B6 .string "{STR_VAR_3} ist ein TRAINER, der es\n" .string "liebt, BÄNDER zu sammeln.$" -UnknownString_81B0337:: @ 81B0337 +gTextStoryteller_Story30Title:: @ 81B0337 .string "Der springende TRAINER$" -UnknownString_81B0351:: @ 81B0351 +gTextStoryteller_Story30Action:: @ 81B0351 .string "Bist Absätze heruntergesprungen?$" -UnknownString_81B0364:: @ 81B0364 +gTextStoryteller_Story30Text:: @ 81B0364 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER ist {STR_VAR_1}-mal\n" @@ -476,26 +476,26 @@ UnknownString_81B0364:: @ 81B0364 .string "TRAINER {STR_VAR_3} einfach hinab-\l" .string "springen.$" -UnknownString_81B03E9:: @ 81B03E9 +gTextStoryteller_Story31Title:: @ 81B03E9 .string "Der legendäre Fernsehzuschauer$" -UnknownString_81B0401:: @ 81B0401 +gTextStoryteller_Story31Action:: @ 81B0401 .string "Hast ferngeschaut?$" -UnknownString_81B040C:: @ 81B040C +gTextStoryteller_Story31Text:: @ 81B040C .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" .string "Fernsehen geschaut!\p" .string "{STR_VAR_3} liebt es, fernzusehen.$" -UnknownString_81B046E:: @ 81B046E +gTextStoryteller_Story32Title:: @ 81B046E .string "Der zeitbewusste TRAINER$" -UnknownString_81B0489:: @ 81B0489 +gTextStoryteller_Story32Action:: @ 81B0489 .string "Hast nach der Uhrzeit gesehen?$" -UnknownString_81B049A:: @ 81B049A +gTextStoryteller_Story32Text:: @ 81B049A .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -503,13 +503,13 @@ UnknownString_81B049A:: @ 81B049A .string "{STR_VAR_3} ist ein pünktlicher\n" .string "TRAINER, der sich der Zeit bewusst ist.$" -UnknownString_81B0523:: @ 81B0523 +gTextStoryteller_Story33Title:: @ 81B0523 .string "Der Zauberer der POKéMON-LOTTERIE$" -UnknownString_81B053E:: @ 81B053E +gTextStoryteller_Story33Action:: @ 81B053E .string "Hast in der LOTTERIE gewonnen?$" -UnknownString_81B0554:: @ 81B0554 +gTextStoryteller_Story33Text:: @ 81B0554 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -517,13 +517,13 @@ UnknownString_81B0554:: @ 81B0554 .string "TRAINER {STR_VAR_3} hat viele Freunde,\n" .string "die mit ihm POKéMON tauschen.$" -UnknownString_81B05D8:: @ 81B05D8 +gTextStoryteller_Story34Title:: @ 81B05D8 .string "Der TRAINER und die PENSION$" -UnknownString_81B05F3:: @ 81B05F3 +gTextStoryteller_Story34Action:: @ 81B05F3 .string "Hast POKéMON in die PENSION gebracht?$" -UnknownString_81B0610:: @ 81B0610 +gTextStoryteller_Story34Text:: @ 81B0610 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -532,13 +532,13 @@ UnknownString_81B0610:: @ 81B0610 .string "alles für die Entwicklung seiner\l" .string "POKéMON tut.$" -UnknownString_81B06A9:: @ 81B06A9 +gTextStoryteller_Story35Title:: @ 81B06A9 .string "Der SEILBAHN verrückte TRAINER$" -UnknownString_81B06C6:: @ 81B06C6 +gTextStoryteller_Story35Action:: @ 81B06C6 .string "Bist mit der SEILBAHN gefahren?$" -UnknownString_81B06D9:: @ 81B06D9 +gTextStoryteller_Story35Text:: @ 81B06D9 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER ist {STR_VAR_1}-mal\n" @@ -547,13 +547,13 @@ UnknownString_81B06D9:: @ 81B06D9 .string "TRAINER, der ständig rauf und runter\l" .string "fährt.$" -UnknownString_81B0763:: @ 81B0763 +gTextStoryteller_Story36Title:: @ 81B0763 .string "Der Liebhaber der Heißen Quellen$" -UnknownString_81B0781:: @ 81B0781 +gTextStoryteller_Story36Action:: @ 81B0781 .string "Hast in den Heißen Quellen gebadet?$" -UnknownString_81B0797:: @ 81B0797 +gTextStoryteller_Story36Text:: @ 81B0797 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" diff --git a/data-de/text/trader.inc b/data-de/text/trader.inc index adf5d3aeb..dae453e8b 100644 --- a/data-de/text/trader.inc +++ b/data-de/text/trader.inc @@ -1,58 +1,58 @@ -MauvilleCity_PokemonCenter_1F_Text_1AE88F:: @ 81AE88F +gTextTrader_Introduction:: @ 81AE88F .string "Hallo! Ich bin der HÄNDLER. Möchtest\n" .string "du Dekorationen mit mir tauschen?$" -MauvilleCity_PokemonCenter_1F_Text_1AE8C6:: @ 81AE8C6 +gTextTrader_FeelUnwanted1:: @ 81AE8C6 .string "Oh...\n" .string "Ich fühle mich überflüssig...$" -MauvilleCity_PokemonCenter_1F_Text_1AE8DF:: @ 81AE8DF +gTextTrader_TradedAlready:: @ 81AE8DF .string "Aber wir beide haben doch bereits\n" .string "Dekorationen ausgetauscht.$" -MauvilleCity_PokemonCenter_1F_Text_1AE910:: @ 81AE910 +gTextTrader_MenuPrompt:: @ 81AE910 .string "Wenn du etwas Dekoratives siehst, das\n" .string "du haben möchtest, lass es mich wissen.$" -MauvilleCity_PokemonCenter_1F_Text_1AE950:: @ 81AE950 +gTextTrader_DontWantAnything:: @ 81AE950 .string "Du möchtest nichts haben?\n" .string "Ich fühle mich so überflüssig...$" -MauvilleCity_PokemonCenter_1F_Text_1AE97C:: @ 81AE97C +gTextTrader_ItemOnceBelongedTo:: @ 81AE97C .string "Das dekorative Item gehörte einst\n" .string "{STR_VAR_1}.\p" .string "Möchtest du es haben?$" -MauvilleCity_PokemonCenter_1F_Text_1AE9B6:: @ 81AE9B6 +gTextTrader_YouDontHaveDecorations:: @ 81AE9B6 .string "Äh... Warte eine Sekunde. Du hast über-\n" .string "haupt kein dekoratives Item!$" -MauvilleCity_PokemonCenter_1F_Text_1AE9F8:: @ 81AE9F8 +gTextTrader_PickDecorationYoullTrade:: @ 81AE9F8 .string "Okay, wähle die Dekoration aus, die du\n" .string "mit mir tauschen willst.$" -MauvilleCity_PokemonCenter_1F_Text_1AEA2B:: @ 81AEA2B +gTextTrader_FeelUnwanted2:: @ 81AEA2B .string "Du willst nicht mit mir tauschen?\n" .string "Ich fühle mich überflüssig...$" -MauvilleCity_PokemonCenter_1F_Text_1AEA57:: @ 81AEA57 +gTextTrader_NoRoomForThis:: @ 81AEA57 .string "Du hast keinen Platz mehr für eine/n\n" .string "{STR_VAR_2}.$" -MauvilleCity_PokemonCenter_1F_Text_1AEA9B:: @ 81AEA9B +gTextTrader_SoWellTrade:: @ 81AEA9B .string "Okay, dann lass uns tauschen:\n" .string "{STR_VAR_3} gegen\l" .string "{STR_VAR_2}!$" -MauvilleCity_PokemonCenter_1F_Text_1AEAC3:: @ 81AEAC3 +gTextTrader_InUseYouCantTradeIt:: @ 81AEAC3 .string "Dieses Dekorationsstück ist im Ge-\n" .string "brauch. Das kannst du nicht tauschen.$" -MauvilleCity_PokemonCenter_1F_Text_1AEAFB:: @ 81AEAFB +gTextTrader_ThenWellTrade:: @ 81AEAFB .string "Dann lass uns tauschen! Ich werde meine\n" .string "Dekorationen auf deinen PC senden.$" -MauvilleCity_PokemonCenter_1F_Text_1AEB31:: @ 81AEB31 +gTextTrader_ICantTradeThatOneAway:: @ 81AEB31 .string "Huups! Tut mir Leid!\n" .string "Das ist ein ganz seltenes Stück!\l" .string "Das kann ich nicht tauschen!\p" diff --git a/data/battle_811DA74.s b/data/battle_811DA74.s deleted file mode 100644 index 873c76eb9..000000000 --- a/data/battle_811DA74.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gLinkPartnerBufferCommands:: @ 83FE4F4 - .4byte LinkPartnerHandleGetAttributes - .4byte sub_811EC04 - .4byte LinkPartnerHandleSetAttributes - .4byte sub_811F664 - .4byte sub_811F6D8 - .4byte sub_811F7F4 - .4byte sub_811F9D0 - .4byte sub_811FAE4 - .4byte sub_811FC30 - .4byte sub_811FC3C - .4byte sub_811FCE8 - .4byte sub_811FDCC - .4byte sub_811FDD8 - .4byte sub_811FDE4 - .4byte sub_811FDF0 - .4byte sub_811FDFC - .4byte sub_8120094 - .4byte sub_81200F8 - .4byte sub_8120104 - .4byte sub_8120110 - .4byte sub_812011C - .4byte sub_8120128 - .4byte sub_8120134 - .4byte sub_8120140 - .4byte LinkPartnerHandleHealthBarUpdate - .4byte LinkPartnerHandleExpBarUpdate - .4byte LinkPartnerHandleStatusIconUpdate - .4byte LinkPartnerHandleStatusAnimation - .4byte sub_8120324 - .4byte sub_8120330 - .4byte sub_812033C - .4byte sub_8120348 - .4byte sub_8120354 - .4byte sub_8120360 - .4byte sub_812036C - .4byte sub_8120378 - .4byte sub_8120384 - .4byte sub_8120390 - .4byte sub_81203AC - .4byte sub_81203E4 - .4byte sub_81203FC - .4byte LinkPartnerHandleHitAnimation - .4byte sub_8120494 - .4byte LinkPartnerHandleEffectivenessSound - .4byte sub_81204E4 - .4byte LinkPartnerHandleFaintingCry - .4byte dp01t_2E_3_battle_intro - .4byte sub_8120588 - .4byte dp01t_30_3_80EB11C - .4byte sub_8120920 - .4byte sub_812096C - .4byte sub_8120978 - .4byte sub_81209D8 - .4byte sub_8120A40 - .4byte sub_8120A4C - .4byte sub_8120A58 - .4byte nullsub_75 diff --git a/data/battle_anim_807B69C.s b/data/battle_anim_807B69C.s deleted file mode 100644 index 0ed7d7cf0..000000000 --- a/data/battle_anim_807B69C.s +++ /dev/null @@ -1,23 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSubspriteTable_83931B8:: @ 83931B8 - subsprite -16, -16, 2, 0, 64x64 - subsprite -16, 48, 2, 64, 64x32 - subsprite 48, -16, 2, 96, 32x64 - subsprite 48, 48, 2, 128, 32x32 - - .align 2 -gSubspriteTables_83931D8:: @ 83931D8 - .4byte 4, gSubspriteTable_83931B8 - - .align 2 -gSpriteTemplate_83931E0:: @ 83931E0 - spr_template 10010, 10010, gOamData_837E05C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_83931F8:: @ 83931F8 - spr_template 10136, 10136, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807B870 diff --git a/data/battle_anim_81258BC.s b/data/battle_anim_81258BC.s deleted file mode 100644 index 993adbc2e..000000000 --- a/data/battle_anim_81258BC.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSafariBufferCommands:: @ 8402080 - .4byte SafariHandleGetAttributes - .4byte sub_812B870 - .4byte sub_812B87C - .4byte sub_812B888 - .4byte sub_812B894 - .4byte sub_812B8A0 - .4byte sub_812B8AC - .4byte sub_812B8B8 - .4byte sub_812B994 - .4byte sub_812B9A0 - .4byte sub_812B9AC - .4byte sub_812B9B8 - .4byte sub_812B9C4 - .4byte sub_812BA14 - .4byte sub_812BA70 - .4byte sub_812BA7C - .4byte SafariHandlePrintString - .4byte SafariHandlePrintStringPlayerOnly - .4byte sub_812BB10 - .4byte sub_812BBFC - .4byte sub_812BC08 - .4byte sub_812BC14 - .4byte sub_812BC54 - .4byte sub_812BC60 - .4byte sub_812BC6C - .4byte sub_812BC78 - .4byte sub_812BC84 - .4byte sub_812BCC0 - .4byte sub_812BCCC - .4byte sub_812BCD8 - .4byte sub_812BCE4 - .4byte sub_812BCF0 - .4byte sub_812BCFC - .4byte sub_812BD08 - .4byte sub_812BD14 - .4byte sub_812BD20 - .4byte sub_812BD2C - .4byte sub_812BD38 - .4byte sub_812BD44 - .4byte sub_812BD50 - .4byte sub_812BD5C - .4byte sub_812BD68 - .4byte sub_812BD74 - .4byte sub_812BD80 - .4byte sub_812BDC4 - .4byte sub_812BDF4 - .4byte dp01t_2E_6_battle_intro - .4byte sub_812BE64 - .4byte sub_812BEB0 - .4byte sub_812BEBC - .4byte sub_812BEC8 - .4byte sub_812BED4 - .4byte sub_812BEE0 - .4byte sub_812BF3C - .4byte sub_812BF48 - .4byte sub_812BF54 - .4byte nullsub_78 diff --git a/data/battle_anim_8137220.s b/data/battle_anim_8137220.s deleted file mode 100644 index c1673af9a..000000000 --- a/data/battle_anim_8137220.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gWallyBufferCommands:: @ 84061A4 - .4byte dp01t_00_5_getattr - .4byte sub_8138230 - .4byte sub_813823C - .4byte sub_8138C90 - .4byte sub_8138C9C - .4byte sub_8138CA8 - .4byte sub_8138CB4 - .4byte sub_8138D38 - .4byte sub_8138E04 - .4byte sub_8138ED0 - .4byte sub_8138EDC - .4byte sub_8138EE8 - .4byte sub_8138EF4 - .4byte sub_8138F44 - .4byte sub_8138FA0 - .4byte sub_8138FAC - .4byte sub_8139208 - .4byte dp01t_11_5_message_for_player_only - .4byte sub_8139298 - .4byte sub_8139378 - .4byte sub_8139384 - .4byte sub_81393EC - .4byte sub_813942C - .4byte sub_8139438 - .4byte sub_8139444 - .4byte sub_8139544 - .4byte sub_8139550 - .4byte sub_813955C - .4byte sub_8139568 - .4byte sub_8139574 - .4byte sub_8139580 - .4byte sub_813958C - .4byte sub_8139598 - .4byte sub_81395A4 - .4byte sub_81395B0 - .4byte sub_81395BC - .4byte sub_81395C8 - .4byte sub_81395D4 - .4byte sub_81395E0 - .4byte sub_81395EC - .4byte sub_81395F8 - .4byte sub_8139604 - .4byte sub_8139674 - .4byte sub_8139680 - .4byte sub_81396B0 - .4byte sub_81396E0 - .4byte dp01t_2E_5_battle_intro - .4byte sub_8139750 - .4byte sub_8139AA0 - .4byte sub_8139B20 - .4byte sub_8139B2C - .4byte sub_8139B38 - .4byte sub_8139B44 - .4byte sub_8139BA0 - .4byte sub_8139BAC - .4byte sub_8139BB8 - .4byte nullsub_80 diff --git a/data/battle_moves.inc b/data/battle_moves.s index ff7e2cb33..ea32446d2 100644 --- a/data/battle_moves.inc +++ b/data/battle_moves.s @@ -1,3 +1,8 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 gBattleMoves:: @ 81FB12C @ NONE diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index fbb0826fc..e046794b3 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -4,7 +4,7 @@ .section script_data, "aw", %progbits -gUnknown_081D6BBC:: @ 81D6BBC +gBattleScriptsEffectsTable:: @ 81D6BBC .4byte MoveEffect_Hit .4byte MoveEffect_Sleep .4byte MoveEffect_PoisonHit @@ -305,11 +305,11 @@ MoveEffect_Sleep: @ 81D6F81 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, SLP, BattleScript_1D6FC4 jumpifcannotsleep BattleScript_1D6FE0 - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -638,9 +638,9 @@ MoveEffect_Roar: @ 81D72C5 ppreduce jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_1D988D jumpifspecialstatusflag TARGET, 0x400, 0, BattleScript_1D93EC - accuracycheck BattleScript_1D83D6, 65535 + accuracycheck BattleScript_ButItFailed, 65535 accuracycheck BattleScript_1D6F77, 0 - forcerandomswitch BattleScript_1D83D6 + forcerandomswitch BattleScript_ButItFailed MoveEffect_MultiHit: @ 81D72ED attackcanceler @@ -707,7 +707,7 @@ MoveEffect_Conversion: @ 81D73B1 attackcanceler attackstring ppreduce - changetypestoenemyattacktype BattleScript_1D83D6 + changetypestoenemyattacktype BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TypeTransform @@ -737,13 +737,13 @@ MoveEffect_Toxic: @ 81D73F4 attackstring ppreduce jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463 - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, PSN, BattleScript_1D7455 jumpifstatus TARGET, TOX, BattleScript_1D7455 - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8 jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8 - accuracycheck BattleScript_1D83D6, 0 + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -810,7 +810,7 @@ MoveEffect_Ohko: @ 81D74E4 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65535 + accuracycheck BattleScript_ButItFailed, 65535 atk6 jumpifbyte 4, 0x2024c68, 41, BattleScript_1D6F48 koplussomethings BattleScript_1D7505 @@ -939,7 +939,7 @@ MoveEffect_FocusEnergy: @ 81D7689 attackcanceler attackstring ppreduce - jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_1D83D6 + jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_ButItFailed setincreasedcriticalchance attackanimation waitanimation @@ -958,9 +958,9 @@ MoveEffect_Confuse: @ 81D76BF attackstring ppreduce jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_1D98E5 - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifsecondarytstatus TARGET, S_CONFUSED, BattleScript_1D76FE - accuracycheck BattleScript_1D83D6, 0 + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -1041,13 +1041,13 @@ MoveEffect_Poison: @ 81D7795 attackstring ppreduce jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463 - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, PSN, BattleScript_1D7455 jumpifstatus TARGET, TOX, BattleScript_1D7455 jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8 jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8 - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -1062,12 +1062,12 @@ MoveEffect_Paralyze: @ 81D77F6 attackstring ppreduce jumpifability TARGET, ABILITY_LIMBER, BattleScript_1D7859 - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed atk6 - jumpifbyte 4, 0x2024c68, 41, BattleScript_1D83D6 + jumpifbyte 4, 0x2024c68, 41, BattleScript_ButItFailed jumpifstatus TARGET, PAR, BattleScript_1D784B - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -1168,7 +1168,7 @@ MoveEffect_Recharge: @ 81D7943 setbyte 0x2024d21, 221 jump BattleScript_1D6F42 -gUnknown_081D7956:: @ 81D7956 +BattleScript_MoveUsedMustRecharge:: @ 81D7956 printstring BATTLE_TEXT_MustRecharge waitmessage 64 jump BattleScript_EndTurn @@ -1190,9 +1190,9 @@ MoveEffect_Mimic: @ 81D7988 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 65535 - copyattack BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 65535 + copyattack BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_LearnedMove2 @@ -1214,7 +1214,7 @@ MoveEffect_LeechSeed: @ 81D79C2 attackstring pause 32 ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed accuracycheck BattleScript_1D79D9, 0 BattleScript_1D79D9: @ 81D79D9 @@ -1240,8 +1240,8 @@ MoveEffect_Disable: @ 81D79FB attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - disablelastusedattack BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + disablelastusedattack BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_MoveWasDisabled @@ -1285,7 +1285,7 @@ MoveEffect_Encore: @ 81D7A5D accuracycheck BattleScript_1D6F72, 0 attackstring ppreduce - setencore BattleScript_1D83D6 + setencore BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_EncoreGot @@ -1296,8 +1296,8 @@ MoveEffect_PainSplit: @ 81D7A79 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65535 - painsplitdamagecalculator BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65535 + painsplitdamagecalculator BattleScript_ButItFailed attackanimation waitanimation orword 0x2024c6c, 0x100 @@ -1315,7 +1315,7 @@ MoveEffect_Snore: @ 81D7AB0 jumpifstatus USER, SLP, BattleScript_1D7AC2 attackstring ppreduce - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed BattleScript_1D7AC2: @ 81D7AC2 jumpifhalfword 0, 0x2024be8, 214, BattleScript_1D7AD6 @@ -1334,7 +1334,7 @@ MoveEffect_Conversion2: @ 81D7AEA attackcanceler attackstring ppreduce - settypetorandomresistance BattleScript_1D83D6 + settypetorandomresistance BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TypeTransform @@ -1345,8 +1345,8 @@ MoveEffect_LockOn: @ 81D7AFF attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 setalwayshitflag attackanimation waitanimation @@ -1358,8 +1358,8 @@ MoveEffect_Sketch: @ 81D7B21 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - copymovepermanently BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + copymovepermanently BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_SketchedMove @@ -1371,7 +1371,7 @@ MoveEffect_SleepTalk: @ 81D7B40 jumpifstatus USER, SLP, BattleScript_1D7B52 attackstring ppreduce - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed BattleScript_1D7B52: @ 81D7B52 printstring BATTLE_TEXT_FastAsleep @@ -1382,7 +1382,7 @@ BattleScript_1D7B52: @ 81D7B52 orword 0x2024c6c, 0x800 selectrandommovefromusermoves BattleScript_1D7B72 pause 64 - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed BattleScript_1D7B72: @ 81D7B72 attackanimation @@ -1410,8 +1410,8 @@ MoveEffect_Spite: @ 81D7B99 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - reducepprandom BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + reducepprandom BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_ReducedBy @@ -1512,8 +1512,8 @@ MoveEffect_MeanLook: @ 81D7CCC attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65534 - jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65534 + jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_ButItFailed attackanimation waitanimation setbyte 0x2024d21, 32 @@ -1526,10 +1526,10 @@ MoveEffect_Nightmare: @ 81D7CF4 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_ButItFailed jumpifstatus TARGET, SLP, BattleScript_1D7D1A - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed BattleScript_1D7D1A: @ 81D7D1A attackanimation @@ -1553,7 +1553,7 @@ MoveEffect_Curse: @ 81D7D3B ppreduce jumpifstat USER, 2, 3, 0, BattleScript_1D7D60 jumpifstat USER, 1, 1, 12, BattleScript_1D7D60 - jumpifstat USER, 0, 2, 12, BattleScript_1D83D6 + jumpifstat USER, 0, 2, 12, BattleScript_ButItFailed BattleScript_1D7D60: @ 81D7D60 copyarray 0x2024c08, 0x2024c07, 1 @@ -1588,8 +1588,8 @@ BattleScript_1D7DC4: @ 81D7DC4 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - cursetarget BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + cursetarget BattleScript_ButItFailed orword 0x2024c6c, 0x100 setbyte 0x2016002, 0 attackanimation @@ -1640,7 +1640,7 @@ MoveEffect_PerishSong: @ 81D7E3D attackcanceler attackstring ppreduce - setperishsong BattleScript_1D83D6 + setperishsong BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_PerishSong @@ -1687,7 +1687,7 @@ MoveEffect_Swagger: @ 81D7EA2 accuracycheck BattleScript_1D6F72, 0 attackstring ppreduce - jumpifconfusedandattackmaxed 1, BattleScript_1D83D6 + jumpifconfusedandattackmaxed 1, BattleScript_ButItFailed attackanimation waitanimation setbyte 0x201601e, 33 @@ -1724,8 +1724,8 @@ MoveEffect_Attract: @ 81D7F1F attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - tryinfatuatetarget BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + tryinfatuatetarget BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_FellLove @@ -1773,10 +1773,10 @@ MoveEffect_BatonPass: @ 81D7F7C attackcanceler attackstring ppreduce - jumpifcannotswitch 129, BattleScript_1D83D6 + jumpifcannotswitch 129, BattleScript_ButItFailed attackanimation waitanimation - openpartyscreen USER, BattleScript_1D83D6 + openpartyscreen USER, BattleScript_ButItFailed atke2 USER waitstateatk atk51 USER, 2 @@ -1858,7 +1858,7 @@ MoveEffect_BellyDrum: @ 81D8038 attackcanceler attackstring ppreduce - maxattackhalvehp BattleScript_1D83D6 + maxattackhalvehp BattleScript_ButItFailed orword 0x2024c6c, 0x100 attackanimation waitanimation @@ -1872,7 +1872,7 @@ MoveEffect_PsychUp: @ 81D805A attackcanceler attackstring ppreduce - copyfoestats BattleScript_1D83D6 + copyfoestats BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_CopyStatChanges @@ -1971,7 +1971,7 @@ MoveEffect_FutureSight: @ 81D817D attackcanceler attackstring ppreduce - setfutureattack BattleScript_1D83D6 + setfutureattack BattleScript_ButItFailed attackanimation waitanimation printfromtable BattleTextList_4015E2 @@ -2017,9 +2017,9 @@ MoveEffect_Teleport: @ 81D8233 attackcanceler attackstring ppreduce - jumpifhalfword 4, 0x20239f8, 8, BattleScript_1D83D6 + jumpifhalfword 4, 0x20239f8, 8, BattleScript_ButItFailed atk76 USER, 2 - jumpifbyte 0, 0x2024d1e, 1, BattleScript_1D83D6 + jumpifbyte 0, 0x2024d1e, 1, BattleScript_ButItFailed jumpifbyte 0, 0x2024d1e, 2, BattleScript_1D8839 attackanimation waitanimation @@ -2038,7 +2038,7 @@ MoveEffect_BeatUp: @ 81D826E BattleScript_1D8281: @ 81D8281 atk25 - beatupcalculation BattleScript_1D82C4, BattleScript_1D83D6 + beatupcalculation BattleScript_1D82C4, BattleScript_ButItFailed printstring BATTLE_TEXT_PokeAttack critcalc jumpifbyte 1, 0x2024c0d, 2, BattleScript_1D829C @@ -2156,7 +2156,7 @@ BattleScript_1D83D4: @ 81D83D4 BattleScript_1D83D5: @ 81D83D5 ppreduce -BattleScript_1D83D6:: @ 81D83D6 +BattleScript_ButItFailed:: @ 81D83D6 pause 32 orbyte 0x2024c68, 32 resultmessage @@ -2243,8 +2243,8 @@ MoveEffect_Torment: @ 81D8495 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - settorment BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + settorment BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TormentSubject @@ -2257,7 +2257,7 @@ MoveEffect_Flatter: @ 81D84B1 accuracycheck BattleScript_1D6F72, 0 attackstring ppreduce - jumpifconfusedandattackmaxed 4, BattleScript_1D83D6 + jumpifconfusedandattackmaxed 4, BattleScript_ButItFailed attackanimation waitanimation setbyte 0x201601e, 20 @@ -2279,12 +2279,12 @@ MoveEffect_WillOWisp: @ 81D850F attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, BRN, BattleScript_1D8575 jumpiftype TARGET, TYPE_FIRE, BattleScript_1D83E8 jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_1D855B - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -2309,7 +2309,7 @@ MoveEffect_Memento: @ 81D8583 jumpifbyte 0, 0x2024d24, 1, BattleScript_1D860A attackstring ppreduce - jumpifattackandspecialattackcannotfall BattleScript_1D83D6 + jumpifattackandspecialattackcannotfall BattleScript_ButItFailed setuserhptozero attackanimation waitanimation @@ -2415,8 +2415,8 @@ MoveEffect_Taunt: @ 81D86AB attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - settaunt BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + settaunt BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TauntFell @@ -2427,7 +2427,7 @@ MoveEffect_HelpingHand: @ 81D86C7 attackcanceler attackstring ppreduce - sethelpinghand BattleScript_1D83D6 + sethelpinghand BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_ReadyToHelp @@ -2438,9 +2438,9 @@ MoveEffect_Trick: @ 81D86DC attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 - itemswap BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 + itemswap BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_SwitchedItems @@ -2453,8 +2453,8 @@ MoveEffect_RolePlay: @ 81D870A attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65535 - copyability BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65535 + copyability BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_CopiedObject @@ -2465,7 +2465,7 @@ MoveEffect_Wish: @ 81D8726 attackcanceler attackstring ppreduce - atkd4 0, BattleScript_1D83D6 + atkd4 0, BattleScript_ButItFailed attackanimation waitanimation jump BattleScript_EndTurn @@ -2484,7 +2484,7 @@ MoveEffect_Ingrain: @ 81D874D attackcanceler attackstring ppreduce - setroots BattleScript_1D83D6 + setroots BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_PlantedRoots @@ -2510,7 +2510,7 @@ MoveEffect_Recycle: @ 81D8782 attackcanceler attackstring ppreduce - recycleitem BattleScript_1D83D6 + recycleitem BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_FoundOne @@ -2562,11 +2562,11 @@ MoveEffect_Yawn: @ 81D87EE ppreduce jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_1D882F jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_1D882F - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifhalverset TARGET, 32, BattleScript_1D9037 - accuracycheck BattleScript_1D83D6, 65535 - jumpifcannotsleep BattleScript_1D83D6 - setyawn BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65535 + jumpifcannotsleep BattleScript_ButItFailed + setyawn BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_DrowsyMade @@ -2590,7 +2590,7 @@ MoveEffect_Endeavor: @ 81D8852 attackcanceler attackstring ppreduce - setdamagetohealthdifference BattleScript_1D83D6 + setdamagetohealthdifference BattleScript_ButItFailed copyarray 0x2024bf0, 0x2024bec, 4 accuracycheck BattleScript_1D6F77, 0 atk6 @@ -2608,8 +2608,8 @@ MoveEffect_SkillSwap: @ 81D8893 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65535 - abilityswap BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65535 + abilityswap BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_AbilitySwap @@ -2620,7 +2620,7 @@ MoveEffect_Imprison: @ 81D88AF attackcanceler attackstring ppreduce - imprisoneffect BattleScript_1D83D6 + imprisoneffect BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_SealedMove @@ -2631,7 +2631,7 @@ MoveEffect_Refresh: @ 81D88C4 attackcanceler attackstring ppreduce - cureifburnedparalysedorpoisoned BattleScript_1D83D6 + cureifburnedparalysedorpoisoned BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_StatusNormal @@ -2643,7 +2643,7 @@ MoveEffect_Grudge: @ 81D88DB attackcanceler attackstring ppreduce - setgrudge BattleScript_1D83D6 + setgrudge BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_GrudgeBear @@ -2740,7 +2740,7 @@ MoveEffect_WaterSport: @ 81D89D7 attackcanceler attackstring ppreduce - settypebasedhalvers BattleScript_1D83D6 + settypebasedhalvers BattleScript_ButItFailed attackanimation waitanimation printfromtable BattleTextList_4015D4 @@ -2767,7 +2767,7 @@ MoveEffect_Tickle: @ 81D8A0A jumpifstat TARGET, 0, 2, 0, BattleScript_1D8A7D BattleScript_1D8A1F: @ 81D8A1F - accuracycheck BattleScript_1D83D6, 0 + accuracycheck BattleScript_ButItFailed, 0 attackanimation waitanimation setbyte 0x20160dc, 0 @@ -2924,7 +2924,7 @@ MoveEffect_Camouflage: @ 81D8C43 attackcanceler attackstring ppreduce - settypetoterrain BattleScript_1D83D6 + settypetoterrain BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TypeTransform @@ -3311,7 +3311,7 @@ gUnknown_081D9041:: @ 81D9041 waitmessage 64 end2 -gUnknown_081D904B:: @ 81D904B +BattleScript_LeechSeedTurnDrain:: @ 81D904B playanimation USER, 14, 0x20160a4 orword 0x2024c6c, 0x100100 graphicalhpupdate USER @@ -3335,12 +3335,12 @@ BattleScript_1D9083: @ 81D9083 faintpokemon TARGET, 0, 0x0 end2 -gUnknown_081D90A7:: @ 81D90A7 +BattleScript_BideStoringEnergy:: @ 81D90A7 printstring BATTLE_TEXT_StoringEnergy waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D90B2:: @ 81D90B2 +BattleScript_BideAttack:: @ 81D90B2 printstring BATTLE_TEXT_UnleashedEnergy waitmessage 64 accuracycheck BattleScript_1D6F77, 0 @@ -3361,10 +3361,10 @@ gUnknown_081D90B2:: @ 81D90B2 faintpokemon TARGET, 0, 0x0 jump BattleScript_EndTurn -gUnknown_081D90F1:: @ 81D90F1 +BattleScript_BideNoEnergyToAttack:: @ 81D90F1 printstring BATTLE_TEXT_UnleashedEnergy waitmessage 64 - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed gUnknown_081D90FC:: @ 81D90FC attackanimation @@ -3385,7 +3385,7 @@ BattleScript_1D9116: @ 81D9116 atk52 TARGET jump BattleScript_EndTurn -gUnknown_081D9128:: @ 81D9128 +BattleScript_MistProtected:: @ 81D9128 pause 32 printstring BATTLE_TEXT_MistProtect waitmessage 64 @@ -3396,21 +3396,21 @@ gUnknown_081D9132:: @ 81D9132 waitmessage 64 return -gUnknown_081D9139:: @ 81D9139 +BattleScript_MoveUsedIsDisabled:: @ 81D9139 printstring BATTLE_TEXT_MoveIsDisabled waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9144:: @ 81D9144 +BattleScript_MoveSelectionDisabledMove:: @ 81D9144 printstring2 BATTLE_TEXT_MoveIsDisabled atk44 -gUnknown_081D9148:: @ 81D9148 +BattleScript_DisabledNoMore:: @ 81D9148 printstring BATTLE_TEXT_DisabledNoMore waitmessage 64 end2 -gUnknown_081D914F:: @ 81D914F +BattleScript_EncoredNoMore:: @ 81D914F printstring BATTLE_TEXT_EncoreEnded waitmessage 64 end2 @@ -3471,7 +3471,7 @@ BattleScript_1D91FB: @ 81D91FB waitmessage 64 return -gUnknown_081D9202:: @ 81D9202 +BattleScript_PerishSongHits:: @ 81D9202 printstring BATTLE_TEXT_PerishSongFell waitmessage 64 orword 0x2024c6c, 0x100100 @@ -3480,12 +3480,12 @@ gUnknown_081D9202:: @ 81D9202 faintpokemon USER, 0, 0x0 end2 -gUnknown_081D921D:: @ 81D921D +BattleScript_PerishSongTimerGoesDown:: @ 81D921D printstring BATTLE_TEXT_PerishSongFell waitmessage 64 end2 -gUnknown_081D9224:: @ 81D9224 +BattleScript_AllStatsUp:: @ 81D9224 jumpifstat USER, 3, 1, 12, BattleScript_1D9251 jumpifstat USER, 3, 2, 12, BattleScript_1D9251 jumpifstat USER, 3, 3, 12, BattleScript_1D9251 @@ -3531,22 +3531,22 @@ BattleScript_RapidSpinAway:: @ 81D92C0 breakfree return -gUnknown_081D92C2:: @ 81D92C2 +BattleScript_WrapFree:: @ 81D92C2 printstring BATTLE_TEXT_GotFreeFrom waitmessage 64 return -gUnknown_081D92C9:: @ 81D92C9 +BattleScript_LeechSeedFree:: @ 81D92C9 printstring BATTLE_TEXT_LeechShed waitmessage 64 return -gUnknown_081D92D0:: @ 81D92D0 +BattleScript_SpikesFree:: @ 81D92D0 printstring BATTLE_TEXT_SpikesBlownAway waitmessage 64 return -gUnknown_081D92D7:: @ 81D92D7 +BattleScript_FutureSightHits:: @ 81D92D7 printstring BATTLE_TEXT_TookAttack waitmessage 64 jumpifbyte 1, 0x2024d23, 0, BattleScript_1D92F4 @@ -3593,11 +3593,11 @@ BattleScript_1D934B: @ 81D934B setbyte 0x2024c68, 0 end2 -gUnknown_081D9365:: @ 81D9365 +BattleScript_NoMovesLeft:: @ 81D9365 printstring2 BATTLE_TEXT_NoMovesLeft atk44 -gUnknown_081D9369:: @ 81D9369 +BattleScript_MoveSelectionNoPP:: @ 81D9369 printstring2 BATTLE_TEXT_NoPP1 atk44 @@ -3608,23 +3608,23 @@ BattleScript_NoPPForMove:: @ 81D936D waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D937C:: @ 81D937C +BattleScript_MoveSelectionTormented:: @ 81D937C printstring2 BATTLE_TEXT_TormentNoUse atk44 printstring BATTLE_TEXT_TormentNoUse waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D938B:: @ 81D938B +BattleScript_MoveSelectionTaunted:: @ 81D938B printstring2 BATTLE_TEXT_TauntNoUse atk44 -gUnknown_081D938F:: @ 81D938F +BattleScript_MoveUsedIsTaunted:: @ 81D938F printstring BATTLE_TEXT_TauntNoUse waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D939A:: @ 81D939A +BattleScript_WishComesTrue:: @ 81D939A atkd4 1, BattleScript_1D93C1 playanimation TARGET, 22, 0x0 printstring BATTLE_TEXT_WishTrue @@ -3644,7 +3644,7 @@ BattleScript_1D93C1: @ 81D93C1 waitmessage 64 end2 -gUnknown_081D93D1:: @ 81D93D1 +BattleScript_IngrainTurnHeal:: @ 81D93D1 playanimation USER, 21, 0x0 printstring BATTLE_TEXT_AbsorbNutrients waitmessage 64 @@ -3659,7 +3659,7 @@ BattleScript_1D93EC: @ 81D93EC waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D93FA:: @ 81D93FA +BattleScript_AtkDefDown:: @ 81D93FA setbyte 0x20160dc, 0 playstatchangeanimation USER, 6, 13 playstatchangeanimation USER, 2, 9 @@ -3686,12 +3686,12 @@ BattleScript_KnockedOff:: @ 81D944B waitmessage 64 return -gUnknown_081D9459:: @ 81D9459 +BattleScript_MoveUsedIsImprisoned:: @ 81D9459 printstring BATTLE_TEXT_SealedNoUse waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9464:: @ 81D9464 +BattleScript_MoveSelectionImprisoned:: @ 81D9464 printstring2 BATTLE_TEXT_SealedNoUse atk44 @@ -3731,7 +3731,7 @@ BattleScript_OneHitKOMsg:: @ 81D94A9 waitmessage 64 return -gUnknown_081D94B0:: @ 81D94B0 +BattleScript_SAtkDown2:: @ 81D94B0 setbyte 0x20160dc, 0 playstatchangeanimation USER, 16, 11 setbyte 0x201601e, 164 @@ -3751,13 +3751,13 @@ gUnknown_081D94DA:: @ 81D94DA waitmessage 64 end2 -gUnknown_081D94EE:: @ 81D94EE +BattleScript_MoveUsedIsAsleep:: @ 81D94EE printstring BATTLE_TEXT_FastAsleep waitmessage 64 statusanimation USER jump BattleScript_EndTurn -gUnknown_081D94FB:: @ 81D94FB +BattleScript_MoveUsedWokeUp:: @ 81D94FB bicword 0x2024c6c, 0x10 printfromtable BattleTextList_401562 waitmessage 64 @@ -3770,7 +3770,7 @@ gUnknown_081D950F:: @ 81D950F atk98 1 end2 -gUnknown_081D9518:: @ 81D9518 +BattleScript_PoisonTurnDmg:: @ 81D9518 printstring BATTLE_TEXT_PoisonHurt waitmessage 64 @@ -3787,18 +3787,18 @@ BattleScript_1D9520: @ 81D9520 BattleScript_1D9539: @ 81D9539 end2 -gUnknown_081D953A:: @ 81D953A +BattleScript_BurnTurnDmg:: @ 81D953A printstring BATTLE_TEXT_BurnHurt waitmessage 64 jump BattleScript_1D951E -gUnknown_081D9545:: @ 81D9545 +BattleScript_MoveUsedIsFrozen:: @ 81D9545 printstring BATTLE_TEXT_FrozenSolid waitmessage 64 statusanimation USER jump BattleScript_EndTurn -gUnknown_081D9552:: @ 81D9552 +BattleScript_MoveUsedUnfroze:: @ 81D9552 printfromtable BattleTextList_4015C4 waitmessage 64 atk98 1 @@ -3810,13 +3810,13 @@ gUnknown_081D955D:: @ 81D955D atk98 0 return -gUnknown_081D9566:: @ 81D9566 +BattleScript_MoveUsedIsParalyzed:: @ 81D9566 printstring BATTLE_TEXT_Paralyzed3 waitmessage 64 statusanimation USER jump BattleScript_EndTurn -gUnknown_081D9573:: @ 81D9573 +BattleScript_MoveUsedFlinched:: @ 81D9573 printstring BATTLE_TEXT_Flinched waitmessage 64 jump BattleScript_EndTurn @@ -3826,13 +3826,13 @@ gUnknown_081D957E:: @ 81D957E waitmessage 64 end2 -gUnknown_081D9587:: @ 81D9587 +BattleScript_ThrashConfuses:: @ 81D9587 atk66 1, 1, S_CONFUSED printstring BATTLE_TEXT_FatigueConfuse waitmessage 64 end2 -gUnknown_081D9595:: @ 81D9595 +BattleScript_MoveUsedIsConfused:: @ 81D9595 printstring BATTLE_TEXT_Confused waitmessage 64 atk65 1, 0x7 @@ -3855,7 +3855,7 @@ BattleScript_1D95AC: @ 81D95AC BattleScript_1D95D3: @ 81D95D3 return -gUnknown_081D95D4:: @ 81D95D4 +BattleScript_MoveUsedIsConfusedNoMore:: @ 81D95D4 printstring BATTLE_TEXT_ConfusionSnapOut waitmessage 64 return @@ -3865,35 +3865,35 @@ gUnknown_081D95DB:: @ 81D95DB waitmessage 64 return -gUnknown_081D95E2:: @ 81D95E2 +BattleScript_WrapTurnDmg:: @ 81D95E2 playanimation USER, 6, 0x20160a4 printstring BATTLE_TEXT_HurtBy waitmessage 64 jump BattleScript_1D9520 -gUnknown_081D95F4:: @ 81D95F4 +BattleScript_WrapEnds:: @ 81D95F4 printstring BATTLE_TEXT_FreedFrom waitmessage 64 end2 -gUnknown_081D95FB:: @ 81D95FB +BattleScript_MoveUsedIsInLove:: @ 81D95FB printstring BATTLE_TEXT_InLoveWith waitmessage 64 atk65 1, 0xf0000 return -gUnknown_081D9608:: @ 81D9608 +BattleScript_MoveUsedIsParalyzedCantAttack:: @ 81D9608 printstring BATTLE_TEXT_ImmobilizedBy waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9613:: @ 81D9613 +BattleScript_NightmareTurnDmg:: @ 81D9613 printstring BATTLE_TEXT_NightmareLock waitmessage 64 atk65 1, Start jump BattleScript_1D9520 -gUnknown_081D9624:: @ 81D9624 +BattleScript_CurseTurnDmg:: @ 81D9624 printstring BATTLE_TEXT_CurseAfflict waitmessage 64 atk65 1, 0x10000000 @@ -3915,7 +3915,7 @@ BattleScript_1D9648: @ 81D9648 waitstateatk return -gUnknown_081D964C:: @ 81D964C +BattleScript_YawnMakesAsleep:: @ 81D964C statusanimation 2 printstring BATTLE_TEXT_FellAsleep waitmessage 64 @@ -3996,7 +3996,7 @@ BattleScript_ItemSteal:: @ 81D96F6 waitmessage 64 return -gUnknown_081D9704:: @ 81D9704 +BattleScript_DrizzleActivates:: @ 81D9704 pause 32 printstring BATTLE_TEXT_RainMade waitstateatk @@ -4004,19 +4004,19 @@ gUnknown_081D9704:: @ 81D9704 callatk BattleScript_1D9761 end3 -gUnknown_081D9718:: @ 81D9718 +BattleScript_SpeedBoostActivates:: @ 81D9718 playanimation USER, 1, 0x20160a4 printstring BATTLE_TEXT_SpeedRisen waitmessage 64 end3 -gUnknown_081D9726:: @ 81D9726 +BattleScript_TraceActivates:: @ 81D9726 pause 32 printstring BATTLE_TEXT_Traced waitmessage 64 end3 -gUnknown_081D9730:: @ 81D9730 +BattleScript_RainDishActivates:: @ 81D9730 printstring BATTLE_TEXT_RestoredHPByItem waitmessage 64 orword 0x2024c6c, 0x100 @@ -4024,7 +4024,7 @@ gUnknown_081D9730:: @ 81D9730 datahpupdate USER end3 -gUnknown_081D9744:: @ 81D9744 +BattleScript_SandstreamActivates:: @ 81D9744 pause 32 printstring BATTLE_TEXT_WhipSandstorm waitstateatk @@ -4032,7 +4032,7 @@ gUnknown_081D9744:: @ 81D9744 callatk BattleScript_1D9761 end3 -gUnknown_081D9758:: @ 81D9758 +BattleScript_ShedSkinActivates:: @ 81D9758 printstring BATTLE_TEXT_CuredProblem waitmessage 64 atk98 1 @@ -4047,7 +4047,7 @@ BattleScript_1D9767: @ 81D9767 jumpifarraynotequal 0x2016003, 0x2024a68, 1, BattleScript_1D9767 return -gUnknown_081D977D:: @ 81D977D +BattleScript_CastformChange:: @ 81D977D callatk BattleScript_1D9783 end3 @@ -4095,7 +4095,7 @@ BattleScript_1D97F0: @ 81D97F0 waitmessage 64 jump BattleScript_1D97E4 -gUnknown_081D97FE:: @ 81D97FE +BattleScript_DroughtActivates:: @ 81D97FE pause 32 printstring BATTLE_TEXT_SunIntensified waitstateatk @@ -4123,10 +4123,10 @@ gUnknown_081D9834:: @ 81D9834 pause 64 jump BattleScript_EndTurn -gUnknown_081D9842:: @ 81D9842 +BattleScript_MoveHPDrain_PPLoss:: @ 81D9842 ppreduce -gUnknown_081D9843:: @ 81D9843 +BattleScript_MoveHPDrain:: @ 81D9843 attackstring pause 32 orword 0x2024c6c, 0x100 @@ -4137,10 +4137,10 @@ gUnknown_081D9843:: @ 81D9843 orbyte 0x2024c68, 8 jump BattleScript_EndTurn -gUnknown_081D9865:: @ 81D9865 +BattleScript_MoveHPDrain_FullHP_PPLoss:: @ 81D9865 ppreduce -gUnknown_081D9866:: @ 81D9866 +BattleScript_MoveHPDrain_FullHP:: @ 81D9866 attackstring pause 32 printstring BATTLE_TEXT_MadeUseless @@ -4148,10 +4148,10 @@ gUnknown_081D9866:: @ 81D9866 orbyte 0x2024c68, 8 jump BattleScript_EndTurn -gUnknown_081D987B:: @ 81D987B +BattleScript_FlashFireBoost_PPLoss:: @ 81D987B ppreduce -gUnknown_081D987C:: @ 81D987C +BattleScript_FlashFireBoost:: @ 81D987C attackstring pause 32 printfromtable BattleTextList_401648 @@ -4164,7 +4164,7 @@ BattleScript_1D988D: @ 81D988D waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D989B:: @ 81D989B +BattleScript_AbilityNoStatLoss:: @ 81D989B pause 32 printstring BATTLE_TEXT_PreventedStatLoss waitmessage 64 @@ -4188,7 +4188,7 @@ BattleScript_PSNPrevention:: @ 81D98BD waitmessage 64 return -gUnknown_081D98C9:: @ 81D98C9 +BattleScript_ObliviousPreventsAttraction:: @ 81D98C9 pause 32 printstring BATTLE_TEXT_PreventedRomance waitmessage 64 @@ -4206,7 +4206,7 @@ BattleScript_1D98E5: @ 81D98E5 waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D98F3:: @ 81D98F3 +BattleScript_SoundproofProtected:: @ 81D98F3 attackstring ppreduce pause 32 @@ -4214,7 +4214,7 @@ gUnknown_081D98F3:: @ 81D98F3 waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9903:: @ 81D9903 +BattleScript_AbilityNoSpecificStatLoss:: @ 81D9903 pause 32 printstring BATTLE_TEXT_PreventedLoss waitmessage 64 @@ -4227,12 +4227,12 @@ BattleScript_NoItemSteal:: @ 81D9913 waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9921:: @ 81D9921 +BattleScript_ColorChangeActivates:: @ 81D9921 printstring BATTLE_TEXT_MadeType waitmessage 64 return -gUnknown_081D9928:: @ 81D9928 +BattleScript_RoughSkinActivates:: @ 81D9928 orword 0x2024c6c, 0x100100 graphicalhpupdate USER datahpupdate USER @@ -4241,18 +4241,18 @@ gUnknown_081D9928:: @ 81D9928 faintpokemon USER, 0, 0x0 return -gUnknown_081D9943:: @ 81D9943 +BattleScript_CuteCharmActivates:: @ 81D9943 atk65 1, 0xf0000 printstring BATTLE_TEXT_InfatuatedPoke waitmessage 64 return -gUnknown_081D9950:: @ 81D9950 +BattleScript_ApplySecondaryEffect:: @ 81D9950 waitstateatk seteffectuser return -gUnknown_081D9953:: @ 81D9953 +BattleScript_SynchronizeActivates:: @ 81D9953 waitstateatk seteffecttarget return @@ -4275,7 +4275,7 @@ gUnknown_081D996F:: @ 81D996F waitmessage 64 jumptoattack TARGET -gUnknown_081D9977:: @ 81D9977 +BattleScript_MoveUsedLoafingAround:: @ 81D9977 printfromtable BattleTextList_40160E waitmessage 64 setbyte 0x201600c, 0 @@ -4301,11 +4301,11 @@ BattleScript_SubstituteFade:: @ 81D99AB printstring BATTLE_TEXT_SubFaded return -gUnknown_081D99B6:: @ 81D99B6 - callatk gUnknown_081D99BC +BattleScript_BerryCurePrlzEnd2:: @ 81D99B6 + callatk BattleScript_BerryCureParRet end2 -gUnknown_081D99BC:: @ 81D99BC +BattleScript_BerryCureParRet:: @ 81D99BC playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredParalysis waitmessage 64 @@ -4313,11 +4313,11 @@ gUnknown_081D99BC:: @ 81D99BC removeitem 10 return -gUnknown_081D99CE:: @ 81D99CE - callatk gUnknown_081D99D4 +BattleScript_BerryCurePsnEnd2:: @ 81D99CE + callatk BattleScript_BerryCurePsnRet end2 -gUnknown_081D99D4:: @ 81D99D4 +BattleScript_BerryCurePsnRet:: @ 81D99D4 playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredPoison waitmessage 64 @@ -4325,11 +4325,11 @@ gUnknown_081D99D4:: @ 81D99D4 removeitem 10 return -gUnknown_081D99E6:: @ 81D99E6 - callatk gUnknown_081D99EC +BattleScript_BerryCureBrnEnd2:: @ 81D99E6 + callatk BattleScript_BerryCureBrnRet end2 -gUnknown_081D99EC:: @ 81D99EC +BattleScript_BerryCureBrnRet:: @ 81D99EC playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredBurn waitmessage 64 @@ -4337,11 +4337,11 @@ gUnknown_081D99EC:: @ 81D99EC removeitem 10 return -gUnknown_081D99FE:: @ 81D99FE - callatk gUnknown_081D9A04 +BattleScript_BerryCureFrzEnd2:: @ 81D99FE + callatk BattleScript_BerryCureFrzRet end2 -gUnknown_081D9A04:: @ 81D9A04 +BattleScript_BerryCureFrzRet:: @ 81D9A04 playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredFreeze waitmessage 64 @@ -4349,11 +4349,11 @@ gUnknown_081D9A04:: @ 81D9A04 removeitem 10 return -gUnknown_081D9A16:: @ 81D9A16 - callatk gUnknown_081D9A1C +BattleScript_BerryCureSlpEnd2:: @ 81D9A16 + callatk BattleScript_BerryCureSlpRet end2 -gUnknown_081D9A1C:: @ 81D9A1C +BattleScript_BerryCureSlpRet:: @ 81D9A1C playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredSleep waitmessage 64 @@ -4361,11 +4361,11 @@ gUnknown_081D9A1C:: @ 81D9A1C removeitem 10 return -gUnknown_081D9A2E:: @ 81D9A2E - callatk gUnknown_081D9A34 +BattleScript_BerryCureConfusionEnd2:: @ 81D9A2E + callatk BattleScript_BerryCureConfusionRet end2 -gUnknown_081D9A34:: @ 81D9A34 +BattleScript_BerryCureConfusionRet:: @ 81D9A34 playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredConfusion waitmessage 64 @@ -4384,18 +4384,18 @@ gUnknown_081D9A4A:: @ 81D9A4A removeitem 10 return -gUnknown_081D9A5E:: @ 81D9A5E - callatk gUnknown_081D9A64 +BattleScript_WhiteHerbEnd2:: @ 81D9A5E + callatk BattleScript_WhiteHerbRet end2 -gUnknown_081D9A64:: @ 81D9A64 +BattleScript_WhiteHerbRet:: @ 81D9A64 playanimation 10, 7, 0x0 printstring BATTLE_TEXT_RestoredStatus waitmessage 64 removeitem 10 return -gUnknown_081D9A74:: @ 81D9A74 +BattleScript_ItemHealHP_RemoveItem:: @ 81D9A74 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_RestoredHealth waitmessage 64 @@ -4405,18 +4405,18 @@ gUnknown_081D9A74:: @ 81D9A74 removeitem USER end2 -gUnknown_081D9A91:: @ 81D9A91 +BattleScript_BerryPPHealEnd2:: @ 81D9A91 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_RestoredPP waitmessage 64 removeitem USER end2 -gUnknown_081D9AA1:: @ 81D9AA1 - callatk gUnknown_081D9AA7 +BattleScript_ItemHealHP_End2:: @ 81D9AA1 + callatk BattleScript_ItemHealHP_Ret end2 -gUnknown_081D9AA7:: @ 81D9AA7 +BattleScript_ItemHealHP_Ret:: @ 81D9AA7 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_RestoredHPLittle waitmessage 64 @@ -4425,7 +4425,7 @@ gUnknown_081D9AA7:: @ 81D9AA7 datahpupdate USER return -gUnknown_081D9AC2:: @ 81D9AC2 +BattleScript_MoveSelectionChoiceBanded:: @ 81D9AC2 printstring2 BATTLE_TEXT_ChoiceBand atk44 @@ -4435,7 +4435,7 @@ BattleScript_HangedOnMsg:: @ 81D9AC6 waitmessage 64 return -gUnknown_081D9AD4:: @ 81D9AD4 +BattleScript_BerryConfuseHealEnd2:: @ 81D9AD4 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_RestoredHealth waitmessage 64 @@ -4449,7 +4449,7 @@ gUnknown_081D9AD4:: @ 81D9AD4 removeitem USER end2 -gUnknown_081D9AFE:: @ 81D9AFE +BattleScript_BerryStatRaiseEnd2:: @ 81D9AFE playanimation USER, 7, 0x0 statbuffchange 65, BattleScript_1D9B0B @@ -4459,7 +4459,7 @@ BattleScript_1D9B0B: @ 81D9B0B removeitem USER end2 -gUnknown_081D9B19:: @ 81D9B19 +BattleScript_BerryFocusEnergyEnd2:: @ 81D9B19 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_HustleUse waitmessage 64 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 3f0dc8af1..b10b7f96f 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -51,7 +51,7 @@ BattleScript_1D9EBC: @ 81D9EBC atk98 1 pokemoncatchfunction -gUnknown_081D9EC2:: @ 81D9EC2 +BattleScript_SuccessBallThrow:: @ 81D9EC2 jumpifhalfword 0, gLastUsedItem, 5, BattleScript_1D9ED0 atk60 11 @@ -76,12 +76,12 @@ BattleScript_1D9EF8: @ 81D9EF8 setbyte gBattleOutcome, 7 activesidesomething -gUnknown_081D9F00:: @ 81D9F00 +BattleScript_WallyBallThrow:: @ 81D9F00 printstring BATTLE_TEXT_BallCaught2 setbyte gBattleOutcome, 7 activesidesomething -gUnknown_081D9F0A:: @ 81D9F0A +BattleScript_ShakeBallThrow:: @ 81D9F0A printfromtable BattleTextList_4015E6 waitmessage 64 jumpifbyte 5, gBattleTypeFlags, 128, BattleScript_1D9F34 @@ -93,7 +93,7 @@ gUnknown_081D9F0A:: @ 81D9F0A BattleScript_1D9F34: @ 81D9F34 atkf6 -gUnknown_081D9F35:: @ 81D9F35 +BattleScript_TrainerBallBlock:: @ 81D9F35 waitmessage 64 printstring BATTLE_TEXT_BlockBall waitmessage 64 diff --git a/data/battle_transition.s b/data/battle_transition.s deleted file mode 100644 index 0d463ddef..000000000 --- a/data/battle_transition.s +++ /dev/null @@ -1,399 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083FBB88:: @ 83FBB88 - .incbin "graphics/battle_transitions/big_pokeball.4bpp" - - .align 2 -gUnknown_083FC108:: @ 83FC108 - .incbin "graphics/battle_transitions/pokeball_trail.4bpp" - - .align 2 -gSpriteImage_83FC148:: @ 83FC148 - .incbin "graphics/battle_transitions/pokeball.4bpp" - - .align 2 -gUnknown_083FC348:: @ 83FC348 - .incbin "graphics/battle_transitions/elite_four_bg.4bpp" - - .align 2 -gSpriteImage_83FC528:: @ 83FC528 - .incbin "graphics/battle_transitions/unused_brendan.4bpp" - - .align 2 -gSpriteImage_83FCD28:: @ 83FCD28 - .incbin "graphics/battle_transitions/unused_lass.4bpp" - - .align 2 -gUnknown_083FD528:: @ 83FD528 - .incbin "graphics/battle_transitions/shrinking_box.4bpp" - - .align 2 -gUnknown_083FD708:: @ 83FD708 - .4byte 0x0200c000 - - .align 2 -gUnknown_083FD70C:: @ 83FD70C - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - - .align 2 -gBattleTransitionFuncs:: @ 83FD750 - .4byte sub_811ACB4 - .4byte sub_811ADAC - .4byte sub_811AF44 - .4byte sub_811B0F0 - .4byte sub_811B578 - .4byte sub_811B7E8 - .4byte sub_811BCBC - .4byte sub_811BEA0 - .4byte sub_811CA5C - .4byte sub_811CCDC - .4byte sub_811D0B8 - .4byte sub_811D1C8 - .4byte sub_811C08C - .4byte sub_811C0AC - .4byte sub_811C0CC - .4byte sub_811C0EC - .4byte sub_811C10C - - .align 2 -gUnknown_083FD794:: @ 83FD794 - .4byte sub_811AB88 - .4byte sub_811ABD8 - .4byte sub_811AC0C - .4byte sub_811AC34 - - .align 2 -gUnknown_083FD7A4:: @ 83FD7A4 - .4byte sub_811ACEC - .4byte sub_811AD1C - .4byte sub_811AD80 - - .align 2 -gUnknown_083FD7B0:: @ 83FD7B0 - .4byte sub_811ADE4 - .4byte sub_811AE70 - - .align 2 -gUnknown_083FD7B8:: @ 83FD7B8 - .4byte sub_811AF7C - .4byte sub_811B000 - - .align 2 -gUnknown_083FD7C0:: @ 83FD7C0 - .4byte sub_811B128 - .4byte sub_811B1D8 - .4byte sub_811B268 - .4byte sub_811B2F4 - .4byte sub_811B380 - .4byte sub_811B3EC - - .align 2 -gUnknown_083FD7D8:: @ 83FD7D8 - .4byte sub_811B5B0 - .4byte sub_811B5FC - .4byte sub_811B688 - - .align 1 -gUnknown_083FD7E4:: @ 83FD7E4 - .2byte -16 - .2byte 256 - - .align 1 -gUnknown_083FD7E8:: @ 83FD7E8 - .2byte 0 - .2byte 32 - .2byte 64 - .2byte 18 - .2byte 48 - - .align 1 -gUnknown_083FD7F2:: @ 83FD7F2 - .2byte 8 - .2byte -8 - - .align 2 -gUnknown_083FD7F8:: @ 83FD7F8 - .4byte sub_811B820 - .4byte sub_811B884 - .4byte sub_811B90C - .4byte sub_811B9F0 - .4byte sub_811BA70 - .4byte sub_811BB60 - .4byte sub_811BBEC - - .align 2 -gUnknown_083FD814:: @ 83FD814 - .4byte sub_811BCF4 - .4byte sub_811BD60 - - .align 2 -gUnknown_083FD81C:: @ 83FD81C - .4byte sub_811BED8 - .4byte sub_811BF2C - .4byte sub_811BFC4 - - .align 2 -gUnknown_083FD828:: @ 83FD828 - .4byte sub_811C164 - .4byte sub_811C1CC - .4byte sub_811C2A4 - .4byte sub_811C38C - .4byte sub_811C400 - .4byte sub_811C43C - .4byte sub_811C4F0 - .4byte sub_811C5B4 - .4byte sub_811C5E8 - .4byte sub_811C630 - -gUnknown_083FD850:: @ 83FD850 - .byte TRAINER_PIC_SIDNEY - .byte TRAINER_PIC_PHOEBE - .byte TRAINER_PIC_GLACIA - .byte TRAINER_PIC_DRAKE - .byte TRAINER_PIC_STEVEN - - .align 1 -gUnknown_083FD856:: @ 83FD856 - .2byte 0x200, 0x200 - .2byte 0x200, 0x200 - .2byte 0x1B0, 0x1B0 - .2byte 0x1A0, 0x1A0 - .2byte 0x188, 0x188 - - .align 1 -gUnknown_083FD86A:: @ 83FD86A - .2byte 0, 0 - .2byte 0, 0 - .2byte -4, 4 - .2byte 0, 5 - .2byte 0, 7 - - .align 2 -gUnknown_083FD880:: @ 83FD880 - .4byte sub_811C934 - .4byte sub_811C938 - .4byte sub_811C984 - .4byte sub_811C9B8 - .4byte sub_811C934 - .4byte sub_811C9E4 - .4byte sub_811C934 - - .align 1 -gUnknown_083FD89C:: @ 83FD89C - .2byte 12, -12 - - .align 1 -gUnknown_083FD8A0:: @ 83FD8A0 - .2byte -1, 1 - - .align 2 -gUnknown_083FD8A4:: @ 83FD8A4 - .4byte sub_811CA94 - .4byte sub_811CB20 - .4byte sub_811CBE8 - - .align 2 -gUnknown_083FD8B0:: @ 83FD8B0 - .4byte sub_811CD14 - .4byte sub_811CDA0 - .4byte sub_811CE14 - .4byte sub_811CE4C - .4byte sub_811CEB0 - - .align 1 -gUnknown_083FD8C4:: @ 83FD8C4 - .2byte 0 - .2byte 20 - .2byte 15 - .2byte 40 - .2byte 10 - .2byte 25 - .2byte 35 - .2byte 5 - - .align 2 -gUnknown_083FD8D4:: @ 83FD8D4 - .4byte sub_811D0F0 - .4byte sub_811D144 - .4byte sub_811D19C - - .align 2 -gUnknown_083FD8E0:: @ 83FD8E0 - .4byte sub_811D200 - .4byte sub_811D260 - .4byte sub_811D2D8 - .4byte sub_811D3B0 - .4byte sub_811D41C - - .align 1 -gUnknown_083FD8F4:: @ 83FD8F4 - .2byte 56, 0, 0, 160, 0 - .2byte 104, 160, 240, 88, 1 - .2byte 240, 72, 56, 0, 1 - .2byte 0, 32, 144, 160, 0 - .2byte 144, 160, 184, 0, 1 - .2byte 56, 0, 168, 160, 0 - .2byte 168, 160, 48, 0, 1 - - .align 1 -gUnknown_083FD93A:: @ 83FD93A - .2byte 8 - .2byte 4 - .2byte 2 - .2byte 1 - .2byte 1 - .2byte 1 - .2byte 0 - - .align 2 -gUnknown_083FD948:: @ 83FD948 - .4byte sub_811D584 - .4byte sub_811D5E0 - - .align 2 -gSpriteImageTable_83FD950:: @ 83FD950 - obj_frame_tiles gSpriteImage_83FC148, 0x200 - - .align 2 -gSpriteAnim_83FD958:: @ 83FD958 - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83FD960:: @ 83FD960 - .4byte gSpriteAnim_83FD958 - - .align 2 -gSpriteAffineAnim_83FD964:: @ 83FD964 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83FD974:: @ 83FD974 - obj_rot_scal_anim_frame 0x0, 0x0, 4, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_83FD984:: @ 83FD984 - .4byte gSpriteAffineAnim_83FD964 - .4byte gSpriteAffineAnim_83FD974 - - .align 2 -gSpriteTemplate_83FD98C:: @ 83FD98C - spr_template 0xFFFF, 4105, gFieldOamData_32x32, gSpriteAnimTable_83FD960, gSpriteImageTable_83FD950, gSpriteAffineAnimTable_83FD984, sub_811B720 - - .align 2 -gOamData_83FD9A4:: @ 83FD9A4 - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x0000 - - .align 2 -gSpriteImageTable_83FD9AC:: @ 83FD9AC - obj_frame_tiles gSpriteImage_83FC528, 0x800 - - .align 2 -gSpriteImageTable_83FD9B4:: @ 83FD9B4 - obj_frame_tiles gSpriteImage_83FCD28, 0x800 - - .align 2 -gSpriteAnim_83FD9BC:: @ 83FD9BC - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83FD9C4:: @ 83FD9C4 - .4byte gSpriteAnim_83FD9BC - - .align 2 -gSpriteTemplate_83FD9C8:: @ 83FD9C8 - spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9AC, gDummySpriteAffineAnimTable, sub_811C90C - - .align 2 -gSpriteTemplate_83FD9E0:: @ 83FD9E0 - spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9B4, gDummySpriteAffineAnimTable, sub_811C90C - - .align 2 -gFieldEffectObjectPalette10:: @ 83FD9F8 - .incbin "graphics/field_effect_objects/palettes/10.gbapal" - - .align 2 -gFieldEffectObjectPaletteInfo10:: @ 83FDA18 - obj_pal gFieldEffectObjectPalette10, 0x1009 - - .align 2 -Unknown_83FDA20: - .incbin "graphics/battle_transitions/sidney_bg.gbapal" - - .align 2 -Unknown_83FDA40: - .incbin "graphics/battle_transitions/phoebe_bg.gbapal" - - .align 2 -Unknown_83FDA60: - .incbin "graphics/battle_transitions/glacia_bg.gbapal" - - .align 2 -Unknown_83FDA80: - .incbin "graphics/battle_transitions/drake_bg.gbapal" - - .align 2 -Unknown_83FDAA0: - .incbin "graphics/battle_transitions/steven_bg.gbapal" - - .align 2 -Unknown_83FDAC0: - .incbin "graphics/battle_transitions/brendan_bg.gbapal" - - .align 2 -Unknown_83FDAE0: - .incbin "graphics/battle_transitions/may_bg.gbapal" - - .align 2 -gUnknown_083FDB00:: @ 83FDB00 - .4byte Unknown_83FDA20 - .4byte Unknown_83FDA40 - .4byte Unknown_83FDA60 - .4byte Unknown_83FDA80 - .4byte Unknown_83FDAA0 - - .align 2 -gUnknown_083FDB14:: @ 83FDB14 - .4byte Unknown_83FDAC0 - .4byte Unknown_83FDAE0 - - .align 2 -UnusedTrainerPalette: - .incbin "graphics/battle_transitions/unused_trainer.gbapal" - - .align 2 -gSpritePalette_UnusedTrainer:: @ 83FDB3C - obj_pal UnusedTrainerPalette, 0x100A - - .align 2 -gUnknown_083FDB44:: @ 83FDB44 - .incbin "graphics/battle_transitions/big_pokeball_map.bin" - - .align 2 -gUnknown_083FDFF4:: @ 83FDFF4 - .incbin "graphics/battle_transitions/elite_four_bg_map.bin" diff --git a/data/berry_blender.s b/data/berry_blender.s deleted file mode 100644 index ff0f06473..000000000 --- a/data/berry_blender.s +++ /dev/null @@ -1,456 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_08215C0C:: @ 8215C0C - .incbin "graphics/berry_blender/center.gbapal" - - .align 2 -gUnknown_08215C2C:: @ 8215C2C - .incbin "graphics/berry_blender/center_map.bin" - - .align 2 -gUnknown_0821602C:: @ 821602C - .incbin "graphics/berry_blender/outer.gbapal" - - .incbin "graphics/unused/unknown/821604C.gbapal" - - .space 0x1C0 - - .string "▶$" - .string " $" - .string "カッコイ$" @ "cool" (missing an イ at the end) - .string "カワイイ$" @ "cute" - .string "ウツクシ$" @ "beautiful" (missing an イ at the end) - .string "カシコイ$" @ "smart" - .string "タクマシ$" @ "tough" (missing an イ at the end) - -gUnknown_08216249:: @ 8216249 - .string "\p$" - -@ unreferenced -@ These appear to be the first names of four people who worked on the game. - .string "てつじ$", 10 @ Tetsuji (Ohta) - .string "あきと$", 10 @ Akito (Mori) - .string "シゲル$", 10 @ Shigeru (Ohmori) - .string "ヨシノリ$", 10 @ Yoshinori (Matsuda) - -UnknownText_2Pok: - .string "2Pok$" -UnknownText_3Pok: - .string "3Pok$" -UnknownText_4Pok: - .string "4Pok$" - - .align 2 -gUnknown_08216284:: @ 8216284 - .4byte UnknownText_2Pok - .4byte UnknownText_3Pok - .4byte UnknownText_4Pok - -@ unreferenced - .string "1P$", 4 - .string "2P$", 4 - .string "3P$", 4 - .string "4P$", 4 - -.ifdef ENGLISH -UnknownText_Mister: - .string "MISTER$" -UnknownText_Laddie: - .string "LADDIE$" -UnknownText_Lassie: - .string "LASSIE$" -.else -UnknownText_Mister: - .string "OPI$" -UnknownText_Laddie: - .string "KUMPEL$" -UnknownText_Lassie: - .string "TUSSI$" -.endif - - .align 2 -gUnknown_082162B8:: @ 82162B8 - .4byte UnknownText_Mister - .4byte UnknownText_Laddie - .4byte UnknownText_Lassie - -gUnknown_082162C4:: @ 82162C4 - .string "{COLOR RED}$" - -gUnknown_082162C8:: @ 82162C8 - .string "\n$" - - .string " $" - -gUnknown_082162CC:: @ 82162CC - .byte -1, -1 - .byte 1, -1 - .byte -1, 1 - .byte 1, 1 - -gUnknown_082162D4:: @ 82162D4 - .byte 2, 6 - .byte 23, 6 - .byte 2, 12 - .byte 23, 12 - .byte 1, 6 - .byte 22, 6 - .byte 1, 12 - .byte 22, 12 - -gUnknown_082162E4:: @ 82162E4 - .byte 72, 32 - .byte 168, 32 - .byte 72, 128 - .byte 168, 128 - -gUnknown_082162EC:: @ 82162EC - .byte -1, 0, 1, -1 - .byte -1, 0, 1, 2 - .byte 0, 1, 2, 3 - - .align 1 -gUnknown_082162F8:: @ 82162F8 - .2byte 0x0000, 0xC000, 0x4000, 0x8000 - -gUnknown_08216300:: @ 8216300 - .byte 1 - .byte 1 - .byte 0 - -gUnknown_08216303:: @ 8216303 - .byte 32 - .byte 224 - .byte 96 - .byte 160 - .byte 0 - - .align 2 -gUnknown_08216308:: @ 8216308 - .4byte sub_804F8C8 - .4byte sub_804F9F4 - .4byte sub_804FB1C - - .align 2 -gOamData_8216314:: @ 8216314 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821631C:: @ 821631C - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216324:: @ 8216324 - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_821632C:: @ 821632C - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216334:: @ 8216334 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_821633C:: @ 821633C - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216350:: @ 8216350 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216364:: @ 8216364 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216378:: @ 8216378 - obj_image_anim_frame 48, 2 - obj_image_anim_frame 32, 5 - obj_image_anim_frame 48, 3 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_821638C:: @ 821638C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216394:: @ 8216394 - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_821639C:: @ 821639C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82163A4:: @ 82163A4 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82163AC:: @ 82163AC - .4byte gSpriteAnim_821631C - .4byte gSpriteAnim_8216324 - .4byte gSpriteAnim_821632C - .4byte gSpriteAnim_8216334 - .4byte gSpriteAnim_821633C - .4byte gSpriteAnim_8216350 - .4byte gSpriteAnim_8216364 - .4byte gSpriteAnim_8216378 - .4byte gSpriteAnim_821638C - .4byte gSpriteAnim_8216394 - .4byte gSpriteAnim_821639C - .4byte gSpriteAnim_82163A4 - - .align 2 -gUnknown_082163DC:: @ 82163DC - obj_tiles gBerryBlenderArrowTiles, 0x800, 46545 - - .align 2 -gUnknown_082163E4:: @ 82163E4 - obj_pal gBerryBlenderMiscPalette, 46546 - - .align 2 -gUnknown_082163EC:: @ 82163EC - obj_pal gBerryBlenderArrowPalette, 12312 - - .align 2 -gSpriteTemplate_82163F4:: @ 82163F4 - spr_template 46545, 12312, gOamData_8216314, gSpriteAnimTable_82163AC, NULL, gDummySpriteAffineAnimTable, sub_8051C04 - - .align 2 -gOamData_821640C:: @ 821640C - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8216414:: @ 8216414 - obj_image_anim_frame 0, 20 - obj_image_anim_end - - .align 2 -gSpriteAnim_821641C:: @ 821641C - obj_image_anim_frame 4, 20, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216424:: @ 8216424 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_821643C:: @ 821643C - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216444:: @ 8216444 - .4byte gSpriteAnim_8216414 - .4byte gSpriteAnim_821641C - .4byte gSpriteAnim_8216424 - .4byte gSpriteAnim_821643C - - .align 2 -gUnknown_08216454:: @ 8216454 - obj_tiles gBerryBlenderMarubatsuTiles, 0x200, 48888 - - .align 2 -gSpriteTemplate_821645C:: @ 821645C - spr_template 48888, 46546, gOamData_821640C, gSpriteAnimTable_8216444, NULL, gDummySpriteAffineAnimTable, sub_8051650 - - .align 2 -gOamData_8216474:: @ 8216474 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821647C:: @ 821647C - obj_image_anim_frame 0, 3 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 3, 5 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_8216494:: @ 8216494 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 4, 5 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_82164AC:: @ 82164AC - obj_image_anim_frame 0, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_frame 2, 2 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 3, 3 - obj_image_anim_frame 2, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_frame 0, 2 - obj_image_anim_end - - .align 2 -gSpriteAnim_82164D0:: @ 82164D0 - obj_image_anim_frame 5, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82164D8:: @ 82164D8 - obj_image_anim_frame 6, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82164E0:: @ 82164E0 - .4byte gSpriteAnim_821647C - .4byte gSpriteAnim_8216494 - .4byte gSpriteAnim_82164AC - .4byte gSpriteAnim_82164D0 - .4byte gSpriteAnim_82164D8 - - .align 2 -gUnknown_082164F4:: @ 82164F4 - obj_tiles gBerryBlenderParticlesTiles, 0xE0, 23456 - - .align 2 -gSpriteTemplate_82164FC:: @ 82164FC - spr_template 23456, 46546, gOamData_8216474, gSpriteAnimTable_82164E0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_8216514:: @ 8216514 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821651C:: @ 821651C - obj_image_anim_frame 32, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_8216524:: @ 8216524 - obj_image_anim_frame 16, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_821652C:: @ 821652C - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216534:: @ 8216534 - .4byte gSpriteAnim_821651C - .4byte gSpriteAnim_8216524 - .4byte gSpriteAnim_821652C - - .align 2 -gUnknown_08216540:: @ 8216540 - obj_tiles gBerryBlenderCountdownNumbersTiles, 0x600, 12345 - - .align 2 -gSpriteTemplate_8216548:: @ 8216548 - spr_template 12345, 46546, gOamData_8216514, gSpriteAnimTable_8216534, NULL, gDummySpriteAffineAnimTable, sub_805181C - - .align 2 -gOamData_8216560:: @ 8216560 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8216568:: @ 8216568 - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216570:: @ 8216570 - .4byte gSpriteAnim_8216568 - - .align 2 -gUnknown_08216574:: @ 8216574 - obj_tiles gBerryBlenderStartTiles, 0x400, 12346 - - .align 2 -gSpriteTemplate_821657C:: @ 821657C - spr_template 12346, 46546, gOamData_8216560, gSpriteAnimTable_8216570, NULL, gDummySpriteAffineAnimTable, sub_80518CC - - .align 1 -gUnknown_08216594:: @ 8216594 - .2byte -10, 20, 10, 2, 1 - .2byte 250, 20, 10, -2, 1 - .2byte -10, 140, 10, 2, -1 - .2byte 250, 140, 10, -2, -1 - -gUnknown_082165BC:: @ 82165BC - .byte 4, 3, 2 - .byte 0, 4, 3 - .byte 1, 0, 4 - .byte 2, 1, 0 - .byte 3, 2, 1 - .byte 0, 2, 3 - .byte 1, 3, 4 - .byte 2, 4, 0 - .byte 3, 0, 1 - .byte 4, 1, 2 - -gUnknown_082165DA:: @ 82165DA - .byte 1, 1, 2, 3, 4 - -gUnknown_082165DF:: @ 82165DF - .byte 0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15 - -gUnknown_082165E9:: @ 82165E9 - .byte 6, 6, 6, 6, 5 - -gUnknown_082165EE:: @ 82165EE - .byte 3, 3, 3, 2, 2 - -gUnknown_082165F3:: @ 82165F3 - .byte 3, 3, 3, 3, 2 - -gUnknown_082165F8:: @ 82165F8 - .string " $" - -gOtherText_BPMAndDash:: @ 82165FA - .string "BPM$" - .string "-$" - -gUnknown_08216600:: @ 8216600 - .string "\n$" - - .string "\n$" diff --git a/data/data2.s b/data/data2a.s index 00ef5c26e..657fc6908 100644 --- a/data/data2.s +++ b/data/data2a.s @@ -1015,7 +1015,7 @@ gUnknown_081FA71F:: @ 81FA71F .byte 4, 4, 4, 4 .align 1 -gUnknown_081FA724:: @ 81FA724 +gSoundMovesTable:: @ 81FA724 .2byte 0x2D .2byte 0x2E .2byte 0x2F @@ -1027,778 +1027,3 @@ gUnknown_081FA724:: @ 81FA724 .2byte 0x140 .2byte 0x130 .2byte 0xFFFF - - .align 2 -gBattleScriptingCommandsTable:: @ 81FA73C - .4byte atk00_attackcanceler - .4byte atk01_accuracycheck - .4byte atk02_attackstring - .4byte atk03_ppreduce - .4byte atk04_critcalc - .4byte atk05_damagecalc1 - .4byte atk06_typecalc - .4byte atk07_dmg_adjustment - .4byte atk08_dmg_adjustment2 - .4byte atk09_attackanimation - .4byte atk0A_waitanimation - .4byte atk0B_healthbarupdate - .4byte atk0C_datahpupdate - .4byte atk0D_critmessage - .4byte atk0E_effectiveness_sound - .4byte atk0F_resultmessage - .4byte atk10_printstring - .4byte atk11_printstring_playeronly - .4byte atk12_waitmessage - .4byte atk13_printfromtable - .4byte atk14_printfromtable_playeronly - .4byte atk15_seteffectwithchancetarget - .4byte atk16_seteffectprimary - .4byte atk17_seteffectsecondary - .4byte atk18_status_effect_clear - .4byte atk19_faint_pokemon - .4byte atk1A_faint_animation - .4byte atk1B_faint_effects_clear - .4byte atk1C_jumpifstatus - .4byte atk1D_jumpifstatus2 - .4byte atk1E_jumpifability - .4byte atk1F_jumpifsideaffecting - .4byte atk20_jumpifstat - .4byte atk21_jumpifstatus3 - .4byte atk22_jumpiftype - .4byte atk23_getexp - .4byte atk24 - .4byte atk25_move_values_cleanup - .4byte atk26_set_multihit - .4byte atk27_decrement_multihit - .4byte atk28_goto - .4byte atk29_jumpifbyte - .4byte atk2A_jumpifhalfword - .4byte atk2B_jumpifword - .4byte atk2C_jumpifarrayequal - .4byte atk2D_jumpifarraynotequal - .4byte atk2E_setbyte - .4byte atk2F_addbyte - .4byte atk30_subbyte - .4byte atk31_copyarray - .4byte atk32_copyarray_withindex - .4byte atk33_orbyte - .4byte atk34_orhalfword - .4byte atk35_orword - .4byte atk36_bicbyte - .4byte atk37_bichalfword - .4byte atk38_bicword - .4byte atk39_pause - .4byte atk3A_waitstate - .4byte atk3B_healthbar_update - .4byte atk3C_return - .4byte atk3D_end - .4byte atk3E_end2 - .4byte atk3F_end3 - .4byte atk40_jump_if_move_affected_by_protect - .4byte atk41_call - .4byte atk42_jumpiftype2 - .4byte atk43_jumpifabilitypresent - .4byte atk44 - .4byte atk45_playanimation - .4byte atk46_playanimation2 - .4byte atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues - .4byte atk48_playstatchangeanimation - .4byte sub_80217F8 - .4byte atk4A_damageflags - .4byte atk4B_cmd4b - .4byte atk4C_switch1 - .4byte sub_80225F0 - .4byte sub_8022784 - .4byte sub_8022830 - .4byte atk50_openpartyscreen - .4byte sub_802331C - .4byte sub_8023524 - .4byte sub_80237CC - .4byte atk54_802511C - .4byte sub_8023848 - .4byte atk56_8025194 - .4byte atk57_80251C4_flee - .4byte atk58_cmd58 - .4byte atk59_8025230 - .4byte sub_8023AF8 - .4byte atk5B_80256E0 - .4byte atk5C_cmd5c - .4byte sub_8024014 - .4byte atk5E_8025A70 - .4byte atk5F_8025B24 - .4byte atk60_cmd60 - .4byte atk61_8025BA4 - .4byte atk62_08025C6C - .4byte atk63_jumptoattack - .4byte atk64_statusanimation - .4byte atk65_8025D90 - .4byte atk66_8025E38 - .4byte atk67_8025ECC - .4byte sub_80246A0 - .4byte atk69_8025FE0 - .4byte atk6A_stash_item_for_side - .4byte sub_80248C0 - .4byte sub_80248FC - .4byte sub_8024C4C - .4byte atk6E_state0_side_becomes_attacker - .4byte atk6F_8026810 - .4byte atk70_record_ability_usage_of_side - .4byte atk71_80268A0 - .4byte atk72_flee - .4byte atk73_cmd73 - .4byte atk74_hp_tresholds_2 - .4byte atk75_8026A58 - .4byte sub_8024F40 - .4byte atk77_setprotect - .4byte atk78_faintifabilitynotdamp - .4byte atk79_setuserhptozero - .4byte sub_80253E8 - .4byte sub_802548C - .4byte sub_8025508 - .4byte sub_80256D0 - .4byte atk7E_setreflect - .4byte sub_80257DC - .4byte atk80_manipulatedamage - .4byte atk81_setrest - .4byte atk82_jumpifnotfirstturn - .4byte sub_8025A34 - .4byte sub_8025AE0 - .4byte sub_8025B5C - .4byte atk86_stockpiletobasedamage - .4byte sub_8025D00 - .4byte atk88_negativedamage - .4byte atk89_statbuffchange - .4byte atk8A_normalisebuffs - .4byte atk8B_setbide - .4byte atk8C_confuseifrepeatingattackends - .4byte atk8D_setloopcounter - .4byte sub_8026468 - .4byte sub_8026590 - .4byte sub_802688C - .4byte atk91_givemoney - .4byte atk92_setlightscreen - .4byte sub_8026B78 - .4byte atk94_gethalfcurrentenemyhp - .4byte sub_8026E94 - .4byte sub_8026EEC - .4byte sub_8027064 - .4byte sub_8027238 - .4byte sub_8027348 - .4byte atk9A_setincreasedcriticalchance - .4byte atk9B_transformdataexecution - .4byte sub_80275D8 - .4byte atk9D_copyattack - .4byte sub_80278B8 - .4byte sub_8027960 - .4byte atkA0_psywavedamageeffect - .4byte atkA1_counterdamagecalculator - .4byte atkA2_mirrorcoatdamagecalculator - .4byte atkA3_disablelastusedattack - .4byte atkA4_setencore - .4byte sub_8027E4C - .4byte sub_8027F44 - .4byte atkA7_setalwayshitflag - .4byte atkA8_copymovepermanently - .4byte sub_8028420 - .4byte sub_8028558 - .4byte atkAB_802A458 - .4byte atkAC_remaininghptopower - .4byte sub_8028668 - .4byte sub_8028858 - .4byte sub_8028AD4 - .4byte sub_8028B70 - .4byte sub_8028BFC - .4byte atkB2_setperishsong - .4byte atkB3_rolloutdamagecalculation - .4byte atkB4_jumpifconfusedandattackmaxed - .4byte sub_8028EC8 - .4byte atkB6_happinesstodamagecalculation - .4byte atkB7_presentdamagecalculation - .4byte sub_80290BC - .4byte atkB9_magnitudedamagecalculation - .4byte sub_8029270 - .4byte sub_80293E8 - .4byte atkBC_maxattackhalvehp - .4byte atkBD_copyfoestats - .4byte atkBE_breakfree - .4byte sub_802964C - .4byte atkC0_recoverbasedonsunlight - .4byte sub_8029784 - .4byte atkC2_selectnexttarget - .4byte atkC3_setfutureattack - .4byte atkC4_802B910 - .4byte atkC5_hidepreattack - .4byte atkC6_unhidepostattack - .4byte atkC7_setminimize - .4byte sub_8029DAC - .4byte atkC9_jumpifattackandspecialattackcannotfall - .4byte atkCA_setforcedtarget - .4byte atkCB_setcharge - .4byte atkCC_callterrainattack - .4byte atkCD_cureifburnedparalysedorpoisoned - .4byte atkCE_settorment - .4byte atkCF_jumpifnodamage - .4byte atkD0_settaunt - .4byte sub_802A170 - .4byte sub_802A218 - .4byte sub_802A4B0 - .4byte atkD4_802C408 - .4byte sub_802A5FC - .4byte atkD6_doubledamagedealtifdamaged - .4byte sub_802A6BC - .4byte atkD8_setdamagetohealthdifference - .4byte atkD9_scaledamagebyhealthratio - .4byte atkDA_abilityswap - .4byte atkDB_imprisoneffect - .4byte atkDC_setgrudge - .4byte atkDD_weightdamagecalculation - .4byte atkDE_asistattackselect - .4byte atkDF_setmagiccoat - .4byte atkE0_setstealstatchange - .4byte atkE1_802CBE4 - .4byte sub_802ADD8 - .4byte atkE3_jumpiffainted - .4byte sub_802AEB0 - .4byte sub_802AF68 - .4byte atkE6_castform_transform - .4byte atkE7_castform_switch - .4byte atkE8_settypebasedhalvers - .4byte sub_802B1C0 - .4byte atkEA_recycleitem - .4byte atkEB_settypetoterrain - .4byte sub_802B3E0 - .4byte sub_802B4B4 - .4byte sub_802B51C - .4byte sub_802B5B8 - .4byte sub_802B960 - .4byte sub_802B9E0 - .4byte sub_802BA90 - .4byte atkF3_receive_new_pokemon_maybe - .4byte sub_802BEF0 - .4byte sub_802BF20 - .4byte sub_802BF48 - .4byte sub_802BF54 - - .align 2 -gAccuracyStageRatios:: @ 81FAB1C - .byte 33, 100, 0, 0 @ -6 - .byte 36, 100, 0, 0 @ -5 - .byte 43, 100, 0, 0 @ -4 - .byte 50, 100, 0, 0 @ -3 - .byte 60, 100, 0, 0 @ -2 - .byte 75, 100, 0, 0 @ -1 - .byte 1, 1, 0, 0 @ 0 - .byte 133, 100, 0, 0 @ +1 - .byte 166, 100, 0, 0 @ +2 - .byte 2, 1, 0, 0 @ +3 - .byte 233, 100, 0, 0 @ +4 - .byte 133, 50, 0, 0 @ +5 - .byte 3, 1, 0, 0 @ +6 - -@ The chance is 1/N for each stage. - .align 1 -gCriticalHitChance:: @ 81FAB50 - .2byte 16 @ +0 - .2byte 8 @ +1 - .2byte 4 @ +2 - .2byte 3 @ +3 - .2byte 2 @ +4 - - .align 2 -gStatusFlagsForMoveEffects:: @ 81FAB5C - .4byte 0x00000000 - .4byte 0x00000007 - .4byte 0x00000008 - .4byte 0x00000010 - .4byte 0x00000020 - .4byte 0x00000040 - .4byte 0x00000080 - .4byte 0x00000007 - .4byte 0x00000008 - .4byte 0x00000000 - .4byte 0x00000070 - .4byte 0x00000000 - .4byte 0x00001000 - .4byte 0x0000E000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00400000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x04000000 - .4byte 0x08000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000C00 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - - .align 2 -gMoveEffectBS_Ptrs:: @ 81FAC4C - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D965A - .4byte BattleScript_1D9669 - .4byte BattleScript_1D9678 - .4byte BattleScript_1D9687 - .4byte BattleScript_1D969D - .4byte BattleScript_1D96BA - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D9696 - .4byte BattleScript_1D96AA - .4byte BattleScript_1D963E - .4byte BattleScript_1D96B1 - .4byte BattleScript_1D96C8 - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D96C8 - -@ unreferenced bit masks - .byte 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F - -gLevelUpStatBoxStats:: @ 81FACEF - .byte 0x3A @ HP - .byte 0x3E @ Sp. Attack - .byte 0x3B @ Attack - .byte 0x3F @ Sp. Defense - .byte 0x3C @ Defense - .byte 0x3D @ Speed - - .align 1 -gProtectSuccessRates:: @ 81FACF6 - .2byte 0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF - - .align 1 -gUnknown_081FACFE:: @ 81FACFE - .2byte MOVE_METRONOME - .2byte MOVE_STRUGGLE - .2byte MOVE_SKETCH - .2byte MOVE_MIMIC - .2byte 0xFFFE - .2byte MOVE_COUNTER - .2byte MOVE_MIRROR_COAT - .2byte MOVE_PROTECT - .2byte MOVE_DETECT - .2byte MOVE_ENDURE - .2byte MOVE_DESTINY_BOND - .2byte MOVE_SLEEP_TALK - .2byte MOVE_THIEF - .2byte MOVE_FOLLOW_ME - .2byte MOVE_SNATCH - .2byte MOVE_HELPING_HAND - .2byte MOVE_COVET - .2byte MOVE_TRICK - .2byte MOVE_FOCUS_PUNCH - .2byte 0xFFFF - -gUnknown_081FAD26:: @ 81FAD26 - .byte 1, 200 - .byte 4, 150 - .byte 9, 100 - .byte 16, 80 - .byte 32, 40 - .byte 48, 20 - - .align 1 -gNaturePowerMoves:: @ 81FAD32 - .2byte MOVE_STUN_SPORE - .2byte MOVE_RAZOR_LEAF - .2byte MOVE_EARTHQUAKE - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_SURF - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SHADOW_BALL - .2byte MOVE_SWIFT - .2byte MOVE_SWIFT - -@ weight-based damage table for Low Kick -@ format: min. weight (hectograms), base power - - .align 1 -gWeightDamage:: @ 81FAD46 - .2byte 100, 20 - .2byte 250, 40 - .2byte 500, 60 - .2byte 1000, 80 - .2byte 2000, 100 - .2byte -1, -1 - - .align 1 -gPickupItems:: @ 81FAD5E - .2byte ITEM_SUPER_POTION, 30 - .2byte ITEM_FULL_HEAL, 40 - .2byte ITEM_ULTRA_BALL, 50 - .2byte ITEM_RARE_CANDY, 60 - .2byte ITEM_FULL_RESTORE, 70 - .2byte ITEM_REVIVE, 80 - .2byte ITEM_NUGGET, 90 - .2byte ITEM_PROTEIN, 95 - .2byte ITEM_PP_UP, 99 - .2byte ITEM_KINGS_ROCK, 1 - -gTerrainToType:: @ 81FAD86 - .byte TYPE_GRASS @ tall grass - .byte TYPE_GRASS @ long grass - .byte TYPE_GROUND @ sand - .byte TYPE_WATER @ underwater - .byte TYPE_WATER @ water - .byte TYPE_WATER @ pond water - .byte TYPE_ROCK @ rock - .byte TYPE_ROCK @ cave - .byte TYPE_NORMAL @ building - .byte TYPE_NORMAL @ plain - -gBallCatchBonuses:: @ 81FAD90 - .byte 20 @ Ultra Ball - .byte 15 @ Great Ball - .byte 10 @ Poké Ball - .byte 15 @ Safari Ball - - .string "ターン$" @ "turn" - - .align 2 -gPlayerBufferCommands:: @ 81FAD98 - .4byte PlayerHandleGetAttributes - .4byte sub_802ECF0 - .4byte PlayerHandleSetAttributes - .4byte sub_802F7CC - .4byte PlayerHandleLoadPokeSprite - .4byte PlayerHandleSendOutPoke - .4byte PlayerHandleReturnPokeToBall - .4byte PlayerHandleTrainerThrow - .4byte PlayerHandleTrainerSlide - .4byte PlayerHandleTrainerSlideBack - .4byte sub_802FE7C - .4byte sub_802FF60 - .4byte sub_802FF80 - .4byte PlayerHandleBallThrow - .4byte PlayerHandlePuase - .4byte PlayerHandleMoveAnimation - .4byte PlayerHandlePrintString - .4byte PlayerHandlePrintStringPlayerOnly - .4byte sub_803037C - .4byte nullsub_42 - .4byte sub_8030468 - .4byte PlayerHandleOpenBag - .4byte sub_8030594 - .4byte sub_8030674 - .4byte PlayerHandleHealthBarUpdate - .4byte PlayerHandleExpBarUpdate - .4byte PlayerHandleStatusIconUpdate - .4byte PlayerHandleStatusAnimation - .4byte PlayerHandleStatusXor - .4byte sub_803097C - .4byte PlayerHandleDMATransfer - .4byte sub_8030A3C - .4byte sub_8030A6C - .4byte sub_8030A78 - .4byte sub_8030A8C - .4byte sub_8030AA0 - .4byte sub_8030AB4 - .4byte sub_8030AC8 - .4byte sub_8030AE4 - .4byte sub_8030B1C - .4byte sub_8030B34 - .4byte PlayerHandleHitAnimation - .4byte sub_8030BCC - .4byte PlayerHandleEffectivenessSound - .4byte sub_8030C1C - .4byte PlayerHandleFaintingCry - .4byte PlayerHandleIntroSlide - .4byte PlayerHandleTrainerBallThrow - .4byte sub_8030FAC - .4byte sub_80310A4 - .4byte sub_80310F0 - .4byte PlayerHandleSpriteInvisibility - .4byte PlayerHandleBattleAnimation - .4byte PlayerHandleLinkStandbyMsg - .4byte PlayerHandleResetActionMoveSelection - .4byte sub_80312A0 - .4byte nullsub_43 - -gUnknown_081FAE7C:: @ 81FAE7C - .byte 0, 2, 3, 1 - -gUnknown_081FAE80:: @ 81FAE80 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}$" - -gUnknown_081FAE89:: @ 81FAE89 - .byte 8, 120 - .byte 88, 120 - .byte 8, 136 - .byte 88, 136 - -gUnknown_081FAE91:: @ 81FAE91 - .byte 144, 120 - .byte 190, 120 - .byte 144, 136 - .byte 190, 136 - .byte 72, 72 - .byte 32, 90 - .byte 80, 80 - .byte 80, 88 - - .align 2 -gUnknown_081FAEA4:: @ 81FAEA4 - obj_tiles gSmokescreenImpactTiles, 0x180, 55019 - - .align 2 -gUnknown_081FAEAC:: @ 81FAEAC - obj_pal gSmokescreenImpactPalette, 55019 - - .align 2 -gOamData_81FAEB4:: @ 81FAEB4 - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_81FAEBC:: @ 81FAEBC - obj_image_anim_frame 0, 4 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAECC:: @ 81FAECC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAEDC:: @ 81FAEDC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAEEC:: @ 81FAEEC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_81FAEFC:: @ 81FAEFC - .4byte gSpriteAnim_81FAEBC - .4byte gSpriteAnim_81FAECC - .4byte gSpriteAnim_81FAEDC - .4byte gSpriteAnim_81FAEEC - - .align 2 -gSpriteTemplate_81FAF0C:: @ 81FAF0C - spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC - - .align 2 -gUnknown_081FAF24:: @ 81FAF24 - obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759 - - .align 2 -gOamData_81FAF2C:: @ 81FAF2C - .2byte 0x4000 - .2byte 0x4000 - .2byte 0x0C00 - - .align 2 -gSpriteTemplate_81FAF34:: @ 81FAF34 - spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978 - - .align 2 -gUnknown_081FAF4C:: @ 81FAF4C - .4byte 0x02008000 - .4byte 0x0200a000 - .4byte 0x0200c000 - .4byte 0x0200e000 - - .align 2 -gOpponentBufferCommands:: @ 81FAF5C - .4byte OpponentHandleGetAttributes - .4byte dp01t_01_2_read_pokmon_data_slice - .4byte OpponentHandleSetAttributes - .4byte sub_8034744 - .4byte OpponentHandleLoadPokeSprite - .4byte OpponentHandleSendOutPoke - .4byte OpponentHandleReturnPokeToBall - .4byte OpponentHandleTrainerThrow - .4byte OpponentHandleTrainerSlide - .4byte OpponentHandleTrainerSlideBack - .4byte sub_8035030 - .4byte sub_80350D4 - .4byte sub_80350E0 - .4byte OpponentHandleBallThrow - .4byte OpponentHandlePause - .4byte OpponentHandleMoveAnimation - .4byte OpponentHandlePrintString - .4byte OpponentHandlePrintStringPlayerOnly - .4byte sub_803540C - .4byte sub_803541C - .4byte sub_8035428 - .4byte sub_8035590 - .4byte sub_80355C0 - .4byte sub_80356C0 - .4byte OpponentHandleHealthBarUpdate - .4byte OpponentHandleExpBarUpdate - .4byte OpponentHandleStatusIconUpdate - .4byte OpponentHandleStatusAnimation - .4byte OpponentHandleStatusXor - .4byte sub_80358B0 - .4byte OpponentHandleDMATransfer - .4byte sub_80358C8 - .4byte sub_80358D4 - .4byte sub_80358E0 - .4byte sub_80358EC - .4byte sub_80358F8 - .4byte sub_8035904 - .4byte sub_8035910 - .4byte sub_803592C - .4byte sub_8035964 - .4byte sub_803597C - .4byte OpponentHandleHitAnimation - .4byte sub_8035A14 - .4byte OpponentHandleEffectivenessSound - .4byte sub_8035A64 - .4byte OpponentHandleFaintingCry - .4byte dp01t_2E_7_battle_intro - .4byte sub_8035B04 - .4byte dp01t_30_7_0803D67C - .4byte sub_8035E6C - .4byte sub_8035EB8 - .4byte OpponentHandleSpriteInvisibility - .4byte OpponentHandleBattleAnimation - .4byte OpponentHandleLinkStandbyMsg - .4byte OpponentHandleResetActionMoveSelection - .4byte sub_8035FA4 - .4byte nullsub_46 - -@ unreferenced unknown values - .byte 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20 - - .align 2 -gLinkOpponentBufferCommands:: @ 81FB048 - .4byte LinkOpponentHandleGetAttributes - .4byte sub_803889C - .4byte sub_80388A8 - .4byte sub_8039220 - .4byte sub_8039294 - .4byte sub_80393E4 - .4byte sub_80395B4 - .4byte sub_80396D0 - .4byte sub_80398A4 - .4byte sub_80398B0 - .4byte sub_803995C - .4byte sub_8039A00 - .4byte sub_8039A0C - .4byte sub_8039A18 - .4byte sub_8039A24 - .4byte sub_8039A30 - .4byte sub_8039CC8 - .4byte sub_8039D2C - .4byte sub_8039D38 - .4byte sub_8039D44 - .4byte sub_8039D50 - .4byte sub_8039D5C - .4byte sub_8039D68 - .4byte sub_8039D74 - .4byte sub_8039D80 - .4byte sub_8039E70 - .4byte sub_8039E7C - .4byte sub_8039EF0 - .4byte sub_8039F58 - .4byte sub_8039F64 - .4byte sub_8039F70 - .4byte sub_8039F7C - .4byte sub_8039F88 - .4byte sub_8039F94 - .4byte sub_8039FA0 - .4byte sub_8039FAC - .4byte sub_8039FB8 - .4byte sub_8039FC4 - .4byte sub_8039FE0 - .4byte sub_803A018 - .4byte sub_803A030 - .4byte dp01t_29_4_blink - .4byte sub_803A0C8 - .4byte sub_803A0D4 - .4byte sub_803A118 - .4byte sub_803A148 - .4byte dp01t_2E_4_battle_intro - .4byte sub_803A1B8 - .4byte sub_803A3DC - .4byte sub_803A520 - .4byte sub_803A56C - .4byte sub_803A578 - .4byte bx_exec_buffer_A_ch0_tbl4 - .4byte sub_803A640 - .4byte sub_803A64C - .4byte sub_803A658 - .4byte nullsub_48 - -@ 81FB12C - .include "data/battle_moves.inc" - - .align 2 -gUnknown_081FC1D0:: @ 81FC1D0 - .2byte 0x34, 0x10, 0x101 - .space 2 - - .2byte -1, -1, -1 - .space 2 diff --git a/data/data2b.s b/data/data2b.s new file mode 100644 index 000000000..329384396 --- /dev/null +++ b/data/data2b.s @@ -0,0 +1,78 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gUnknown_081FAEA4:: @ 81FAEA4 + obj_tiles gSmokescreenImpactTiles, 0x180, 55019 + + .align 2 +gUnknown_081FAEAC:: @ 81FAEAC + obj_pal gSmokescreenImpactPalette, 55019 + + .align 2 +gOamData_81FAEB4:: @ 81FAEB4 + .2byte 0x0000 + .2byte 0x4000 + .2byte 0x0400 + + .align 2 +gSpriteAnim_81FAEBC:: @ 81FAEBC + obj_image_anim_frame 0, 4 + obj_image_anim_frame 4, 4 + obj_image_anim_frame 8, 4 + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAECC:: @ 81FAECC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAEDC:: @ 81FAEDC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAEEC:: @ 81FAEEC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnimTable_81FAEFC:: @ 81FAEFC + .4byte gSpriteAnim_81FAEBC + .4byte gSpriteAnim_81FAECC + .4byte gSpriteAnim_81FAEDC + .4byte gSpriteAnim_81FAEEC + + .align 2 +gSpriteTemplate_81FAF0C:: @ 81FAF0C + spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC + + .align 2 +gUnknown_081FAF24:: @ 81FAF24 + obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759 + + .align 2 +gOamData_81FAF2C:: @ 81FAF2C + .2byte 0x4000 + .2byte 0x4000 + .2byte 0x0C00 + + .align 2 +gSpriteTemplate_81FAF34:: @ 81FAF34 + spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978 + + .align 2 +gUnknown_081FAF4C:: @ 81FAF4C + .4byte 0x02008000 + .4byte 0x0200a000 + .4byte 0x0200c000 + .4byte 0x0200e000 diff --git a/data/daycare.s b/data/daycare.s deleted file mode 100644 index 92eb4637e..000000000 --- a/data/daycare.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 82091DC - .include "data/egg_moves.inc" - - .align 2 -gUnknown_08209AC4:: @ 8209AC4 - .4byte DaycareText_GetAlongVeryWell - .4byte DaycareText_GetAlong - .4byte DaycareText_DontLikeOther - .4byte DaycareText_PlayOther - -gUnknown_08209AD4:: @ 8209AD4 - .string "タマゴ$" diff --git a/data/egg_hatch.s b/data/egg_hatch.s deleted file mode 100644 index 1823409dd..000000000 --- a/data/egg_hatch.s +++ /dev/null @@ -1,122 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -EggPalette:: @ 8209AD8 - .incbin "graphics/pokemon/egg/palette.gbapal" - -EggHatchTiles:: @ 8209AF8 - .incbin "graphics/misc/egg_hatch.4bpp" - -EggShardTiles:: @ 820A2F8 - .incbin "graphics/misc/egg_shard.4bpp" - - .align 2 -gOamData_820A378:: @ 820A378 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_820A380:: @ 820A380 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A388:: @ 820A388 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A390:: @ 820A390 - obj_image_anim_frame 32, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A398:: @ 820A398 - obj_image_anim_frame 48, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820A3A0:: @ 820A3A0 - .4byte gSpriteAnim_820A380 - .4byte gSpriteAnim_820A388 - .4byte gSpriteAnim_820A390 - .4byte gSpriteAnim_820A398 - - .align 2 -gUnknown_0820A3B0:: @ 820A3B0 - obj_tiles EggHatchTiles, 2048, 12345 - - .align 2 -gUnknown_0820A3B8:: @ 820A3B8 - obj_tiles EggShardTiles, 128, 23456 - - .align 2 -gUnknown_0820A3C0:: @ 820A3C0 - obj_pal EggPalette, 54321 - - .align 2 -gSpriteTemplate_820A3C8:: @ 820A3C8 - spr_template 12345, 54321, gOamData_820A378, gSpriteAnimTable_820A3A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_820A3E0:: @ 820A3E0 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_820A3E8:: @ 820A3E8 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A3F0:: @ 820A3F0 - obj_image_anim_frame 1, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A3F8:: @ 820A3F8 - obj_image_anim_frame 2, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A400:: @ 820A400 - obj_image_anim_frame 3, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820A408:: @ 820A408 - .4byte gSpriteAnim_820A3E8 - .4byte gSpriteAnim_820A3F0 - .4byte gSpriteAnim_820A3F8 - .4byte gSpriteAnim_820A400 - - .align 2 -gSpriteTemplate_820A418:: @ 820A418 - spr_template 23456, 54321, gOamData_820A3E0, gSpriteAnimTable_820A408, NULL, gDummySpriteAffineAnimTable, SpriteCB_EggShard - -@ The values are Q8.8 fixed-point numbers. - .align 1 -gEggShardVelocities:: @ 820A430 - .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75) - .2byte 0xFB00, 0xFD00 @ (-5, -3) - .2byte 0x0380, 0xFD00 @ (3.5, -3) - .2byte 0xFC00, 0xFC40 @ (-4, -3.75) - .2byte 0x0200, 0xFE80 @ (2, -1.5) - .2byte 0xFF80, 0xF940 @ (-0.5, -6.75) - .2byte 0x0500, 0xFDC0 @ (5, -2.25) - .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75) - .2byte 0x0480, 0xFE80 @ (4.5, -1.5) - .2byte 0xFF00, 0xF940 @ (-1, -6.75) - .2byte 0x0400, 0xFDC0 @ (4, -2.25) - .2byte 0xFC80, 0xFC40 @ (-3.5, -3.75) - .2byte 0x0100, 0xFE80 @ (1, -1.5) - .2byte 0xFC7C, 0xF940 @ (-3.515625, -6.75) - .2byte 0x0480, 0xFDC0 @ (4.5, -2.25) - .2byte 0xFF80, 0xF880 @ (-0.5, -7.5) - .2byte 0x0100, 0xFB80 @ (1, -4.5) - .2byte 0xFD80, 0xFDC0 @ (-2.5, -2.25) - .2byte 0x0280, 0xF880 @ (2.5, -7.5) diff --git a/data/egg_moves.inc b/data/egg_moves.inc deleted file mode 100644 index e684e04ce..000000000 --- a/data/egg_moves.inc +++ /dev/null @@ -1,1306 +0,0 @@ - .align 2 -gEggMoves:: @ 82091DC - egg_moves_begin SPECIES_BULBASAUR - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_SKULL_BASH - .2byte MOVE_SAFEGUARD - .2byte MOVE_CHARM - .2byte MOVE_PETAL_DANCE - .2byte MOVE_MAGICAL_LEAF - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_CHARMANDER - .2byte MOVE_BELLY_DRUM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BITE - .2byte MOVE_OUTRAGE - .2byte MOVE_BEAT_UP - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_SQUIRTLE - .2byte MOVE_MIRROR_COAT - .2byte MOVE_HAZE - .2byte MOVE_MIST - .2byte MOVE_FORESIGHT - .2byte MOVE_FLAIL - .2byte MOVE_REFRESH - .2byte MOVE_MUD_SPORT - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_PIDGEY - .2byte MOVE_PURSUIT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FORESIGHT - .2byte MOVE_STEEL_WING - .2byte MOVE_AIR_CUTTER - - egg_moves_begin SPECIES_RATTATA - .2byte MOVE_SCREECH - .2byte MOVE_FLAME_WHEEL - .2byte MOVE_FURY_SWIPES - .2byte MOVE_BITE - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_UPROAR - .2byte MOVE_SWAGGER - - egg_moves_begin SPECIES_SPEAROW - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_SCARY_FACE - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_TRI_ATTACK - .2byte MOVE_ASTONISH - .2byte MOVE_SKY_ATTACK - - egg_moves_begin SPECIES_EKANS - .2byte MOVE_PURSUIT - .2byte MOVE_SLAM - .2byte MOVE_SPITE - .2byte MOVE_BEAT_UP - .2byte MOVE_POISON_FANG - - egg_moves_begin SPECIES_SANDSHREW - .2byte MOVE_FLAIL - .2byte MOVE_SAFEGUARD - .2byte MOVE_COUNTER - .2byte MOVE_RAPID_SPIN - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_METAL_CLAW - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_NIDORAN_F - .2byte MOVE_SUPERSONIC - .2byte MOVE_DISABLE - .2byte MOVE_TAKE_DOWN - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_CHARM - .2byte MOVE_COUNTER - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_NIDORAN_M - .2byte MOVE_COUNTER - .2byte MOVE_DISABLE - .2byte MOVE_SUPERSONIC - .2byte MOVE_TAKE_DOWN - .2byte MOVE_AMNESIA - .2byte MOVE_CONFUSION - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_VULPIX - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_HYPNOSIS - .2byte MOVE_FLAIL - .2byte MOVE_SPITE - .2byte MOVE_DISABLE - .2byte MOVE_HOWL - .2byte MOVE_PSYCH_UP - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_ZUBAT - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_PURSUIT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_GUST - .2byte MOVE_WHIRLWIND - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_ODDISH - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_RAZOR_LEAF - .2byte MOVE_FLAIL - .2byte MOVE_SYNTHESIS - .2byte MOVE_CHARM - .2byte MOVE_INGRAIN - - egg_moves_begin SPECIES_PARAS - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_SCREECH - .2byte MOVE_COUNTER - .2byte MOVE_PSYBEAM - .2byte MOVE_FLAIL - .2byte MOVE_SWEET_SCENT - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_PURSUIT - - egg_moves_begin SPECIES_VENONAT - .2byte MOVE_BATON_PASS - .2byte MOVE_SCREECH - .2byte MOVE_GIGA_DRAIN - .2byte MOVE_SIGNAL_BEAM - - egg_moves_begin SPECIES_DIGLETT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_SCREECH - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_PURSUIT - .2byte MOVE_BEAT_UP - .2byte MOVE_UPROAR - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_MEOWTH - .2byte MOVE_SPITE - .2byte MOVE_CHARM - .2byte MOVE_HYPNOSIS - .2byte MOVE_AMNESIA - .2byte MOVE_PSYCH_UP - .2byte MOVE_ASSIST - - egg_moves_begin SPECIES_PSYDUCK - .2byte MOVE_HYPNOSIS - .2byte MOVE_PSYBEAM - .2byte MOVE_FORESIGHT - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_PSYCHIC - .2byte MOVE_CROSS_CHOP - .2byte MOVE_REFRESH - - egg_moves_begin SPECIES_MANKEY - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_FORESIGHT - .2byte MOVE_MEDITATE - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_BEAT_UP - .2byte MOVE_REVENGE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_GROWLITHE - .2byte MOVE_BODY_SLAM - .2byte MOVE_SAFEGUARD - .2byte MOVE_CRUNCH - .2byte MOVE_THRASH - .2byte MOVE_FIRE_SPIN - .2byte MOVE_HOWL - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_POLIWAG - .2byte MOVE_MIST - .2byte MOVE_SPLASH - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_HAZE - .2byte MOVE_MIND_READER - .2byte MOVE_WATER_SPORT - .2byte MOVE_ICE_BALL - - egg_moves_begin SPECIES_ABRA - .2byte MOVE_ENCORE - .2byte MOVE_BARRIER - .2byte MOVE_KNOCK_OFF - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_MACHOP - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_MEDITATE - .2byte MOVE_ROLLING_KICK - .2byte MOVE_ENCORE - .2byte MOVE_SMELLING_SALT - .2byte MOVE_COUNTER - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_BELLSPROUT - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_ENCORE - .2byte MOVE_REFLECT - .2byte MOVE_SYNTHESIS - .2byte MOVE_LEECH_LIFE - .2byte MOVE_INGRAIN - .2byte MOVE_MAGICAL_LEAF - - egg_moves_begin SPECIES_TENTACOOL - .2byte MOVE_AURORA_BEAM - .2byte MOVE_MIRROR_COAT - .2byte MOVE_RAPID_SPIN - .2byte MOVE_HAZE - .2byte MOVE_SAFEGUARD - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_GEODUDE - .2byte MOVE_MEGA_PUNCH - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BLOCK - - egg_moves_begin SPECIES_PONYTA - .2byte MOVE_FLAME_WHEEL - .2byte MOVE_THRASH - .2byte MOVE_DOUBLE_KICK - .2byte MOVE_HYPNOSIS - .2byte MOVE_CHARM - .2byte MOVE_DOUBLE_EDGE - - egg_moves_begin SPECIES_SLOWPOKE - .2byte MOVE_SAFEGUARD - .2byte MOVE_BELLY_DRUM - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_STOMP - .2byte MOVE_MUD_SPORT - .2byte MOVE_SLEEP_TALK - .2byte MOVE_SNORE - - egg_moves_begin SPECIES_FARFETCHD - .2byte MOVE_STEEL_WING - .2byte MOVE_FORESIGHT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_GUST - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_DODUO - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_ENDEAVOR - - egg_moves_begin SPECIES_SEEL - .2byte MOVE_LICK - .2byte MOVE_PERISH_SONG - .2byte MOVE_DISABLE - .2byte MOVE_HORN_DRILL - .2byte MOVE_SLAM - .2byte MOVE_ENCORE - .2byte MOVE_FAKE_OUT - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_GRIMER - .2byte MOVE_HAZE - .2byte MOVE_MEAN_LOOK - .2byte MOVE_LICK - .2byte MOVE_IMPRISON - .2byte MOVE_CURSE - .2byte MOVE_SHADOW_PUNCH - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_SHELLDER - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BARRIER - .2byte MOVE_RAPID_SPIN - .2byte MOVE_SCREECH - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_GASTLY - .2byte MOVE_PSYWAVE - .2byte MOVE_PERISH_SONG - .2byte MOVE_HAZE - .2byte MOVE_ASTONISH - .2byte MOVE_WILL_O_WISP - .2byte MOVE_GRUDGE - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_ONIX - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_FLAIL - .2byte MOVE_EXPLOSION - .2byte MOVE_BLOCK - - egg_moves_begin SPECIES_DROWZEE - .2byte MOVE_BARRIER - .2byte MOVE_ASSIST - .2byte MOVE_ROLE_PLAY - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_KRABBY - .2byte MOVE_DIG - .2byte MOVE_HAZE - .2byte MOVE_AMNESIA - .2byte MOVE_FLAIL - .2byte MOVE_SLAM - .2byte MOVE_KNOCK_OFF - .2byte MOVE_SWORDS_DANCE - - egg_moves_begin SPECIES_EXEGGCUTE - .2byte MOVE_SYNTHESIS - .2byte MOVE_MOONLIGHT - .2byte MOVE_REFLECT - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_PSYCH_UP - .2byte MOVE_INGRAIN - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_CUBONE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_BELLY_DRUM - .2byte MOVE_SCREECH - .2byte MOVE_SKULL_BASH - .2byte MOVE_PERISH_SONG - .2byte MOVE_SWORDS_DANCE - - egg_moves_begin SPECIES_LICKITUNG - .2byte MOVE_BELLY_DRUM - .2byte MOVE_MAGNITUDE - .2byte MOVE_BODY_SLAM - .2byte MOVE_CURSE - .2byte MOVE_SMELLING_SALT - .2byte MOVE_SLEEP_TALK - .2byte MOVE_SNORE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_KOFFING - .2byte MOVE_SCREECH - .2byte MOVE_PSYWAVE - .2byte MOVE_PSYBEAM - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PAIN_SPLIT - .2byte MOVE_WILL_O_WISP - - egg_moves_begin SPECIES_RHYHORN - .2byte MOVE_CRUNCH - .2byte MOVE_REVERSAL - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_COUNTER - .2byte MOVE_MAGNITUDE - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_CURSE - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_CHANSEY - .2byte MOVE_PRESENT - .2byte MOVE_METRONOME - .2byte MOVE_HEAL_BELL - .2byte MOVE_AROMATHERAPY - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_TANGELA - .2byte MOVE_FLAIL - .2byte MOVE_CONFUSION - .2byte MOVE_MEGA_DRAIN - .2byte MOVE_REFLECT - .2byte MOVE_AMNESIA - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - - egg_moves_begin SPECIES_KANGASKHAN - .2byte MOVE_STOMP - .2byte MOVE_FORESIGHT - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_SAFEGUARD - .2byte MOVE_DISABLE - .2byte MOVE_COUNTER - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_HORSEA - .2byte MOVE_FLAIL - .2byte MOVE_AURORA_BEAM - .2byte MOVE_OCTAZOOKA - .2byte MOVE_DISABLE - .2byte MOVE_SPLASH - .2byte MOVE_DRAGON_RAGE - .2byte MOVE_DRAGON_BREATH - - egg_moves_begin SPECIES_GOLDEEN - .2byte MOVE_PSYBEAM - .2byte MOVE_HAZE - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_SLEEP_TALK - .2byte MOVE_MUD_SPORT - - egg_moves_begin SPECIES_MR_MIME - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_HYPNOSIS - .2byte MOVE_MIMIC - .2byte MOVE_PSYCH_UP - .2byte MOVE_FAKE_OUT - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_SCYTHER - .2byte MOVE_COUNTER - .2byte MOVE_SAFEGUARD - .2byte MOVE_BATON_PASS - .2byte MOVE_RAZOR_WIND - .2byte MOVE_REVERSAL - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_ENDURE - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_PINSIR - .2byte MOVE_FURY_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_FAINT_ATTACK - - egg_moves_begin SPECIES_LAPRAS - .2byte MOVE_FORESIGHT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - .2byte MOVE_REFRESH - .2byte MOVE_DRAGON_DANCE - .2byte MOVE_CURSE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_HORN_DRILL - - egg_moves_begin SPECIES_EEVEE - .2byte MOVE_CHARM - .2byte MOVE_FLAIL - .2byte MOVE_ENDURE - .2byte MOVE_CURSE - .2byte MOVE_TICKLE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_OMANYTE - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_AURORA_BEAM - .2byte MOVE_SLAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SPIKES - - egg_moves_begin SPECIES_KABUTO - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_AURORA_BEAM - .2byte MOVE_RAPID_SPIN - .2byte MOVE_DIG - .2byte MOVE_FLAIL - .2byte MOVE_KNOCK_OFF - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_AERODACTYL - .2byte MOVE_WHIRLWIND - .2byte MOVE_PURSUIT - .2byte MOVE_FORESIGHT - .2byte MOVE_STEEL_WING - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_SNORLAX - .2byte MOVE_LICK - .2byte MOVE_CHARM - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_DRATINI - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_MIST - .2byte MOVE_HAZE - .2byte MOVE_SUPERSONIC - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_CHIKORITA - .2byte MOVE_VINE_WHIP - .2byte MOVE_LEECH_SEED - .2byte MOVE_COUNTER - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_FLAIL - .2byte MOVE_NATURE_POWER - .2byte MOVE_INGRAIN - .2byte MOVE_GRASS_WHISTLE - - egg_moves_begin SPECIES_CYNDAQUIL - .2byte MOVE_FURY_SWIPES - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_REVERSAL - .2byte MOVE_THRASH - .2byte MOVE_FORESIGHT - .2byte MOVE_COVET - .2byte MOVE_HOWL - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_TOTODILE - .2byte MOVE_CRUNCH - .2byte MOVE_THRASH - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_MUD_SPORT - .2byte MOVE_WATER_SPORT - .2byte MOVE_DRAGON_CLAW - - egg_moves_begin SPECIES_SENTRET - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_PURSUIT - .2byte MOVE_SLASH - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_REVERSAL - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TRICK - .2byte MOVE_ASSIST - - egg_moves_begin SPECIES_HOOTHOOT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_SUPERSONIC - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_WING_ATTACK - .2byte MOVE_WHIRLWIND - .2byte MOVE_SKY_ATTACK - .2byte MOVE_FEATHER_DANCE - - egg_moves_begin SPECIES_LEDYBA - .2byte MOVE_PSYBEAM - .2byte MOVE_BIDE - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_SPINARAK - .2byte MOVE_PSYBEAM - .2byte MOVE_DISABLE - .2byte MOVE_SONIC_BOOM - .2byte MOVE_BATON_PASS - .2byte MOVE_PURSUIT - .2byte MOVE_SIGNAL_BEAM - - egg_moves_begin SPECIES_CHINCHOU - .2byte MOVE_FLAIL - .2byte MOVE_SCREECH - .2byte MOVE_AMNESIA - - egg_moves_begin SPECIES_PICHU - .2byte MOVE_REVERSAL - .2byte MOVE_BIDE - .2byte MOVE_PRESENT - .2byte MOVE_ENCORE - .2byte MOVE_DOUBLE_SLAP - .2byte MOVE_WISH - .2byte MOVE_CHARGE - - egg_moves_begin SPECIES_CLEFFA - .2byte MOVE_PRESENT - .2byte MOVE_METRONOME - .2byte MOVE_AMNESIA - .2byte MOVE_BELLY_DRUM - .2byte MOVE_SPLASH - .2byte MOVE_MIMIC - .2byte MOVE_WISH - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_IGGLYBUFF - .2byte MOVE_PERISH_SONG - .2byte MOVE_PRESENT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_WISH - .2byte MOVE_FAKE_TEARS - - egg_moves_begin SPECIES_TOGEPI - .2byte MOVE_PRESENT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_PECK - .2byte MOVE_FORESIGHT - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_NATU - .2byte MOVE_HAZE - .2byte MOVE_DRILL_PECK - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_STEEL_WING - .2byte MOVE_PSYCH_UP - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_REFRESH - - egg_moves_begin SPECIES_MAREEP - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BODY_SLAM - .2byte MOVE_SAFEGUARD - .2byte MOVE_SCREECH - .2byte MOVE_REFLECT - .2byte MOVE_ODOR_SLEUTH - .2byte MOVE_CHARGE - - egg_moves_begin SPECIES_MARILL - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_PRESENT - .2byte MOVE_AMNESIA - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_BELLY_DRUM - .2byte MOVE_PERISH_SONG - .2byte MOVE_SUPERSONIC - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_SUDOWOODO - .2byte MOVE_SELF_DESTRUCT - - egg_moves_begin SPECIES_HOPPIP - .2byte MOVE_CONFUSION - .2byte MOVE_ENCORE - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_REFLECT - .2byte MOVE_AMNESIA - .2byte MOVE_HELPING_HAND - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_AIPOM - .2byte MOVE_COUNTER - .2byte MOVE_SCREECH - .2byte MOVE_PURSUIT - .2byte MOVE_AGILITY - .2byte MOVE_SPITE - .2byte MOVE_SLAM - .2byte MOVE_DOUBLE_SLAP - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_SUNKERN - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_ENCORE - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - .2byte MOVE_CURSE - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_YANMA - .2byte MOVE_WHIRLWIND - .2byte MOVE_REVERSAL - .2byte MOVE_LEECH_LIFE - .2byte MOVE_SIGNAL_BEAM - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_WOOPER - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_SAFEGUARD - .2byte MOVE_CURSE - .2byte MOVE_MUD_SPORT - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - - egg_moves_begin SPECIES_MURKROW - .2byte MOVE_WHIRLWIND - .2byte MOVE_DRILL_PECK - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_WING_ATTACK - .2byte MOVE_SKY_ATTACK - .2byte MOVE_CONFUSE_RAY - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_PERISH_SONG - - egg_moves_begin SPECIES_MISDREAVUS - .2byte MOVE_SCREECH - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PSYCH_UP - .2byte MOVE_IMPRISON - - egg_moves_begin SPECIES_GIRAFARIG - .2byte MOVE_TAKE_DOWN - .2byte MOVE_AMNESIA - .2byte MOVE_FORESIGHT - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_BEAT_UP - .2byte MOVE_PSYCH_UP - .2byte MOVE_WISH - .2byte MOVE_MAGIC_COAT - - egg_moves_begin SPECIES_PINECO - .2byte MOVE_REFLECT - .2byte MOVE_PIN_MISSILE - .2byte MOVE_FLAIL - .2byte MOVE_SWIFT - .2byte MOVE_COUNTER - .2byte MOVE_SAND_TOMB - - egg_moves_begin SPECIES_DUNSPARCE - .2byte MOVE_BIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BITE - .2byte MOVE_HEADBUTT - .2byte MOVE_ASTONISH - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_GLIGAR - .2byte MOVE_METAL_CLAW - .2byte MOVE_WING_ATTACK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_COUNTER - .2byte MOVE_SAND_TOMB - - egg_moves_begin SPECIES_SNUBBULL - .2byte MOVE_METRONOME - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_REFLECT - .2byte MOVE_PRESENT - .2byte MOVE_CRUNCH - .2byte MOVE_HEAL_BELL - .2byte MOVE_SNORE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_QWILFISH - .2byte MOVE_FLAIL - .2byte MOVE_HAZE - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_ASTONISH - - egg_moves_begin SPECIES_SHUCKLE - .2byte MOVE_SWEET_SCENT - - egg_moves_begin SPECIES_HERACROSS - .2byte MOVE_HARDEN - .2byte MOVE_BIDE - .2byte MOVE_FLAIL - .2byte MOVE_FALSE_SWIPE - - egg_moves_begin SPECIES_SNEASEL - .2byte MOVE_COUNTER - .2byte MOVE_SPITE - .2byte MOVE_FORESIGHT - .2byte MOVE_REFLECT - .2byte MOVE_BITE - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_FAKE_OUT - - egg_moves_begin SPECIES_TEDDIURSA - .2byte MOVE_CRUNCH - .2byte MOVE_TAKE_DOWN - .2byte MOVE_SEISMIC_TOSS - .2byte MOVE_COUNTER - .2byte MOVE_METAL_CLAW - .2byte MOVE_FAKE_TEARS - .2byte MOVE_YAWN - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_SLUGMA - .2byte MOVE_ACID_ARMOR - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_SWINUB - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BITE - .2byte MOVE_BODY_SLAM - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_MUD_SHOT - .2byte MOVE_ICICLE_SPEAR - .2byte MOVE_DOUBLE_EDGE - - egg_moves_begin SPECIES_CORSOLA - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SCREECH - .2byte MOVE_MIST - .2byte MOVE_AMNESIA - .2byte MOVE_BARRIER - .2byte MOVE_INGRAIN - .2byte MOVE_CONFUSE_RAY - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_REMORAID - .2byte MOVE_AURORA_BEAM - .2byte MOVE_OCTAZOOKA - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_SCREECH - .2byte MOVE_THUNDER_WAVE - .2byte MOVE_ROCK_BLAST - - egg_moves_begin SPECIES_DELIBIRD - .2byte MOVE_AURORA_BEAM - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_SPLASH - .2byte MOVE_RAPID_SPIN - .2byte MOVE_ICE_BALL - - egg_moves_begin SPECIES_MANTINE - .2byte MOVE_TWISTER - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_HAZE - .2byte MOVE_SLAM - .2byte MOVE_MUD_SPORT - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_SKARMORY - .2byte MOVE_DRILL_PECK - .2byte MOVE_PURSUIT - .2byte MOVE_WHIRLWIND - .2byte MOVE_SKY_ATTACK - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_HOUNDOUR - .2byte MOVE_FIRE_SPIN - .2byte MOVE_RAGE - .2byte MOVE_PURSUIT - .2byte MOVE_COUNTER - .2byte MOVE_SPITE - .2byte MOVE_REVERSAL - .2byte MOVE_BEAT_UP - .2byte MOVE_WILL_O_WISP - - egg_moves_begin SPECIES_PHANPY - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_SNORE - .2byte MOVE_COUNTER - .2byte MOVE_FISSURE - - egg_moves_begin SPECIES_STANTLER - .2byte MOVE_SPITE - .2byte MOVE_DISABLE - .2byte MOVE_BITE - .2byte MOVE_SWAGGER - .2byte MOVE_PSYCH_UP - .2byte MOVE_EXTRASENSORY - - egg_moves_begin SPECIES_TYROGUE - .2byte MOVE_RAPID_SPIN - .2byte MOVE_HI_JUMP_KICK - .2byte MOVE_MACH_PUNCH - .2byte MOVE_MIND_READER - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_SMOOCHUM - .2byte MOVE_MEDITATE - .2byte MOVE_PSYCH_UP - .2byte MOVE_FAKE_OUT - .2byte MOVE_WISH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_ELEKID - .2byte MOVE_KARATE_CHOP - .2byte MOVE_BARRIER - .2byte MOVE_ROLLING_KICK - .2byte MOVE_MEDITATE - .2byte MOVE_CROSS_CHOP - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_MAGBY - .2byte MOVE_KARATE_CHOP - .2byte MOVE_MEGA_PUNCH - .2byte MOVE_BARRIER - .2byte MOVE_SCREECH - .2byte MOVE_CROSS_CHOP - .2byte MOVE_THUNDER_PUNCH - - egg_moves_begin SPECIES_MILTANK - .2byte MOVE_PRESENT - .2byte MOVE_REVERSAL - .2byte MOVE_SEISMIC_TOSS - .2byte MOVE_ENDURE - .2byte MOVE_PSYCH_UP - .2byte MOVE_CURSE - .2byte MOVE_HELPING_HAND - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_LARVITAR - .2byte MOVE_PURSUIT - .2byte MOVE_STOMP - .2byte MOVE_OUTRAGE - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_DRAGON_DANCE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_TREECKO - .2byte MOVE_CRUNCH - .2byte MOVE_MUD_SPORT - .2byte MOVE_ENDEAVOR - .2byte MOVE_LEECH_SEED - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_TORCHIC - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_ENDURE - .2byte MOVE_SWAGGER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_MUDKIP - .2byte MOVE_REFRESH - .2byte MOVE_UPROAR - .2byte MOVE_CURSE - .2byte MOVE_STOMP - .2byte MOVE_ICE_BALL - .2byte MOVE_MIRROR_COAT - - egg_moves_begin SPECIES_POOCHYENA - .2byte MOVE_ASTONISH - .2byte MOVE_POISON_FANG - .2byte MOVE_COVET - .2byte MOVE_LEER - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_ZIGZAGOON - .2byte MOVE_CHARM - .2byte MOVE_PURSUIT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_LOTAD - .2byte MOVE_SYNTHESIS - .2byte MOVE_RAZOR_LEAF - .2byte MOVE_SWEET_SCENT - .2byte MOVE_LEECH_SEED - .2byte MOVE_FLAIL - .2byte MOVE_WATER_GUN - - egg_moves_begin SPECIES_SEEDOT - .2byte MOVE_LEECH_SEED - .2byte MOVE_AMNESIA - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_TAKE_DOWN - .2byte MOVE_FALSE_SWIPE - - egg_moves_begin SPECIES_NINCADA - .2byte MOVE_ENDURE - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_GUST - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_TAILLOW - .2byte MOVE_PURSUIT - .2byte MOVE_SUPERSONIC - .2byte MOVE_REFRESH - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_RAGE - .2byte MOVE_SKY_ATTACK - - egg_moves_begin SPECIES_SHROOMISH - .2byte MOVE_FAKE_TEARS - .2byte MOVE_SWAGGER - .2byte MOVE_CHARM - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_SPINDA - .2byte MOVE_ENCORE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ASSIST - .2byte MOVE_DISABLE - .2byte MOVE_BATON_PASS - .2byte MOVE_WISH - .2byte MOVE_TRICK - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_WINGULL - .2byte MOVE_MIST - .2byte MOVE_TWISTER - .2byte MOVE_AGILITY - .2byte MOVE_GUST - .2byte MOVE_WATER_SPORT - - egg_moves_begin SPECIES_SURSKIT - .2byte MOVE_FORESIGHT - .2byte MOVE_MUD_SHOT - .2byte MOVE_PSYBEAM - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_MIND_READER - - egg_moves_begin SPECIES_WAILMER - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_THRASH - .2byte MOVE_SWAGGER - .2byte MOVE_SNORE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_SKITTY - .2byte MOVE_HELPING_HAND - .2byte MOVE_PSYCH_UP - .2byte MOVE_UPROAR - .2byte MOVE_FAKE_TEARS - .2byte MOVE_WISH - .2byte MOVE_BATON_PASS - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_KECLEON - .2byte MOVE_DISABLE - .2byte MOVE_MAGIC_COAT - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_NOSEPASS - .2byte MOVE_MAGNITUDE - .2byte MOVE_ROLLOUT - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_TORKOAL - .2byte MOVE_ERUPTION - .2byte MOVE_ENDURE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_SABLEYE - .2byte MOVE_PSYCH_UP - .2byte MOVE_RECOVER - .2byte MOVE_MOONLIGHT - - egg_moves_begin SPECIES_BARBOACH - .2byte MOVE_THRASH - .2byte MOVE_WHIRLPOOL - .2byte MOVE_SPARK - - egg_moves_begin SPECIES_LUVDISC - .2byte MOVE_SPLASH - .2byte MOVE_SUPERSONIC - .2byte MOVE_WATER_SPORT - .2byte MOVE_MUD_SPORT - - egg_moves_begin SPECIES_CORPHISH - .2byte MOVE_MUD_SPORT - .2byte MOVE_ENDEAVOR - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - - egg_moves_begin SPECIES_FEEBAS - .2byte MOVE_MIRROR_COAT - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_MUD_SPORT - .2byte MOVE_HYPNOSIS - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_CARVANHA - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_THRASH - - egg_moves_begin SPECIES_TRAPINCH - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_GUST - - egg_moves_begin SPECIES_MAKUHITA - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_DETECT - .2byte MOVE_FORESIGHT - .2byte MOVE_HELPING_HAND - .2byte MOVE_CROSS_CHOP - .2byte MOVE_REVENGE - .2byte MOVE_DYNAMIC_PUNCH - .2byte MOVE_COUNTER - - egg_moves_begin SPECIES_ELECTRIKE - .2byte MOVE_CRUNCH - .2byte MOVE_HEADBUTT - .2byte MOVE_UPROAR - .2byte MOVE_CURSE - .2byte MOVE_SWIFT - - egg_moves_begin SPECIES_NUMEL - .2byte MOVE_HOWL - .2byte MOVE_SCARY_FACE - .2byte MOVE_BODY_SLAM - .2byte MOVE_ROLLOUT - .2byte MOVE_DEFENSE_CURL - .2byte MOVE_STOMP - - egg_moves_begin SPECIES_SPHEAL - .2byte MOVE_WATER_SPORT - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - .2byte MOVE_YAWN - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - - egg_moves_begin SPECIES_CACNEA - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_ACID - .2byte MOVE_TEETER_DANCE - .2byte MOVE_DYNAMIC_PUNCH - .2byte MOVE_COUNTER - - egg_moves_begin SPECIES_SNORUNT - .2byte MOVE_BLOCK - .2byte MOVE_SPIKES - - egg_moves_begin SPECIES_AZURILL - .2byte MOVE_ENCORE - .2byte MOVE_SING - .2byte MOVE_REFRESH - .2byte MOVE_SLAM - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_SPOINK - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_EXTRASENSORY - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_PLUSLE - .2byte MOVE_SUBSTITUTE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_MINUN - .2byte MOVE_SUBSTITUTE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_MAWILE - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_POISON_FANG - .2byte MOVE_PSYCH_UP - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_MEDITITE - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - .2byte MOVE_FORESIGHT - .2byte MOVE_FAKE_OUT - .2byte MOVE_BATON_PASS - .2byte MOVE_DYNAMIC_PUNCH - - egg_moves_begin SPECIES_SWABLU - .2byte MOVE_AGILITY - .2byte MOVE_HAZE - .2byte MOVE_PURSUIT - .2byte MOVE_RAGE - - egg_moves_begin SPECIES_DUSKULL - .2byte MOVE_IMPRISON - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PAIN_SPLIT - .2byte MOVE_GRUDGE - .2byte MOVE_MEMENTO - .2byte MOVE_FAINT_ATTACK - - egg_moves_begin SPECIES_ROSELIA - .2byte MOVE_SPIKES - .2byte MOVE_SYNTHESIS - .2byte MOVE_PIN_MISSILE - .2byte MOVE_COTTON_SPORE - - egg_moves_begin SPECIES_SLAKOTH - .2byte MOVE_PURSUIT - .2byte MOVE_SLASH - .2byte MOVE_BODY_SLAM - .2byte MOVE_SNORE - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_CURSE - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_GULPIN - .2byte MOVE_DREAM_EATER - .2byte MOVE_ACID_ARMOR - .2byte MOVE_SMOG - .2byte MOVE_PAIN_SPLIT - - egg_moves_begin SPECIES_TROPIUS - .2byte MOVE_HEADBUTT - .2byte MOVE_SLAM - .2byte MOVE_RAZOR_WIND - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - - egg_moves_begin SPECIES_WHISMUR - .2byte MOVE_TAKE_DOWN - .2byte MOVE_SNORE - .2byte MOVE_SWAGGER - .2byte MOVE_EXTRASENSORY - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_CLAMPERL - .2byte MOVE_REFRESH - .2byte MOVE_MUD_SPORT - .2byte MOVE_BODY_SLAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_BARRIER - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_ABSOL - .2byte MOVE_BATON_PASS - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_MAGIC_COAT - .2byte MOVE_CURSE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_SHUPPET - .2byte MOVE_DISABLE - .2byte MOVE_DESTINY_BOND - .2byte MOVE_FORESIGHT - .2byte MOVE_ASTONISH - .2byte MOVE_IMPRISON - - egg_moves_begin SPECIES_SEVIPER - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - .2byte MOVE_BODY_SLAM - - egg_moves_begin SPECIES_ZANGOOSE - .2byte MOVE_FLAIL - .2byte MOVE_DOUBLE_KICK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_COUNTER - .2byte MOVE_ROAR - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_RELICANTH - .2byte MOVE_MAGNITUDE - .2byte MOVE_SKULL_BASH - .2byte MOVE_WATER_SPORT - .2byte MOVE_AMNESIA - .2byte MOVE_SLEEP_TALK - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_ARON - .2byte MOVE_ENDEAVOR - .2byte MOVE_BODY_SLAM - .2byte MOVE_STOMP - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_CASTFORM - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_VOLBEAT - .2byte MOVE_BATON_PASS - .2byte MOVE_SILVER_WIND - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_ILLUMISE - .2byte MOVE_BATON_PASS - .2byte MOVE_SILVER_WIND - .2byte MOVE_GROWTH - - egg_moves_begin SPECIES_LILEEP - .2byte MOVE_BARRIER - .2byte MOVE_RECOVER - .2byte MOVE_MIRROR_COAT - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_ANORITH - .2byte MOVE_RAPID_SPIN - .2byte MOVE_KNOCK_OFF - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_RALTS - .2byte MOVE_DISABLE - .2byte MOVE_WILL_O_WISP - .2byte MOVE_MEAN_LOOK - .2byte MOVE_MEMENTO - .2byte MOVE_DESTINY_BOND - - egg_moves_begin SPECIES_BAGON - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_THRASH - .2byte MOVE_DRAGON_RAGE - .2byte MOVE_TWISTER - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_CHIMECHO - .2byte MOVE_DISABLE - .2byte MOVE_CURSE - .2byte MOVE_HYPNOSIS - .2byte MOVE_DREAM_EATER - - .2byte -1 diff --git a/data/event_scripts.s b/data/event_scripts.s index d6702745a..854b52c9e 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -386,27 +386,27 @@ gStdScripts_End:: gUnknown_0815F36C:: @ 815F36C lockall - playsfx 2 + playse 2 message UnknownString_81A3A72 - doanimation 61 + dofieldeffect 61 waitstate - waittext + waitmessage waitbutton - playsfx 5 - jump EventScript_15F384 + playse 5 + goto EventScript_15F384 end EventScript_15F384: message UnknownString_81A3A87 - waittext + waitmessage checkflag 268 - jumpeq EventScript_15F3A0 - jump EventScript_15F3E2 + goto_if_eq EventScript_15F3A0 + goto EventScript_15F3E2 end gUnknown_0815F399:: @ 815F399 lockall - jump EventScript_15F384 + goto EventScript_15F384 end EventScript_15F3A0: @@ -431,8 +431,8 @@ EventScript_15F3E2: EventScript_15F419: msgbox UnknownString_81A38FB, 5 compare RESULT, 0 - jumpeq EventScript_15F384 - closebutton + goto_if_eq EventScript_15F384 + closemessage special SecretBasePC_PackUp releaseall end @@ -448,18 +448,18 @@ EventScript_15F436: gUnknown_0815F43A:: @ 815F43A lockall message UnknownString_81A3A72 - playsfx 2 - doanimation 61 + playse 2 + dofieldeffect 61 waitstate - waittext + waitmessage waitbutton - playsfx 5 - jump EventScript_15F452 + playse 5 + goto EventScript_15F452 end EventScript_15F452: message UnknownString_81A3A87 - waittext + waitmessage multichoice 0, 0, 7, 0 switch RESULT case 0, EventScript_15F4A1 @@ -471,19 +471,19 @@ EventScript_15F452: gUnknown_0815F49A:: @ 815F49A lockall - jump EventScript_15F452 + goto EventScript_15F452 end EventScript_15F4A1: special sub_80BC56C compare RESULT, 1 - jumpeq EventScript_15F4E0 + goto_if_eq EventScript_15F4E0 compare RESULT, 2 - jumpeq EventScript_15F503 + goto_if_eq EventScript_15F503 special sub_80BC224 msgbox UnknownString_81A3958, 5 compare RESULT, 0 - jumpeq EventScript_15F452 + goto_if_eq EventScript_15F452 msgbox UnknownString_81A3A22, 3 special sub_80BC5BC special sub_80C683C @@ -493,7 +493,7 @@ EventScript_15F4A1: EventScript_15F4E0: msgbox UnknownString_81A3982, 5 compare RESULT, 0 - jumpeq EventScript_15F452 + goto_if_eq EventScript_15F452 msgbox UnknownString_81A3A3A, 3 special sub_80BC5BC special sub_80C683C @@ -503,37 +503,37 @@ EventScript_15F4E0: EventScript_15F503: msgbox UnknownString_81A39C0, 3 special sub_80C683C - closebutton + closemessage releaseall end EventScript_15F511: message UnknownString_81A3AA2 - waittext - jump EventScript_15F452 + waitmessage + goto EventScript_15F452 end EventScript_15F51D: special sub_80C683C - closebutton + closemessage releaseall end gUnknown_0815F523:: @ 815F523 - doanimation 52 + dofieldeffect 52 waitstate end gUnknown_0815F528:: @ 815F528 special GetShieldToyTVDecorationInfo compare RESULT, 0 - jumpeq EventScript_15F558 + goto_if_eq EventScript_15F558 compare RESULT, 1 - jumpeq EventScript_15F561 + goto_if_eq EventScript_15F561 compare RESULT, 2 - jumpeq EventScript_15F56A + goto_if_eq EventScript_15F56A compare RESULT, 3 - jumpeq EventScript_15F573 + goto_if_eq EventScript_15F573 end EventScript_15F558: @@ -890,7 +890,7 @@ Std_2: lock faceplayer message 0x0 - waittext + waitmessage waitbutton release return @@ -898,137 +898,132 @@ Std_2: Std_3: lockall message 0x0 - waittext + waitmessage waitbutton releaseall return Std_4: message 0x0 - waittext + waitmessage waitbutton return Std_5: message 0x0 - waittext + waitmessage yesnobox 20, 8 return @ 819F805 return -BattleTower_Lobby_EventScript_19F806:: @ 819F806 -FallarborTown_ContestLobby_EventScript_19F806:: @ 819F806 -LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806 -MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806 -OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806 -SecretBase_RedCave1_EventScript_19F806:: @ 819F806 - special InitSaveDialog +S_DoSaveDialog:: @ 819F806 + special ScrSpecial_DoSaveDialog waitstate return gUnknown_0819F80B:: @ 819F80B lock special PlayTrainerEncounterMusic - special sub_80847C8 + special ScrSpecial_EndTrainerApproach waitstate - jump EventScript_19F8F2 + goto EventScript_19F8F2 gUnknown_0819F818:: @ 819F818 lock faceplayer - move LAST_TALKED, Movement_19F8F0 - waitmove 0 - specialval RESULT, sub_8082564 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 + specialvar RESULT, ScrSpecial_HasTrainerBeenFought compare RESULT, 0 - jumpif 5, EventScript_19F83F + goto_if 5, EventScript_19F83F special PlayTrainerEncounterMusic special sub_8082524 - jump EventScript_19F8F2 + goto EventScript_19F8F2 EventScript_19F83F: - endtrainerbattle + ontrainerbattleend gUnknown_0819F840:: @ 819F840 lock faceplayer call EventScript_19F8E5 - specialval RESULT, sub_8082564 + specialvar RESULT, ScrSpecial_HasTrainerBeenFought compare RESULT, 0 - jumpif 5, EventScript_19F877 + goto_if 5, EventScript_19F877 special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, EventScript_19F870 + goto_if 5, EventScript_19F870 special PlayTrainerEncounterMusic special sub_8082524 - jump EventScript_19F8F2 + goto EventScript_19F8F2 EventScript_19F870: - special sub_8082718 - waittext + special ScrSpecial_ShowTrainerNonBattlingSpeech + waitmessage waitbutton release end EventScript_19F877: - endtrainerbattle + ontrainerbattleend gUnknown_0819F878:: @ 819F878 - move LAST_TALKED, Movement_19F8F0 - waitmove 0 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 special PlayTrainerEncounterMusic - reptrainerbattle - endtrainerbattle + battlebegin + ontrainerbattleend gUnknown_0819F887:: @ 819F887 call EventScript_19F8E5 - specialval RESULT, sub_8082C9C + specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare RESULT, 0 - jumpeq EventScript_19F8AD + goto_if_eq EventScript_19F8AD special PlayTrainerEncounterMusic special sub_8082524 - special sub_80826D8 - waittext + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - special sub_80826B0 + special ScrSpecial_StartTrainerEyeRematch waitstate releaseall end EventScript_19F8AD: - endtrainerbattle + ontrainerbattleend gUnknown_0819F8AE:: @ 819F8AE - specialval RESULT, sub_8082C9C + specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare RESULT, 0 - jumpeq EventScript_19F8DD + goto_if_eq EventScript_19F8DD special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, EventScript_19F8DE + goto_if 5, EventScript_19F8DE special PlayTrainerEncounterMusic special sub_8082524 - special sub_80826D8 - waittext + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - special sub_80826B0 + special ScrSpecial_StartTrainerEyeRematch waitstate releaseall end EventScript_19F8DD: - endtrainerbattle + ontrainerbattleend EventScript_19F8DE: - special sub_8082718 - waittext + special ScrSpecial_ShowTrainerNonBattlingSpeech + waitmessage waitbutton release end EventScript_19F8E5: - move LAST_TALKED, Movement_19F8F0 - waitmove 0 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 return Movement_19F8F0:: @@ -1036,117 +1031,117 @@ Movement_19F8F0:: step_end EventScript_19F8F2: - special sub_80826D8 - waittext + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - reptrainerbattle - specialval RESULT, sub_8082558 + battlebegin + specialvar RESULT, ScrSpecial_GetTrainerBattleMode compare RESULT, 0 - jumpeq EventScript_19F934 + goto_if_eq EventScript_19F934 compare RESULT, 2 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 1 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 6 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 8 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 EventScript_19F934: releaseall end EventScript_19F936: - endtrainerbattle2 + ontrainerbattleendgoto Std_6:: message 0x0 - waittext + waitmessage waitbutton release return Event_ResetBerryTrees: @ 19F940 - event_8a 2, 7, 5 - event_8a 1, 3, 5 - event_8a 11, 7, 5 - event_8a 13, 3, 5 - event_8a 4, 7, 5 - event_8a 76, 1, 5 - event_8a 8, 1, 5 - event_8a 10, 6, 5 - event_8a 25, 20, 5 - event_8a 26, 2, 5 - event_8a 66, 2, 5 - event_8a 67, 20, 5 - event_8a 69, 22, 5 - event_8a 70, 22, 5 - event_8a 71, 22, 5 - event_8a 55, 17, 5 - event_8a 56, 17, 5 - event_8a 5, 1, 5 - event_8a 6, 6, 5 - event_8a 7, 1, 5 - event_8a 16, 18, 5 - event_8a 17, 18, 5 - event_8a 18, 18, 5 - event_8a 29, 19, 5 - event_8a 28, 19, 5 - event_8a 27, 19, 5 - event_8a 24, 4, 5 - event_8a 23, 3, 5 - event_8a 22, 3, 5 - event_8a 21, 4, 5 - event_8a 19, 16, 5 - event_8a 20, 16, 5 - event_8a 80, 7, 5 - event_8a 81, 7, 5 - event_8a 77, 8, 5 - event_8a 78, 8, 5 - event_8a 68, 8, 5 - event_8a 31, 10, 5 - event_8a 33, 10, 5 - event_8a 34, 21, 5 - event_8a 35, 21, 5 - event_8a 36, 21, 5 - event_8a 83, 24, 5 - event_8a 84, 24, 5 - event_8a 85, 10, 5 - event_8a 86, 6, 5 - event_8a 37, 5, 5 - event_8a 38, 5, 5 - event_8a 39, 5, 5 - event_8a 40, 3, 5 - event_8a 41, 3, 5 - event_8a 42, 3, 5 - event_8a 46, 19, 5 - event_8a 45, 20, 5 - event_8a 44, 18, 5 - event_8a 43, 16, 5 - event_8a 47, 8, 5 - event_8a 48, 5, 5 - event_8a 49, 4, 5 - event_8a 50, 2, 5 - event_8a 52, 18, 5 - event_8a 53, 18, 5 - event_8a 62, 6, 5 - event_8a 64, 6, 5 - event_8a 58, 21, 5 - event_8a 59, 21, 5 - event_8a 60, 25, 5 - event_8a 61, 25, 5 - event_8a 79, 23, 5 - event_8a 14, 23, 5 - event_8a 15, 21, 5 - event_8a 30, 21, 5 - event_8a 65, 25, 5 - event_8a 72, 25, 5 - event_8a 73, 23, 5 - event_8a 74, 23, 5 - event_8a 87, 3, 5 - event_8a 88, 10, 5 - event_8a 89, 4, 5 - event_8a 82, 36, 5 + plantberrytree 2, 7, 5 + plantberrytree 1, 3, 5 + plantberrytree 11, 7, 5 + plantberrytree 13, 3, 5 + plantberrytree 4, 7, 5 + plantberrytree 76, 1, 5 + plantberrytree 8, 1, 5 + plantberrytree 10, 6, 5 + plantberrytree 25, 20, 5 + plantberrytree 26, 2, 5 + plantberrytree 66, 2, 5 + plantberrytree 67, 20, 5 + plantberrytree 69, 22, 5 + plantberrytree 70, 22, 5 + plantberrytree 71, 22, 5 + plantberrytree 55, 17, 5 + plantberrytree 56, 17, 5 + plantberrytree 5, 1, 5 + plantberrytree 6, 6, 5 + plantberrytree 7, 1, 5 + plantberrytree 16, 18, 5 + plantberrytree 17, 18, 5 + plantberrytree 18, 18, 5 + plantberrytree 29, 19, 5 + plantberrytree 28, 19, 5 + plantberrytree 27, 19, 5 + plantberrytree 24, 4, 5 + plantberrytree 23, 3, 5 + plantberrytree 22, 3, 5 + plantberrytree 21, 4, 5 + plantberrytree 19, 16, 5 + plantberrytree 20, 16, 5 + plantberrytree 80, 7, 5 + plantberrytree 81, 7, 5 + plantberrytree 77, 8, 5 + plantberrytree 78, 8, 5 + plantberrytree 68, 8, 5 + plantberrytree 31, 10, 5 + plantberrytree 33, 10, 5 + plantberrytree 34, 21, 5 + plantberrytree 35, 21, 5 + plantberrytree 36, 21, 5 + plantberrytree 83, 24, 5 + plantberrytree 84, 24, 5 + plantberrytree 85, 10, 5 + plantberrytree 86, 6, 5 + plantberrytree 37, 5, 5 + plantberrytree 38, 5, 5 + plantberrytree 39, 5, 5 + plantberrytree 40, 3, 5 + plantberrytree 41, 3, 5 + plantberrytree 42, 3, 5 + plantberrytree 46, 19, 5 + plantberrytree 45, 20, 5 + plantberrytree 44, 18, 5 + plantberrytree 43, 16, 5 + plantberrytree 47, 8, 5 + plantberrytree 48, 5, 5 + plantberrytree 49, 4, 5 + plantberrytree 50, 2, 5 + plantberrytree 52, 18, 5 + plantberrytree 53, 18, 5 + plantberrytree 62, 6, 5 + plantberrytree 64, 6, 5 + plantberrytree 58, 21, 5 + plantberrytree 59, 21, 5 + plantberrytree 60, 25, 5 + plantberrytree 61, 25, 5 + plantberrytree 79, 23, 5 + plantberrytree 14, 23, 5 + plantberrytree 15, 21, 5 + plantberrytree 30, 21, 5 + plantberrytree 65, 25, 5 + plantberrytree 72, 25, 5 + plantberrytree 73, 23, 5 + plantberrytree 74, 23, 5 + plantberrytree 87, 3, 5 + plantberrytree 88, 10, 5 + plantberrytree 89, 4, 5 + plantberrytree 82, 36, 5 return gUnknown_0819FA81:: @ 819FA81 @@ -1297,13 +1292,13 @@ EverGrandeCity_HallOfFame_EventScript_19FC13:: @ 819FC13 clearflag 861 special sub_810FAA0 checkflag 291 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC62 + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC62 checkflag 255 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC70 + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC70 checkflag 298 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5A + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5A checkflag 123 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5E + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5E return EverGrandeCity_HallOfFame_EventScript_19FC5A:: @ 819FC5A @@ -1324,28 +1319,28 @@ EverGrandeCity_HallOfFame_EventScript_19FC70:: @ 819FC70 setflag 2141 return -EventScript_LeagueWhiteOut:: @ 819FC74 +S_WhiteOut:: @ 819FC74 call EverGrandeCity_HallOfFame_EventScript_19FD09 call EventScript_19FC84 - jump gUnknown_0819FC9F + goto gUnknown_0819FC9F end EventScript_19FC84: checkflag 221 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC checkflag 1213 - jumpif 0, Route101_EventScript_1A14DC + goto_if 0, Route101_EventScript_1A14DC clearflag 929 setvar 0x4053, 2 return gUnknown_0819FC9F:: @ 819FC9F compare 0x4096, 1 - jumpeq EventScript_19FCC1 + goto_if_eq EventScript_19FCC1 compare 0x4096, 2 - jumpeq EventScript_19FCD7 + goto_if_eq EventScript_19FCD7 compare 0x4096, 3 - jumpeq EventScript_19FCF0 + goto_if_eq EventScript_19FCF0 end EventScript_19FCC1: @@ -1398,15 +1393,15 @@ RustboroCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B SlateportCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B VerdanturfTown_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B checkflag 188 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC checkflag 1217 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_1A14DC + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_1A14DC checkflag 742 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49 checkflag 740 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F checkflag 741 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55 return OldaleTown_PokemonCenter_1F_EventScript_19FD49:: @ 819FD49 @@ -1437,54 +1432,54 @@ SootopolisCity_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B lock faceplayer - msgbox OldaleTown_PokemonCenter_1F_Text_1A0A7D, 5 + msgbox gText_NurseJoy_Welcome, MSGBOX_YESNO compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FD7C + goto_if_eq do_heal_party compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDC7 - end - -OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C - inccounter GAME_STAT_USED_POKECENTER - message OldaleTown_PokemonCenter_1F_Text_1A1245 - waittext - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F - waitmove 0 - doanimation 25 - checkanimation 25 - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845 - waitmove 0 - special HealPlayerParty + goto_if_eq dont_heal_party + end + +do_heal_party:: @ 819FD7C + incrementgamestat GAME_STAT_USED_POKECENTER + message gText_NurseJoy_OkayIllTakeYourPokemon + waitmessage + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F + waitmovement 0 + dofieldeffect 25 + waitfieldeffect 25 + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845 + waitmovement 0 + special ScrSpecial_HealPlayerParty checkflag 273 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE - jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE + goto OldaleTown_PokemonCenter_1F_EventScript_19FDB0 end OldaleTown_PokemonCenter_1F_EventScript_19FDB0:: @ 819FDB0 - message OldaleTown_PokemonCenter_1F_Text_1A0B14 - waittext - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4 - waitmove 0 - message OldaleTown_PokemonCenter_1F_Text_1A0AFA - waittext + message gText_NurseJoy_ThankYouForWaiting + waitmessage + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4 + waitmovement 0 + message gText_NurseJoy_WeHopeToSeeYouAgain + waitmessage return -OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7 - message OldaleTown_PokemonCenter_1F_Text_1A0AFA - waittext +dont_heal_party:: @ 819FDC7 + message gText_NurseJoy_WeHopeToSeeYouAgain + waitmessage return OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE - specialval RESULT, IsPokerusInParty + specialvar RESULT, IsPokerusInParty compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDEA + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDEA compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDB0 + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDB0 end OldaleTown_PokemonCenter_1F_EventScript_19FDEA:: @ 819FDEA - message OldaleTown_PokemonCenter_1F_Text_1A1275 - waittext + message gText_NurseJoy_Pokerus + waitmessage setflag 273 return @@ -1500,13 +1495,13 @@ Std_ObtainItem: @ 819FDF7 return Std_ObtainItem_: @ 819FE07 - bufferitem 1, 0x8000 + getitemname 1, 0x8000 checkitemtype 0x8000 call GetItem_HandlePocket compare 0x8007, 0x1 - callif 1, Std_ObtainItem_Success + call_if 1, Std_ObtainItem_Success compare 0x8007, 0x0 - callif 1, Std_ObtainItem_Fail + call_if 1, Std_ObtainItem_Fail return GetItem_HandlePocket: @@ -1519,39 +1514,39 @@ GetItem_HandlePocket: end GetItem_HandlePocket_Items: - bufferstd 2, 0xE + getstdstring 2, 0xE compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_KeyItems: - bufferstd 2, 0xF + getstdstring 2, 0xF compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_PokeBalls: - bufferstd 2, 0x10 + getstdstring 2, 0x10 compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_TMsHMs: - bufferstd 2, 0x11 + getstdstring 2, 0x11 compare 0x8007, 1 - callif 1, PlayGetTMHMFanfare + call_if 1, PlayGetTMHMFanfare return GetItem_HandlePocket_Berries: - bufferstd 2, 0x12 + getstdstring 2, 0x12 compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return Std_ObtainItem_Success: @ 819FEB7 message Message_ObtainedItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem setvar RESULT, 1 return @@ -1561,11 +1556,11 @@ Std_ObtainItem_Fail: @ 819FECC return PlayGetItemFanfare: - fanfare 0x172 + playfanfare 0x172 return PlayGetTMHMFanfare: - fanfare 0x174 + playfanfare 0x174 return Std_ObtainDecoration: @ 819FEDA @@ -1575,18 +1570,18 @@ Std_ObtainDecoration: @ 819FEDA return Std_ObtainDecoration_: @ 819FEE8 - bufferdecor 1, 0x8000 + getdecorname 1, 0x8000 compare 0x8007, 1 - callif 1, Std_ObtainDecoration_Success + call_if 1, Std_ObtainDecoration_Success compare 0x8007, 0 - callif 1, Std_ObtainDecoration_Fail + call_if 1, Std_ObtainDecoration_Fail return Std_ObtainDecoration_Success: @ 819FF03 - fanfare 0x172 + playfanfare 0x172 message Message_ObtainedDecoration waitfanfare - waittext + waitmessage msgbox Message_TransferredToPC setvar RESULT, 1 return @@ -1598,24 +1593,24 @@ Std_ObtainDecoration_Fail: @ 819FF1B Std_FindItem: @ 819FF21 lock faceplayer - checksound + waitse additem 0x8000, 0x8001 copyvar 0x8007, RESULT - bufferitem 1, 0x8000 + getitemname 1, 0x8000 checkitemtype 0x8000 call GetItem_HandlePocket compare 0x8007, 1 - callif 1, Std_FindItem_Success + call_if 1, Std_FindItem_Success compare 0x8007, 0 - callif 1, Std_FindItem_Fail + call_if 1, Std_FindItem_Fail release return Std_FindItem_Success: @ 819FF52 - disappear LAST_TALKED + removeobject LAST_TALKED message Message_FoundOneItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem return @@ -1627,22 +1622,22 @@ Std_FindItem_Fail: @ 819FF65 HiddenItemScript:: @ 819FF7B lockall - checksound + waitse additem 0x8005, 1 copyvar 0x8007, RESULT - bufferitem 0x1, 0x8005 + getitemname 0x1, 0x8005 checkitemtype 0x8005 call GetItem_HandlePocket compare 0x8007, 1 - jumpeq HiddenItemScript_Success + goto_if_eq HiddenItemScript_Success compare 0x8007, 0 - jumpeq HiddenItemScript_Fail + goto_if_eq HiddenItemScript_Fail end HiddenItemScript_Success: message Message_FoundOneItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem special SetFlagInVar releaseall @@ -1660,10 +1655,10 @@ UnusedMixRecordsScript: @ 819FFD5 faceplayer msgbox UnusedMixRecordsPromptText, 5 compare RESULT, 1 - jumpeq UnusedMixRecordsScript_Yes + goto_if_eq UnusedMixRecordsScript_Yes compare RESULT, 0 - jumpeq UnusedMixRecordsScript_Done - jump UnusedMixRecordsScript_Done + goto_if_eq UnusedMixRecordsScript_Done + goto UnusedMixRecordsScript_Done UnusedMixRecordsScript_Yes: @ 819FFFA special sub_80B929C waitstate @@ -1671,7 +1666,7 @@ UnusedMixRecordsScript_Yes: @ 819FFFA faceplayer UnusedMixRecordsScript_Done: @ 81A0000 message UnusedMixRecordsSeeYouAgainText - waittext + waitmessage waitbutton release end @@ -1680,17 +1675,17 @@ gUnknown_081A0009:: @ 81A0009 lockall setvar 0x8004, 0 special DoPCTurnOnEffect - playsfx 4 + playse 4 msgbox UnknownString_81A09EC, 4 - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A0023: message gPCText_WhichPCShouldBeAccessed - waittext - special TryCreatePCMenu + waitmessage + special ScrSpecial_CreatePCMenu waitstate - jump EventScript_1A0033 + goto EventScript_1A0033 end EventScript_1A0033: @@ -1703,23 +1698,23 @@ EventScript_1A0033: end EventScript_1A0070: - playsfx 2 + playse 2 msgbox UnknownString_81A0A54, 4 special PlayerPC waitstate - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A0085: - playsfx 2 + playse 2 checkflag 2123 - callif 0, EventScript_1A00AC + call_if 0, EventScript_1A00AC checkflag 2123 - callif 1, EventScript_1A00B5 + call_if 1, EventScript_1A00B5 msgbox UnknownString_81A0A35, 4 special ShowPokemonStorageSystem waitstate - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A00AC: @@ -1732,18 +1727,18 @@ EventScript_1A00B5: EventScript_1A00BE: setvar 0x8004, 0 - playsfx 3 + playse 3 special DoPCTurnOffEffect releaseall end EventScript_1A00CB: checkflag 2052 - jumpif 0, EventScript_1A00BE - playsfx 2 + goto_if 0, EventScript_1A00BE + playse 2 special AccessHallOfFamePC waitstate - jump EventScript_1A0033 + goto EventScript_1A0033 end FallarborTown_EventScript_1A00E1:: @ 81A00E1 @@ -1802,7 +1797,7 @@ RustboroCity_Gym_EventScript_1A00FB:: @ 81A00FB DewfordTown_EventScript_1A0102:: @ 81A0102 DewfordTown_Hall_EventScript_1A0102:: @ 81A0102 - checkdailyflags + dodailyevents setvar 0x8004, 0 special sub_80FA5BC return @@ -1815,17 +1810,17 @@ Route109_EventScript_1A010C:: @ 81A010C return UseSurfScript:: @ 81A0117 - checkattack MOVE_SURF + checkpokemove MOVE_SURF compare RESULT, 6 - jumpeq UseSurfScript_NoMon - bufferpartypoke 0, RESULT - setanimation 0, RESULT + goto_if_eq UseSurfScript_NoMon + getpartypokename 0, RESULT + setfieldeffect 0, RESULT lockall msgbox UseSurfPromptText, 5 compare RESULT, 0 - jumpeq UseSurfScript_No + goto_if_eq UseSurfScript_No msgbox UsedSurfText, 4 - doanimation 9 + dofieldeffect 9 UseSurfScript_No: @ 81A014C releaseall UseSurfScript_NoMon: @ 81A014D @@ -1840,11 +1835,11 @@ Route103_EventScript_1A014E:: @ 81A014E Route110_EventScript_1A014E:: @ 81A014E Route119_EventScript_1A014E:: @ 81A014E RustboroCity_EventScript_1A014E:: @ 81A014E - checkgender + checkplayergender compare RESULT, 0 - jumpeq RustboroCity_EventScript_1A0166 + goto_if_eq RustboroCity_EventScript_1A0166 compare RESULT, 1 - jumpeq RustboroCity_EventScript_1A016C + goto_if_eq RustboroCity_EventScript_1A016C end RustboroCity_EventScript_1A0166:: @ 81A0166 @@ -1858,11 +1853,11 @@ RustboroCity_EventScript_1A016C:: @ 81A016C LavaridgeTown_EventScript_1A0172:: @ 81A0172 Route110_EventScript_1A0172:: @ 81A0172 Route119_EventScript_1A0172:: @ 81A0172 - checkgender + checkplayergender compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_1A018A + goto_if_eq LavaridgeTown_EventScript_1A018A compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_1A0190 + goto_if_eq LavaridgeTown_EventScript_1A0190 end LavaridgeTown_EventScript_1A018A:: @ 81A018A @@ -1944,66 +1939,66 @@ SootopolisCity_Gym_1F_EventScript_1A01C0:: @ 81A01C0 end DewfordTown_Gym_EventScript_1A021E:: @ 81A021E - cleartrainerflag OPPONENT_JOSH - cleartrainerflag OPPONENT_TOMMY + settrainerflag OPPONENT_JOSH + settrainerflag OPPONENT_TOMMY return DewfordTown_Gym_EventScript_1A0225:: @ 81A0225 - cleartrainerflag OPPONENT_HIDEKI - cleartrainerflag OPPONENT_TESSA - cleartrainerflag OPPONENT_LAURA + settrainerflag OPPONENT_HIDEKI + settrainerflag OPPONENT_TESSA + settrainerflag OPPONENT_LAURA return DewfordTown_Gym_EventScript_1A022F:: @ 81A022F - cleartrainerflag OPPONENT_KIRK - cleartrainerflag OPPONENT_SHAWN - cleartrainerflag OPPONENT_BEN - cleartrainerflag OPPONENT_VIVIAN + settrainerflag OPPONENT_KIRK + settrainerflag OPPONENT_SHAWN + settrainerflag OPPONENT_BEN + settrainerflag OPPONENT_VIVIAN return DewfordTown_Gym_EventScript_1A023C:: @ 81A023C - cleartrainerflag OPPONENT_COLE - cleartrainerflag OPPONENT_AXLE - cleartrainerflag OPPONENT_ANDY - cleartrainerflag OPPONENT_ZANE - cleartrainerflag OPPONENT_SADIE + settrainerflag OPPONENT_COLE + settrainerflag OPPONENT_AXLE + settrainerflag OPPONENT_ANDY + settrainerflag OPPONENT_ZANE + settrainerflag OPPONENT_SADIE return DewfordTown_Gym_EventScript_1A024C:: @ 81A024C - cleartrainerflag OPPONENT_RANDALL - cleartrainerflag OPPONENT_PARKER - cleartrainerflag OPPONENT_GEORGE - cleartrainerflag OPPONENT_BERKE - cleartrainerflag OPPONENT_MARY - cleartrainerflag OPPONENT_LORI - cleartrainerflag OPPONENT_JODY + settrainerflag OPPONENT_RANDALL + settrainerflag OPPONENT_PARKER + settrainerflag OPPONENT_GEORGE + settrainerflag OPPONENT_BERKE + settrainerflag OPPONENT_MARY + settrainerflag OPPONENT_LORI + settrainerflag OPPONENT_JODY return DewfordTown_Gym_EventScript_1A0262:: @ 81A0262 - cleartrainerflag OPPONENT_JARED - cleartrainerflag OPPONENT_TERRELL - cleartrainerflag OPPONENT_KYLEE - cleartrainerflag OPPONENT_WILL + settrainerflag OPPONENT_JARED + settrainerflag OPPONENT_TERRELL + settrainerflag OPPONENT_KYLEE + settrainerflag OPPONENT_WILL return DewfordTown_Gym_EventScript_1A026F:: @ 81A026F - cleartrainerflag OPPONENT_PRESTON - cleartrainerflag OPPONENT_VIRGIL - cleartrainerflag OPPONENT_FRITZ - cleartrainerflag OPPONENT_HANNAH - cleartrainerflag OPPONENT_SAMANTHA - cleartrainerflag OPPONENT_MAURA + settrainerflag OPPONENT_PRESTON + settrainerflag OPPONENT_VIRGIL + settrainerflag OPPONENT_FRITZ + settrainerflag OPPONENT_HANNAH + settrainerflag OPPONENT_SAMANTHA + settrainerflag OPPONENT_MAURA return DewfordTown_Gym_EventScript_1A0282:: @ 81A0282 - cleartrainerflag OPPONENT_ANDREA - cleartrainerflag OPPONENT_CRISSY - cleartrainerflag OPPONENT_BRIANNA_2 - cleartrainerflag OPPONENT_CONNIE - cleartrainerflag OPPONENT_BRIDGET - cleartrainerflag OPPONENT_OLIVIA - cleartrainerflag OPPONENT_TIFFANY - cleartrainerflag OPPONENT_MARISSA + settrainerflag OPPONENT_ANDREA + settrainerflag OPPONENT_CRISSY + settrainerflag OPPONENT_BRIANNA_2 + settrainerflag OPPONENT_CONNIE + settrainerflag OPPONENT_BRIDGET + settrainerflag OPPONENT_OLIVIA + settrainerflag OPPONENT_TIFFANY + settrainerflag OPPONENT_MARISSA return DewfordTown_Gym_EventScript_1A029B:: @ 81A029B @@ -2100,7 +2095,7 @@ MossdeepCity_Gym_EventScript_1A02C5:: @ 81A02C5 PetalburgCity_Gym_EventScript_1A02C5:: @ 81A02C5 RustboroCity_Gym_EventScript_1A02C5:: @ 81A02C5 SootopolisCity_Gym_1F_EventScript_1A02C5:: @ 81A02C5 - fanfare 369 + playfanfare 369 waitfanfare return @@ -2109,9 +2104,9 @@ Route111_OldLadysRestStop_EventScript_1A02CA:: @ 81A02CA Route119_WeatherInstitute_1F_EventScript_1A02CA:: @ 81A02CA SSTidalRooms_EventScript_1A02CA:: @ 81A02CA fadescreen 1 - fanfare 368 + playfanfare 368 waitfanfare - special HealPlayerParty + special ScrSpecial_HealPlayerParty fadescreen 0 return @@ -2128,37 +2123,37 @@ DewfordTown_EventScript_1A02E7:: @ 81A02E7 Route104_EventScript_1A02E7:: @ 81A02E7 Route109_EventScript_1A02E7:: @ 81A02E7 setflag 0x4001 - playmusic 431, 0 + playbgm 431, 0 return DewfordTown_EventScript_1A02EF:: @ 81A02EF Route104_EventScript_1A02EF:: @ 81A02EF Route109_EventScript_1A02EF:: @ 81A02EF clearflag 0x4001 - fadedefault + fadedefaultbgm return LittlerootTown_ProfessorBirchsLab_EventScript_1A02F4:: @ 81A02F4 Route101_EventScript_1A02F4:: @ 81A02F4 Route103_EventScript_1A02F4:: @ 81A02F4 compare 0x4085, 0 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC compare 0x4049, 0 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 1 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 2 - callif 1, Route101_EventScript_1A0365 + call_if 1, Route101_EventScript_1A0365 compare 0x4049, 3 - callif 1, Route101_EventScript_1A0365 + call_if 1, Route101_EventScript_1A0365 compare 0x4049, 4 - callif 1, Route101_EventScript_1A0372 + call_if 1, Route101_EventScript_1A0372 compare 0x4049, 5 - callif 1, Route101_EventScript_1A0372 + call_if 1, Route101_EventScript_1A0372 compare 0x4049, 6 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 7 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 return Route101_EventScript_1A0358:: @ 81A0358 @@ -2189,7 +2184,7 @@ Route103_EventScript_1A037F:: @ 81A037F faceplayer msgbox Route101_Text_1C4449, 5 compare RESULT, 0 - jumpeq Route101_EventScript_1A039B + goto_if_eq Route101_EventScript_1A039B call Route101_EventScript_1A03B0 release end @@ -2202,38 +2197,38 @@ Route101_EventScript_1A039B:: @ 81A039B Route101_EventScript_1A03A5:: @ 81A03A5 copyvar 0x8004, 0x8009 special ShowPokedexRatingMessage - waittext + waitmessage waitbutton return EverGrandeCity_ChampionsRoom_EventScript_1A03B0:: @ 81A03B0 Route101_EventScript_1A03B0:: @ 81A03B0 setvar 0x8004, 0 - specialval RESULT, ScriptGetPokedexInfo + specialvar RESULT, ScriptGetPokedexInfo copyvar 0x8008, 0x8005 copyvar 0x8009, 0x8006 copyvar 0x800a, RESULT - buffernum 0, 0x8008 - buffernum 1, 0x8009 + getnumberstring 0, 0x8008 + getnumberstring 1, 0x8009 msgbox Route101_Text_1C44DC, 4 call Route101_EventScript_1A03A5 compare 0x800a, 0 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC setvar 0x8004, 1 - specialval RESULT, ScriptGetPokedexInfo + specialvar RESULT, ScriptGetPokedexInfo copyvar 0x8008, 0x8005 copyvar 0x8009, 0x8006 - buffernum 0, 0x8008 - buffernum 1, 0x8009 + getnumberstring 0, 0x8008 + getnumberstring 1, 0x8009 msgbox Route101_Text_1C4B05, 4 return BattleTower_Outside_EventScript_1A040E:: @ 81A040E LilycoveCity_Harbor_EventScript_1A040E:: @ 81A040E SlateportCity_Harbor_EventScript_1A040E:: @ 81A040E - pause 60 - move 0x8004, SlateportCity_Harbor_Movement_1A041C - waitmove 0 + delay 60 + applymovement 0x8004, SlateportCity_Harbor_Movement_1A041C + waitmovement 0 return SlateportCity_Harbor_Movement_1A041C:: @ 81A041C @@ -2259,8 +2254,8 @@ PetalburgCity_Gym_EventScript_1A0424:: @ 81A0424 return RusturfTunnel_EventScript_1A0442:: @ 81A0442 - disappear 1 - disappear 10 + removeobject 1 + removeobject 10 clearflag 808 clearflag 984 setvar 0x409a, 6 @@ -2268,14 +2263,14 @@ RusturfTunnel_EventScript_1A0442:: @ 81A0442 return EventScript_1A0457: @ unreferenced? - pause 30 - move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841 - waitmove 0 - spritevisible 255, 0, 0 - pause 30 - move 255, Movement_1A047A - waitmove 0 - pause 30 + delay 30 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841 + waitmovement 0 + showobject 255, 0, 0 + delay 30 + applymovement 255, Movement_1A047A + waitmovement 0 + delay 30 return Movement_1A047A: @@ -2285,18 +2280,18 @@ Movement_1A047A: BattleTower_Outside_EventScript_1A047C:: @ 81A047C SouthernIsland_Exterior_EventScript_1A047C:: @ 81A047C compare FACING, 1 - callif 1, BattleTower_Outside_EventScript_160B2F + call_if 1, BattleTower_Outside_EventScript_160B2F compare FACING, 3 - callif 1, BattleTower_Outside_EventScript_160B3A - pause 30 - spriteinvisible 255, 0, 0 + call_if 1, BattleTower_Outside_EventScript_160B3A + delay 30 + hideobject 255, 0, 0 call BattleTower_Outside_EventScript_1A040E return CaveOfOrigin_B4F_EventScript_1A04A0:: @ 81A04A0 lockall - checksound - pokecry SPECIES_GROUDON_OR_KYOGRE, 2 + waitse + playpokecry SPECIES_GROUDON_OR_KYOGRE, 2 waitpokecry setvar 0x4005, 1 releaseall @@ -2308,20 +2303,20 @@ CaveOfOrigin_B2F_EventScript_1A04AF:: @ 81A04AF CaveOfOrigin_B3F_EventScript_1A04AF:: @ 81A04AF lockall setvar 0x4001, 1 - jump CaveOfOrigin_1F_EventScript_1A04D3 + goto CaveOfOrigin_1F_EventScript_1A04D3 end CaveOfOrigin_B2F_EventScript_1A04BB:: @ 81A04BB CaveOfOrigin_B3F_EventScript_1A04BB:: @ 81A04BB lockall setvar 0x4002, 1 - jump CaveOfOrigin_B2F_EventScript_1A04D3 + goto CaveOfOrigin_B2F_EventScript_1A04D3 end @ 81A04C7 lockall setvar 0x4003, 1 - jump CaveOfOrigin_B2F_EventScript_1A04D3 + goto CaveOfOrigin_B2F_EventScript_1A04D3 end CaveOfOrigin_1F_EventScript_1A04D3:: @ 81A04D3 @@ -2350,9 +2345,9 @@ MagmaHideout_B1F_EventScript_1A04FD:: @ 81A04FD lock faceplayer setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE - checksound - pokecry SPECIES_ELECTRODE, 2 - pause 40 + waitse + playpokecry SPECIES_ELECTRODE, 2 + delay 40 waitpokecry setflag 977 setflag 2145 @@ -2366,9 +2361,9 @@ MagmaHideout_B1F_EventScript_1A051B:: @ 81A051B lock faceplayer setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE - checksound - pokecry SPECIES_ELECTRODE, 2 - pause 40 + waitse + playpokecry SPECIES_ELECTRODE, 2 + delay 40 waitpokecry setflag 978 setflag 2145 @@ -2381,56 +2376,56 @@ Route120_EventScript_1A0539:: @ 81A0539 lock faceplayer setvar 0x8004, 1 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0546:: @ 81A0546 lock faceplayer setvar 0x8004, 2 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0553:: @ 81A0553 lock faceplayer setvar 0x8004, 3 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0560:: @ 81A0560 lock faceplayer setvar 0x8004, 4 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A056D:: @ 81A056D lock faceplayer setvar 0x8004, 5 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route119_EventScript_1A057A:: @ 81A057A lock faceplayer setvar 0x8004, 6 - jump Route119_EventScript_1A0594 + goto Route119_EventScript_1A0594 end Route119_EventScript_1A0587:: @ 81A0587 lock faceplayer setvar 0x8004, 7 - jump Route119_EventScript_1A0594 + goto Route119_EventScript_1A0594 end Route119_EventScript_1A0594:: @ 81A0594 Route120_EventScript_1A0594:: @ 81A0594 checkitem ITEM_DEVON_SCOPE, 1 compare RESULT, 1 - jumpeq Route119_EventScript_1A05AE + goto_if_eq Route119_EventScript_1A05AE msgbox Route119_Text_171B93, 4 release end @@ -2438,36 +2433,36 @@ Route120_EventScript_1A0594:: @ 81A0594 Route119_EventScript_1A05AE:: @ 81A05AE msgbox Route119_Text_171BB6, 5 compare RESULT, 1 - jumpeq Route119_EventScript_1A05C3 + goto_if_eq Route119_EventScript_1A05C3 release end Route119_EventScript_1A05C3:: @ 81A05C3 msgbox Route119_Text_171BF6, 4 - closebutton - move LAST_TALKED, Route119_Movement_1A0839 - waitmove 0 - move LAST_TALKED, Route119_Movement_1A0662 - waitmove 0 - checksound - pokecry SPECIES_KECLEON, 2 - pause 40 + closemessage + applymovement LAST_TALKED, Route119_Movement_1A0839 + waitmovement 0 + applymovement LAST_TALKED, Route119_Movement_1A0662 + waitmovement 0 + waitse + playpokecry SPECIES_KECLEON, 2 + delay 40 waitpokecry setwildbattle SPECIES_KECLEON, 30, ITEM_NONE compare 0x8004, 1 - callif 1, Route119_EventScript_1A0646 + call_if 1, Route119_EventScript_1A0646 compare 0x8004, 2 - callif 1, Route119_EventScript_1A064A + call_if 1, Route119_EventScript_1A064A compare 0x8004, 3 - callif 1, Route119_EventScript_1A064E + call_if 1, Route119_EventScript_1A064E compare 0x8004, 4 - callif 1, Route119_EventScript_1A0652 + call_if 1, Route119_EventScript_1A0652 compare 0x8004, 5 - callif 1, Route119_EventScript_1A0656 + call_if 1, Route119_EventScript_1A0656 compare 0x8004, 6 - callif 1, Route119_EventScript_1A065A + call_if 1, Route119_EventScript_1A065A compare 0x8004, 7 - callif 1, Route119_EventScript_1A065E + call_if 1, Route119_EventScript_1A065E setflag 2145 dowildbattle clearflag 2145 @@ -2541,10 +2536,10 @@ FallarborTown_House1_EventScript_1A067F:: @ 81A067F GraniteCave_StevensRoom_EventScript_1A067F:: @ 81A067F MtPyre_Summit_EventScript_1A067F:: @ 81A067F SlateportCity_OceanicMuseum_2F_EventScript_1A067F:: @ 81A067F - bufferitem 0, 0x8004 - fanfare 372 + getitemname 0, 0x8004 + playfanfare 372 message FallarborTown_House1_Text_1A1498 - waittext + waitmessage waitfanfare removeitem 0x8004, 1 return @@ -2553,9 +2548,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_GlaciasRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_PhoebesRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693 - move 255, EverGrandeCity_SidneysRoom_Movement_1A0853 - waitmove 0 - playsfx 8 + applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0853 + waitmovement 0 + playse 8 setmaptile 6, 1, 836, 0 setmaptile 6, 2, 837, 0 setmaptile 0, 2, 734, 1 @@ -2575,9 +2570,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_GlaciasRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_PhoebesRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_SidneysRoom_EventScript_1A0710:: @ 81A0710 - move 255, EverGrandeCity_SidneysRoom_Movement_1A0847 - waitmove 0 - playsfx 52 + applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0847 + waitmovement 0 + playse 52 setmaptile 5, 12, 518, 1 setmaptile 6, 12, 518, 1 setmaptile 7, 12, 518, 1 @@ -2985,17 +2980,17 @@ UnknownString_81A0A54: @ 81A0A54 UnknownString_81A0A66: @ 81A0A66 .string "Accessed LANETTE’s PC.$" -OldaleTown_PokemonCenter_1F_Text_1A0A7D:: @ 81A0A7D +gText_NurseJoy_Welcome:: @ 81A0A7D .string "Hello, and welcome to the POKéMON\n" .string "CENTER.\p" .string "We restore your tired POKéMON to\n" .string "full health.\p" .string "Would you like to rest your POKéMON?$" -OldaleTown_PokemonCenter_1F_Text_1A0AFA:: @ 81A0AFA +gText_NurseJoy_WeHopeToSeeYouAgain:: @ 81A0AFA .string "We hope to see you again!$" -OldaleTown_PokemonCenter_1F_Text_1A0B14:: @ 81A0B14 +gText_NurseJoy_ThankYouForWaiting:: @ 81A0B14 .string "Thank you for waiting.\p" .string "We’ve restored your POKéMON to\n" .string "full health.$" @@ -3209,11 +3204,11 @@ SlateportCity_Text_1A116E:: @ 81A116E .string "We’ll accept you as a member and sell\n" .string "you good stuff in secrecy.$" -OldaleTown_PokemonCenter_1F_Text_1A1245:: @ 81A1245 +gText_NurseJoy_OkayIllTakeYourPokemon:: @ 81A1245 .string "Okay, I’ll take your POKéMON for a\n" .string "few seconds.$" -OldaleTown_PokemonCenter_1F_Text_1A1275:: @ 81A1275 +gText_NurseJoy_Pokerus:: @ 81A1275 .string "Your POKéMON may be infected with\n" .string "POKéRUS.\p" .string "Little is known about the POKéRUS\n" @@ -3259,13 +3254,13 @@ gUnknown_081A14B8:: @ 81A14B8 special ExecuteWhiteOut waitstate compare RESULT, 1 - jumpeq EventScript_1A14CA + goto_if_eq EventScript_1A14CA releaseall end EventScript_1A14CA:: message UnknownString_81A1141 - waittext + waitmessage waitbutton special sub_8081924 waitstate @@ -3603,44 +3598,44 @@ gUnknown_081A2C51:: @ 81A2C51 special sub_80BB70C special sub_80BB63C compare RESULT, 1 - jumpeq EventScript_1A2E45 - checkattack MOVE_SECRET_POWER - setanimation 0, RESULT - bufferattack 1, MOVE_SECRET_POWER + goto_if_eq EventScript_1A2E45 + checkpokemove MOVE_SECRET_POWER + setfieldeffect 0, RESULT + getmovename 1, MOVE_SECRET_POWER compare 0x8007, 1 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 2 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 3 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 4 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 5 - jumpeq EventScript_1A2D08 + goto_if_eq EventScript_1A2D08 compare 0x8007, 6 - jumpeq EventScript_1A2D60 + goto_if_eq EventScript_1A2D60 end EventScript_1A2CB0: lockall compare RESULT, 6 - jumpeq EventScript_1A2CF1 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2CF1 + getpartypokename 0, RESULT msgbox UnknownString_8198F34, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 11 + closemessage + dofieldeffect 11 waitstate - jump EventScript_1A2CFA + goto EventScript_1A2CFA end gUnknown_081A2CE6:: @ 81A2CE6 lockall - doanimation 11 + dofieldeffect 11 waitstate - jump EventScript_1A2CFA + goto EventScript_1A2CFA end EventScript_1A2CF1: @@ -3649,29 +3644,29 @@ EventScript_1A2CF1: EventScript_1A2CFA: msgbox UnknownString_8198F6E, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2D08: lockall compare RESULT, 6 - jumpeq EventScript_1A2D49 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2D49 + getpartypokename 0, RESULT msgbox UnknownString_81A197B, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 26 + closemessage + dofieldeffect 26 waitstate - jump EventScript_1A2D52 + goto EventScript_1A2D52 end gUnknown_081A2D3E:: @ 81A2D3E lockall - doanimation 26 + dofieldeffect 26 waitstate - jump EventScript_1A2D52 + goto EventScript_1A2D52 end EventScript_1A2D49: @@ -3680,29 +3675,29 @@ EventScript_1A2D49: EventScript_1A2D52: msgbox UnknownString_81A19C4, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2D60: lockall compare RESULT, 6 - jumpeq EventScript_1A2DA1 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2DA1 + getpartypokename 0, RESULT msgbox UnknownString_81A1A4B, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 27 + closemessage + dofieldeffect 27 waitstate - jump EventScript_1A2DAA + goto EventScript_1A2DAA end gUnknown_081A2D96:: @ 81A2D96 lockall - doanimation 27 + dofieldeffect 27 waitstate - jump EventScript_1A2DAA + goto EventScript_1A2DAA end EventScript_1A2DA1: @@ -3711,12 +3706,12 @@ EventScript_1A2DA1: EventScript_1A2DAA: msgbox UnknownString_81A1AA9, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2DB8: - closebutton - playsfx 9 + closemessage + playse 9 setvar 0x4097, 0 setflag 173 special sub_80BB8CC @@ -3729,19 +3724,19 @@ EventScript_1A2DB8: end SecretBase_RedCave1_EventScript_1A2DDE:: @ 81A2DDE - move 255, SecretBase_RedCave1_Movement_1A2E11 - waitmove 0 + applymovement 255, SecretBase_RedCave1_Movement_1A2E11 + waitmovement 0 setvar 0x4097, 1 msgbox SecretBase_RedCave1_Text_198F89, 5 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A2E08 - closebutton - playsfx 9 + goto_if_eq SecretBase_RedCave1_EventScript_1A2E08 + closemessage + playse 9 special sub_80BC440 end SecretBase_RedCave1_EventScript_1A2E08:: @ 81A2E08 - closebutton + closemessage setflag 96 special sub_80BBC78 waitstate @@ -3755,10 +3750,10 @@ SecretBase_RedCave1_Movement_1A2E11:: @ 81A2E11 gUnknown_081A2E14:: @ 81A2E14 lockall setvar 0x4097, 1 - playsfx 9 + playse 9 special sub_80BC114 compare RESULT, 0 - jumpeq EventScript_1A2E38 + goto_if_eq EventScript_1A2E38 clearflag 173 special sub_80BBAF0 setvar 0x4089, 0 @@ -3773,63 +3768,63 @@ EventScript_1A2E38: end EventScript_1A2E45: - checkattack MOVE_SECRET_POWER + checkpokemove MOVE_SECRET_POWER compare RESULT, 6 - jumpeq EventScript_1A2EF7 - setanimation 0, RESULT + goto_if_eq EventScript_1A2EF7 + setfieldeffect 0, RESULT setorcopyvar 0x8004, RESULT lockall special GetSecretBaseNearbyMapName msgbox UnknownString_81A3C71, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UnknownString_81A38FB, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A fadescreen 1 special sub_80BC50C - closebutton + closemessage fadescreen 0 msgbox UnknownString_81A3CC9, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A - bufferpartypoke 0, 0x8004 - bufferattack 1, MOVE_SECRET_POWER + goto_if_eq EventScript_1A2F3A + getpartypokename 0, 0x8004 + getmovename 1, MOVE_SECRET_POWER msgbox UsedCutRockSmashText, 4 - closebutton - closebutton + closemessage + closemessage compare 0x8007, 1 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 2 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 3 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 4 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 5 - jumpeq gUnknown_081A2D3E + goto_if_eq gUnknown_081A2D3E compare 0x8007, 6 - jumpeq gUnknown_081A2D96 + goto_if_eq gUnknown_081A2D96 releaseall end EventScript_1A2EF7:: compare 0x8007, 1 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 2 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 3 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 4 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 5 - jumpeq EventScript_1A2D49 + goto_if_eq EventScript_1A2D49 compare 0x8007, 6 - jumpeq EventScript_1A2DA1 + goto_if_eq EventScript_1A2DA1 end EventScript_1A2F3A:: - closebutton + closemessage releaseall end @@ -3863,7 +3858,7 @@ SecretBase_RedCave1_EventScript_1A2F68:: @ 81A2F68 gUnknown_081A2F7B:: @ 81A2F7B setvar 0x8005, 0 - jump EventScript_1A2F86 + goto EventScript_1A2F86 end EventScript_1A2F86: @@ -3872,19 +3867,19 @@ EventScript_1A2F86: gUnknown_081A2F8A:: @ 81A2F8A setvar 0x8004, 0 - jump EventScript_1A2F95 + goto EventScript_1A2F95 end EventScript_1A2F95: special sub_8100A7C compare RESULT, 1 - jumpeq EventScript_1A2FBF + goto_if_eq EventScript_1A2FBF addvar 0x8004, 1 compare 0x8005, 0 - jumpeq EventScript_1A2F95 - disappear 0x8006 + goto_if_eq EventScript_1A2F95 + removeobject 0x8006 setflag 0x8005 - jump EventScript_1A2F95 + goto EventScript_1A2F95 end EventScript_1A2FBF: @@ -3916,45 +3911,45 @@ SecretBase_YellowCave3_EventScript_1A2FC0:: @ 81A2FC0 SecretBase_YellowCave4_EventScript_1A2FC0:: @ 81A2FC0 special sub_80BCE90 compare 0x8004, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3032 + goto_if_eq SecretBase_RedCave1_EventScript_1A3032 compare 0x8004, 1 - jumpeq SecretBase_RedCave1_EventScript_1A30AE + goto_if_eq SecretBase_RedCave1_EventScript_1A30AE compare 0x8004, 2 - jumpeq SecretBase_RedCave1_EventScript_1A312A + goto_if_eq SecretBase_RedCave1_EventScript_1A312A compare 0x8004, 3 - jumpeq SecretBase_RedCave1_EventScript_1A31A6 + goto_if_eq SecretBase_RedCave1_EventScript_1A31A6 compare 0x8004, 4 - jumpeq SecretBase_RedCave1_EventScript_1A3222 + goto_if_eq SecretBase_RedCave1_EventScript_1A3222 compare 0x8004, 5 - jumpeq SecretBase_RedCave1_EventScript_1A329E + goto_if_eq SecretBase_RedCave1_EventScript_1A329E compare 0x8004, 6 - jumpeq SecretBase_RedCave1_EventScript_1A331A + goto_if_eq SecretBase_RedCave1_EventScript_1A331A compare 0x8004, 7 - jumpeq SecretBase_RedCave1_EventScript_1A3396 + goto_if_eq SecretBase_RedCave1_EventScript_1A3396 compare 0x8004, 8 - jumpeq SecretBase_RedCave1_EventScript_1A3412 + goto_if_eq SecretBase_RedCave1_EventScript_1A3412 compare 0x8004, 9 - jumpeq SecretBase_RedCave1_EventScript_1A348E + goto_if_eq SecretBase_RedCave1_EventScript_1A348E end SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3086 + goto_if 0, SecretBase_RedCave1_EventScript_1A3086 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A30A5 + goto_if_eq SecretBase_RedCave1_EventScript_1A30A5 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1AEA, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A308F + goto_if_eq SecretBase_RedCave1_EventScript_1A308F setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A308F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A308F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1B83, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086 @@ -3964,7 +3959,7 @@ SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086 SecretBase_RedCave1_EventScript_1A308F:: @ 81A308F setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1B97, 2 end @@ -3974,22 +3969,22 @@ SecretBase_RedCave1_EventScript_1A30A5:: @ 81A30A5 SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3102 + goto_if 0, SecretBase_RedCave1_EventScript_1A3102 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3121 + goto_if_eq SecretBase_RedCave1_EventScript_1A3121 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1E67, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A310B + goto_if_eq SecretBase_RedCave1_EventScript_1A310B setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A310B - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A310B + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1F04, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102 @@ -3999,7 +3994,7 @@ SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102 SecretBase_RedCave1_EventScript_1A310B:: @ 81A310B setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1F2E, 2 end @@ -4009,22 +4004,22 @@ SecretBase_RedCave1_EventScript_1A3121:: @ 81A3121 SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A317E + goto_if 0, SecretBase_RedCave1_EventScript_1A317E compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A319D + goto_if_eq SecretBase_RedCave1_EventScript_1A319D lock faceplayer msgbox SecretBase_RedCave1_Text_1A218F, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3187 + goto_if_eq SecretBase_RedCave1_EventScript_1A3187 setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3187 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3187 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2220, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E @@ -4034,7 +4029,7 @@ SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E SecretBase_RedCave1_EventScript_1A3187:: @ 81A3187 setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2230, 2 end @@ -4044,22 +4039,22 @@ SecretBase_RedCave1_EventScript_1A319D:: @ 81A319D SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A31FA + goto_if 0, SecretBase_RedCave1_EventScript_1A31FA compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3219 + goto_if_eq SecretBase_RedCave1_EventScript_1A3219 lock faceplayer msgbox SecretBase_RedCave1_Text_1A24E1, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3203 + goto_if_eq SecretBase_RedCave1_EventScript_1A3203 setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3203 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3203 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A256F, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA @@ -4069,7 +4064,7 @@ SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA SecretBase_RedCave1_EventScript_1A3203:: @ 81A3203 setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A258A, 2 end @@ -4079,22 +4074,22 @@ SecretBase_RedCave1_EventScript_1A3219:: @ 81A3219 SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3276 + goto_if 0, SecretBase_RedCave1_EventScript_1A3276 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3295 + goto_if_eq SecretBase_RedCave1_EventScript_1A3295 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2830, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A327F + goto_if_eq SecretBase_RedCave1_EventScript_1A327F setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A327F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A327F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A28D7, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276 @@ -4104,7 +4099,7 @@ SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276 SecretBase_RedCave1_EventScript_1A327F:: @ 81A327F setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A28F4, 2 end @@ -4114,22 +4109,22 @@ SecretBase_RedCave1_EventScript_1A3295:: @ 81A3295 SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A32F2 + goto_if 0, SecretBase_RedCave1_EventScript_1A32F2 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3311 + goto_if_eq SecretBase_RedCave1_EventScript_1A3311 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1CB2, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A32FB + goto_if_eq SecretBase_RedCave1_EventScript_1A32FB setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A32FB - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A32FB + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1D48, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2 @@ -4139,7 +4134,7 @@ SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2 SecretBase_RedCave1_EventScript_1A32FB:: @ 81A32FB setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1D59, 2 end @@ -4149,22 +4144,22 @@ SecretBase_RedCave1_EventScript_1A3311:: @ 81A3311 SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A336E + goto_if 0, SecretBase_RedCave1_EventScript_1A336E compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A338D + goto_if_eq SecretBase_RedCave1_EventScript_1A338D lock faceplayer msgbox SecretBase_RedCave1_Text_1A2026, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3377 + goto_if_eq SecretBase_RedCave1_EventScript_1A3377 setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3377 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3377 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2095, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E @@ -4174,7 +4169,7 @@ SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E SecretBase_RedCave1_EventScript_1A3377:: @ 81A3377 setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A20AE, 2 end @@ -4184,22 +4179,22 @@ SecretBase_RedCave1_EventScript_1A338D:: @ 81A338D SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A33EA + goto_if 0, SecretBase_RedCave1_EventScript_1A33EA compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3409 + goto_if_eq SecretBase_RedCave1_EventScript_1A3409 lock faceplayer msgbox SecretBase_RedCave1_Text_1A236A, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A33F3 + goto_if_eq SecretBase_RedCave1_EventScript_1A33F3 setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A33F3 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A33F3 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2405, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA @@ -4209,7 +4204,7 @@ SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA SecretBase_RedCave1_EventScript_1A33F3:: @ 81A33F3 setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2420, 2 end @@ -4219,22 +4214,22 @@ SecretBase_RedCave1_EventScript_1A3409:: @ 81A3409 SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3466 + goto_if 0, SecretBase_RedCave1_EventScript_1A3466 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3485 + goto_if_eq SecretBase_RedCave1_EventScript_1A3485 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2663, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A346F + goto_if_eq SecretBase_RedCave1_EventScript_1A346F setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A346F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A346F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2710, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466 @@ -4244,7 +4239,7 @@ SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466 SecretBase_RedCave1_EventScript_1A346F:: @ 81A346F setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2736, 2 end @@ -4254,22 +4249,22 @@ SecretBase_RedCave1_EventScript_1A3485:: @ 81A3485 SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A34E2 + goto_if 0, SecretBase_RedCave1_EventScript_1A34E2 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3501 + goto_if_eq SecretBase_RedCave1_EventScript_1A3501 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2A13, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A34EB + goto_if_eq SecretBase_RedCave1_EventScript_1A34EB setvar RESULT, 1 special sub_80BCE4C - call SecretBase_RedCave1_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A34EB - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A34EB + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2AE2, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2 @@ -4279,7 +4274,7 @@ SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2 SecretBase_RedCave1_EventScript_1A34EB:: @ 81A34EB setvar RESULT, 0 special sub_80BCE4C - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2AFB, 2 end @@ -4293,7 +4288,7 @@ SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A setvar 0x8005, 0 special sub_813556C waitstate - special HealPlayerParty + special ScrSpecial_HealPlayerParty release end @@ -4379,7 +4374,7 @@ FallarborTown_ContestLobby_EventScript_1ADE46:: @ 81ADE46 SlateportCity_OceanicMuseum_1F_EventScript_1ADE46:: @ 81ADE46 SlateportCity_PokemonFanClub_EventScript_1ADE46:: @ 81ADE46 special sub_80BDE48 - inccounter GAME_STAT_GOT_INTERVIEWED + incrementgamestat GAME_STAT_GOT_INTERVIEWED release end @@ -4387,13 +4382,13 @@ SlateportCity_PokemonFanClub_EventScript_1ADE4D:: @ 81ADE4D setvar 0x8005, 1 special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADED6 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADED6 copyvar 0x8009, 0x8006 msgbox SlateportCity_PokemonFanClub_Text_1A8704, 5 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE84 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE84 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9 end SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84 @@ -4405,9 +4400,9 @@ SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84 lock faceplayer compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEC3 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEC3 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9 end SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9 @@ -4418,7 +4413,7 @@ SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9 SlateportCity_PokemonFanClub_EventScript_1ADEC3:: @ 81ADEC3 msgbox SlateportCity_PokemonFanClub_Text_1A8818, 4 setvar 0x8005, 1 - jump SlateportCity_PokemonFanClub_EventScript_1ADE46 + goto SlateportCity_PokemonFanClub_EventScript_1ADE46 end SlateportCity_PokemonFanClub_EventScript_1ADED6:: @ 81ADED6 @@ -4432,24 +4427,24 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADEE0:: @ 81ADEE0 setvar 0x8005, 2 special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96 copyvar 0x8009, 0x8006 checkflag 105 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25 setflag 105 msgbox SlateportCity_OceanicMuseum_1F_Text_1A927F, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF25:: @ 81ADF25 msgbox SlateportCity_OceanicMuseum_1F_Text_1A934C, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44 @@ -4461,9 +4456,9 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44 lock faceplayer compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79 @@ -4474,7 +4469,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79 SlateportCity_OceanicMuseum_1F_EventScript_1ADF83:: @ 81ADF83 msgbox SlateportCity_OceanicMuseum_1F_Text_1A949A, 4 setvar 0x8005, 2 - jump SlateportCity_OceanicMuseum_1F_EventScript_1ADE46 + goto SlateportCity_OceanicMuseum_1F_EventScript_1ADE46 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96 @@ -4485,19 +4480,19 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96 SlateportCity_PokemonFanClub_EventScript_1ADFA0:: @ 81ADFA0 lock faceplayer - specialval RESULT, sub_80BF544 + specialvar RESULT, sub_80BF544 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE4D + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE4D setvar 0x8005, 3 special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0AC + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0AC copyvar 0x8009, 0x8006 msgbox SlateportCity_PokemonFanClub_Text_1A82F1, 5 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADFE9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADFE9 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 end SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9 @@ -4512,17 +4507,17 @@ SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9 SlateportCity_PokemonFanClub_EventScript_1AE020:: @ 81AE020 msgbox SlateportCity_PokemonFanClub_Text_1A8414, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE02E:: @ 81AE02E msgbox SlateportCity_PokemonFanClub_Text_1A8470, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE03C:: @ 81AE03C msgbox SlateportCity_PokemonFanClub_Text_1A84D5, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A @@ -4533,18 +4528,18 @@ SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A lock faceplayer compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 msgbox SlateportCity_PokemonFanClub_Text_1A852D, 4 setvar 0x8006, 1 call SlateportCity_PokemonFanClub_EventScript_1A00F3 lock faceplayer compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 msgbox SlateportCity_PokemonFanClub_Text_1A85A6, 4 copyvar 0x8007, 0x800a setvar 0x8005, 3 - jump SlateportCity_PokemonFanClub_EventScript_1ADE46 + goto SlateportCity_PokemonFanClub_EventScript_1ADE46 end SlateportCity_PokemonFanClub_EventScript_1AE0A2:: @ 81AE0A2 @@ -4564,17 +4559,17 @@ VerdanturfTown_ContestLobby_EventScript_1AE0B6:: @ 81AE0B6 lock faceplayer checkflag 2 - jumpeq FallarborTown_ContestLobby_EventScript_1AE17E + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E setvar 0x8005, 6 special sub_80BF2C4 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE17E + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E copyvar 0x8009, 0x8006 msgbox FallarborTown_ContestLobby_Text_1A6F7C, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE0F8 + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE0F8 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D end FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8 @@ -4586,9 +4581,9 @@ FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8 lock faceplayer compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE137 + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE137 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D end FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D @@ -4607,11 +4602,11 @@ FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137 lock faceplayer compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D msgbox FallarborTown_ContestLobby_Text_1A7153, 4 setflag 2 setvar 0x8005, 6 - jump FallarborTown_ContestLobby_EventScript_1ADE46 + goto FallarborTown_ContestLobby_EventScript_1ADE46 end FallarborTown_ContestLobby_EventScript_1AE17E:: @ 81AE17E @@ -4624,11 +4619,11 @@ LilycoveCity_ContestLobby_EventScript_1AE188:: @ 81AE188 SlateportCity_ContestLobby_EventScript_1AE188:: @ 81AE188 VerdanturfTown_ContestLobby_EventScript_1AE188:: @ 81AE188 compare 0x4086, 2 - jumpif 5, FallarborTown_ContestLobby_EventScript_1AE1FE + goto_if 5, FallarborTown_ContestLobby_EventScript_1AE1FE setvar 0x8005, 6 special sub_80BF2C4 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE1FE + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE1FE switch 0x4088 case 0, FallarborTown_ContestLobby_EventScript_1AE1FE case 2, FallarborTown_ContestLobby_EventScript_1AE1EE @@ -4661,28 +4656,28 @@ BattleTower_Lobby_EventScript_1AE1FF:: @ 81AE1FF lock faceplayer checkflag 2 - jumpeq BattleTower_Lobby_EventScript_1AE2E3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2E3 setvar 0x8005, 7 special sub_80BF2C4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE2E3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2E3 copyvar 0x8009, 0x8006 msgbox BattleTower_Lobby_Text_1A776D, 5 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE241 + goto_if_eq BattleTower_Lobby_EventScript_1AE241 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE297 + goto_if_eq BattleTower_Lobby_EventScript_1AE297 end BattleTower_Lobby_EventScript_1AE241:: @ 81AE241 message BattleTower_Lobby_Text_1A7823 - waittext + waitmessage multichoice 19, 8, 45, 1 copyvar 0x8008, RESULT compare RESULT, 0 - callif 1, BattleTower_Lobby_EventScript_1AE2A1 + call_if 1, BattleTower_Lobby_EventScript_1AE2A1 compare RESULT, 1 - callif 1, BattleTower_Lobby_EventScript_1AE2AA + call_if 1, BattleTower_Lobby_EventScript_1AE2AA msgbox BattleTower_Lobby_Text_1A79EB, 4 setvar 0x8004, 12 copyvar 0x8005, 0x8009 @@ -4690,9 +4685,9 @@ BattleTower_Lobby_EventScript_1AE241:: @ 81AE241 lock faceplayer compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE2B3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2B3 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE2D9 + goto_if_eq BattleTower_Lobby_EventScript_1AE2D9 end BattleTower_Lobby_EventScript_1AE297:: @ 81AE297 @@ -4710,12 +4705,12 @@ BattleTower_Lobby_EventScript_1AE2AA:: @ 81AE2AA BattleTower_Lobby_EventScript_1AE2B3:: @ 81AE2B3 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE2D9 + goto_if_eq BattleTower_Lobby_EventScript_1AE2D9 msgbox BattleTower_Lobby_Text_1A7A6E, 4 setflag 2 copyvar 0x8004, 0x8008 setvar 0x8005, 7 - jump BattleTower_Lobby_EventScript_1ADE46 + goto BattleTower_Lobby_EventScript_1ADE46 end BattleTower_Lobby_EventScript_1AE2D9:: @ 81AE2D9 @@ -4730,11 +4725,11 @@ BattleTower_Lobby_EventScript_1AE2E3:: @ 81AE2E3 BattleTower_Lobby_EventScript_1AE2ED:: @ 81AE2ED compare 0x40bc, 0 - jumpeq BattleTower_Lobby_EventScript_1AE30F + goto_if_eq BattleTower_Lobby_EventScript_1AE30F setvar 0x8005, 7 special sub_80BF2C4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE30F + goto_if_eq BattleTower_Lobby_EventScript_1AE30F clearflag 918 return @@ -4744,16 +4739,7 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F .include "data/scripts/gabby_and_ty.inc" - .include "data/scripts/bard.inc" - .include "data/scripts/hipster.inc" - .include "data/text/trader.inc" - .include "data/scripts/trader.inc" - .include "data/text/storyteller.inc" - .include "data/scripts/storyteller.inc" - .include "data/text/giddy.inc" - .include "data/scripts/giddy.inc" - .include "data/text/bard.inc" - .include "data/text/hipster.inc" + .include "data/scripts/mauville_man.inc" .include "data/field_move_scripts.inc" .include "data/item_ball_scripts.inc" @@ -4777,13 +4763,13 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F .include "data/text/magma_summit.inc" gUnknown_081B694A:: @ 81B694A - lighten 1 - darken 1 + animdarklevel 1 + setdarklevel 1 end .include "data/scripts/players_house.inc" -Event_RunningShoesManual:: @ 81B6E5A +S_RunningShoesManual:: @ 81B6E5A msgbox UnknownString_81728E3, 3 end @@ -4792,7 +4778,7 @@ Event_RunningShoesManual:: @ 81B6E5A .include "data/text/trainers.inc" -Event_RepelWoreOff:: @ 81C33E6 +S_RepelWoreOff:: @ 81C33E6 msgbox Text_RepelWoreOff, 3 end @@ -4805,25 +4791,25 @@ Text_RepelWoreOff: @ 81C33EF MauvilleCity_GameCorner_EventScript_1C407E:: @ 81C407E checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 0 - event_96 2 + getpricereduction 2 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1C40DA + goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA addvar 0x8004, 128 - jump MauvilleCity_GameCorner_EventScript_1C40DA + goto MauvilleCity_GameCorner_EventScript_1C40DA end MauvilleCity_GameCorner_EventScript_1C40AC:: @ 81C40AC checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 1 - event_96 2 + getpricereduction 2 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1C40DA + goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA addvar 0x8004, 128 - jump MauvilleCity_GameCorner_EventScript_1C40DA + goto MauvilleCity_GameCorner_EventScript_1C40DA end MauvilleCity_GameCorner_EventScript_1C40DA:: @ 81C40DA @@ -4872,7 +4858,7 @@ GraniteCave_B1F_MapScript2_1C6BB5:: @ 81C6BB5 MtPyre_2F_MapScript2_1C6BB5:: @ 81C6BB5 SkyPillar_2F_MapScript2_1C6BB5:: @ 81C6BB5 SkyPillar_4F_MapScript2_1C6BB5:: @ 81C6BB5 - map_script_2 0x4022, 0, GraniteCave_B1F_EventScript_1C6BC5 + map_script_2 0x4022, 0, S_FallDownHole .2byte 0 GraniteCave_B1F_MapScript1_1C6BBF:: @ 81C6BBF @@ -4882,24 +4868,24 @@ SkyPillar_4F_MapScript1_1C6BBF:: @ 81C6BBF copyvar 0x4022, 0x1 end -GraniteCave_B1F_EventScript_1C6BC5:: @ 81C6BC5 +S_FallDownHole:: @ 81C6BC5 lockall - pause 20 - move 255, GraniteCave_B1F_Movement_1C6BF7 - waitmove 0 - playsfx 43 - pause 60 + delay 20 + applymovement 255, GraniteCave_B1F_Movement_1C6BF7 + waitmovement 0 + playse 43 + delay 60 warphole UNDEFINED waitstate end gUnknown_081C6BDE:: @ 81C6BDE lockall - pause 20 - move 255, GraniteCave_B1F_Movement_1C6BF7 - waitmove 0 - playsfx 43 - pause 60 + delay 20 + applymovement 255, GraniteCave_B1F_Movement_1C6BF7 + waitmovement 0 + playse 43 + delay 60 special sp13F_fall_to_last_warp waitstate end @@ -4931,9 +4917,9 @@ gUnknown_081C6C02:: @ 81C6C02 @ 81C6C1D lockall - braillemsg Underwater_SealedChamber_Braille_1C533D + braillemessage Underwater_SealedChamber_Braille_1C533D waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s deleted file mode 100644 index e362b4dba..000000000 --- a/data/evolution_graphics.s +++ /dev/null @@ -1,70 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gEvoSparklePalette: @ 8416E44 - .incbin "graphics/misc/evo_sparkle.gbapal" - - .align 2 -gEvoSparkleTiles: @ 8416E64 - .incbin "graphics/misc/evo_sparkle.4bpp.lz" - -gUnknown_08416E84:: @ 8416E84 - obj_tiles gEvoSparkleTiles, 0x20, 1001 - .space 8 - -gUnknown_08416E94:: @ 8416E94 - obj_pal gEvoSparklePalette, 1001 - .space 8 - - .align 2 -gOamData_8416EA4:: @ 8416EA4 - .2byte 0x00A0 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8416EAC:: @ 8416EAC - obj_image_anim_frame 0, 8 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8416EB4:: @ 8416EB4 - .4byte gSpriteAnim_8416EAC - - .align 2 -gSpriteTemplate_8416EB8:: @ 8416EB8 - spr_template 1001, 1001, gOamData_8416EA4, gSpriteAnimTable_8416EB4, NULL, gDummySpriteAffineAnimTable, nullsub_84 - - .align 1 -gUnknown_08416ED0:: @ 8416ED0 - .2byte 0x3C0 - .2byte 0x380 - .2byte 0x340 - .2byte 0x300 - .2byte 0x2C0 - .2byte 0x280 - .2byte 0x240 - .2byte 0x200 - .2byte 0x1C0 - .2byte 0x180 - .2byte 0x140 - .2byte 0x100 - .2byte 0xFFFC - .2byte 0x10 - .2byte 0xFFFD - .2byte 0x30 - .2byte 0xFFFE - .2byte 0x50 - .2byte 0xFFFF - .2byte 0x70 - .2byte 0x1 - .2byte 0x70 - .2byte 0x2 - .2byte 0x50 - .2byte 0x3 - .2byte 0x30 - .2byte 0x4 - .2byte 0x10 diff --git a/data/evolution_scene.s b/data/evolution_scene.s deleted file mode 100644 index 24744a196..000000000 --- a/data/evolution_scene.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_083F868C:: @ 83F868C - .string "ヌケニン$" - - .string "{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}$" - .string "▶\n $" - .string " \n▶$" - .string " \n $" - - .space 9 diff --git a/data/field_effect_helpers.s b/data/field_effect_helpers.s deleted file mode 100644 index d22bd8dde..000000000 --- a/data/field_effect_helpers.s +++ /dev/null @@ -1,37 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ XXX: Unused? Probably aligned because it's at the beginning of an object file. - .align 2 - .string "タマゴ$" - - .align 1 -gUnknown_08401E2C:: @ 8401E2C - .2byte 0xC, 0x1C, 0x2C - -gUnknown_08401E32:: @ 8401E32 - .byte 0, 1, 2, 3 - - .align 1 -gUnknown_08401E36:: @ 8401E36 - .2byte 4, 4, 4, 16 - - .align 2 -gUnknown_08401E40:: @ 8401E40 - .4byte sub_81275A0 - .4byte sub_81275C4 - - .align 2 -gUnknown_08401E48:: @ 8401E48 - .4byte sub_8127DA0 - .4byte sub_8127DD0 - .4byte sub_8127E30 - -gUnknown_08401E54:: @ 8401E54 - .byte 0, 0, 1, 2, 3 - - .align 1 -gUnknown_08401E5A:: @ 8401E5A - .2byte 3, 7 diff --git a/data/field_ground_effect.s b/data/field_ground_effect.s deleted file mode 100644 index d3dbceedb..000000000 --- a/data/field_ground_effect.s +++ /dev/null @@ -1,72 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_08376040:: @ 8376040 - .4byte MetatileBehavior_IsJumpSouth - .4byte MetatileBehavior_IsJumpNorth - .4byte MetatileBehavior_IsJumpWest - .4byte MetatileBehavior_IsJumpEast - -gUnknown_08376050:: @ 8376050 - .byte 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73 - -@ Each byte corresponds to a sprite priority for a field object. -@ This is directly the inverse of gFieldObjectPriorities_08376070. -gFieldObjectPriorities_08376060:: @ 8376060 - .byte 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2 - -@ Each byte corresponds to a sprite priority for a field object. -@ This is the inverse of gFieldObjectPriorities_08376060. -@ 1 = Above player sprite -@ 2 = Below player sprite -gFieldObjectPriorities_08376070:: @ 8376070 - .byte 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1 - - .align 2 -gUnknown_08376080:: @ 8376080 - .4byte nullsub_50 - .4byte DoTracksGroundEffect_Footprints - .4byte DoTracksGroundEffect_BikeTireTracks - -@ First byte is a Field Effect script id. (gFieldEffectScriptPointers) -@ Last three bytes are unknown. -gSandFootprints_FieldEffectData:: @ 837608C - .byte 0xD, 0x0, 0x18, 0x0 - -@ Specifies which bike track shape to show next. -@ For example, when the bike turns from up to right, it will show -@ a track that curves to the right. -@ Each 4-byte row corresponds to the initial direction of the bike, and -@ each byte in that row is for the next direction of the bike in the order -@ of down, up, left, right. -gBikeTireTracks_Transitions:: @ 8376090 - .byte 1, 2, 7, 8 - .byte 1, 2, 6, 5 - .byte 5, 8, 3, 4 - .byte 6, 7, 3, 4 - - .align 2 -gUnknown_083760A0:: @ 83760A0 - .4byte GroundEffect_SpawnOnTallGrass - .4byte sub_8063E94 - .4byte sub_8063EE0 - .4byte sub_8063F2C - .4byte GroundEffect_WaterReflection - .4byte GroundEffect_IceReflection - .4byte GroundEffect_FlowingWater - .4byte sub_8063FA0 - .4byte sub_8063FCC - .4byte GroundEffect_Ripple - .4byte GroundEffect_StepOnPuddle - .4byte GroundEffect_SandPile - .4byte GroundEffect_JumpOnTallGrass - .4byte GroundEffect_JumpOnLongGrass - .4byte GroundEffect_JumpOnShallowWater - .4byte GroundEffect_JumpOnWater - .4byte GroundEffect_JumpLandingDust - .4byte GroundEffect_ShortGrass - .4byte GroundEffect_HotSprings - .4byte GroundEffect_Seaweed diff --git a/data/field_move_scripts.inc b/data/field_move_scripts.inc index 315217055..c36f95460 100644 --- a/data/field_move_scripts.inc +++ b/data/field_move_scripts.inc @@ -1,34 +1,34 @@ -CuttableTreeScript:: @ 81B0DCC +S_CuttableTree:: @ 81B0DCC lockall checkflag 2055 - jumpif 0, CannotUseCut - checkattack MOVE_CUT + goto_if 0, CannotUseCut + checkpokemove MOVE_CUT compare RESULT, 6 - jumpeq CannotUseCut - setanimation 0, RESULT - bufferpartypoke 0, RESULT - bufferattack 1, MOVE_CUT + goto_if_eq CannotUseCut + setfieldeffect 0, RESULT + getpartypokename 0, RESULT + getmovename 1, MOVE_CUT msgbox UseCutPromptText, 5 compare RESULT, 0 - jumpeq Cut_ChoseNo + goto_if_eq Cut_ChoseNo msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 2 + closemessage + dofieldeffect 2 waitstate - jump DoTreeCutMovement + goto DoTreeCutMovement end -UseCutScript:: @ 81B0E16 +S_UseCut:: @ 81B0E16 lockall - doanimation 2 + dofieldeffect 2 waitstate - jump DoTreeCutMovement + goto DoTreeCutMovement end DoTreeCutMovement: @ 81B0E21 - move LAST_TALKED, TreeCutMovement @ tree cut animation - waitmove 0 - disappear LAST_TALKED @ tree disappears + applymovement LAST_TALKED, TreeCutMovement @ tree cut animation + waitmovement 0 + removeobject LAST_TALKED @ tree disappears releaseall end @@ -42,7 +42,7 @@ CannotUseCut: @ 81B0E32 end Cut_ChoseNo: @ 81B0E3C - closebutton + closemessage releaseall end @@ -56,43 +56,43 @@ UsedCutRockSmashText: @ 81B0E82 CannotUseCutText: @ 81B0E8E .string "This tree looks like it can be CUT down.$" -BreakableRockScript:: @ 81B0EB7 +S_BreakableRock:: @ 81B0EB7 lockall checkflag 2057 - jumpif 0, CannotUseRockSmash - checkattack MOVE_ROCK_SMASH + goto_if 0, CannotUseRockSmash + checkpokemove MOVE_ROCK_SMASH compare RESULT, 6 - jumpeq CannotUseRockSmash - setanimation 0, RESULT - bufferpartypoke 0, RESULT - bufferattack 1, MOVE_ROCK_SMASH + goto_if_eq CannotUseRockSmash + setfieldeffect 0, RESULT + getpartypokename 0, RESULT + getmovename 1, MOVE_ROCK_SMASH msgbox UseRockSmashPromptText, 5 compare RESULT, 0 - jumpeq RockSmash_ChoseNo + goto_if_eq RockSmash_ChoseNo msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 37 + closemessage + dofieldeffect 37 waitstate - jump DoRockSmashMovement + goto DoRockSmashMovement end -UseRockSmashScript:: @ 81B0F01 +S_UseRockSmash:: @ 81B0F01 lockall - doanimation 37 + dofieldeffect 37 waitstate - jump DoRockSmashMovement + goto DoRockSmashMovement end DoRockSmashMovement: @ 81B0F0C - move LAST_TALKED, RockSmashMovement - waitmove 0 - disappear LAST_TALKED - specialval RESULT, sub_810F5BC + applymovement LAST_TALKED, RockSmashMovement + waitmovement 0 + removeobject LAST_TALKED + specialvar RESULT, sub_810F5BC compare RESULT, 1 - jumpeq DoRockSmashMovement_Done - special RockSmashWildEncounter + goto_if_eq DoRockSmashMovement_Done + special ScrSpecial_RockSmashWildEncounter compare RESULT, 0 - jumpeq DoRockSmashMovement_Done + goto_if_eq DoRockSmashMovement_Done waitstate releaseall end @@ -111,7 +111,7 @@ CannotUseRockSmash: @ 81B0F3E end RockSmash_ChoseNo: @ 81B0F48 - closebutton + closemessage releaseall end @@ -123,30 +123,30 @@ CannotUseRockSmashText: @ 81B0F90 .string "It’s a rugged rock, but a POKéMON\n" .string "may be able to smash it.$" -PushableBoulderScript:: @ 81B0FCB +S_PushableBoulder:: @ 81B0FCB lockall checkflag 2058 - jumpif 0, CannotUseStrength + goto_if 0, CannotUseStrength checkflag 2089 - jumpeq AlreadyUsedStrength - checkattack 70 + goto_if_eq AlreadyUsedStrength + checkpokemove 70 compare RESULT, 6 - jumpeq CannotUseStrength - setanimation 0, RESULT + goto_if_eq CannotUseStrength + setfieldeffect 0, RESULT msgbox UseStrengthPromptText, 5 compare RESULT, 0 - jumpeq Strength_ChoseNo - closebutton - doanimation 40 + goto_if_eq Strength_ChoseNo + closemessage + dofieldeffect 40 waitstate - jump UsedStrength + goto UsedStrength end -UseStrengthScript:: @ 81B100E +S_UseStrength:: @ 81B100E lockall - doanimation 40 + dofieldeffect 40 waitstate - jump UsedStrength + goto UsedStrength end UsedStrength: @ 81B1019 @@ -166,7 +166,7 @@ AlreadyUsedStrength: @ 81B1030 end Strength_ChoseNo: @ 81B103A - closebutton + closemessage releaseall end @@ -188,21 +188,21 @@ AlreadyUsedStrengthText: @ 81B1127 .string "STRENGTH made it possible to move\n" .string "boulders around.$" -UseWaterfallScript:: @ 81B115A +S_UseWaterfall:: @ 81B115A lockall - checkattack MOVE_WATERFALL + checkpokemove MOVE_WATERFALL compare RESULT, 6 - jumpeq Waterfall_NoMonKnows - bufferpartypoke 0, RESULT - setanimation 0, RESULT + goto_if_eq Waterfall_NoMonKnows + getpartypokename 0, RESULT + setfieldeffect 0, RESULT msgbox UseWaterfallPromptText, 5 compare RESULT, 0 - jumpeq Waterfall_Done + goto_if_eq Waterfall_Done msgbox UsedWaterfallText, 4 - doanimation 43 - jump Waterfall_Done + dofieldeffect 43 + goto Waterfall_Done -CannotUseWaterfallScript:: @ 81B1194 +S_CannotUseWaterfall:: @ 81B1194 lockall Waterfall_NoMonKnows: @ 81B1195 msgbox CannotUseWaterfallText, 4 @@ -223,18 +223,18 @@ UsedWaterfallText: @ 81B120D UseDiveScript:: @ 81B1220 lockall - checkattack MOVE_DIVE + checkpokemove MOVE_DIVE compare RESULT, 6 - jumpeq CannotUseDive - bufferpartypoke 0, RESULT - setanimation 0, RESULT - setanimation 1, 1 + goto_if_eq CannotUseDive + getpartypokename 0, RESULT + setfieldeffect 0, RESULT + setfieldeffect 1, 1 msgbox UseDivePromptText, 5 compare RESULT, 0 - jumpeq Dive_Done + goto_if_eq Dive_Done msgbox UsedDiveText, 4 - doanimation 44 - jump Dive_Done + dofieldeffect 44 + goto Dive_Done lockall CannotUseDive: @ 81B125F @@ -244,25 +244,25 @@ Dive_Done: @ 81B1267 releaseall end -UnderwaterUseDiveScript:: @ 81B1269 +S_UseDiveUnderwater:: @ 81B1269 lockall - checkattack MOVE_DIVE + checkpokemove MOVE_DIVE compare RESULT, 6 - jumpeq UnderwaterCannotUseDive - bufferpartypoke 0, RESULT - setanimation 0, RESULT - setanimation 1, 1 + goto_if_eq UnderwaterCannotUseDive + getpartypokename 0, RESULT + setfieldeffect 0, RESULT + setfieldeffect 1, 1 msgbox UnderwaterUseDivePromptText, 5 compare RESULT, 0 - jumpeq UnderwaterDive_Done + goto_if_eq UnderwaterDive_Done msgbox UsedDiveText, 4 - doanimation 44 - jump UnderwaterDive_Done + dofieldeffect 44 + goto UnderwaterDive_Done UnderwaterCannotUseDive: @ 81B12A7 lockall msgbox UnderwaterCannotUseDiveText, 4 - jump UnderwaterDive_Done + goto UnderwaterDive_Done @ not used SurfacingBlocked: @ 81B12B5 diff --git a/data/hall_of_fame.s b/data/hall_of_fame.s deleted file mode 100644 index 0795e7389..000000000 --- a/data/hall_of_fame.s +++ /dev/null @@ -1,230 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_0840B514:: @ 840B514 - obj_tiles gContestConfetti_Gfx, 0x220, 1001 - .space 8 - -gUnknown_0840B524:: @ 840B524 - obj_pal gContestConfetti_Pal, 1001 - .space 8 - - .align 2 -gUnknown_0840B534:: @ 840B534 - .2byte 120,210,120, 40 - .2byte 326,220, 56, 40 - .2byte -86,220,184, 40 - .2byte 120,-62,120, 88 - .2byte -25,-62,200, 88 - .2byte 265,-62, 40, 88 - - .align 2 -gUnknown_0840B564:: @ 840B564 - .2byte 120,214,120, 64 - .2byte 281,214, 56, 64 - .2byte -41,214,184, 64 - - .align 2 -gUnknown_0840B57C:: @ 840B57C - .2byte 1002 - .2byte 1002 - .space 0x10 - -@ unused data? - .byte 2, 1, 3, 6, 4, 5 - - .align 2 -gOamData_840B598:: @ 840B598 - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x0000 - - .align 2 -gUnknown_0840B5A0:: @ 840B5A0 - .4byte 0x02008000 - .4byte 0x0200A000 - .4byte 0x0200C000 - .4byte 0x0200E000 - .4byte 0x02010000 - .4byte 0x02014000 - .4byte 0x02018000 - - .align 2 -gSpriteImageTable_840B5BC:: @ 840B5BC - obj_frame_tiles 0x02008000, 0x800 - obj_frame_tiles 0x02008800, 0x800 - obj_frame_tiles 0x02009000, 0x800 - obj_frame_tiles 0x02009800, 0x800 - - .align 2 -gSpriteImageTable_840B5DC:: @ 840B5DC - obj_frame_tiles 0x0200A000, 0x800 - obj_frame_tiles 0x0200A800, 0x800 - obj_frame_tiles 0x0200B000, 0x800 - obj_frame_tiles 0x0200B800, 0x800 - - .align 2 -gSpriteImageTable_840B5FC:: @ 840B5FC - obj_frame_tiles 0x0200C000, 0x800 - obj_frame_tiles 0x0200C800, 0x800 - obj_frame_tiles 0x0200D000, 0x800 - obj_frame_tiles 0x0200D800, 0x800 - - .align 2 -gSpriteImageTable_840B61C:: @ 840B61C - obj_frame_tiles 0x0200E000, 0x800 - obj_frame_tiles 0x0200E800, 0x800 - obj_frame_tiles 0x0200F000, 0x800 - obj_frame_tiles 0x0200F800, 0x800 - - .align 2 -gSpriteImageTable_840B63C:: @ 840B63C - obj_frame_tiles 0x02010000, 0x800 - obj_frame_tiles 0x02010800, 0x800 - obj_frame_tiles 0x02011000, 0x800 - obj_frame_tiles 0x02011800, 0x800 - - .align 2 -gSpriteImageTable_840B65C:: @ 840B65C - obj_frame_tiles 0x02014000, 0x800 - obj_frame_tiles 0x02014800, 0x800 - obj_frame_tiles 0x02015000, 0x800 - obj_frame_tiles 0x02015800, 0x800 - - .align 2 -gSpriteImageTable_840B67C:: @ 840B67C - obj_frame_tiles 0x02018000, 0x800 - obj_frame_tiles 0x02018800, 0x800 - obj_frame_tiles 0x02019000, 0x800 - obj_frame_tiles 0x02019800, 0x800 - - .align 2 -gUnknown_0840B69C:: @ 840B69C - .4byte gSpriteImageTable_840B5BC - .4byte gSpriteImageTable_840B5DC - .4byte gSpriteImageTable_840B5FC - .4byte gSpriteImageTable_840B61C - .4byte gSpriteImageTable_840B63C - .4byte gSpriteImageTable_840B65C - .4byte gSpriteImageTable_840B67C - -gUnknown_0840B6B8:: @ 840B6B8 - spr_template -1, -1, gOamData_840B598, NULL, gSpriteImageTable_840B5BC, gDummySpriteAffineAnimTable, nullsub_81 - - .align 2 -gOamData_840B6D0:: @ 840B6D0 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_840B6D8:: @ 840B6D8 - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B6E0:: @ 840B6E0 - obj_image_anim_frame 1, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B6E8:: @ 840B6E8 - obj_image_anim_frame 2, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B6F0:: @ 840B6F0 - obj_image_anim_frame 3, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B6F8:: @ 840B6F8 - obj_image_anim_frame 4, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B700:: @ 840B700 - obj_image_anim_frame 5, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B708:: @ 840B708 - obj_image_anim_frame 6, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B710:: @ 840B710 - obj_image_anim_frame 7, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B718:: @ 840B718 - obj_image_anim_frame 8, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B720:: @ 840B720 - obj_image_anim_frame 9, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B728:: @ 840B728 - obj_image_anim_frame 10, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B730:: @ 840B730 - obj_image_anim_frame 11, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B738:: @ 840B738 - obj_image_anim_frame 12, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B740:: @ 840B740 - obj_image_anim_frame 13, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B748:: @ 840B748 - obj_image_anim_frame 14, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B750:: @ 840B750 - obj_image_anim_frame 15, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B758:: @ 840B758 - obj_image_anim_frame 16, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_840B760:: @ 840B760 - .4byte gSpriteAnim_840B6D8 - .4byte gSpriteAnim_840B6E0 - .4byte gSpriteAnim_840B6E8 - .4byte gSpriteAnim_840B6F0 - .4byte gSpriteAnim_840B6F8 - .4byte gSpriteAnim_840B700 - .4byte gSpriteAnim_840B708 - .4byte gSpriteAnim_840B710 - .4byte gSpriteAnim_840B718 - .4byte gSpriteAnim_840B720 - .4byte gSpriteAnim_840B728 - .4byte gSpriteAnim_840B730 - .4byte gSpriteAnim_840B738 - .4byte gSpriteAnim_840B740 - .4byte gSpriteAnim_840B748 - .4byte gSpriteAnim_840B750 - .4byte gSpriteAnim_840B758 - - .align 2 -gSpriteTemplate_840B7A4:: @ 840B7A4 - spr_template 1001, 1001, gOamData_840B6D0, gSpriteAnimTable_840B760, NULL, gDummySpriteAffineAnimTable, sub_814386C diff --git a/data/ingame_trades.inc b/data/ingame_trades.inc deleted file mode 100644 index f5258e26c..000000000 --- a/data/ingame_trades.inc +++ /dev/null @@ -1,108 +0,0 @@ - .align 2 -gIngameTrades:: @ 8215AC4 - .string "MAKIT$", 11 @ nickname - .space 1 - .2byte SPECIES_MAKUHITA @ NPC mon species - .byte 5 @ HP IV - .byte 5 @ attack IV - .byte 4 @ defense IV - .byte 4 @ speed IV - .byte 4 @ sp. attack IV - .byte 4 @ sp. defense IV - .byte TRUE @ second ability - .space 3 - .4byte 49562 @ OT ID - .byte 5 @ cool - .byte 5 @ beauty - .byte 5 @ cute - .byte 5 @ smart - .byte 30 @ tough - .space 3 - .4byte 0x9C40 @ personality value - .2byte ITEM_X_ATTACK @ held item - .byte -1 @ mail num - .string "ELYSSA$", 11 @ OT name - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_SLAKOTH @ player mon species - .space 2 - - .string "SKITIT$", 11 @ nickname - .space 1 - .2byte SPECIES_SKITTY @ NPC mon species - .byte 5 @ HP IV - .byte 4 @ attack IV - .byte 4 @ defense IV - .byte 5 @ speed IV - .byte 4 @ sp. attack IV - .byte 4 @ sp. defense IV - .byte FALSE @ second ability - .space 3 - .4byte 2259 @ OT ID - .byte 5 @ cool - .byte 5 @ beauty - .byte 30 @ cute - .byte 5 @ smart - .byte 5 @ tough - .space 3 - .4byte 0x498A2E17 @ personality value - .2byte ITEM_GLITTER_MAIL @ held item - .byte 0 @ mail num - .string "DARRELL$", 11 @ OT name - .byte FEMALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_PIKACHU @ player mon species - .space 2 - - .string "COROSO$", 11 @ nickname - .space 1 - .2byte SPECIES_CORSOLA @ NPC mon species - .byte 4 @ HP IV - .byte 4 @ attack IV - .byte 5 @ defense IV - .byte 4 @ speed IV - .byte 4 @ sp. attack IV - .byte 5 @ sp. defense IV - .byte TRUE @ second ability - .space 3 - .4byte 50183 @ OT ID - .byte 5 @ cool - .byte 30 @ beauty - .byte 5 @ cute - .byte 5 @ smart - .byte 5 @ tough - .space 3 - .4byte 0x4C970B7F @ personality value - .2byte ITEM_TROPIC_MAIL @ held item - .byte 1 @ mail num - .string "LANE$", 11 @ OT name - .byte FEMALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_BELLOSSOM @ player mon species - .space 2 - - .align 1 -gIngameTradeMail:: @ 8215B78 -@ 0 - ec_pokemon1 PIKACHU - ec_word THANK_YOU - ec_word EXCL - ec_word MY - ec_pokemon1 SKITTY - ec_word EATS - ec_word A_LOT - ec_word NOW - ec_word EXCL - .2byte 0 - -@ 1 - ec_word I - ec_word WANT - ec_word TO - ec_word SEE - ec_word A - ec_move2 PETAL_DANCE - ec_word IT_S - ec_word SO - ec_word PRETTY - .2byte 0 diff --git a/data/intro_credits_graphics.s b/data/intro_credits_graphics.s index 82931f6ee..8c096e1cd 100644 --- a/data/intro_credits_graphics.s +++ b/data/intro_credits_graphics.s @@ -338,11 +338,11 @@ gSpriteAnimTable_8416D28:: @ 8416D28 .4byte gSpriteAnim_8416D14 .align 2 -gSpriteTemplate_8416D2C:: @ 8416D2C +gSpriteTemplate_Brendan:: @ 8416D2C spr_template 1001, 1002, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0 .align 2 -gSpriteTemplate_8416D44:: @ 8416D44 +gSpriteTemplate_May:: @ 8416D44 spr_template 1001, 1003, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0 .align 2 diff --git a/data/learn_move.s b/data/learn_move.s deleted file mode 100644 index 369fbfdf0..000000000 --- a/data/learn_move.s +++ /dev/null @@ -1,150 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gDexArrows_Pal:: - .incbin "graphics/pokedex/arrows.gbapal" - - .align 2 -gDexArrows_Gfx:: - .incbin "graphics/pokedex/arrows.4bpp" - -gUnknown_08402CF8:: @ 8402CF8 - .byte 0, 0, 9, 13 - .byte 10, 0, 29, 7 - .byte 2, 14, 27, 19 - .byte 10, 8, 29, 13 - -gUnknown_08402D08:: @ 8402D08 - .4byte OtherText_Battle - .byte 1, 1, 0, 0 - .4byte OtherText_Power - .byte 1, 4, 1, 0 - .4byte OtherText_Accuracy - .byte 1, 9, 2, 0 - .space 8 - - .4byte OtherText_Contest - .byte 1, 1, 0, 0 - .4byte OtherText_Appeal - .byte 1, 4, 1, 0 - .4byte OtherText_Jam - .byte 1, 9, 2, 0 - .space 8 - - .4byte 0xFF00FFEF - .4byte gTileBuffer - - .align 2 -gOamData_8402D50:: @ 8402D50 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gOamData_8402D58:: @ 8402D58 - .2byte 0x8000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gOamData_8402D60:: @ 8402D60 - .2byte 0x4000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8402D68:: @ 8402D68 - obj_image_anim_frame 2, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402D70:: @ 8402D70 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402D78:: @ 8402D78 - .4byte gSpriteAnim_8402D68 - .4byte gSpriteAnim_8402D70 - - .align 2 -gUnknown_08402D80:: @ 8402D80 - obj_tiles gDexArrows_Gfx, 384, 0x1595 - - .align 2 -gUnknown_08402D88:: @ 8402D88 - obj_pal gDexArrows_Pal, 0x1596 - - .align 2 -gSpriteTemplate_8402D90:: @ 8402D90 - spr_template 5525, 5526, gOamData_8402D58, gSpriteAnimTable_8402D78, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .align 2 -gSpriteAnim_8402DA8:: @ 8402DA8 - obj_image_anim_frame 4, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DB0:: @ 8402DB0 - obj_image_anim_frame 6, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402DB8:: @ 8402DB8 - .4byte gSpriteAnim_8402DA8 - .4byte gSpriteAnim_8402DB0 - - .align 2 -gSpriteTemplate_8402DC0:: @ 8402DC0 - spr_template 5525, 5526, gOamData_8402D60, gSpriteAnimTable_8402DB8, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .align 2 -gSpriteAnim_8402DD8:: @ 8402DD8 - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DE0:: @ 8402DE0 - obj_image_anim_frame 9, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DE8:: @ 8402DE8 - obj_image_anim_frame 10, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DF0:: @ 8402DF0 - obj_image_anim_frame 11, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402DF8:: @ 8402DF8 - .4byte gSpriteAnim_8402DD8 - .4byte gSpriteAnim_8402DE0 - .4byte gSpriteAnim_8402DE8 - .4byte gSpriteAnim_8402DF0 - - .align 2 -gSpriteTemplate_8402E08:: @ 8402E08 - spr_template 5525, 5526, gOamData_8402D50, gSpriteAnimTable_8402DF8, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .string "あきと$" @ programmer Akito Mori? - -gUnknown_08402E24:: @ 8402E24 - .byte 11, 1, 1 - .byte 3, 6, 2 - .byte 24, 1, 3 - .byte 3, 11, 4 - .byte 5, 4, 5 - .byte 3, 6, 6 - .byte 3, 11, 7 - -gUnknown_08402E39:: @ 8402E39 - .byte 0, 1, 2, 3 - -gUnknown_08402E3D:: @ 8402E3D - .byte 4, 5, 6 diff --git a/data/maps/events/FieryPath.inc b/data/maps/events/FieryPath.inc index 01b7b3efe..a4ac688d8 100644 --- a/data/maps/events/FieryPath.inc +++ b/data/maps/events/FieryPath.inc @@ -1,11 +1,11 @@ FieryPath_MapObjects:: @ 838C718 object_event 1, MAP_OBJ_GFX_ITEM_BALL, 0, 8, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, FieryPath_EventScript_1B17EE, 1091, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 10, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 17, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 23, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 10, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 17, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 23, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 32, 0, 3, 1, 17, 0, 0, 0, 0, 0, FieryPath_EventScript_1B17E1, 1111, 0, 0 FieryPath_MapWarps:: @ 838C7D8 diff --git a/data/maps/events/GraniteCave_B2F.inc b/data/maps/events/GraniteCave_B2F.inc index 49c0bace0..158577482 100644 --- a/data/maps/events/GraniteCave_B2F.inc +++ b/data/maps/events/GraniteCave_B2F.inc @@ -1,13 +1,13 @@ GraniteCave_B2F_MapObjects:: @ 838BFEC object_event 1, MAP_OBJ_GFX_ITEM_BALL, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, GraniteCave_B2F_EventScript_1B17BA, 1053, 0, 0 object_event 2, MAP_OBJ_GFX_ITEM_BALL, 0, 29, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, GraniteCave_B2F_EventScript_1B17C7, 1054, 0, 0 - object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 - object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 - object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 16, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 - object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0 - object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 6, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0 - object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 23, 0, 0 + object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 + object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 + object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 16, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 + object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0 + object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 6, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0 + object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 23, 0, 0 GraniteCave_B2F_MapWarps:: @ 838C0C4 warp_def 29, 13, 3, 2, GraniteCave_B1F diff --git a/data/maps/events/PetalburgWoods.inc b/data/maps/events/PetalburgWoods.inc index 0ec69c1a2..cb0ff7ca1 100644 --- a/data/maps/events/PetalburgWoods.inc +++ b/data/maps/events/PetalburgWoods.inc @@ -1,6 +1,6 @@ PetalburgWoods_MapObjects:: @ 838C14C - object_event 1, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 + object_event 1, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 object_event 3, 241, 0, 26, 0, 17, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 725, 0, 0 object_event 4, MAP_OBJ_GFX_MAN_2, 0, 26, 0, 20, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0x0, 724, 0, 0 object_event 5, MAP_OBJ_GFX_ITEM_BALL, 0, 45, 0, 7, 0, 3, 8, 0, 0, 0, 0, 0, 0, PetalburgWoods_EventScript_1B175F, 1056, 0, 0 diff --git a/data/maps/events/Route102.inc b/data/maps/events/Route102.inc index 9cf97de4b..7ffa0e191 100644 --- a/data/maps/events/Route102.inc +++ b/data/maps/events/Route102.inc @@ -5,8 +5,8 @@ Route102_MapObjects:: @ 83811FC object_event 4, MAP_OBJ_GFX_LASS, 0, 8, 0, 7, 0, 3, 18, 0, 0, 1, 0, 3, 0, Route102_EventScript_14EB53, 0, 0, 0 object_event 5, MAP_OBJ_GFX_BOY_1, 0, 37, 0, 4, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route102_EventScript_14EAF5, 0, 0, 0 object_event 6, MAP_OBJ_GFX_ITEM_BALL, 0, 11, 0, 15, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route102_EventScript_1B1439, 1000, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 2, 0, 3, 12, 0, 0, 0, 0, 2, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 2, 0, 3, 12, 0, 0, 0, 0, 1, 0, BerryTreeScript, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 2, 0, 3, 12, 0, 0, 0, 0, 2, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 2, 0, 3, 12, 0, 0, 0, 0, 1, 0, S_BerryTree, 0, 0, 0 object_event 9, MAP_OBJ_GFX_YOUNGSTER, 0, 19, 0, 4, 0, 3, 8, 17, 0, 1, 0, 3, 0, Route102_EventScript_14EB6A, 0, 0, 0 Route102_MapBGEvents:: @ 83812D4 diff --git a/data/maps/events/Route103.inc b/data/maps/events/Route103.inc index 01640eb65..462fe1a3b 100644 --- a/data/maps/events/Route103.inc +++ b/data/maps/events/Route103.inc @@ -5,15 +5,15 @@ Route103_MapObjects:: @ 8381300 object_event 4, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 65, 0, 11, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route103_EventScript_14EDF1, 0, 0, 0 object_event 5, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 64, 0, 11, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route103_EventScript_14EDAB, 0, 0, 0 object_event 6, MAP_OBJ_GFX_FISHERMAN, 0, 50, 0, 8, 0, 3, 26, 16, 0, 1, 0, 3, 0, Route103_EventScript_14EE37, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 58, 0, 5, 0, 3, 12, 0, 0, 0, 0, 5, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 59, 0, 5, 0, 3, 12, 0, 0, 0, 0, 6, 0, BerryTreeScript, 0, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 60, 0, 5, 0, 3, 12, 0, 0, 0, 0, 7, 0, BerryTreeScript, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 58, 0, 5, 0, 3, 12, 0, 0, 0, 0, 5, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 59, 0, 5, 0, 3, 12, 0, 0, 0, 0, 6, 0, S_BerryTree, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 60, 0, 5, 0, 3, 12, 0, 0, 0, 0, 7, 0, S_BerryTree, 0, 0, 0 object_event 10, MAP_OBJ_GFX_BOY_1, 0, 20, 0, 10, 0, 3, 2, 33, 0, 0, 0, 0, 0, Route103_EventScript_14ED79, 0, 0, 0 object_event 11, MAP_OBJ_GFX_PROF_BIRCH, 0, 7, 0, 3, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route103_EventScript_1A037F, 898, 0, 0 object_event 12, MAP_OBJ_GFX_MAN_3, 0, 56, 0, 12, 0, 3, 10, 0, 0, 1, 0, 5, 0, Route103_EventScript_14EE4E, 0, 0, 0 object_event 13, MAP_OBJ_GFX_ITEM_BALL, 0, 63, 0, 8, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route103_EventScript_1B1446, 1114, 0, 0 - object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 67, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 - object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 69, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 67, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 + object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 69, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 Route103_MapBGEvents:: @ 8381468 bg_event 11, 9, 0, 0, 0, Route103_EventScript_14ED8B diff --git a/data/maps/events/Route104.inc b/data/maps/events/Route104.inc index da4b5ffc1..b4c8a2834 100644 --- a/data/maps/events/Route104.inc +++ b/data/maps/events/Route104.inc @@ -8,17 +8,17 @@ Route104_MapObjects:: @ 8381488 object_event 7, MAP_OBJ_GFX_MR_BRINEYS_BOAT, 0, 12, 0, 54, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0x0, 742, 0, 0 object_event 8, MAP_OBJ_GFX_OLD_MAN_1, 0, 12, 0, 51, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0x0, 738, 0, 0 object_event 9, MAP_OBJ_GFX_FISHERMAN, 0, 29, 0, 8, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route104_EventScript_14F172, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 6, 0, 3, 12, 0, 0, 0, 0, 8, 0, BerryTreeScript, 0, 0, 0 - object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 6, 0, 3, 12, 0, 0, 0, 0, 9, 0, BerryTreeScript, 0, 0, 0 - object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 6, 0, 3, 12, 0, 0, 0, 0, 10, 0, BerryTreeScript, 0, 0, 0 - object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 41, 0, 3, 12, 0, 0, 0, 0, 11, 0, BerryTreeScript, 0, 0, 0 - object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 41, 0, 3, 12, 0, 0, 0, 0, 12, 0, BerryTreeScript, 0, 0, 0 - object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 41, 0, 3, 12, 0, 0, 0, 0, 13, 0, BerryTreeScript, 0, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 6, 0, 3, 12, 0, 0, 0, 0, 8, 0, S_BerryTree, 0, 0, 0 + object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 6, 0, 3, 12, 0, 0, 0, 0, 9, 0, S_BerryTree, 0, 0, 0 + object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 6, 0, 3, 12, 0, 0, 0, 0, 10, 0, S_BerryTree, 0, 0, 0 + object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 41, 0, 3, 12, 0, 0, 0, 0, 11, 0, S_BerryTree, 0, 0, 0 + object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 41, 0, 3, 12, 0, 0, 0, 0, 12, 0, S_BerryTree, 0, 0, 0 + object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 41, 0, 3, 12, 0, 0, 0, 0, 13, 0, S_BerryTree, 0, 0, 0 object_event 16, MAP_OBJ_GFX_OLD_WOMAN_1, 0, 37, 0, 8, 0, 3, 9, 17, 0, 0, 0, 0, 0, Route104_EventScript_14EEC8, 0, 0, 0 - object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 22, 0, 3, 12, 0, 0, 0, 0, 3, 0, BerryTreeScript, 0, 0, 0 - object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 23, 0, 3, 12, 0, 0, 0, 0, 4, 0, BerryTreeScript, 0, 0, 0 - object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 24, 0, 3, 12, 0, 0, 0, 0, 75, 0, BerryTreeScript, 0, 0, 0 - object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 25, 0, 3, 12, 0, 0, 0, 0, 76, 0, BerryTreeScript, 0, 0, 0 + object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 22, 0, 3, 12, 0, 0, 0, 0, 3, 0, S_BerryTree, 0, 0, 0 + object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 23, 0, 3, 12, 0, 0, 0, 0, 4, 0, S_BerryTree, 0, 0, 0 + object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 24, 0, 3, 12, 0, 0, 0, 0, 75, 0, S_BerryTree, 0, 0, 0 + object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 25, 0, 3, 12, 0, 0, 0, 0, 76, 0, S_BerryTree, 0, 0, 0 object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 39, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route104_EventScript_1B1453, 1002, 0, 0 object_event 22, MAP_OBJ_GFX_WOMAN_7, 0, 8, 0, 19, 0, 3, 5, 1, 0, 0, 0, 0, 0, Route104_EventScript_14EF09, 906, 0, 0 object_event 23, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 27, 0, 15, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route104_EventScript_14F25A, 0, 0, 0 @@ -28,7 +28,7 @@ Route104_MapObjects:: @ 8381488 object_event 27, MAP_OBJ_GFX_ITEM_BALL, 0, 29, 0, 53, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B1460, 1057, 0, 0 object_event 28, MAP_OBJ_GFX_YOUNGSTER, 0, 18, 0, 67, 0, 3, 46, 101, 0, 1, 0, 2, 0, Route104_EventScript_14F189, 0, 0, 0 object_event 29, MAP_OBJ_GFX_ITEM_BALL, 0, 37, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B146D, 1115, 0, 0 - object_event 30, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 + object_event 30, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 object_event 31, MAP_OBJ_GFX_ITEM_BALL, 0, 5, 0, 8, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B147A, 1135, 0, 0 object_event 32, MAP_OBJ_GFX_BOY_2, 0, 5, 0, 26, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_14EF93, 0, 0, 0 diff --git a/data/maps/events/Route110.inc b/data/maps/events/Route110.inc index 4ece25549..3db4ce8e8 100644 --- a/data/maps/events/Route110.inc +++ b/data/maps/events/Route110.inc @@ -14,9 +14,9 @@ Route110_MapObjects:: @ 8381D58 object_event 13, MAP_OBJ_GFX_LASS, 0, 33, 0, 15, 0, 3, 9, 0, 0, 1, 0, 1, 0, Route110_EventScript_14FAA5, 0, 0, 0 object_event 14, MAP_OBJ_GFX_MANIAC, 0, 23, 0, 40, 0, 3, 20, 0, 0, 1, 0, 3, 0, Route110_EventScript_14FABC, 0, 0, 0 object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 10, 0, 19, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_EventScript_14FAFA, 0, 0, 0 - object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 11, 0, 3, 12, 0, 0, 0, 0, 16, 0, BerryTreeScript, 0, 0, 0 - object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 11, 0, 3, 12, 0, 0, 0, 0, 17, 0, BerryTreeScript, 0, 0, 0 - object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 11, 0, 3, 12, 0, 0, 0, 0, 18, 0, BerryTreeScript, 0, 0, 0 + object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 11, 0, 3, 12, 0, 0, 0, 0, 16, 0, S_BerryTree, 0, 0, 0 + object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 11, 0, 3, 12, 0, 0, 0, 0, 17, 0, S_BerryTree, 0, 0, 0 + object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 11, 0, 3, 12, 0, 0, 0, 0, 18, 0, S_BerryTree, 0, 0, 0 object_event 19, MAP_OBJ_GFX_ITEM_BALL, 0, 30, 0, 69, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_EventScript_1B14BB, 1007, 0, 0 object_event 20, MAP_OBJ_GFX_ITEM_BALL, 0, 26, 0, 47, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_EventScript_1B14AE, 1006, 0, 0 object_event 21, MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 0, 27, 0, 92, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route110_EventScript_14FA53, 0, 0, 0 diff --git a/data/maps/events/Route110_TrickHousePuzzle1.inc b/data/maps/events/Route110_TrickHousePuzzle1.inc index 7e282f0e8..3660e3c3f 100644 --- a/data/maps/events/Route110_TrickHousePuzzle1.inc +++ b/data/maps/events/Route110_TrickHousePuzzle1.inc @@ -2,22 +2,22 @@ Route110_TrickHousePuzzle1_MapObjects:: @ 839225C object_event 1, MAP_OBJ_GFX_LASS, 0, 13, 0, 21, 0, 3, 9, 0, 0, 1, 0, 5, 0, Route110_TrickHousePuzzle1_EventScript_161D31, 0, 0, 0 object_event 2, MAP_OBJ_GFX_YOUNGSTER, 0, 13, 0, 7, 0, 3, 8, 0, 0, 1, 0, 2, 0, Route110_TrickHousePuzzle1_EventScript_161D48, 0, 0, 0 object_event 3, MAP_OBJ_GFX_LASS, 0, 3, 0, 8, 0, 3, 9, 0, 0, 1, 0, 3, 0, Route110_TrickHousePuzzle1_EventScript_161D5F, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 - object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 7, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 6, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 - object_event 7, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 10, 0, 16, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0 - object_event 8, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 23, 0, 0 - object_event 9, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 22, 0, 0 - object_event 10, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 21, 0, 0 - object_event 11, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 25, 0, 0 - object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 24, 0, 0 - object_event 13, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 9, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 26, 0, 0 - object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 28, 0, 0 - object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 27, 0, 0 - object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 29, 0, 0 - object_event 17, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 11, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 30, 0, 0 + object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 + object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 7, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 6, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 + object_event 7, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 10, 0, 16, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0 + object_event 8, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 23, 0, 0 + object_event 9, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 22, 0, 0 + object_event 10, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 21, 0, 0 + object_event 11, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 25, 0, 0 + object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 24, 0, 0 + object_event 13, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 9, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 26, 0, 0 + object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 28, 0, 0 + object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 27, 0, 0 + object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 29, 0, 0 + object_event 17, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 11, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 30, 0, 0 object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 9, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle1_EventScript_1B1A51, 1060, 0, 0 - object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 14, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 31, 0, 0 + object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 14, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 31, 0, 0 Route110_TrickHousePuzzle1_MapWarps:: @ 8392424 warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance diff --git a/data/maps/events/Route110_TrickHousePuzzle3.inc b/data/maps/events/Route110_TrickHousePuzzle3.inc index b7a902a54..abccae1d4 100644 --- a/data/maps/events/Route110_TrickHousePuzzle3.inc +++ b/data/maps/events/Route110_TrickHousePuzzle3.inc @@ -2,14 +2,14 @@ Route110_TrickHousePuzzle3_MapObjects:: @ 839254C object_event 1, MAP_OBJ_GFX_CAMPER, 0, 10, 0, 16, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_162708, 0, 0, 0 object_event 2, MAP_OBJ_GFX_PICNICKER, 0, 1, 0, 13, 0, 3, 10, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_16271F, 0, 0, 0 object_event 3, MAP_OBJ_GFX_HIKER, 0, 11, 0, 4, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_162736, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 - object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 - object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 - object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0 + object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 + object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 + object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 + object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0 object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 0, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle3_EventScript_1B1A85, 1064, 0, 0 object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle3_EventScript_1B1A78, 1063, 0, 0 - object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 20, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 - object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0 + object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 20, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 + object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0 Route110_TrickHousePuzzle3_MapWarps:: @ 8392654 warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance diff --git a/data/maps/events/Route110_TrickHousePuzzle4.inc b/data/maps/events/Route110_TrickHousePuzzle4.inc index ac3e152a2..ef450800d 100644 --- a/data/maps/events/Route110_TrickHousePuzzle4.inc +++ b/data/maps/events/Route110_TrickHousePuzzle4.inc @@ -3,17 +3,17 @@ Route110_TrickHousePuzzle4_MapObjects:: @ 83926FC object_event 2, MAP_OBJ_GFX_GIRL_3, 0, 10, 0, 4, 0, 3, 10, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle4_EventScript_162799, 0, 0, 0 object_event 3, MAP_OBJ_GFX_BLACK_BELT, 0, 7, 0, 4, 0, 3, 9, 0, 0, 1, 0, 2, 0, Route110_TrickHousePuzzle4_EventScript_162782, 0, 0, 0 object_event 4, MAP_OBJ_GFX_ITEM_BALL, 0, 4, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle4_EventScript_1B1A92, 1065, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 13, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 2, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 - object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0 - object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0 - object_event 14, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 26, 0, 0 - object_event 15, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 27, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 13, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 2, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 + object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0 + object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0 + object_event 14, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 26, 0, 0 + object_event 15, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 27, 0, 0 Route110_TrickHousePuzzle4_MapWarps:: @ 8392864 warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance diff --git a/data/maps/events/Route111.inc b/data/maps/events/Route111.inc index 9eeed5ede..e36cd7e74 100644 --- a/data/maps/events/Route111.inc +++ b/data/maps/events/Route111.inc @@ -4,8 +4,8 @@ Route111_MapObjects:: @ 83821A0 object_event 3, MAP_OBJ_GFX_LASS, 0, 13, 0, 113, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0x0, 770, 0, 0 object_event 4, MAP_OBJ_GFX_OLD_WOMAN_1, 0, 13, 0, 113, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0x0, 771, 0, 0 object_event 5, MAP_OBJ_GFX_PICNICKER, 0, 28, 0, 51, 0, 3, 17, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503BE, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 5, 0, 3, 12, 0, 0, 0, 0, 19, 0, BerryTreeScript, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 5, 0, 3, 12, 0, 0, 0, 0, 20, 0, BerryTreeScript, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 5, 0, 3, 12, 0, 0, 0, 0, 19, 0, S_BerryTree, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 5, 0, 3, 12, 0, 0, 0, 0, 20, 0, S_BerryTree, 0, 0, 0 object_event 8, MAP_OBJ_GFX_MAN_4, 0, 8, 0, 91, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route111_EventScript_150395, 0, 0, 0 object_event 9, MAP_OBJ_GFX_CAMPER, 0, 24, 0, 60, 0, 3, 21, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503A7, 0, 0, 0 object_event 10, MAP_OBJ_GFX_HIKER, 0, 27, 0, 69, 0, 3, 50, 34, 0, 1, 0, 2, 0, Route111_EventScript_150403, 0, 0, 0 @@ -13,19 +13,19 @@ Route111_MapObjects:: @ 83821A0 object_event 12, MAP_OBJ_GFX_PICNICKER, 0, 32, 0, 72, 0, 3, 24, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503EC, 0, 0, 0 object_event 13, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE442, 796, 0, 0 object_event 14, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE422, 796, 0, 0 - object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 101, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 - object_event 16, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 100, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 + object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 101, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 + object_event 16, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 100, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 object_event 17, MAP_OBJ_GFX_GIRL_1, 0, 23, 0, 8, 0, 3, 5, 1, 0, 0, 0, 0, 0, Route111_EventScript_1500C5, 0, 0, 0 object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 32, 0, 105, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14C8, 1008, 0, 0 - object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 80, 0, BerryTreeScript, 0, 0, 0 - object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 5, 0, 3, 12, 0, 0, 0, 0, 81, 0, BerryTreeScript, 0, 0, 0 + object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 80, 0, S_BerryTree, 0, 0, 0 + object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 5, 0, 3, 12, 0, 0, 0, 0, 81, 0, S_BerryTree, 0, 0, 0 object_event 21, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE4E2, 799, 0, 0 object_event 22, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE502, 799, 0, 0 object_event 23, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE562, 903, 0, 0 object_event 24, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE582, 903, 0, 0 object_event 25, MAP_OBJ_GFX_ITEM_BALL, 0, 12, 0, 54, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14D5, 1009, 0, 0 object_event 26, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 114, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14E2, 1010, 0, 0 - object_event 27, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 22, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 27, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 22, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 object_event 28, MAP_OBJ_GFX_PICNICKER, 0, 10, 0, 82, 0, 3, 14, 0, 0, 1, 0, 2, 0, Route111_EventScript_150458, 0, 0, 0 object_event 29, MAP_OBJ_GFX_CAMPER, 0, 11, 0, 71, 0, 3, 22, 0, 0, 1, 0, 3, 0, Route111_EventScript_150441, 0, 0, 0 object_event 30, MAP_OBJ_GFX_BLACK_BELT, 0, 32, 0, 29, 0, 3, 28, 1, 0, 1, 0, 2, 0, Route111_EventScript_15046F, 0, 0, 0 diff --git a/data/maps/events/Route112.inc b/data/maps/events/Route112.inc index f6dfcfbe5..a4991a907 100644 --- a/data/maps/events/Route112.inc +++ b/data/maps/events/Route112.inc @@ -5,10 +5,10 @@ Route112_MapObjects:: @ 8382818 object_event 4, MAP_OBJ_GFX_PICNICKER, 0, 22, 0, 46, 0, 3, 23, 0, 0, 1, 0, 3, 0, Route112_EventScript_1505B5, 0, 0, 0 object_event 5, MAP_OBJ_GFX_HIKER, 0, 17, 0, 40, 0, 3, 16, 0, 0, 1, 0, 4, 0, Route112_EventScript_150560, 0, 0, 0 object_event 6, 241, 0, 27, 0, 30, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route112_EventScript_15051C, 819, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 27, 0, 6, 0, 0, 12, 0, 0, 0, 0, 24, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 28, 0, 6, 0, 0, 12, 0, 0, 0, 0, 23, 0, BerryTreeScript, 0, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 6, 0, 0, 12, 0, 0, 0, 0, 22, 0, BerryTreeScript, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 6, 0, 3, 12, 0, 0, 0, 0, 21, 0, BerryTreeScript, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 27, 0, 6, 0, 0, 12, 0, 0, 0, 0, 24, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 28, 0, 6, 0, 0, 12, 0, 0, 0, 0, 23, 0, S_BerryTree, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 6, 0, 0, 12, 0, 0, 0, 0, 22, 0, S_BerryTree, 0, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 6, 0, 3, 12, 0, 0, 0, 0, 21, 0, S_BerryTree, 0, 0, 0 object_event 11, MAP_OBJ_GFX_HIKER, 0, 8, 0, 50, 0, 3, 26, 48, 0, 0, 0, 0, 0, Route112_EventScript_150540, 0, 0, 0 object_event 12, MAP_OBJ_GFX_ITEM_BALL, 0, 14, 0, 43, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route112_EventScript_1B14EF, 1011, 0, 0 diff --git a/data/maps/events/Route114.inc b/data/maps/events/Route114.inc index a2d948d33..1f4d761e3 100644 --- a/data/maps/events/Route114.inc +++ b/data/maps/events/Route114.inc @@ -1,25 +1,25 @@ Route114_MapObjects:: @ 8382C48 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 43, 0, 3, 12, 0, 0, 0, 0, 77, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 44, 0, 3, 12, 0, 0, 0, 0, 78, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 43, 0, 3, 12, 0, 0, 0, 0, 77, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 44, 0, 3, 12, 0, 0, 0, 0, 78, 0, S_BerryTree, 0, 0, 0 object_event 3, MAP_OBJ_GFX_HIKER, 0, 15, 0, 65, 0, 7, 10, 0, 0, 1, 0, 6, 0, Route114_EventScript_1507F1, 0, 0, 0 object_event 4, MAP_OBJ_GFX_HIKER, 0, 30, 0, 72, 0, 5, 15, 0, 0, 1, 0, 4, 0, Route114_EventScript_150808, 0, 0, 0 object_event 5, MAP_OBJ_GFX_CAMPER, 0, 22, 0, 50, 0, 3, 10, 0, 0, 1, 0, 3, 0, Route114_EventScript_15081F, 0, 0, 0 object_event 6, MAP_OBJ_GFX_PICNICKER, 0, 19, 0, 35, 0, 3, 1, 0, 0, 1, 0, 3, 0, Route114_EventScript_150836, 0, 0, 0 object_event 7, MAP_OBJ_GFX_MANIAC, 0, 20, 0, 56, 0, 3, 7, 0, 0, 1, 0, 3, 0, Route114_EventScript_15084D, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 45, 0, 3, 12, 0, 0, 0, 0, 68, 0, BerryTreeScript, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 45, 0, 3, 12, 0, 0, 0, 0, 68, 0, S_BerryTree, 0, 0, 0 object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route114_EventScript_1B1516, 1014, 0, 0 object_event 10, MAP_OBJ_GFX_ITEM_BALL, 0, 11, 0, 37, 0, 4, 1, 0, 0, 0, 0, 0, 0, Route114_EventScript_1B1523, 1015, 0, 0 - object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 12, 0, 43, 0, 4, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 + object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 12, 0, 43, 0, 4, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 object_event 12, MAP_OBJ_GFX_GENTLEMAN, 0, 19, 0, 11, 0, 3, 10, 0, 0, 0, 0, 0, 0, Route114_EventScript_150782, 0, 0, 0 object_event 13, MAP_OBJ_GFX_POOCHYENA, 0, 19, 0, 12, 0, 3, 10, 0, 0, 0, 0, 0, 0, Route114_EventScript_1507C3, 0, 0, 0 object_event 14, MAP_OBJ_GFX_MAN_5, 0, 27, 0, 42, 0, 3, 3, 16, 0, 0, 0, 0, 0, Route114_EventScript_150733, 0, 0, 0 object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 23, 0, 20, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route114_EventScript_1508E0, 0, 0, 0 object_event 16, MAP_OBJ_GFX_FISHERMAN, 0, 19, 0, 26, 0, 3, 9, 0, 0, 1, 0, 0, 0, Route114_EventScript_1508C9, 0, 0, 0 object_event 17, MAP_OBJ_GFX_MAN_6, 0, 30, 0, 58, 0, 5, 23, 0, 0, 1, 0, 3, 0, Route114_EventScript_15088B, 0, 0, 0 - object_event 18, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 53, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 - object_event 19, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 30, 0, 54, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 - object_event 20, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 22, 0, 69, 0, 7, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0 - object_event 21, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 64, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 + object_event 18, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 53, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 + object_event 19, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 30, 0, 54, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 + object_event 20, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 22, 0, 69, 0, 7, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0 + object_event 21, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 64, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 object_event 22, MAP_OBJ_GFX_LASS, 0, 24, 0, 44, 0, 3, 8, 17, 0, 1, 0, 0, 0, Route114_EventScript_150912, 0, 0, 0 object_event 23, MAP_OBJ_GFX_LASS, 0, 23, 0, 44, 0, 3, 8, 17, 0, 1, 0, 0, 0, Route114_EventScript_1508F7, 0, 0, 0 diff --git a/data/maps/events/Route115.inc b/data/maps/events/Route115.inc index cba3c3e7d..ddca08fad 100644 --- a/data/maps/events/Route115.inc +++ b/data/maps/events/Route115.inc @@ -2,18 +2,18 @@ Route115_MapObjects:: @ 8382F2C object_event 1, MAP_OBJ_GFX_WOMAN_3, 0, 18, 0, 68, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route115_EventScript_15092E, 0, 0, 0 object_event 2, MAP_OBJ_GFX_OLD_MAN_1, 0, 5, 0, 15, 0, 3, 10, 0, 0, 1, 0, 6, 0, Route115_EventScript_150949, 0, 0, 0 object_event 3, MAP_OBJ_GFX_BLACK_BELT, 0, 27, 0, 53, 0, 3, 15, 17, 0, 1, 0, 4, 0, Route115_EventScript_15099E, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 69, 0, BerryTreeScript, 0, 0, 0 - object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 70, 0, BerryTreeScript, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 13, 0, 5, 0, 3, 12, 0, 0, 0, 0, 71, 0, BerryTreeScript, 0, 0, 0 + object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 69, 0, S_BerryTree, 0, 0, 0 + object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 70, 0, S_BerryTree, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 13, 0, 5, 0, 3, 12, 0, 0, 0, 0, 71, 0, S_BerryTree, 0, 0, 0 object_event 7, MAP_OBJ_GFX_GIRL_3, 0, 15, 0, 50, 0, 3, 64, 0, 0, 1, 0, 3, 0, Route115_EventScript_1509DC, 0, 0, 0 object_event 8, MAP_OBJ_GFX_BLACK_BELT, 0, 17, 0, 17, 0, 3, 50, 51, 0, 1, 0, 2, 0, Route115_EventScript_150987, 0, 0, 0 object_event 9, MAP_OBJ_GFX_MANIAC, 0, 25, 0, 61, 0, 3, 14, 0, 0, 1, 0, 3, 0, Route115_EventScript_150A1A, 0, 0, 0 object_event 10, MAP_OBJ_GFX_ITEM_BALL, 0, 20, 0, 60, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B1530, 1016, 0, 0 object_event 11, MAP_OBJ_GFX_ITEM_BALL, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B153D, 1017, 0, 0 object_event 12, MAP_OBJ_GFX_ITEM_BALL, 0, 23, 0, 29, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B154A, 1018, 0, 0 - object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 64, 0, 3, 12, 0, 0, 0, 0, 55, 0, BerryTreeScript, 0, 0, 0 - object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 65, 0, 3, 12, 0, 0, 0, 0, 56, 0, BerryTreeScript, 0, 0, 0 - object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 50, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 + object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 64, 0, 3, 12, 0, 0, 0, 0, 55, 0, S_BerryTree, 0, 0, 0 + object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 65, 0, 3, 12, 0, 0, 0, 0, 56, 0, S_BerryTree, 0, 0, 0 + object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 50, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 object_event 16, MAP_OBJ_GFX_ITEM_BALL, 0, 31, 0, 56, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route115_EventScript_1B1557, 1118, 0, 0 Route115_MapWarps:: @ 83830AC diff --git a/data/maps/events/Route116.inc b/data/maps/events/Route116.inc index 18717be4e..b5f922524 100644 --- a/data/maps/events/Route116.inc +++ b/data/maps/events/Route116.inc @@ -1,18 +1,18 @@ Route116_MapObjects:: @ 8383170 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 2, 0, 3, 12, 0, 0, 0, 0, 25, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 2, 0, 3, 12, 0, 0, 0, 0, 26, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 2, 0, 3, 12, 0, 0, 0, 0, 25, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 2, 0, 3, 12, 0, 0, 0, 0, 26, 0, S_BerryTree, 0, 0, 0 object_event 3, MAP_OBJ_GFX_YOUNGSTER, 0, 12, 0, 7, 0, 3, 16, 0, 0, 1, 0, 3, 0, Route116_EventScript_150C62, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 21, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 33, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 + object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 21, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 33, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 object_event 6, MAP_OBJ_GFX_BUG_CATCHER, 0, 13, 0, 17, 0, 3, 24, 0, 0, 1, 0, 2, 0, Route116_EventScript_150C79, 0, 0, 0 object_event 7, MAP_OBJ_GFX_ITEM_BALL, 0, 19, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B1571, 1019, 0, 0 object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 10, 0, 17, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B157E, 1020, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 20, 0, 2, 0, 3, 12, 0, 0, 0, 0, 66, 0, BerryTreeScript, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 21, 0, 2, 0, 3, 12, 0, 0, 0, 0, 67, 0, BerryTreeScript, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 20, 0, 2, 0, 3, 12, 0, 0, 0, 0, 66, 0, S_BerryTree, 0, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 21, 0, 2, 0, 3, 12, 0, 0, 0, 0, 67, 0, S_BerryTree, 0, 0, 0 object_event 11, MAP_OBJ_GFX_OLD_MAN_1, 0, 46, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_150B5D, 891, 0, 0 - object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 30, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 30, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 object_event 13, MAP_OBJ_GFX_HIKER, 0, 36, 0, 15, 0, 3, 13, 0, 0, 1, 0, 2, 0, Route116_EventScript_150CCE, 0, 0, 0 - object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 24, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0 + object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 24, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0 object_event 15, MAP_OBJ_GFX_ITEM_BALL, 0, 80, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B158B, 1021, 0, 0 object_event 16, MAP_OBJ_GFX_LASS, 0, 22, 0, 16, 0, 3, 13, 0, 0, 1, 0, 3, 0, Route116_EventScript_150CE5, 0, 0, 0 object_event 17, MAP_OBJ_GFX_GIRL_3, 0, 25, 0, 4, 0, 3, 8, 0, 0, 1, 0, 2, 0, Route116_EventScript_150CFC, 0, 0, 0 diff --git a/data/maps/events/Route117.inc b/data/maps/events/Route117.inc index b53e3de57..bf6aeb5d0 100644 --- a/data/maps/events/Route117.inc +++ b/data/maps/events/Route117.inc @@ -9,11 +9,11 @@ Route117_MapObjects:: @ 8383440 object_event 8, MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, 0, 35, 0, 7, 0, 3, 28, 7, 0, 1, 0, 4, 0, Route117_EventScript_150E09, 0, 0, 0 object_event 9, MAP_OBJ_GFX_WOMAN_3, 0, 31, 0, 11, 0, 3, 23, 0, 0, 1, 0, 3, 0, Route117_EventScript_150DCB, 0, 0, 0 object_event 10, MAP_OBJ_GFX_MAN_5, 0, 10, 0, 9, 0, 3, 18, 0, 0, 1, 0, 3, 0, Route117_EventScript_150D8D, 0, 0, 0 - object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 41, 0, 13, 0, 3, 12, 0, 0, 0, 0, 29, 0, BerryTreeScript, 0, 0, 0 - object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 42, 0, 13, 0, 3, 12, 0, 0, 0, 0, 28, 0, BerryTreeScript, 0, 0, 0 - object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 43, 0, 13, 0, 3, 12, 0, 0, 0, 0, 27, 0, BerryTreeScript, 0, 0, 0 + object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 41, 0, 13, 0, 3, 12, 0, 0, 0, 0, 29, 0, S_BerryTree, 0, 0, 0 + object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 42, 0, 13, 0, 3, 12, 0, 0, 0, 0, 28, 0, S_BerryTree, 0, 0, 0 + object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 43, 0, 13, 0, 3, 12, 0, 0, 0, 0, 27, 0, S_BerryTree, 0, 0, 0 object_event 14, MAP_OBJ_GFX_ITEM_BALL, 0, 16, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route117_EventScript_1B1598, 1022, 0, 0 - object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 + object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 object_event 16, MAP_OBJ_GFX_ITEM_BALL, 0, 9, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route117_EventScript_1B15A5, 1023, 0, 0 object_event 17, MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, 0, 21, 0, 1, 0, 3, 40, 68, 0, 1, 0, 3, 0, Route117_EventScript_150E47, 0, 0, 0 object_event 18, MAP_OBJ_GFX_MANIAC, 0, 17, 0, 12, 0, 3, 7, 17, 0, 1, 0, 4, 0, Route117_EventScript_150E85, 0, 0, 0 diff --git a/data/maps/events/Route118.inc b/data/maps/events/Route118.inc index f912b6fbd..df887ba1e 100644 --- a/data/maps/events/Route118.inc +++ b/data/maps/events/Route118.inc @@ -1,7 +1,7 @@ Route118_MapObjects:: @ 8383684 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 5, 0, 3, 12, 0, 0, 0, 0, 31, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 5, 0, 3, 12, 0, 0, 0, 0, 32, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 37, 0, 5, 0, 3, 12, 0, 0, 0, 0, 33, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 5, 0, 3, 12, 0, 0, 0, 0, 31, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 5, 0, 3, 12, 0, 0, 0, 0, 32, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 37, 0, 5, 0, 3, 12, 0, 0, 0, 0, 33, 0, S_BerryTree, 0, 0, 0 object_event 4, MAP_OBJ_GFX_MAN_6, 0, 64, 0, 10, 0, 3, 8, 0, 0, 1, 0, 3, 0, Route118_EventScript_151139, 0, 0, 0 object_event 5, MAP_OBJ_GFX_REPORTER_F, 0, 33, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE462, 797, 0, 0 object_event 6, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE482, 797, 0, 0 @@ -10,7 +10,7 @@ Route118_MapObjects:: @ 8383684 object_event 9, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE542, 901, 0, 0 object_event 10, MAP_OBJ_GFX_REPORTER_F, 0, 33, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE562, 904, 0, 0 object_event 11, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE582, 904, 0, 0 - object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 38, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 + object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 38, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 object_event 13, MAP_OBJ_GFX_FISHERMAN, 0, 28, 0, 8, 0, 3, 9, 0, 0, 0, 0, 0, 0, Route118_EventScript_150F34, 0, 0, 0 object_event 14, MAP_OBJ_GFX_WOMAN_3, 0, 7, 0, 10, 0, 3, 24, 0, 0, 1, 0, 4, 0, Route118_EventScript_15108F, 0, 0, 0 object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 14, 0, 14, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route118_EventScript_1510E4, 0, 0, 0 diff --git a/data/maps/events/Route119.inc b/data/maps/events/Route119.inc index 966ae6058..08e6e3649 100644 --- a/data/maps/events/Route119.inc +++ b/data/maps/events/Route119.inc @@ -1,7 +1,7 @@ Route119_MapObjects:: @ 8383914 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 5, 0, 3, 12, 0, 0, 0, 0, 34, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 5, 0, 3, 12, 0, 0, 0, 0, 35, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 26, 0, 5, 0, 3, 12, 0, 0, 0, 0, 36, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 5, 0, 3, 12, 0, 0, 0, 0, 34, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 5, 0, 3, 12, 0, 0, 0, 0, 35, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 26, 0, 5, 0, 3, 12, 0, 0, 0, 0, 36, 0, S_BerryTree, 0, 0, 0 object_event 4, MAP_OBJ_GFX_BUG_CATCHER, 0, 12, 0, 123, 0, 3, 59, 0, 0, 1, 0, 1, 0, Route119_EventScript_151491, 0, 0, 0 object_event 5, MAP_OBJ_GFX_MANIAC, 0, 26, 0, 123, 0, 3, 60, 0, 0, 1, 0, 1, 0, Route119_EventScript_151463, 0, 0, 0 object_event 6, MAP_OBJ_GFX_MANIAC, 0, 5, 0, 125, 0, 3, 62, 0, 0, 1, 0, 1, 0, Route119_EventScript_15144C, 0, 0, 0 @@ -25,10 +25,10 @@ Route119_MapObjects:: @ 8383914 object_event 24, 241, 0, 13, 0, 34, 0, 4, 10, 0, 0, 0, 0, 0, 0, Route119_EventScript_1515DC, 890, 0, 0 object_event 25, 243, 0, 17, 0, 33, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0x0, 923, 0, 0 object_event 26, MAP_OBJ_GFX_BOY_3, 0, 31, 0, 109, 0, 3, 8, 17, 0, 0, 0, 0, 0, Route119_EventScript_1515F3, 0, 0, 0 - object_event 27, MAP_OBJ_GFX_BERRY_TREE, 0, 8, 0, 23, 0, 3, 12, 0, 0, 0, 0, 83, 0, BerryTreeScript, 0, 0, 0 - object_event 28, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 23, 0, 3, 12, 0, 0, 0, 0, 84, 0, BerryTreeScript, 0, 0, 0 - object_event 29, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 90, 0, 3, 12, 0, 0, 0, 0, 85, 0, BerryTreeScript, 0, 0, 0 - object_event 30, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 90, 0, 3, 12, 0, 0, 0, 0, 86, 0, BerryTreeScript, 0, 0, 0 + object_event 27, MAP_OBJ_GFX_BERRY_TREE, 0, 8, 0, 23, 0, 3, 12, 0, 0, 0, 0, 83, 0, S_BerryTree, 0, 0, 0 + object_event 28, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 23, 0, 3, 12, 0, 0, 0, 0, 84, 0, S_BerryTree, 0, 0, 0 + object_event 29, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 90, 0, 3, 12, 0, 0, 0, 0, 85, 0, S_BerryTree, 0, 0, 0 + object_event 30, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 90, 0, 3, 12, 0, 0, 0, 0, 86, 0, S_BerryTree, 0, 0, 0 object_event 31, MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 0, 19, 0, 133, 0, 3, 5, 18, 0, 0, 0, 0, 0, Route119_EventScript_15141A, 0, 0, 0 object_event 32, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 56, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route119_EventScript_1B160D, 1106, 0, 0 object_event 33, MAP_OBJ_GFX_BOY_2, 0, 35, 0, 93, 0, 4, 2, 17, 0, 0, 0, 0, 0, Route119_EventScript_1515FC, 0, 0, 0 diff --git a/data/maps/events/Route120.inc b/data/maps/events/Route120.inc index 43a67ee99..81fa21c7f 100644 --- a/data/maps/events/Route120.inc +++ b/data/maps/events/Route120.inc @@ -1,14 +1,14 @@ Route120_MapObjects:: @ 8383F30 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 4, 0, 79, 0, 3, 12, 0, 0, 0, 0, 46, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 79, 0, 3, 12, 0, 0, 0, 0, 45, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 79, 0, 3, 12, 0, 0, 0, 0, 44, 0, BerryTreeScript, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 79, 0, 3, 12, 0, 0, 0, 0, 43, 0, BerryTreeScript, 0, 0, 0 - object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 24, 0, 3, 12, 0, 0, 0, 0, 37, 0, BerryTreeScript, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 24, 0, 3, 12, 0, 0, 0, 0, 38, 0, BerryTreeScript, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 24, 0, 3, 12, 0, 0, 0, 0, 39, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 92, 0, 5, 12, 0, 0, 0, 0, 40, 0, BerryTreeScript, 0, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 10, 0, 92, 0, 5, 12, 0, 0, 0, 0, 41, 0, BerryTreeScript, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 92, 0, 5, 12, 0, 0, 0, 0, 42, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 4, 0, 79, 0, 3, 12, 0, 0, 0, 0, 46, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 79, 0, 3, 12, 0, 0, 0, 0, 45, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 79, 0, 3, 12, 0, 0, 0, 0, 44, 0, S_BerryTree, 0, 0, 0 + object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 79, 0, 3, 12, 0, 0, 0, 0, 43, 0, S_BerryTree, 0, 0, 0 + object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 24, 0, 3, 12, 0, 0, 0, 0, 37, 0, S_BerryTree, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 24, 0, 3, 12, 0, 0, 0, 0, 38, 0, S_BerryTree, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 24, 0, 3, 12, 0, 0, 0, 0, 39, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 92, 0, 5, 12, 0, 0, 0, 0, 40, 0, S_BerryTree, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 10, 0, 92, 0, 5, 12, 0, 0, 0, 0, 41, 0, S_BerryTree, 0, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 92, 0, 5, 12, 0, 0, 0, 0, 42, 0, S_BerryTree, 0, 0, 0 object_event 11, MAP_OBJ_GFX_MAN_6, 0, 5, 0, 22, 0, 3, 14, 0, 0, 1, 0, 3, 0, Route120_EventScript_1519B3, 0, 0, 0 object_event 12, MAP_OBJ_GFX_MAN_6, 0, 32, 0, 14, 0, 3, 10, 0, 0, 1, 0, 3, 0, Route120_EventScript_1519CA, 0, 0, 0 object_event 13, MAP_OBJ_GFX_CAMPER, 0, 27, 0, 51, 0, 3, 9, 0, 0, 1, 0, 7, 0, Route120_EventScript_151A08, 0, 0, 0 @@ -19,7 +19,7 @@ Route120_MapObjects:: @ 8383F30 object_event 18, MAP_OBJ_GFX_REPORTER_F, 0, 36, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE4A2, 798, 0, 0 object_event 19, MAP_OBJ_GFX_REPORTER_F, 0, 36, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE562, 902, 0, 0 object_event 20, MAP_OBJ_GFX_CAMERAMAN, 0, 37, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE582, 902, 0, 0 - object_event 21, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 + object_event 21, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 object_event 22, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 89, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route120_EventScript_1B1627, 1031, 0, 0 object_event 23, MAP_OBJ_GFX_BEAUTY, 0, 14, 0, 92, 0, 5, 5, 1, 0, 0, 0, 0, 0, Route120_EventScript_151739, 0, 0, 0 object_event 24, MAP_OBJ_GFX_WOMAN_7, 0, 28, 0, 35, 0, 3, 15, 0, 0, 1, 0, 4, 0, Route120_EventScript_151A74, 0, 0, 0 @@ -30,8 +30,8 @@ Route120_MapObjects:: @ 8383F30 object_event 29, MAP_OBJ_GFX_ITEM_BALL, 0, 23, 0, 82, 0, 5, 1, 17, 0, 0, 0, 0, 0, Route120_EventScript_1B1634, 1107, 0, 0 object_event 30, MAP_OBJ_GFX_KECLEON_1, 0, 12, 0, 16, 0, 4, 76, 17, 0, 0, 0, 0, 0, Route120_EventScript_151998, 970, 0, 0 object_event 31, MAP_OBJ_GFX_STEVEN, 0, 13, 0, 15, 0, 4, 8, 17, 0, 0, 0, 0, 0, Route120_EventScript_151853, 972, 0, 0 - object_event 32, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 20, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0 - object_event 33, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 + object_event 32, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 20, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0 + object_event 33, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 object_event 34, MAP_OBJ_GFX_LITTLE_BOY_1, 0, 10, 0, 72, 0, 3, 58, 17, 0, 1, 0, 3, 0, Route120_EventScript_151AD0, 0, 0, 0 object_event 35, MAP_OBJ_GFX_LITTLE_BOY_1, 0, 19, 0, 28, 0, 3, 57, 17, 0, 1, 0, 3, 0, Route120_EventScript_151AE7, 0, 0, 0 object_event 36, MAP_OBJ_GFX_KECLEON_2, 0, 12, 0, 16, 0, 3, 8, 17, 0, 0, 0, 0, 0, 0x0, 981, 0, 0 diff --git a/data/maps/events/Route121.inc b/data/maps/events/Route121.inc index 514f51349..9961344a8 100644 --- a/data/maps/events/Route121.inc +++ b/data/maps/events/Route121.inc @@ -1,26 +1,26 @@ Route121_MapObjects:: @ 8384504 object_event 1, MAP_OBJ_GFX_WOMAN_4, 0, 29, 0, 14, 0, 3, 10, 17, 0, 0, 0, 0, 0, Route121_EventScript_151B0A, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 2, 0, 3, 12, 0, 0, 0, 0, 47, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 2, 0, 3, 12, 0, 0, 0, 0, 48, 0, BerryTreeScript, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 16, 0, 2, 0, 3, 12, 0, 0, 0, 0, 49, 0, BerryTreeScript, 0, 0, 0 - object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 2, 0, 3, 12, 0, 0, 0, 0, 50, 0, BerryTreeScript, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 64, 0, 14, 0, 3, 12, 0, 0, 0, 0, 51, 0, BerryTreeScript, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 65, 0, 14, 0, 3, 12, 0, 0, 0, 0, 52, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 66, 0, 14, 0, 3, 12, 0, 0, 0, 0, 53, 0, BerryTreeScript, 0, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 67, 0, 14, 0, 3, 12, 0, 0, 0, 0, 54, 0, BerryTreeScript, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 2, 0, 3, 12, 0, 0, 0, 0, 47, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 2, 0, 3, 12, 0, 0, 0, 0, 48, 0, S_BerryTree, 0, 0, 0 + object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 16, 0, 2, 0, 3, 12, 0, 0, 0, 0, 49, 0, S_BerryTree, 0, 0, 0 + object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 2, 0, 3, 12, 0, 0, 0, 0, 50, 0, S_BerryTree, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 64, 0, 14, 0, 3, 12, 0, 0, 0, 0, 51, 0, S_BerryTree, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 65, 0, 14, 0, 3, 12, 0, 0, 0, 0, 52, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 66, 0, 14, 0, 3, 12, 0, 0, 0, 0, 53, 0, S_BerryTree, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 67, 0, 14, 0, 3, 12, 0, 0, 0, 0, 54, 0, S_BerryTree, 0, 0, 0 object_event 10, MAP_OBJ_GFX_LASS, 0, 39, 0, 9, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route121_EventScript_151BDE, 0, 0, 0 object_event 11, MAP_OBJ_GFX_LASS, 0, 40, 0, 9, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route121_EventScript_151BF9, 0, 0, 0 object_event 12, 241, 0, 30, 0, 8, 0, 3, 7, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0 object_event 13, 241, 0, 30, 0, 7, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0 object_event 14, 241, 0, 31, 0, 7, 0, 3, 9, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0 - object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 32, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 65, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 + object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 32, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 65, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 object_event 17, MAP_OBJ_GFX_WOMAN_2, 0, 63, 0, 5, 0, 3, 9, 0, 0, 1, 0, 4, 0, Route121_EventScript_151B72, 0, 0, 0 object_event 18, MAP_OBJ_GFX_GENTLEMAN, 0, 55, 0, 8, 0, 3, 17, 0, 0, 1, 0, 3, 0, Route121_EventScript_151B89, 0, 0, 0 object_event 19, MAP_OBJ_GFX_HEX_MANIAC, 0, 11, 0, 10, 0, 3, 15, 0, 0, 1, 0, 4, 0, Route121_EventScript_151BC7, 0, 0, 0 object_event 20, MAP_OBJ_GFX_BEAUTY, 0, 22, 0, 5, 0, 3, 17, 0, 0, 1, 0, 4, 0, Route121_EventScript_151C14, 0, 0, 0 object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 55, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route121_EventScript_1B164E, 1103, 0, 0 - object_event 22, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 26, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 22, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 26, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 Route121_MapWarps:: @ 8384714 warp_def 37, 5, 0, 2, Route121_SafariZoneEntrance diff --git a/data/maps/events/Route123.inc b/data/maps/events/Route123.inc index 6b97bafe5..dc5ac0fb4 100644 --- a/data/maps/events/Route123.inc +++ b/data/maps/events/Route123.inc @@ -1,30 +1,30 @@ Route123_MapObjects:: @ 83847F8 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 3, 0, 3, 12, 0, 0, 0, 0, 58, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 3, 0, 3, 12, 0, 0, 0, 0, 59, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 3, 0, 3, 12, 0, 0, 0, 0, 60, 0, BerryTreeScript, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 3, 0, 3, 12, 0, 0, 0, 0, 61, 0, BerryTreeScript, 0, 0, 0 - object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 81, 0, 1, 0, 3, 12, 0, 0, 0, 0, 62, 0, BerryTreeScript, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 82, 0, 1, 0, 3, 12, 0, 0, 0, 0, 63, 0, BerryTreeScript, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 83, 0, 1, 0, 3, 12, 0, 0, 0, 0, 64, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 3, 0, 3, 12, 0, 0, 0, 0, 58, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 3, 0, 3, 12, 0, 0, 0, 0, 59, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 3, 0, 3, 12, 0, 0, 0, 0, 60, 0, S_BerryTree, 0, 0, 0 + object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 3, 0, 3, 12, 0, 0, 0, 0, 61, 0, S_BerryTree, 0, 0, 0 + object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 81, 0, 1, 0, 3, 12, 0, 0, 0, 0, 62, 0, S_BerryTree, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 82, 0, 1, 0, 3, 12, 0, 0, 0, 0, 63, 0, S_BerryTree, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 83, 0, 1, 0, 3, 12, 0, 0, 0, 0, 64, 0, S_BerryTree, 0, 0, 0 object_event 8, MAP_OBJ_GFX_WOMAN_7, 0, 70, 0, 12, 0, 3, 24, 0, 0, 1, 0, 1, 0, Route123_EventScript_151CD1, 0, 0, 0 object_event 9, MAP_OBJ_GFX_MAN_4, 0, 58, 0, 7, 0, 3, 17, 0, 0, 1, 0, 2, 0, Route123_EventScript_151CE8, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 5, 0, 3, 12, 0, 0, 0, 0, 65, 0, BerryTreeScript, 0, 0, 0 - object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 5, 0, 3, 12, 0, 0, 0, 0, 72, 0, BerryTreeScript, 0, 0, 0 - object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 5, 0, 3, 12, 0, 0, 0, 0, 73, 0, BerryTreeScript, 0, 0, 0 - object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 74, 0, BerryTreeScript, 0, 0, 0 - object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 3, 0, 3, 12, 0, 0, 0, 0, 79, 0, BerryTreeScript, 0, 0, 0 - object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 3, 0, 3, 12, 0, 0, 0, 0, 14, 0, BerryTreeScript, 0, 0, 0 - object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 15, 0, BerryTreeScript, 0, 0, 0 - object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 30, 0, BerryTreeScript, 0, 0, 0 - object_event 18, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 101, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 129, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 - object_event 20, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 92, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 5, 0, 3, 12, 0, 0, 0, 0, 65, 0, S_BerryTree, 0, 0, 0 + object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 5, 0, 3, 12, 0, 0, 0, 0, 72, 0, S_BerryTree, 0, 0, 0 + object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 5, 0, 3, 12, 0, 0, 0, 0, 73, 0, S_BerryTree, 0, 0, 0 + object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 74, 0, S_BerryTree, 0, 0, 0 + object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 3, 0, 3, 12, 0, 0, 0, 0, 79, 0, S_BerryTree, 0, 0, 0 + object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 3, 0, 3, 12, 0, 0, 0, 0, 14, 0, S_BerryTree, 0, 0, 0 + object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 15, 0, S_BerryTree, 0, 0, 0 + object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 30, 0, S_BerryTree, 0, 0, 0 + object_event 18, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 101, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 129, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 + object_event 20, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 92, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 31, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route123_EventScript_1B165B, 1032, 0, 0 object_event 22, MAP_OBJ_GFX_ITEM_BALL, 0, 139, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route123_EventScript_1B1668, 1033, 0, 0 object_event 23, MAP_OBJ_GFX_GIRL_3, 0, 108, 0, 13, 0, 3, 15, 0, 0, 0, 0, 0, 0, Route123_EventScript_151C5D, 0, 0, 0 - object_event 24, MAP_OBJ_GFX_BERRY_TREE, 0, 109, 0, 13, 0, 3, 12, 0, 0, 0, 0, 87, 0, BerryTreeScript, 0, 0, 0 - object_event 25, MAP_OBJ_GFX_BERRY_TREE, 0, 110, 0, 13, 0, 3, 12, 0, 0, 0, 0, 88, 0, BerryTreeScript, 0, 0, 0 - object_event 26, MAP_OBJ_GFX_BERRY_TREE, 0, 111, 0, 13, 0, 3, 12, 0, 0, 0, 0, 89, 0, BerryTreeScript, 0, 0, 0 + object_event 24, MAP_OBJ_GFX_BERRY_TREE, 0, 109, 0, 13, 0, 3, 12, 0, 0, 0, 0, 87, 0, S_BerryTree, 0, 0, 0 + object_event 25, MAP_OBJ_GFX_BERRY_TREE, 0, 110, 0, 13, 0, 3, 12, 0, 0, 0, 0, 88, 0, S_BerryTree, 0, 0, 0 + object_event 26, MAP_OBJ_GFX_BERRY_TREE, 0, 111, 0, 13, 0, 3, 12, 0, 0, 0, 0, 89, 0, S_BerryTree, 0, 0, 0 object_event 27, MAP_OBJ_GFX_WOMAN_3, 0, 16, 0, 9, 0, 3, 23, 0, 0, 1, 0, 2, 0, Route123_EventScript_151CFF, 0, 0, 0 object_event 28, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 38, 0, 13, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route123_EventScript_151DAD, 0, 0, 0 object_event 29, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 37, 0, 13, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route123_EventScript_151D92, 0, 0, 0 diff --git a/data/maps/events/Route130.inc b/data/maps/events/Route130.inc index f2c72ef2d..009604d4b 100644 --- a/data/maps/events/Route130.inc +++ b/data/maps/events/Route130.inc @@ -1,7 +1,7 @@ Route130_MapObjects:: @ 838523C object_event 1, MAP_OBJ_GFX_SWIMMER_M, 0, 7, 0, 26, 0, 1, 29, 99, 0, 1, 0, 3, 0, Route130_EventScript_152410, 0, 0, 0 object_event 2, MAP_OBJ_GFX_SWIMMER_F, 0, 68, 0, 22, 0, 1, 13, 17, 0, 1, 0, 3, 0, Route130_EventScript_152427, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 52, 0, 9, 0, 3, 12, 0, 0, 0, 0, 82, 0, BerryTreeScript, 17, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 52, 0, 9, 0, 3, 12, 0, 0, 0, 0, 82, 0, S_BerryTree, 17, 0, 0 Route130_MapEvents:: @ 8385284 map_events Route130_MapObjects, 0x0, 0x0, 0x0 diff --git a/data/maps/events/RusturfTunnel.inc b/data/maps/events/RusturfTunnel.inc index 490afda7b..ef1559687 100644 --- a/data/maps/events/RusturfTunnel.inc +++ b/data/maps/events/RusturfTunnel.inc @@ -1,12 +1,12 @@ RusturfTunnel_MapObjects:: @ 838BD2C object_event 1, MAP_OBJ_GFX_BLACK_BELT, 0, 23, 0, 5, 0, 3, 10, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C799, 807, 0, 0 - object_event 2, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 931, 0, 0 + object_event 2, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 931, 0, 0 object_event 3, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_1B1786, 1048, 0, 0 object_event 4, MAP_OBJ_GFX_ITEM_BALL, 0, 30, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_1B1793, 1049, 0, 0 object_event 5, MAP_OBJ_GFX_OLD_MAN_1, 0, 5, 0, 4, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 879, 0, 0 object_event 6, 241, 0, 14, 0, 5, 0, 3, 9, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C9EA, 878, 0, 0 object_event 7, MAP_OBJ_GFX_WINGULL, 0, 14, 0, 4, 0, 3, 9, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C9D7, 880, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 4, 0, 3, 8, 0, 0, 0, 0, 0, 0, BreakableRockScript, 932, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 4, 0, 3, 8, 0, 0, 0, 0, 0, 0, S_BreakableRock, 932, 0, 0 object_event 9, MAP_OBJ_GFX_HIKER, 0, 32, 0, 13, 0, 3, 9, 17, 0, 1, 0, 3, 0, RusturfTunnel_EventScript_15CACD, 0, 0, 0 object_event 10, MAP_OBJ_GFX_WOMAN_3, 0, 25, 0, 4, 0, 3, 9, 17, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C782, 983, 0, 0 diff --git a/data/maps/events/SafariZone_Northeast.inc b/data/maps/events/SafariZone_Northeast.inc index 30921f095..cea87fb14 100644 --- a/data/maps/events/SafariZone_Northeast.inc +++ b/data/maps/events/SafariZone_Northeast.inc @@ -1,12 +1,12 @@ SafariZone_Northeast_MapObjects:: @ 8391A2C object_event 1, MAP_OBJ_GFX_FISHERMAN, 0, 22, 0, 9, 0, 3, 2, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_160011, 0, 0, 0 object_event 2, MAP_OBJ_GFX_MAN_5, 0, 6, 0, 29, 0, 3, 2, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_16001A, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 - object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 13, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 - object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 28, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 - object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 23, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0 - object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 27, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0 + object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 + object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 13, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 + object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 28, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 + object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 23, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0 + object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 27, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0 object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_1B1919, 1119, 0, 0 SafariZone_Northeast_MapEvents:: @ 8391B04 diff --git a/data/maps/events/SeafloorCavern_Room1.inc b/data/maps/events/SeafloorCavern_Room1.inc index 1e791f884..093934481 100644 --- a/data/maps/events/SeafloorCavern_Room1.inc +++ b/data/maps/events/SeafloorCavern_Room1.inc @@ -1,7 +1,7 @@ SeafloorCavern_Room1_MapObjects:: @ 838D0B8 - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 object_event 4, 241, 0, 8, 0, 6, 0, 3, 1, 17, 0, 1, 0, 2, 0, SeafloorCavern_Room1_EventScript_15DA6D, 946, 0, 0 object_event 5, 241, 0, 15, 0, 10, 0, 3, 16, 17, 0, 1, 0, 3, 0, SeafloorCavern_Room1_EventScript_15DA84, 946, 0, 0 diff --git a/data/maps/events/SeafloorCavern_Room2.inc b/data/maps/events/SeafloorCavern_Room2.inc index 3dbe5e8a7..86a0354e4 100644 --- a/data/maps/events/SeafloorCavern_Room2.inc +++ b/data/maps/events/SeafloorCavern_Room2.inc @@ -1,13 +1,13 @@ SeafloorCavern_Room2_MapObjects:: @ 838D15C - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 24, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 25, 0, 0 - object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 15, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 24, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 25, 0, 0 + object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 15, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 SeafloorCavern_Room2_MapWarps:: @ 838D234 warp_def 12, 19, 3, 2, SeafloorCavern_Room1 diff --git a/data/maps/events/SeafloorCavern_Room3.inc b/data/maps/events/SeafloorCavern_Room3.inc index 98e6066f2..5c5c9c219 100644 --- a/data/maps/events/SeafloorCavern_Room3.inc +++ b/data/maps/events/SeafloorCavern_Room3.inc @@ -1,13 +1,13 @@ SeafloorCavern_Room3_MapObjects:: @ 838D268 - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 - object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0 - object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 + object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0 + object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0 object_event 10, 242, 0, 10, 0, 5, 0, 3, 8, 17, 0, 1, 0, 3, 0, SeafloorCavern_Room3_EventScript_15DAA8, 946, 0, 0 SeafloorCavern_Room3_MapWarps:: @ 838D358 diff --git a/data/maps/events/SeafloorCavern_Room5.inc b/data/maps/events/SeafloorCavern_Room5.inc index 0ebd46a56..37a501512 100644 --- a/data/maps/events/SeafloorCavern_Room5.inc +++ b/data/maps/events/SeafloorCavern_Room5.inc @@ -1,10 +1,10 @@ SeafloorCavern_Room5_MapObjects:: @ 838D3D0 - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 - object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 + object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 SeafloorCavern_Room5_MapWarps:: @ 838D460 warp_def 4, 1, 3, 1, SeafloorCavern_Room1 diff --git a/data/maps/events/SeafloorCavern_Room8.inc b/data/maps/events/SeafloorCavern_Room8.inc index 610937753..2d7329aec 100644 --- a/data/maps/events/SeafloorCavern_Room8.inc +++ b/data/maps/events/SeafloorCavern_Room8.inc @@ -1,16 +1,16 @@ SeafloorCavern_Room8_MapObjects:: @ 838D4DC - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 - object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0 - object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0 - object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 26, 0, 0 - object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 27, 0, 0 - object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 28, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 + object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0 + object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0 + object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 26, 0, 0 + object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 27, 0, 0 + object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 28, 0, 0 SeafloorCavern_Room8_MapWarps:: @ 838D5FC warp_def 5, 2, 3, 0, SeafloorCavern_Room9 diff --git a/data/maps/events/ShoalCave_LowTideLowerRoom.inc b/data/maps/events/ShoalCave_LowTideLowerRoom.inc index a1770b5bb..858f919e0 100644 --- a/data/maps/events/ShoalCave_LowTideLowerRoom.inc +++ b/data/maps/events/ShoalCave_LowTideLowerRoom.inc @@ -1,5 +1,5 @@ ShoalCave_LowTideLowerRoom_MapObjects:: @ 838DE3C - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 25, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 25, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 object_event 2, MAP_OBJ_GFX_BLACK_BELT, 0, 11, 0, 4, 0, 3, 2, 17, 0, 0, 0, 0, 0, ShoalCave_LowTideLowerRoom_EventScript_15E44F, 0, 0, 0 ShoalCave_LowTideLowerRoom_MapWarps:: @ 838DE6C diff --git a/data/maps/events/VictoryRoad_B1F.inc b/data/maps/events/VictoryRoad_B1F.inc index a4f778c4d..b00074990 100644 --- a/data/maps/events/VictoryRoad_B1F.inc +++ b/data/maps/events/VictoryRoad_B1F.inc @@ -1,21 +1,21 @@ VictoryRoad_B1F_MapObjects:: @ 838DA04 - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 35, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 30, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 25, 0, 0 - object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 26, 0, 0 - object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 27, 0, 0 - object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 28, 0, 0 - object_event 12, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 21, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 29, 0, 0 - object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 34, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 31, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 35, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 30, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 25, 0, 0 + object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 26, 0, 0 + object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 27, 0, 0 + object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 28, 0, 0 + object_event 12, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 21, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 29, 0, 0 + object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 34, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 31, 0, 0 object_event 14, MAP_OBJ_GFX_MAN_4, 0, 37, 0, 12, 0, 3, 9, 0, 0, 1, 0, 3, 0, VictoryRoad_B1F_EventScript_15DFB5, 0, 0, 0 object_event 15, MAP_OBJ_GFX_WOMAN_7, 0, 26, 0, 16, 0, 3, 7, 0, 0, 1, 0, 4, 0, VictoryRoad_B1F_EventScript_15DFCC, 0, 0, 0 object_event 16, MAP_OBJ_GFX_WOMAN_7, 0, 5, 0, 21, 0, 3, 9, 0, 0, 1, 0, 2, 0, VictoryRoad_B1F_EventScript_15DFE3, 0, 0, 0 - object_event 17, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 34, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 32, 0, 0 + object_event 17, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 34, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 32, 0, 0 object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 42, 0, 8, 0, 4, 1, 17, 0, 0, 0, 0, 0, VictoryRoad_B1F_EventScript_1B1AE0, 1086, 0, 0 object_event 19, MAP_OBJ_GFX_ITEM_BALL, 0, 32, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, VictoryRoad_B1F_EventScript_1B1AED, 1087, 0, 0 diff --git a/data/mauville_old_man.s b/data/mauville_old_man.s deleted file mode 100644 index 5c4bd47b9..000000000 --- a/data/mauville_old_man.s +++ /dev/null @@ -1,101 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 1 -gUnknown_083E537C:: @ 83E537C -.ifdef ENGLISH - ec_word SISTER - ec_word EATS - ec_word SWEETS - ec_word VORACIOUS - ec_word AND - ec_word DROOLING -.else - ec_word SISTER - ec_word MUST_BE - ec_word SWEETS - ec_word VORACIOUS - ec_word DROOLING - ec_word THICK -.endif - - - .align 2 -gUnknown_083E5388:: @ 83E5388 - .4byte OtherText_SoPretty - .4byte OtherText_SoDarling - .4byte OtherText_SoRelaxed - .4byte OtherText_SoSunny - .4byte OtherText_SoDesirable - .4byte OtherText_SoExciting - .4byte OtherText_SoAmusing - .4byte OtherText_SoMagical - - .align 2 -gUnknown_083E53A8:: @ 83E53A8 - .4byte OtherText_WantVacationNicePlace - .4byte OtherText_BoughtCrayonsIsNice - .4byte OtherText_IfWeCouldFloat - .4byte OtherText_SandWashesAwayMakeSad - .4byte OtherText_WhatsBottomSeaLike - .4byte OtherText_SeeSettingSun - .4byte OtherText_LyingInGreenGrass - .4byte OtherText_SecretBasesWonderful - - .align 1 -gUnknown_083E53C8:: @ 83E53C8 - .2byte 0x0, 0 - .2byte 0xC, 0 - .2byte 0xD, 0 - .2byte 0x12, 0 - .2byte 0x13, 0 - .2byte 0x15, 0 - - .align 2 -gUnknown_083E53E0:: @ 83E53E0 - .4byte 0x132, UnknownString_81AEFFC, UnknownString_81AF013, UnknownString_81AF022 - .4byte 0x102, UnknownString_81AF0A3, UnknownString_81AF0BB, UnknownString_81AF0CA - .4byte 0x103, UnknownString_81AF149, UnknownString_81AF164, UnknownString_81AF174 - .4byte 0x104, UnknownString_81AF1E5, UnknownString_81AF1FD, UnknownString_81AF20A - .4byte 0x106, UnknownString_81AF281, UnknownString_81AF299, UnknownString_81AF2A9 - .4byte 0x109, UnknownString_81AF32C, UnknownString_81AF345, UnknownString_81AF34D - .4byte 0x10b, UnknownString_81AF3D0, UnknownString_81AF3ED, UnknownString_81AF3FC - .4byte 0x10c, UnknownString_81AF46D, UnknownString_81AF481, UnknownString_81AF49B - .4byte 0x10d, UnknownString_81AF511, UnknownString_81AF529, UnknownString_81AF536 - .4byte 0x10e, UnknownString_81AF5A9, UnknownString_81AF5BD, UnknownString_81AF5CD - .4byte 0x10f, UnknownString_81AF63F, UnknownString_81AF661, UnknownString_81AF676 - .4byte 0x110, UnknownString_81AF711, UnknownString_81AF726, UnknownString_81AF73D - .4byte 0x111, UnknownString_81AF7BF, UnknownString_81AF7D9, UnknownString_81AF7F1 - .4byte 0x112, UnknownString_81AF88A, UnknownString_81AF8A1, UnknownString_81AF8AA - .4byte 0x113, UnknownString_81AF91B, UnknownString_81AF935, UnknownString_81AF943 - .4byte 0x114, UnknownString_81AF9C8, UnknownString_81AF9E0, UnknownString_81AF9F6 - .4byte 0x11a, UnknownString_81AFA79, UnknownString_81AFA92, UnknownString_81AFA9E - .4byte 0x11b, UnknownString_81AFB17, UnknownString_81AFB2D, UnknownString_81AFB48 - .4byte 0x11c, UnknownString_81AFBD8, UnknownString_81AFBE7, UnknownString_81AFC04 - .4byte 0x21d, UnknownString_81AFC8A, UnknownString_81AFC9D, UnknownString_81AFCBE - .4byte 0x11e, UnknownString_81AFD44, UnknownString_81AFD60, UnknownString_81AFD80 - .4byte 0x121, UnknownString_81AFE1D, UnknownString_81AFE36, UnknownString_81AFE42 - .4byte 0x124, UnknownString_81AFEC2, UnknownString_81AFEDD, UnknownString_81AFEEE - .4byte 0x125, UnknownString_81AFF68, UnknownString_81AFF7B, UnknownString_81AFF88 - .4byte 0x126, UnknownString_81AFFFB, UnknownString_81B000D, UnknownString_81B0015 - .4byte 0x127, UnknownString_81B009D, UnknownString_81B00B6, UnknownString_81B00C9 - .4byte 0x128, UnknownString_81B014D, UnknownString_81B0165, UnknownString_81B0173 - .4byte 0x129, UnknownString_81B01E9, UnknownString_81B0201, UnknownString_81B0213 - .4byte 0x12a, UnknownString_81B0290, UnknownString_81B02A5, UnknownString_81B02B6 - .4byte 0x12b, UnknownString_81B0337, UnknownString_81B0351, UnknownString_81B0364 - .4byte 0x12c, UnknownString_81B03E9, UnknownString_81B0401, UnknownString_81B040C - .4byte 0x12d, UnknownString_81B046E, UnknownString_81B0489, UnknownString_81B049A - .4byte 0x12e, UnknownString_81B0523, UnknownString_81B053E, UnknownString_81B0554 - .4byte 0x12f, UnknownString_81B05D8, UnknownString_81B05F3, UnknownString_81B0610 - .4byte 0x130, UnknownString_81B06A9, UnknownString_81B06C6, UnknownString_81B06D9 - -gUnknown_083E5610:: @ 83E5610 - .4byte 0x131, UnknownString_81B0763, UnknownString_81B0781, UnknownString_81B0797 - - .align 2 -gUnknown_083E5620:: @ 83E5620 - .4byte 0x24 - .4byte gSaveBlock1 + 0x2D94 - .4byte 0xC diff --git a/data/mon_pokeblock_anims.inc b/data/mon_pokeblock_anims.inc deleted file mode 100644 index d8df29c1d..000000000 --- a/data/mon_pokeblock_anims.inc +++ /dev/null @@ -1,133 +0,0 @@ -gNatureToMonPokeblockAnim:: @ 8411A10 - .byte 0, 0 @ HARDY - .byte 3, 0 @ LONELY - .byte 4, 1 @ BRAVE - .byte 5, 0 @ ADAMANT - .byte 10, 0 @ NAUGHTY - .byte 13, 0 @ BOLD - .byte 15, 0 @ DOCILE - .byte 16, 2 @ RELAXED - .byte 18, 0 @ IMPISH - .byte 19, 0 @ LAX - .byte 20, 0 @ TIMID - .byte 25, 0 @ HASTY - .byte 27, 3 @ SERIOUS - .byte 28, 0 @ JOLLY - .byte 29, 0 @ NAIVE - .byte 33, 4 @ MODEST - .byte 36, 0 @ MILD - .byte 37, 0 @ QUIET - .byte 39, 0 @ BASHFUL - .byte 42, 0 @ RASH - .byte 45, 0 @ CALM - .byte 46, 5 @ GENTLE - .byte 47, 6 @ SASSY - .byte 48, 0 @ CAREFUL - .byte 53, 0 @ QUIRKY - - .align 1 -gMonPokeblockAnims:: @ 8411A42 - @ HARDY - .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0 - .2byte 0, 4, 0, 16, 24, 0, 0, 0, 12, 0 - .2byte 0, 4, 0, 32, 32, 0, 0, 0, 16, 1 - - @ LONELY - .2byte 0, 3, 6, 0, 48, 0, 0, 0, 24, 1 - - @ BRAVE - .2byte 64, 16, -24, 0, 32, 0, 0, 0, 0, 1 - - @ ADAMANT - .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0 - .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0 - .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0 - .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0 - .2byte 0, 4, -16, 0, 4, 0, 16, 0, 0, 1 - - @ NAUGHTY - .2byte 0, 3, 6, 0, 12, 0, 0, 0, 6, 0 - .2byte 0, 3, -6, 0, 12, 0, 0, 0, 6, 0 - .2byte 0, 16, 16, 0, 45, 1, 0, 0, 0, 1 - - @ BOLD - .2byte 0, 16, 0, 24, 32, 0, 0, 0, 16, 0 - .2byte 0, 16, 0, 23, 32, 0, 0, 0, 16, 1 - - @ DOCILE - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 1 - - @ RELAXED - .2byte 0, 2, 8, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 2, -8, 0, 32, 0, 0, 0, 0, 1 - - @ IMPISH - .2byte 0, 32, 2, 1, 48, 1, 0, 0, 24, 1 - - @ LAX - .2byte 0, 2, 16, 16, 128, 0, 0, 0, 0, 1 - - @ TIMID - .2byte 0, 2, -8, 0, 48, 0, -24, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 64, 32, 2, 0, 36, 0, 0, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 0, 2, 8, 0, 48, 0, 24, 0, 0, 1 - - @ HASTY - .2byte 64, 24, 16, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 28, 2, 1, 32, 1, 0, 0, 16, 1 - - @ SERIOUS - .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1 - - @ JOLLY - .2byte 64, 16, -16, 2, 48, 0, 0, 0, 32, 1 - - @ NAIVE - .2byte 0, 12, -8, 4, 24, 0, 8, 0, 12, 0 - .2byte 0, 12, 8, 8, 24, 0, -16, 0, 12, 0 - .2byte 0, 12, -8, 16, 24, 0, 16, 0, 12, 0 - .2byte 0, 12, 8, 28, 24, 0, -8, 0, 12, 1 - - @ MODEST - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 64, 16, -4, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 1 - - @ MILD - .2byte 128, 4, 0, 8, 64, 0, 0, 0, 0, 1 - - @ QUIET - .2byte 0, 2, 16, 0, 48, 0, 0, 0, 0, 0 - .2byte 128, 2, 16, 0, 48, 0, 0, 0, 0, 1 - - @ BASHFUL - .2byte 0, 2, -4, 0, 48, 0, -48, 0, 0, 0 - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0 - .2byte 0, 2, 8, 0, 24, 0, 48, 0, 0, 1 - - @ RASH - .2byte 64, 4, 64, 58, 52, 0, -88, 0, 0, 0 - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0 - .2byte 0, 24, 80, 0, 32, 0, 88, 0, 0, 1 - - @ CALM - .2byte 0, 2, 16, 4, 64, 0, 0, 0, 0, 1 - - @ GENTLE - .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1 - - @ SASSY - .2byte 0, 0, 0, 0, 42, 0, 0, 0, 0, 1 - - @ CAREFUL - .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0 - .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0 - .2byte 0, 4, 0, 12, 24, 0, 0, 0, 12, 0 - .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0 - .2byte 0, 4, 0, 4, 24, 0, 0, 0, 12, 1 - - @ QUIRKY - .2byte 0, 4, 16, 12, 64, 0, 0, 0, 0, 0 - .2byte 0, -4, 16, 12, 64, 0, 0, 0, 0, 1 diff --git a/data/mystery_event_script_cmd_table.s b/data/mystery_event_script_cmd_table.s new file mode 100644 index 000000000..171c35b4e --- /dev/null +++ b/data/mystery_event_script_cmd_table.s @@ -0,0 +1,22 @@ + .section script_data, "aw", %progbits + + .align 2 +gMysteryEventScriptCmdTable:: @ 81DCAF4 + .4byte MEScrCmd_nop + .4byte MEScrCmd_checkcompat + .4byte MEScrCmd_end + .4byte MEScrCmd_setmsg + .4byte MEScrCmd_setstatus + .4byte MEScrCmd_runscript + .4byte MEScrCmd_initramscript + .4byte MEScrCmd_setenigmaberry + .4byte MEScrCmd_giveribbon + .4byte MEScrCmd_givenationaldex + .4byte MEScrCmd_addrareword + .4byte MEScrCmd_setrecordmixinggift + .4byte MEScrCmd_givepokemon + .4byte MEScrCmd_addtrainer + .4byte MEScrCmd_enableresetrtc + .4byte MEScrCmd_checksum + .4byte MEScrCmd_crc +gMysteryEventScriptCmdTableEnd:: diff --git a/data/pokeblock_feed.s b/data/pokeblock_feed.s deleted file mode 100644 index ae5b17d12..000000000 --- a/data/pokeblock_feed.s +++ /dev/null @@ -1,225 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 8411A10 - .include "data/mon_pokeblock_anims.inc" - - .align 2 -gSpriteAffineAnim_8411E90:: @ 8411E90 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EA0:: @ 8411EA0 - obj_rot_scal_anim_frame 0x0, 0x0, 12, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 30 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 1 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EC0:: @ 8411EC0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 12, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 28 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 3 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EE8:: @ 8411EE8 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F08:: @ 8411F08 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F30:: @ 8411F30 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F50:: @ 8411F50 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F78:: @ 8411F78 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F98:: @ 8411F98 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411FC0:: @ 8411FC0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 4 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411FE0:: @ 8411FE0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 4 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412008:: @ 8412008 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 2 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412028:: @ 8412028 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 2 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_8412050:: @ 8412050 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411EA0 - .4byte gSpriteAffineAnim_8411EE8 - .4byte gSpriteAffineAnim_8411F30 - .4byte gSpriteAffineAnim_8411F78 - .4byte gSpriteAffineAnim_8411FC0 - .4byte gSpriteAffineAnim_8412008 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411EC0 - .4byte gSpriteAffineAnim_8411F08 - .4byte gSpriteAffineAnim_8411F50 - .4byte gSpriteAffineAnim_8411F98 - .4byte gSpriteAffineAnim_8411FE0 - .4byte gSpriteAffineAnim_8412028 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - - .align 2 -gUnknown_084120A4:: @ 84120A4 - .4byte gPokeblockRed_Pal - .4byte gPokeblockBlue_Pal - .4byte gPokeblockPink_Pal - .4byte gPokeblockGreen_Pal - .4byte gPokeblockYellow_Pal - .4byte gPokeblockPurple_Pal - .4byte gPokeblockIndigo_Pal - .4byte gPokeblockBrown_Pal - .4byte gPokeblockLiteBlue_Pal - .4byte gPokeblockOlive_Pal - .4byte gPokeblockGray_Pal - .4byte gPokeblockBlack_Pal - .4byte gPokeblockWhite_Pal - .4byte gPokeblockGold_Pal - - .align 2 -gSpriteAffineAnim_84120DC:: @ 84120DC - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_84120EC:: @ 84120EC - .4byte gSpriteAffineAnim_84120DC - - .align 2 -gSpriteAffineAnim_84120F0:: @ 84120F0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412148:: @ 8412148 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 8 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_84121A0:: @ 84121A0 - .4byte gSpriteAffineAnim_84120DC - - .align 2 -gSpriteAffineAnimTable_84121A4:: @ 84121A4 - .4byte gSpriteAffineAnim_84120F0 - - .align 2 -gSpriteAffineAnimTable_84121A8:: @ 84121A8 - .4byte gSpriteAffineAnim_8412148 - - .align 2 -gOamData_84121AC:: @ 84121AC - .2byte 0x0300 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_84121B4:: @ 84121B4 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_84121BC:: @ 84121BC - .4byte gSpriteAnim_84121B4 - - .align 2 -gSpriteAffineAnim_84121C0:: @ 84121C0 - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_frame 0xFFF8, 0xFFF8, 0, 1 - obj_rot_scal_anim_jump 1 - - .align 2 -gSpriteAffineAnimTable_84121D8:: @ 84121D8 - .4byte gSpriteAffineAnim_84121C0 - - .align 2 -gUnknown_084121DC:: @ 84121DC - obj_tiles gPokeblock_Gfx, 0x20, 14818 - - .align 2 -gSpriteTemplate_84121E4:: @ 84121E4 - spr_template 14818, 14818, gOamData_84121AC, gSpriteAnimTable_84121BC, NULL, gSpriteAffineAnimTable_84121D8, sub_81481B0 diff --git a/data/pokemon_menu.s b/data/pokemon_menu.s deleted file mode 100644 index 9e2ce2864..000000000 --- a/data/pokemon_menu.s +++ /dev/null @@ -1,82 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gPokemonMenuActions:: @ 839F494 - .4byte OtherText_Summary, PokemonMenu_Summary - .4byte OtherText_Switch2, PokemonMenu_Switch - .4byte OtherText_Item, PokemonMenu_Item - .4byte gOtherText_CancelNoTerminator, PokemonMenu_Cancel - .4byte OtherText_Give2, PokemonMenu_GiveItem - .4byte OtherText_Take2, PokemonMenu_TakeItem - .4byte OtherText_Take, PokemonMenu_TakeMail - .4byte OtherText_Mail, PokemonMenu_Mail - .4byte OtherText_Read2, PokemonMenu_ReadMail - .4byte gOtherText_CancelNoTerminator, PokemonMenu_CancelSubmenu - .4byte gMoveNames + 13 * MOVE_CUT, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_FLASH, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_ROCK_SMASH, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_STRENGTH, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_SURF, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_FLY, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_DIVE, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_WATERFALL, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_TELEPORT, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_DIG, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_SECRET_POWER, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_MILK_DRINK, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_SOFT_BOILED, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_SWEET_SCENT, PokemonMenu_FieldMove - - .align 1 -gUnknown_0839F554:: @ 839F554 - .2byte MOVE_CUT - .2byte MOVE_FLASH - .2byte MOVE_ROCK_SMASH - .2byte MOVE_STRENGTH - .2byte MOVE_SURF - .2byte MOVE_FLY - .2byte MOVE_DIVE - .2byte MOVE_WATERFALL - .2byte MOVE_TELEPORT - .2byte MOVE_DIG - .2byte MOVE_SECRET_POWER - .2byte MOVE_MILK_DRINK - .2byte MOVE_SOFT_BOILED - .2byte MOVE_SWEET_SCENT - .2byte 0xFF - -Unknown_39F572: @ 839F572 - .byte 4, 5, 9, 0 - - .align 2 -gUnknown_0839F578:: @ 839F578 - .byte 3, 6, 0, 0 - .4byte Unknown_39F572 - -Unknown_39F580: @ 839F580 - .byte 8, 6, 9, 0 - - .align 2 -gUnknown_0839F584:: @ 839F584 - .byte 3, 9, 0, 0 - .4byte Unknown_39F580 - - .align 2 -gFieldMoveFuncs:: @ 839F58C - .4byte SetUpFieldMove_Cut, 0x6 - .4byte SetUpFieldMove_Flash, 0x9 - .4byte SetUpFieldMove_RockSmash, 0x9 - .4byte SetUpFieldMove_Strength, 0x9 - .4byte SetUpFieldMove_Surf, 0x7 - .4byte SetUpFieldMove_Fly, 0x9 - .4byte SetUpFieldMove_Dive, 0x9 - .4byte SetUpFieldMove_Waterfall, 0x9 - .4byte SetUpFieldMove_Teleport, 0x9 - .4byte SetUpFieldMove_Dig, 0x9 - .4byte SetUpFieldMove_SecretPower, 0x9 - .4byte SetUpFieldMove_SoftBoiled, 0x10 - .4byte SetUpFieldMove_SoftBoiled, 0x10 - .4byte SetUpFieldMove_SweetScent, 0x9 diff --git a/data/rom4.s b/data/rom4.s deleted file mode 100644 index 6f883c64c..000000000 --- a/data/rom4.s +++ /dev/null @@ -1,66 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gDummyWarpData:: @ 8216624 - .byte -1 - .byte -1 - .byte -1 - .space 1 - .2byte -1 - .2byte -1 - -@ unused, unknown data - .byte 0xB0, 0x04, 0x00, 0x00 - .byte 0x10, 0x0E, 0x00, 0x00 - .byte 0xB0, 0x04, 0x00, 0x00 - .byte 0x60, 0x09, 0x00, 0x00 - .byte 0x32, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00 - .byte 0xD4, 0xFF, 0xFF, 0xFF - .byte 0x2C, 0x00, 0x00, 0x00 - - .align 2 -gUnknown_0821664C:: @ 821664C - .4byte 0, 0 - .4byte 0, 1 - .4byte 0, -1 - .4byte -1, 0 - .4byte 1, 0 - .4byte -1, 1 - .4byte 1, 1 - .4byte -1, -1 - .4byte 1, -1 - - .align 2 -gUnknown_08216694:: @ 8216694 - .4byte REG_WIN0H - .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 - .4byte 1 - - .align 2 -gUnknown_082166A0:: @ 82166A0 - .4byte sub_8055C68 - .4byte sub_8055C88 - .4byte sub_8055C8C - - .align 2 -gUnknown_082166AC:: @ 82166AC - .4byte sub_8055CAC - .4byte sub_8055CB0 - .4byte sub_8055CB0 - .4byte sub_8055CB0 - .4byte sub_8055CB0 - .4byte sub_8055CAC - .4byte sub_8055CAC - .4byte sub_8055D18 - .4byte sub_8055D18 - .4byte sub_8055D18 - .4byte sub_8055D18 - - .align 2 -gUnknown_082166D8:: @ 82166D8 - .4byte sub_8055D30 - .4byte sub_8055D38 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index a68f2ca8d..b6b7401f3 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -1,203 +1,203 @@ .align 2 gScriptCmdTable:: @ 814AE30 - .4byte ScrCmd_snop - .4byte ScrCmd_snop1 - .4byte ScrCmd_end - .4byte ScrCmd_return - .4byte ScrCmd_call - .4byte ScrCmd_jump - .4byte ScrCmd_jumpif - .4byte ScrCmd_callif - .4byte ScrCmd_jumpstd - .4byte ScrCmd_callstd - .4byte ScrCmd_jumpstdif - .4byte ScrCmd_callstdif - .4byte ScrCmd_jumpram - .4byte ScrCmd_die - .4byte ScrCmd_setbyte - .4byte ScrCmd_loadptr - .4byte ScrCmd_setbufferbyte - .4byte ScrCmd_writebytetooffset - .4byte ScrCmd_loadbytefrompointer - .4byte ScrCmd_setptrbyte - .4byte ScrCmd_copybuffers - .4byte ScrCmd_copybyte - .4byte ScrCmd_setvar - .4byte ScrCmd_addvar - .4byte ScrCmd_subvar - .4byte ScrCmd_copyvar - .4byte ScrCmd_setorcopyvar - .4byte ScrCmd_comparebuffers - .4byte ScrCmd_comparebuffertobyte - .4byte ScrCmd_comparebuffertoptrbyte - .4byte ScrCmd_compareptrbytetobuffer - .4byte ScrCmd_compareptrbytetobyte - .4byte ScrCmd_compareptrbytes - .4byte ScrCmd_compare - .4byte ScrCmd_comparevars - .4byte ScrCmd_callasm - .4byte ScrCmd_jumpasm - .4byte ScrCmd_special - .4byte ScrCmd_specialval - .4byte ScrCmd_waitstate - .4byte ScrCmd_pause - .4byte ScrCmd_setflag - .4byte ScrCmd_clearflag - .4byte ScrCmd_checkflag - .4byte ScrCmd_compareflags - .4byte ScrCmd_checkdailyflags - .4byte ScrCmd_resetvars - .4byte ScrCmd_playsfx - .4byte ScrCmd_checksound - .4byte ScrCmd_fanfare - .4byte ScrCmd_waitfanfare - .4byte ScrCmd_playmusic - .4byte ScrCmd_playmusicbattle - .4byte ScrCmd_fadedefault - .4byte ScrCmd_fademusic - .4byte ScrCmd_fadeout - .4byte ScrCmd_fadein - .4byte ScrCmd_warp - .4byte ScrCmd_warpmuted - .4byte ScrCmd_warpwalk - .4byte ScrCmd_warphole - .4byte ScrCmd_warpteleport - .4byte ScrCmd_warp3 - .4byte ScrCmd_warpplace - .4byte ScrCmd_warp4 - .4byte ScrCmd_warp5 - .4byte ScrCmd_getplayerxy - .4byte ScrCmd_countpokemon - .4byte ScrCmd_additem - .4byte ScrCmd_removeitem - .4byte ScrCmd_checkitemspace - .4byte ScrCmd_checkitem - .4byte ScrCmd_checkitemtype - .4byte ScrCmd_addpcitem - .4byte ScrCmd_checkpcitem - .4byte ScrCmd_adddecor - .4byte ScrCmd_removedecor - .4byte ScrCmd_testdecor - .4byte ScrCmd_checkdecor - .4byte ScrCmd_move - .4byte ScrCmd_movecoords - .4byte ScrCmd_waitmove - .4byte ScrCmd_waitmovexy - .4byte ScrCmd_disappear - .4byte ScrCmd_disappearxy - .4byte ScrCmd_reappear - .4byte ScrCmd_reappearxy - .4byte ScrCmd_movesprite - .4byte ScrCmd_spritevisible - .4byte ScrCmd_spriteinvisible - .4byte ScrCmd_faceplayer - .4byte ScrCmd_spriteface - .4byte ScrCmd_trainerbattle - .4byte ScrCmd_reptrainerbattle - .4byte ScrCmd_endtrainerbattle - .4byte ScrCmd_endtrainerbattle2 - .4byte ScrCmd_checktrainerflag - .4byte ScrCmd_cleartrainerflag - .4byte ScrCmd_settrainerflag - .4byte ScrCmd_movespriteperm - .4byte ScrCmd_moveoffscreen - .4byte ScrCmd_spritebehave - .4byte ScrCmd_waittext - .4byte ScrCmd_message - .4byte ScrCmd_closebutton - .4byte ScrCmd_lockall - .4byte ScrCmd_lock - .4byte ScrCmd_releaseall - .4byte ScrCmd_release - .4byte ScrCmd_waitbutton - .4byte ScrCmd_yesnobox - .4byte ScrCmd_multichoice - .4byte ScrCmd_multichoicedef - .4byte ScrCmd_multichoicerow - .4byte ScrCmd_showbox - .4byte ScrCmd_hidebox - .4byte ScrCmd_clearbox - .4byte ScrCmd_showpokepic - .4byte ScrCmd_hidepokepic - .4byte ScrCmd_showcontestwinner - .4byte ScrCmd_braillemsg - .4byte ScrCmd_givepokemon - .4byte ScrCmd_giveegg - .4byte ScrCmd_setpokemove - .4byte ScrCmd_checkattack - .4byte ScrCmd_bufferpoke - .4byte ScrCmd_bufferfirstpoke - .4byte ScrCmd_bufferpartypoke - .4byte ScrCmd_bufferitem - .4byte ScrCmd_bufferdecor - .4byte ScrCmd_bufferattack - .4byte ScrCmd_buffernum - .4byte ScrCmd_bufferstd - .4byte ScrCmd_buffertext - .4byte ScrCmd_pokemart - .4byte ScrCmd_pokemartdecor - .4byte ScrCmd_pokemartbp - .4byte ScrCmd_pokecasino - .4byte ScrCmd_event_8a - .4byte ScrCmd_choosecontestpkmn - .4byte ScrCmd_startcontest - .4byte ScrCmd_showcontestresults - .4byte ScrCmd_contestlinktransfer - .4byte ScrCmd_random - .4byte ScrCmd_givemoney - .4byte ScrCmd_paymoney - .4byte ScrCmd_checkmoney - .4byte ScrCmd_showmoney - .4byte ScrCmd_hidemoney - .4byte ScrCmd_updatemoney - .4byte ScrCmd_event_96 - .4byte ScrCmd_fadescreen - .4byte ScrCmd_fadescreendelay - .4byte ScrCmd_darken - .4byte ScrCmd_lighten - .4byte ScrCmd_message2 - .4byte ScrCmd_doanimation - .4byte ScrCmd_setanimation - .4byte ScrCmd_checkanimation - .4byte ScrCmd_sethealplace - .4byte ScrCmd_checkgender - .4byte ScrCmd_pokecry - .4byte ScrCmd_setmaptile - .4byte ScrCmd_resetweather - .4byte ScrCmd_setweather - .4byte ScrCmd_doweather - .4byte ScrCmd_tileeffect - .4byte ScrCmd_setmapfooter - .4byte ScrCmd_spritelevelup - .4byte ScrCmd_restorespritelevel - .4byte ScrCmd_createvsprite - .4byte ScrCmd_vspriteface - .4byte ScrCmd_setdooropened - .4byte ScrCmd_setdoorclosed - .4byte ScrCmd_doorchange - .4byte ScrCmd_setdooropened2 - .4byte ScrCmd_setdoorclosed2 - .4byte ScrCmd_event_b1 - .4byte ScrCmd_event_b2 - .4byte ScrCmd_checkcoins - .4byte ScrCmd_givecoins - .4byte ScrCmd_removecoins - .4byte ScrCmd_setwildbattle - .4byte ScrCmd_dowildbattle - .4byte ScrCmd_setvaddress - .4byte ScrCmd_vjump - .4byte ScrCmd_vcall - .4byte ScrCmd_if5 - .4byte ScrCmd_if6 - .4byte ScrCmd_vtext - .4byte ScrCmd_vloadptr - .4byte ScrCmd_vbuffer - .4byte ScrCmd_showcoins - .4byte ScrCmd_hidecoins - .4byte ScrCmd_updatecoins - .4byte ScrCmd_inccounter - .4byte ScrCmd_warp6 - .4byte ScrCmd_waitpokecry + .4byte ScrCmd_nop @ 0x00 + .4byte ScrCmd_nop1 @ 0x01 + .4byte ScrCmd_end @ 0x02 + .4byte ScrCmd_return @ 0x03 + .4byte ScrCmd_call @ 0x04 + .4byte ScrCmd_goto @ 0x05 + .4byte ScrCmd_goto_if @ 0x06 + .4byte ScrCmd_call_if @ 0x07 + .4byte ScrCmd_gotostd @ 0x08 + .4byte ScrCmd_callstd @ 0x09 + .4byte ScrCmd_gotostd_if @ 0x0A + .4byte ScrCmd_callstd_if @ 0x0B + .4byte ScrCmd_gotoram @ 0x0C + .4byte ScrCmd_killscript @ 0x0D + .4byte ScrCmd_setmysteryeventstatus @ 0x0E + .4byte ScrCmd_loadword @ 0x0F + .4byte ScrCmd_loadbyte @ 0x10 + .4byte ScrCmd_writebytetoaddr @ 0x11 + .4byte ScrCmd_loadbytefromaddr @ 0x12 + .4byte ScrCmd_setptrbyte @ 0x13 + .4byte ScrCmd_copylocal @ 0x14 + .4byte ScrCmd_copybyte @ 0x15 + .4byte ScrCmd_setvar @ 0x16 + .4byte ScrCmd_addvar @ 0x17 + .4byte ScrCmd_subvar @ 0x18 + .4byte ScrCmd_copyvar @ 0x19 + .4byte ScrCmd_setorcopyvar @ 0x1A + .4byte ScrCmd_compare_local_to_local @ 0x1B + .4byte ScrCmd_compare_local_to_value @ 0x1C + .4byte ScrCmd_compare_local_to_addr @ 0x1D + .4byte ScrCmd_compare_addr_to_local @ 0x1E + .4byte ScrCmd_compare_addr_to_value @ 0x1F + .4byte ScrCmd_compare_addr_to_addr @ 0x20 + .4byte ScrCmd_compare_var_to_value @ 0x21 + .4byte ScrCmd_compare_var_to_var @ 0x22 + .4byte ScrCmd_callnative @ 0x23 + .4byte ScrCmd_gotonative @ 0x24 + .4byte ScrCmd_special @ 0x25 + .4byte ScrCmd_specialvar @ 0x26 + .4byte ScrCmd_waitstate @ 0x27 + .4byte ScrCmd_delay @ 0x28 + .4byte ScrCmd_setflag @ 0x29 + .4byte ScrCmd_clearflag @ 0x2A + .4byte ScrCmd_checkflag @ 0x2B + .4byte ScrCmd_initclock @ 0x2C + .4byte ScrCmd_dodailyevents @ 0x2D + .4byte ScrCmd_gettime @ 0x2E + .4byte ScrCmd_playse @ 0x2F + .4byte ScrCmd_waitse @ 0x30 + .4byte ScrCmd_playfanfare @ 0x31 + .4byte ScrCmd_waitfanfare @ 0x32 + .4byte ScrCmd_playbgm @ 0x33 + .4byte ScrCmd_savebgm @ 0x34 + .4byte ScrCmd_fadedefaultbgm @ 0x35 + .4byte ScrCmd_fadenewbgm @ 0x36 + .4byte ScrCmd_fadeoutbgm @ 0x37 + .4byte ScrCmd_fadeinbgm @ 0x38 + .4byte ScrCmd_warp @ 0x39 + .4byte ScrCmd_warpsilent @ 0x3A + .4byte ScrCmd_warpdoor @ 0x3B + .4byte ScrCmd_warphole @ 0x3C + .4byte ScrCmd_warpteleport @ 0x3D + .4byte ScrCmd_setwarp @ 0x3E + .4byte ScrCmd_setdynamicwarp @ 0x3F + .4byte ScrCmd_setdivewarp @ 0x40 + .4byte ScrCmd_setholewarp @ 0x41 + .4byte ScrCmd_getplayerxy @ 0x42 + .4byte ScrCmd_countpokemon @ 0x43 + .4byte ScrCmd_additem @ 0x44 + .4byte ScrCmd_removeitem @ 0x45 + .4byte ScrCmd_checkitemspace @ 0x46 + .4byte ScrCmd_checkitem @ 0x47 + .4byte ScrCmd_checkitemtype @ 0x48 + .4byte ScrCmd_addpcitem @ 0x49 + .4byte ScrCmd_checkpcitem @ 0x4A + .4byte ScrCmd_adddecor @ 0x4B + .4byte ScrCmd_removedecor @ 0x4C + .4byte ScrCmd_hasdecor @ 0x4D + .4byte ScrCmd_checkdecor @ 0x4E + .4byte ScrCmd_applymovement @ 0x4F + .4byte ScrCmd_applymovement_at @ 0x50 + .4byte ScrCmd_waitmovement @ 0x51 + .4byte ScrCmd_waitmovement_at @ 0x52 + .4byte ScrCmd_removeobject @ 0x53 + .4byte ScrCmd_removeobject_at @ 0x54 + .4byte ScrCmd_addobject @ 0x55 + .4byte ScrCmd_addobject_at @ 0x56 + .4byte ScrCmd_setobjectxy @ 0x57 + .4byte ScrCmd_showobject @ 0x58 + .4byte ScrCmd_hideobject @ 0x59 + .4byte ScrCmd_faceplayer @ 0x5A + .4byte ScrCmd_turnobject @ 0x5B + .4byte ScrCmd_trainerbattle @ 0x5C + .4byte ScrCmd_battlebegin @ 0x5D + .4byte ScrCmd_ontrainerbattleend @ 0x5E + .4byte ScrCmd_ontrainerbattleendgoto @ 0x5F + .4byte ScrCmd_checktrainerflag @ 0x60 + .4byte ScrCmd_settrainerflag @ 0x61 + .4byte ScrCmd_cleartrainerflag @ 0x62 + .4byte ScrCmd_setobjectxyperm @ 0x63 + .4byte ScrCmd_moveobjectoffscreen @ 0x64 + .4byte ScrCmd_setobjectmovementtype @ 0x65 + .4byte ScrCmd_waitmessage @ 0x66 + .4byte ScrCmd_message @ 0x67 + .4byte ScrCmd_closemessage @ 0x68 + .4byte ScrCmd_lockall @ 0x69 + .4byte ScrCmd_lock @ 0x6A + .4byte ScrCmd_releaseall @ 0x6B + .4byte ScrCmd_release @ 0x6C + .4byte ScrCmd_waitbutton @ 0x6D + .4byte ScrCmd_yesnobox @ 0x6E + .4byte ScrCmd_multichoice @ 0x6F + .4byte ScrCmd_multichoicedefault @ 0x70 + .4byte ScrCmd_multichoicegrid @ 0x71 + .4byte ScrCmd_drawbox @ 0x72 + .4byte ScrCmd_erasebox @ 0x73 + .4byte ScrCmd_drawboxtext @ 0x74 + .4byte ScrCmd_drawpokepic @ 0x75 + .4byte ScrCmd_erasepokepic @ 0x76 + .4byte ScrCmd_drawcontestwinner @ 0x77 + .4byte ScrCmd_braillemessage @ 0x78 + .4byte ScrCmd_givepoke @ 0x79 + .4byte ScrCmd_giveegg @ 0x7A + .4byte ScrCmd_setpokemove @ 0x7B + .4byte ScrCmd_checkpokemove @ 0x7C + .4byte ScrCmd_getspeciesname @ 0x7D + .4byte ScrCmd_getfirstpartypokename @ 0x7E + .4byte ScrCmd_getpartypokename @ 0x7F + .4byte ScrCmd_getitemname @ 0x80 + .4byte ScrCmd_getdecorname @ 0x81 + .4byte ScrCmd_getmovename @ 0x82 + .4byte ScrCmd_getnumberstring @ 0x83 + .4byte ScrCmd_getstdstring @ 0x84 + .4byte ScrCmd_getstring @ 0x85 + .4byte ScrCmd_pokemart @ 0x86 + .4byte ScrCmd_pokemartdecor @ 0x87 + .4byte ScrCmd_pokemartbp @ 0x88 + .4byte ScrCmd_playslotmachine @ 0x89 + .4byte ScrCmd_plantberrytree @ 0x8A + .4byte ScrCmd_choosecontestpkmn @ 0x8B + .4byte ScrCmd_startcontest @ 0x8C + .4byte ScrCmd_showcontestresults @ 0x8D + .4byte ScrCmd_contestlinktransfer @ 0x8E + .4byte ScrCmd_random @ 0x8F + .4byte ScrCmd_givemoney @ 0x90 + .4byte ScrCmd_takemoney @ 0x91 + .4byte ScrCmd_checkmoney @ 0x92 + .4byte ScrCmd_showmoneybox @ 0x93 + .4byte ScrCmd_hidemoneybox @ 0x94 + .4byte ScrCmd_updatemoneybox @ 0x95 + .4byte ScrCmd_getpricereduction @ 0x96 + .4byte ScrCmd_fadescreen @ 0x97 + .4byte ScrCmd_fadescreendelay @ 0x98 + .4byte ScrCmd_setdarklevel @ 0x99 + .4byte ScrCmd_animdarklevel @ 0x9A + .4byte ScrCmd_messageautoscroll @ 0x9B + .4byte ScrCmd_dofieldeffect @ 0x9C + .4byte ScrCmd_setfieldeffect @ 0x9D + .4byte ScrCmd_waitfieldeffect @ 0x9E + .4byte ScrCmd_sethealplace @ 0x9F + .4byte ScrCmd_checkplayergender @ 0xA0 + .4byte ScrCmd_playpokecry @ 0xA1 + .4byte ScrCmd_setmaptile @ 0xA2 + .4byte ScrCmd_resetweather @ 0xA3 + .4byte ScrCmd_setweather @ 0xA4 + .4byte ScrCmd_doweather @ 0xA5 + .4byte ScrCmd_tileeffect @ 0xA6 + .4byte ScrCmd_setmaplayoutindex @ 0xA7 + .4byte ScrCmd_setobjectpriority @ 0xA8 + .4byte ScrCmd_resetobjectpriority @ 0xA9 + .4byte ScrCmd_createvobject @ 0xAA + .4byte ScrCmd_turnvobject @ 0xAB + .4byte ScrCmd_opendoor @ 0xAC + .4byte ScrCmd_closedoor @ 0xAD + .4byte ScrCmd_waitdooranim @ 0xAE + .4byte ScrCmd_setdooropen @ 0xAF + .4byte ScrCmd_setdoorclosed @ 0xB0 + .4byte ScrCmd_addelevmenuitem @ 0xB1 + .4byte ScrCmd_showelevmenu @ 0xB2 + .4byte ScrCmd_checkcoins @ 0xB3 + .4byte ScrCmd_givecoins @ 0xB4 + .4byte ScrCmd_takecoins @ 0xB5 + .4byte ScrCmd_setwildbattle @ 0xB6 + .4byte ScrCmd_dowildbattle @ 0xB7 + .4byte ScrCmd_setvaddress @ 0xB8 + .4byte ScrCmd_vgoto @ 0xB9 + .4byte ScrCmd_vcall @ 0xBA + .4byte ScrCmd_vgoto_if @ 0xBB + .4byte ScrCmd_vcall_if @ 0xBC + .4byte ScrCmd_vmessage @ 0xBD + .4byte ScrCmd_vloadword @ 0xBE + .4byte ScrCmd_vgetstring @ 0xBF + .4byte ScrCmd_showcoinsbox @ 0xC0 + .4byte ScrCmd_hidecoinsbox @ 0xC1 + .4byte ScrCmd_updatecoinsbox @ 0xC2 + .4byte ScrCmd_incrementgamestat @ 0xC3 + .4byte ScrCmd_setescapewarp @ 0xC4 + .4byte ScrCmd_waitpokecry @ 0xC5 gScriptCmdTableEnd:: - .4byte ScrCmd_snop + .4byte ScrCmd_nop diff --git a/data/script_funcs.s b/data/script_funcs.s deleted file mode 100644 index 23d7a76f5..000000000 --- a/data/script_funcs.s +++ /dev/null @@ -1,22 +0,0 @@ - .section script_data, "aw", %progbits - - .align 2 -gScriptFuncs:: @ 81DCAF4 - .4byte sub_81263D0 - .4byte sub_8126380 - .4byte script_status_stop_and_ret_1 - .4byte sub_81263E4 - .4byte sub_81263D4 - .4byte sub_812641C - .4byte sub_8126524 - .4byte sub_8126438 - .4byte sub_81264F0 - .4byte sub_812658C - .4byte sub_81265B0 - .4byte sub_81265DC - .4byte sub_8126608 - .4byte sub_8126714 - .4byte sub_8126754 - .4byte sub_8126778 - .4byte sub_81267C0 -gScriptFuncs_End:: diff --git a/data/scripts/bard.inc b/data/scripts/bard.inc deleted file mode 100644 index 3f25b100f..000000000 --- a/data/scripts/bard.inc +++ /dev/null @@ -1,67 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744 - special sub_80F7B14 - switch RESULT - case 0, MauvilleCity_PokemonCenter_1F_EventScript_1AE784 - case 1, MauvilleCity_PokemonCenter_1F_EventScript_1AE845 - case 2, MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB - case 3, MauvilleCity_PokemonCenter_1F_EventScript_1B0816 - case 4, MauvilleCity_PokemonCenter_1F_EventScript_1B09EB - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE784:: @ 81AE784 - lock - faceplayer - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0A91, 5 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7C8 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5:: @ 81AE7A5 - setvar 0x8004, 0 - special sub_80F7C54 - pause 60 - special sub_80F7B2C - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AED, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE7C8:: @ 81AE7C8 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AC3, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2:: @ 81AE7D2 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0B2C, 5 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1:: @ 81AE7F1 - setvar 0x8004, 6 - call MauvilleCity_PokemonCenter_1F_EventScript_1A00F3 - lock - faceplayer - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BD0, 4 - setvar 0x8004, 1 - special sub_80F7C54 - pause 60 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BFA, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1 - special sub_80F7B40 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C23, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE83B:: @ 81AE83B - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BA6, 4 - release - end diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc index 1bbe7d355..9e219a339 100644 --- a/data/scripts/berry_tree.inc +++ b/data/scripts/berry_tree.inc @@ -1,4 +1,4 @@ -BerryTreeScript:: @ 81A14DD +S_BerryTree:: @ 81A14DD special FieldObjectInteractionGetBerryTreeData switch 0x8004 case 255, Route102_EventScript_1A1533 @@ -13,7 +13,7 @@ BerryTreeScript:: @ 81A14DD Route102_EventScript_1A1533:: @ 81A1533 lockall message Route102_Text_1A1946 - waittext + waitmessage waitbutton releaseall end @@ -21,11 +21,11 @@ Route102_EventScript_1A1533:: @ 81A1533 Route102_EventScript_1A153D:: @ 81A153D lock faceplayer - specialval RESULT, PlayerHasBerries + specialvar RESULT, PlayerHasBerries compare RESULT, 1 - jumpeq Route102_EventScript_1A1558 + goto_if_eq Route102_EventScript_1A1558 message Route102_Text_1A16B6 - waittext + waitmessage waitbutton release end @@ -33,18 +33,18 @@ Route102_EventScript_1A153D:: @ 81A153D Route102_EventScript_1A1558:: @ 81A1558 msgbox Route102_Text_1A16CD, 5 compare RESULT, 1 - jumpeq Route102_EventScript_1A1577 + goto_if_eq Route102_EventScript_1A1577 compare RESULT, 0 - jumpeq Route102_EventScript_1A1593 + goto_if_eq Route102_EventScript_1A1593 end Route102_EventScript_1A1577:: @ 81A1577 fadescreen 1 - closebutton + closemessage special sub_80B4EE4 waitstate compare ITEM_ID, 0 - jumpeq Route102_EventScript_1A1593 + goto_if_eq Route102_EventScript_1A1593 removeitem ITEM_ID, 1 call Route102_EventScript_1A16A9 @@ -55,84 +55,84 @@ Route102_EventScript_1A1593:: @ 81A1593 Route102_EventScript_1A1595:: @ 81A1595 lockall message Route102_Text_1A172C - waittext + waitmessage waitbutton - jump Route102_EventScript_1A165F + goto Route102_EventScript_1A165F Route102_EventScript_1A15A2:: @ 81A15A2 lockall message Route102_Text_1A174B - waittext + waitmessage waitbutton - jump Route102_EventScript_1A165F + goto Route102_EventScript_1A165F Route102_EventScript_1A15AF:: @ 81A15AF lockall message Route102_Text_1A175C - waittext + waitmessage waitbutton - jump Route102_EventScript_1A165F + goto Route102_EventScript_1A165F Route102_EventScript_1A15BC:: @ 81A15BC call Route102_EventScript_1A15CE lockall message Route102_Text_1A177D - waittext + waitmessage waitbutton - jump Route102_EventScript_1A165F + goto Route102_EventScript_1A165F Route102_EventScript_1A15CE:: @ 81A15CE compare 0x8005, 0 - jumpeq Route102_EventScript_1A15F2 + goto_if_eq Route102_EventScript_1A15F2 compare 0x8005, 4 - jumpeq Route102_EventScript_1A15EB - buffertext 1, Route102_Text_1A17B7 + goto_if_eq Route102_EventScript_1A15EB + getstring 1, Route102_Text_1A17B7 return Route102_EventScript_1A15EB:: @ 81A15EB - buffertext 1, Route102_Text_1A179F + getstring 1, Route102_Text_1A179F return Route102_EventScript_1A15F2:: @ 81A15F2 - buffertext 1, Route102_Text_1A17B0 + getstring 1, Route102_Text_1A17B0 return Route102_EventScript_1A15F9:: @ 81A15F9 - buffernum 1, 0x8006 + getnumberstring 1, 0x8006 lock faceplayer msgbox Route102_Text_1A17C0, 5 compare RESULT, 1 - jumpeq Route102_EventScript_1A161D + goto_if_eq Route102_EventScript_1A161D compare RESULT, 0 - jumpeq Route102_EventScript_1A164B + goto_if_eq Route102_EventScript_1A164B Route102_EventScript_1A161D:: @ 81A161D special FieldObjectInteractionPickBerryTree compare 0x8004, 0 - jumpeq Route102_EventScript_1A1642 + goto_if_eq Route102_EventScript_1A1642 special FieldObjectInteractionRemoveBerryTree message Route102_Text_1A17FD - fanfare 387 - waittext + playfanfare 387 + waitmessage waitfanfare waitbutton message Route102_Text_1A181A - waittext + waitmessage waitbutton release end Route102_EventScript_1A1642:: @ 81A1642 message Route102_Text_1A1881 - waittext + waitmessage waitbutton release end Route102_EventScript_1A164B:: @ 81A164B message Route102_Text_1A18C5 - waittext + waitmessage waitbutton release end @@ -147,12 +147,12 @@ gUnknown_081A1654:: @ 81A1654 Route102_EventScript_1A165F:: @ 81A165F checkitem ITEM_WAILMER_PAIL, 1 compare RESULT, 0 - jumpeq Route102_EventScript_1A168D + goto_if_eq Route102_EventScript_1A168D msgbox Route102_Text_1A18E6, 5 compare RESULT, 1 - jumpeq Route102_EventScript_1A1693 + goto_if_eq Route102_EventScript_1A1693 compare RESULT, 0 - jumpeq Route102_EventScript_1A168D + goto_if_eq Route102_EventScript_1A168D Route102_EventScript_1A168D:: @ 81A168D releaseall @@ -164,20 +164,20 @@ gUnknown_081A168F:: @ 81A168F Route102_EventScript_1A1693:: @ 81A1693 message Route102_Text_1A1912 - waittext + waitmessage special FieldObjectInteractionWaterBerryTree special DoWateringBerryTreeAnim waitstate message Route102_Text_1A1925 - waittext + waitmessage waitbutton releaseall end Route102_EventScript_1A16A9:: @ 81A16A9 special FieldObjectInteractionPlantBerryTree - inccounter GAME_STAT_PLANTED_BERRIES + incrementgamestat GAME_STAT_PLANTED_BERRIES message Route102_Text_1A16FB - waittext + waitmessage waitbutton return diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index 4a919c597..9f44e131b 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -21,7 +21,7 @@ VerdanturfTown_PokemonCenter_2F_MapScript2_1A3D03:: @ 81A3D03 .2byte 0 OldaleTown_PokemonCenter_2F_EventScript_1A3D2D:: @ 81A3D2D - spriteface 0x8007, 4 + turnobject 0x8007, 4 end DewfordTown_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32 @@ -40,15 +40,15 @@ SlateportCity_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32 SootopolisCity_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32 VerdanturfTown_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32 compare 0x4087, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A compare 0x4087, 2 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A compare 0x4087, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A compare 0x4087, 3 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D74 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D74 compare 0x4087, 4 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D7E + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D7E end OldaleTown_PokemonCenter_2F_EventScript_1A3D6A:: @ 81A3D6A @@ -88,12 +88,12 @@ VerdanturfTown_PokemonCenter_2F_MapScript2_1A3D88:: @ 81A3D88 OldaleTown_PokemonCenter_2F_EventScript_1A3DB2:: @ 81A3DB2 special CloseLink setvar 0x4087, 0 - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 - waitmove 0 + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 + waitmovement 0 compare 0x8007, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3DD9 - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 - waitmove 0 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3DD9 + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 + waitmovement 0 OldaleTown_PokemonCenter_2F_EventScript_1A3DD9:: @ 81A3DD9 return @@ -102,18 +102,18 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3DDA:: @ 81A3DDA special CloseLink setvar 0x4087, 0 compare 0x8007, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 - waitmove 0 - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 - waitmove 0 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 + waitmovement 0 + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 + waitmovement 0 return OldaleTown_PokemonCenter_2F_EventScript_1A3E0C:: @ 81A3E0C - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 - waitmove 0 + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 + waitmovement 0 return OldaleTown_PokemonCenter_2F_EventScript_1A3E17:: @ 81A3E17 @@ -121,7 +121,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3E17:: @ 81A3E17 call OldaleTown_PokemonCenter_2F_EventScript_1A3E30 setmaptile 8, 3, 605, 1 special DrawWholeMapView - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -129,20 +129,20 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3E30:: @ 81A3E30 special CloseLink setvar 0x4087, 0 compare 0x8007, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4361 - waitmove 0 - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4361 + waitmovement 0 + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 message OldaleTown_PokemonCenter_2F_Text_1A4E50 - waittext - playsfx 21 + waitmessage + playse 21 message OldaleTown_PokemonCenter_2F_Text_1A4E79 - waittext - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 - waitmove 0 - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 - waitmove 0 + waitmessage + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 + waitmovement 0 + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 + waitmovement 0 return OldaleTown_PokemonCenter_2F_EventScript_1A3E7B:: @ 81A3E7B @@ -156,7 +156,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3E8D:: @ 81A3E8D call OldaleTown_PokemonCenter_2F_EventScript_1A3DDA setmaptile 5, 3, 605, 1 special DrawWholeMapView - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -175,12 +175,12 @@ SlateportCity_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6 SootopolisCity_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6 VerdanturfTown_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6 checkflag 2049 - jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A4342 + goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A4342 copyvar 0x8007, LAST_TALKED lock faceplayer message OldaleTown_PokemonCenter_2F_Text_1A4510 - waittext + waitmessage OldaleTown_PokemonCenter_2F_EventScript_1A3EBC:: @ 81A3EBC multichoice 17, 6, 17, 0 @@ -191,54 +191,54 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3EBC:: @ 81A3EBC case 127, OldaleTown_PokemonCenter_2F_EventScript_1A4319 OldaleTown_PokemonCenter_2F_EventScript_1A3EF2:: @ 81A3EF2 - call OldaleTown_PokemonCenter_2F_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 call OldaleTown_PokemonCenter_2F_EventScript_1A3FEF compare 0x8004, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 message OldaleTown_PokemonCenter_2F_Text_1A490C - waittext + waitmessage special sub_808347C waitstate compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3F5E + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3F5E compare RESULT, 2 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301 compare RESULT, 3 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D compare RESULT, 4 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4068 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4068 compare RESULT, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 6 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 OldaleTown_PokemonCenter_2F_EventScript_1A3F5E:: @ 81A3F5E - special HealPlayerParty + special ScrSpecial_HealPlayerParty special SavePlayerParty special LoadPlayerBag copyvar 0x4087, 0x8004 - message2 OldaleTown_PokemonCenter_2F_Text_1A4A22 - waittext + messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22 + waitmessage setmaptile 5, 3, 514, 0 special DrawWholeMapView - pause 60 - move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 - closebutton - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B - waitmove 0 - setdooropened 5, 1 - doorchange - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F - waitmove 0 - spriteinvisible 255, 0, 0 - setdoorclosed 5, 1 - doorchange + delay 60 + applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 + closemessage + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B + waitmovement 0 + opendoor 5, 1 + waitdooranim + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F + waitmovement 0 + hideobject 255, 0, 0 + closedoor 5, 1 + waitdooranim release compare 0x8004, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3FCD + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3FCD special SetCableClubWarp warp SingleBattleColosseum, 255, 6, 8 special DoCableClubWarp @@ -254,15 +254,15 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3FCD:: @ 81A3FCD OldaleTown_PokemonCenter_2F_EventScript_1A3FDD:: @ 81A3FDD message OldaleTown_PokemonCenter_2F_Text_1A4696 - waittext + waitmessage waitbutton message OldaleTown_PokemonCenter_2F_Text_1A4826 - waittext - jump OldaleTown_PokemonCenter_2F_EventScript_1A3EBC + waitmessage + goto OldaleTown_PokemonCenter_2F_EventScript_1A3EBC OldaleTown_PokemonCenter_2F_EventScript_1A3FEF:: @ 81A3FEF message OldaleTown_PokemonCenter_2F_Text_1A4840 - waittext + waitmessage multichoice 0, 0, 18, 0 switch RESULT case 0, OldaleTown_PokemonCenter_2F_EventScript_1A4062 @@ -282,15 +282,15 @@ OldaleTown_PokemonCenter_2F_EventScript_1A403C:: @ 81A403C OldaleTown_PokemonCenter_2F_EventScript_1A4042:: @ 81A4042 special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, OldaleTown_PokemonCenter_2F_EventScript_1A4056 + goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_1A4056 setvar 0x8004, 2 return OldaleTown_PokemonCenter_2F_EventScript_1A4056:: @ 81A4056 message OldaleTown_PokemonCenter_2F_Text_1A486A - waittext + waitmessage waitbutton - jump OldaleTown_PokemonCenter_2F_EventScript_1A3FEF + goto OldaleTown_PokemonCenter_2F_EventScript_1A3FEF OldaleTown_PokemonCenter_2F_EventScript_1A4062:: @ 81A4062 setvar 0x8004, 1 @@ -301,33 +301,33 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4068:: @ 81A4068 case 1, OldaleTown_PokemonCenter_2F_EventScript_1A40B1 case 2, OldaleTown_PokemonCenter_2F_EventScript_1A40A2 case 5, OldaleTown_PokemonCenter_2F_EventScript_1A4093 - jump OldaleTown_PokemonCenter_2F_EventScript_1A432D + goto OldaleTown_PokemonCenter_2F_EventScript_1A432D OldaleTown_PokemonCenter_2F_EventScript_1A4093:: @ 81A4093 special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4C03 - waittext + waitmessage waitbutton - jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0 + goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0 OldaleTown_PokemonCenter_2F_EventScript_1A40A2:: @ 81A40A2 special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4BCC - waittext + waitmessage waitbutton - jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0 + goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0 OldaleTown_PokemonCenter_2F_EventScript_1A40B1:: @ 81A40B1 special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4B95 - waittext + waitmessage waitbutton - jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0 + goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0 OldaleTown_PokemonCenter_2F_EventScript_1A40C0:: @ 81A40C0 special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4C38 - waittext + waitmessage waitbutton release end @@ -347,83 +347,83 @@ SlateportCity_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC SootopolisCity_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC VerdanturfTown_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC checkflag 2049 - jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A4339 + goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A4339 copyvar 0x8007, LAST_TALKED lock faceplayer msgbox OldaleTown_PokemonCenter_2F_Text_1A457E, 5 compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A40FA + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A40FA OldaleTown_PokemonCenter_2F_EventScript_1A40FA:: @ 81A40FA call OldaleTown_PokemonCenter_2F_EventScript_1A41BB compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 - call OldaleTown_PokemonCenter_2F_EventScript_19F806 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + call S_DoSaveDialog compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 message OldaleTown_PokemonCenter_2F_Text_1A490C - waittext + waitmessage special sub_80834E4 waitstate compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4166 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4166 compare RESULT, 2 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301 compare RESULT, 3 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D compare RESULT, 4 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A432D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A432D compare RESULT, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 6 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 OldaleTown_PokemonCenter_2F_EventScript_1A4166:: @ 81A4166 setvar 0x8004, 3 copyvar 0x4087, 0x8004 - message2 OldaleTown_PokemonCenter_2F_Text_1A4A22 - waittext + messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22 + waitmessage setmaptile 8, 3, 514, 0 special DrawWholeMapView - pause 60 - move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 - closebutton - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B - waitmove 0 - setdooropened 8, 1 - doorchange - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F - waitmove 0 - spriteinvisible 255, 0, 0 - setdoorclosed 8, 1 - doorchange + delay 60 + applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 + closemessage + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B + waitmovement 0 + opendoor 8, 1 + waitdooranim + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F + waitmovement 0 + hideobject 255, 0, 0 + closedoor 8, 1 + waitdooranim release - jump OldaleTown_PokemonCenter_2F_EventScript_1A4325 + goto OldaleTown_PokemonCenter_2F_EventScript_1A4325 OldaleTown_PokemonCenter_2F_EventScript_1A41BB:: @ 81A41BB - specialval RESULT, CalculatePlayerPartyCount + specialvar RESULT, CalculatePlayerPartyCount compare RESULT, 2 - jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A41E1 - specialval RESULT, GetNameOfEnigmaBerryInPlayerParty + goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A41E1 + specialvar RESULT, GetNameOfEnigmaBerryInPlayerParty compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A41EE + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A41EE setvar RESULT, 1 return OldaleTown_PokemonCenter_2F_EventScript_1A41E1:: @ 81A41E1 message OldaleTown_PokemonCenter_2F_Text_1A48A3 - waittext + waitmessage waitbutton setvar RESULT, 0 return OldaleTown_PokemonCenter_2F_EventScript_1A41EE:: @ 81A41EE message OldaleTown_PokemonCenter_2F_Text_1A48DD - waittext + waitmessage waitbutton setvar RESULT, 0 return @@ -444,68 +444,68 @@ SlateportCity_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB SootopolisCity_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB VerdanturfTown_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB checkflag 2072 - jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A434B + goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A434B copyvar 0x8007, LAST_TALKED lock faceplayer msgbox OldaleTown_PokemonCenter_2F_Text_1A45FE, 5 compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4229 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4229 OldaleTown_PokemonCenter_2F_EventScript_1A4229:: @ 81A4229 - call OldaleTown_PokemonCenter_2F_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 message OldaleTown_PokemonCenter_2F_Text_1A490C - waittext + waitmessage special sub_808350C waitstate special sub_80835D8 waitstate compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4294 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4294 compare RESULT, 2 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301 compare RESULT, 3 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D compare RESULT, 4 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A432D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A432D compare RESULT, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 6 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 compare RESULT, 7 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42E9 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42E9 OldaleTown_PokemonCenter_2F_EventScript_1A4294:: @ 81A4294 setvar 0x8004, 4 copyvar 0x4087, 0x8004 - message2 OldaleTown_PokemonCenter_2F_Text_1A4A22 - waittext + messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22 + waitmessage setmaptile 11, 3, 514, 0 special DrawWholeMapView - pause 60 - move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 - closebutton - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B - waitmove 0 - setdooropened 11, 1 - doorchange - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F - waitmove 0 - spriteinvisible 255, 0, 0 - setdoorclosed 11, 1 - doorchange + delay 60 + applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 + closemessage + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B + waitmovement 0 + opendoor 11, 1 + waitdooranim + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F + waitmovement 0 + hideobject 255, 0, 0 + closedoor 11, 1 + waitdooranim release - jump OldaleTown_PokemonCenter_2F_EventScript_1A4325 + goto OldaleTown_PokemonCenter_2F_EventScript_1A4325 OldaleTown_PokemonCenter_2F_EventScript_1A42E9:: @ 81A42E9 special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4AC8 - waittext + waitmessage waitbutton release end @@ -513,7 +513,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A42E9:: @ 81A42E9 OldaleTown_PokemonCenter_2F_EventScript_1A42F5:: @ 81A42F5 special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4A85 - waittext + waitmessage waitbutton release end @@ -521,7 +521,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A42F5:: @ 81A42F5 OldaleTown_PokemonCenter_2F_EventScript_1A4301:: @ 81A4301 special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4A30 - waittext + waitmessage waitbutton release end @@ -529,7 +529,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4301:: @ 81A4301 OldaleTown_PokemonCenter_2F_EventScript_1A430D:: @ 81A430D special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4B1D - waittext + waitmessage waitbutton release end @@ -537,7 +537,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A430D:: @ 81A430D OldaleTown_PokemonCenter_2F_EventScript_1A4319:: @ 81A4319 special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4B59 - waittext + waitmessage waitbutton release end @@ -551,7 +551,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4325:: @ 81A4325 OldaleTown_PokemonCenter_2F_EventScript_1A432D:: @ 81A432D special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4B6C - waittext + waitmessage waitbutton release end @@ -599,7 +599,7 @@ gUnknown_081A4363:: @ 81A4363 lockall special ShowLinkBattleRecords waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -620,7 +620,7 @@ DoubleBattleColosseum_EventScript_1A4383:: @ 81A4383 special sub_80C5568 waitstate compare RESULT, 0 - jumpeq DoubleBattleColosseum_EventScript_1A43EF + goto_if_eq DoubleBattleColosseum_EventScript_1A43EF setvar 0x8005, 0 special sub_8083B90 waitstate @@ -631,7 +631,7 @@ DoubleBattleColosseum_EventScript_1A439E:: @ 81A439E special sub_80C5568 waitstate compare RESULT, 0 - jumpeq DoubleBattleColosseum_EventScript_1A43EF + goto_if_eq DoubleBattleColosseum_EventScript_1A43EF setvar 0x8005, 1 special sub_8083B90 waitstate @@ -642,7 +642,7 @@ DoubleBattleColosseum_EventScript_1A43B9:: @ 81A43B9 special sub_80C5568 waitstate compare RESULT, 0 - jumpeq DoubleBattleColosseum_EventScript_1A43EF + goto_if_eq DoubleBattleColosseum_EventScript_1A43EF setvar 0x8005, 2 special sub_8083B90 waitstate @@ -653,7 +653,7 @@ DoubleBattleColosseum_EventScript_1A43D4:: @ 81A43D4 special sub_80C5568 waitstate compare RESULT, 0 - jumpeq DoubleBattleColosseum_EventScript_1A43EF + goto_if_eq DoubleBattleColosseum_EventScript_1A43EF setvar 0x8005, 3 special sub_8083B90 waitstate @@ -691,7 +691,7 @@ RecordCorner_EventScript_1A4418:: @ 81A4418 special sub_80B929C waitstate compare 0x4001, 0 - jumpif 5, RecordCorner_EventScript_1A446C + goto_if 5, RecordCorner_EventScript_1A446C end RecordCorner_EventScript_1A442D:: @ 81A442D @@ -699,7 +699,7 @@ RecordCorner_EventScript_1A442D:: @ 81A442D special sub_80B929C waitstate compare 0x4001, 0 - jumpif 5, RecordCorner_EventScript_1A446C + goto_if 5, RecordCorner_EventScript_1A446C end RecordCorner_EventScript_1A4442:: @ 81A4442 @@ -707,7 +707,7 @@ RecordCorner_EventScript_1A4442:: @ 81A4442 special sub_80B929C waitstate compare 0x4001, 0 - jumpif 5, RecordCorner_EventScript_1A446C + goto_if 5, RecordCorner_EventScript_1A446C end RecordCorner_EventScript_1A4457:: @ 81A4457 @@ -715,20 +715,20 @@ RecordCorner_EventScript_1A4457:: @ 81A4457 special sub_80B929C waitstate compare 0x4001, 0 - jumpif 5, RecordCorner_EventScript_1A446C + goto_if 5, RecordCorner_EventScript_1A446C end RecordCorner_EventScript_1A446C:: @ 81A446C - bufferitem 1, 0x4001 + getitemname 1, 0x4001 message RecordCorner_Text_1A4E3B - waittext + waitmessage waitbutton releaseall end TradeRoom_ReadTrainerCard1:: @ 81A4479 message CableClub_LookAtTrainerCard1 - waittext + waitmessage waitbutton fadescreen 1 special sub_8083BDC @@ -737,7 +737,7 @@ TradeRoom_ReadTrainerCard1:: @ 81A4479 TradeRoom_ReadTrainerCard2:: @ 81A4487 message CableClub_LookAtTrainerCard2 - waittext + waitmessage waitbutton fadescreen 1 special sub_8083BDC @@ -746,59 +746,59 @@ TradeRoom_ReadTrainerCard2:: @ 81A4487 TradeRoom_TooBusyToNotice:: @ 81A4495 message CableClub_TooBusyToNotice - waittext + waitmessage waitbutton - closebutton + closemessage end SingleBattleColosseum_EventScript_1A449E:: @ 81A449E special sub_8064EAC message SingleBattleColosseum_Text_1A4D7E - waittext + waitmessage waitbutton special sub_8064ED4 - closebutton + closemessage end TradeCenter_EventScript_1A44AD:: @ 81A44AD special sub_8064EAC message TradeCenter_Text_1A4DAB - waittext + waitmessage waitbutton special sub_8064ED4 - closebutton + closemessage end RecordCorner_EventScript_1A44BC:: @ 81A44BC compare 0x4000, 0 - jumpif 5, RecordCorner_EventScript_1A44D6 + goto_if 5, RecordCorner_EventScript_1A44D6 special sub_8064EAC message RecordCorner_Text_1A4DD7 - waittext + waitmessage waitbutton special sub_8064ED4 - closebutton + closemessage end RecordCorner_EventScript_1A44D6:: @ 81A44D6 special sub_8064EAC message RecordCorner_Text_1A4DF7 - waittext + waitmessage waitbutton special sub_8064ED4 - closebutton + closemessage end TradeRoom_PromptToCancelLink:: @ 81A44E5 msgbox TradeRoom_WillLinkBeTerminated, 5 compare RESULT, 1 - jumpeq TradeRoom_TerminateLink - hidebox 0, 0, 29, 19 + goto_if_eq TradeRoom_TerminateLink + erasebox 0, 0, 29, 19 end TradeRoom_TerminateLink:: @ 81A44FE - message2 TradeRoom_TerminatingLink - waittext + messageautoscroll TradeRoom_TerminatingLink + waitmessage special sub_80839D0 end diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc index 1952264d2..1b5c29fee 100644 --- a/data/scripts/contest_hall.inc +++ b/data/scripts/contest_hall.inc @@ -6,18 +6,18 @@ VerdanturfTown_ContestLobby_EventScript_1A4E92:: @ 81A4E92 faceplayer checkitem ITEM_CONTEST_PASS, 1 compare RESULT, 0 - callif 1, FallarborTown_ContestLobby_EventScript_1A4EDD + call_if 1, FallarborTown_ContestLobby_EventScript_1A4EDD compare 0x408a, 0 - jumpif 5, FallarborTown_ContestLobby_EventScript_1A4F4E + goto_if 5, FallarborTown_ContestLobby_EventScript_1A4F4E checkflag 1 - jumpeq FallarborTown_ContestLobby_EventScript_1A4F8F - bufferstd 0, 0x800b + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F8F + getstdstring 0, 0x800b msgbox FallarborTown_ContestLobby_Text_1A5DFC, 4 checkitem ITEM_CONTEST_PASS, 1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1A4EE1 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4EE1 setflag 1 - jump FallarborTown_ContestLobby_EventScript_1A4F8F + goto FallarborTown_ContestLobby_EventScript_1A4F8F end FallarborTown_ContestLobby_EventScript_1A4EDD:: @ 81A4EDD @@ -26,7 +26,7 @@ FallarborTown_ContestLobby_EventScript_1A4EDD:: @ 81A4EDD FallarborTown_ContestLobby_EventScript_1A4EE1:: @ 81A4EE1 compare CONTEST_RANK, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1A4EF6 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4EF6 msgbox FallarborTown_ContestLobby_Text_1A6340, 4 releaseall end @@ -34,20 +34,20 @@ FallarborTown_ContestLobby_EventScript_1A4EE1:: @ 81A4EE1 FallarborTown_ContestLobby_EventScript_1A4EF6:: @ 81A4EF6 msgbox FallarborTown_ContestLobby_Text_1A64F4, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1A4F13 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F13 msgbox FallarborTown_ContestLobby_Text_1A65EA, 4 releaseall end FallarborTown_ContestLobby_EventScript_1A4F13:: @ 81A4F13 checkflag 150 - jumpeq FallarborTown_ContestLobby_EventScript_1A4F44 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F44 msgbox FallarborTown_ContestLobby_Text_1A6583, 4 giveitem ITEM_CONTEST_PASS setflag 150 setflag 1 msgbox FallarborTown_ContestLobby_Text_1A5E98, 4 - jump FallarborTown_ContestLobby_EventScript_1A4F8F + goto FallarborTown_ContestLobby_EventScript_1A4F8F end FallarborTown_ContestLobby_EventScript_1A4F44:: @ 81A4F44 @@ -64,9 +64,9 @@ FallarborTown_ContestLobby_EventScript_1A4F4E:: @ 81A4F4E FallarborTown_ContestLobby_EventScript_1A4F67:: @ 81A4F67 giveitem ITEM_LUXURY_BALL compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1A4F86 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F86 setvar 0x408a, 0 - closebutton + closemessage release end @@ -76,7 +76,7 @@ FallarborTown_ContestLobby_EventScript_1A4F86:: @ 81A4F86 FallarborTown_ContestLobby_EventScript_1A4F8F:: @ 81A4F8F message FallarborTown_ContestLobby_Text_1A5E46 - waittext + waitmessage multichoice 0, 0, 2, 0 switch RESULT case 0, FallarborTown_ContestLobby_EventScript_1A5097 @@ -87,7 +87,7 @@ FallarborTown_ContestLobby_EventScript_1A4F8F:: @ 81A4F8F FallarborTown_ContestLobby_EventScript_1A4FCC:: @ 81A4FCC message FallarborTown_ContestLobby_Text_1A5E7C - waittext + waitmessage multichoice 0, 0, 3, 0 switch RESULT case 0, FallarborTown_ContestLobby_EventScript_1A5014 @@ -99,17 +99,17 @@ FallarborTown_ContestLobby_EventScript_1A4FCC:: @ 81A4FCC FallarborTown_ContestLobby_EventScript_1A5014:: @ 81A5014 msgbox FallarborTown_ContestLobby_Text_1A5E98, 4 - jump FallarborTown_ContestLobby_EventScript_1A4FCC + goto FallarborTown_ContestLobby_EventScript_1A4FCC end FallarborTown_ContestLobby_EventScript_1A5022:: @ 81A5022 msgbox FallarborTown_ContestLobby_Text_1A609B, 4 - jump FallarborTown_ContestLobby_EventScript_1A4FCC + goto FallarborTown_ContestLobby_EventScript_1A4FCC end FallarborTown_ContestLobby_EventScript_1A5030:: @ 81A5030 msgbox FallarborTown_ContestLobby_Text_1A613F, 4 - jump FallarborTown_ContestLobby_EventScript_1A4FCC + goto FallarborTown_ContestLobby_EventScript_1A4FCC end FallarborTown_ContestLobby_EventScript_1A503E:: @ 81A503E @@ -121,34 +121,34 @@ FallarborTown_ContestLobby_EventScript_1A5048:: @ 81A5048 msgbox FallarborTown_ContestLobby_Text_1A6319, 4 choosecontestpkmn compare 0x8004, 255 - jumpeq FallarborTown_ContestLobby_EventScript_1A5097 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A5097 special sub_80C43F4 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1A50C8 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A50C8 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1A50D7 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A50D7 compare RESULT, 2 - jumpeq FallarborTown_ContestLobby_EventScript_1A50FB + goto_if_eq FallarborTown_ContestLobby_EventScript_1A50FB compare RESULT, 3 - jumpeq FallarborTown_ContestLobby_EventScript_1A511F + goto_if_eq FallarborTown_ContestLobby_EventScript_1A511F compare RESULT, 4 - jumpeq FallarborTown_ContestLobby_EventScript_1A512E + goto_if_eq FallarborTown_ContestLobby_EventScript_1A512E end FallarborTown_ContestLobby_EventScript_1A5097:: @ 81A5097 message FallarborTown_ContestLobby_Text_1A6623 - waittext + waitmessage multichoice 0, 0, 4, 0 switch RESULT case 5, FallarborTown_ContestLobby_EventScript_1A503E case 127, FallarborTown_ContestLobby_EventScript_1A503E copyvar CONTEST_CATEGORY, RESULT - jump FallarborTown_ContestLobby_EventScript_1A5048 + goto FallarborTown_ContestLobby_EventScript_1A5048 end FallarborTown_ContestLobby_EventScript_1A50C8:: @ 81A50C8 msgbox FallarborTown_ContestLobby_Text_1A664A, 4 - jump FallarborTown_ContestLobby_EventScript_1A5048 + goto FallarborTown_ContestLobby_EventScript_1A5048 release end @@ -168,19 +168,19 @@ FallarborTown_ContestLobby_EventScript_1A50FB:: @ 81A50FB FallarborTown_ContestLobby_EventScript_1A511F:: @ 81A511F msgbox FallarborTown_ContestLobby_Text_1A669F, 4 - jump FallarborTown_ContestLobby_EventScript_1A5048 + goto FallarborTown_ContestLobby_EventScript_1A5048 release end FallarborTown_ContestLobby_EventScript_1A512E:: @ 81A512E msgbox FallarborTown_ContestLobby_Text_1A66DC, 4 - jump FallarborTown_ContestLobby_EventScript_1A5048 + goto FallarborTown_ContestLobby_EventScript_1A5048 release end FallarborTown_ContestLobby_EventScript_1A513D:: @ 81A513D msgbox FallarborTown_ContestLobby_Text_1A67C1, 4 - closebutton + closemessage releaseall setvar 0x4086, 1 return @@ -188,10 +188,10 @@ FallarborTown_ContestLobby_EventScript_1A513D:: @ 81A513D LinkContestRoom1_EventScript_1A514D:: @ 81A514D setvar 0x8006, 0 lockall - move 14, LinkContestRoom1_Movement_1A5DBF - waitmove 0 - move 1, LinkContestRoom1_Movement_1A5D85 - waitmove 0 + applymovement 14, LinkContestRoom1_Movement_1A5DBF + waitmovement 0 + applymovement 1, LinkContestRoom1_Movement_1A5D85 + waitmovement 0 releaseall call LinkContestRoom1_EventScript_1A51A0 call LinkContestRoom1_EventScript_1A51EA @@ -260,24 +260,24 @@ LinkContestRoom1_EventScript_1A523F:: @ 81A523F return LinkContestRoom1_EventScript_1A5245:: @ 81A5245 - bufferstd 1, 0x8008 - bufferstd 2, 0x8009 + getstdstring 1, 0x8008 + getstdstring 2, 0x8009 call LinkContestRoom1_EventScript_1A525F lockall - move 1, LinkContestRoom1_Movement_1A5D87 - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5D87 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A525F:: @ 81A525F compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5273 + goto_if_eq LinkContestRoom1_EventScript_1A5273 msgbox LinkContestRoom1_Text_1A68F0, 3 return LinkContestRoom1_EventScript_1A5273:: @ 81A5273 - message2 LinkContestRoom1_Text_1A6976 - waittext + messageautoscroll LinkContestRoom1_Text_1A6976 + waitmessage return LinkContestRoom1_EventScript_1A527A:: @ 81A527A @@ -288,50 +288,50 @@ LinkContestRoom1_EventScript_1A527A:: @ 81A527A call LinkContestRoom1_EventScript_1A5880 addvar 0x8006, 1 compare 0x8006, 4 - jumpif 5, LinkContestRoom1_EventScript_1A527A + goto_if 5, LinkContestRoom1_EventScript_1A527A call LinkContestRoom1_EventScript_1A5377 setvar 0x4001, 6 return LinkContestRoom1_EventScript_1A52AE:: @ 81A52AE compare 0x8006, 0 - jumpeq LinkContestRoom1_EventScript_1A52DB + goto_if_eq LinkContestRoom1_EventScript_1A52DB compare 0x8006, 1 - jumpeq LinkContestRoom1_EventScript_1A52ED + goto_if_eq LinkContestRoom1_EventScript_1A52ED compare 0x8006, 2 - jumpeq LinkContestRoom1_EventScript_1A52FF + goto_if_eq LinkContestRoom1_EventScript_1A52FF compare 0x8006, 3 - jumpeq LinkContestRoom1_EventScript_1A5311 + goto_if_eq LinkContestRoom1_EventScript_1A5311 return LinkContestRoom1_EventScript_1A52DB:: @ 81A52DB lockall - move 3, LinkContestRoom1_Movement_1A5DCE - waitmove 0 + applymovement 3, LinkContestRoom1_Movement_1A5DCE + waitmovement 0 releaseall setvar 0x800b, 3 return LinkContestRoom1_EventScript_1A52ED:: @ 81A52ED lockall - move 4, LinkContestRoom1_Movement_1A5DDA - waitmove 0 + applymovement 4, LinkContestRoom1_Movement_1A5DDA + waitmovement 0 releaseall setvar 0x800b, 4 return LinkContestRoom1_EventScript_1A52FF:: @ 81A52FF lockall - move 5, LinkContestRoom1_Movement_1A5DE2 - waitmove 0 + applymovement 5, LinkContestRoom1_Movement_1A5DE2 + waitmovement 0 releaseall setvar 0x800b, 5 return LinkContestRoom1_EventScript_1A5311:: @ 81A5311 lockall - move 14, LinkContestRoom1_Movement_1A5DEA - waitmove 0 + applymovement 14, LinkContestRoom1_Movement_1A5DEA + waitmovement 0 releaseall setvar 0x800b, 14 return @@ -339,108 +339,108 @@ LinkContestRoom1_EventScript_1A5311:: @ 81A5311 LinkContestRoom1_EventScript_1A5323:: @ 81A5323 special sub_80C4C64 addvar 0x8006, 1 - buffernum 1, 0x8006 + getnumberstring 1, 0x8006 lockall - move 0x800b, LinkContestRoom1_Movement_1A5D9C - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5D9C + waitmovement 0 releaseall - reappear 13 - playsfx 10 + addobject 13 + playse 10 lockall - move 0x800b, LinkContestRoom1_Movement_1A5D9C - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5D9C + waitmovement 0 releaseall addvar 0x8006, -1 - playsfx 15 + playse 15 special ShowContestEntryMonPic call LinkContestRoom1_EventScript_1A535E return LinkContestRoom1_EventScript_1A535E:: @ 81A535E compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5370 + goto_if_eq LinkContestRoom1_EventScript_1A5370 message LinkContestRoom1_Text_1A6A04 - waittext + waitmessage return LinkContestRoom1_EventScript_1A5370:: @ 81A5370 - message2 LinkContestRoom1_Text_1A6A04 - waittext + messageautoscroll LinkContestRoom1_Text_1A6A04 + waitmessage return LinkContestRoom1_EventScript_1A5377:: @ 81A5377 call LinkContestRoom1_EventScript_1A53B3 call LinkContestRoom1_EventScript_1A53CE - playsfx 223 - waittext + playse 223 + waitmessage call LinkContestRoom1_EventScript_1A5A90 - move 1, LinkContestRoom1_Movement_1A5D9F - waitmove 0 - move 2, LinkContestRoom1_Movement_1A5DA1 - waitmove 0 - pause 20 - move 1, LinkContestRoom1_Movement_1A5D8F - move 2, LinkContestRoom1_Movement_1A5D8F - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5D9F + waitmovement 0 + applymovement 2, LinkContestRoom1_Movement_1A5DA1 + waitmovement 0 + delay 20 + applymovement 1, LinkContestRoom1_Movement_1A5D8F + applymovement 2, LinkContestRoom1_Movement_1A5D8F + waitmovement 0 return LinkContestRoom1_EventScript_1A53B3:: @ 81A53B3 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A53C7 + goto_if_eq LinkContestRoom1_EventScript_1A53C7 msgbox LinkContestRoom1_Text_1A6A1F, 4 return LinkContestRoom1_EventScript_1A53C7:: @ 81A53C7 - message2 LinkContestRoom1_Text_1A6A1F - waittext + messageautoscroll LinkContestRoom1_Text_1A6A1F + waitmessage return LinkContestRoom1_EventScript_1A53CE:: @ 81A53CE compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A53DF + goto_if_eq LinkContestRoom1_EventScript_1A53DF message LinkContestRoom1_Text_1A6AE1 return LinkContestRoom1_EventScript_1A53DF:: @ 81A53DF - message2 LinkContestRoom1_Text_1A6AE1 + messageautoscroll LinkContestRoom1_Text_1A6AE1 return LinkContestRoom1_EventScript_1A53E5:: @ 81A53E5 - move 1, LinkContestRoom1_Movement_1A5DAF - waitmove 0 - playsfx 223 + applymovement 1, LinkContestRoom1_Movement_1A5DAF + waitmovement 0 + playse 223 call LinkContestRoom1_EventScript_1A5AE4 - move 9, LinkContestRoom1_Movement_1A5DB7 - move 12, LinkContestRoom1_Movement_1A5DBB - move 7, LinkContestRoom1_Movement_1A5DB7 - waitmove 0 - move 1, LinkContestRoom1_Movement_1A5DB7 - waitmove 0 - move 10, LinkContestRoom1_Movement_1A5DAF - move 11, LinkContestRoom1_Movement_1A5DBB - move 6, LinkContestRoom1_Movement_1A5DB3 - move 8, LinkContestRoom1_Movement_1A5DAF - waitmove 0 - move 1, LinkContestRoom1_Movement_1A5DC1 - waitmove 0 - move 1, LinkContestRoom1_Movement_1A5DCA - move 2, LinkContestRoom1_Movement_1A5DC5 - waitmove 0 + applymovement 9, LinkContestRoom1_Movement_1A5DB7 + applymovement 12, LinkContestRoom1_Movement_1A5DBB + applymovement 7, LinkContestRoom1_Movement_1A5DB7 + waitmovement 0 + applymovement 1, LinkContestRoom1_Movement_1A5DB7 + waitmovement 0 + applymovement 10, LinkContestRoom1_Movement_1A5DAF + applymovement 11, LinkContestRoom1_Movement_1A5DBB + applymovement 6, LinkContestRoom1_Movement_1A5DB3 + applymovement 8, LinkContestRoom1_Movement_1A5DAF + waitmovement 0 + applymovement 1, LinkContestRoom1_Movement_1A5DC1 + waitmovement 0 + applymovement 1, LinkContestRoom1_Movement_1A5DCA + applymovement 2, LinkContestRoom1_Movement_1A5DC5 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5455:: @ 81A5455 special sub_80C47A0 compare 0x4088, 1 - callif 1, LinkContestRoom1_EventScript_1A555A + call_if 1, LinkContestRoom1_EventScript_1A555A compare 0x4088, 2 - callif 1, LinkContestRoom1_EventScript_1A55B8 + call_if 1, LinkContestRoom1_EventScript_1A55B8 compare 0x4088, 3 - callif 1, LinkContestRoom1_EventScript_1A5616 + call_if 1, LinkContestRoom1_EventScript_1A5616 compare 0x4088, 4 - callif 1, LinkContestRoom1_EventScript_1A5674 + call_if 1, LinkContestRoom1_EventScript_1A5674 compare 0x4088, 5 - callif 1, LinkContestRoom1_EventScript_1A56D2 + call_if 1, LinkContestRoom1_EventScript_1A56D2 setvar 0x4001, 9 setvar 0x4002, 9 setvar 0x4003, 9 @@ -450,7 +450,7 @@ LinkContestRoom1_EventScript_1A5455:: @ 81A5455 setvar 0x4007, 9 setvar 0x4008, 9 compare 0x4000, 0 - callif 2, LinkContestRoom1_EventScript_1A54EB + call_if 2, LinkContestRoom1_EventScript_1A54EB setvar 0x4001, 0 setvar 0x4002, 0 setvar 0x4003, 0 @@ -465,123 +465,123 @@ LinkContestRoom1_EventScript_1A54EB:: @ 81A54EB setvar RESULT, 8 special ScriptRandom compare RESULT, 0 - callif 1, LinkContestRoom1_EventScript_1A5760 + call_if 1, LinkContestRoom1_EventScript_1A5760 compare RESULT, 1 - callif 1, LinkContestRoom1_EventScript_1A5784 + call_if 1, LinkContestRoom1_EventScript_1A5784 compare RESULT, 2 - callif 1, LinkContestRoom1_EventScript_1A57A8 + call_if 1, LinkContestRoom1_EventScript_1A57A8 compare RESULT, 3 - callif 1, LinkContestRoom1_EventScript_1A57CC + call_if 1, LinkContestRoom1_EventScript_1A57CC compare RESULT, 4 - callif 1, LinkContestRoom1_EventScript_1A57F0 + call_if 1, LinkContestRoom1_EventScript_1A57F0 compare RESULT, 5 - callif 1, LinkContestRoom1_EventScript_1A5814 + call_if 1, LinkContestRoom1_EventScript_1A5814 compare RESULT, 6 - callif 1, LinkContestRoom1_EventScript_1A5838 + call_if 1, LinkContestRoom1_EventScript_1A5838 compare RESULT, 7 - callif 1, LinkContestRoom1_EventScript_1A585C + call_if 1, LinkContestRoom1_EventScript_1A585C compare 0x4000, 0 - jumpif 2, LinkContestRoom1_EventScript_1A54EB - waitmove 0 + goto_if 2, LinkContestRoom1_EventScript_1A54EB + waitmovement 0 return LinkContestRoom1_EventScript_1A555A:: @ 81A555A compare 0x8004, 80 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 70 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 60 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 50 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 40 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 30 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 20 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 10 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return LinkContestRoom1_EventScript_1A55B8:: @ 81A55B8 compare 0x8004, 230 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 210 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 190 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 170 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 150 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 130 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 110 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 90 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return LinkContestRoom1_EventScript_1A5616:: @ 81A5616 compare 0x8004, 380 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 350 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 320 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 290 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 260 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 230 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 200 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 170 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return LinkContestRoom1_EventScript_1A5674:: @ 81A5674 compare 0x8004, 600 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 560 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 520 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 480 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 440 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 400 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 360 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 320 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return LinkContestRoom1_EventScript_1A56D2:: @ 81A56D2 compare 0x8004, 600 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 550 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 500 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 450 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 400 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 300 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 200 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 100 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return @@ -619,10 +619,10 @@ LinkContestRoom1_EventScript_1A575A:: @ 81A575A LinkContestRoom1_EventScript_1A5760:: @ 81A5760 compare 0x4001, 1 - jumpeq LinkContestRoom1_EventScript_1A5783 - move 6, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A5783 + applymovement 6, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4001, 1 addvar 0x4000, 65535 return @@ -632,10 +632,10 @@ LinkContestRoom1_EventScript_1A5783:: @ 81A5783 LinkContestRoom1_EventScript_1A5784:: @ 81A5784 compare 0x4002, 1 - jumpeq LinkContestRoom1_EventScript_1A57A7 - move 12, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A57A7 + applymovement 12, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4002, 1 addvar 0x4000, 65535 return @@ -645,10 +645,10 @@ LinkContestRoom1_EventScript_1A57A7:: @ 81A57A7 LinkContestRoom1_EventScript_1A57A8:: @ 81A57A8 compare 0x4003, 1 - jumpeq LinkContestRoom1_EventScript_1A57CB - move 7, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A57CB + applymovement 7, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4003, 1 addvar 0x4000, 65535 return @@ -658,10 +658,10 @@ LinkContestRoom1_EventScript_1A57CB:: @ 81A57CB LinkContestRoom1_EventScript_1A57CC:: @ 81A57CC compare 0x4004, 1 - jumpeq LinkContestRoom1_EventScript_1A57EF - move 8, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A57EF + applymovement 8, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4004, 1 addvar 0x4000, 65535 return @@ -671,10 +671,10 @@ LinkContestRoom1_EventScript_1A57EF:: @ 81A57EF LinkContestRoom1_EventScript_1A57F0:: @ 81A57F0 compare 0x4005, 1 - jumpeq LinkContestRoom1_EventScript_1A5813 - move 9, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A5813 + applymovement 9, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4005, 1 addvar 0x4000, 65535 return @@ -684,10 +684,10 @@ LinkContestRoom1_EventScript_1A5813:: @ 81A5813 LinkContestRoom1_EventScript_1A5814:: @ 81A5814 compare 0x4006, 1 - jumpeq LinkContestRoom1_EventScript_1A5837 - move 10, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A5837 + applymovement 10, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4006, 1 addvar 0x4000, 65535 return @@ -697,10 +697,10 @@ LinkContestRoom1_EventScript_1A5837:: @ 81A5837 LinkContestRoom1_EventScript_1A5838:: @ 81A5838 compare 0x4007, 1 - jumpeq LinkContestRoom1_EventScript_1A585B - move 11, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A585B + applymovement 11, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4007, 1 addvar 0x4000, 65535 return @@ -710,10 +710,10 @@ LinkContestRoom1_EventScript_1A585B:: @ 81A585B LinkContestRoom1_EventScript_1A585C:: @ 81A585C compare 0x4008, 1 - jumpeq LinkContestRoom1_EventScript_1A587F - move 15, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A587F + applymovement 15, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4008, 1 addvar 0x4000, 65535 return @@ -722,9 +722,9 @@ LinkContestRoom1_EventScript_1A587F:: @ 81A587F return LinkContestRoom1_EventScript_1A5880:: @ 81A5880 - closebutton + closemessage release - disappear 13 + removeobject 13 special sub_80C5164 switch 0x8006 case 0, LinkContestRoom1_EventScript_1A58BA @@ -735,125 +735,125 @@ LinkContestRoom1_EventScript_1A5880:: @ 81A5880 LinkContestRoom1_EventScript_1A58BA:: @ 81A58BA lockall - move 0x800b, LinkContestRoom1_Movement_1A5DD4 - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5DD4 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A58C7:: @ 81A58C7 lockall - move 0x800b, LinkContestRoom1_Movement_1A5DDE - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5DDE + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A58D4:: @ 81A58D4 lockall - move 0x800b, LinkContestRoom1_Movement_1A5DE6 - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5DE6 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A58E1:: @ 81A58E1 lockall - move 0x800b, LinkContestRoom1_Movement_1A5DF0 - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5DF0 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A58EE:: @ 81A58EE lockall - move 1, LinkContestRoom1_Movement_1A5DA3 - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5DA3 + waitmovement 0 call LinkContestRoom1_EventScript_1A5930 - waittext - move 1, LinkContestRoom1_Movement_1A5D91 - move 2, LinkContestRoom1_Movement_1A5D95 - waitmove 0 + waitmessage + applymovement 1, LinkContestRoom1_Movement_1A5D91 + applymovement 2, LinkContestRoom1_Movement_1A5D95 + waitmovement 0 releaseall setvar 0x4009, 1 startcontest setvar 0x4009, 0 lockall - move 1, LinkContestRoom1_Movement_1A5D95 - move 2, LinkContestRoom1_Movement_1A5D91 - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5D95 + applymovement 2, LinkContestRoom1_Movement_1A5D91 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5930:: @ 81A5930 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5944 + goto_if_eq LinkContestRoom1_EventScript_1A5944 msgbox LinkContestRoom1_Text_1A6AF5, 3 return LinkContestRoom1_EventScript_1A5944:: @ 81A5944 - message2 LinkContestRoom1_Text_1A6AF5 + messageautoscroll LinkContestRoom1_Text_1A6AF5 return LinkContestRoom1_EventScript_1A594A:: @ 81A594A call LinkContestRoom1_EventScript_1A5984 call LinkContestRoom1_EventScript_1A59A2 - move 1, LinkContestRoom1_Movement_1A5D8B - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5D8B + waitmovement 0 call LinkContestRoom1_EventScript_1A59C0 call LinkContestRoom1_EventScript_1A59DE - move 1, LinkContestRoom1_Movement_1A5D8F - waitmove 0 - closebutton + applymovement 1, LinkContestRoom1_Movement_1A5D8F + waitmovement 0 + closemessage releaseall setvar 0x4009, 1 showcontestresults setvar 0x4009, 0 - playmusic 439, 0 + playbgm 439, 0 return LinkContestRoom1_EventScript_1A5984:: @ 81A5984 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5998 + goto_if_eq LinkContestRoom1_EventScript_1A5998 msgbox LinkContestRoom1_Text_1A6C06, 4 return LinkContestRoom1_EventScript_1A5998:: @ 81A5998 - message2 LinkContestRoom1_Text_1A6C06 - waittext - pause 30 + messageautoscroll LinkContestRoom1_Text_1A6C06 + waitmessage + delay 30 return LinkContestRoom1_EventScript_1A59A2:: @ 81A59A2 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A59B6 + goto_if_eq LinkContestRoom1_EventScript_1A59B6 msgbox LinkContestRoom1_Text_1A6C21, 4 return LinkContestRoom1_EventScript_1A59B6:: @ 81A59B6 - message2 LinkContestRoom1_Text_1A6C21 - waittext - pause 30 + messageautoscroll LinkContestRoom1_Text_1A6C21 + waitmessage + delay 30 return LinkContestRoom1_EventScript_1A59C0:: @ 81A59C0 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A59D4 + goto_if_eq LinkContestRoom1_EventScript_1A59D4 msgbox LinkContestRoom1_Text_1A6C9D, 4 return LinkContestRoom1_EventScript_1A59D4:: @ 81A59D4 - message2 LinkContestRoom1_Text_1A6C9D - waittext - pause 30 + messageautoscroll LinkContestRoom1_Text_1A6C9D + waitmessage + delay 30 return LinkContestRoom1_EventScript_1A59DE:: @ 81A59DE compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A59F2 + goto_if_eq LinkContestRoom1_EventScript_1A59F2 msgbox LinkContestRoom1_Text_1A6D16, 4 return LinkContestRoom1_EventScript_1A59F2:: @ 81A59F2 - message2 LinkContestRoom1_Text_1A6D16 - waittext - pause 30 + messageautoscroll LinkContestRoom1_Text_1A6D16 + waitmessage + delay 30 return LinkContestRoom1_EventScript_1A59FC:: @ 81A59FC @@ -885,156 +885,156 @@ LinkContestRoom1_EventScript_1A5A49:: @ 81A5A49 special sub_80C47F0 special sub_80C4858 addvar 0x8005, 1 - buffernum 1, 0x8005 + getnumberstring 1, 0x8005 addvar 0x8005, -1 call LinkContestRoom1_EventScript_1A5A75 - move 0x4003, LinkContestRoom1_Movement_1A5D99 - waitmove 0 - playsfx 223 + applymovement 0x4003, LinkContestRoom1_Movement_1A5D99 + waitmovement 0 + playse 223 setvar 0x4001, 0 return LinkContestRoom1_EventScript_1A5A75:: @ 81A5A75 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5A89 + goto_if_eq LinkContestRoom1_EventScript_1A5A89 msgbox LinkContestRoom1_Text_1A6D3C, 4 return LinkContestRoom1_EventScript_1A5A89:: @ 81A5A89 - message2 LinkContestRoom1_Text_1A6D3C - waittext + messageautoscroll LinkContestRoom1_Text_1A6D3C + waitmessage return LinkContestRoom1_EventScript_1A5A90:: @ 81A5A90 addvar 0x4001, 1 lockall compare 0x4088, 1 - callif 2, LinkContestRoom1_EventScript_1A5AE4 - move 9, LinkContestRoom1_Movement_1A5DB7 - move 12, LinkContestRoom1_Movement_1A5DBB - move 7, LinkContestRoom1_Movement_1A5DB7 - pause 30 - move 10, LinkContestRoom1_Movement_1A5DAF - move 11, LinkContestRoom1_Movement_1A5DBB - move 6, LinkContestRoom1_Movement_1A5DB3 - move 8, LinkContestRoom1_Movement_1A5DAF + call_if 2, LinkContestRoom1_EventScript_1A5AE4 + applymovement 9, LinkContestRoom1_Movement_1A5DB7 + applymovement 12, LinkContestRoom1_Movement_1A5DBB + applymovement 7, LinkContestRoom1_Movement_1A5DB7 + delay 30 + applymovement 10, LinkContestRoom1_Movement_1A5DAF + applymovement 11, LinkContestRoom1_Movement_1A5DBB + applymovement 6, LinkContestRoom1_Movement_1A5DB3 + applymovement 8, LinkContestRoom1_Movement_1A5DAF compare 0x4001, 4 - jumpif 5, LinkContestRoom1_EventScript_1A5A90 - pause 30 + goto_if 5, LinkContestRoom1_EventScript_1A5A90 + delay 30 return LinkContestRoom1_EventScript_1A5AE4:: @ 81A5AE4 - vspriteface 0, 1 - vspriteface 2, 1 - vspriteface 4, 4 - vspriteface 6, 1 - vspriteface 8, 1 - vspriteface 10, 1 - vspriteface 12, 1 - vspriteface 14, 1 - vspriteface 16, 1 - vspriteface 18, 1 - vspriteface 20, 4 - vspriteface 22, 4 - vspriteface 25, 4 - vspriteface 27, 3 - vspriteface 28, 4 - pause 10 - vspriteface 0, 4 - vspriteface 2, 4 - vspriteface 4, 4 - vspriteface 6, 4 - vspriteface 8, 4 - vspriteface 10, 3 - vspriteface 12, 3 - vspriteface 14, 3 - vspriteface 16, 3 - vspriteface 18, 3 - vspriteface 20, 1 - vspriteface 22, 1 - vspriteface 25, 2 - vspriteface 27, 2 - vspriteface 28, 2 - pause 10 - vspriteface 1, 2 - vspriteface 3, 2 - vspriteface 5, 2 - vspriteface 7, 2 - vspriteface 9, 4 - vspriteface 11, 2 - vspriteface 15, 2 - vspriteface 13, 2 - vspriteface 17, 2 - vspriteface 19, 2 - vspriteface 21, 3 - vspriteface 23, 3 - vspriteface 24, 3 - vspriteface 26, 4 - vspriteface 29, 3 - vspriteface 30, 3 - pause 10 - vspriteface 1, 4 - vspriteface 3, 4 - vspriteface 5, 4 - vspriteface 7, 4 - vspriteface 9, 4 - vspriteface 11, 3 - vspriteface 15, 3 - vspriteface 13, 3 - vspriteface 17, 3 - vspriteface 19, 3 - vspriteface 21, 1 - vspriteface 23, 1 - vspriteface 24, 1 - vspriteface 26, 2 - vspriteface 29, 2 - vspriteface 30, 2 - pause 10 + turnvobject 0, 1 + turnvobject 2, 1 + turnvobject 4, 4 + turnvobject 6, 1 + turnvobject 8, 1 + turnvobject 10, 1 + turnvobject 12, 1 + turnvobject 14, 1 + turnvobject 16, 1 + turnvobject 18, 1 + turnvobject 20, 4 + turnvobject 22, 4 + turnvobject 25, 4 + turnvobject 27, 3 + turnvobject 28, 4 + delay 10 + turnvobject 0, 4 + turnvobject 2, 4 + turnvobject 4, 4 + turnvobject 6, 4 + turnvobject 8, 4 + turnvobject 10, 3 + turnvobject 12, 3 + turnvobject 14, 3 + turnvobject 16, 3 + turnvobject 18, 3 + turnvobject 20, 1 + turnvobject 22, 1 + turnvobject 25, 2 + turnvobject 27, 2 + turnvobject 28, 2 + delay 10 + turnvobject 1, 2 + turnvobject 3, 2 + turnvobject 5, 2 + turnvobject 7, 2 + turnvobject 9, 4 + turnvobject 11, 2 + turnvobject 15, 2 + turnvobject 13, 2 + turnvobject 17, 2 + turnvobject 19, 2 + turnvobject 21, 3 + turnvobject 23, 3 + turnvobject 24, 3 + turnvobject 26, 4 + turnvobject 29, 3 + turnvobject 30, 3 + delay 10 + turnvobject 1, 4 + turnvobject 3, 4 + turnvobject 5, 4 + turnvobject 7, 4 + turnvobject 9, 4 + turnvobject 11, 3 + turnvobject 15, 3 + turnvobject 13, 3 + turnvobject 17, 3 + turnvobject 19, 3 + turnvobject 21, 1 + turnvobject 23, 1 + turnvobject 24, 1 + turnvobject 26, 2 + turnvobject 29, 2 + turnvobject 30, 2 + delay 10 return LinkContestRoom1_EventScript_1A5BAB:: @ 81A5BAB compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5C4C + goto_if_eq LinkContestRoom1_EventScript_1A5C4C call LinkContestRoom1_EventScript_1A5C12 checkflag 2 - jumpeq LinkContestRoom1_EventScript_1A5BF6 + goto_if_eq LinkContestRoom1_EventScript_1A5BF6 msgbox LinkContestRoom1_Text_1A6DC5, 3 - waittext + waitmessage call LinkContestRoom1_EventScript_1A5C7F call LinkContestRoom1_EventScript_1A5CE5 - playsfx 223 + playse 223 setvar 0x4001, 0 call LinkContestRoom1_EventScript_1A5A90 - pause 30 + delay 30 special sub_80C4CF8 compare 0x8004, 1 - jumpeq LinkContestRoom1_EventScript_1A5C46 + goto_if_eq LinkContestRoom1_EventScript_1A5C46 return LinkContestRoom1_EventScript_1A5BF6:: @ 81A5BF6 - inccounter GAME_STAT_WON_CONTEST + incrementgamestat GAME_STAT_WON_CONTEST msgbox LinkContestRoom1_Text_1A6DF1, 3 - pause 90 + delay 90 special sub_80C4CF8 compare 0x8004, 1 - jumpeq LinkContestRoom1_EventScript_1A5C46 + goto_if_eq LinkContestRoom1_EventScript_1A5C46 return LinkContestRoom1_EventScript_1A5C12:: @ 81A5C12 - specialval RESULT, sub_80C4440 + specialvar RESULT, sub_80C4440 compare RESULT, 1 - jumpeq LinkContestRoom1_EventScript_1A5C23 + goto_if_eq LinkContestRoom1_EventScript_1A5C23 return LinkContestRoom1_EventScript_1A5C23:: @ 81A5C23 special sub_80C47C0 compare 0x8005, 3 - jumpeq LinkContestRoom1_EventScript_1A5C32 + goto_if_eq LinkContestRoom1_EventScript_1A5C32 return LinkContestRoom1_EventScript_1A5C32:: @ 81A5C32 compare CONTEST_RANK, 3 - jumpeq LinkContestRoom1_EventScript_1A5C41 + goto_if_eq LinkContestRoom1_EventScript_1A5C41 setflag 2 return @@ -1050,12 +1050,12 @@ LinkContestRoom1_EventScript_1A5C46:: @ 81A5C46 return LinkContestRoom1_EventScript_1A5C4C:: @ 81A5C4C - pause 60 + delay 60 call LinkContestRoom1_EventScript_1A5C6A special sub_80C4CF8 compare 0x8004, 1 - jumpeq LinkContestRoom1_EventScript_1A5C64 - closebutton + goto_if_eq LinkContestRoom1_EventScript_1A5C64 + closemessage return LinkContestRoom1_EventScript_1A5C64:: @ 81A5C64 @@ -1065,12 +1065,12 @@ LinkContestRoom1_EventScript_1A5C64:: @ 81A5C64 LinkContestRoom1_EventScript_1A5C6A:: @ 81A5C6A special sub_80C496C special sub_80C47C0 - comparevars 0x8004, 0x8005 - jumpeq LinkContestRoom1_EventScript_1A5C7C + compare 0x8004, 0x8005 + goto_if_eq LinkContestRoom1_EventScript_1A5C7C return LinkContestRoom1_EventScript_1A5C7C:: @ 81A5C7C - inccounter GAME_STAT_WON_LINK_CONTEST + incrementgamestat GAME_STAT_WON_LINK_CONTEST return LinkContestRoom1_EventScript_1A5C7F:: @ 81A5C7F @@ -1083,48 +1083,48 @@ LinkContestRoom1_EventScript_1A5C7F:: @ 81A5C7F LinkContestRoom1_EventScript_1A5CB1:: @ 81A5CB1 lockall - move 0x4003, LinkContestRoom1_Movement_1A5DF6 - waitmove 0 + applymovement 0x4003, LinkContestRoom1_Movement_1A5DF6 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5CBE:: @ 81A5CBE lockall - move 0x4003, LinkContestRoom1_Movement_1A5DFA - waitmove 0 + applymovement 0x4003, LinkContestRoom1_Movement_1A5DFA + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5CCB:: @ 81A5CCB lockall - move 0x4003, LinkContestRoom1_Movement_1A5DA5 - waitmove 0 + applymovement 0x4003, LinkContestRoom1_Movement_1A5DA5 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5CD8:: @ 81A5CD8 lockall - move 0x4003, LinkContestRoom1_Movement_1A5DA9 - waitmove 0 + applymovement 0x4003, LinkContestRoom1_Movement_1A5DA9 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5CE5:: @ 81A5CE5 special sub_80C47C0 compare 0x8005, 3 - jumpeq LinkContestRoom1_EventScript_1A5CFC + goto_if_eq LinkContestRoom1_EventScript_1A5CFC msgbox LinkContestRoom1_Text_1A6DF1, 3 return LinkContestRoom1_EventScript_1A5CFC:: @ 81A5CFC compare 0x4088, 2 - callif 1, LinkContestRoom1_EventScript_1A5C42 - inccounter GAME_STAT_WON_CONTEST - specialval RESULT, sub_80C4440 + call_if 1, LinkContestRoom1_EventScript_1A5C42 + incrementgamestat GAME_STAT_WON_CONTEST + specialvar RESULT, sub_80C4440 compare RESULT, 0 - jumpeq LinkContestRoom1_EventScript_1A5D5B + goto_if_eq LinkContestRoom1_EventScript_1A5D5B compare CONTEST_RANK, 3 - jumpeq LinkContestRoom1_EventScript_1A5D3B + goto_if_eq LinkContestRoom1_EventScript_1A5D3B msgbox LinkContestRoom1_Text_1A6DF1, 3 return @@ -1136,17 +1136,17 @@ LinkContestRoom1_EventScript_1A5D2D:: @ 81A5D2D LinkContestRoom1_EventScript_1A5D3B:: @ 81A5D3B giveitem ITEM_LUXURY_BALL compare RESULT, 0 - jumpeq LinkContestRoom1_EventScript_1A5D2D + goto_if_eq LinkContestRoom1_EventScript_1A5D2D msgbox LinkContestRoom1_Text_1A6DF1, 3 return LinkContestRoom1_EventScript_1A5D5B:: @ 81A5D5B special sub_80C44C0 - inccounter GAME_STAT_RECEIVED_RIBBONS + incrementgamestat GAME_STAT_RECEIVED_RIBBONS setflag 2107 lockall msgbox LinkContestRoom1_Text_1A6D6A, 4 - fanfare 370 + playfanfare 370 msgbox LinkContestRoom1_Text_1A6D96, 4 waitfanfare special sub_80C4858 diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc index b5b3d4670..f8151b86a 100644 --- a/data/scripts/day_care.inc +++ b/data/scripts/day_care.inc @@ -2,13 +2,13 @@ Route117_EventScript_1B222D:: @ 81B222D lock faceplayer special sp0B5_daycare - specialval RESULT, sp0B6_daycare + specialvar RESULT, sp0B6_daycare compare RESULT, 1 - jumpeq Route117_EventScript_1B2262 + goto_if_eq Route117_EventScript_1B2262 compare RESULT, 2 - jumpeq Route117_EventScript_1B22E7 + goto_if_eq Route117_EventScript_1B22E7 compare RESULT, 3 - jumpeq Route117_EventScript_1B22FE + goto_if_eq Route117_EventScript_1B22FE msgbox Route117_Text_1B25CB, 4 release end @@ -16,10 +16,10 @@ Route117_EventScript_1B222D:: @ 81B222D Route117_EventScript_1B2262:: @ 81B2262 msgbox Route117_Text_1B2659, 5 compare RESULT, 1 - jumpeq Route117_EventScript_1B2298 + goto_if_eq Route117_EventScript_1B2298 msgbox Route117_Text_1B28C4, 5 compare RESULT, 1 - jumpeq Route117_EventScript_1B2298 + goto_if_eq Route117_EventScript_1B2298 msgbox Route117_Text_1B2745, 4 clearflag 134 special sub_8041E7C @@ -27,18 +27,18 @@ Route117_EventScript_1B2262:: @ 81B2262 end Route117_EventScript_1B2298:: @ 81B2298 - specialval RESULT, CalculatePlayerPartyCount + specialvar RESULT, CalculatePlayerPartyCount compare RESULT, 6 - jumpif 5, Route117_EventScript_1B22B2 + goto_if 5, Route117_EventScript_1B22B2 msgbox Route117_Text_1B2766, 4 release end Route117_EventScript_1B22B2:: @ 81B22B2 message Route117_Text_1B27A2 - fanfare 367 + playfanfare 367 waitfanfare - waittext + waitmessage waitbutton msgbox Route117_Text_1B27CD, 4 special sp0B8_daycare @@ -47,9 +47,9 @@ Route117_EventScript_1B22B2:: @ 81B22B2 end Route117_EventScript_1B22CD:: @ 81B22CD - specialval RESULT, sub_8042B4C + specialvar RESULT, sub_8042B4C compare RESULT, 1 - callif 1, Route117_EventScript_1B22DE + call_if 1, Route117_EventScript_1B22DE return Route117_EventScript_1B22DE:: @ 81B22DE @@ -69,7 +69,7 @@ Route117_EventScript_1B22FE:: @ 81B22FE msgbox Route117_Text_1B2897, 4 special sp0B9_daycare_relationship_comment special ShowFieldMessageStringVar4 - waittext + waitmessage waitbutton setvar 0x8004, 0 call Route117_EventScript_1B22CD @@ -81,43 +81,43 @@ Route117_EventScript_1B22FE:: @ 81B22FE Route117_PokemonDayCare_EventScript_1B2327:: @ 81B2327 lock faceplayer - specialval RESULT, sp0B6_daycare + specialvar RESULT, sp0B6_daycare compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B2407 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2407 compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B242B + goto_if_eq Route117_PokemonDayCare_EventScript_1B242B compare RESULT, 3 - jumpeq Route117_PokemonDayCare_EventScript_1B2558 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2558 msgbox Route117_PokemonDayCare_Text_1B28F2, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B236C + goto_if_eq Route117_PokemonDayCare_EventScript_1B236C msgbox Route117_PokemonDayCare_Text_1B2A14, 4 release end Route117_PokemonDayCare_EventScript_1B236C:: @ 81B236C - specialval RESULT, sub_8095B6C + specialvar RESULT, sub_8095B6C compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B23F3 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23F3 msgbox Route117_PokemonDayCare_Text_1B2947, 4 fadescreen 1 special ChooseSendDaycareMon waitstate compare 0x8004, 255 - jumpeq Route117_PokemonDayCare_EventScript_1B23D0 - specialval RESULT, sub_8095C10 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0 + specialvar RESULT, sub_8095C10 compare RESULT, 0 - jumpeq Route117_PokemonDayCare_EventScript_1B23FD - specialval 0x8005, sub_8042328 - checksound - pokecry 0x8005, 0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23FD + specialvar 0x8005, sub_8042328 + waitse + playpokecry 0x8005, 0 msgbox Route117_PokemonDayCare_Text_1B296E, 4 waitpokecry special Daycare_SendPokemon_Special - inccounter GAME_STAT_USED_DAYCARE - specialval RESULT, sp0B6_daycare + incrementgamestat GAME_STAT_USED_DAYCARE + specialvar RESULT, sp0B6_daycare compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B23DA + goto_if_eq Route117_PokemonDayCare_EventScript_1B23DA release end @@ -129,8 +129,8 @@ Route117_PokemonDayCare_EventScript_1B23D0:: @ 81B23D0 Route117_PokemonDayCare_EventScript_1B23DA:: @ 81B23DA msgbox Route117_PokemonDayCare_Text_1B29AD, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B236C - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B236C + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B23F3:: @ 81B23F3 @@ -153,9 +153,9 @@ Route117_PokemonDayCare_EventScript_1B2411:: @ 81B2411 return Route117_PokemonDayCare_EventScript_1B241A:: @ 81B241A - specialval RESULT, sub_80417B8 + specialvar RESULT, sub_80417B8 compare RESULT, 0 - callif 5, Route117_PokemonDayCare_EventScript_1B2411 + call_if 5, Route117_PokemonDayCare_EventScript_1B2411 return Route117_PokemonDayCare_EventScript_1B242B:: @ 81B242B @@ -164,67 +164,67 @@ Route117_PokemonDayCare_EventScript_1B242B:: @ 81B242B call Route117_PokemonDayCare_EventScript_1B241A msgbox Route117_PokemonDayCare_Text_1B29AD, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B236C + goto_if_eq Route117_PokemonDayCare_EventScript_1B236C msgbox Route117_PokemonDayCare_Text_1B2BF6, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B2469 - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2469 + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B2469:: @ 81B2469 - specialval RESULT, CalculatePlayerPartyCount + specialvar RESULT, CalculatePlayerPartyCount compare RESULT, 6 - jumpeq Route117_PokemonDayCare_EventScript_1B2539 - specialval RESULT, sp0B6_daycare + goto_if_eq Route117_PokemonDayCare_EventScript_1B2539 + specialvar RESULT, sp0B6_daycare setvar 0x8004, 0 compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B24A8 + goto_if_eq Route117_PokemonDayCare_EventScript_1B24A8 special ShowDaycareLevelMenu waitstate copyvar 0x8004, RESULT compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B23D0 - jump Route117_PokemonDayCare_EventScript_1B24A8 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0 + goto Route117_PokemonDayCare_EventScript_1B24A8 end Route117_PokemonDayCare_EventScript_1B24A8:: @ 81B24A8 special sub_8041770 msgbox Route117_PokemonDayCare_Text_1B2B49, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B24C4 - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B24C4 + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B24C4:: @ 81B24C4 - specialval RESULT, sub_80B7CE8 + specialvar RESULT, sub_80B7CE8 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B24DE + goto_if_eq Route117_PokemonDayCare_EventScript_1B24DE msgbox Route117_PokemonDayCare_Text_1B2A30, 4 release end Route117_PokemonDayCare_EventScript_1B24DE:: @ 81B24DE - move 1, Route117_PokemonDayCare_Movement_1B2543 - waitmove 0 - specialval RESULT, sub_8041648 + applymovement 1, Route117_PokemonDayCare_Movement_1B2543 + waitmovement 0 + specialvar RESULT, sub_8041648 special sub_80B7D0C - playsfx 95 + playse 95 msgbox Route117_PokemonDayCare_Text_1B2B75, 4 - checksound - pokecry RESULT, 0 + waitse + playpokecry RESULT, 0 msgbox Route117_PokemonDayCare_Text_1B2B93, 4 waitpokecry - specialval RESULT, sp0B6_daycare + specialvar RESULT, sp0B6_daycare compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B2520 - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2520 + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B2520:: @ 81B2520 msgbox Route117_PokemonDayCare_Text_1B2A4F, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B2469 - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2469 + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B2539:: @ 81B2539 @@ -265,7 +265,7 @@ Route117_PokemonDayCare_EventScript_1B2558:: @ 81B2558 call Route117_PokemonDayCare_EventScript_1B241A msgbox Route117_PokemonDayCare_Text_1B2BF6, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B2469 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2469 msgbox Route117_PokemonDayCare_Text_1B2A76, 4 release end @@ -274,15 +274,15 @@ Route117_PokemonDayCare_EventScript_1B2558:: @ 81B2558 special ShowDaycareLevelMenu waitstate compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0 copyvar 0x8004, RESULT - specialval RESULT, sub_8041648 + specialvar RESULT, sub_8041648 msgbox Route117_PokemonDayCare_Text_1B2B75, 4 msgbox Route117_PokemonDayCare_Text_1B2A76, 4 release end -Event_EggHatch:: @ 81B25BC +S_EggHatch:: @ 81B25BC lockall msgbox UnknownString_81B2C68, 4 special EggHatch diff --git a/data/scripts/gabby_and_ty.inc b/data/scripts/gabby_and_ty.inc index 67a0920fa..214c61142 100644 --- a/data/scripts/gabby_and_ty.inc +++ b/data/scripts/gabby_and_ty.inc @@ -1,8 +1,8 @@ Route111_EventScript_1AE313:: @ 81AE313 Route118_EventScript_1AE313:: @ 81AE313 Route120_EventScript_1AE313:: @ 81AE313 - settrainerflag OPPONENT_GABBY_AND_TY_6 - specialval RESULT, GabbyAndTyGetBattleNum + cleartrainerflag OPPONENT_GABBY_AND_TY_6 + specialvar RESULT, GabbyAndTyGetBattleNum switch RESULT case 0, Route111_EventScript_1AE384 case 1, Route111_EventScript_1AE38A @@ -203,32 +203,32 @@ Route111_EventScript_1AE5A2:: @ 81AE5A2 special GabbyAndTyBeforeInterview special GabbyAndTySetScriptVarsToFieldObjectLocalIds compare FACING, 2 - callif 1, Route111_EventScript_1AE5E0 + call_if 1, Route111_EventScript_1AE5E0 compare FACING, 1 - callif 1, Route111_EventScript_1AE5EB + call_if 1, Route111_EventScript_1AE5EB compare FACING, 4 - callif 1, Route111_EventScript_1AE5FD + call_if 1, Route111_EventScript_1AE5FD checkflag 1 - jumpeq Route111_EventScript_1AE73A + goto_if_eq Route111_EventScript_1AE73A msgbox Route111_Text_1AC015, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE5E0:: @ 81AE5E0 - move 0x8004, Route111_Movement_1AE699 - waitmove 0 + applymovement 0x8004, Route111_Movement_1AE699 + waitmovement 0 return Route111_EventScript_1AE5EB:: @ 81AE5EB - move 0x8004, Route111_Movement_1AE69B - move 0x8005, Route111_Movement_1A0841 - waitmove 0 + applymovement 0x8004, Route111_Movement_1AE69B + applymovement 0x8005, Route111_Movement_1A0841 + waitmovement 0 return Route111_EventScript_1AE5FD:: @ 81AE5FD - move 0x8004, Route111_Movement_1AE69D - move 0x8005, Route111_Movement_1A083F - waitmove 0 + applymovement 0x8004, Route111_Movement_1AE69D + applymovement 0x8005, Route111_Movement_1A083F + waitmovement 0 return Route111_EventScript_1AE60F:: @ 81AE60F @@ -237,18 +237,18 @@ Route120_EventScript_1AE60F:: @ 81AE60F special GabbyAndTyBeforeInterview special GabbyAndTySetScriptVarsToFieldObjectLocalIds compare FACING, 2 - callif 1, Route111_EventScript_1AE5E0 + call_if 1, Route111_EventScript_1AE5E0 compare FACING, 1 - callif 1, Route111_EventScript_1AE5EB + call_if 1, Route111_EventScript_1AE5EB compare FACING, 4 - callif 1, Route111_EventScript_1AE5FD + call_if 1, Route111_EventScript_1AE5FD checkflag 1 - jumpeq Route111_EventScript_1AE73A - specialval RESULT, GabbyAndTyGetLastQuote + goto_if_eq Route111_EventScript_1AE73A + specialvar RESULT, GabbyAndTyGetLastQuote compare RESULT, 0 - jumpeq Route111_EventScript_1AE69F + goto_if_eq Route111_EventScript_1AE69F msgbox Route111_Text_1AC10A, 4 - specialval RESULT, sub_80BDD18 + specialvar RESULT, sub_80BDD18 switch RESULT case 0, Route111_EventScript_1AE6AD case 1, Route111_EventScript_1AE6BB @@ -271,44 +271,44 @@ Route111_Movement_1AE69D:: @ 81AE69D Route111_EventScript_1AE69F:: @ 81AE69F msgbox Route111_Text_1AC60B, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6AD:: @ 81AE6AD msgbox Route111_Text_1AC3CF, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6BB:: @ 81AE6BB msgbox Route111_Text_1AC18D, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6C9:: @ 81AE6C9 msgbox Route111_Text_1AC219, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6D7:: @ 81AE6D7 msgbox Route111_Text_1AC2D6, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6E5:: @ 81AE6E5 msgbox Route111_Text_1AC355, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6F3:: @ 81AE6F3 compare RESULT, 0 - jumpeq Route111_EventScript_1AE72D + goto_if_eq Route111_EventScript_1AE72D msgbox Route111_Text_1AC40F, 4 setvar 0x8004, 10 call Route111_EventScript_1A00F3 lock faceplayer compare RESULT, 0 - jumpeq Route111_EventScript_1AE72D + goto_if_eq Route111_EventScript_1AE72D msgbox Route111_Text_1AC487, 4 special sub_80BDC14 setflag 1 diff --git a/data/scripts/giddy.inc b/data/scripts/giddy.inc deleted file mode 100644 index 263589fe9..000000000 --- a/data/scripts/giddy.inc +++ /dev/null @@ -1,51 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1B09EB:: @ 81B09EB - lock - faceplayer - msgbox MauvilleCity_PokemonCenter_1F_Text_1B092A, 5 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A6F - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C:: @ 81B0A0C - special sub_80F7CC8 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A79 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A26:: @ 81B0A26 - special sub_80F7CC8 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A40 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A79 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A40:: @ 81B0A40 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0998, 4 - jump MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E:: @ 81B0A4E - special sub_80F7CF4 - special ShowFieldMessageStringVar4 - waittext - yesnobox 20, 8 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A26 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A26 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A6F:: @ 81B0A6F - msgbox MauvilleCity_PokemonCenter_1F_Text_1B097C, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A79:: @ 81B0A79 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B09B0, 4 - release - end diff --git a/data/scripts/hipster.inc b/data/scripts/hipster.inc deleted file mode 100644 index 3e24e4868..000000000 --- a/data/scripts/hipster.inc +++ /dev/null @@ -1,25 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1AE845:: @ 81AE845 - lock - faceplayer - setflag 2054 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C5B, 4 - special sub_80F7C70 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE86A - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0CA7, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE86A:: @ 81AE86A - special sub_80F7C90 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE882 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D11, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE882:: @ 81AE882 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D75, 4 - special sub_80F7C84 - release - end diff --git a/data/scripts/magma_chimney.inc b/data/scripts/magma_chimney.inc index a2f4f67b7..f13b319f4 100644 --- a/data/scripts/magma_chimney.inc +++ b/data/scripts/magma_chimney.inc @@ -2,12 +2,12 @@ MtChimney_EventScript_1B2C95:: @ 81B2C95 lock faceplayer checkflag 219 - callif 0, MtChimney_EventScript_1B2CB9 + call_if 0, MtChimney_EventScript_1B2CB9 checkflag 219 - callif 1, MtChimney_EventScript_1B2CC2 - closebutton - move 1, MtChimney_Movement_1A083D - waitmove 0 + call_if 1, MtChimney_EventScript_1B2CC2 + closemessage + applymovement 1, MtChimney_Movement_1A083D + waitmovement 0 setflag 219 release end @@ -35,13 +35,13 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB .else msgbox MtChimney_Text_1B37BB, 4 .endif - move 2, MtChimney_Movement_1A0839 - waitmove 0 - playsfx 21 - move 2, MtChimney_Movement_1A0833 - waitmove 0 - move 2, MtChimney_Movement_1A0835 - waitmove 0 + applymovement 2, MtChimney_Movement_1A0839 + waitmovement 0 + playse 21 + applymovement 2, MtChimney_Movement_1A0833 + waitmovement 0 + applymovement 2, MtChimney_Movement_1A0835 + waitmovement 0 .ifdef SAPPHIRE msgbox MtChimney_Text_1B2ED9, 4 .else @@ -57,33 +57,33 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB .else msgbox MtChimney_Text_1B3A90, 4 .endif - closebutton - pause 30 + closemessage + delay 30 fadescreen 1 - disappear 2 - disappear 3 - disappear 22 + removeobject 2 + removeobject 3 + removeobject 22 setflag 926 fadescreen 0 - movespriteperm 1, 10, 12 - reappear 1 + setobjectxyperm 1, 10, 12 + addobject 1 compare FACING, 4 - callif 1, MtChimney_EventScript_1B2D7D + call_if 1, MtChimney_EventScript_1B2D7D compare FACING, 2 - callif 1, MtChimney_EventScript_1B2D88 - move 255, MtChimney_Movement_1A083F - waitmove 0 + call_if 1, MtChimney_EventScript_1B2D88 + applymovement 255, MtChimney_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox MtChimney_Text_1B3608, 4 .else msgbox MtChimney_Text_1B3FFE, 4 .endif - closebutton + closemessage compare FACING, 4 - callif 1, MtChimney_EventScript_1B2D93 + call_if 1, MtChimney_EventScript_1B2D93 compare FACING, 2 - callif 1, MtChimney_EventScript_1B2D9E - disappear 1 + call_if 1, MtChimney_EventScript_1B2D9E + removeobject 1 setflag 927 setflag 139 clearflag 928 @@ -92,21 +92,21 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB end MtChimney_EventScript_1B2D7D:: @ 81B2D7D - move 1, MtChimney_Movement_15D025 - waitmove 0 + applymovement 1, MtChimney_Movement_15D025 + waitmovement 0 return MtChimney_EventScript_1B2D88:: @ 81B2D88 - move 1, MtChimney_Movement_15D036 - waitmove 0 + applymovement 1, MtChimney_Movement_15D036 + waitmovement 0 return MtChimney_EventScript_1B2D93:: @ 81B2D93 - move 1, MtChimney_Movement_15D02D - waitmove 0 + applymovement 1, MtChimney_Movement_15D02D + waitmovement 0 return MtChimney_EventScript_1B2D9E:: @ 81B2D9E - move 1, MtChimney_Movement_15D03E - waitmove 0 + applymovement 1, MtChimney_Movement_15D03E + waitmovement 0 return diff --git a/data/scripts/maps/AbandonedShip_CaptainsOffice.inc b/data/scripts/maps/AbandonedShip_CaptainsOffice.inc index cf525003e..eb912028a 100644 --- a/data/scripts/maps/AbandonedShip_CaptainsOffice.inc +++ b/data/scripts/maps/AbandonedShip_CaptainsOffice.inc @@ -5,12 +5,12 @@ AbandonedShip_CaptainsOffice_EventScript_15EAF5:: @ 815EAF5 lock faceplayer checkflag 294 - jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB2D + goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB2D checkitem ITEM_SCANNER, 1 compare RESULT, 1 - jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB23 + goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB23 checkflag 1078 - jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB2D + goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB2D msgbox AbandonedShip_CaptainsOffice_Text_198C85, 4 release end diff --git a/data/scripts/maps/AbandonedShip_Corridors_B1F.inc b/data/scripts/maps/AbandonedShip_Corridors_B1F.inc index b0ae966ad..f3c3c0aa0 100644 --- a/data/scripts/maps/AbandonedShip_Corridors_B1F.inc +++ b/data/scripts/maps/AbandonedShip_Corridors_B1F.inc @@ -4,14 +4,14 @@ AbandonedShip_Corridors_B1F_MapScripts:: @ 815E98F .byte 0 AbandonedShip_Corridors_B1F_MapScript1_15E99A:: @ 815E99A - warp4 AbandonedShip_Underwater1, 255, 5, 4 + setdivewarp AbandonedShip_Underwater1, 255, 5, 4 end AbandonedShip_Corridors_B1F_MapScript1_15E9A3:: @ 815E9A3 checkflag 239 - callif 0, AbandonedShip_Corridors_B1F_EventScript_15E9B6 + call_if 0, AbandonedShip_Corridors_B1F_EventScript_15E9B6 checkflag 239 - callif 1, AbandonedShip_Corridors_B1F_EventScript_15E9C0 + call_if 1, AbandonedShip_Corridors_B1F_EventScript_15E9C0 end AbandonedShip_Corridors_B1F_EventScript_15E9B6:: @ 815E9B6 @@ -29,12 +29,12 @@ AbandonedShip_Corridors_B1F_EventScript_15E9CA:: @ 815E9CA AbandonedShip_Corridors_B1F_EventScript_15E9D3:: @ 815E9D3 lockall checkflag 239 - jumpeq AbandonedShip_Corridors_B1F_EventScript_15EA14 + goto_if_eq AbandonedShip_Corridors_B1F_EventScript_15EA14 checkitem ITEM_STORAGE_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_Corridors_B1F_EventScript_15EA0A + goto_if_eq AbandonedShip_Corridors_B1F_EventScript_15EA0A msgbox AbandonedShip_Corridors_B1F_Text_198692, 4 - playsfx 21 + playse 21 removeitem ITEM_STORAGE_KEY, 1 setflag 239 call AbandonedShip_Corridors_B1F_EventScript_15E9C0 diff --git a/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc b/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc index 8cb2aed22..29a89a620 100644 --- a/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc +++ b/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc @@ -4,26 +4,26 @@ AbandonedShip_HiddenFloorCorridors_MapScripts:: @ 815EB46 .byte 0 AbandonedShip_HiddenFloorCorridors_MapScript1_15EB51:: @ 815EB51 - warp4 AbandonedShip_Underwater1, 255, 5, 4 + setdivewarp AbandonedShip_Underwater1, 255, 5, 4 end AbandonedShip_HiddenFloorCorridors_MapScript1_15EB5A:: @ 815EB5A checkflag 240 - callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBCB + call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBCB checkflag 241 - callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBD5 + call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBD5 checkflag 242 - callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBDF + call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBDF checkflag 243 - callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9 + call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9 checkflag 240 - callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3 + call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3 checkflag 241 - callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD + call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD checkflag 242 - callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7 + call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7 checkflag 243 - callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1 + call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1 end AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3:: @ 815EBA3 @@ -61,12 +61,12 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9:: @ 815EBE9 AbandonedShip_HiddenFloorCorridors_EventScript_15EBF3:: @ 815EBF3 lockall checkflag 240 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 checkitem ITEM_ROOM_1_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECCF + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECCF msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4 - playsfx 21 + playse 21 removeitem ITEM_ROOM_1_KEY, 1 setflag 240 call AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3 @@ -77,12 +77,12 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EBF3:: @ 815EBF3 AbandonedShip_HiddenFloorCorridors_EventScript_15EC2A:: @ 815EC2A lockall checkflag 241 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 checkitem ITEM_ROOM_2_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECD9 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECD9 msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4 - playsfx 21 + playse 21 removeitem ITEM_ROOM_2_KEY, 1 setflag 241 call AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD @@ -93,12 +93,12 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EC2A:: @ 815EC2A AbandonedShip_HiddenFloorCorridors_EventScript_15EC61:: @ 815EC61 lockall checkflag 242 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 checkitem ITEM_ROOM_4_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECE3 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECE3 msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4 - playsfx 21 + playse 21 removeitem ITEM_ROOM_4_KEY, 1 setflag 242 call AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7 @@ -109,12 +109,12 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EC61:: @ 815EC61 AbandonedShip_HiddenFloorCorridors_EventScript_15EC98:: @ 815EC98 lockall checkflag 243 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 checkitem ITEM_ROOM_6_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECED + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECED msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4 - playsfx 21 + playse 21 removeitem ITEM_ROOM_6_KEY, 1 setflag 243 call AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1 diff --git a/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc b/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc index 5c4c050a0..eb5c1dccd 100644 --- a/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc +++ b/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc @@ -11,11 +11,11 @@ AbandonedShip_HiddenFloorRooms_EventScript_15ED11:: @ 815ED11 getplayerxy 0x4002, 0x4003 setvar 0x4004, 1 compare 0x4002, 21 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED89 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED89 compare 0x4002, 36 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED8F + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED8F compare 0x4003, 2 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED95 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED95 switch 0x4004 case 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED9B case 2, AbandonedShip_HiddenFloorRooms_EventScript_15EDC4 @@ -38,102 +38,102 @@ AbandonedShip_HiddenFloorRooms_EventScript_15ED95:: @ 815ED95 return AbandonedShip_HiddenFloorRooms_EventScript_15ED9B:: @ 815ED9B - pause 20 - setanimation 0, 10 - setanimation 1, 10 - setanimation 2, 0 - doanimation 54 - specialval RESULT, sub_810F4D4 + delay 20 + setfieldeffect 0, 10 + setfieldeffect 1, 10 + setfieldeffect 2, 0 + dofieldeffect 54 + specialvar RESULT, sub_810F4D4 compare RESULT, 0 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE8B - checkanimation 54 - pause 10 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE8B + waitfieldeffect 54 + delay 10 end AbandonedShip_HiddenFloorRooms_EventScript_15EDC4:: @ 815EDC4 end AbandonedShip_HiddenFloorRooms_EventScript_15EDC5:: @ 815EDC5 - specialval RESULT, sub_810F488 + specialvar RESULT, sub_810F488 compare RESULT, 1 - jumpeq AbandonedShip_HiddenFloorRooms_EventScript_15EDEA - pause 20 + goto_if_eq AbandonedShip_HiddenFloorRooms_EventScript_15EDEA + delay 20 compare RESULT, 0 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE6B - checkanimation 54 - pause 10 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE6B + waitfieldeffect 54 + delay 10 end AbandonedShip_HiddenFloorRooms_EventScript_15EDEA:: @ 815EDEA end AbandonedShip_HiddenFloorRooms_EventScript_15EDEB:: @ 815EDEB - pause 20 - setanimation 0, 8 - setanimation 1, 5 - setanimation 2, 0 - doanimation 54 - setanimation 0, 11 - setanimation 1, 3 - setanimation 2, 0 - doanimation 54 - specialval RESULT, sub_810F4FC + delay 20 + setfieldeffect 0, 8 + setfieldeffect 1, 5 + setfieldeffect 2, 0 + dofieldeffect 54 + setfieldeffect 0, 11 + setfieldeffect 1, 3 + setfieldeffect 2, 0 + dofieldeffect 54 + specialvar RESULT, sub_810F4FC compare RESULT, 0 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE9B - checkanimation 54 - pause 10 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE9B + waitfieldeffect 54 + delay 10 end AbandonedShip_HiddenFloorRooms_EventScript_15EE23:: @ 815EE23 - pause 20 - setanimation 0, 16 - setanimation 1, 3 - setanimation 2, 0 - doanimation 54 - setanimation 0, 25 - setanimation 1, 2 - setanimation 2, 0 - doanimation 54 - setanimation 0, 24 - setanimation 1, 6 - setanimation 2, 0 - doanimation 54 - specialval RESULT, sub_810F4B0 + delay 20 + setfieldeffect 0, 16 + setfieldeffect 1, 3 + setfieldeffect 2, 0 + dofieldeffect 54 + setfieldeffect 0, 25 + setfieldeffect 1, 2 + setfieldeffect 2, 0 + dofieldeffect 54 + setfieldeffect 0, 24 + setfieldeffect 1, 6 + setfieldeffect 2, 0 + dofieldeffect 54 + specialvar RESULT, sub_810F4B0 compare RESULT, 0 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE7B - checkanimation 54 - pause 10 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE7B + waitfieldeffect 54 + delay 10 end AbandonedShip_HiddenFloorRooms_EventScript_15EE6A:: @ 815EE6A end AbandonedShip_HiddenFloorRooms_EventScript_15EE6B:: @ 815EE6B - setanimation 0, 42 - setanimation 1, 10 - setanimation 2, 0 - doanimation 54 + setfieldeffect 0, 42 + setfieldeffect 1, 10 + setfieldeffect 2, 0 + dofieldeffect 54 return AbandonedShip_HiddenFloorRooms_EventScript_15EE7B:: @ 815EE7B - setanimation 0, 20 - setanimation 1, 5 - setanimation 2, 0 - doanimation 54 + setfieldeffect 0, 20 + setfieldeffect 1, 5 + setfieldeffect 2, 0 + dofieldeffect 54 return AbandonedShip_HiddenFloorRooms_EventScript_15EE8B:: @ 815EE8B - setanimation 0, 1 - setanimation 1, 12 - setanimation 2, 0 - doanimation 54 + setfieldeffect 0, 1 + setfieldeffect 1, 12 + setfieldeffect 2, 0 + dofieldeffect 54 return AbandonedShip_HiddenFloorRooms_EventScript_15EE9B:: @ 815EE9B - setanimation 0, 1 - setanimation 1, 2 - setanimation 2, 0 - doanimation 54 + setfieldeffect 0, 1 + setfieldeffect 1, 2 + setfieldeffect 2, 0 + dofieldeffect 54 return AbandonedShip_HiddenFloorRooms_EventScript_15EEAB:: @ 815EEAB diff --git a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc index a6ccdc43c..5e8ab1062 100644 --- a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc +++ b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc @@ -3,9 +3,9 @@ AbandonedShip_Rooms2_1F_MapScripts:: @ 815EA67 AbandonedShip_Rooms2_1F_EventScript_15EA68:: @ 815EA68 trainerbattle 4, OPPONENT_LOIS_AND_HAL_1, 0, AbandonedShip_Rooms2_1F_Text_1987C1, AbandonedShip_Rooms2_1F_Text_1987FE, AbandonedShip_Rooms2_1F_Text_19887F - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq AbandonedShip_Rooms2_1F_EventScript_15EA93 + goto_if_eq AbandonedShip_Rooms2_1F_EventScript_15EA93 msgbox AbandonedShip_Rooms2_1F_Text_198835, 6 end @@ -16,9 +16,9 @@ AbandonedShip_Rooms2_1F_EventScript_15EA93:: @ 815EA93 AbandonedShip_Rooms2_1F_EventScript_15EAAE:: @ 815EAAE trainerbattle 4, OPPONENT_LOIS_AND_HAL_1, 0, AbandonedShip_Rooms2_1F_Text_1988CC, AbandonedShip_Rooms2_1F_Text_198916, AbandonedShip_Rooms2_1F_Text_19899A - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq AbandonedShip_Rooms2_1F_EventScript_15EAD9 + goto_if_eq AbandonedShip_Rooms2_1F_EventScript_15EAD9 msgbox AbandonedShip_Rooms2_1F_Text_198934, 6 end diff --git a/data/scripts/maps/AbandonedShip_Rooms_B1F.inc b/data/scripts/maps/AbandonedShip_Rooms_B1F.inc index 44b8c5f20..218f1a2ca 100644 --- a/data/scripts/maps/AbandonedShip_Rooms_B1F.inc +++ b/data/scripts/maps/AbandonedShip_Rooms_B1F.inc @@ -3,7 +3,7 @@ AbandonedShip_Rooms_B1F_MapScripts:: @ 815EA35 .byte 0 AbandonedShip_Rooms_B1F_MapScript1_15EA3B:: @ 815EA3B - warp4 AbandonedShip_Underwater2, 255, 17, 4 + setdivewarp AbandonedShip_Underwater2, 255, 17, 4 end AbandonedShip_Rooms_B1F_EventScript_15EA44:: @ 815EA44 diff --git a/data/scripts/maps/AbandonedShip_Underwater1.inc b/data/scripts/maps/AbandonedShip_Underwater1.inc index 71d903682..afac470ea 100644 --- a/data/scripts/maps/AbandonedShip_Underwater1.inc +++ b/data/scripts/maps/AbandonedShip_Underwater1.inc @@ -3,5 +3,5 @@ AbandonedShip_Underwater1_MapScripts:: @ 815EA57 .byte 0 AbandonedShip_Underwater1_MapScript1_15EA5D:: @ 815EA5D - warp4 AbandonedShip_HiddenFloorCorridors, 255, 0, 10 + setdivewarp AbandonedShip_HiddenFloorCorridors, 255, 0, 10 end diff --git a/data/scripts/maps/AbandonedShip_Underwater2.inc b/data/scripts/maps/AbandonedShip_Underwater2.inc index f7b434c07..b8facc4ec 100644 --- a/data/scripts/maps/AbandonedShip_Underwater2.inc +++ b/data/scripts/maps/AbandonedShip_Underwater2.inc @@ -3,5 +3,5 @@ AbandonedShip_Underwater2_MapScripts:: @ 815EB37 .byte 0 AbandonedShip_Underwater2_MapScript1_15EB3D:: @ 815EB3D - warp4 AbandonedShip_Rooms_B1F, 255, 13, 7 + setdivewarp AbandonedShip_Rooms_B1F, 255, 13, 7 end diff --git a/data/scripts/maps/AncientTomb.inc b/data/scripts/maps/AncientTomb.inc index 7ba7540c4..188691e73 100644 --- a/data/scripts/maps/AncientTomb.inc +++ b/data/scripts/maps/AncientTomb.inc @@ -6,11 +6,11 @@ AncientTomb_MapScripts:: @ 815EFBE AncientTomb_MapScript1_15EFCE:: @ 815EFCE checkflag 2145 - callif 1, AncientTomb_EventScript_15EFD8 + call_if 1, AncientTomb_EventScript_15EFD8 end AncientTomb_EventScript_15EFD8:: @ 815EFD8 - disappear LAST_TALKED + removeobject LAST_TALKED return AncientTomb_MapScript1_15EFDC:: @ 815EFDC @@ -19,7 +19,7 @@ AncientTomb_MapScript1_15EFDC:: @ 815EFDC AncientTomb_MapScript1_15EFE0:: @ 815EFE0 checkflag 2130 - callif 0, AncientTomb_EventScript_15EFEA + call_if 0, AncientTomb_EventScript_15EFEA end AncientTomb_EventScript_15EFEA:: @ 815EFEA @@ -34,10 +34,10 @@ AncientTomb_EventScript_15EFEA:: @ 815EFEA AncientTomb_EventScript_15F021:: @ 815F021 lockall checkflag 2130 - jumpeq AncientTomb_EventScript_15F038 - braillemsg AncientTomb_Braille_1C552E + goto_if_eq AncientTomb_EventScript_15F038 + braillemessage AncientTomb_Braille_1C552E waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -48,23 +48,23 @@ AncientTomb_EventScript_15F038:: @ 815F038 AncientTomb_EventScript_15F042:: @ 815F042 lockall - braillemsg AncientTomb_Braille_1C552E + braillemessage AncientTomb_Braille_1C552E waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end AncientTomb_EventScript_15F050:: @ 815F050 lock faceplayer - checksound - pokecry SPECIES_REGISTEEL, 2 - pause 40 + waitse + playpokecry SPECIES_REGISTEEL, 2 + delay 40 waitpokecry setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE setflag 937 setflag 2145 - special StartBattle_Regi + special ScrSpecial_StartRegiBattle waitstate clearflag 2145 release diff --git a/data/scripts/maps/AquaHideout_1F.inc b/data/scripts/maps/AquaHideout_1F.inc index cc1ad33b1..2eb2ae7e9 100644 --- a/data/scripts/maps/AquaHideout_1F.inc +++ b/data/scripts/maps/AquaHideout_1F.inc @@ -11,7 +11,7 @@ MagmaHideout_1F_EventScript_15D7CE:: @ 815D7CE lock faceplayer checkflag 111 - jumpeq AquaHideout_1F_EventScript_15D7E3 + goto_if_eq AquaHideout_1F_EventScript_15D7E3 msgbox AquaHideout_1F_Text_196AFD, 4 release end @@ -26,7 +26,7 @@ MagmaHideout_1F_EventScript_15D7ED:: @ 815D7ED lock faceplayer checkflag 111 - jumpeq AquaHideout_1F_EventScript_15D802 + goto_if_eq AquaHideout_1F_EventScript_15D802 msgbox AquaHideout_1F_Text_196C83, 4 release end diff --git a/data/scripts/maps/AquaHideout_B1F.inc b/data/scripts/maps/AquaHideout_B1F.inc index 969d590e3..0001d7574 100644 --- a/data/scripts/maps/AquaHideout_B1F.inc +++ b/data/scripts/maps/AquaHideout_B1F.inc @@ -5,11 +5,11 @@ AquaHideout_B1F_MapScripts:: @ 815D831 AquaHideout_B1F_MapScript1_15D83C:: @ 815D83C checkflag 2145 - callif 1, AquaHideout_B1F_EventScript_15D846 + call_if 1, AquaHideout_B1F_EventScript_15D846 end AquaHideout_B1F_EventScript_15D846:: @ 815D846 - disappear LAST_TALKED + removeobject LAST_TALKED return AquaHideout_B1F_MapScript1_15D84A:: @ 815D84A diff --git a/data/scripts/maps/AquaHideout_B2F.inc b/data/scripts/maps/AquaHideout_B2F.inc index 845b755b7..230d0e2db 100644 --- a/data/scripts/maps/AquaHideout_B2F.inc +++ b/data/scripts/maps/AquaHideout_B2F.inc @@ -10,15 +10,15 @@ AquaHideout_B2F_EventScript_15D8BD:: @ 815D8BD MagmaHideout_B2F_EventScript_15D8BD:: @ 815D8BD lockall setvar 0x8008, 1 - playsfx 21 - move 0x8008, AquaHideout_B2F_Movement_1A0833 - waitmove 0 + playse 21 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0833 + waitmovement 0 .ifdef SAPPHIRE - move 0x8008, AquaHideout_B2F_Movement_1A0839 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0839 .else - move 0x8008, AquaHideout_B2F_Movement_1A0841 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0841 .endif - waitmove 0 + waitmovement 0 setvar 0x4001, 1 releaseall end @@ -38,31 +38,31 @@ AquaHideout_B2F_EventScript_15D8FD:: @ 815D8FD setvar 0x8009, 3 .endif .ifdef SAPPHIRE - move 0x8008, Movement_1A083F + applymovement 0x8008, Movement_1A083F .else - move 0x8008, AquaHideout_B2F_Movement_1A0843 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0843 .endif - waitmove 0 - pause 20 - move 0x8008, AquaHideout_B2F_Movement_1A0839 - waitmove 0 + waitmovement 0 + delay 20 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0839 + waitmovement 0 msgbox AquaHideout_B2F_Text_197162, 4 - closebutton + closemessage .ifdef SAPPHIRE - move 0x8008, Movement_1A083F + applymovement 0x8008, Movement_1A083F .else - move 0x8008, AquaHideout_B2F_Movement_1A0843 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0843 .endif .ifdef SAPPHIRE - move 0x8009, AquaHideout_B2F_Movement_15D958 + applymovement 0x8009, AquaHideout_B2F_Movement_15D958 .else - move 0x8009, AquaHideout_B2F_Movement_15D95D + applymovement 0x8009, AquaHideout_B2F_Movement_15D95D .endif - waitmove 0 - disappear 0x8009 - pause 20 - move 0x8008, AquaHideout_B2F_Movement_1A0839 - waitmove 0 + waitmovement 0 + removeobject 0x8009 + delay 20 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0839 + waitmovement 0 msgbox AquaHideout_B2F_Text_1971AE, 4 setflag 112 setflag 852 diff --git a/data/scripts/maps/BattleTower_BattleRoom.inc b/data/scripts/maps/BattleTower_BattleRoom.inc index 176d8e8e8..3f1aad4a0 100644 --- a/data/scripts/maps/BattleTower_BattleRoom.inc +++ b/data/scripts/maps/BattleTower_BattleRoom.inc @@ -8,19 +8,19 @@ BattleTower_BattleRoom_MapScript2_1608E1:: @ 81608E1 BattleTower_BattleRoom_EventScript_1608EB:: @ 81608EB setvar 0x4000, 1 - move 255, BattleTower_BattleRoom_Movement_160AB7 - waitmove 0 + applymovement 255, BattleTower_BattleRoom_Movement_160AB7 + waitmovement 0 BattleTower_BattleRoom_EventScript_1608FA:: @ 81608FA special sub_81347F8 - reappear 1 - move 1, BattleTower_BattleRoom_Movement_160AC0 - waitmove 0 + addobject 1 + applymovement 1, BattleTower_BattleRoom_Movement_160AC0 + waitmovement 0 special sub_8135474 msgbox 0x20234cc, 4 - waittext - closebutton - special HealPlayerParty + waitmessage + closemessage + special ScrSpecial_HealPlayerParty setvar 0x8004, 0 setvar 0x8005, 0 special sub_813556C @@ -43,20 +43,20 @@ BattleTower_BattleRoom_EventScript_160961:: @ 8160961 special sub_8135668 switch RESULT case 8, BattleTower_BattleRoom_EventScript_160A56 - move 1, BattleTower_BattleRoom_Movement_160AC6 - waitmove 0 - disappear 1 - move 2, BattleTower_BattleRoom_Movement_160ACB - waitmove 0 - move 255, BattleTower_BattleRoom_Movement_160ABC - waitmove 0 + applymovement 1, BattleTower_BattleRoom_Movement_160AC6 + waitmovement 0 + removeobject 1 + applymovement 2, BattleTower_BattleRoom_Movement_160ACB + waitmovement 0 + applymovement 255, BattleTower_BattleRoom_Movement_160ABC + waitmovement 0 msgbox BattleTower_BattleRoom_Text_19ACDC, 4 special LoadPlayerParty special SavePlayerParty special sub_8135A14 - fanfare 368 + playfanfare 368 waitfanfare - special HealPlayerParty + special ScrSpecial_HealPlayerParty BattleTower_BattleRoom_EventScript_1609B2:: @ 81609B2 msgbox BattleTower_BattleRoom_Text_19AD09, 5 @@ -80,12 +80,12 @@ BattleTower_BattleRoom_EventScript_160A0E:: @ 8160A0E case 127, BattleTower_BattleRoom_EventScript_1609B2 BattleTower_BattleRoom_EventScript_160A3C:: @ 8160A3C - closebutton - move 255, BattleTower_BattleRoom_Movement_160ABE - waitmove 0 - move 2, BattleTower_BattleRoom_Movement_160AD0 - waitmove 0 - jump BattleTower_BattleRoom_EventScript_1608FA + closemessage + applymovement 255, BattleTower_BattleRoom_Movement_160ABE + waitmovement 0 + applymovement 2, BattleTower_BattleRoom_Movement_160AD0 + waitmovement 0 + goto BattleTower_BattleRoom_EventScript_1608FA BattleTower_BattleRoom_EventScript_160A56:: @ 8160A56 special LoadPlayerParty @@ -108,10 +108,10 @@ BattleTower_BattleRoom_EventScript_160A94:: @ 8160A94 setvar 0x8004, 2 special sub_8135BA0 message BattleTower_BattleRoom_Text_1C6CE1 - pause 60 - waittext - playsfx 55 - checksound + delay 60 + waitmessage + playse 55 + waitse msgbox BattleTower_BattleRoom_Text_1C6D05, 4 BattleTower_BattleRoom_EventScript_160AB1:: @ 8160AB1 diff --git a/data/scripts/maps/BattleTower_Corridor.inc b/data/scripts/maps/BattleTower_Corridor.inc index 4ccf2028c..9d4fbc844 100644 --- a/data/scripts/maps/BattleTower_Corridor.inc +++ b/data/scripts/maps/BattleTower_Corridor.inc @@ -5,7 +5,7 @@ BattleTower_Corridor_MapScripts:: @ 8160845 BattleTower_Corridor_MapScript1_160850:: @ 8160850 compare 0x8006, 1 - jumpeq BattleTower_Corridor_EventScript_16086E + goto_if_eq BattleTower_Corridor_EventScript_16086E setmaptile 12, 0, 519, 0 setmaptile 12, 1, 527, 0 end @@ -22,16 +22,16 @@ BattleTower_Corridor_MapScript2_160881:: @ 8160881 BattleTower_Corridor_EventScript_16088B:: @ 816088B setvar 0x4000, 1 compare 0x8006, 1 - jumpeq BattleTower_Corridor_EventScript_1608B1 - move 1, BattleTower_Corridor_Movement_1608D5 - move 255, BattleTower_Corridor_Movement_1608D4 - waitmove 0 - jump BattleTower_Corridor_EventScript_1608C2 + goto_if_eq BattleTower_Corridor_EventScript_1608B1 + applymovement 1, BattleTower_Corridor_Movement_1608D5 + applymovement 255, BattleTower_Corridor_Movement_1608D4 + waitmovement 0 + goto BattleTower_Corridor_EventScript_1608C2 BattleTower_Corridor_EventScript_1608B1:: @ 81608B1 - move 1, BattleTower_Corridor_Movement_1608D2 - move 255, BattleTower_Corridor_Movement_1608D1 - waitmove 0 + applymovement 1, BattleTower_Corridor_Movement_1608D2 + applymovement 255, BattleTower_Corridor_Movement_1608D1 + waitmovement 0 BattleTower_Corridor_EventScript_1608C2:: @ 81608C2 setvar 0x4000, 0 diff --git a/data/scripts/maps/BattleTower_Elevator.inc b/data/scripts/maps/BattleTower_Elevator.inc index 408e7485e..a147a3b5a 100644 --- a/data/scripts/maps/BattleTower_Elevator.inc +++ b/data/scripts/maps/BattleTower_Elevator.inc @@ -9,15 +9,15 @@ BattleTower_Elevator_MapScript2_1607DA:: @ 81607DA BattleTower_Elevator_EventScript_1607E4:: @ 81607E4 setvar 0x4000, 1 - move 1, BattleTower_Elevator_Movement_160835 - move 255, BattleTower_Elevator_Movement_160839 - waitmove 0 + applymovement 1, BattleTower_Elevator_Movement_160835 + applymovement 255, BattleTower_Elevator_Movement_160839 + waitmovement 0 special sub_810EBEC waitstate - pause 64 - move 1, BattleTower_Elevator_Movement_16083D - move 255, BattleTower_Elevator_Movement_160841 - waitmove 0 + delay 64 + applymovement 1, BattleTower_Elevator_Movement_16083D + applymovement 255, BattleTower_Elevator_Movement_160841 + waitmovement 0 setvar 0x4000, 0 warp BattleTower_Corridor, 255, 8, 1 waitstate @@ -29,7 +29,7 @@ BattleTower_Elevator_MapScript2_160821:: @ 8160821 BattleTower_Elevator_EventScript_16082B:: @ 816082B setvar 0x4001, 1 - spriteface 255, 2 + turnobject 255, 2 end BattleTower_Elevator_Movement_160835:: @ 8160835 diff --git a/data/scripts/maps/BattleTower_Lobby.inc b/data/scripts/maps/BattleTower_Lobby.inc index 8cd3639a5..3227df991 100644 --- a/data/scripts/maps/BattleTower_Lobby.inc +++ b/data/scripts/maps/BattleTower_Lobby.inc @@ -14,20 +14,20 @@ BattleTower_Lobby_EventScript_16029C:: @ 816029C setvar 0x8004, 10 special sub_8135668 checkflag 238 - jumpeq BattleTower_Lobby_EventScript_1602E4 + goto_if_eq BattleTower_Lobby_EventScript_1602E4 checkflag 237 - jumpeq BattleTower_Lobby_EventScript_1602CD - specialval 0x8007, sub_810F404 + goto_if_eq BattleTower_Lobby_EventScript_1602CD + specialvar 0x8007, sub_810F404 compare 0x8007, 50 - jumpif 0, BattleTower_Lobby_EventScript_1602E4 + goto_if 0, BattleTower_Lobby_EventScript_1602E4 clearflag 941 special sub_810F8FC return BattleTower_Lobby_EventScript_1602CD:: @ 81602CD - specialval 0x8007, sub_810F404 + specialvar 0x8007, sub_810F404 compare 0x8007, 100 - jumpif 0, BattleTower_Lobby_EventScript_1602E4 + goto_if 0, BattleTower_Lobby_EventScript_1602E4 clearflag 941 special sub_810F8FC return @@ -46,7 +46,7 @@ BattleTower_Lobby_MapScript2_1602EE:: @ 81602EE BattleTower_Lobby_EventScript_1602F8:: @ 81602F8 setvar 0x4001, 1 - spriteface 255, 2 + turnobject 255, 2 end BattleTower_Lobby_MapScript2_160302:: @ 8160302 @@ -65,7 +65,7 @@ BattleTower_Lobby_EventScript_160330:: @ 8160330 lock faceplayer msgbox BattleTower_Lobby_Text_19A3FD, 4 - closebutton + closemessage setvar 0x4000, 5 release end @@ -74,17 +74,17 @@ BattleTower_Lobby_EventScript_160342:: @ 8160342 lock faceplayer message BattleTower_Lobby_Text_19A487 - waittext + waitmessage setvar 0x8004, 0 special sub_81358A4 compare RESULT, 6 - jumpeq BattleTower_Lobby_EventScript_16037D + goto_if_eq BattleTower_Lobby_EventScript_16037D special sub_8135E50 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_16037D + goto_if_eq BattleTower_Lobby_EventScript_16037D message BattleTower_Lobby_Text_19A6BE - waittext - fanfare 370 + waitmessage + playfanfare 370 waitfanfare msgbox BattleTower_Lobby_Text_19A719, 4 @@ -92,47 +92,47 @@ BattleTower_Lobby_EventScript_16037D:: @ 816037D setvar 0x8004, 8 special sub_81358A4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1603AD + goto_if_eq BattleTower_Lobby_EventScript_1603AD message BattleTower_Lobby_Text_19A589 - waittext + waitmessage setvar 0x8004, 13 special sub_8135668 special sub_8135D84 setvar 0x8004, 3 special sub_8135BA0 - playsfx 55 - checksound + playse 55 + waitse BattleTower_Lobby_EventScript_1603AD:: @ 81603AD setvar 0x8004, 0 setvar 0x8005, 3 special sub_8135668 message BattleTower_Lobby_Text_19A4BB - waittext + waitmessage special sub_8135DEC switch RESULT case 0, BattleTower_Lobby_EventScript_160408 message BattleTower_Lobby_Text_19A506 - waittext - fanfare 370 + waitmessage + playfanfare 370 waitfanfare setvar 0x8004, 9 special sub_81358A4 compare RESULT, 49 - jumpif 5, BattleTower_Lobby_EventScript_1603F8 + goto_if 5, BattleTower_Lobby_EventScript_1603F8 msgbox BattleTower_Lobby_Text_19A617, 4 BattleTower_Lobby_EventScript_1603F8:: @ 81603F8 msgbox BattleTower_Lobby_Text_199FA9, 4 - closebutton + closemessage setvar 0x4000, 5 release end BattleTower_Lobby_EventScript_160408:: @ 8160408 msgbox BattleTower_Lobby_Text_19A520, 4 - waittext - closebutton + waitmessage + closemessage setvar 0x4000, 5 release end @@ -141,17 +141,17 @@ BattleTower_Lobby_EventScript_160419:: @ 8160419 lock faceplayer message BattleTower_Lobby_Text_19A571 - waittext + waitmessage message BattleTower_Lobby_Text_19A589 - waittext + waitmessage setvar 0x8004, 13 special sub_8135668 setvar 0x8004, 0 special sub_8135BA0 - playsfx 55 - checksound + playse 55 + waitse msgbox BattleTower_Lobby_Text_199FA9, 4 - closebutton + closemessage setvar 0x4000, 5 release end @@ -161,13 +161,13 @@ BattleTower_Lobby_EventScript_16044B:: @ 816044B faceplayer setvar 0x40bc, 1 message BattleTower_Lobby_Text_19A5B1 - waittext + waitmessage message BattleTower_Lobby_Text_19A5CE - waittext + waitmessage setvar 0x8004, 1 special sub_8135BA0 - playsfx 55 - checksound + playse 55 + waitse setvar 0x8004, 8 setvar 0x8005, 0 special sub_8135668 @@ -175,7 +175,7 @@ BattleTower_Lobby_EventScript_16044B:: @ 816044B special SavePlayerParty special sub_8135A14 msgbox BattleTower_Lobby_Text_19A0A8, 4 - closebutton + closemessage call BattleTower_Lobby_EventScript_160664 warp BattleTower_Elevator, 255, 1, 6 setvar 0x4000, 0 @@ -187,13 +187,13 @@ BattleTower_Lobby_EventScript_16049E:: @ 816049E setvar 0x8004, 0 special sub_81358A4 compare RESULT, 6 - jumpeq BattleTower_Lobby_EventScript_160342 + goto_if_eq BattleTower_Lobby_EventScript_160342 special SavePlayerParty msgbox BattleTower_Lobby_Text_199F2C, 4 BattleTower_Lobby_EventScript_1604BE:: @ 81604BE message BattleTower_Lobby_Text_199F79 - waittext + waitmessage multichoice 15, 6, 23, 0 switch RESULT case 0, BattleTower_Lobby_EventScript_1604FA @@ -203,14 +203,14 @@ BattleTower_Lobby_EventScript_1604BE:: @ 81604BE BattleTower_Lobby_EventScript_1604FA:: @ 81604FA message BattleTower_Lobby_Text_19A024 - waittext + waitmessage multichoice 18, 6, 24, 0 switch RESULT case 2, BattleTower_Lobby_EventScript_160652 case 127, BattleTower_Lobby_EventScript_160652 special CheckPartyBattleTowerBanlist compare 0x8004, 1 - jumpeq BattleTower_Lobby_EventScript_16060D + goto_if_eq BattleTower_Lobby_EventScript_16060D setvar 0x8004, 1 copyvar 0x8005, RESULT copyvar 0x8006, RESULT @@ -220,7 +220,7 @@ BattleTower_Lobby_EventScript_1604FA:: @ 81604FA special ChooseBattleTowerPlayerParty waitstate compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_16064F + goto_if_eq BattleTower_Lobby_EventScript_16064F msgbox BattleTower_Lobby_Text_199FDA, 5 switch RESULT case 0, BattleTower_Lobby_EventScript_16064F @@ -240,19 +240,19 @@ BattleTower_Lobby_EventScript_160587:: @ 8160587 setvar 0x8005, 0 special sub_8135668 special LoadPlayerParty - closebutton - pause 2 - call BattleTower_Lobby_EventScript_19F806 + closemessage + delay 2 + call S_DoSaveDialog setvar 0x4000, 5 - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_160642 - inccounter GAME_STAT_ENTERED_BATTLE_TOWER + goto_if_eq BattleTower_Lobby_EventScript_160642 + incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER special SavePlayerParty special sub_8135A14 setvar 0x40bc, 1 msgbox BattleTower_Lobby_Text_19A0A8, 4 - closebutton + closemessage call BattleTower_Lobby_EventScript_160664 warp BattleTower_Elevator, 255, 1, 6 setvar 0x4000, 0 @@ -260,7 +260,7 @@ BattleTower_Lobby_EventScript_160587:: @ 8160587 BattleTower_Lobby_EventScript_160600:: @ 8160600 msgbox BattleTower_Lobby_Text_19A0D1, 4 - jump BattleTower_Lobby_EventScript_1604BE + goto BattleTower_Lobby_EventScript_1604BE BattleTower_Lobby_EventScript_16060D:: @ 816060D switch RESULT @@ -269,16 +269,16 @@ BattleTower_Lobby_EventScript_16060D:: @ 816060D BattleTower_Lobby_EventScript_160628:: @ 8160628 msgbox BattleTower_Lobby_Text_19A249, 4 - jump BattleTower_Lobby_EventScript_160662 + goto BattleTower_Lobby_EventScript_160662 BattleTower_Lobby_EventScript_160635:: @ 8160635 msgbox BattleTower_Lobby_Text_19A32D, 4 - jump BattleTower_Lobby_EventScript_160662 + goto BattleTower_Lobby_EventScript_160662 BattleTower_Lobby_EventScript_160642:: @ 8160642 setvar 0x8004, 12 special sub_8135668 - jump BattleTower_Lobby_EventScript_160652 + goto BattleTower_Lobby_EventScript_160652 BattleTower_Lobby_EventScript_16064F:: @ 816064F special LoadPlayerParty @@ -293,16 +293,16 @@ BattleTower_Lobby_EventScript_160662:: @ 8160662 end BattleTower_Lobby_EventScript_160664:: @ 8160664 - move 1, BattleTower_Lobby_Movement_160693 - move 255, BattleTower_Lobby_Movement_160693 - waitmove 0 - setdooropened 6, 1 - doorchange - move 1, BattleTower_Lobby_Movement_160697 - move 255, BattleTower_Lobby_Movement_16069A - waitmove 0 - setdoorclosed 6, 1 - doorchange + applymovement 1, BattleTower_Lobby_Movement_160693 + applymovement 255, BattleTower_Lobby_Movement_160693 + waitmovement 0 + opendoor 6, 1 + waitdooranim + applymovement 1, BattleTower_Lobby_Movement_160697 + applymovement 255, BattleTower_Lobby_Movement_16069A + waitmovement 0 + closedoor 6, 1 + waitdooranim return BattleTower_Lobby_Movement_160693:: @ 8160693 @@ -348,9 +348,9 @@ BattleTower_Lobby_EventScript_1606CC:: @ 81606CC lock faceplayer compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_160701 + goto_if_eq BattleTower_Lobby_EventScript_160701 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_16070B + goto_if_eq BattleTower_Lobby_EventScript_16070B end BattleTower_Lobby_EventScript_1606F7:: @ 81606F7 @@ -380,7 +380,7 @@ BattleTower_Lobby_EventScript_160727:: @ 8160727 lockall special ShowBattleTowerRecords waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -388,35 +388,35 @@ BattleTower_Lobby_EventScript_160733:: @ 8160733 lock faceplayer checkflag 238 - jumpeq BattleTower_Lobby_EventScript_1607C5 + goto_if_eq BattleTower_Lobby_EventScript_1607C5 checkflag 237 - jumpeq BattleTower_Lobby_EventScript_160773 + goto_if_eq BattleTower_Lobby_EventScript_160773 msgbox BattleTower_Lobby_Text_19A9EE, 4 setvar 0x8008, 42 givedecoration 42 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1607AF + goto_if_eq BattleTower_Lobby_EventScript_1607AF setflag 237 msgbox BattleTower_Lobby_Text_19ABAA, 4 release end BattleTower_Lobby_EventScript_160773:: @ 8160773 - specialval RESULT, sub_810F404 + specialvar RESULT, sub_810F404 compare RESULT, 100 - jumpif 0, BattleTower_Lobby_EventScript_1607C5 + goto_if 0, BattleTower_Lobby_EventScript_1607C5 msgbox BattleTower_Lobby_Text_19AAC4, 4 setvar 0x8008, 43 givedecoration 43 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1607AF + goto_if_eq BattleTower_Lobby_EventScript_1607AF setflag 238 msgbox BattleTower_Lobby_Text_19ABAA, 4 release end BattleTower_Lobby_EventScript_1607AF:: @ 81607AF - bufferdecor 1, 0x8008 + getdecorname 1, 0x8008 msgbox BattleTower_Lobby_Text_1A0CEF, 4 msgbox BattleTower_Lobby_Text_19ABED, 4 release diff --git a/data/scripts/maps/BattleTower_Outside.inc b/data/scripts/maps/BattleTower_Outside.inc index 02c4e0c6f..95c5a9d77 100644 --- a/data/scripts/maps/BattleTower_Outside.inc +++ b/data/scripts/maps/BattleTower_Outside.inc @@ -14,14 +14,14 @@ BattleTower_Outside_EventScript_160168:: @ 8160168 msgbox BattleTower_Outside_Text_199D06, 4 checkitem ITEM_SS_TICKET, 1 compare RESULT, 0 - jumpeq BattleTower_Outside_EventScript_1601C6 + goto_if_eq BattleTower_Outside_EventScript_1601C6 message BattleTower_Outside_Text_199D9D - waittext - jump BattleTower_Outside_EventScript_16018E + waitmessage + goto BattleTower_Outside_EventScript_16018E end BattleTower_Outside_EventScript_16018E:: @ 816018E - multichoicedef 21, 6, 53, 2, 0 + multichoicedefault 21, 6, 53, 2, 0 switch RESULT case 0, BattleTower_Outside_EventScript_1601D0 case 1, BattleTower_Outside_EventScript_1601FB @@ -37,7 +37,7 @@ BattleTower_Outside_EventScript_1601C6:: @ 81601C6 BattleTower_Outside_EventScript_1601D0:: @ 81601D0 msgbox BattleTower_Outside_Text_199DF2, 5 compare RESULT, 0 - jumpeq BattleTower_Outside_EventScript_160226 + goto_if_eq BattleTower_Outside_EventScript_160226 msgbox BattleTower_Outside_Text_199E4B, 4 call BattleTower_Outside_EventScript_160232 warp SlateportCity_Harbor, 255, 8, 11 @@ -48,7 +48,7 @@ BattleTower_Outside_EventScript_1601D0:: @ 81601D0 BattleTower_Outside_EventScript_1601FB:: @ 81601FB msgbox BattleTower_Outside_Text_199E0E, 5 compare RESULT, 0 - jumpeq BattleTower_Outside_EventScript_160226 + goto_if_eq BattleTower_Outside_EventScript_160226 msgbox BattleTower_Outside_Text_199E4B, 4 call BattleTower_Outside_EventScript_160232 warp LilycoveCity_Harbor, 255, 8, 11 @@ -58,16 +58,16 @@ BattleTower_Outside_EventScript_1601FB:: @ 81601FB BattleTower_Outside_EventScript_160226:: @ 8160226 message BattleTower_Outside_Text_199E7A - waittext - jump BattleTower_Outside_EventScript_16018E + waitmessage + goto BattleTower_Outside_EventScript_16018E end BattleTower_Outside_EventScript_160232:: @ 8160232 - closebutton - move LAST_TALKED, BattleTower_Outside_Movement_1A0845 - waitmove 0 - pause 30 - spriteinvisible 5, 26, 4 + closemessage + applymovement LAST_TALKED, BattleTower_Outside_Movement_1A0845 + waitmovement 0 + delay 30 + hideobject 5, 26, 4 setvar 0x8004, 4 call BattleTower_Outside_EventScript_1A047C return diff --git a/data/scripts/maps/CaveOfOrigin_1F.inc b/data/scripts/maps/CaveOfOrigin_1F.inc index 7fd365b36..3ad36cc18 100644 --- a/data/scripts/maps/CaveOfOrigin_1F.inc +++ b/data/scripts/maps/CaveOfOrigin_1F.inc @@ -4,5 +4,5 @@ CaveOfOrigin_1F_MapScripts:: @ 815DD6C CaveOfOrigin_1F_MapScript1_15DD72:: @ 815DD72 checkflag 113 - callif 1, CaveOfOrigin_1F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_1F_EventScript_1A04E3 end diff --git a/data/scripts/maps/CaveOfOrigin_B1F.inc b/data/scripts/maps/CaveOfOrigin_B1F.inc index 9603ae83b..c3bbdd45f 100644 --- a/data/scripts/maps/CaveOfOrigin_B1F.inc +++ b/data/scripts/maps/CaveOfOrigin_B1F.inc @@ -4,5 +4,5 @@ CaveOfOrigin_B1F_MapScripts:: @ 815DD7C CaveOfOrigin_B1F_MapScript1_15DD82:: @ 815DD82 checkflag 113 - callif 1, CaveOfOrigin_B1F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_B1F_EventScript_1A04E3 end diff --git a/data/scripts/maps/CaveOfOrigin_B2F.inc b/data/scripts/maps/CaveOfOrigin_B2F.inc index 6b3a55648..fb65de171 100644 --- a/data/scripts/maps/CaveOfOrigin_B2F.inc +++ b/data/scripts/maps/CaveOfOrigin_B2F.inc @@ -4,5 +4,5 @@ CaveOfOrigin_B2F_MapScripts:: @ 815DD8C CaveOfOrigin_B2F_MapScript1_15DD92:: @ 815DD92 checkflag 113 - callif 1, CaveOfOrigin_B2F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_B2F_EventScript_1A04E3 end diff --git a/data/scripts/maps/CaveOfOrigin_B3F.inc b/data/scripts/maps/CaveOfOrigin_B3F.inc index 8e61048d2..c21b04e91 100644 --- a/data/scripts/maps/CaveOfOrigin_B3F.inc +++ b/data/scripts/maps/CaveOfOrigin_B3F.inc @@ -4,5 +4,5 @@ CaveOfOrigin_B3F_MapScripts:: @ 815DD9C CaveOfOrigin_B3F_MapScript1_15DDA2:: @ 815DDA2 checkflag 113 - callif 1, CaveOfOrigin_B3F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_B3F_EventScript_1A04E3 end diff --git a/data/scripts/maps/CaveOfOrigin_B4F.inc b/data/scripts/maps/CaveOfOrigin_B4F.inc index 023892d36..c6c3cd45e 100644 --- a/data/scripts/maps/CaveOfOrigin_B4F.inc +++ b/data/scripts/maps/CaveOfOrigin_B4F.inc @@ -5,69 +5,69 @@ CaveOfOrigin_B4F_MapScripts:: @ 815DDAC CaveOfOrigin_B4F_MapScript1_15DDB7:: @ 815DDB7 checkflag 2145 - callif 1, CaveOfOrigin_B4F_EventScript_15DDC1 + call_if 1, CaveOfOrigin_B4F_EventScript_15DDC1 end CaveOfOrigin_B4F_EventScript_15DDC1:: @ 815DDC1 - disappear 1 + removeobject 1 return CaveOfOrigin_B4F_MapScript1_15DDC5:: @ 815DDC5 .ifdef SAPPHIRE - setmapfooter 163 + setmaplayoutindex 163 .else - setmapfooter 313 + setmaplayoutindex 313 .endif call CaveOfOrigin_B4F_EventScript_1A01B5 checkflag 113 - callif 1, CaveOfOrigin_B4F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_B4F_EventScript_1A04E3 end CaveOfOrigin_B4F_EventScript_15DDD7:: @ 815DDD7 lockall - move 255, CaveOfOrigin_B4F_Movement_1A0841 - waitmove 0 + applymovement 255, CaveOfOrigin_B4F_Movement_1A0841 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4F03, 4 .else msgbox CaveOfOrigin_B4F_Text_1B4FE4, 4 .endif - closebutton + closemessage setweather 0 doweather special WaitWeather waitstate - playsfx 209 - setanimation 0, 9 - setanimation 1, 13 - setanimation 2, 0 - doanimation 54 - checkanimation 54 + playse 209 + setfieldeffect 0, 9 + setfieldeffect 1, 13 + setfieldeffect 2, 0 + dofieldeffect 54 + waitfieldeffect 54 .ifdef SAPPHIRE setvar RESULT, 3 .else setvar RESULT, 2 .endif - playsfx 107 + playse 107 special sub_80818A4 waitstate special sub_80818FC waitstate - move 1, CaveOfOrigin_B4F_Movement_15DE7D - waitmove 0 - pause 60 + applymovement 1, CaveOfOrigin_B4F_Movement_15DE7D + waitmovement 0 + delay 60 setwildbattle SPECIES_GROUDON_OR_KYOGRE, 45, ITEM_NONE - checksound - pokecry SPECIES_GROUDON_OR_KYOGRE, 2 - pause 40 + waitse + playpokecry SPECIES_GROUDON_OR_KYOGRE, 2 + delay 40 waitpokecry setflag 2145 - special StartBattle_GroudonKyogre + special ScrSpecial_StartGroudonKyogreBattle waitstate clearflag 2145 - specialval RESULT, sub_810E300 + specialvar RESULT, sub_810E300 compare RESULT, 1 - callif 1, CaveOfOrigin_B4F_EventScript_15DE73 + call_if 1, CaveOfOrigin_B4F_EventScript_15DE73 setflag 816 setflag 855 setflag 856 @@ -87,7 +87,7 @@ CaveOfOrigin_B4F_EventScript_15DE73:: @ 815DE73 .else msgbox CaveOfOrigin_B4F_Text_1B5009, 4 .endif - closebutton + closemessage return CaveOfOrigin_B4F_Movement_15DE7D:: @ 815DE7D diff --git a/data/scripts/maps/DesertRuins.inc b/data/scripts/maps/DesertRuins.inc index df40fc126..9f6f7b388 100644 --- a/data/scripts/maps/DesertRuins.inc +++ b/data/scripts/maps/DesertRuins.inc @@ -6,16 +6,16 @@ DesertRuins_MapScripts:: @ 815CAF3 DesertRuins_MapScript1_15CB03:: @ 815CB03 checkflag 2145 - callif 1, DesertRuins_EventScript_15CB0D + call_if 1, DesertRuins_EventScript_15CB0D end DesertRuins_EventScript_15CB0D:: @ 815CB0D - disappear LAST_TALKED + removeobject LAST_TALKED return DesertRuins_MapScript1_15CB11:: @ 815CB11 checkflag 2128 - callif 0, DesertRuins_EventScript_15CB1B + call_if 0, DesertRuins_EventScript_15CB1B end DesertRuins_EventScript_15CB1B:: @ 815CB1B @@ -34,10 +34,10 @@ DesertRuins_MapScript1_15CB52:: @ 815CB52 DesertRuins_EventScript_15CB56:: @ 815CB56 lockall checkflag 2128 - jumpeq DesertRuins_EventScript_15CB6D - braillemsg DesertRuins_Braille_1C54C8 + goto_if_eq DesertRuins_EventScript_15CB6D + braillemessage DesertRuins_Braille_1C54C8 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -48,23 +48,23 @@ DesertRuins_EventScript_15CB6D:: @ 815CB6D DesertRuins_EventScript_15CB77:: @ 815CB77 lockall - braillemsg DesertRuins_Braille_1C54C8 + braillemessage DesertRuins_Braille_1C54C8 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end DesertRuins_EventScript_15CB85:: @ 815CB85 lock faceplayer - checksound - pokecry SPECIES_REGIROCK, 2 - pause 40 + waitse + playpokecry SPECIES_REGIROCK, 2 + delay 40 waitpokecry setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE setflag 935 setflag 2145 - special StartBattle_Regi + special ScrSpecial_StartRegiBattle waitstate clearflag 2145 release diff --git a/data/scripts/maps/DewfordTown.inc b/data/scripts/maps/DewfordTown.inc index 8ca2eb3df..aa3584741 100644 --- a/data/scripts/maps/DewfordTown.inc +++ b/data/scripts/maps/DewfordTown.inc @@ -10,10 +10,10 @@ DewfordTown_EventScript_14E002:: @ 814E002 lock faceplayer checkflag 189 - jumpif 0, DewfordTown_EventScript_14E076 + goto_if 0, DewfordTown_EventScript_14E076 message DewfordTown_Text_16B522 - waittext - multichoicedef 21, 6, 0, 2, 0 + waitmessage + multichoicedefault 21, 6, 0, 2, 0 switch RESULT case 0, DewfordTown_EventScript_14E04B case 1, DewfordTown_EventScript_14E05B @@ -23,36 +23,36 @@ DewfordTown_EventScript_14E002:: @ 814E002 DewfordTown_EventScript_14E04B:: @ 814E04B msgbox DewfordTown_Text_16B57D, 4 - closebutton - jump DewfordTown_EventScript_14E151 + closemessage + goto DewfordTown_EventScript_14E151 release end DewfordTown_EventScript_14E05B:: @ 814E05B msgbox DewfordTown_Text_16B5D2, 4 - closebutton - jump DewfordTown_EventScript_14E1D8 + closemessage + goto DewfordTown_EventScript_14E1D8 release end DewfordTown_EventScript_14E06B:: @ 814E06B msgbox DewfordTown_Text_16B627, 4 - closebutton + closemessage release end DewfordTown_EventScript_14E076:: @ 814E076 msgbox DewfordTown_Text_16B3BC, 5 compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E093 + goto_if_eq DewfordTown_EventScript_14E093 msgbox DewfordTown_Text_16B471, 4 release end DewfordTown_EventScript_14E093:: @ 814E093 msgbox DewfordTown_Text_16B417, 4 - closebutton - jump DewfordTown_EventScript_14E151 + closemessage + goto DewfordTown_EventScript_14E151 end DewfordTown_EventScript_14E0A2:: @ 814E0A2 @@ -75,12 +75,12 @@ DewfordTown_EventScript_14E0C6:: @ 814E0C6 lock faceplayer checkflag 257 - jumpeq DewfordTown_EventScript_14E11B + goto_if_eq DewfordTown_EventScript_14E11B msgbox DewfordTown_Text_16B665, 5 compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E0F0 + goto_if_eq DewfordTown_EventScript_14E0F0 compare RESULT, 0 - jumpeq DewfordTown_EventScript_14E111 + goto_if_eq DewfordTown_EventScript_14E111 end DewfordTown_EventScript_14E0F0:: @ 814E0F0 @@ -98,12 +98,12 @@ DewfordTown_EventScript_14E111:: @ 814E111 DewfordTown_EventScript_14E11B:: @ 814E11B message DewfordTown_Text_16B84E - waittext + waitmessage multichoice 20, 8, 50, 1 compare RESULT, 0 - jumpeq DewfordTown_EventScript_14E13D + goto_if_eq DewfordTown_EventScript_14E13D compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E147 + goto_if_eq DewfordTown_EventScript_14E147 end DewfordTown_EventScript_14E13D:: @ 814E13D @@ -118,30 +118,30 @@ DewfordTown_EventScript_14E147:: @ 814E147 DewfordTown_EventScript_14E151:: @ 814E151 call DewfordTown_EventScript_1A010C - spritelevelup 2, 0, 11, 0 - spritelevelup 255, 0, 11, 0 - move 2, DewfordTown_Movement_14E40E - waitmove 0 - disappear 2 - move 255, DewfordTown_Movement_14E402 - waitmove 0 - spriteinvisible 255, 0, 11 + setobjectpriority 2, 0, 11, 0 + setobjectpriority 255, 0, 11, 0 + applymovement 2, DewfordTown_Movement_14E40E + waitmovement 0 + removeobject 2 + applymovement 255, DewfordTown_Movement_14E402 + waitmovement 0 + hideobject 255, 0, 11 call DewfordTown_EventScript_1A02E7 - move 4, DewfordTown_Movement_14E293 - move 255, DewfordTown_Movement_14E293 - waitmove 0 - spritevisible 255, 0, 19 + applymovement 4, DewfordTown_Movement_14E293 + applymovement 255, DewfordTown_Movement_14E293 + waitmovement 0 + showobject 255, 0, 19 call DewfordTown_EventScript_1A02EF - move 255, DewfordTown_Movement_14E405 - waitmove 0 - spritevisible 255, 0, 19 + applymovement 255, DewfordTown_Movement_14E405 + waitmovement 0 + showobject 255, 0, 19 clearflag 739 clearflag 881 clearflag 742 setflag 743 - spriteinvisible 4, 0, 11 + hideobject 4, 0, 11 setvar 0x408e, 2 - restorespritelevel 255, 0, 11 + resetobjectpriority 255, 0, 11 warp Route104_MrBrineysHouse, 255, 5, 4 copyvar 0x4096, 0x8008 waitstate @@ -150,41 +150,41 @@ DewfordTown_EventScript_14E151:: @ 814E151 DewfordTown_EventScript_14E1D8:: @ 814E1D8 call DewfordTown_EventScript_1A010C - spritelevelup 2, 0, 11, 0 - spritelevelup 255, 0, 11, 1 - move 2, DewfordTown_Movement_14E40E - waitmove 0 - disappear 2 - move 255, DewfordTown_Movement_14E402 - waitmove 0 - spriteinvisible 255, 0, 11 + setobjectpriority 2, 0, 11, 0 + setobjectpriority 255, 0, 11, 1 + applymovement 2, DewfordTown_Movement_14E40E + waitmovement 0 + removeobject 2 + applymovement 255, DewfordTown_Movement_14E402 + waitmovement 0 + hideobject 255, 0, 11 call DewfordTown_EventScript_1A02E7 - move 4, DewfordTown_Movement_14E356 - move 255, DewfordTown_Movement_14E356 - waitmove 0 + applymovement 4, DewfordTown_Movement_14E356 + applymovement 255, DewfordTown_Movement_14E356 + waitmovement 0 call DewfordTown_EventScript_1A02EF - spritevisible 255, 0, 24 - move 255, DewfordTown_Movement_14E409 - waitmove 0 - movespriteperm 2, 21, 26 - reappear 2 - spritelevelup 2, 0, 24, 0 - move 2, DewfordTown_Movement_14E410 - waitmove 0 + showobject 255, 0, 24 + applymovement 255, DewfordTown_Movement_14E409 + waitmovement 0 + setobjectxyperm 2, 21, 26 + addobject 2 + setobjectpriority 2, 0, 24, 0 + applymovement 2, DewfordTown_Movement_14E410 + waitmovement 0 clearflag 741 - reappear 1 + addobject 1 clearflag 744 setflag 743 - spriteinvisible 4, 0, 11 + hideobject 4, 0, 11 checkflag 149 - callif 0, DewfordTown_EventScript_14E281 + call_if 0, DewfordTown_EventScript_14E281 checkflag 149 - callif 1, DewfordTown_EventScript_14E28A - closebutton + call_if 1, DewfordTown_EventScript_14E28A + closemessage copyvar 0x4096, 0x8008 - restorespritelevel 255, 0, 11 - restorespritelevel 2, 0, 24 - moveoffscreen 2 + resetobjectpriority 255, 0, 11 + resetobjectpriority 2, 0, 24 + moveobjectoffscreen 2 release end @@ -600,9 +600,9 @@ DewfordTown_EventScript_14E413:: @ 814E413 call DewfordTown_EventScript_1A0102 msgbox DewfordTown_Text_16B9CE, 5 compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E439 + goto_if_eq DewfordTown_EventScript_14E439 compare RESULT, 0 - jumpeq DewfordTown_EventScript_14E443 + goto_if_eq DewfordTown_EventScript_14E443 end DewfordTown_EventScript_14E439:: @ 814E439 @@ -617,15 +617,15 @@ DewfordTown_EventScript_14E443:: @ 814E443 lock faceplayer compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E46E + goto_if_eq DewfordTown_EventScript_14E46E compare RESULT, 0 - jumpeq DewfordTown_EventScript_14E485 + goto_if_eq DewfordTown_EventScript_14E485 end DewfordTown_EventScript_14E46E:: @ 814E46E - inccounter GAME_STAT_STARTED_TRENDS + incrementgamestat GAME_STAT_STARTED_TRENDS compare 0x8004, 0 - jumpeq DewfordTown_EventScript_14E48F + goto_if_eq DewfordTown_EventScript_14E48F msgbox DewfordTown_Text_16BB44, 4 release end diff --git a/data/scripts/maps/DewfordTown_Gym.inc b/data/scripts/maps/DewfordTown_Gym.inc index 51d4f44ba..92776afb1 100644 --- a/data/scripts/maps/DewfordTown_Gym.inc +++ b/data/scripts/maps/DewfordTown_Gym.inc @@ -8,91 +8,91 @@ DewfordTown_Gym_MapScript1_15306B:: @ 815306B DewfordTown_Gym_EventScript_153071:: @ 8153071 checktrainerflag OPPONENT_BRAWLY - jumpeq DewfordTown_Gym_EventScript_1530AA + goto_if_eq DewfordTown_Gym_EventScript_1530AA call DewfordTown_Gym_EventScript_153122 copyvar 0x8001, 0x8000 compare 0x8000, 0 - jumpeq DewfordTown_Gym_EventScript_1530BA + goto_if_eq DewfordTown_Gym_EventScript_1530BA compare 0x8000, 1 - jumpeq DewfordTown_Gym_EventScript_1530B6 + goto_if_eq DewfordTown_Gym_EventScript_1530B6 compare 0x8000, 2 - jumpeq DewfordTown_Gym_EventScript_1530B2 - jump DewfordTown_Gym_EventScript_1530AE + goto_if_eq DewfordTown_Gym_EventScript_1530B2 + goto DewfordTown_Gym_EventScript_1530AE DewfordTown_Gym_EventScript_1530AA:: @ 81530AA - darken 0 + setdarklevel 0 return DewfordTown_Gym_EventScript_1530AE:: @ 81530AE - darken 1 + setdarklevel 1 return DewfordTown_Gym_EventScript_1530B2:: @ 81530B2 - darken 2 + setdarklevel 2 return DewfordTown_Gym_EventScript_1530B6:: @ 81530B6 - darken 3 + setdarklevel 3 return DewfordTown_Gym_EventScript_1530BA:: @ 81530BA - darken 4 + setdarklevel 4 return DewfordTown_Gym_EventScript_1530BE:: @ 81530BE call DewfordTown_Gym_EventScript_153122 - snop1 - comparevars 0x8000, 0x8001 - jumpeq DewfordTown_Gym_EventScript_1530F5 + nop1 + compare 0x8000, 0x8001 + goto_if_eq DewfordTown_Gym_EventScript_1530F5 copyvar 0x8001, 0x8000 compare 0x8000, 1 - jumpeq DewfordTown_Gym_EventScript_1530F6 + goto_if_eq DewfordTown_Gym_EventScript_1530F6 compare 0x8000, 2 - jumpeq DewfordTown_Gym_EventScript_153101 + goto_if_eq DewfordTown_Gym_EventScript_153101 compare 0x8000, 3 - jumpeq DewfordTown_Gym_EventScript_15310C + goto_if_eq DewfordTown_Gym_EventScript_15310C DewfordTown_Gym_EventScript_1530F5:: @ 81530F5 return DewfordTown_Gym_EventScript_1530F6:: @ 81530F6 - playsfx 35 - lighten 3 + playse 35 + animdarklevel 3 call DewfordTown_Gym_EventScript_153071 return DewfordTown_Gym_EventScript_153101:: @ 8153101 - playsfx 35 - lighten 2 + playse 35 + animdarklevel 2 call DewfordTown_Gym_EventScript_153071 return DewfordTown_Gym_EventScript_15310C:: @ 815310C - playsfx 35 - lighten 1 + playse 35 + animdarklevel 1 call DewfordTown_Gym_EventScript_153071 return DewfordTown_Gym_EventScript_153117:: @ 8153117 - playsfx 35 - lighten 0 + playse 35 + animdarklevel 0 call DewfordTown_Gym_EventScript_153071 return DewfordTown_Gym_EventScript_153122:: @ 8153122 setvar 0x8000, 0 checktrainerflag OPPONENT_HIDEKI - jumpif 0, DewfordTown_Gym_EventScript_153135 + goto_if 0, DewfordTown_Gym_EventScript_153135 addvar 0x8000, 1 DewfordTown_Gym_EventScript_153135:: @ 8153135 checktrainerflag OPPONENT_TESSA - jumpif 0, DewfordTown_Gym_EventScript_153143 + goto_if 0, DewfordTown_Gym_EventScript_153143 addvar 0x8000, 1 DewfordTown_Gym_EventScript_153143:: @ 8153143 checktrainerflag OPPONENT_LAURA - jumpif 0, DewfordTown_Gym_EventScript_153151 + goto_if 0, DewfordTown_Gym_EventScript_153151 addvar 0x8000, 1 DewfordTown_Gym_EventScript_153151:: @ 8153151 @@ -101,7 +101,7 @@ DewfordTown_Gym_EventScript_153151:: @ 8153151 DewfordTown_Gym_EventScript_153152:: @ 8153152 trainerbattle 1, OPPONENT_BRAWLY, 0, DewfordTown_Gym_Text_175182, DewfordTown_Gym_Text_175246, DewfordTown_Gym_EventScript_153177 checkflag 166 - jumpif 0, DewfordTown_Gym_EventScript_1531B5 + goto_if 0, DewfordTown_Gym_EventScript_1531B5 msgbox DewfordTown_Gym_Text_175412, 4 release end @@ -109,23 +109,23 @@ DewfordTown_Gym_EventScript_153152:: @ 8153152 DewfordTown_Gym_EventScript_153177:: @ 8153177 call DewfordTown_Gym_EventScript_153117 message DewfordTown_Gym_Text_1752BB - waittext + waitmessage call DewfordTown_Gym_EventScript_1A02C5 msgbox DewfordTown_Gym_Text_1752E6, 4 setflag 1204 setflag 2056 addvar 0x4085, 1 compare 0x4085, 6 - callif 1, DewfordTown_Gym_EventScript_1A00FB + call_if 1, DewfordTown_Gym_EventScript_1A00FB setvar 0x8008, 2 call DewfordTown_Gym_EventScript_1A01C0 - jump DewfordTown_Gym_EventScript_1531B5 + goto DewfordTown_Gym_EventScript_1531B5 end DewfordTown_Gym_EventScript_1531B5:: @ 81531B5 giveitem ITEM_TM08 compare RESULT, 0 - jumpeq DewfordTown_Gym_EventScript_1A029B + goto_if_eq DewfordTown_Gym_EventScript_1A029B msgbox DewfordTown_Gym_Text_1753BF, 4 setflag 166 release @@ -165,7 +165,7 @@ DewfordTown_Gym_EventScript_15323F:: @ 815323F lock faceplayer checkflag 1204 - jumpeq DewfordTown_Gym_EventScript_153254 + goto_if_eq DewfordTown_Gym_EventScript_153254 msgbox DewfordTown_Gym_Text_174D98, 4 release end @@ -178,15 +178,15 @@ DewfordTown_Gym_EventScript_153254:: @ 8153254 DewfordTown_Gym_EventScript_15325E:: @ 815325E lockall checkflag 2056 - jumpeq DewfordTown_Gym_EventScript_15327E - jump DewfordTown_Gym_EventScript_153288 + goto_if_eq DewfordTown_Gym_EventScript_15327E + goto DewfordTown_Gym_EventScript_153288 end DewfordTown_Gym_EventScript_15326E:: @ 815326E lockall checkflag 2056 - jumpeq DewfordTown_Gym_EventScript_15327E - jump DewfordTown_Gym_EventScript_153288 + goto_if_eq DewfordTown_Gym_EventScript_15327E + goto DewfordTown_Gym_EventScript_153288 end DewfordTown_Gym_EventScript_15327E:: @ 815327E diff --git a/data/scripts/maps/DewfordTown_Hall.inc b/data/scripts/maps/DewfordTown_Hall.inc index 28d396a3e..ea4016147 100644 --- a/data/scripts/maps/DewfordTown_Hall.inc +++ b/data/scripts/maps/DewfordTown_Hall.inc @@ -7,7 +7,7 @@ DewfordTown_Hall_EventScript_153293:: @ 8153293 call DewfordTown_Hall_EventScript_1A0102 special sub_80FA5E4 compare RESULT, 1 - jumpeq DewfordTown_Hall_EventScript_1532B2 + goto_if_eq DewfordTown_Hall_EventScript_1532B2 msgbox DewfordTown_Hall_Text_1754C9, 4 release end @@ -32,9 +32,9 @@ DewfordTown_Hall_EventScript_1532CD:: @ 81532CD special sub_80EB83C msgbox DewfordTown_Hall_Text_1755F9, 5 compare RESULT, 1 - jumpeq DewfordTown_Hall_EventScript_1532F6 + goto_if_eq DewfordTown_Hall_EventScript_1532F6 compare RESULT, 0 - jumpeq DewfordTown_Hall_EventScript_153300 + goto_if_eq DewfordTown_Hall_EventScript_153300 end DewfordTown_Hall_EventScript_1532F6:: @ 81532F6 @@ -52,9 +52,9 @@ DewfordTown_Hall_EventScript_15330A:: @ 815330A faceplayer call DewfordTown_Hall_EventScript_1A0102 msgbox DewfordTown_Hall_Text_17570D, 4 - closebutton - move 4, DewfordTown_Hall_Movement_1A0841 - waitmove 0 + closemessage + applymovement 4, DewfordTown_Hall_Movement_1A0841 + waitmovement 0 release end @@ -63,9 +63,9 @@ DewfordTown_Hall_EventScript_153326:: @ 8153326 faceplayer call DewfordTown_Hall_EventScript_1A0102 msgbox DewfordTown_Hall_Text_17574C, 4 - closebutton - move 5, DewfordTown_Hall_Movement_1A0841 - waitmove 0 + closemessage + applymovement 5, DewfordTown_Hall_Movement_1A0841 + waitmovement 0 release end @@ -122,13 +122,13 @@ DewfordTown_Hall_EventScript_1533E8:: @ 81533E8 DewfordTown_Hall_EventScript_1533F2:: @ 81533F2 lockall setvar 0x8008, 0 - jump DewfordTown_Hall_EventScript_15340A + goto DewfordTown_Hall_EventScript_15340A end DewfordTown_Hall_EventScript_1533FE:: @ 81533FE lockall setvar 0x8008, 1 - jump DewfordTown_Hall_EventScript_15340A + goto DewfordTown_Hall_EventScript_15340A end DewfordTown_Hall_EventScript_15340A:: @ 815340A @@ -189,55 +189,55 @@ DewfordTown_Hall_EventScript_1534FC:: @ 81534FC return DewfordTown_Hall_EventScript_1534FD:: @ 81534FD - move 8, DewfordTown_Hall_Movement_153599 - waitmove 0 + applymovement 8, DewfordTown_Hall_Movement_153599 + waitmovement 0 compare 0x8008, 0 - jumpeq DewfordTown_Hall_EventScript_15351E + goto_if_eq DewfordTown_Hall_EventScript_15351E compare 0x8008, 1 - jumpeq DewfordTown_Hall_EventScript_153534 + goto_if_eq DewfordTown_Hall_EventScript_153534 end DewfordTown_Hall_EventScript_15351E:: @ 815351E compare FACING, 4 - jumpeq DewfordTown_Hall_EventScript_1534FC - move 255, DewfordTown_Hall_Movement_1A0843 - waitmove 0 + goto_if_eq DewfordTown_Hall_EventScript_1534FC + applymovement 255, DewfordTown_Hall_Movement_1A0843 + waitmovement 0 return DewfordTown_Hall_EventScript_153534:: @ 8153534 return DewfordTown_Hall_EventScript_153535:: @ 8153535 - move 7, DewfordTown_Hall_Movement_15359B - waitmove 0 + applymovement 7, DewfordTown_Hall_Movement_15359B + waitmovement 0 compare 0x8008, 0 - jumpeq DewfordTown_Hall_EventScript_153556 + goto_if_eq DewfordTown_Hall_EventScript_153556 compare 0x8008, 1 - jumpeq DewfordTown_Hall_EventScript_153583 + goto_if_eq DewfordTown_Hall_EventScript_153583 end DewfordTown_Hall_EventScript_153556:: @ 8153556 compare FACING, 2 - callif 1, DewfordTown_Hall_EventScript_15356D + call_if 1, DewfordTown_Hall_EventScript_15356D compare FACING, 1 - callif 1, DewfordTown_Hall_EventScript_153578 + call_if 1, DewfordTown_Hall_EventScript_153578 return DewfordTown_Hall_EventScript_15356D:: @ 815356D - move 255, DewfordTown_Hall_Movement_1A0841 - waitmove 0 + applymovement 255, DewfordTown_Hall_Movement_1A0841 + waitmovement 0 return DewfordTown_Hall_EventScript_153578:: @ 8153578 - move 255, DewfordTown_Hall_Movement_1A0845 - waitmove 0 + applymovement 255, DewfordTown_Hall_Movement_1A0845 + waitmovement 0 return DewfordTown_Hall_EventScript_153583:: @ 8153583 compare FACING, 3 - jumpeq DewfordTown_Hall_EventScript_1534FC - move 255, DewfordTown_Hall_Movement_1A083F - waitmove 0 + goto_if_eq DewfordTown_Hall_EventScript_1534FC + applymovement 255, DewfordTown_Hall_Movement_1A083F + waitmovement 0 return DewfordTown_Hall_Movement_153599:: @ 8153599 @@ -253,11 +253,11 @@ DewfordTown_Hall_EventScript_15359D:: @ 815359D faceplayer call DewfordTown_Hall_EventScript_1A0102 checkflag 230 - jumpeq DewfordTown_Hall_EventScript_1535D1 + goto_if_eq DewfordTown_Hall_EventScript_1535D1 msgbox DewfordTown_Hall_Text_175E13, 4 giveitem ITEM_TM36 compare RESULT, 0 - jumpeq DewfordTown_Hall_EventScript_1A029B + goto_if_eq DewfordTown_Hall_EventScript_1A029B setflag 230 release end diff --git a/data/scripts/maps/DewfordTown_House1.inc b/data/scripts/maps/DewfordTown_House1.inc index 40e06357c..e8897b974 100644 --- a/data/scripts/maps/DewfordTown_House1.inc +++ b/data/scripts/maps/DewfordTown_House1.inc @@ -12,8 +12,8 @@ DewfordTown_House1_EventScript_152FF8:: @ 8152FF8 DewfordTown_House1_EventScript_153001:: @ 8153001 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox DewfordTown_House1_Text_174CC8, 4 waitpokecry release diff --git a/data/scripts/maps/DewfordTown_House2.inc b/data/scripts/maps/DewfordTown_House2.inc index 529f8bb24..befe47404 100644 --- a/data/scripts/maps/DewfordTown_House2.inc +++ b/data/scripts/maps/DewfordTown_House2.inc @@ -5,11 +5,11 @@ DewfordTown_House2_EventScript_1535DC:: @ 81535DC lock faceplayer checkflag 289 - jumpeq DewfordTown_House2_EventScript_153615 + goto_if_eq DewfordTown_House2_EventScript_153615 msgbox DewfordTown_House2_Text_175EFE, 4 giveitem ITEM_SILK_SCARF compare RESULT, 0 - jumpeq DewfordTown_House2_EventScript_15360B + goto_if_eq DewfordTown_House2_EventScript_15360B setflag 289 release end diff --git a/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc b/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc index 96c198ae5..70e75492e 100644 --- a/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ DewfordTown_PokemonCenter_1F_MapScript1_15301A:: @ 815301A DewfordTown_PokemonCenter_1F_EventScript_153023:: @ 8153023 setvar 0x800b, 1 call DewfordTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/EverGrandeCity.inc b/data/scripts/maps/EverGrandeCity.inc index 9b6d2a8b7..c9768d006 100644 --- a/data/scripts/maps/EverGrandeCity.inc +++ b/data/scripts/maps/EverGrandeCity.inc @@ -4,7 +4,7 @@ EverGrandeCity_MapScripts:: @ 814D4D5 EverGrandeCity_MapScript1_14D4DB:: @ 814D4DB checkflag 2090 - callif 1, EverGrandeCity_EventScript_1A02C1 + call_if 1, EverGrandeCity_EventScript_1A02C1 end EverGrandeCity_EventScript_14D4E5:: @ 814D4E5 diff --git a/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc b/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc index bddcfa74b..90df9ab4e 100644 --- a/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc +++ b/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc @@ -13,7 +13,7 @@ EverGrandeCity_ChampionsRoom_MapScript2_15B7C5:: @ 815B7C5 .2byte 0 EverGrandeCity_ChampionsRoom_EventScript_15B7CF:: @ 815B7CF - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_ChampionsRoom_MapScript2_15B7D4:: @ 815B7D4 @@ -22,13 +22,13 @@ EverGrandeCity_ChampionsRoom_MapScript2_15B7D4:: @ 815B7D4 EverGrandeCity_ChampionsRoom_EventScript_15B7DE:: @ 815B7DE lockall - move 255, EverGrandeCity_ChampionsRoom_Movement_1A084E - waitmove 0 - pause 40 - move 255, EverGrandeCity_ChampionsRoom_Movement_15B802 - waitmove 0 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A084E + waitmovement 0 + delay 40 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B802 + waitmovement 0 setvar 0x4001, 1 - jump EverGrandeCity_ChampionsRoom_EventScript_15B805 + goto EverGrandeCity_ChampionsRoom_EventScript_15B805 releaseall end @@ -38,104 +38,104 @@ EverGrandeCity_ChampionsRoom_Movement_15B802:: @ 815B802 step_end EverGrandeCity_ChampionsRoom_EventScript_15B805:: @ 815B805 - playmusic 454, 0 + playbgm 454, 0 msgbox EverGrandeCity_ChampionsRoom_Text_190F9C, 4 trainerbattle 3, OPPONENT_STEVEN, 0, EverGrandeCity_ChampionsRoom_Text_1910A0 - jump EverGrandeCity_ChampionsRoom_EventScript_15B821 + goto EverGrandeCity_ChampionsRoom_EventScript_15B821 end EverGrandeCity_ChampionsRoom_EventScript_15B821:: @ 815B821 - playsfx 8 + playse 8 setmaptile 6, 1, 838, 0 setmaptile 6, 2, 839, 0 special DrawWholeMapView msgbox EverGrandeCity_ChampionsRoom_Text_1910FE, 4 - closebutton - playsfx 8 - checkgender + closemessage + playse 8 + checkplayergender compare RESULT, 0 - callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B87C + call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B87C compare RESULT, 1 - callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B881 - reappear 2 + call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B881 + addobject 2 call EverGrandeCity_ChampionsRoom_EventScript_15B9BD - checkgender + checkplayergender compare RESULT, 0 - jumpeq EverGrandeCity_ChampionsRoom_EventScript_15B886 + goto_if_eq EverGrandeCity_ChampionsRoom_EventScript_15B886 compare RESULT, 1 - jumpeq EverGrandeCity_ChampionsRoom_EventScript_15B8BB + goto_if_eq EverGrandeCity_ChampionsRoom_EventScript_15B8BB end EverGrandeCity_ChampionsRoom_EventScript_15B87C:: @ 815B87C - playmusic 415, 0 + playbgm 415, 0 return EverGrandeCity_ChampionsRoom_EventScript_15B881:: @ 815B881 - playmusic 421, 0 + playbgm 421, 0 return EverGrandeCity_ChampionsRoom_EventScript_15B886:: @ 815B886 msgbox EverGrandeCity_ChampionsRoom_Text_191225, 4 - pause 40 - playsfx 21 - move 2, EverGrandeCity_ChampionsRoom_Movement_1A0833 - waitmove 0 - move 2, EverGrandeCity_ChampionsRoom_Movement_1A0835 - waitmove 0 + delay 40 + playse 21 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0833 + waitmovement 0 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0835 + waitmovement 0 call EverGrandeCity_ChampionsRoom_EventScript_15B9D2 msgbox EverGrandeCity_ChampionsRoom_Text_191268, 4 - jump EverGrandeCity_ChampionsRoom_EventScript_15B8F0 + goto EverGrandeCity_ChampionsRoom_EventScript_15B8F0 end EverGrandeCity_ChampionsRoom_EventScript_15B8BB:: @ 815B8BB msgbox EverGrandeCity_ChampionsRoom_Text_1912B3, 4 - pause 40 - playsfx 21 - move 2, EverGrandeCity_ChampionsRoom_Movement_1A0833 - waitmove 0 - move 2, EverGrandeCity_ChampionsRoom_Movement_1A0835 - waitmove 0 + delay 40 + playse 21 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0833 + waitmovement 0 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0835 + waitmovement 0 call EverGrandeCity_ChampionsRoom_EventScript_15B9D2 msgbox EverGrandeCity_ChampionsRoom_Text_191305, 4 - jump EverGrandeCity_ChampionsRoom_EventScript_15B8F0 + goto EverGrandeCity_ChampionsRoom_EventScript_15B8F0 end EverGrandeCity_ChampionsRoom_EventScript_15B8F0:: @ 815B8F0 - closebutton - reappear 3 - move 3, EverGrandeCity_ChampionsRoom_Movement_15BA03 - waitmove 0 - move 255, EverGrandeCity_ChampionsRoom_Movement_1A0843 - waitmove 0 + closemessage + addobject 3 + applymovement 3, EverGrandeCity_ChampionsRoom_Movement_15BA03 + waitmovement 0 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A0843 + waitmovement 0 msgbox EverGrandeCity_ChampionsRoom_Text_19134D, 4 call EverGrandeCity_ChampionsRoom_EventScript_1A03B0 msgbox EverGrandeCity_ChampionsRoom_Text_1914C6, 4 - move 1, EverGrandeCity_ChampionsRoom_Movement_1A0841 - waitmove 0 - pause 20 - move 1, EverGrandeCity_ChampionsRoom_Movement_1A0845 - waitmove 0 + applymovement 1, EverGrandeCity_ChampionsRoom_Movement_1A0841 + waitmovement 0 + delay 20 + applymovement 1, EverGrandeCity_ChampionsRoom_Movement_1A0845 + waitmovement 0 msgbox EverGrandeCity_ChampionsRoom_Text_191512, 4 - closebutton - pause 30 - move 1, EverGrandeCity_ChampionsRoom_Movement_15B9FB - move 255, EverGrandeCity_ChampionsRoom_Movement_15B9DD - move 3, EverGrandeCity_ChampionsRoom_Movement_1A0841 - move 2, EverGrandeCity_ChampionsRoom_Movement_15B9F8 - waitmove 0 - pause 20 - move 255, EverGrandeCity_ChampionsRoom_Movement_1A0845 - waitmove 0 + closemessage + delay 30 + applymovement 1, EverGrandeCity_ChampionsRoom_Movement_15B9FB + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B9DD + applymovement 3, EverGrandeCity_ChampionsRoom_Movement_1A0841 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9F8 + waitmovement 0 + delay 20 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A0845 + waitmovement 0 msgbox EverGrandeCity_ChampionsRoom_Text_191546, 4 - checkgender + checkplayergender compare RESULT, 0 - callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B9AB + call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B9AB compare RESULT, 1 - callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B9B4 - closebutton - move 1, EverGrandeCity_ChampionsRoom_Movement_15B9FF - move 255, EverGrandeCity_ChampionsRoom_Movement_15B9E0 - waitmove 0 + call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B9B4 + closemessage + applymovement 1, EverGrandeCity_ChampionsRoom_Movement_15B9FF + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B9E0 + waitmovement 0 setflag 781 warp EverGrandeCity_HallOfFame, 255, 7, 16 waitstate @@ -151,15 +151,15 @@ EverGrandeCity_ChampionsRoom_EventScript_15B9B4:: @ 815B9B4 return EverGrandeCity_ChampionsRoom_EventScript_15B9BD:: @ 815B9BD - move 2, EverGrandeCity_ChampionsRoom_Movement_15B9E6 - waitmove 0 - move 255, EverGrandeCity_ChampionsRoom_Movement_1A083F - waitmove 0 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9E6 + waitmovement 0 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A083F + waitmovement 0 return EverGrandeCity_ChampionsRoom_EventScript_15B9D2:: @ 815B9D2 - move 2, EverGrandeCity_ChampionsRoom_Movement_15B9EF - waitmove 0 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9EF + waitmovement 0 return EverGrandeCity_ChampionsRoom_Movement_15B9DD:: @ 815B9DD diff --git a/data/scripts/maps/EverGrandeCity_Corridor1.inc b/data/scripts/maps/EverGrandeCity_Corridor1.inc index 499ad673f..104504960 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor1.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor1.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor1_MapScript2_15BA12:: @ 815BA12 .2byte 0 EverGrandeCity_Corridor1_EventScript_15BA1C:: @ 815BA1C - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_Corridor2.inc b/data/scripts/maps/EverGrandeCity_Corridor2.inc index 692de1ed9..c7c049020 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor2.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor2.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor2_MapScript2_15BA27:: @ 815BA27 .2byte 0 EverGrandeCity_Corridor2_EventScript_15BA31:: @ 815BA31 - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_Corridor3.inc b/data/scripts/maps/EverGrandeCity_Corridor3.inc index f8ed19669..1714db5cc 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor3.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor3.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor3_MapScript2_15BA3C:: @ 815BA3C .2byte 0 EverGrandeCity_Corridor3_EventScript_15BA46:: @ 815BA46 - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_Corridor4.inc b/data/scripts/maps/EverGrandeCity_Corridor4.inc index 616a25ec5..64cc234eb 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor4.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor4.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor4_MapScript2_15BA51:: @ 815BA51 .2byte 0 EverGrandeCity_Corridor4_EventScript_15BA5B:: @ 815BA5B - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_Corridor5.inc b/data/scripts/maps/EverGrandeCity_Corridor5.inc index 783b03aec..73c0b5a84 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor5.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor5.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor5_MapScript2_15BA66:: @ 815BA66 .2byte 0 EverGrandeCity_Corridor5_EventScript_15BA70:: @ 815BA70 - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_DrakesRoom.inc b/data/scripts/maps/EverGrandeCity_DrakesRoom.inc index d10957a8e..3d3d56ff9 100644 --- a/data/scripts/maps/EverGrandeCity_DrakesRoom.inc +++ b/data/scripts/maps/EverGrandeCity_DrakesRoom.inc @@ -9,7 +9,7 @@ EverGrandeCity_DrakesRoom_MapScripts:: @ 815B70D .2byte 0 EverGrandeCity_DrakesRoom_EventScript_15B727:: @ 815B727 - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_DrakesRoom_MapScript2_15B72C:: @ 815B72C @@ -25,9 +25,9 @@ EverGrandeCity_DrakesRoom_EventScript_15B736:: @ 815B736 EverGrandeCity_DrakesRoom_MapScript1_15B743:: @ 815B743 checkflag 1248 - callif 1, EverGrandeCity_DrakesRoom_EventScript_15B758 + call_if 1, EverGrandeCity_DrakesRoom_EventScript_15B758 compare 0x409c, 4 - callif 1, EverGrandeCity_DrakesRoom_EventScript_15B75E + call_if 1, EverGrandeCity_DrakesRoom_EventScript_15B75E end EverGrandeCity_DrakesRoom_EventScript_15B758:: @ 815B758 @@ -42,11 +42,11 @@ EverGrandeCity_DrakesRoom_EventScript_15B764:: @ 815B764 lock faceplayer checkflag 1248 - jumpeq EverGrandeCity_DrakesRoom_EventScript_15B78B - playmusic 450, 0 + goto_if_eq EverGrandeCity_DrakesRoom_EventScript_15B78B + playbgm 450, 0 msgbox EverGrandeCity_DrakesRoom_Text_190CEB, 4 trainerbattle 3, OPPONENT_DRAKE, 0, EverGrandeCity_DrakesRoom_Text_190E42 - jump EverGrandeCity_DrakesRoom_EventScript_15B795 + goto EverGrandeCity_DrakesRoom_EventScript_15B795 end EverGrandeCity_DrakesRoom_EventScript_15B78B:: @ 815B78B diff --git a/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc b/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc index 039b2a772..07f6e8877 100644 --- a/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc +++ b/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc @@ -9,7 +9,7 @@ EverGrandeCity_GlaciasRoom_MapScript2_15B683:: @ 815B683 .2byte 0 EverGrandeCity_GlaciasRoom_EventScript_15B68D:: @ 815B68D - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_GlaciasRoom_MapScript2_15B692:: @ 815B692 @@ -25,9 +25,9 @@ EverGrandeCity_GlaciasRoom_EventScript_15B69C:: @ 815B69C EverGrandeCity_GlaciasRoom_MapScript1_15B6A9:: @ 815B6A9 checkflag 1247 - callif 1, EverGrandeCity_GlaciasRoom_EventScript_15B6BE + call_if 1, EverGrandeCity_GlaciasRoom_EventScript_15B6BE compare 0x409c, 3 - callif 1, EverGrandeCity_GlaciasRoom_EventScript_15B6C4 + call_if 1, EverGrandeCity_GlaciasRoom_EventScript_15B6C4 end EverGrandeCity_GlaciasRoom_EventScript_15B6BE:: @ 815B6BE @@ -42,11 +42,11 @@ EverGrandeCity_GlaciasRoom_EventScript_15B6CA:: @ 815B6CA lock faceplayer checkflag 1247 - jumpeq EverGrandeCity_GlaciasRoom_EventScript_15B6F1 - playmusic 450, 0 + goto_if_eq EverGrandeCity_GlaciasRoom_EventScript_15B6F1 + playbgm 450, 0 msgbox EverGrandeCity_GlaciasRoom_Text_190AF9, 4 trainerbattle 3, OPPONENT_GLACIA, 0, EverGrandeCity_GlaciasRoom_Text_190C01 - jump EverGrandeCity_GlaciasRoom_EventScript_15B6FB + goto EverGrandeCity_GlaciasRoom_EventScript_15B6FB end EverGrandeCity_GlaciasRoom_EventScript_15B6F1:: @ 815B6F1 diff --git a/data/scripts/maps/EverGrandeCity_HallOfFame.inc b/data/scripts/maps/EverGrandeCity_HallOfFame.inc index 175990328..d9baaee89 100644 --- a/data/scripts/maps/EverGrandeCity_HallOfFame.inc +++ b/data/scripts/maps/EverGrandeCity_HallOfFame.inc @@ -8,7 +8,7 @@ EverGrandeCity_HallOfFame_MapScript2_15BB8F:: @ 815BB8F .2byte 0 EverGrandeCity_HallOfFame_EventScript_15BB99:: @ 815BB99 - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_HallOfFame_MapScript2_15BB9E:: @ 815BB9E @@ -17,37 +17,37 @@ EverGrandeCity_HallOfFame_MapScript2_15BB9E:: @ 815BB9E EverGrandeCity_HallOfFame_EventScript_15BBA8:: @ 815BBA8 lockall - move 1, EverGrandeCity_HallOfFame_Movement_15BC59 - move 255, EverGrandeCity_HallOfFame_Movement_15BC59 - waitmove 0 - move 1, EverGrandeCity_HallOfFame_Movement_1A0843 - move 255, EverGrandeCity_HallOfFame_Movement_1A083F - waitmove 0 + applymovement 1, EverGrandeCity_HallOfFame_Movement_15BC59 + applymovement 255, EverGrandeCity_HallOfFame_Movement_15BC59 + waitmovement 0 + applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0843 + applymovement 255, EverGrandeCity_HallOfFame_Movement_1A083F + waitmovement 0 msgbox EverGrandeCity_HallOfFame_Text_191841, 4 - closebutton - move 1, EverGrandeCity_HallOfFame_Movement_15BC60 - move 255, EverGrandeCity_HallOfFame_Movement_15BC60 - waitmove 0 - pause 20 - move 1, EverGrandeCity_HallOfFame_Movement_1A0843 - move 255, EverGrandeCity_HallOfFame_Movement_1A083F - waitmove 0 + closemessage + applymovement 1, EverGrandeCity_HallOfFame_Movement_15BC60 + applymovement 255, EverGrandeCity_HallOfFame_Movement_15BC60 + waitmovement 0 + delay 20 + applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0843 + applymovement 255, EverGrandeCity_HallOfFame_Movement_1A083F + waitmovement 0 msgbox EverGrandeCity_HallOfFame_Text_1918D7, 4 - closebutton - move 1, EverGrandeCity_HallOfFame_Movement_1A0841 - move 255, EverGrandeCity_HallOfFame_Movement_1A0841 - waitmove 0 - pause 20 - doanimation 62 - checkanimation 62 - pause 40 + closemessage + applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0841 + applymovement 255, EverGrandeCity_HallOfFame_Movement_1A0841 + waitmovement 0 + delay 20 + dofieldeffect 62 + waitfieldeffect 62 + delay 40 setvar 0x4001, 1 call EverGrandeCity_HallOfFame_EventScript_19FC13 - checkgender + checkplayergender compare RESULT, 0 - jumpeq EverGrandeCity_HallOfFame_EventScript_15BC41 + goto_if_eq EverGrandeCity_HallOfFame_EventScript_15BC41 compare RESULT, 1 - jumpeq EverGrandeCity_HallOfFame_EventScript_15BC4D + goto_if_eq EverGrandeCity_HallOfFame_EventScript_15BC4D end EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41 diff --git a/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc b/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc index 7e8ee131a..b7c1618ba 100644 --- a/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc +++ b/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc @@ -9,7 +9,7 @@ EverGrandeCity_PhoebesRoom_MapScript2_15B5E9:: @ 815B5E9 .2byte 0 EverGrandeCity_PhoebesRoom_EventScript_15B5F3:: @ 815B5F3 - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_PhoebesRoom_MapScript2_15B5F8:: @ 815B5F8 @@ -25,9 +25,9 @@ EverGrandeCity_PhoebesRoom_EventScript_15B602:: @ 815B602 EverGrandeCity_PhoebesRoom_MapScript1_15B60F:: @ 815B60F checkflag 1246 - callif 1, EverGrandeCity_PhoebesRoom_EventScript_15B624 + call_if 1, EverGrandeCity_PhoebesRoom_EventScript_15B624 compare 0x409c, 2 - callif 1, EverGrandeCity_PhoebesRoom_EventScript_15B62A + call_if 1, EverGrandeCity_PhoebesRoom_EventScript_15B62A end EverGrandeCity_PhoebesRoom_EventScript_15B624:: @ 815B624 @@ -42,11 +42,11 @@ EverGrandeCity_PhoebesRoom_EventScript_15B630:: @ 815B630 lock faceplayer checkflag 1246 - jumpeq EverGrandeCity_PhoebesRoom_EventScript_15B657 - playmusic 450, 0 + goto_if_eq EverGrandeCity_PhoebesRoom_EventScript_15B657 + playbgm 450, 0 msgbox EverGrandeCity_PhoebesRoom_Text_1908F5, 4 trainerbattle 3, OPPONENT_PHOEBE, 0, EverGrandeCity_PhoebesRoom_Text_190A0C - jump EverGrandeCity_PhoebesRoom_EventScript_15B661 + goto EverGrandeCity_PhoebesRoom_EventScript_15B661 end EverGrandeCity_PhoebesRoom_EventScript_15B657:: @ 815B657 diff --git a/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc b/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc index 7c0b8b0a4..57262b211 100644 --- a/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ EverGrandeCity_PokemonCenter_1F_EventScript_15BC70:: @ 815BC70 SootopolisCity_PokemonCenter_1F_EventScript_15BC70:: @ 815BC70 setvar 0x800b, 1 call SootopolisCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/EverGrandeCity_PokemonLeague.inc b/data/scripts/maps/EverGrandeCity_PokemonLeague.inc index bfb3cdc1b..acbdac899 100644 --- a/data/scripts/maps/EverGrandeCity_PokemonLeague.inc +++ b/data/scripts/maps/EverGrandeCity_PokemonLeague.inc @@ -6,18 +6,18 @@ EverGrandeCity_PokemonLeague_MapScript1_15BA7B:: @ 815BA7B sethealplace 20 setflag 2132 checkflag 263 - callif 0, EverGrandeCity_PokemonLeague_EventScript_15BA8B + call_if 0, EverGrandeCity_PokemonLeague_EventScript_15BA8B end EverGrandeCity_PokemonLeague_EventScript_15BA8B:: @ 815BA8B - movespriteperm 3, 9, 2 - movespriteperm 4, 10, 2 + setobjectxyperm 3, 9, 2 + setobjectxyperm 4, 10, 2 return EverGrandeCity_PokemonLeague_EventScript_15BA9A:: @ 815BA9A setvar 0x800b, 1 call EverGrandeCity_PokemonLeague_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -26,7 +26,7 @@ EverGrandeCity_PokemonLeague_EventScript_15BAA8:: @ 815BAA8 lock faceplayer message EverGrandeCity_PokemonLeague_Text_1A0BE4 - waittext + waitmessage pokemart EverGrandeCity_PokemonLeague_Items msgbox EverGrandeCity_PokemonLeague_Text_1A0C02, 4 release @@ -48,56 +48,56 @@ EverGrandeCity_PokemonLeague_Items:: @ 815BAC0 EverGrandeCity_PokemonLeague_EventScript_15BAD2:: @ 815BAD2 lockall checkflag 263 - jumpeq EverGrandeCity_PokemonLeague_EventScript_15BB57 + goto_if_eq EverGrandeCity_PokemonLeague_EventScript_15BB57 getplayerxy 0x4000, 0x4001 compare 0x4000, 11 - callif 4, EverGrandeCity_PokemonLeague_EventScript_15BB34 + call_if 4, EverGrandeCity_PokemonLeague_EventScript_15BB34 compare 0x4000, 8 - callif 3, EverGrandeCity_PokemonLeague_EventScript_15BB3F + call_if 3, EverGrandeCity_PokemonLeague_EventScript_15BB3F message EverGrandeCity_PokemonLeague_Text_1916FD - waittext - pause 75 + waitmessage + delay 75 checkflag 2060 - jumpif 0, EverGrandeCity_PokemonLeague_EventScript_15BB4A - closebutton - move 3, EverGrandeCity_PokemonLeague_Movement_15BB7E - move 4, EverGrandeCity_PokemonLeague_Movement_15BB81 - waitmove 0 - pause 10 - fanfare 369 + goto_if 0, EverGrandeCity_PokemonLeague_EventScript_15BB4A + closemessage + applymovement 3, EverGrandeCity_PokemonLeague_Movement_15BB7E + applymovement 4, EverGrandeCity_PokemonLeague_Movement_15BB81 + waitmovement 0 + delay 10 + playfanfare 369 message EverGrandeCity_PokemonLeague_Text_191804 - waittext + waitmessage waitfanfare - closebutton - moveoffscreen 3 - moveoffscreen 4 + closemessage + moveobjectoffscreen 3 + moveobjectoffscreen 4 setflag 263 releaseall end EverGrandeCity_PokemonLeague_EventScript_15BB34:: @ 815BB34 - move 255, EverGrandeCity_PokemonLeague_Movement_15BB76 - waitmove 0 + applymovement 255, EverGrandeCity_PokemonLeague_Movement_15BB76 + waitmovement 0 return EverGrandeCity_PokemonLeague_EventScript_15BB3F:: @ 815BB3F - move 255, EverGrandeCity_PokemonLeague_Movement_15BB7A - waitmove 0 + applymovement 255, EverGrandeCity_PokemonLeague_Movement_15BB7A + waitmovement 0 return EverGrandeCity_PokemonLeague_EventScript_15BB4A:: @ 815BB4A - playsfx 32 + playse 32 msgbox EverGrandeCity_PokemonLeague_Text_19179C, 4 releaseall end EverGrandeCity_PokemonLeague_EventScript_15BB57:: @ 815BB57 - move LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A0839 + waitmovement 0 msgbox EverGrandeCity_PokemonLeague_Text_191804, 4 - closebutton - move LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A083D + waitmovement 0 releaseall end diff --git a/data/scripts/maps/EverGrandeCity_SidneysRoom.inc b/data/scripts/maps/EverGrandeCity_SidneysRoom.inc index 84a6c3fdc..daca98176 100644 --- a/data/scripts/maps/EverGrandeCity_SidneysRoom.inc +++ b/data/scripts/maps/EverGrandeCity_SidneysRoom.inc @@ -6,9 +6,9 @@ EverGrandeCity_SidneysRoom_MapScripts:: @ 815B53F EverGrandeCity_SidneysRoom_MapScript1_15B54F:: @ 815B54F checkflag 1245 - callif 1, EverGrandeCity_SidneysRoom_EventScript_15B564 + call_if 1, EverGrandeCity_SidneysRoom_EventScript_15B564 compare 0x409c, 1 - callif 1, EverGrandeCity_SidneysRoom_EventScript_15B56A + call_if 1, EverGrandeCity_SidneysRoom_EventScript_15B56A end EverGrandeCity_SidneysRoom_EventScript_15B564:: @ 815B564 @@ -25,7 +25,7 @@ EverGrandeCity_SidneysRoom_MapScript2_15B570:: @ 815B570 .2byte 0 EverGrandeCity_SidneysRoom_EventScript_15B57A:: @ 815B57A - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_SidneysRoom_MapScript2_15B57F:: @ 815B57F @@ -43,11 +43,11 @@ EverGrandeCity_SidneysRoom_EventScript_15B596:: @ 815B596 lock faceplayer checkflag 1245 - jumpeq EverGrandeCity_SidneysRoom_EventScript_15B5BD - playmusic 450, 0 + goto_if_eq EverGrandeCity_SidneysRoom_EventScript_15B5BD + playbgm 450, 0 msgbox EverGrandeCity_SidneysRoom_Text_190728, 4 trainerbattle 3, OPPONENT_SIDNEY, 0, EverGrandeCity_SidneysRoom_Text_190823 - jump EverGrandeCity_SidneysRoom_EventScript_15B5C7 + goto EverGrandeCity_SidneysRoom_EventScript_15B5C7 end EverGrandeCity_SidneysRoom_EventScript_15B5BD:: @ 815B5BD diff --git a/data/scripts/maps/FallarborTown.inc b/data/scripts/maps/FallarborTown.inc index a48be5b24..13c8a9f2e 100644 --- a/data/scripts/maps/FallarborTown.inc +++ b/data/scripts/maps/FallarborTown.inc @@ -13,7 +13,7 @@ FallarborTown_EventScript_14E7F5:: @ 814E7F5 lock faceplayer checkflag 139 - jumpeq FallarborTown_EventScript_14E80A + goto_if_eq FallarborTown_EventScript_14E80A msgbox FallarborTown_Text_16C7FF, 4 release end @@ -34,8 +34,8 @@ FallarborTown_EventScript_14E81D:: @ 814E81D FallarborTown_EventScript_14E826:: @ 814E826 lock faceplayer - checksound - pokecry SPECIES_AZURILL, 0 + waitse + playpokecry SPECIES_AZURILL, 0 msgbox FallarborTown_Text_16C92C, 4 waitpokecry release diff --git a/data/scripts/maps/FallarborTown_ContestLobby.inc b/data/scripts/maps/FallarborTown_ContestLobby.inc index ed67d922d..c4c590b53 100644 --- a/data/scripts/maps/FallarborTown_ContestLobby.inc +++ b/data/scripts/maps/FallarborTown_ContestLobby.inc @@ -20,28 +20,28 @@ FallarborTown_ContestLobby_EventScript_1539CD:: @ 81539CD FallarborTown_ContestLobby_EventScript_1539F8:: @ 81539F8 lockall - move 1, FallarborTown_ContestLobby_Movement_153A7C - waitmove 0 - playsfx 71 + applymovement 1, FallarborTown_ContestLobby_Movement_153A7C + waitmovement 0 + playse 71 setmaptile 4, 2, 545, 1 setmaptile 4, 3, 609, 1 special DrawWholeMapView - move 1, FallarborTown_ContestLobby_Movement_153A7F - waitmove 0 - playsfx 71 + applymovement 1, FallarborTown_ContestLobby_Movement_153A7F + waitmovement 0 + playse 71 setmaptile 4, 2, 721, 1 setmaptile 4, 3, 729, 1 special DrawWholeMapView - pause 20 - move 1, FallarborTown_ContestLobby_Movement_153A8C - waitmove 0 - move 255, FallarborTown_ContestLobby_Movement_153A7A - waitmove 0 + delay 20 + applymovement 1, FallarborTown_ContestLobby_Movement_153A8C + waitmovement 0 + applymovement 255, FallarborTown_ContestLobby_Movement_153A7A + waitmovement 0 msgbox FallarborTown_ContestLobby_Text_1A6832, 4 - closebutton - move 1, FallarborTown_ContestLobby_Movement_153A83 - move 255, FallarborTown_ContestLobby_Movement_153A70 - waitmove 0 + closemessage + applymovement 1, FallarborTown_ContestLobby_Movement_153A83 + applymovement 255, FallarborTown_ContestLobby_Movement_153A70 + waitmovement 0 releaseall return @@ -93,7 +93,7 @@ FallarborTown_ContestLobby_EventScript_153A8E:: @ 8153A8E FallarborTown_ContestLobby_EventScript_153A97:: @ 8153A97 checkflag 270 - jumpeq FallarborTown_ContestLobby_EventScript_153AA9 + goto_if_eq FallarborTown_ContestLobby_EventScript_153AA9 msgbox FallarborTown_ContestLobby_Text_177246, 2 end @@ -108,7 +108,7 @@ FallarborTown_ContestLobby_EventScript_153AB2:: @ 8153AB2 FallarborTown_ContestLobby_EventScript_153ABB:: @ 8153ABB lockall fadescreen 1 - showcontestwinner 2 + drawcontestwinner 2 releaseall end @@ -116,6 +116,6 @@ FallarborTown_ContestLobby_EventScript_153AC2:: @ 8153AC2 lockall special ShowBerryBlenderRecordWindow waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/FallarborTown_House1.inc b/data/scripts/maps/FallarborTown_House1.inc index 8a44cdcfb..0228fe25d 100644 --- a/data/scripts/maps/FallarborTown_House1.inc +++ b/data/scripts/maps/FallarborTown_House1.inc @@ -9,25 +9,25 @@ FallarborTown_House1_EventScript_153BB5:: @ 8153BB5 lock faceplayer checkflag 229 - jumpeq FallarborTown_House1_EventScript_153C54 + goto_if_eq FallarborTown_House1_EventScript_153C54 checkitem ITEM_METEORITE, 1 compare RESULT, 1 - jumpeq FallarborTown_House1_EventScript_153BDA + goto_if_eq FallarborTown_House1_EventScript_153BDA msgbox FallarborTown_House1_Text_177755, 4 release end FallarborTown_House1_EventScript_153BDA:: @ 8153BDA checkflag 2 - callif 0, FallarborTown_House1_EventScript_153C2D + call_if 0, FallarborTown_House1_EventScript_153C2D checkflag 2 - callif 1, FallarborTown_House1_EventScript_153C3E + call_if 1, FallarborTown_House1_EventScript_153C3E compare RESULT, 0 - jumpeq FallarborTown_House1_EventScript_153C47 + goto_if_eq FallarborTown_House1_EventScript_153C47 msgbox FallarborTown_House1_Text_1778C4, 4 giveitem ITEM_TM27 compare RESULT, 0 - jumpeq FallarborTown_House1_EventScript_1A029B + goto_if_eq FallarborTown_House1_EventScript_1A029B setvar 0x8004, 280 call FallarborTown_House1_EventScript_1A067F setflag 229 @@ -59,9 +59,9 @@ FallarborTown_House1_EventScript_153C5E:: @ 8153C5E lock faceplayer checkflag 229 - jumpeq FallarborTown_House1_EventScript_153C86 + goto_if_eq FallarborTown_House1_EventScript_153C86 checkflag 139 - jumpeq FallarborTown_House1_EventScript_153C7C + goto_if_eq FallarborTown_House1_EventScript_153C7C msgbox FallarborTown_House1_Text_177A2B, 4 release end diff --git a/data/scripts/maps/FallarborTown_House2.inc b/data/scripts/maps/FallarborTown_House2.inc index 1351b96d3..3b215a697 100644 --- a/data/scripts/maps/FallarborTown_House2.inc +++ b/data/scripts/maps/FallarborTown_House2.inc @@ -3,23 +3,23 @@ FallarborTown_House2_MapScripts:: @ 8153C90 FallarborTown_House2_EventScript_153C91:: @ 8153C91 lockall - move 1, FallarborTown_House2_Movement_1A0839 - waitmove 0 + applymovement 1, FallarborTown_House2_Movement_1A0839 + waitmovement 0 checkflag 1 - jumpeq FallarborTown_House2_EventScript_153CB6 + goto_if_eq FallarborTown_House2_EventScript_153CB6 msgbox FallarborTown_House2_Text_177AF4, 4 setflag 1 - jump FallarborTown_House2_EventScript_153CB6 + goto FallarborTown_House2_EventScript_153CB6 end FallarborTown_House2_EventScript_153CB6:: @ 8153CB6 checkitem ITEM_HEART_SCALE, 1 compare RESULT, 0 - jumpeq FallarborTown_House2_EventScript_153D60 + goto_if_eq FallarborTown_House2_EventScript_153D60 msgbox FallarborTown_House2_Text_177BDB, 5 switch RESULT case 0, FallarborTown_House2_EventScript_153D60 - jump FallarborTown_House2_EventScript_153CE4 + goto FallarborTown_House2_EventScript_153CE4 end FallarborTown_House2_EventScript_153CE4:: @ 8153CE4 @@ -27,13 +27,13 @@ FallarborTown_House2_EventScript_153CE4:: @ 8153CE4 special sub_80F9A4C waitstate compare 0x8004, 255 - jumpeq FallarborTown_House2_EventScript_153D60 + goto_if_eq FallarborTown_House2_EventScript_153D60 special sub_80FA148 compare RESULT, 1 - jumpeq FallarborTown_House2_EventScript_153D52 + goto_if_eq FallarborTown_House2_EventScript_153D52 compare 0x8005, 0 - jumpeq FallarborTown_House2_EventScript_153D44 - jump FallarborTown_House2_EventScript_153D1A + goto_if_eq FallarborTown_House2_EventScript_153D44 + goto FallarborTown_House2_EventScript_153D1A end FallarborTown_House2_EventScript_153D1A:: @ 8153D1A @@ -41,20 +41,20 @@ FallarborTown_House2_EventScript_153D1A:: @ 8153D1A special sub_8132670 waitstate compare 0x8004, 0 - jumpeq FallarborTown_House2_EventScript_153CE4 + goto_if_eq FallarborTown_House2_EventScript_153CE4 msgbox FallarborTown_House2_Text_177CC3, 4 removeitem ITEM_HEART_SCALE, 1 - jump FallarborTown_House2_EventScript_153D60 + goto FallarborTown_House2_EventScript_153D60 end FallarborTown_House2_EventScript_153D44:: @ 8153D44 msgbox FallarborTown_House2_Text_177C78, 4 - jump FallarborTown_House2_EventScript_153CE4 + goto FallarborTown_House2_EventScript_153CE4 end FallarborTown_House2_EventScript_153D52:: @ 8153D52 msgbox FallarborTown_House2_Text_177D33, 4 - jump FallarborTown_House2_EventScript_153CE4 + goto FallarborTown_House2_EventScript_153CE4 end FallarborTown_House2_EventScript_153D60:: @ 8153D60 diff --git a/data/scripts/maps/FallarborTown_Mart.inc b/data/scripts/maps/FallarborTown_Mart.inc index 4b66546e8..e6f715697 100644 --- a/data/scripts/maps/FallarborTown_Mart.inc +++ b/data/scripts/maps/FallarborTown_Mart.inc @@ -5,7 +5,7 @@ FallarborTown_Mart_EventScript_153967:: @ 8153967 lock faceplayer message FallarborTown_Mart_Text_1A0BE4 - waittext + waitmessage pokemart FallarborTown_Mart_Items msgbox FallarborTown_Mart_Text_1A0C02, 4 release @@ -40,8 +40,8 @@ FallarborTown_Mart_EventScript_1539A5:: @ 81539A5 FallarborTown_Mart_EventScript_1539AE:: @ 81539AE lock faceplayer - checksound - pokecry SPECIES_SKITTY, 0 + waitse + playpokecry SPECIES_SKITTY, 0 msgbox FallarborTown_Mart_Text_1770D3, 4 waitpokecry release diff --git a/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc b/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc index 636cac8f1..5b1f1c948 100644 --- a/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ FallarborTown_PokemonCenter_1F_MapScript1_153AF9:: @ 8153AF9 FallarborTown_PokemonCenter_1F_EventScript_153B02:: @ 8153B02 setvar 0x800b, 1 call FallarborTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -27,27 +27,27 @@ FallarborTown_PokemonCenter_1F_EventScript_153B22:: @ 8153B22 lock faceplayer msgbox FallarborTown_PokemonCenter_1F_Text_1774D4, 4 - closebutton + closemessage switch FACING case 2, FallarborTown_PokemonCenter_1F_EventScript_153B49 case 3, FallarborTown_PokemonCenter_1F_EventScript_153B59 end FallarborTown_PokemonCenter_1F_EventScript_153B49:: @ 8153B49 - move 4, FallarborTown_PokemonCenter_1F_Movement_153B74 - waitmove 0 - jump FallarborTown_PokemonCenter_1F_EventScript_153B69 + applymovement 4, FallarborTown_PokemonCenter_1F_Movement_153B74 + waitmovement 0 + goto FallarborTown_PokemonCenter_1F_EventScript_153B69 end FallarborTown_PokemonCenter_1F_EventScript_153B59:: @ 8153B59 - move 4, FallarborTown_PokemonCenter_1F_Movement_153B81 - waitmove 0 - jump FallarborTown_PokemonCenter_1F_EventScript_153B69 + applymovement 4, FallarborTown_PokemonCenter_1F_Movement_153B81 + waitmovement 0 + goto FallarborTown_PokemonCenter_1F_EventScript_153B69 end FallarborTown_PokemonCenter_1F_EventScript_153B69:: @ 8153B69 - playsfx 18 - disappear 4 + playse 18 + removeobject 4 clearflag 870 release end diff --git a/data/scripts/maps/FortreeCity.inc b/data/scripts/maps/FortreeCity.inc index 7f9d5ae12..6ea89dcb7 100644 --- a/data/scripts/maps/FortreeCity.inc +++ b/data/scripts/maps/FortreeCity.inc @@ -19,7 +19,7 @@ FortreeCity_EventScript_14C95E:: @ 814C95E lock faceplayer checkflag 295 - jumpeq FortreeCity_EventScript_14C973 + goto_if_eq FortreeCity_EventScript_14C973 msgbox FortreeCity_Text_1675C2, 4 release end @@ -58,7 +58,7 @@ FortreeCity_EventScript_14C9B3:: @ 814C9B3 faceplayer checkitem ITEM_DEVON_SCOPE, 1 compare RESULT, 1 - jumpeq FortreeCity_EventScript_14C9CF + goto_if_eq FortreeCity_EventScript_14C9CF msgbox FortreeCity_Text_167868, 4 release end @@ -66,22 +66,22 @@ FortreeCity_EventScript_14C9B3:: @ 814C9B3 FortreeCity_EventScript_14C9CF:: @ 814C9CF msgbox FortreeCity_Text_16788B, 5 compare RESULT, 1 - jumpeq FortreeCity_EventScript_14C9E4 + goto_if_eq FortreeCity_EventScript_14C9E4 release end FortreeCity_EventScript_14C9E4:: @ 814C9E4 msgbox FortreeCity_Text_1678CB, 4 - closebutton - move LAST_TALKED, FortreeCity_Movement_1A0662 - waitmove 0 - checksound - pokecry SPECIES_KECLEON, 2 - pause 40 + closemessage + applymovement LAST_TALKED, FortreeCity_Movement_1A0662 + waitmovement 0 + waitse + playpokecry SPECIES_KECLEON, 2 + delay 40 waitpokecry - move LAST_TALKED, FortreeCity_Movement_14CA13 - waitmove 0 - disappear LAST_TALKED + applymovement LAST_TALKED, FortreeCity_Movement_14CA13 + waitmovement 0 + removeobject LAST_TALKED setflag 295 release end diff --git a/data/scripts/maps/FortreeCity_DecorationShop.inc b/data/scripts/maps/FortreeCity_DecorationShop.inc index c9d9fdd4e..fca20b866 100644 --- a/data/scripts/maps/FortreeCity_DecorationShop.inc +++ b/data/scripts/maps/FortreeCity_DecorationShop.inc @@ -13,7 +13,7 @@ FortreeCity_DecorationShop_EventScript_15826A:: @ 815826A lock faceplayer message FortreeCity_DecorationShop_Text_1A0BE4 - waittext + waitmessage pokemartdecor FortreeCity_DecorationShop_Decorations1 msgbox FortreeCity_DecorationShop_Text_1A0C02, 4 release @@ -37,7 +37,7 @@ FortreeCity_DecorationShop_EventScript_158298:: @ 8158298 lock faceplayer message FortreeCity_DecorationShop_Text_1A0BE4 - waittext + waitmessage pokemartdecor FortreeCity_DecorationShop_Decorations2 msgbox FortreeCity_DecorationShop_Text_1A0C02, 4 release diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc index 44f5890a2..7309be0bb 100644 --- a/data/scripts/maps/FortreeCity_Gym.inc +++ b/data/scripts/maps/FortreeCity_Gym.inc @@ -18,27 +18,27 @@ FortreeCity_Gym_EventScript_157EEC:: @ 8157EEC FortreeCity_Gym_EventScript_157EF0:: @ 8157EF0 trainerbattle 1, OPPONENT_WINONA, 0, FortreeCity_Gym_Text_185CCB, FortreeCity_Gym_Text_185DBA, FortreeCity_Gym_EventScript_157F15 checkflag 170 - jumpif 0, FortreeCity_Gym_EventScript_157F3E + goto_if 0, FortreeCity_Gym_EventScript_157F3E msgbox FortreeCity_Gym_Text_185F98, 4 release end FortreeCity_Gym_EventScript_157F15:: @ 8157F15 message FortreeCity_Gym_Text_185E48 - waittext + waitmessage call FortreeCity_Gym_EventScript_1A02C5 msgbox FortreeCity_Gym_Text_185E73, 4 setflag 1225 setflag 2060 setvar 0x8008, 6 call FortreeCity_Gym_EventScript_1A01C0 - jump FortreeCity_Gym_EventScript_157F3E + goto FortreeCity_Gym_EventScript_157F3E end FortreeCity_Gym_EventScript_157F3E:: @ 8157F3E giveitem ITEM_TM40 compare RESULT, 0 - jumpeq FortreeCity_Gym_EventScript_1A029B + goto_if_eq FortreeCity_Gym_EventScript_1A029B msgbox FortreeCity_Gym_Text_185F4A, 4 setflag 170 release @@ -68,7 +68,7 @@ FortreeCity_Gym_EventScript_157FBE:: @ 8157FBE lock faceplayer checkflag 1225 - jumpeq FortreeCity_Gym_EventScript_157FD3 + goto_if_eq FortreeCity_Gym_EventScript_157FD3 msgbox FortreeCity_Gym_Text_18589C, 4 release end @@ -81,15 +81,15 @@ FortreeCity_Gym_EventScript_157FD3:: @ 8157FD3 FortreeCity_Gym_EventScript_157FDD:: @ 8157FDD lockall checkflag 2060 - jumpeq FortreeCity_Gym_EventScript_157FFD - jump FortreeCity_Gym_EventScript_158007 + goto_if_eq FortreeCity_Gym_EventScript_157FFD + goto FortreeCity_Gym_EventScript_158007 end FortreeCity_Gym_EventScript_157FED:: @ 8157FED lockall checkflag 2060 - jumpeq FortreeCity_Gym_EventScript_157FFD - jump FortreeCity_Gym_EventScript_158007 + goto_if_eq FortreeCity_Gym_EventScript_157FFD + goto FortreeCity_Gym_EventScript_158007 end FortreeCity_Gym_EventScript_157FFD:: @ 8157FFD diff --git a/data/scripts/maps/FortreeCity_House1.inc b/data/scripts/maps/FortreeCity_House1.inc index f5bda05ab..7b7ef0b2e 100644 --- a/data/scripts/maps/FortreeCity_House1.inc +++ b/data/scripts/maps/FortreeCity_House1.inc @@ -5,30 +5,30 @@ FortreeCity_House1_EventScript_157E13:: @ 8157E13 lock faceplayer checkflag 155 - jumpeq FortreeCity_House1_EventScript_157EAD + goto_if_eq FortreeCity_House1_EventScript_157EAD setvar 0x8008, 1 copyvar 0x8004, 0x8008 - specialval RESULT, sub_804D89C + specialvar RESULT, sub_804D89C copyvar 0x8009, RESULT msgbox FortreeCity_House1_Text_18568C, 5 compare RESULT, 0 - jumpeq FortreeCity_House1_EventScript_157E95 + goto_if_eq FortreeCity_House1_EventScript_157E95 special sub_80F9A0C waitstate copyvar 0x800a, 0x8004 compare 0x8004, 255 - jumpeq FortreeCity_House1_EventScript_157E95 + goto_if_eq FortreeCity_House1_EventScript_157E95 copyvar 0x8005, 0x800a - specialval RESULT, sub_804DB2C + specialvar RESULT, sub_804DB2C copyvar 0x800b, RESULT - comparevars RESULT, 0x8009 - jumpif 5, FortreeCity_House1_EventScript_157E9F + compare RESULT, 0x8009 + goto_if 5, FortreeCity_House1_EventScript_157E9F copyvar 0x8004, 0x8008 copyvar 0x8005, 0x800a special sub_804DB68 special sub_804E174 waitstate - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox FortreeCity_House1_Text_1856F7, 4 setflag 155 release @@ -40,7 +40,7 @@ FortreeCity_House1_EventScript_157E95:: @ 8157E95 end FortreeCity_House1_EventScript_157E9F:: @ 8157E9F - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox FortreeCity_House1_Text_185737, 4 release end @@ -57,8 +57,8 @@ FortreeCity_House1_EventScript_157EB7:: @ 8157EB7 FortreeCity_House1_EventScript_157EC0:: @ 8157EC0 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox FortreeCity_House1_Text_185888, 4 waitpokecry release diff --git a/data/scripts/maps/FortreeCity_House2.inc b/data/scripts/maps/FortreeCity_House2.inc index ea4aad3d8..f210dd3ac 100644 --- a/data/scripts/maps/FortreeCity_House2.inc +++ b/data/scripts/maps/FortreeCity_House2.inc @@ -5,9 +5,9 @@ FortreeCity_House2_EventScript_1580B4:: @ 81580B4 lock faceplayer checkflag 264 - jumpeq FortreeCity_House2_EventScript_158157 + goto_if_eq FortreeCity_House2_EventScript_158157 checkflag 118 - callif 0, FortreeCity_House2_EventScript_15814B + call_if 0, FortreeCity_House2_EventScript_15814B msgbox FortreeCity_House2_Text_186360, 4 multichoice 21, 8, 54, 1 switch RESULT @@ -23,7 +23,7 @@ FortreeCity_House2_EventScript_1580B4:: @ 81580B4 msgbox FortreeCity_House2_Text_1864C6, 4 giveitem ITEM_TM10 compare RESULT, 0 - jumpeq FortreeCity_House2_EventScript_1A029B + goto_if_eq FortreeCity_House2_EventScript_1A029B setflag 264 msgbox FortreeCity_House2_Text_18652F, 4 release diff --git a/data/scripts/maps/FortreeCity_House4.inc b/data/scripts/maps/FortreeCity_House4.inc index 33d0ed1ae..b261e14fb 100644 --- a/data/scripts/maps/FortreeCity_House4.inc +++ b/data/scripts/maps/FortreeCity_House4.inc @@ -8,42 +8,42 @@ FortreeCity_House4_EventScript_15817F:: @ 815817F FortreeCity_House4_EventScript_158188:: @ 8158188 lockall checkflag 223 - jumpeq FortreeCity_House4_EventScript_158204 + goto_if_eq FortreeCity_House4_EventScript_158204 checkflag 224 - jumpeq FortreeCity_House4_EventScript_1581D6 + goto_if_eq FortreeCity_House4_EventScript_1581D6 checkflag 222 - jumpeq FortreeCity_House4_EventScript_1581C2 + goto_if_eq FortreeCity_House4_EventScript_1581C2 msgbox FortreeCity_House4_Text_186835, 4 - closebutton + closemessage setflag 222 clearflag 934 - move 3, FortreeCity_House4_Movement_158218 - waitmove 0 - disappear 3 + applymovement 3, FortreeCity_House4_Movement_158218 + waitmovement 0 + removeobject 3 releaseall end FortreeCity_House4_EventScript_1581C2:: @ 81581C2 - move LAST_TALKED, FortreeCity_House4_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839 + waitmovement 0 msgbox FortreeCity_House4_Text_18684E, 4 releaseall end FortreeCity_House4_EventScript_1581D6:: @ 81581D6 - move LAST_TALKED, FortreeCity_House4_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839 + waitmovement 0 msgbox FortreeCity_House4_Text_186881, 4 giveitem ITEM_MENTAL_HERB compare RESULT, 0 - jumpeq FortreeCity_House4_EventScript_1A029B + goto_if_eq FortreeCity_House4_EventScript_1A029B setflag 223 releaseall end FortreeCity_House4_EventScript_158204:: @ 8158204 - move LAST_TALKED, FortreeCity_House4_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839 + waitmovement 0 msgbox FortreeCity_House4_Text_186924, 4 releaseall end @@ -59,8 +59,8 @@ FortreeCity_House4_Movement_158218:: @ 8158218 FortreeCity_House4_EventScript_15821E:: @ 815821E lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox FortreeCity_House4_Text_18695C, 4 waitpokecry release diff --git a/data/scripts/maps/FortreeCity_House5.inc b/data/scripts/maps/FortreeCity_House5.inc index 1144a8e81..fe10b53b0 100644 --- a/data/scripts/maps/FortreeCity_House5.inc +++ b/data/scripts/maps/FortreeCity_House5.inc @@ -12,8 +12,8 @@ FortreeCity_House5_EventScript_15823B:: @ 815823B FortreeCity_House5_EventScript_158244:: @ 8158244 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox FortreeCity_House5_Text_186A4F, 4 waitpokecry release diff --git a/data/scripts/maps/FortreeCity_Mart.inc b/data/scripts/maps/FortreeCity_Mart.inc index 9e5f34ff9..076f702af 100644 --- a/data/scripts/maps/FortreeCity_Mart.inc +++ b/data/scripts/maps/FortreeCity_Mart.inc @@ -5,7 +5,7 @@ FortreeCity_Mart_EventScript_158067:: @ 8158067 lock faceplayer message FortreeCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart FortreeCity_Mart_Items msgbox FortreeCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc b/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc index 148324abf..5268cbeed 100644 --- a/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ FortreeCity_PokemonCenter_1F_MapScript1_158017:: @ 8158017 FortreeCity_PokemonCenter_1F_EventScript_15801B:: @ 815801B setvar 0x800b, 1 call FortreeCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/GraniteCave_1F.inc b/data/scripts/maps/GraniteCave_1F.inc index 59aaa2fc3..f389a774e 100644 --- a/data/scripts/maps/GraniteCave_1F.inc +++ b/data/scripts/maps/GraniteCave_1F.inc @@ -5,7 +5,7 @@ GraniteCave_1F_EventScript_15CBA7:: @ 815CBA7 lock faceplayer checkflag 109 - jumpeq GraniteCave_1F_EventScript_15CBD3 + goto_if_eq GraniteCave_1F_EventScript_15CBD3 msgbox GraniteCave_1F_Text_194917, 4 giveitem ITEM_HM05 setflag 109 diff --git a/data/scripts/maps/GraniteCave_B1F.inc b/data/scripts/maps/GraniteCave_B1F.inc index 240de1d98..aa8d705c7 100644 --- a/data/scripts/maps/GraniteCave_B1F.inc +++ b/data/scripts/maps/GraniteCave_B1F.inc @@ -6,5 +6,5 @@ GraniteCave_B1F_MapScripts:: @ 815CBDD GraniteCave_B1F_MapScript1_15CBED:: @ 815CBED tileeffect 7 - warp5 GraniteCave_B2F, 255, 0, 0 + setholewarp GraniteCave_B2F, 255, 0, 0 end diff --git a/data/scripts/maps/GraniteCave_StevensRoom.inc b/data/scripts/maps/GraniteCave_StevensRoom.inc index 895241406..070276e58 100644 --- a/data/scripts/maps/GraniteCave_StevensRoom.inc +++ b/data/scripts/maps/GraniteCave_StevensRoom.inc @@ -11,30 +11,30 @@ GraniteCave_StevensRoom_EventScript_15CBFA:: @ 815CBFA msgbox GraniteCave_StevensRoom_Text_194BDD, 4 giveitem ITEM_TM47 compare RESULT, 0 - callif 1, GraniteCave_StevensRoom_EventScript_15CC83 + call_if 1, GraniteCave_StevensRoom_EventScript_15CC83 msgbox GraniteCave_StevensRoom_Text_194C8D, 4 - closebutton + closemessage compare FACING, 2 - callif 1, GraniteCave_StevensRoom_EventScript_15CC6D + call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D compare FACING, 1 - callif 1, GraniteCave_StevensRoom_EventScript_15CC78 + call_if 1, GraniteCave_StevensRoom_EventScript_15CC78 compare FACING, 3 - callif 1, GraniteCave_StevensRoom_EventScript_15CC6D + call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D compare FACING, 4 - callif 1, GraniteCave_StevensRoom_EventScript_15CC6D - playsfx 9 - disappear 1 + call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D + playse 9 + removeobject 1 release end GraniteCave_StevensRoom_EventScript_15CC6D:: @ 815CC6D - move 1, GraniteCave_StevensRoom_Movement_15CC8C - waitmove 0 + applymovement 1, GraniteCave_StevensRoom_Movement_15CC8C + waitmovement 0 return GraniteCave_StevensRoom_EventScript_15CC78:: @ 815CC78 - move 1, GraniteCave_StevensRoom_Movement_15CC93 - waitmove 0 + applymovement 1, GraniteCave_StevensRoom_Movement_15CC93 + waitmovement 0 return GraniteCave_StevensRoom_EventScript_15CC83:: @ 815CC83 diff --git a/data/scripts/maps/InsideOfTruck.inc b/data/scripts/maps/InsideOfTruck.inc index 0c26f0f88..fc2930aa5 100644 --- a/data/scripts/maps/InsideOfTruck.inc +++ b/data/scripts/maps/InsideOfTruck.inc @@ -16,11 +16,11 @@ InsideOfTruck_MapScript1_15FC26:: @ 815FC26 InsideOfTruck_EventScript_15FC29:: @ 815FC29 lockall setflag 0x4000 - checkgender + checkplayergender compare RESULT, 0 - jumpeq InsideOfTruck_EventScript_15FC45 + goto_if_eq InsideOfTruck_EventScript_15FC45 compare RESULT, 1 - jumpeq InsideOfTruck_EventScript_15FC68 + goto_if_eq InsideOfTruck_EventScript_15FC68 end InsideOfTruck_EventScript_15FC45:: @ 815FC45 @@ -31,7 +31,7 @@ InsideOfTruck_EventScript_15FC45:: @ 815FC45 setflag 784 setflag 760 setvar 0x408c, 1 - warpplace LittlerootTown, 255, 3, 10 + setdynamicwarp LittlerootTown, 255, 3, 10 releaseall end @@ -43,7 +43,7 @@ InsideOfTruck_EventScript_15FC68:: @ 815FC68 setflag 785 setflag 722 setvar 0x4082, 1 - warpplace LittlerootTown, 255, 12, 10 + setdynamicwarp LittlerootTown, 255, 12, 10 releaseall end diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc index b16f386d8..75399bde8 100644 --- a/data/scripts/maps/IslandCave.inc +++ b/data/scripts/maps/IslandCave.inc @@ -6,16 +6,16 @@ IslandCave_MapScripts:: @ 815EEB6 IslandCave_MapScript1_15EEC6:: @ 815EEC6 checkflag 2145 - callif 1, IslandCave_EventScript_15EED0 + call_if 1, IslandCave_EventScript_15EED0 end IslandCave_EventScript_15EED0:: @ 815EED0 - disappear LAST_TALKED + removeobject LAST_TALKED return IslandCave_MapScript1_15EED4:: @ 815EED4 checkflag 2129 - callif 0, IslandCave_EventScript_15EEDE + call_if 0, IslandCave_EventScript_15EEDE end IslandCave_EventScript_15EEDE:: @ 815EEDE @@ -31,7 +31,7 @@ IslandCave_MapScript1_15EF15:: @ 815EF15 setflag 2133 end -gIslandCave_EventScript_OpenRegiiceChamber:: @ 815EF19 +S_OpenRegiceChamber:: @ 815EF19 setmaptile 7, 19, 554, 1 setmaptile 8, 19, 555, 1 setmaptile 9, 19, 556, 1 @@ -39,18 +39,18 @@ gIslandCave_EventScript_OpenRegiiceChamber:: @ 815EF19 setmaptile 8, 20, 563, 0 setmaptile 9, 20, 564, 1 special DrawWholeMapView - playsfx SE_BAN + playse SE_BAN setflag 2129 end IslandCave_EventScript_15EF59:: @ 815EF59 lockall checkflag 2129 - jumpeq IslandCave_EventScript_15EF72 - braillemsg IslandCave_Braille_1C54FC + goto_if_eq IslandCave_EventScript_15EF72 + braillemessage IslandCave_Braille_1C54FC special DoBrailleWait waitstate - jump IslandCave_EventScript_15EF95 + goto IslandCave_EventScript_15EF95 end IslandCave_EventScript_15EF72:: @ 815EF72 @@ -60,31 +60,31 @@ IslandCave_EventScript_15EF72:: @ 815EF72 IslandCave_EventScript_15EF7C:: @ 815EF7C lockall - braillemsg IslandCave_Braille_1C54FC + braillemessage IslandCave_Braille_1C54FC checkflag 2129 - jumpeq IslandCave_EventScript_15EF95 + goto_if_eq IslandCave_EventScript_15EF95 special DoBrailleWait waitstate - jump IslandCave_EventScript_15EF95 + goto IslandCave_EventScript_15EF95 end IslandCave_EventScript_15EF95:: @ 815EF95 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end IslandCave_EventScript_15EF9D:: @ 815EF9D lock faceplayer - checksound - pokecry SPECIES_REGICE, 2 - pause 40 + waitse + playpokecry SPECIES_REGICE, 2 + delay 40 waitpokecry setwildbattle SPECIES_REGICE, 40, ITEM_NONE setflag 936 setflag 2145 - special StartBattle_Regi + special ScrSpecial_StartRegiBattle waitstate clearflag 2145 release diff --git a/data/scripts/maps/JaggedPass.inc b/data/scripts/maps/JaggedPass.inc index 151f1ec79..6f910d0ad 100644 --- a/data/scripts/maps/JaggedPass.inc +++ b/data/scripts/maps/JaggedPass.inc @@ -9,7 +9,7 @@ JaggedPass_MapScript1_15D271:: @ 815D271 JaggedPass_MapScript1_15D274:: @ 815D274 compare 0x40bd, 1 - callif 1, JaggedPass_EventScript_15D280 + call_if 1, JaggedPass_EventScript_15D280 end JaggedPass_EventScript_15D280:: @ 815D280 @@ -24,9 +24,9 @@ JaggedPass_EventScript_15D285:: @ 815D285 JaggedPass_EventScript_15D29C:: @ 815D29C trainerbattle 0, OPPONENT_DIANA_1, 0, JaggedPass_Text_195E9E, JaggedPass_Text_195EDF - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq JaggedPass_EventScript_15D2C3 + goto_if_eq JaggedPass_EventScript_15D2C3 msgbox JaggedPass_Text_195F04, 6 end @@ -37,9 +37,9 @@ JaggedPass_EventScript_15D2C3:: @ 815D2C3 JaggedPass_EventScript_15D2DA:: @ 815D2DA trainerbattle 0, OPPONENT_ETHAN_1, 0, JaggedPass_Text_195FF2, JaggedPass_Text_196032 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq JaggedPass_EventScript_15D301 + goto_if_eq JaggedPass_EventScript_15D301 msgbox JaggedPass_Text_196077, 6 end diff --git a/data/scripts/maps/LavaridgeTown.inc b/data/scripts/maps/LavaridgeTown.inc index 685e44d58..5192176a7 100644 --- a/data/scripts/maps/LavaridgeTown.inc +++ b/data/scripts/maps/LavaridgeTown.inc @@ -6,16 +6,16 @@ LavaridgeTown_MapScripts:: @ 814E4A3 LavaridgeTown_MapScript1_14E4AE:: @ 814E4AE setflag 2066 checkflag 139 - callif 1, LavaridgeTown_EventScript_14E4DF + call_if 1, LavaridgeTown_EventScript_14E4DF call LavaridgeTown_EventScript_1A014E call LavaridgeTown_EventScript_1A0172 compare 0x4053, 2 - callif 1, LavaridgeTown_EventScript_14E4D0 + call_if 1, LavaridgeTown_EventScript_14E4D0 end LavaridgeTown_EventScript_14E4D0:: @ 814E4D0 - movespriteperm 8, 11, 9 - movespriteperm 7, 11, 9 + setobjectxyperm 8, 11, 9 + setobjectxyperm 7, 11, 9 return LavaridgeTown_EventScript_14E4DF:: @ 814E4DF @@ -29,56 +29,56 @@ LavaridgeTown_MapScript2_14E4E3:: @ 814E4E3 LavaridgeTown_EventScript_14E4ED:: @ 814E4ED lockall setvar 0x8008, 1 - setdooropened 12, 15 - doorchange - reappear 8 - move 8, LavaridgeTown_Movement_14E70E - waitmove 0 - setdoorclosed 12, 15 - doorchange - move 8, LavaridgeTown_Movement_1A083F - waitmove 0 - move 255, LavaridgeTown_Movement_1A0843 - move 8, LavaridgeTown_Movement_1A0833 - waitmove 0 - move 8, LavaridgeTown_Movement_1A0835 - waitmove 0 - checkgender + opendoor 12, 15 + waitdooranim + addobject 8 + applymovement 8, LavaridgeTown_Movement_14E70E + waitmovement 0 + closedoor 12, 15 + waitdooranim + applymovement 8, LavaridgeTown_Movement_1A083F + waitmovement 0 + applymovement 255, LavaridgeTown_Movement_1A0843 + applymovement 8, LavaridgeTown_Movement_1A0833 + waitmovement 0 + applymovement 8, LavaridgeTown_Movement_1A0835 + waitmovement 0 + checkplayergender compare RESULT, 0 - callif 1, LavaridgeTown_EventScript_14E56B + call_if 1, LavaridgeTown_EventScript_14E56B compare RESULT, 1 - callif 1, LavaridgeTown_EventScript_14E570 + call_if 1, LavaridgeTown_EventScript_14E570 compare 0x8008, 1 - callif 1, LavaridgeTown_EventScript_14E68F - checkgender + call_if 1, LavaridgeTown_EventScript_14E68F + checkplayergender compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_14E5AB + goto_if_eq LavaridgeTown_EventScript_14E5AB compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_14E5D0 + goto_if_eq LavaridgeTown_EventScript_14E5D0 end LavaridgeTown_EventScript_14E56B:: @ 814E56B - playmusic 415, 1 + playbgm 415, 1 return LavaridgeTown_EventScript_14E570:: @ 814E570 - playmusic 421, 1 + playbgm 421, 1 return LavaridgeTown_EventScript_14E575:: @ 814E575 lock faceplayer setvar 0x8008, 0 - checkgender + checkplayergender compare RESULT, 0 - callif 1, LavaridgeTown_EventScript_14E56B + call_if 1, LavaridgeTown_EventScript_14E56B compare RESULT, 1 - callif 1, LavaridgeTown_EventScript_14E570 - checkgender + call_if 1, LavaridgeTown_EventScript_14E570 + checkplayergender compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_14E5AB + goto_if_eq LavaridgeTown_EventScript_14E5AB compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_14E5D0 + goto_if_eq LavaridgeTown_EventScript_14E5D0 end LavaridgeTown_EventScript_14E5AB:: @ 814E5AB @@ -86,7 +86,7 @@ LavaridgeTown_EventScript_14E5AB:: @ 814E5AB giveitem ITEM_GO_GOGGLES setflag 221 msgbox LavaridgeTown_Text_16BE7D, 4 - jump LavaridgeTown_EventScript_14E5F5 + goto LavaridgeTown_EventScript_14E5F5 end LavaridgeTown_EventScript_14E5D0:: @ 814E5D0 @@ -94,28 +94,28 @@ LavaridgeTown_EventScript_14E5D0:: @ 814E5D0 giveitem ITEM_GO_GOGGLES setflag 221 msgbox LavaridgeTown_Text_16C020, 4 - jump LavaridgeTown_EventScript_14E5F5 + goto LavaridgeTown_EventScript_14E5F5 end LavaridgeTown_EventScript_14E5F5:: @ 814E5F5 - closebutton + closemessage compare 0x8008, 1 - callif 1, LavaridgeTown_EventScript_14E646 + call_if 1, LavaridgeTown_EventScript_14E646 compare 0x8008, 0 - callif 1, LavaridgeTown_EventScript_14E64E - disappear 8 - reappear 7 - pause 30 + call_if 1, LavaridgeTown_EventScript_14E64E + removeobject 8 + addobject 7 + delay 30 compare 0x8008, 1 - callif 1, LavaridgeTown_EventScript_14E69A + call_if 1, LavaridgeTown_EventScript_14E69A compare 0x8008, 0 - callif 1, LavaridgeTown_EventScript_14E6A5 - disappear 7 + call_if 1, LavaridgeTown_EventScript_14E6A5 + removeobject 7 setvar 0x4053, 2 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm compare 0x8008, 0 - jumpeq LavaridgeTown_EventScript_14E644 + goto_if_eq LavaridgeTown_EventScript_14E644 releaseall end @@ -124,65 +124,65 @@ LavaridgeTown_EventScript_14E644:: @ 814E644 end LavaridgeTown_EventScript_14E646:: @ 814E646 - movespriteperm 7, 6, 16 + setobjectxyperm 7, 6, 16 return LavaridgeTown_EventScript_14E64E:: @ 814E64E compare FACING, 2 - callif 1, LavaridgeTown_EventScript_14E67B + call_if 1, LavaridgeTown_EventScript_14E67B compare FACING, 1 - callif 1, LavaridgeTown_EventScript_14E680 + call_if 1, LavaridgeTown_EventScript_14E680 compare FACING, 3 - callif 1, LavaridgeTown_EventScript_14E685 + call_if 1, LavaridgeTown_EventScript_14E685 compare FACING, 4 - callif 1, LavaridgeTown_EventScript_14E68A + call_if 1, LavaridgeTown_EventScript_14E68A return LavaridgeTown_EventScript_14E67B:: @ 814E67B - spritebehave 7, 8 + setobjectmovementtype 7, 8 return LavaridgeTown_EventScript_14E680:: @ 814E680 - spritebehave 7, 7 + setobjectmovementtype 7, 7 return LavaridgeTown_EventScript_14E685:: @ 814E685 - spritebehave 7, 10 + setobjectmovementtype 7, 10 return LavaridgeTown_EventScript_14E68A:: @ 814E68A - spritebehave 7, 9 + setobjectmovementtype 7, 9 return LavaridgeTown_EventScript_14E68F:: @ 814E68F - move 8, LavaridgeTown_Movement_14E6E8 - waitmove 0 + applymovement 8, LavaridgeTown_Movement_14E6E8 + waitmovement 0 return LavaridgeTown_EventScript_14E69A:: @ 814E69A - move 7, LavaridgeTown_Movement_14E6EF - waitmove 0 + applymovement 7, LavaridgeTown_Movement_14E6EF + waitmovement 0 return LavaridgeTown_EventScript_14E6A5:: @ 814E6A5 compare FACING, 2 - callif 1, LavaridgeTown_EventScript_14E6D2 + call_if 1, LavaridgeTown_EventScript_14E6D2 compare FACING, 1 - callif 1, LavaridgeTown_EventScript_14E6D2 + call_if 1, LavaridgeTown_EventScript_14E6D2 compare FACING, 3 - callif 1, LavaridgeTown_EventScript_14E6DD + call_if 1, LavaridgeTown_EventScript_14E6DD compare FACING, 4 - callif 1, LavaridgeTown_EventScript_14E6D2 + call_if 1, LavaridgeTown_EventScript_14E6D2 return LavaridgeTown_EventScript_14E6D2:: @ 814E6D2 - move 7, LavaridgeTown_Movement_14E6FA - waitmove 0 + applymovement 7, LavaridgeTown_Movement_14E6FA + waitmovement 0 return LavaridgeTown_EventScript_14E6DD:: @ 814E6DD - move 7, LavaridgeTown_Movement_14E703 - waitmove 0 + applymovement 7, LavaridgeTown_Movement_14E703 + waitmovement 0 return LavaridgeTown_Movement_14E6E8:: @ 814E6E8 @@ -236,13 +236,13 @@ LavaridgeTown_Movement_14E70E:: @ 814E70E step_end LavaridgeTown_EventScript_14E710:: @ 814E710 - specialval RESULT, player_get_direction_lower_nybble + specialvar RESULT, player_get_direction_lower_nybble compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_14E721 + goto_if_eq LavaridgeTown_EventScript_14E721 end LavaridgeTown_EventScript_14E721:: @ 814E721 - inccounter GAME_STAT_ENTERED_HOT_SPRINGS + incrementgamestat GAME_STAT_ENTERED_HOT_SPRINGS end LavaridgeTown_EventScript_14E724:: @ 814E724 @@ -273,19 +273,19 @@ LavaridgeTown_EventScript_14E75A:: @ 814E75A lock faceplayer checkflag 266 - jumpeq LavaridgeTown_EventScript_14E79E + goto_if_eq LavaridgeTown_EventScript_14E79E msgbox LavaridgeTown_Text_16C174, 5 compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_14E7B2 + goto_if_eq LavaridgeTown_EventScript_14E7B2 countpokemon compare RESULT, 6 - jumpeq LavaridgeTown_EventScript_14E7A8 + goto_if_eq LavaridgeTown_EventScript_14E7A8 msgbox LavaridgeTown_Text_16C2B6, 4 setflag 266 - fanfare 370 + playfanfare 370 message LavaridgeTown_Text_16C2EA waitfanfare - waittext + waitmessage giveegg 360 release end diff --git a/data/scripts/maps/LavaridgeTown_Gym_1F.inc b/data/scripts/maps/LavaridgeTown_Gym_1F.inc index 57506bdb6..2edffe9f0 100644 --- a/data/scripts/maps/LavaridgeTown_Gym_1F.inc +++ b/data/scripts/maps/LavaridgeTown_Gym_1F.inc @@ -14,27 +14,27 @@ LavaridgeTown_Gym_1F_EventScript_15369F:: @ 815369F setvar 0x400e, 0 setvar 0x400f, 0 checktrainerflag OPPONENT_COLE - jumpeq LavaridgeTown_Gym_1F_EventScript_1536C6 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536C6 setvar 0x400b, 1 LavaridgeTown_Gym_1F_EventScript_1536C6:: @ 81536C6 checktrainerflag OPPONENT_ZANE - jumpeq LavaridgeTown_Gym_1F_EventScript_1536D4 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536D4 setvar 0x400c, 1 LavaridgeTown_Gym_1F_EventScript_1536D4:: @ 81536D4 checktrainerflag OPPONENT_AXLE - jumpeq LavaridgeTown_Gym_1F_EventScript_1536E2 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536E2 setvar 0x400d, 1 LavaridgeTown_Gym_1F_EventScript_1536E2:: @ 81536E2 checktrainerflag OPPONENT_SADIE - jumpeq LavaridgeTown_Gym_1F_EventScript_1536F0 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536F0 setvar 0x400e, 1 LavaridgeTown_Gym_1F_EventScript_1536F0:: @ 81536F0 checktrainerflag OPPONENT_ANDY - jumpeq LavaridgeTown_Gym_1F_EventScript_1536FE + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536FE setvar 0x400f, 1 LavaridgeTown_Gym_1F_EventScript_1536FE:: @ 81536FE @@ -42,28 +42,28 @@ LavaridgeTown_Gym_1F_EventScript_1536FE:: @ 81536FE LavaridgeTown_Gym_1F_EventScript_1536FF:: @ 81536FF checktrainerflag OPPONENT_COLE - jumpeq LavaridgeTown_Gym_1F_EventScript_15370C - spritebehave 2, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_15370C + setobjectmovementtype 2, 63 LavaridgeTown_Gym_1F_EventScript_15370C:: @ 815370C checktrainerflag OPPONENT_ZANE - jumpeq LavaridgeTown_Gym_1F_EventScript_153719 - spritebehave 3, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153719 + setobjectmovementtype 3, 63 LavaridgeTown_Gym_1F_EventScript_153719:: @ 8153719 checktrainerflag OPPONENT_AXLE - jumpeq LavaridgeTown_Gym_1F_EventScript_153726 - spritebehave 4, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153726 + setobjectmovementtype 4, 63 LavaridgeTown_Gym_1F_EventScript_153726:: @ 8153726 checktrainerflag OPPONENT_SADIE - jumpeq LavaridgeTown_Gym_1F_EventScript_153733 - spritebehave 5, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153733 + setobjectmovementtype 5, 63 LavaridgeTown_Gym_1F_EventScript_153733:: @ 8153733 checktrainerflag OPPONENT_ANDY - jumpeq LavaridgeTown_Gym_1F_EventScript_153740 - spritebehave 7, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153740 + setobjectmovementtype 7, 63 LavaridgeTown_Gym_1F_EventScript_153740:: @ 8153740 return @@ -71,32 +71,32 @@ LavaridgeTown_Gym_1F_EventScript_153740:: @ 8153740 LavaridgeTown_Gym_1F_EventScript_153741:: @ 8153741 trainerbattle 1, OPPONENT_FLANNERY, 0, LavaridgeTown_Gym_1F_Text_176801, LavaridgeTown_Gym_1F_Text_176960, LavaridgeTown_Gym_1F_EventScript_153766 checkflag 168 - jumpif 0, LavaridgeTown_Gym_1F_EventScript_1537A7 + goto_if 0, LavaridgeTown_Gym_1F_EventScript_1537A7 msgbox LavaridgeTown_Gym_1F_Text_176C4A, 4 release end LavaridgeTown_Gym_1F_EventScript_153766:: @ 8153766 message LavaridgeTown_Gym_1F_Text_176A62 - waittext + waitmessage call LavaridgeTown_Gym_1F_EventScript_1A02C5 msgbox LavaridgeTown_Gym_1F_Text_176A8C, 4 setflag 1213 setflag 2058 addvar 0x4085, 1 compare 0x4085, 6 - callif 1, LavaridgeTown_Gym_1F_EventScript_1A00FB + call_if 1, LavaridgeTown_Gym_1F_EventScript_1A00FB setvar 0x8008, 4 call LavaridgeTown_Gym_1F_EventScript_1A01C0 setflag 806 setvar 0x4053, 1 - jump LavaridgeTown_Gym_1F_EventScript_1537A7 + goto LavaridgeTown_Gym_1F_EventScript_1537A7 end LavaridgeTown_Gym_1F_EventScript_1537A7:: @ 81537A7 giveitem ITEM_TM50 compare RESULT, 0 - jumpeq LavaridgeTown_Gym_1F_EventScript_1A029B + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1A029B msgbox LavaridgeTown_Gym_1F_Text_176B8F, 4 setflag 168 release @@ -136,7 +136,7 @@ LavaridgeTown_Gym_1F_EventScript_153859:: @ 8153859 lock faceplayer checkflag 1213 - jumpeq LavaridgeTown_Gym_1F_EventScript_15386E + goto_if_eq LavaridgeTown_Gym_1F_EventScript_15386E msgbox LavaridgeTown_Gym_1F_Text_176312, 4 release end @@ -149,15 +149,15 @@ LavaridgeTown_Gym_1F_EventScript_15386E:: @ 815386E LavaridgeTown_Gym_1F_EventScript_153878:: @ 8153878 lockall checkflag 2058 - jumpeq LavaridgeTown_Gym_1F_EventScript_153898 - jump LavaridgeTown_Gym_1F_EventScript_1538A2 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153898 + goto LavaridgeTown_Gym_1F_EventScript_1538A2 end LavaridgeTown_Gym_1F_EventScript_153888:: @ 8153888 lockall checkflag 2058 - jumpeq LavaridgeTown_Gym_1F_EventScript_153898 - jump LavaridgeTown_Gym_1F_EventScript_1538A2 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153898 + goto LavaridgeTown_Gym_1F_EventScript_1538A2 end LavaridgeTown_Gym_1F_EventScript_153898:: @ 8153898 diff --git a/data/scripts/maps/LavaridgeTown_HerbShop.inc b/data/scripts/maps/LavaridgeTown_HerbShop.inc index 6ff103ce3..5ec6731d4 100644 --- a/data/scripts/maps/LavaridgeTown_HerbShop.inc +++ b/data/scripts/maps/LavaridgeTown_HerbShop.inc @@ -5,7 +5,7 @@ LavaridgeTown_HerbShop_EventScript_153629:: @ 8153629 lock faceplayer message LavaridgeTown_HerbShop_Text_17615C - waittext + waitmessage pokemart LavaridgeTown_HerbShop_Items msgbox LavaridgeTown_HerbShop_Text_1A0C02, 4 release @@ -29,11 +29,11 @@ LavaridgeTown_HerbShop_EventScript_153655:: @ 8153655 lock faceplayer checkflag 254 - jumpeq LavaridgeTown_HerbShop_EventScript_153684 + goto_if_eq LavaridgeTown_HerbShop_EventScript_153684 msgbox LavaridgeTown_HerbShop_Text_1761A2, 4 giveitem ITEM_CHARCOAL compare RESULT, 0 - jumpeq LavaridgeTown_HerbShop_EventScript_1A029B + goto_if_eq LavaridgeTown_HerbShop_EventScript_1A029B setflag 254 release end diff --git a/data/scripts/maps/LavaridgeTown_House.inc b/data/scripts/maps/LavaridgeTown_House.inc index 944427bb6..c75cb9e4b 100644 --- a/data/scripts/maps/LavaridgeTown_House.inc +++ b/data/scripts/maps/LavaridgeTown_House.inc @@ -8,8 +8,8 @@ LavaridgeTown_House_EventScript_1538AE:: @ 81538AE LavaridgeTown_House_EventScript_1538B7:: @ 81538B7 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox LavaridgeTown_House_Text_176D94, 4 waitpokecry release diff --git a/data/scripts/maps/LavaridgeTown_Mart.inc b/data/scripts/maps/LavaridgeTown_Mart.inc index 4f28e16b0..99b567e06 100644 --- a/data/scripts/maps/LavaridgeTown_Mart.inc +++ b/data/scripts/maps/LavaridgeTown_Mart.inc @@ -5,7 +5,7 @@ LavaridgeTown_Mart_EventScript_1538CB:: @ 81538CB lock faceplayer message LavaridgeTown_Mart_Text_1A0BE4 - waittext + waitmessage pokemart LavaridgeTown_Mart_Items msgbox LavaridgeTown_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc b/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc index c0762bcc3..9d0f31059 100644 --- a/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ LavaridgeTown_PokemonCenter_1F_MapScript1_153912:: @ 8153912 LavaridgeTown_PokemonCenter_1F_EventScript_15391B:: @ 815391B setvar 0x800b, 1 call LavaridgeTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/LilycoveCity.inc b/data/scripts/maps/LilycoveCity.inc index b688107ce..cf8e2e07d 100644 --- a/data/scripts/maps/LilycoveCity.inc +++ b/data/scripts/maps/LilycoveCity.inc @@ -8,7 +8,7 @@ LilycoveCity_MapScript1_14CA20:: @ 814CA20 setvar 0x4086, 0 setflag 802 checkflag 2090 - callif 1, LilycoveCity_EventScript_1A02C1 + call_if 1, LilycoveCity_EventScript_1A02C1 call LilycoveCity_EventScript_1A0196 call LilycoveCity_EventScript_1A014E end @@ -29,9 +29,9 @@ LilycoveCity_MapScript1_14CA3F:: @ 814CA3F setmaptile 72, 6, 445, 0 .endif checkflag 112 - callif 0, LilycoveCity_EventScript_14CABE + call_if 0, LilycoveCity_EventScript_14CABE checkflag 2061 - callif 1, LilycoveCity_EventScript_14CB2B + call_if 1, LilycoveCity_EventScript_14CB2B end LilycoveCity_EventScript_14CABE:: @ 814CABE @@ -63,15 +63,15 @@ LilycoveCity_EventScript_14CB2B:: @ 814CB2B LilycoveCity_EventScript_14CB74:: @ 814CB74 lock faceplayer - checkdailyflags + dodailyevents checkflag 2255 - jumpeq LilycoveCity_EventScript_14CBB4 + goto_if_eq LilycoveCity_EventScript_14CBB4 msgbox LilycoveCity_Text_1C5A7A, 4 random 10 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq LilycoveCity_EventScript_1A029B + goto_if_eq LilycoveCity_EventScript_1A029B setflag 2255 msgbox LilycoveCity_Text_1C5B1D, 4 release @@ -90,7 +90,7 @@ LilycoveCity_EventScript_14CBC7:: @ 814CBC7 lock faceplayer checkflag 2061 - jumpeq LilycoveCity_EventScript_14CBDC + goto_if_eq LilycoveCity_EventScript_14CBDC msgbox LilycoveCity_Text_168750, 4 release end @@ -108,7 +108,7 @@ LilycoveCity_EventScript_14CBEF:: @ 814CBEF lock faceplayer checkflag 112 - jumpeq LilycoveCity_EventScript_14CC04 + goto_if_eq LilycoveCity_EventScript_14CC04 msgbox LilycoveCity_Text_1688C1, 4 release end @@ -122,7 +122,7 @@ LilycoveCity_EventScript_14CC0E:: @ 814CC0E lock faceplayer checkflag 112 - jumpeq LilycoveCity_EventScript_14CC23 + goto_if_eq LilycoveCity_EventScript_14CC23 msgbox LilycoveCity_Text_1689BF, 4 release end @@ -148,7 +148,7 @@ LilycoveCity_EventScript_14CC48:: @ 814CC48 lock faceplayer checkflag 2061 - jumpeq LilycoveCity_EventScript_14CC5D + goto_if_eq LilycoveCity_EventScript_14CC5D msgbox LilycoveCity_Text_168C16, 4 release end @@ -172,7 +172,7 @@ LilycoveCity_EventScript_14CC79:: @ 814CC79 LilycoveCity_EventScript_14CC82:: @ 814CC82 lockall - specialval 0x8004, sub_80C4D50 + specialvar 0x8004, sub_80C4D50 switch 0x8004 case 0, LilycoveCity_EventScript_14CCA2 msgbox LilycoveCity_Text_168EA4, 4 @@ -187,7 +187,7 @@ LilycoveCity_EventScript_14CCA2:: @ 814CCA2 LilycoveCity_EventScript_14CCAC:: @ 814CCAC lockall checkflag 2052 - jumpeq LilycoveCity_EventScript_14CCC0 + goto_if_eq LilycoveCity_EventScript_14CCC0 msgbox LilycoveCity_Text_168EDA, 4 releaseall end @@ -212,13 +212,13 @@ LilycoveCity_EventScript_14CCDC:: @ 814CCDC LilycoveCity_EventScript_14CCE5:: @ 814CCE5 lockall checkflag 218 - jumpeq LilycoveCity_EventScript_14CD18 + goto_if_eq LilycoveCity_EventScript_14CD18 msgbox LilycoveCity_Text_16864A, 4 - move LAST_TALKED, LilycoveCity_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, LilycoveCity_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_Text_168675, 4 - move LAST_TALKED, LilycoveCity_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, LilycoveCity_Movement_1A083D + waitmovement 0 setflag 218 releaseall end @@ -247,21 +247,21 @@ LilycoveCity_EventScript_14CD3D:: @ 814CD3D LilycoveCity_EventScript_14CD46:: @ 814CD46 lock faceplayer - checkgender + checkplayergender compare RESULT, 0 - jumpeq LilycoveCity_EventScript_14CD60 + goto_if_eq LilycoveCity_EventScript_14CD60 compare RESULT, 1 - jumpeq LilycoveCity_EventScript_14CDD3 + goto_if_eq LilycoveCity_EventScript_14CDD3 end LilycoveCity_EventScript_14CD60:: @ 814CD60 - playmusic 415, 1 + playbgm 415, 1 checkflag 286 - callif 1, LilycoveCity_EventScript_14CDB0 + call_if 1, LilycoveCity_EventScript_14CDB0 checkflag 286 - callif 0, LilycoveCity_EventScript_14CDB9 + call_if 0, LilycoveCity_EventScript_14CDB9 compare RESULT, 0 - jumpeq LilycoveCity_EventScript_14CDC2 + goto_if_eq LilycoveCity_EventScript_14CDC2 msgbox LilycoveCity_Text_167B94, 4 switch 0x4023 case 0, LilycoveCity_EventScript_14CE46 @@ -280,19 +280,19 @@ LilycoveCity_EventScript_14CDB9:: @ 814CDB9 LilycoveCity_EventScript_14CDC2:: @ 814CDC2 setflag 286 msgbox LilycoveCity_Text_167AEB, 4 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm release end LilycoveCity_EventScript_14CDD3:: @ 814CDD3 - playmusic 421, 1 + playbgm 421, 1 checkflag 286 - callif 1, LilycoveCity_EventScript_14CE23 + call_if 1, LilycoveCity_EventScript_14CE23 checkflag 286 - callif 0, LilycoveCity_EventScript_14CE2C + call_if 0, LilycoveCity_EventScript_14CE2C compare RESULT, 0 - jumpeq LilycoveCity_EventScript_14CE35 + goto_if_eq LilycoveCity_EventScript_14CE35 msgbox LilycoveCity_Text_1680A9, 4 switch 0x4023 case 0, LilycoveCity_EventScript_14CE76 @@ -311,58 +311,58 @@ LilycoveCity_EventScript_14CE2C:: @ 814CE2C LilycoveCity_EventScript_14CE35:: @ 814CE35 setflag 286 msgbox LilycoveCity_Text_16802C, 4 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm release end LilycoveCity_EventScript_14CE46:: @ 814CE46 trainerbattle 3, OPPONENT_MAY_11, 0, LilycoveCity_Text_167BD5 - jump LilycoveCity_EventScript_14CEA6 + goto LilycoveCity_EventScript_14CEA6 end LilycoveCity_EventScript_14CE56:: @ 814CE56 trainerbattle 3, OPPONENT_MAY_12, 0, LilycoveCity_Text_167BD5 - jump LilycoveCity_EventScript_14CEA6 + goto LilycoveCity_EventScript_14CEA6 end LilycoveCity_EventScript_14CE66:: @ 814CE66 trainerbattle 3, OPPONENT_MAY_10, 0, LilycoveCity_Text_167BD5 - jump LilycoveCity_EventScript_14CEA6 + goto LilycoveCity_EventScript_14CEA6 end LilycoveCity_EventScript_14CE76:: @ 814CE76 trainerbattle 3, OPPONENT_BRENDAN_11, 0, LilycoveCity_Text_1680E4 - jump LilycoveCity_EventScript_14CF12 + goto LilycoveCity_EventScript_14CF12 end LilycoveCity_EventScript_14CE86:: @ 814CE86 trainerbattle 3, OPPONENT_BRENDAN_12, 0, LilycoveCity_Text_1680E4 - jump LilycoveCity_EventScript_14CF12 + goto LilycoveCity_EventScript_14CF12 end LilycoveCity_EventScript_14CE96:: @ 814CE96 trainerbattle 3, OPPONENT_BRENDAN_10, 0, LilycoveCity_Text_1680E4 - jump LilycoveCity_EventScript_14CF12 + goto LilycoveCity_EventScript_14CF12 end LilycoveCity_EventScript_14CEA6:: @ 814CEA6 msgbox LilycoveCity_Text_167C6B, 4 setvar RESULT, 0 checkflag 2060 - callif 1, LilycoveCity_EventScript_14CEDE + call_if 1, LilycoveCity_EventScript_14CEDE compare RESULT, 0 - callif 1, LilycoveCity_EventScript_14CEEE + call_if 1, LilycoveCity_EventScript_14CEEE compare RESULT, 1 - callif 1, LilycoveCity_EventScript_14CEF7 + call_if 1, LilycoveCity_EventScript_14CEF7 clearflag 722 clearflag 849 - jump LilycoveCity_EventScript_14CF6B + goto LilycoveCity_EventScript_14CF6B end LilycoveCity_EventScript_14CEDE:: @ 814CEDE checkflag 2062 - jumpeq LilycoveCity_EventScript_14CEE8 + goto_if_eq LilycoveCity_EventScript_14CEE8 return LilycoveCity_EventScript_14CEE8:: @ 814CEE8 @@ -375,7 +375,7 @@ LilycoveCity_EventScript_14CEEE:: @ 814CEEE LilycoveCity_EventScript_14CEF7:: @ 814CEF7 checkflag 2052 - jumpeq LilycoveCity_EventScript_14CF09 + goto_if_eq LilycoveCity_EventScript_14CF09 msgbox LilycoveCity_Text_167DDD, 4 return @@ -387,13 +387,13 @@ LilycoveCity_EventScript_14CF12:: @ 814CF12 msgbox LilycoveCity_Text_168149, 4 setvar RESULT, 0 checkflag 2060 - callif 1, LilycoveCity_EventScript_14CEDE + call_if 1, LilycoveCity_EventScript_14CEDE compare RESULT, 0 - callif 1, LilycoveCity_EventScript_14CF47 + call_if 1, LilycoveCity_EventScript_14CF47 compare RESULT, 1 - callif 1, LilycoveCity_EventScript_14CF50 + call_if 1, LilycoveCity_EventScript_14CF50 clearflag 760 - jump LilycoveCity_EventScript_14CF6B + goto LilycoveCity_EventScript_14CF6B end LilycoveCity_EventScript_14CF47:: @ 814CF47 @@ -402,7 +402,7 @@ LilycoveCity_EventScript_14CF47:: @ 814CF47 LilycoveCity_EventScript_14CF50:: @ 814CF50 checkflag 2052 - jumpeq LilycoveCity_EventScript_14CF62 + goto_if_eq LilycoveCity_EventScript_14CF62 msgbox LilycoveCity_Text_168282, 4 return @@ -411,17 +411,17 @@ LilycoveCity_EventScript_14CF62:: @ 814CF62 return LilycoveCity_EventScript_14CF6B:: @ 814CF6B - closebutton - move LAST_TALKED, LilycoveCity_Movement_1A0845 - waitmove 0 - pause 50 - setanimation 0, 1 - doanimation 30 - pause 15 - disappear LAST_TALKED - checkanimation 30 - playmusicbattle 0 - fadedefault + closemessage + applymovement LAST_TALKED, LilycoveCity_Movement_1A0845 + waitmovement 0 + delay 50 + setfieldeffect 0, 1 + dofieldeffect 30 + delay 15 + removeobject LAST_TALKED + waitfieldeffect 30 + savebgm 0 + fadedefaultbgm setflag 292 release end diff --git a/data/scripts/maps/LilycoveCity_ContestHall.inc b/data/scripts/maps/LilycoveCity_ContestHall.inc index 3601cb455..944857a21 100644 --- a/data/scripts/maps/LilycoveCity_ContestHall.inc +++ b/data/scripts/maps/LilycoveCity_ContestHall.inc @@ -22,48 +22,48 @@ LilycoveCity_ContestHall_EventScript_1590B6:: @ 81590B6 LilycoveCity_ContestHall_EventScript_1590BF:: @ 81590BF msgbox LilycoveCity_ContestHall_Text_189301, 2 lockall - move 4, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 4, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1590D4:: @ 81590D4 msgbox LilycoveCity_ContestHall_Text_189366, 2 lockall - move 5, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 5, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1590E9:: @ 81590E9 msgbox LilycoveCity_ContestHall_Text_1893CE, 2 lockall - move 6, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 6, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1590FE:: @ 81590FE msgbox LilycoveCity_ContestHall_Text_189463, 2 lockall - move 7, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 7, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159113:: @ 8159113 msgbox LilycoveCity_ContestHall_Text_189512, 2 lockall - move 8, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 8, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159128:: @ 8159128 msgbox LilycoveCity_ContestHall_Text_18956B, 2 lockall - move 9, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 9, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end @@ -74,154 +74,154 @@ LilycoveCity_ContestHall_EventScript_15913D:: @ 815913D LilycoveCity_ContestHall_EventScript_159146:: @ 8159146 msgbox LilycoveCity_ContestHall_Text_189617, 2 lockall - move 12, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 12, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_15915B:: @ 815915B msgbox LilycoveCity_ContestHall_Text_1896BE, 2 lockall - move 22, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 22, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159170:: @ 8159170 msgbox LilycoveCity_ContestHall_Text_1896FE, 2 lockall - move 11, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 11, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159185:: @ 8159185 msgbox LilycoveCity_ContestHall_Text_189771, 2 lockall - move 13, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 13, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_15919A:: @ 815919A msgbox LilycoveCity_ContestHall_Text_1897AA, 2 lockall - move 14, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 14, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1591AF:: @ 81591AF msgbox LilycoveCity_ContestHall_Text_18980B, 2 lockall - move 15, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 15, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1591C4:: @ 81591C4 msgbox LilycoveCity_ContestHall_Text_189874, 2 lockall - move 16, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 16, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1591D9:: @ 81591D9 msgbox LilycoveCity_ContestHall_Text_18990A, 2 lockall - move 17, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 17, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1591EE:: @ 81591EE msgbox LilycoveCity_ContestHall_Text_189981, 2 lockall - move 18, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 18, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159203:: @ 8159203 msgbox LilycoveCity_ContestHall_Text_189A1D, 2 lockall - move 19, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 19, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159218:: @ 8159218 msgbox LilycoveCity_ContestHall_Text_189A82, 2 lockall - move 21, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 21, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_15922D:: @ 815922D msgbox LilycoveCity_ContestHall_Text_189AE1, 2 lockall - move 20, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 20, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159242:: @ 8159242 msgbox LilycoveCity_ContestHall_Text_189B4E, 2 lockall - move 23, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 23, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159257:: @ 8159257 msgbox LilycoveCity_ContestHall_Text_189BBF, 2 lockall - move 24, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 24, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_15926C:: @ 815926C msgbox LilycoveCity_ContestHall_Text_189C29, 2 lockall - move 25, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 25, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159281:: @ 8159281 msgbox LilycoveCity_ContestHall_Text_189C67, 2 lockall - move 26, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 26, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159296:: @ 8159296 msgbox LilycoveCity_ContestHall_Text_189CB3, 2 lockall - move 27, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 27, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1592AB:: @ 81592AB msgbox LilycoveCity_ContestHall_Text_189D11, 2 lockall - move 28, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 28, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1592C0:: @ 81592C0 lockall - move 29, LilycoveCity_ContestHall_Movement_1A0839 - waitmove 0 - pause 25 - move 29, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 29, LilycoveCity_ContestHall_Movement_1A0839 + waitmovement 0 + delay 25 + applymovement 29, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 msgbox LilycoveCity_ContestHall_Text_189DA2, 3 releaseall end @@ -229,16 +229,16 @@ LilycoveCity_ContestHall_EventScript_1592C0:: @ 81592C0 LilycoveCity_ContestHall_EventScript_1592E2:: @ 81592E2 msgbox LilycoveCity_ContestHall_Text_189E5F, 2 lockall - move 31, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 31, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1592F7:: @ 81592F7 msgbox LilycoveCity_ContestHall_Text_189DF3, 2 lockall - move 30, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 30, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end diff --git a/data/scripts/maps/LilycoveCity_ContestLobby.inc b/data/scripts/maps/LilycoveCity_ContestLobby.inc index 3c8cc5bdf..a8c32a4fe 100644 --- a/data/scripts/maps/LilycoveCity_ContestLobby.inc +++ b/data/scripts/maps/LilycoveCity_ContestLobby.inc @@ -14,41 +14,41 @@ LilycoveCity_ContestLobby_MapScript2_158877:: @ 8158877 LilycoveCity_ContestLobby_EventScript_158889:: @ 8158889 checkflag 775 - jumpeq LilycoveCity_ContestLobby_EventScript_158898 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158898 setvar 0x4099, 0 end LilycoveCity_ContestLobby_EventScript_158898:: @ 8158898 lockall - reappear 4 - move 4, LilycoveCity_ContestLobby_Movement_158A3B - waitmove 4 - move 255, LilycoveCity_ContestLobby_Movement_158A4C - waitmove 0 + addobject 4 + applymovement 4, LilycoveCity_ContestLobby_Movement_158A3B + waitmovement 4 + applymovement 255, LilycoveCity_ContestLobby_Movement_158A4C + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_18890F, 4 lockall fadescreen 1 - showcontestwinner 0 + drawcontestwinner 0 lockall msgbox LilycoveCity_ContestLobby_Text_1889FD, 5 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_1588DE + goto_if_eq LilycoveCity_ContestLobby_EventScript_1588DE compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158918 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158918 releaseall end LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE msgbox LilycoveCity_ContestLobby_Text_188AE8, 4 - closebutton + closemessage special sub_80C4CEC setvar 0x4099, 0 - specialval RESULT, GiveMonArtistRibbon + specialvar RESULT, GiveMonArtistRibbon compare RESULT, 1 - callif 1, LilycoveCity_ContestLobby_EventScript_158948 - move 4, LilycoveCity_ContestLobby_Movement_158A43 - waitmove 0 - disappear 4 + call_if 1, LilycoveCity_ContestLobby_EventScript_158948 + applymovement 4, LilycoveCity_ContestLobby_Movement_158A43 + waitmovement 0 + removeobject 4 call LilycoveCity_ContestLobby_EventScript_158994 call LilycoveCity_ContestLobby_EventScript_1589EA releaseall @@ -57,37 +57,37 @@ LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE LilycoveCity_ContestLobby_EventScript_158918:: @ 8158918 msgbox LilycoveCity_ContestLobby_Text_188C41, 5 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_1588DE + goto_if_eq LilycoveCity_ContestLobby_EventScript_1588DE msgbox LilycoveCity_ContestLobby_Text_188CBD, 4 - closebutton - move 4, LilycoveCity_ContestLobby_Movement_158A43 - waitmove 0 + closemessage + applymovement 4, LilycoveCity_ContestLobby_Movement_158A43 + waitmovement 0 setvar 0x4099, 0 - disappear 4 + removeobject 4 releaseall end LilycoveCity_ContestLobby_EventScript_158948:: @ 8158948 - inccounter GAME_STAT_RECEIVED_RIBBONS + incrementgamestat GAME_STAT_RECEIVED_RIBBONS special sub_80C4858 - move 4, LilycoveCity_ContestLobby_Movement_158A4E - waitmove 0 - playsfx 21 - move 4, LilycoveCity_ContestLobby_Movement_1A0833 - waitmove 0 - move 4, LilycoveCity_ContestLobby_Movement_158A52 - waitmove 0 + applymovement 4, LilycoveCity_ContestLobby_Movement_158A4E + waitmovement 0 + playse 21 + applymovement 4, LilycoveCity_ContestLobby_Movement_1A0833 + waitmovement 0 + applymovement 4, LilycoveCity_ContestLobby_Movement_158A52 + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_188BB5, 4 - fanfare 370 + playfanfare 370 msgbox LilycoveCity_ContestLobby_Text_188C03, 4 waitfanfare msgbox LilycoveCity_ContestLobby_Text_188C19, 4 msgbox LilycoveCity_ContestLobby_Text_188C32, 4 - closebutton + closemessage return LilycoveCity_ContestLobby_EventScript_158994:: @ 8158994 - specialval 0x8004, sub_80C4D50 + specialvar 0x8004, sub_80C4D50 switch 0x8004 case 1, LilycoveCity_ContestLobby_EventScript_1589D6 case 2, LilycoveCity_ContestLobby_EventScript_1589DA @@ -189,39 +189,39 @@ LilycoveCity_ContestLobby_Movement_158A52:: @ 8158A52 LilycoveCity_ContestLobby_EventScript_158A5B:: @ 8158A5B checkflag 775 - jumpeq LilycoveCity_ContestLobby_EventScript_158A6A + goto_if_eq LilycoveCity_ContestLobby_EventScript_158A6A setvar 0x4099, 0 end LilycoveCity_ContestLobby_EventScript_158A6A:: @ 8158A6A lockall - reappear 11 - move 11, LilycoveCity_ContestLobby_Movement_158B64 - waitmove 11 - move 255, LilycoveCity_ContestLobby_Movement_158B76 - waitmove 0 + addobject 11 + applymovement 11, LilycoveCity_ContestLobby_Movement_158B64 + waitmovement 11 + applymovement 255, LilycoveCity_ContestLobby_Movement_158B76 + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_18890F, 4 lockall fadescreen 1 - showcontestwinner 0 + drawcontestwinner 0 msgbox LilycoveCity_ContestLobby_Text_1889FD, 5 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_158AAE + goto_if_eq LilycoveCity_ContestLobby_EventScript_158AAE compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158AE8 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158AE8 end LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE msgbox LilycoveCity_ContestLobby_Text_188AE8, 4 - closebutton + closemessage special sub_80C4CEC setvar 0x4099, 0 - specialval RESULT, GiveMonArtistRibbon + specialvar RESULT, GiveMonArtistRibbon compare RESULT, 1 - callif 1, LilycoveCity_ContestLobby_EventScript_158B18 - move 11, LilycoveCity_ContestLobby_Movement_158B6D - waitmove 0 - disappear 11 + call_if 1, LilycoveCity_ContestLobby_EventScript_158B18 + applymovement 11, LilycoveCity_ContestLobby_Movement_158B6D + waitmovement 0 + removeobject 11 call LilycoveCity_ContestLobby_EventScript_158994 call LilycoveCity_ContestLobby_EventScript_1589EA releaseall @@ -230,33 +230,33 @@ LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE LilycoveCity_ContestLobby_EventScript_158AE8:: @ 8158AE8 msgbox LilycoveCity_ContestLobby_Text_188C41, 5 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_158AAE + goto_if_eq LilycoveCity_ContestLobby_EventScript_158AAE msgbox LilycoveCity_ContestLobby_Text_188CBD, 4 - closebutton - move 11, LilycoveCity_ContestLobby_Movement_158B6D - waitmove 0 + closemessage + applymovement 11, LilycoveCity_ContestLobby_Movement_158B6D + waitmovement 0 setvar 0x4099, 0 - disappear 11 + removeobject 11 releaseall end LilycoveCity_ContestLobby_EventScript_158B18:: @ 8158B18 - inccounter GAME_STAT_RECEIVED_RIBBONS + incrementgamestat GAME_STAT_RECEIVED_RIBBONS special sub_80C4858 - move 11, LilycoveCity_ContestLobby_Movement_158B78 - waitmove 0 - playsfx 21 - move 11, LilycoveCity_ContestLobby_Movement_1A0833 - waitmove 0 - move 11, LilycoveCity_ContestLobby_Movement_158B7C - waitmove 0 + applymovement 11, LilycoveCity_ContestLobby_Movement_158B78 + waitmovement 0 + playse 21 + applymovement 11, LilycoveCity_ContestLobby_Movement_1A0833 + waitmovement 0 + applymovement 11, LilycoveCity_ContestLobby_Movement_158B7C + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_188BB5, 4 - fanfare 370 + playfanfare 370 msgbox LilycoveCity_ContestLobby_Text_188C03, 4 waitfanfare msgbox LilycoveCity_ContestLobby_Text_188C19, 4 msgbox LilycoveCity_ContestLobby_Text_188C32, 4 - closebutton + closemessage return LilycoveCity_ContestLobby_Movement_158B64:: @ 8158B64 @@ -306,19 +306,19 @@ LilycoveCity_ContestLobby_EventScript_158B85:: @ 8158B85 lockall checkitem ITEM_CONTEST_PASS, 1 compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158BBA + goto_if_eq LilycoveCity_ContestLobby_EventScript_158BBA checkflag 2 - jumpeq LilycoveCity_ContestLobby_EventScript_158BAE + goto_if_eq LilycoveCity_ContestLobby_EventScript_158BAE message LilycoveCity_ContestLobby_Text_18848C - waittext + waitmessage setflag 2 - jump LilycoveCity_ContestLobby_EventScript_158BF0 + goto LilycoveCity_ContestLobby_EventScript_158BF0 end LilycoveCity_ContestLobby_EventScript_158BAE:: @ 8158BAE message LilycoveCity_ContestLobby_Text_188584 - waittext - jump LilycoveCity_ContestLobby_EventScript_158BF0 + waitmessage + goto LilycoveCity_ContestLobby_EventScript_158BF0 end LilycoveCity_ContestLobby_EventScript_158BBA:: @ 8158BBA @@ -329,11 +329,11 @@ LilycoveCity_ContestLobby_EventScript_158BBA:: @ 8158BBA LilycoveCity_ContestLobby_EventScript_158BC4:: @ 8158BC4 msgbox LilycoveCity_ContestLobby_Text_188521, 5 compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158C35 - call LilycoveCity_ContestLobby_EventScript_19F806 - hidebox 0, 0, 15, 9 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158C35 + call S_DoSaveDialog + erasebox 0, 0, 15, 9 compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158C35 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158C35 setflag 3 return @@ -348,7 +348,7 @@ LilycoveCity_ContestLobby_EventScript_158BF0:: @ 8158BF0 LilycoveCity_ContestLobby_EventScript_158C27:: @ 8158C27 msgbox LilycoveCity_ContestLobby_Text_1885A7, 4 - jump LilycoveCity_ContestLobby_EventScript_158B85 + goto LilycoveCity_ContestLobby_EventScript_158B85 end LilycoveCity_ContestLobby_EventScript_158C35:: @ 8158C35 @@ -362,39 +362,39 @@ LilycoveCity_ContestLobby_EventScript_158C42:: @ 8158C42 setvar CONTEST_RANK, 0 choosecontestpkmn compare 0x8004, 255 - jumpeq LilycoveCity_ContestLobby_EventScript_158CEA + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CEA special sub_80C43F4 compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158C96 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158C96 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_158CC0 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CC0 compare RESULT, 2 - jumpeq LilycoveCity_ContestLobby_EventScript_158CC0 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CC0 compare RESULT, 3 - jumpeq LilycoveCity_ContestLobby_EventScript_158CA4 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CA4 compare RESULT, 4 - jumpeq LilycoveCity_ContestLobby_EventScript_158CB2 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CB2 end LilycoveCity_ContestLobby_EventScript_158C96:: @ 8158C96 msgbox LilycoveCity_ContestLobby_Text_1A664A, 4 - jump LilycoveCity_ContestLobby_EventScript_158C42 + goto LilycoveCity_ContestLobby_EventScript_158C42 end LilycoveCity_ContestLobby_EventScript_158CA4:: @ 8158CA4 msgbox LilycoveCity_ContestLobby_Text_1A669F, 4 - jump LilycoveCity_ContestLobby_EventScript_158C42 + goto LilycoveCity_ContestLobby_EventScript_158C42 end LilycoveCity_ContestLobby_EventScript_158CB2:: @ 8158CB2 msgbox LilycoveCity_ContestLobby_Text_1A66DC, 4 - jump LilycoveCity_ContestLobby_EventScript_158C42 + goto LilycoveCity_ContestLobby_EventScript_158C42 end LilycoveCity_ContestLobby_EventScript_158CC0:: @ 8158CC0 copyvar 0x8008, 0x8004 message LilycoveCity_ContestLobby_Text_1A67A3 - waittext + waitmessage yesnobox 20, 8 switch RESULT case 0, LilycoveCity_ContestLobby_EventScript_158C42 @@ -403,31 +403,31 @@ LilycoveCity_ContestLobby_EventScript_158CC0:: @ 8158CC0 LilycoveCity_ContestLobby_EventScript_158CEA:: @ 8158CEA checkflag 3 - callif 0, LilycoveCity_ContestLobby_EventScript_158BC4 + call_if 0, LilycoveCity_ContestLobby_EventScript_158BC4 message LilycoveCity_ContestLobby_Text_1886DC - waittext + waitmessage multichoice 0, 0, 4, 0 switch RESULT case 5, LilycoveCity_ContestLobby_EventScript_158C35 case 127, LilycoveCity_ContestLobby_EventScript_158C35 copyvar CONTEST_CATEGORY, RESULT - jump LilycoveCity_ContestLobby_EventScript_158C42 + goto LilycoveCity_ContestLobby_EventScript_158C42 end LilycoveCity_ContestLobby_EventScript_158D24:: @ 8158D24 message LilycoveCity_ContestLobby_Text_1887C7 - waittext + waitmessage copyvar 0x8004, RESULT special sub_808363C waitstate compare RESULT, 3 - jumpeq LilycoveCity_ContestLobby_EventScript_158D90 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158D90 compare RESULT, 5 - jumpeq LilycoveCity_ContestLobby_EventScript_158DA1 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158DA1 compare RESULT, 6 - jumpeq LilycoveCity_ContestLobby_EventScript_158DB2 - message2 LilycoveCity_ContestLobby_Text_18872A - waittext + goto_if_eq LilycoveCity_ContestLobby_EventScript_158DB2 + messageautoscroll LilycoveCity_ContestLobby_Text_18872A + waitmessage contestlinktransfer switch 0x8004 case 0, LilycoveCity_ContestLobby_EventScript_158DD1 @@ -437,13 +437,13 @@ LilycoveCity_ContestLobby_EventScript_158D24:: @ 8158D24 LilycoveCity_ContestLobby_EventScript_158D82:: @ 8158D82 msgbox LilycoveCity_ContestLobby_Text_188750, 4 - jump LilycoveCity_ContestLobby_EventScript_158CEA + goto LilycoveCity_ContestLobby_EventScript_158CEA end LilycoveCity_ContestLobby_EventScript_158D90:: @ 8158D90 special CloseLink msgbox LilycoveCity_ContestLobby_Text_18878D, 4 - closebutton + closemessage releaseall clearflag 3 end @@ -451,7 +451,7 @@ LilycoveCity_ContestLobby_EventScript_158D90:: @ 8158D90 LilycoveCity_ContestLobby_EventScript_158DA1:: @ 8158DA1 special CloseLink msgbox LilycoveCity_ContestLobby_Text_1887F4, 4 - closebutton + closemessage releaseall clearflag 3 end @@ -459,24 +459,24 @@ LilycoveCity_ContestLobby_EventScript_158DA1:: @ 8158DA1 LilycoveCity_ContestLobby_EventScript_158DB2:: @ 8158DB2 special CloseLink msgbox LilycoveCity_ContestLobby_Text_18881F, 4 - closebutton + closemessage releaseall clearflag 3 end LilycoveCity_ContestLobby_EventScript_158DC3:: @ 8158DC3 msgbox LilycoveCity_ContestLobby_Text_18873A, 4 - jump LilycoveCity_ContestLobby_EventScript_158CEA + goto LilycoveCity_ContestLobby_EventScript_158CEA end LilycoveCity_ContestLobby_EventScript_158DD1:: @ 8158DD1 special sub_80C496C addvar 0x8004, 1 - buffernum 1, 32772 - message2 LilycoveCity_ContestLobby_Text_188845 - waittext + getnumberstring 1, 32772 + messageautoscroll LilycoveCity_ContestLobby_Text_188845 + waitmessage addvar 0x8004, 65535 - jump LilycoveCity_ContestLobby_EventScript_158DEE + goto LilycoveCity_ContestLobby_EventScript_158DEE end LilycoveCity_ContestLobby_EventScript_158DEE:: @ 8158DEE @@ -490,34 +490,34 @@ LilycoveCity_ContestLobby_EventScript_158DEE:: @ 8158DEE LilycoveCity_ContestLobby_EventScript_158E0B:: @ 8158E0B lockall - message2 LilycoveCity_ContestLobby_Text_1888C6 - waittext - pause 20 - closebutton - move 2, LilycoveCity_ContestLobby_Movement_158E9C - waitmove 0 - playsfx 71 + messageautoscroll LilycoveCity_ContestLobby_Text_1888C6 + waitmessage + delay 20 + closemessage + applymovement 2, LilycoveCity_ContestLobby_Movement_158E9C + waitmovement 0 + playse 71 setmaptile 9, 2, 545, 1 setmaptile 9, 3, 609, 1 special DrawWholeMapView - move 2, LilycoveCity_ContestLobby_Movement_158EA0 - waitmove 0 - playsfx 71 + applymovement 2, LilycoveCity_ContestLobby_Movement_158EA0 + waitmovement 0 + playse 71 setmaptile 9, 2, 721, 1 setmaptile 9, 3, 729, 1 special DrawWholeMapView - pause 20 - move 2, LilycoveCity_ContestLobby_Movement_158EAE - waitmove 0 - move 255, LilycoveCity_ContestLobby_Movement_158E99 - waitmove 0 - message2 LilycoveCity_ContestLobby_Text_1A6832 - waittext - pause 20 - closebutton - move 2, LilycoveCity_ContestLobby_Movement_158EA4 - move 255, LilycoveCity_ContestLobby_Movement_158E8E - waitmove 0 + delay 20 + applymovement 2, LilycoveCity_ContestLobby_Movement_158EAE + waitmovement 0 + applymovement 255, LilycoveCity_ContestLobby_Movement_158E99 + waitmovement 0 + messageautoscroll LilycoveCity_ContestLobby_Text_1A6832 + waitmessage + delay 20 + closemessage + applymovement 2, LilycoveCity_ContestLobby_Movement_158EA4 + applymovement 255, LilycoveCity_ContestLobby_Movement_158E8E + waitmovement 0 releaseall return @@ -568,9 +568,9 @@ LilycoveCity_ContestLobby_Movement_158EAE:: @ 8158EAE step_end LilycoveCity_ContestLobby_EventScript_158EB0:: @ 8158EB0 - specialval RESULT, sub_80C5044 + specialvar RESULT, sub_80C5044 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_158EE8 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158EE8 setvar 0x800b, 8 setvar CONTEST_RANK, 3 call LilycoveCity_ContestLobby_EventScript_1A4E92 @@ -602,59 +602,59 @@ LilycoveCity_ContestLobby_EventScript_158F08:: @ 8158F08 return LilycoveCity_ContestLobby_EventScript_158F45:: @ 8158F45 - warp3 LinkContestRoom4, 255, 7, 5 + setwarp LinkContestRoom4, 255, 7, 5 special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F52:: @ 8158F52 - warp3 LinkContestRoom2, 255, 7, 5 + setwarp LinkContestRoom2, 255, 7, 5 special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F5F:: @ 8158F5F - warp3 LinkContestRoom6, 255, 7, 5 + setwarp LinkContestRoom6, 255, 7, 5 special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F6C:: @ 8158F6C - warp3 LinkContestRoom5, 255, 7, 5 + setwarp LinkContestRoom5, 255, 7, 5 special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F79:: @ 8158F79 - warp3 LinkContestRoom3, 255, 7, 5 + setwarp LinkContestRoom3, 255, 7, 5 special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F86:: @ 8158F86 lockall - move 1, LilycoveCity_ContestLobby_Movement_15900B - waitmove 0 - playsfx 71 + applymovement 1, LilycoveCity_ContestLobby_Movement_15900B + waitmovement 0 + playse 71 setmaptile 4, 2, 545, 1 setmaptile 4, 3, 609, 1 special DrawWholeMapView - move 1, LilycoveCity_ContestLobby_Movement_15900F - waitmove 0 - playsfx 71 + applymovement 1, LilycoveCity_ContestLobby_Movement_15900F + waitmovement 0 + playse 71 setmaptile 4, 2, 721, 1 setmaptile 4, 3, 729, 1 special DrawWholeMapView - pause 20 - move 1, LilycoveCity_ContestLobby_Movement_15901C - waitmove 0 - move 255, LilycoveCity_ContestLobby_Movement_159008 - waitmove 0 + delay 20 + applymovement 1, LilycoveCity_ContestLobby_Movement_15901C + waitmovement 0 + applymovement 255, LilycoveCity_ContestLobby_Movement_159008 + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_1A6832, 4 - closebutton - move 1, LilycoveCity_ContestLobby_Movement_159013 - move 255, LilycoveCity_ContestLobby_Movement_158FFE - waitmove 0 + closemessage + applymovement 1, LilycoveCity_ContestLobby_Movement_159013 + applymovement 255, LilycoveCity_ContestLobby_Movement_158FFE + waitmovement 0 releaseall return @@ -708,7 +708,7 @@ LilycoveCity_ContestLobby_EventScript_15901E:: @ 815901E LilycoveCity_ContestLobby_EventScript_159027:: @ 8159027 checkflag 150 - jumpif 0, LilycoveCity_ContestLobby_EventScript_159039 + goto_if 0, LilycoveCity_ContestLobby_EventScript_159039 msgbox LilycoveCity_ContestLobby_Text_188DDA, 2 end @@ -735,21 +735,21 @@ LilycoveCity_ContestLobby_EventScript_15905D:: @ 815905D LilycoveCity_ContestLobby_EventScript_159066:: @ 8159066 lockall fadescreen 1 - showcontestwinner 6 + drawcontestwinner 6 releaseall end LilycoveCity_ContestLobby_EventScript_15906D:: @ 815906D lockall fadescreen 1 - showcontestwinner 7 + drawcontestwinner 7 releaseall end LilycoveCity_ContestLobby_EventScript_159074:: @ 8159074 lockall fadescreen 1 - showcontestwinner 8 + drawcontestwinner 8 releaseall end @@ -766,6 +766,6 @@ SlateportCity_ContestLobby_EventScript_15908D:: @ 815908D lockall special ShowBerryBlenderRecordWindow waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc b/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc index 95945a595..7b602b2c7 100644 --- a/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc +++ b/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc @@ -4,57 +4,57 @@ LilycoveCity_CoveLilyMotel_1F_MapScripts:: @ 81582C4 LilycoveCity_CoveLilyMotel_1F_EventScript_1582C5:: @ 81582C5 lockall checkflag 2052 - jumpeq LilycoveCity_CoveLilyMotel_1F_EventScript_158326 + goto_if_eq LilycoveCity_CoveLilyMotel_1F_EventScript_158326 checkflag 2061 - jumpeq LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF + goto_if_eq LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF msgbox LilycoveCity_CoveLilyMotel_1F_Text_186B71, 4 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186C2B, 4 - closebutton - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF:: @ 81582FF msgbox LilycoveCity_CoveLilyMotel_1F_Text_186CCE, 4 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186D7F, 4 - closebutton - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_CoveLilyMotel_1F_EventScript_158326:: @ 8158326 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186E57, 4 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186F09, 4 - closebutton - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_CoveLilyMotel_1F_EventScript_15834D:: @ 815834D lockall - playsfx 21 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0833 - waitmove 0 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0835 - waitmove 0 - move 255, LilycoveCity_CoveLilyMotel_1F_Movement_1A0845 - waitmove 0 + playse 21 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0833 + waitmovement 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0835 + waitmovement 0 + applymovement 255, LilycoveCity_CoveLilyMotel_1F_Movement_1A0845 + waitmovement 0 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186CA6, 4 - closebutton - move 255, LilycoveCity_CoveLilyMotel_1F_Movement_158395 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839A - waitmove 0 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839C - waitmove 0 + closemessage + applymovement 255, LilycoveCity_CoveLilyMotel_1F_Movement_158395 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839A + waitmovement 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839C + waitmovement 0 release end diff --git a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc index dcf74b77c..fd9ea8a58 100644 --- a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc +++ b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc @@ -5,12 +5,12 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583A1:: @ 81583A1 lock faceplayer checkflag 2 - callif 0, LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7 + call_if 0, LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7 checkflag 2 - callif 1, LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD - specialval RESULT, sub_8090FC0 + call_if 1, LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD + specialvar RESULT, sub_8090FC0 compare RESULT, 1 - jumpeq LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0 + goto_if_eq LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0 release end @@ -20,16 +20,16 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7:: @ 81583C7 LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0:: @ 81583D0 setflag 2 - fanfare 370 + playfanfare 370 waitfanfare - jump LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD + goto LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD end LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD:: @ 81583DD message LilycoveCity_CoveLilyMotel_2F_Text_18708F - waittext + waitmessage call LilycoveCity_CoveLilyMotel_2F_EventScript_1A02C5 - special sub_810D6A4 + special ScrSpecial_ShowDiploma waitstate release end diff --git a/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc b/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc index 74b746633..9d04d2e33 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc @@ -5,11 +5,11 @@ LilycoveCity_DepartmentStoreElevator_EventScript_15A39C:: @ 815A39C lock faceplayer checkflag 2 - callif 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF + call_if 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF copyvar 0x8005, 0x4043 special sub_810E944 message LilycoveCity_DepartmentStoreElevator_Text_1A0EF6 - waittext + waitmessage multichoice 0, 0, 57, 0 switch RESULT case 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A402 @@ -21,59 +21,59 @@ LilycoveCity_DepartmentStoreElevator_EventScript_15A39C:: @ 815A39C end LilycoveCity_DepartmentStoreElevator_EventScript_15A402:: @ 815A402 - warpplace LilycoveCity_DepartmentStore_1F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_1F, 255, 2, 1 compare 0x4043, 0 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 0 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A425:: @ 815A425 - warpplace LilycoveCity_DepartmentStore_2F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_2F, 255, 2, 1 compare 0x4043, 1 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 1 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A448:: @ 815A448 - warpplace LilycoveCity_DepartmentStore_3F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_3F, 255, 2, 1 compare 0x4043, 2 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 2 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A46B:: @ 815A46B - warpplace LilycoveCity_DepartmentStore_4F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_4F, 255, 2, 1 compare 0x4043, 3 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 3 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A48E:: @ 815A48E - warpplace LilycoveCity_DepartmentStore_5F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_5F, 255, 2, 1 compare 0x4043, 4 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 4 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1:: @ 815A4B1 - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 release end LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8:: @ 815A4B8 - hidebox 0, 0, 29, 19 - move LAST_TALKED, LilycoveCity_DepartmentStoreElevator_Movement_1A0845 - waitmove 0 + erasebox 0, 0, 29, 19 + applymovement LAST_TALKED, LilycoveCity_DepartmentStoreElevator_Movement_1A0845 + waitmovement 0 special sub_810EBEC waitstate setflag 2 diff --git a/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc b/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc index f84c84201..29914a9b5 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc @@ -3,11 +3,11 @@ LilycoveCity_DepartmentStoreRooftop_MapScripts:: @ 815A13F .byte 0 LilycoveCity_DepartmentStoreRooftop_MapScript1_15A145:: @ 815A145 - event_96 3 + getpricereduction 3 compare RESULT, 1 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F compare RESULT, 0 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A163 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A163 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F:: @ 815A15F @@ -22,7 +22,7 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A167:: @ 815A167 lock faceplayer message LilycoveCity_DepartmentStoreRooftop_Text_1A0BE4 - waittext + waitmessage pokemartdecor LilycoveCity_DepartmentStoreRooftop_Decorations msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C02, 4 release @@ -51,9 +51,9 @@ LilycoveCity_DepartmentStoreRooftop_Decorations:: @ 815A180 LilycoveCity_DepartmentStoreRooftop_EventScript_15A1A0:: @ 815A1A0 lock faceplayer - event_96 3 + getpricereduction 3 compare RESULT, 1 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A1BA + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A1BA msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C61F, 4 release end @@ -70,10 +70,10 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A1C4:: @ 815A1C4 LilycoveCity_DepartmentStoreRooftop_EventScript_15A1CD:: @ 815A1CD lockall message LilycoveCity_DepartmentStoreRooftop_Text_18C72B - waittext - showmoney 0, 0 - snop - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE + waitmessage + showmoneybox 0, 0 + nop + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE end LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE:: @ 815A1DE @@ -84,22 +84,22 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE:: @ 815A1DE case 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A227 case 2, LilycoveCity_DepartmentStoreRooftop_EventScript_15A232 msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C7C3, 4 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A21C:: @ 815A21C setvar 0x4000, 26 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A227:: @ 815A227 setvar 0x4000, 27 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A232:: @ 815A232 setvar 0x4000, 28 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D:: @ 815A23D @@ -115,88 +115,88 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B:: @ 815A24B return LilycoveCity_DepartmentStoreRooftop_EventScript_15A252:: @ 815A252 - paymoney 0xc8, 0 + takemoney 0xc8, 0 return LilycoveCity_DepartmentStoreRooftop_EventScript_15A259:: @ 815A259 - paymoney 0x12c, 0 + takemoney 0x12c, 0 return LilycoveCity_DepartmentStoreRooftop_EventScript_15A260:: @ 815A260 - paymoney 0x15e, 0 + takemoney 0x15e, 0 return LilycoveCity_DepartmentStoreRooftop_EventScript_15A267:: @ 815A267 compare 0x4001, 0 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D compare 0x4001, 1 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A244 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A244 compare 0x4001, 2 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A + goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A checkitemspace 0x4000, 1 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 + goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 compare 0x4001, 0 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A252 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A252 compare 0x4001, 1 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A259 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A259 compare 0x4001, 2 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A260 - updatemoney 0, 0 - snop - bufferitem 0, 0x4000 - playsfx 106 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A260 + updatemoneybox 0, 0 + nop + getitemname 0, 0x4000 + playse 106 msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C75F, 4 additem 0x4000, 1 - bufferitem 1, 0x4000 - bufferstd 2, 14 + getitemname 1, 0x4000 + getstdstring 2, 14 msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4 random 64 compare RESULT, 0 - jumpif 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E + goto_if 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E checkitemspace 0x4000, 1 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 - playsfx 106 + goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 + playse 106 msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C780, 4 additem 0x4000, 1 - bufferitem 1, 0x4000 - bufferstd 2, 14 + getitemname 1, 0x4000 + getstdstring 2, 14 msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4 random 64 compare RESULT, 0 - jumpif 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E + goto_if 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E checkitemspace 0x4000, 1 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 - playsfx 106 + goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 + playse 106 msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C780, 4 additem 0x4000, 1 - bufferitem 1, 0x4000 - bufferstd 2, 14 + getitemname 1, 0x4000 + getstdstring 2, 14 msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E end LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E:: @ 815A36E message LilycoveCity_DepartmentStoreRooftop_Text_18C72B - waittext - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE + waitmessage + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE end LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A:: @ 815A37A msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C7AF, 4 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A388:: @ 815A388 msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C79, 4 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A396:: @ 815A396 - hidemoney 0, 0 + hidemoneybox 0, 0 releaseall end diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc index feff49c42..7acd29523 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc @@ -8,51 +8,51 @@ LilycoveCity_DepartmentStore_1F_EventScript_159D55:: @ 8159D55 LilycoveCity_DepartmentStore_1F_EventScript_159D5E:: @ 8159D5E lock faceplayer - checkdailyflags + dodailyevents compare 0x4045, 0 - jumpif 5, LilycoveCity_DepartmentStore_1F_EventScript_159EB1 + goto_if 5, LilycoveCity_DepartmentStore_1F_EventScript_159EB1 checkflag 2250 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E4C + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E4C msgbox LilycoveCity_DepartmentStore_1F_Text_1C4B5E, 5 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E56 + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E56 setflag 2250 message LilycoveCity_DepartmentStore_1F_Text_1C4CC6 - waittext + waitmessage special RetrieveLotteryNumber copyvar 0x8008, RESULT special sub_810F9AC msgbox LilycoveCity_DepartmentStore_1F_Text_1C4CF6, 4 - move 2, LilycoveCity_DepartmentStore_1F_Movement_1A0843 - waitmove 0 - playsfx 4 + applymovement 2, LilycoveCity_DepartmentStore_1F_Movement_1A0843 + waitmovement 0 + playse 4 special DoLotteryCornerComputerEffect special PickLotteryCornerTicket - pause 220 + delay 220 special EndLotteryCornerComputerEffect - pause 10 - move 2, LilycoveCity_DepartmentStore_1F_Movement_1A0839 - waitmove 0 + delay 10 + applymovement 2, LilycoveCity_DepartmentStore_1F_Movement_1A0839 + waitmovement 0 compare 0x8004, 0 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E60 - inccounter GAME_STAT_WON_POKEMON_LOTTERY + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E60 + incrementgamestat GAME_STAT_WON_POKEMON_LOTTERY compare 0x8006, 0 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E3A + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E3A compare 0x8006, 1 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E43 - bufferitem 0, 0x8005 + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E43 + getitemname 0, 0x8005 compare 0x8004, 1 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E78 + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E78 compare 0x8004, 2 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E81 + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E81 compare 0x8004, 3 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E8A + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E8A compare 0x8004, 4 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E93 + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E93 giveitem 0x8005 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E9C - jump LilycoveCity_DepartmentStore_1F_EventScript_159E6E + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E9C + goto LilycoveCity_DepartmentStore_1F_EventScript_159E6E end LilycoveCity_DepartmentStore_1F_EventScript_159E3A:: @ 8159E3A @@ -75,7 +75,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159E56:: @ 8159E56 LilycoveCity_DepartmentStore_1F_EventScript_159E60:: @ 8159E60 msgbox LilycoveCity_DepartmentStore_1F_Text_1C4E27, 4 - jump LilycoveCity_DepartmentStore_1F_EventScript_159E6E + goto LilycoveCity_DepartmentStore_1F_EventScript_159E6E end LilycoveCity_DepartmentStore_1F_EventScript_159E6E:: @ 8159E6E @@ -101,7 +101,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159E93:: @ 8159E93 LilycoveCity_DepartmentStore_1F_EventScript_159E9C:: @ 8159E9C copyvar 0x4045, 0x8005 - jump LilycoveCity_DepartmentStore_1F_EventScript_159EA7 + goto LilycoveCity_DepartmentStore_1F_EventScript_159EA7 end LilycoveCity_DepartmentStore_1F_EventScript_159EA7:: @ 8159EA7 @@ -113,7 +113,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159EB1:: @ 8159EB1 msgbox LilycoveCity_DepartmentStore_1F_Text_1C4FCC, 4 giveitem 0x4045 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159EA7 + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159EA7 setvar 0x4045, 0 release end @@ -133,8 +133,8 @@ LilycoveCity_DepartmentStore_1F_EventScript_159EE9:: @ 8159EE9 LilycoveCity_DepartmentStore_1F_EventScript_159EF2:: @ 8159EF2 lock faceplayer - checksound - pokecry SPECIES_AZUMARILL, 0 + waitse + playpokecry SPECIES_AZUMARILL, 0 msgbox LilycoveCity_DepartmentStore_1F_Text_18C0C3, 4 waitpokecry release diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc index e54883714..25e981628 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc @@ -17,7 +17,7 @@ LilycoveCity_DepartmentStore_2F_EventScript_159F2A:: @ 8159F2A lock faceplayer message LilycoveCity_DepartmentStore_2F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_2F_Items1 msgbox LilycoveCity_DepartmentStore_2F_Text_1A0C02, 4 release @@ -44,7 +44,7 @@ LilycoveCity_DepartmentStore_2F_EventScript_159F5E:: @ 8159F5E lock faceplayer message LilycoveCity_DepartmentStore_2F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_2F_Items2 msgbox LilycoveCity_DepartmentStore_2F_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc index e669cef7f..1f55f5018 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc @@ -5,7 +5,7 @@ LilycoveCity_DepartmentStore_3F_EventScript_159F91:: @ 8159F91 lock faceplayer message LilycoveCity_DepartmentStore_3F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_3F_Items1 msgbox LilycoveCity_DepartmentStore_3F_Text_1A0C02, 4 release @@ -27,7 +27,7 @@ LilycoveCity_DepartmentStore_3F_EventScript_159FB8:: @ 8159FB8 lock faceplayer message LilycoveCity_DepartmentStore_3F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_3F_Items2 msgbox LilycoveCity_DepartmentStore_3F_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc index 994b3b63f..d922d9181 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc @@ -17,7 +17,7 @@ LilycoveCity_DepartmentStore_4F_EventScript_15A019:: @ 815A019 lock faceplayer message LilycoveCity_DepartmentStore_4F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_4F_Items1 msgbox LilycoveCity_DepartmentStore_4F_Text_1A0C02, 4 release @@ -37,7 +37,7 @@ LilycoveCity_DepartmentStore_4F_EventScript_15A03C:: @ 815A03C lock faceplayer message LilycoveCity_DepartmentStore_4F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_4F_Items2 msgbox LilycoveCity_DepartmentStore_4F_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc index 0bef8866a..835a0f48d 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc @@ -5,7 +5,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A061:: @ 815A061 lock faceplayer message LilycoveCity_DepartmentStore_5F_Text_1A0BE4 - waittext + waitmessage pokemartbp LilycoveCity_DepartmentStore_5F_Items1 msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4 release @@ -33,7 +33,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A094:: @ 815A094 lock faceplayer message LilycoveCity_DepartmentStore_5F_Text_1A0BE4 - waittext + waitmessage pokemartbp LilycoveCity_DepartmentStore_5F_Items2 msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4 release @@ -58,7 +58,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A0C2:: @ 815A0C2 lock faceplayer message LilycoveCity_DepartmentStore_5F_Text_1A0BE4 - waittext + waitmessage pokemartbp LilycoveCity_DepartmentStore_5F_Items3 msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4 release @@ -83,7 +83,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A0F2:: @ 815A0F2 lock faceplayer message LilycoveCity_DepartmentStore_5F_Text_1A0BE4 - waittext + waitmessage pokemartbp LilycoveCity_DepartmentStore_5F_Items4 msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LilycoveCity_Harbor.inc b/data/scripts/maps/LilycoveCity_Harbor.inc index f8ff8f9f3..7e14db994 100644 --- a/data/scripts/maps/LilycoveCity_Harbor.inc +++ b/data/scripts/maps/LilycoveCity_Harbor.inc @@ -3,7 +3,7 @@ LilycoveCity_Harbor_MapScripts:: @ 8159893 .byte 0 LilycoveCity_Harbor_MapScript1_159899:: @ 8159899 - warp6 LilycoveCity, 255, 12, 33 + setescapewarp LilycoveCity, 255, 12, 33 end LilycoveCity_Harbor_EventScript_1598A2:: @ 81598A2 @@ -11,13 +11,13 @@ LilycoveCity_Harbor_EventScript_1598A2:: @ 81598A2 faceplayer checkitem ITEM_EON_TICKET, 1 compare RESULT, 1 - jumpeq LilycoveCity_Harbor_EventScript_1599EE - jump LilycoveCity_Harbor_EventScript_1598BA + goto_if_eq LilycoveCity_Harbor_EventScript_1599EE + goto LilycoveCity_Harbor_EventScript_1598BA end LilycoveCity_Harbor_EventScript_1598BA:: @ 81598BA checkflag 2052 - jumpeq LilycoveCity_Harbor_EventScript_1598CD + goto_if_eq LilycoveCity_Harbor_EventScript_1598CD msgbox LilycoveCity_Harbor_Text_18B306, 4 release end @@ -26,14 +26,14 @@ LilycoveCity_Harbor_EventScript_1598CD:: @ 81598CD msgbox LilycoveCity_Harbor_Text_18B36F, 4 checkitem ITEM_SS_TICKET, 1 compare RESULT, 0 - jumpeq LilycoveCity_Harbor_EventScript_159929 + goto_if_eq LilycoveCity_Harbor_EventScript_159929 message LilycoveCity_Harbor_Text_18B406 - waittext - jump LilycoveCity_Harbor_EventScript_1598F1 + waitmessage + goto LilycoveCity_Harbor_EventScript_1598F1 end LilycoveCity_Harbor_EventScript_1598F1:: @ 81598F1 - multichoicedef 18, 6, 56, 2, 0 + multichoicedefault 18, 6, 56, 2, 0 switch RESULT case 0, LilycoveCity_Harbor_EventScript_159933 case 1, LilycoveCity_Harbor_EventScript_15995B @@ -49,7 +49,7 @@ LilycoveCity_Harbor_EventScript_159929:: @ 8159929 LilycoveCity_Harbor_EventScript_159933:: @ 8159933 msgbox LilycoveCity_Harbor_Text_18B47D, 5 compare RESULT, 0 - jumpeq LilycoveCity_Harbor_EventScript_15997E + goto_if_eq LilycoveCity_Harbor_EventScript_15997E setvar 0x40b4, 5 call LilycoveCity_Harbor_EventScript_15998A warp SSTidalCorridor, 255, 1, 10 @@ -60,7 +60,7 @@ LilycoveCity_Harbor_EventScript_159933:: @ 8159933 LilycoveCity_Harbor_EventScript_15995B:: @ 815995B msgbox LilycoveCity_Harbor_Text_18B499, 5 compare RESULT, 0 - jumpeq LilycoveCity_Harbor_EventScript_15997E + goto_if_eq LilycoveCity_Harbor_EventScript_15997E call LilycoveCity_Harbor_EventScript_15998A warp BattleTower_Outside, 255, 19, 23 waitstate @@ -69,35 +69,35 @@ LilycoveCity_Harbor_EventScript_15995B:: @ 815995B LilycoveCity_Harbor_EventScript_15997E:: @ 815997E message LilycoveCity_Harbor_Text_18B4E2 - waittext - jump LilycoveCity_Harbor_EventScript_1598F1 + waitmessage + goto LilycoveCity_Harbor_EventScript_1598F1 end LilycoveCity_Harbor_EventScript_15998A:: @ 815998A msgbox LilycoveCity_Harbor_Text_18B4B3, 4 - closebutton - move LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841 - waitmove 0 - pause 30 - spriteinvisible LAST_TALKED, 13, 10 + closemessage + applymovement LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841 + waitmovement 0 + delay 30 + hideobject LAST_TALKED, 13, 10 compare FACING, 2 - callif 1, LilycoveCity_Harbor_EventScript_1599D9 + call_if 1, LilycoveCity_Harbor_EventScript_1599D9 compare FACING, 4 - callif 1, LilycoveCity_Harbor_EventScript_1599CE - pause 30 - spriteinvisible 255, 0, 0 + call_if 1, LilycoveCity_Harbor_EventScript_1599CE + delay 30 + hideobject 255, 0, 0 setvar 0x8004, 2 call LilycoveCity_Harbor_EventScript_1A040E return LilycoveCity_Harbor_EventScript_1599CE:: @ 81599CE - move 255, LilycoveCity_Harbor_Movement_159A86 - waitmove 0 + applymovement 255, LilycoveCity_Harbor_Movement_159A86 + waitmovement 0 return LilycoveCity_Harbor_EventScript_1599D9:: @ 81599D9 - move 255, LilycoveCity_Harbor_Movement_159A89 - waitmove 0 + applymovement 255, LilycoveCity_Harbor_Movement_159A89 + waitmovement 0 return LilycoveCity_Harbor_EventScript_1599E4:: @ 81599E4 @@ -107,35 +107,35 @@ LilycoveCity_Harbor_EventScript_1599E4:: @ 81599E4 LilycoveCity_Harbor_EventScript_1599EE:: @ 81599EE checkflag 2052 - jumpif 0, LilycoveCity_Harbor_EventScript_1598BA + goto_if 0, LilycoveCity_Harbor_EventScript_1598BA checkflag 206 - jumpeq LilycoveCity_Harbor_EventScript_1598BA + goto_if_eq LilycoveCity_Harbor_EventScript_1598BA checkflag 2131 - jumpif 0, LilycoveCity_Harbor_EventScript_1598BA + goto_if 0, LilycoveCity_Harbor_EventScript_1598BA msgbox LilycoveCity_Harbor_Text_1C50F2, 4 - closebutton - move LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841 - waitmove 0 - pause 30 - spriteinvisible LAST_TALKED, 13, 10 - pause 60 - reappear 4 - pause 30 - move 4, LilycoveCity_Harbor_Movement_1A0839 - waitmove 0 + closemessage + applymovement LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841 + waitmovement 0 + delay 30 + hideobject LAST_TALKED, 13, 10 + delay 60 + addobject 4 + delay 30 + applymovement 4, LilycoveCity_Harbor_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_Harbor_Text_1C5120, 4 - closebutton - move 4, LilycoveCity_Harbor_Movement_1A0841 - waitmove 0 - pause 30 - disappear 4 + closemessage + applymovement 4, LilycoveCity_Harbor_Movement_1A0841 + waitmovement 0 + delay 30 + removeobject 4 compare FACING, 2 - callif 1, LilycoveCity_Harbor_EventScript_1599D9 + call_if 1, LilycoveCity_Harbor_EventScript_1599D9 compare FACING, 4 - callif 1, LilycoveCity_Harbor_EventScript_1599CE - pause 30 - spriteinvisible 255, 0, 0 - special HealPlayerParty + call_if 1, LilycoveCity_Harbor_EventScript_1599CE + delay 30 + hideobject 255, 0, 0 + special ScrSpecial_HealPlayerParty setvar 0x8004, 2 call LilycoveCity_Harbor_EventScript_1A040E warp SouthernIsland_Exterior, 255, 13, 22 @@ -160,7 +160,7 @@ LilycoveCity_Harbor_EventScript_159A8D:: @ 8159A8D lock faceplayer checkflag 2052 - jumpeq LilycoveCity_Harbor_EventScript_159AA2 + goto_if_eq LilycoveCity_Harbor_EventScript_159AA2 msgbox LilycoveCity_Harbor_Text_18B504, 4 release end diff --git a/data/scripts/maps/LilycoveCity_House1.inc b/data/scripts/maps/LilycoveCity_House1.inc index 3dae362c1..4defe37b8 100644 --- a/data/scripts/maps/LilycoveCity_House1.inc +++ b/data/scripts/maps/LilycoveCity_House1.inc @@ -8,8 +8,8 @@ LilycoveCity_House1_EventScript_159B86:: @ 8159B86 LilycoveCity_House1_EventScript_159B8F:: @ 8159B8F lock faceplayer - checksound - pokecry SPECIES_KECLEON, 0 + waitse + playpokecry SPECIES_KECLEON, 0 msgbox LilycoveCity_House1_Text_18B82B, 4 waitpokecry release diff --git a/data/scripts/maps/LilycoveCity_House2.inc b/data/scripts/maps/LilycoveCity_House2.inc index 75780667d..d3399f5ac 100644 --- a/data/scripts/maps/LilycoveCity_House2.inc +++ b/data/scripts/maps/LilycoveCity_House2.inc @@ -5,11 +5,11 @@ LilycoveCity_House2_EventScript_159BA3:: @ 8159BA3 lock faceplayer checkflag 234 - jumpeq LilycoveCity_House2_EventScript_159BDA + goto_if_eq LilycoveCity_House2_EventScript_159BDA msgbox LilycoveCity_House2_Text_18B83C, 4 giveitem ITEM_TM44 compare RESULT, 0 - jumpeq LilycoveCity_House2_EventScript_1A029B + goto_if_eq LilycoveCity_House2_EventScript_1A029B setflag 234 msgbox LilycoveCity_House2_Text_18B883, 4 release diff --git a/data/scripts/maps/LilycoveCity_House3.inc b/data/scripts/maps/LilycoveCity_House3.inc index 51e4988b3..f700eed9d 100644 --- a/data/scripts/maps/LilycoveCity_House3.inc +++ b/data/scripts/maps/LilycoveCity_House3.inc @@ -12,19 +12,19 @@ LilycoveCity_House3_EventScript_159BF3:: @ 8159BF3 faceplayer msgbox LilycoveCity_House3_Text_18B8CC, 5 compare RESULT, 0 - jumpeq LilycoveCity_House3_EventScript_159C1D + goto_if_eq LilycoveCity_House3_EventScript_159C1D msgbox LilycoveCity_House3_Text_18BA2B, 4 - closebutton - move LAST_TALKED, LilycoveCity_House3_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D + waitmovement 0 release end LilycoveCity_House3_EventScript_159C1D:: @ 8159C1D msgbox LilycoveCity_House3_Text_18B9DC, 4 - closebutton - move LAST_TALKED, LilycoveCity_House3_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D + waitmovement 0 release end @@ -32,9 +32,9 @@ LilycoveCity_House3_EventScript_159C32:: @ 8159C32 lock faceplayer msgbox LilycoveCity_House3_Text_18BD64, 4 - closebutton - move LAST_TALKED, LilycoveCity_House3_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc b/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc index a481f9c32..06e82d5f8 100644 --- a/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc +++ b/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc @@ -7,14 +7,14 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_15841C:: @ 815841C LilycoveCity_LilycoveMuseum_1F_EventScript_158425:: @ 8158425 lockall - move 2, LilycoveCity_LilycoveMuseum_1F_Movement_1A0839 + applymovement 2, LilycoveCity_LilycoveMuseum_1F_Movement_1A0839 message LilycoveCity_LilycoveMuseum_1F_Text_1873B9 - waittext + waitmessage multichoice 20, 8, 16, 1 compare RESULT, 0 - jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158458 + goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158458 compare RESULT, 1 - jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_15844F + goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_15844F end LilycoveCity_LilycoveMuseum_1F_EventScript_15844F:: @ 815844F @@ -24,9 +24,9 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_15844F:: @ 815844F LilycoveCity_LilycoveMuseum_1F_EventScript_158458:: @ 8158458 msgbox LilycoveCity_LilycoveMuseum_1F_Text_187495, 5 compare RESULT, 0 - jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158477 + goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158477 compare RESULT, 1 - jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158481 + goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158481 end LilycoveCity_LilycoveMuseum_1F_EventScript_158477:: @ 8158477 @@ -36,9 +36,9 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158477:: @ 8158477 LilycoveCity_LilycoveMuseum_1F_EventScript_158481:: @ 8158481 msgbox LilycoveCity_LilycoveMuseum_1F_Text_187534, 3 - move 2, LilycoveCity_LilycoveMuseum_1F_Movement_1584FC - waitmove 0 - disappear 2 + applymovement 2, LilycoveCity_LilycoveMuseum_1F_Movement_1584FC + waitmovement 0 + removeobject 2 switch FACING case 2, LilycoveCity_LilycoveMuseum_1F_EventScript_1584BD case 3, LilycoveCity_LilycoveMuseum_1F_EventScript_1584D2 @@ -47,24 +47,24 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158481:: @ 8158481 LilycoveCity_LilycoveMuseum_1F_EventScript_1584BD:: @ 81584BD lockall - move 255, LilycoveCity_LilycoveMuseum_1F_Movement_158504 - waitmove 0 + applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_158504 + waitmovement 0 warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8 waitstate end LilycoveCity_LilycoveMuseum_1F_EventScript_1584D2:: @ 81584D2 lockall - move 255, LilycoveCity_LilycoveMuseum_1F_Movement_1584FE - waitmove 0 + applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_1584FE + waitmovement 0 warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8 waitstate end LilycoveCity_LilycoveMuseum_1F_EventScript_1584E7:: @ 81584E7 lockall - move 255, LilycoveCity_LilycoveMuseum_1F_Movement_158501 - waitmove 0 + applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_158501 + waitmovement 0 warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8 waitstate end @@ -152,8 +152,8 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158585:: @ 8158585 LilycoveCity_LilycoveMuseum_1F_EventScript_15858E:: @ 815858E msgbox LilycoveCity_LilycoveMuseum_1F_Text_187B04, 2 lockall - move 8, LilycoveCity_LilycoveMuseum_1F_Movement_1A083D - waitmove 0 + applymovement 8, LilycoveCity_LilycoveMuseum_1F_Movement_1A083D + waitmovement 0 releaseall end diff --git a/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc b/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc index b3564ebf5..a4599f14a 100644 --- a/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc +++ b/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc @@ -5,55 +5,55 @@ LilycoveCity_LilycoveMuseum_2F_MapScripts:: @ 81585AC LilycoveCity_LilycoveMuseum_2F_MapScript1_1585B7:: @ 81585B7 checkflag 160 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6 end LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6:: @ 81585C6 checkflag 161 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158615 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158615 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5 end LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5:: @ 81585D5 checkflag 162 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15862D - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15862D + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4 end LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4:: @ 81585E4 checkflag 163 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158645 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158645 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3:: @ 81585F3 checkflag 164 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15865D + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15865D end LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD:: @ 81585FD setmaptile 10, 6, 606, 1 setmaptile 11, 6, 607, 1 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6 end LilycoveCity_LilycoveMuseum_2F_EventScript_158615:: @ 8158615 setmaptile 18, 6, 604, 1 setmaptile 19, 6, 605, 1 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5 end LilycoveCity_LilycoveMuseum_2F_EventScript_15862D:: @ 815862D setmaptile 14, 10, 608, 1 setmaptile 15, 10, 609, 1 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4 end LilycoveCity_LilycoveMuseum_2F_EventScript_158645:: @ 8158645 setmaptile 6, 10, 602, 1 setmaptile 7, 10, 603, 1 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3 end LilycoveCity_LilycoveMuseum_2F_EventScript_15865D:: @ 815865D @@ -67,19 +67,19 @@ LilycoveCity_LilycoveMuseum_2F_MapScript2_158670:: @ 8158670 LilycoveCity_LilycoveMuseum_2F_EventScript_15867A:: @ 815867A lockall - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 - move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3 - waitmove 0 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 + applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3 + waitmovement 0 msgbox LilycoveCity_LilycoveMuseum_2F_Text_187C42, 3 - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 - waitmove 0 - move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 - waitmove 0 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 + waitmovement 0 + applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 + waitmovement 0 msgbox LilycoveCity_LilycoveMuseum_2F_Text_187C64, 3 - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 - waitmove 0 - move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3 - waitmove 0 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 + waitmovement 0 + applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3 + waitmovement 0 msgbox LilycoveCity_LilycoveMuseum_2F_Text_187E1D, 3 copyvar 0x4094, 0x1 releaseall @@ -97,8 +97,8 @@ LilycoveCity_LilycoveMuseum_2F_Movement_1586D5:: @ 81586D5 LilycoveCity_LilycoveMuseum_2F_EventScript_1586D8:: @ 81586D8 lockall checkflag 236 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158793 - specialval 0x8004, sub_80C4D50 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158793 + specialvar 0x8004, sub_80C4D50 switch 0x8004 case 1, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C case 2, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C @@ -113,29 +113,29 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_15872C:: @ 815872C end LilycoveCity_LilycoveMuseum_2F_EventScript_158735:: @ 8158735 - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_LilycoveMuseum_2F_Text_18802F, 4 - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 msgbox LilycoveCity_LilycoveMuseum_2F_Text_188041, 4 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_15875C + goto LilycoveCity_LilycoveMuseum_2F_EventScript_15875C end LilycoveCity_LilycoveMuseum_2F_EventScript_15875C:: @ 815875C - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 msgbox LilycoveCity_LilycoveMuseum_2F_Text_188120, 4 givedecoration 44 compare RESULT, 0 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158783 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158783 setflag 236 - closebutton + closemessage releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_158783:: @ 8158783 call LilycoveCity_LilycoveMuseum_2F_EventScript_1A02B8 msgbox LilycoveCity_LilycoveMuseum_2F_Text_188166, 4 - closebutton + closemessage releaseall end @@ -147,35 +147,35 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_158793:: @ 8158793 LilycoveCity_LilycoveMuseum_2F_EventScript_15879D:: @ 815879D lockall checkflag 162 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15883C + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15883C msgbox LilycoveCity_LilycoveMuseum_2F_Text_188219, 3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1587B0:: @ 81587B0 lockall checkflag 164 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158858 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158858 msgbox LilycoveCity_LilycoveMuseum_2F_Text_18824C, 3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1587C3:: @ 81587C3 lockall checkflag 160 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158820 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158820 msgbox LilycoveCity_LilycoveMuseum_2F_Text_1882B4, 3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1587D6:: @ 81587D6 lockall checkflag 161 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15882E + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15882E msgbox LilycoveCity_LilycoveMuseum_2F_Text_188281, 3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1587E9:: @ 81587E9 lockall checkflag 163 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15884A + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15884A msgbox LilycoveCity_LilycoveMuseum_2F_Text_1882E6, 3 end @@ -198,34 +198,34 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_158817:: @ 8158817 LilycoveCity_LilycoveMuseum_2F_EventScript_158820:: @ 8158820 msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 9 + drawcontestwinner 9 releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_15882E:: @ 815882E msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 10 + drawcontestwinner 10 releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_15883C:: @ 815883C msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 11 + drawcontestwinner 11 releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_15884A:: @ 815884A msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 12 + drawcontestwinner 12 releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_158858:: @ 8158858 msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 13 + drawcontestwinner 13 releaseall end diff --git a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc index 6adea2eb2..02558e9d3 100644 --- a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc +++ b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc @@ -3,8 +3,8 @@ LilycoveCity_MoveDeletersHouse_MapScripts:: @ 8159AAD LilycoveCity_MoveDeletersHouse_EventScript_159AAE:: @ 8159AAE lockall - move 1, LilycoveCity_MoveDeletersHouse_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_MoveDeletersHouse_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_MoveDeletersHouse_Text_18B622, 5 switch RESULT case 1, LilycoveCity_MoveDeletersHouse_EventScript_159ADE @@ -17,20 +17,20 @@ LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE special sub_80F9A0C waitstate compare 0x8004, 255 - jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B7B + goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B7B special sub_80FA148 compare RESULT, 1 - jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B71 - special sub_80F9F3C + goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B71 + special ScrSpecial_CountPokemonMoves compare RESULT, 1 - jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B64 + goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B64 msgbox LilycoveCity_MoveDeletersHouse_Text_18B6B0, 4 fadescreen 1 special sub_80F9EEC fadescreen 0 compare 0x8005, 4 - jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159ADE - special sub_80F9F84 + goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159ADE + special ScrSpecial_GetPokemonNicknameAndMoveName msgbox LilycoveCity_MoveDeletersHouse_Text_18B6F2, 5 switch RESULT case 1, LilycoveCity_MoveDeletersHouse_EventScript_159B53 @@ -40,14 +40,14 @@ LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE LilycoveCity_MoveDeletersHouse_EventScript_159B53:: @ 8159B53 special sub_80FA0DC - fanfare 378 + playfanfare 378 waitfanfare msgbox LilycoveCity_MoveDeletersHouse_Text_18B71E, 4 releaseall end LilycoveCity_MoveDeletersHouse_EventScript_159B64:: @ 8159B64 - special sub_80F9F84 + special ScrSpecial_GetPokemonNicknameAndMoveName msgbox LilycoveCity_MoveDeletersHouse_Text_18B6D0, 4 releaseall end diff --git a/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc b/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc index 5809e28c8..20b5c5f13 100644 --- a/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ LilycoveCity_PokemonCenter_1F_MapScript1_15932D:: @ 815932D LilycoveCity_PokemonCenter_1F_EventScript_159331:: @ 8159331 setvar 0x800b, 1 call LilycoveCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -22,7 +22,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_159348:: @ 8159348 lock faceplayer checkflag 2061 - jumpeq LilycoveCity_PokemonCenter_1F_EventScript_15935D + goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_15935D msgbox LilycoveCity_PokemonCenter_1F_Text_18A048, 4 release end diff --git a/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc b/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc index e503ef4ec..13217b340 100644 --- a/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc +++ b/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc @@ -9,21 +9,21 @@ LilycoveCity_PokemonTrainerFanClub_MapScript2_159395:: @ 8159395 LilycoveCity_PokemonTrainerFanClub_EventScript_15939F:: @ 815939F lockall - move 1, LilycoveCity_PokemonTrainerFanClub_Movement_1A0845 - waitmove 0 + applymovement 1, LilycoveCity_PokemonTrainerFanClub_Movement_1A0845 + waitmovement 0 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A1D6, 4 - move 4, LilycoveCity_PokemonTrainerFanClub_Movement_159402 - move 2, LilycoveCity_PokemonTrainerFanClub_Movement_1593FA - waitmove 0 - move 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A0843 - waitmove 0 + applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_159402 + applymovement 2, LilycoveCity_PokemonTrainerFanClub_Movement_1593FA + waitmovement 0 + applymovement 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A0843 + waitmovement 0 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A1E8, 4 - move 4, LilycoveCity_PokemonTrainerFanClub_Movement_159409 - waitmove 0 - move 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A083F - waitmove 0 - move 4, LilycoveCity_PokemonTrainerFanClub_Movement_15940C - waitmove 0 + applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_159409 + waitmovement 0 + applymovement 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A083F + waitmovement 0 + applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_15940C + waitmovement 0 setvar 0x4095, 2 releaseall end @@ -62,77 +62,77 @@ LilycoveCity_PokemonTrainerFanClub_Movement_15940C:: @ 815940C LilycoveCity_PokemonTrainerFanClub_MapScript1_159412:: @ 8159412 compare 0x4095, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159515 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159515 compare 0x4095, 2 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159429 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159429 end LilycoveCity_PokemonTrainerFanClub_EventScript_159429:: @ 8159429 special sub_810FCE8 setvar 0x8004, 8 - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5 + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5 setvar 0x8004, 9 - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD setvar 0x8004, 10 - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5 + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5 setvar 0x8004, 11 - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED setvar 0x8004, 12 - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5 + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5 setvar 0x8004, 13 - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD setvar 0x8004, 14 - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_159505 + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_159505 setvar 0x8004, 15 - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_15950D + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_15950D end LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5:: @ 81594D5 - movespriteperm 1, 7, 5 + setobjectxyperm 1, 7, 5 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD:: @ 81594DD - movespriteperm 3, 3, 4 + setobjectxyperm 3, 3, 4 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5:: @ 81594E5 - movespriteperm 4, 7, 2 + setobjectxyperm 4, 7, 2 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED:: @ 81594ED - movespriteperm 5, 5, 5 + setobjectxyperm 5, 5, 5 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5:: @ 81594F5 - movespriteperm 6, 5, 2 + setobjectxyperm 6, 5, 2 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD:: @ 81594FD - movespriteperm 2, 8, 4 + setobjectxyperm 2, 8, 4 return LilycoveCity_PokemonTrainerFanClub_EventScript_159505:: @ 8159505 - movespriteperm 7, 3, 3 + setobjectxyperm 7, 3, 3 return LilycoveCity_PokemonTrainerFanClub_EventScript_15950D:: @ 815950D - movespriteperm 8, 8, 3 + setobjectxyperm 8, 8, 3 return LilycoveCity_PokemonTrainerFanClub_EventScript_159515:: @ 8159515 @@ -149,21 +149,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15952F:: @ 815952F setvar 0x8004, 13 special sub_810FDAC compare 0x4095, 0 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15959C - specialval RESULT, sub_810FD60 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15959C + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15956E - specialval RESULT, sub_810FCB0 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15956E + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159592 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159592 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A400, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_15956E:: @ 815956E - specialval RESULT, sub_810FCB0 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159588 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159588 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A36A, 4 release end @@ -189,21 +189,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1595A6:: @ 81595A6 setvar 0x8004, 8 special sub_810FDAC compare 0x4095, 0 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159613 - specialval RESULT, sub_810FD60 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159613 + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5 - specialval RESULT, sub_810FCB0 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159609 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159609 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A629, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5:: @ 81595E5 - specialval RESULT, sub_810FCB0 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1595FF + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1595FF msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A584, 4 release end @@ -229,21 +229,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15961D:: @ 815961D setvar 0x8004, 9 special sub_810FDAC compare 0x4095, 0 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15968A - specialval RESULT, sub_810FD60 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15968A + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15965C - specialval RESULT, sub_810FCB0 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15965C + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159680 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159680 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A814, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_15965C:: @ 815965C - specialval RESULT, sub_810FCB0 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159676 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159676 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A71E, 4 release end @@ -269,21 +269,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159694:: @ 8159694 setvar 0x8004, 10 special sub_810FDAC compare 0x4095, 0 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159701 - specialval RESULT, sub_810FD60 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159701 + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3 - specialval RESULT, sub_810FCB0 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596F7 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596F7 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AB0A, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3:: @ 81596D3 - specialval RESULT, sub_810FCB0 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596ED + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596ED msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AA39, 4 release end @@ -308,20 +308,20 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15970B:: @ 815970B faceplayer setvar 0x8004, 11 special sub_810FDAC - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15973F - specialval RESULT, sub_810FCB0 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15973F + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159763 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159763 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18ACC7, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_15973F:: @ 815973F - specialval RESULT, sub_810FCB0 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159759 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159759 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AC15, 4 release end @@ -341,20 +341,20 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15976D:: @ 815976D faceplayer setvar 0x8004, 12 special sub_810FDAC - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1 - specialval RESULT, sub_810FCB0 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597C5 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597C5 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AE63, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1:: @ 81597A1 - specialval RESULT, sub_810FCB0 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597BB + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597BB msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AD6D, 4 release end @@ -374,20 +374,20 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1597CF:: @ 81597CF faceplayer setvar 0x8004, 14 special sub_810FDAC - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159803 - specialval RESULT, sub_810FCB0 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159803 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159827 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159827 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B030, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_159803:: @ 8159803 - specialval RESULT, sub_810FCB0 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15981D + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15981D msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AF62, 4 release end @@ -407,20 +407,20 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159831:: @ 8159831 faceplayer setvar 0x8004, 15 special sub_810FDAC - specialval RESULT, sub_810FD60 + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159865 - specialval RESULT, sub_810FCB0 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159865 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159889 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159889 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B1FD, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_159865:: @ 8159865 - specialval RESULT, sub_810FCB0 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15987F + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15987F msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B16E, 4 release end diff --git a/data/scripts/maps/LittlerootTown.inc b/data/scripts/maps/LittlerootTown.inc index 2a4f77529..220aeead7 100644 --- a/data/scripts/maps/LittlerootTown.inc +++ b/data/scripts/maps/LittlerootTown.inc @@ -6,19 +6,19 @@ LittlerootTown_MapScripts:: @ 814D509 LittlerootTown_MapScript1_14D514:: @ 814D514 setflag 2063 compare 0x4092, 2 - callif 1, LittlerootTown_EventScript_14D57B + call_if 1, LittlerootTown_EventScript_14D57B checkflag 82 - callif 0, LittlerootTown_EventScript_14D583 + call_if 0, LittlerootTown_EventScript_14D583 compare 0x4050, 3 - callif 1, LittlerootTown_EventScript_14D5A6 + call_if 1, LittlerootTown_EventScript_14D5A6 compare 0x4082, 4 - callif 1, LittlerootTown_EventScript_14D570 + call_if 1, LittlerootTown_EventScript_14D570 compare 0x408c, 4 - callif 1, LittlerootTown_EventScript_14D570 + call_if 1, LittlerootTown_EventScript_14D570 compare 0x40c7, 1 - callif 1, LittlerootTown_EventScript_14D567 + call_if 1, LittlerootTown_EventScript_14D567 compare 0x408d, 3 - callif 1, LittlerootTown_EventScript_14D563 + call_if 1, LittlerootTown_EventScript_14D563 end LittlerootTown_EventScript_14D563:: @ 814D563 @@ -36,37 +36,37 @@ LittlerootTown_EventScript_14D570:: @ 814D570 return LittlerootTown_EventScript_14D57B:: @ 814D57B - movespriteperm 4, 14, 8 + setobjectxyperm 4, 14, 8 return LittlerootTown_EventScript_14D583:: @ 814D583 compare 0x4050, 0 - jumpeq LittlerootTown_EventScript_14D59A - movespriteperm 1, 10, 1 - spritebehave 1, 7 + goto_if_eq LittlerootTown_EventScript_14D59A + setobjectxyperm 1, 10, 1 + setobjectmovementtype 1, 7 return LittlerootTown_EventScript_14D59A:: @ 814D59A - movespriteperm 1, 7, 2 - spritebehave 1, 8 + setobjectxyperm 1, 7, 2 + setobjectmovementtype 1, 8 return LittlerootTown_EventScript_14D5A6:: @ 814D5A6 clearflag 752 - spritebehave 4, 8 - checkgender + setobjectmovementtype 4, 8 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D5C5 + call_if 1, LittlerootTown_EventScript_14D5C5 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D5CD + call_if 1, LittlerootTown_EventScript_14D5CD return LittlerootTown_EventScript_14D5C5:: @ 814D5C5 - movespriteperm 4, 5, 9 + setobjectxyperm 4, 5, 9 return LittlerootTown_EventScript_14D5CD:: @ 814D5CD - movespriteperm 4, 14, 9 + setobjectxyperm 4, 14, 9 return LittlerootTown_MapScript2_14D5D5:: @ 814D5D5 @@ -81,7 +81,7 @@ LittlerootTown_EventScript_14D5EF:: @ 814D5EF setvar 0x8005, 8 call LittlerootTown_EventScript_14D62B setflag 761 - warpmuted LittlerootTown_BrendansHouse_1F, 255, 8, 8 + warpsilent LittlerootTown_BrendansHouse_1F, 255, 8, 8 waitstate releaseall end @@ -92,41 +92,41 @@ LittlerootTown_EventScript_14D60D:: @ 814D60D setvar 0x8005, 8 call LittlerootTown_EventScript_14D62B setflag 762 - warpmuted LittlerootTown_MaysHouse_1F, 255, 2, 8 + warpsilent LittlerootTown_MaysHouse_1F, 255, 2, 8 waitstate releaseall end LittlerootTown_EventScript_14D62B:: @ 814D62B - pause 15 - playsfx 10 - move 255, LittlerootTown_Movement_14D6C0 - waitmove 0 - setdooropened 0x8004, 0x8005 - doorchange - reappear 4 - move 4, LittlerootTown_Movement_14D6AC - waitmove 0 - setdoorclosed 0x8004, 0x8005 - doorchange - pause 10 - move 4, LittlerootTown_Movement_14D6AE - waitmove 0 + delay 15 + playse 10 + applymovement 255, LittlerootTown_Movement_14D6C0 + waitmovement 0 + opendoor 0x8004, 0x8005 + waitdooranim + addobject 4 + applymovement 4, LittlerootTown_Movement_14D6AC + waitmovement 0 + closedoor 0x8004, 0x8005 + waitdooranim + delay 10 + applymovement 4, LittlerootTown_Movement_14D6AE + waitmovement 0 msgbox LittlerootTown_Text_16A7C9, 4 - closebutton - move 4, LittlerootTown_Movement_14D6B1 - move 255, LittlerootTown_Movement_14D6B8 - waitmove 0 - setdooropened 0x8004, 0x8005 - doorchange - move 4, LittlerootTown_Movement_14D6B5 - move 255, LittlerootTown_Movement_14D6BD - waitmove 0 + closemessage + applymovement 4, LittlerootTown_Movement_14D6B1 + applymovement 255, LittlerootTown_Movement_14D6B8 + waitmovement 0 + opendoor 0x8004, 0x8005 + waitdooranim + applymovement 4, LittlerootTown_Movement_14D6B5 + applymovement 255, LittlerootTown_Movement_14D6BD + waitmovement 0 setflag 752 setvar 0x4092, 3 - spriteinvisible 255, 0, 0 - setdoorclosed 0x8004, 0x8005 - doorchange + hideobject 255, 0, 0 + closedoor 0x8004, 0x8005 + waitdooranim clearflag 868 clearflag 0x4000 return @@ -188,20 +188,20 @@ LittlerootTown_EventScript_14D6DF:: @ 814D6DF lock faceplayer checkflag 116 - jumpeq LittlerootTown_EventScript_14D72F + goto_if_eq LittlerootTown_EventScript_14D72F checkflag 82 - jumpeq LittlerootTown_EventScript_14D722 + goto_if_eq LittlerootTown_EventScript_14D722 compare 0x4050, 0 - jumpif 5, LittlerootTown_EventScript_14D708 + goto_if 5, LittlerootTown_EventScript_14D708 msgbox LittlerootTown_Text_16ACEB, 4 release end LittlerootTown_EventScript_14D708:: @ 814D708 msgbox LittlerootTown_Text_16AD82, 4 - closebutton - move 1, LittlerootTown_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LittlerootTown_Movement_1A083D + waitmovement 0 setvar 0x4050, 2 release end @@ -219,22 +219,22 @@ LittlerootTown_EventScript_14D72F:: @ 814D72F LittlerootTown_EventScript_14D739:: @ 814D739 lockall - move 1, LittlerootTown_Movement_14D779 - waitmove 0 + applymovement 1, LittlerootTown_Movement_14D779 + waitmovement 0 call LittlerootTown_EventScript_14D755 - move 1, LittlerootTown_Movement_14D789 - waitmove 0 + applymovement 1, LittlerootTown_Movement_14D789 + waitmovement 0 releaseall end LittlerootTown_EventScript_14D755:: @ 814D755 msgbox LittlerootTown_Text_16ACEB, 4 - closebutton - move 1, LittlerootTown_Movement_14D787 - move 255, LittlerootTown_Movement_14D793 - waitmove 0 + closemessage + applymovement 1, LittlerootTown_Movement_14D787 + applymovement 255, LittlerootTown_Movement_14D793 + waitmovement 0 msgbox LittlerootTown_Text_16AD3C, 4 - closebutton + closemessage return LittlerootTown_Movement_14D779:: @ 814D779 @@ -277,11 +277,11 @@ LittlerootTown_Movement_14D793:: @ 814D793 LittlerootTown_EventScript_14D797:: @ 814D797 lockall - move 1, LittlerootTown_Movement_14D7B3 - waitmove 0 + applymovement 1, LittlerootTown_Movement_14D7B3 + waitmovement 0 call LittlerootTown_EventScript_14D755 - move 1, LittlerootTown_Movement_14D7C0 - waitmove 0 + applymovement 1, LittlerootTown_Movement_14D7C0 + waitmovement 0 releaseall end @@ -311,14 +311,14 @@ LittlerootTown_Movement_14D7C0:: @ 814D7C0 LittlerootTown_EventScript_14D7C7:: @ 814D7C7 lockall - move 1, LittlerootTown_Movement_1A0843 - waitmove 0 - move 255, LittlerootTown_Movement_1A083F - waitmove 0 + applymovement 1, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 msgbox LittlerootTown_Text_16AD82, 4 - closebutton - move 1, LittlerootTown_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LittlerootTown_Movement_1A083D + waitmovement 0 setvar 0x4050, 2 releaseall end @@ -333,11 +333,11 @@ LittlerootTown_EventScript_14D7FF:: @ 814D7FF LittlerootTown_EventScript_14D808:: @ 814D808 lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D822 + call_if 1, LittlerootTown_EventScript_14D822 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D82B + call_if 1, LittlerootTown_EventScript_14D82B releaseall end @@ -351,11 +351,11 @@ LittlerootTown_EventScript_14D82B:: @ 814D82B LittlerootTown_EventScript_14D834:: @ 814D834 lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D84E + call_if 1, LittlerootTown_EventScript_14D84E compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D857 + call_if 1, LittlerootTown_EventScript_14D857 releaseall end @@ -370,66 +370,66 @@ LittlerootTown_EventScript_14D857:: @ 814D857 LittlerootTown_EventScript_14D860:: @ 814D860 lockall setvar 0x8008, 0 - movesprite 4, 10, 9 - jump LittlerootTown_EventScript_14D8B6 + setobjectxy 4, 10, 9 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D873:: @ 814D873 lockall setvar 0x8008, 1 - movesprite 4, 11, 9 - jump LittlerootTown_EventScript_14D8B6 + setobjectxy 4, 11, 9 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D886:: @ 814D886 lockall setvar 0x8008, 2 - jump LittlerootTown_EventScript_14D8B6 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D892:: @ 814D892 lockall setvar 0x8008, 3 - jump LittlerootTown_EventScript_14D8B6 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D89E:: @ 814D89E lockall setvar 0x8008, 4 - jump LittlerootTown_EventScript_14D8B6 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D8AA:: @ 814D8AA lockall setvar 0x8008, 5 - jump LittlerootTown_EventScript_14D8B6 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D8B6:: @ 814D8B6 - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D93C + call_if 1, LittlerootTown_EventScript_14D93C compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D947 - checkgender + call_if 1, LittlerootTown_EventScript_14D947 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D926 + call_if 1, LittlerootTown_EventScript_14D926 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D931 + call_if 1, LittlerootTown_EventScript_14D931 msgbox LittlerootTown_Text_16A8EE, 4 - closebutton - checkgender + closemessage + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D952 + call_if 1, LittlerootTown_EventScript_14D952 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D995 + call_if 1, LittlerootTown_EventScript_14D995 call LittlerootTown_EventScript_14DD38 - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14DAAA + call_if 1, LittlerootTown_EventScript_14DAAA compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14DAED - jump LittlerootTown_EventScript_14DD2B + call_if 1, LittlerootTown_EventScript_14DAED + goto LittlerootTown_EventScript_14DD2B end LittlerootTown_EventScript_14D926:: @ 814D926 @@ -443,249 +443,249 @@ LittlerootTown_EventScript_14D931:: @ 814D931 return LittlerootTown_EventScript_14D93C:: @ 814D93C - move 4, LittlerootTown_Movement_1A0843 - waitmove 0 + applymovement 4, LittlerootTown_Movement_1A0843 + waitmovement 0 return LittlerootTown_EventScript_14D947:: @ 814D947 - move 4, LittlerootTown_Movement_1A083F - waitmove 0 + applymovement 4, LittlerootTown_Movement_1A083F + waitmovement 0 return LittlerootTown_EventScript_14D952:: @ 814D952 compare 0x8008, 0 - callif 1, LittlerootTown_EventScript_14D9D8 + call_if 1, LittlerootTown_EventScript_14D9D8 compare 0x8008, 1 - callif 1, LittlerootTown_EventScript_14D9ED + call_if 1, LittlerootTown_EventScript_14D9ED compare 0x8008, 2 - callif 1, LittlerootTown_EventScript_14DA02 + call_if 1, LittlerootTown_EventScript_14DA02 compare 0x8008, 3 - callif 1, LittlerootTown_EventScript_14DA17 + call_if 1, LittlerootTown_EventScript_14DA17 compare 0x8008, 4 - callif 1, LittlerootTown_EventScript_14DA2C + call_if 1, LittlerootTown_EventScript_14DA2C compare 0x8008, 5 - callif 1, LittlerootTown_EventScript_14DA41 + call_if 1, LittlerootTown_EventScript_14DA41 return LittlerootTown_EventScript_14D995:: @ 814D995 compare 0x8008, 0 - callif 1, LittlerootTown_EventScript_14D9D8 + call_if 1, LittlerootTown_EventScript_14D9D8 compare 0x8008, 1 - callif 1, LittlerootTown_EventScript_14D9ED + call_if 1, LittlerootTown_EventScript_14D9ED compare 0x8008, 2 - callif 1, LittlerootTown_EventScript_14DA56 + call_if 1, LittlerootTown_EventScript_14DA56 compare 0x8008, 3 - callif 1, LittlerootTown_EventScript_14DA6B + call_if 1, LittlerootTown_EventScript_14DA6B compare 0x8008, 4 - callif 1, LittlerootTown_EventScript_14DA80 + call_if 1, LittlerootTown_EventScript_14DA80 compare 0x8008, 5 - callif 1, LittlerootTown_EventScript_14DA95 + call_if 1, LittlerootTown_EventScript_14DA95 return LittlerootTown_EventScript_14D9D8:: @ 814D9D8 - move 255, LittlerootTown_Movement_1A0845 - waitmove 0 - move 4, LittlerootTown_Movement_14DC76 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0845 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC76 + waitmovement 0 return LittlerootTown_EventScript_14D9ED:: @ 814D9ED - move 255, LittlerootTown_Movement_1A0845 - waitmove 0 - move 4, LittlerootTown_Movement_14DC7D - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0845 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC7D + waitmovement 0 return LittlerootTown_EventScript_14DA02:: @ 814DA02 - move 255, LittlerootTown_Movement_1A083F - waitmove 0 - move 4, LittlerootTown_Movement_14DC84 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC84 + waitmovement 0 return LittlerootTown_EventScript_14DA17:: @ 814DA17 - move 255, LittlerootTown_Movement_1A083F - waitmove 0 - move 4, LittlerootTown_Movement_14DC89 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC89 + waitmovement 0 return LittlerootTown_EventScript_14DA2C:: @ 814DA2C - move 255, LittlerootTown_Movement_1A083F - waitmove 0 - move 4, LittlerootTown_Movement_14DC8F - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC8F + waitmovement 0 return LittlerootTown_EventScript_14DA41:: @ 814DA41 - move 255, LittlerootTown_Movement_1A083F - waitmove 0 - move 4, LittlerootTown_Movement_14DC92 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC92 + waitmovement 0 return LittlerootTown_EventScript_14DA56:: @ 814DA56 - move 255, LittlerootTown_Movement_1A0843 - waitmove 0 - move 4, LittlerootTown_Movement_14DC96 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC96 + waitmovement 0 return LittlerootTown_EventScript_14DA6B:: @ 814DA6B - move 255, LittlerootTown_Movement_1A0843 - waitmove 0 - move 4, LittlerootTown_Movement_14DC9A - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC9A + waitmovement 0 return LittlerootTown_EventScript_14DA80:: @ 814DA80 - move 255, LittlerootTown_Movement_1A0843 - waitmove 0 - move 4, LittlerootTown_Movement_14DC9D - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC9D + waitmovement 0 return LittlerootTown_EventScript_14DA95:: @ 814DA95 - move 255, LittlerootTown_Movement_1A0843 - waitmove 0 - move 4, LittlerootTown_Movement_14DCA3 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DCA3 + waitmovement 0 return LittlerootTown_EventScript_14DAAA:: @ 814DAAA compare 0x8008, 0 - callif 1, LittlerootTown_EventScript_14DB30 + call_if 1, LittlerootTown_EventScript_14DB30 compare 0x8008, 1 - callif 1, LittlerootTown_EventScript_14DB3B + call_if 1, LittlerootTown_EventScript_14DB3B compare 0x8008, 2 - callif 1, LittlerootTown_EventScript_14DB46 + call_if 1, LittlerootTown_EventScript_14DB46 compare 0x8008, 3 - callif 1, LittlerootTown_EventScript_14DB6C + call_if 1, LittlerootTown_EventScript_14DB6C compare 0x8008, 4 - callif 1, LittlerootTown_EventScript_14DB92 + call_if 1, LittlerootTown_EventScript_14DB92 compare 0x8008, 5 - callif 1, LittlerootTown_EventScript_14DBB8 + call_if 1, LittlerootTown_EventScript_14DBB8 return LittlerootTown_EventScript_14DAED:: @ 814DAED compare 0x8008, 0 - callif 1, LittlerootTown_EventScript_14DB30 + call_if 1, LittlerootTown_EventScript_14DB30 compare 0x8008, 1 - callif 1, LittlerootTown_EventScript_14DB3B + call_if 1, LittlerootTown_EventScript_14DB3B compare 0x8008, 2 - callif 1, LittlerootTown_EventScript_14DBDE + call_if 1, LittlerootTown_EventScript_14DBDE compare 0x8008, 3 - callif 1, LittlerootTown_EventScript_14DC04 + call_if 1, LittlerootTown_EventScript_14DC04 compare 0x8008, 4 - callif 1, LittlerootTown_EventScript_14DC2A + call_if 1, LittlerootTown_EventScript_14DC2A compare 0x8008, 5 - callif 1, LittlerootTown_EventScript_14DC50 + call_if 1, LittlerootTown_EventScript_14DC50 return LittlerootTown_EventScript_14DB30:: @ 814DB30 - move 4, LittlerootTown_Movement_14DCA8 - waitmove 0 + applymovement 4, LittlerootTown_Movement_14DCA8 + waitmovement 0 return LittlerootTown_EventScript_14DB3B:: @ 814DB3B - move 4, LittlerootTown_Movement_14DCAE - waitmove 0 + applymovement 4, LittlerootTown_Movement_14DCAE + waitmovement 0 return LittlerootTown_EventScript_14DB46:: @ 814DB46 - move 4, LittlerootTown_Movement_14DCB4 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCB4 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DB6C:: @ 814DB6C - move 4, LittlerootTown_Movement_14DCBA - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCBA + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DB92:: @ 814DB92 - move 4, LittlerootTown_Movement_14DCC1 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCC1 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DBB8:: @ 814DBB8 - move 4, LittlerootTown_Movement_14DCC5 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCC5 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DBDE:: @ 814DBDE - move 4, LittlerootTown_Movement_14DCCA - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCCA + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DC04:: @ 814DC04 - move 4, LittlerootTown_Movement_14DCCF - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCCF + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DC2A:: @ 814DC2A - move 4, LittlerootTown_Movement_14DCD3 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCD3 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DC50:: @ 814DC50 - move 4, LittlerootTown_Movement_14DCDA - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCDA + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_Movement_14DC76:: @ 814DC76 @@ -841,26 +841,26 @@ LittlerootTown_Movement_14DCE0:: @ 814DCE0 LittlerootTown_EventScript_14DCE2:: @ 814DCE2 lock faceplayer - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D926 + call_if 1, LittlerootTown_EventScript_14D926 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D931 + call_if 1, LittlerootTown_EventScript_14D931 call LittlerootTown_EventScript_14DD38 - move 4, LittlerootTown_Movement_1A0841 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange - jump LittlerootTown_EventScript_14DD2B + applymovement 4, LittlerootTown_Movement_1A0841 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim + goto LittlerootTown_EventScript_14DD2B end LittlerootTown_EventScript_14DD2B:: @ 814DD2B - disappear 4 + removeobject 4 setflag 2144 setvar 0x4050, 4 release @@ -868,13 +868,13 @@ LittlerootTown_EventScript_14DD2B:: @ 814DD2B LittlerootTown_EventScript_14DD38:: @ 814DD38 msgbox LittlerootTown_Text_16A8FD, 4 - fanfare 370 + playfanfare 370 message LittlerootTown_Text_16AA32 waitfanfare - waittext + waitmessage setflag 274 msgbox LittlerootTown_Text_16AA5C, 4 msgbox LittlerootTown_Text_16AB10, 4 - closebutton - pause 30 + closemessage + delay 30 return diff --git a/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc b/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc index 69206566a..04256cacb 100644 --- a/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc +++ b/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc @@ -6,9 +6,9 @@ LittlerootTown_BrendansHouse_1F_MapScripts:: @ 815263B LittlerootTown_BrendansHouse_1F_MapScript1_15264B:: @ 815264B compare 0x4092, 6 - callif 0, LittlerootTown_BrendansHouse_1F_EventScript_152660 + call_if 0, LittlerootTown_BrendansHouse_1F_EventScript_152660 checkflag 274 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_152673 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_152673 end LittlerootTown_BrendansHouse_1F_EventScript_152660:: @ 8152660 @@ -17,9 +17,9 @@ LittlerootTown_BrendansHouse_1F_EventScript_152660:: @ 8152660 return LittlerootTown_BrendansHouse_1F_EventScript_152673:: @ 8152673 - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152680 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152680 return LittlerootTown_BrendansHouse_1F_EventScript_152680:: @ 8152680 @@ -28,26 +28,26 @@ LittlerootTown_BrendansHouse_1F_EventScript_152680:: @ 8152680 LittlerootTown_BrendansHouse_1F_MapScript1_15268A:: @ 815268A compare 0x4092, 3 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526C4 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526C4 compare 0x4092, 5 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526AC + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526AC compare 0x4092, 6 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526B8 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526B8 end LittlerootTown_BrendansHouse_1F_EventScript_1526AC:: @ 81526AC - movespriteperm 1, 8, 4 - spritebehave 1, 7 + setobjectxyperm 1, 8, 4 + setobjectmovementtype 1, 7 return LittlerootTown_BrendansHouse_1F_EventScript_1526B8:: @ 81526B8 - movespriteperm 1, 4, 5 - spritebehave 1, 7 + setobjectxyperm 1, 4, 5 + setobjectmovementtype 1, 7 return LittlerootTown_BrendansHouse_1F_EventScript_1526C4:: @ 81526C4 - movespriteperm 1, 9, 8 - spritebehave 1, 7 + setobjectxyperm 1, 9, 8 + setobjectmovementtype 1, 7 return LittlerootTown_BrendansHouse_1F_MapScript2_1526D0:: @ 81526D0 @@ -61,10 +61,10 @@ LittlerootTown_BrendansHouse_1F_MapScript2_1526D0:: @ 81526D0 LittlerootTown_BrendansHouse_1F_EventScript_1526FA:: @ 81526FA lockall msgbox LittlerootTown_BrendansHouse_1F_Text_172574, 4 - closebutton - move 255, LittlerootTown_BrendansHouse_1F_Movement_152720 - move 1, LittlerootTown_BrendansHouse_1F_Movement_152720 - waitmove 0 + closemessage + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_152720 + applymovement 1, LittlerootTown_BrendansHouse_1F_Movement_152720 + waitmovement 0 warp LittlerootTown_BrendansHouse_2F, 255, 7, 1 waitstate releaseall @@ -78,26 +78,26 @@ LittlerootTown_BrendansHouse_1F_EventScript_152722:: @ 8152722 lockall setvar 0x8004, 1 setvar 0x8005, 0 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B6956 + goto LittlerootTown_BrendansHouse_1F_EventScript_1B6956 end LittlerootTown_BrendansHouse_1F_EventScript_152733:: @ 8152733 lockall setvar 0x8004, 0 setvar 0x8005, 1 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF + goto LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF end LittlerootTown_BrendansHouse_1F_EventScript_152744:: @ 8152744 lockall - playsfx 21 - move 4, LittlerootTown_BrendansHouse_1F_Movement_1A0833 - waitmove 0 - move 4, LittlerootTown_BrendansHouse_1F_Movement_1A0835 - waitmove 0 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F - move 4, LittlerootTown_BrendansHouse_1F_Movement_152782 - waitmove 0 + playse 21 + applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_1A0833 + waitmovement 0 + applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_1A0835 + waitmovement 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F + applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_152782 + waitmovement 0 special GetRivalSonDaughterString msgbox LittlerootTown_BrendansHouse_1F_Text_1730C2, 4 setflag 87 @@ -118,7 +118,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_152789:: @ 8152789 lockall setvar 0x8004, 1 setvar 0x8005, 0 - move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A083F - waitmove 0 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B69B7 + applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A083F + waitmovement 0 + goto LittlerootTown_BrendansHouse_1F_EventScript_1B69B7 end diff --git a/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc b/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc index 0803cd512..8ff7f8b81 100644 --- a/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc +++ b/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc @@ -5,16 +5,16 @@ LittlerootTown_BrendansHouse_2F_MapScripts:: @ 81527A4 LittlerootTown_BrendansHouse_2F_MapScript1_1527AF:: @ 81527AF checkflag 130 - callif 0, LittlerootTown_BrendansHouse_2F_EventScript_1527CE + call_if 0, LittlerootTown_BrendansHouse_2F_EventScript_1527CE compare 0x4092, 4 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6950 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6950 call LittlerootTown_BrendansHouse_2F_EventScript_1A2F3D setvar 0x4089, 0 end LittlerootTown_BrendansHouse_2F_EventScript_1527CE:: @ 81527CE - movespriteperm 1, 1, 2 - spritebehave 1, 7 + setobjectxyperm 1, 1, 2 + setobjectmovementtype 1, 7 return LittlerootTown_BrendansHouse_2F_MapScript2_1527DA:: @ 81527DA @@ -22,18 +22,18 @@ LittlerootTown_BrendansHouse_2F_MapScript2_1527DA:: @ 81527DA .2byte 0 LittlerootTown_BrendansHouse_2F_EventScript_1527E4:: @ 81527E4 - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_1A2F68 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_1A2F68 end @ 81527F1 lockall - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_15280A + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_15280A compare RESULT, 1 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152814 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152814 end LittlerootTown_BrendansHouse_2F_EventScript_15280A:: @ 815280A @@ -50,17 +50,17 @@ gUnknown_0815281E:: @ 815281E LittlerootTown_BrendansHouse_2F_EventScript_15281E:: @ 815281E lockall - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152837 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152837 compare RESULT, 1 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_15285D + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_15285D end LittlerootTown_BrendansHouse_2F_EventScript_152837:: @ 8152837 setvar 0x8004, 1 special DoPCTurnOnEffect - playsfx SE_PC_ON + playse SE_PC_ON msgbox LittlerootTown_BrendansHouse_2F_Text_1A10D6, 4 special BedroomPC waitstate @@ -69,7 +69,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_152837:: @ 8152837 gBrendanHouse_TurnPCOff:: @ 8152850 setvar 0x8004, 1 - playsfx SE_PC_OFF + playse SE_PC_OFF special DoPCTurnOffEffect releaseall end diff --git a/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc b/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc index 5f7f20d63..14c7f5d8a 100644 --- a/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc +++ b/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc @@ -6,9 +6,9 @@ LittlerootTown_MaysHouse_1F_MapScripts:: @ 8152879 LittlerootTown_MaysHouse_1F_MapScript1_152889:: @ 8152889 compare 0x4092, 6 - callif 0, LittlerootTown_MaysHouse_1F_EventScript_15289E + call_if 0, LittlerootTown_MaysHouse_1F_EventScript_15289E checkflag 274 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528B1 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528B1 end LittlerootTown_MaysHouse_1F_EventScript_15289E:: @ 815289E @@ -17,9 +17,9 @@ LittlerootTown_MaysHouse_1F_EventScript_15289E:: @ 815289E return LittlerootTown_MaysHouse_1F_EventScript_1528B1:: @ 81528B1 - checkgender + checkplayergender compare RESULT, 1 - jumpeq LittlerootTown_MaysHouse_1F_EventScript_1528BE + goto_if_eq LittlerootTown_MaysHouse_1F_EventScript_1528BE return LittlerootTown_MaysHouse_1F_EventScript_1528BE:: @ 81528BE @@ -28,26 +28,26 @@ LittlerootTown_MaysHouse_1F_EventScript_1528BE:: @ 81528BE LittlerootTown_MaysHouse_1F_MapScript1_1528C8:: @ 81528C8 compare 0x4092, 3 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_152902 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_152902 compare 0x4092, 5 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528EA + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528EA compare 0x4092, 6 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528F6 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528F6 end LittlerootTown_MaysHouse_1F_EventScript_1528EA:: @ 81528EA - movespriteperm 1, 2, 4 - spritebehave 1, 7 + setobjectxyperm 1, 2, 4 + setobjectmovementtype 1, 7 return LittlerootTown_MaysHouse_1F_EventScript_1528F6:: @ 81528F6 - movespriteperm 1, 6, 5 - spritebehave 1, 7 + setobjectxyperm 1, 6, 5 + setobjectmovementtype 1, 7 return LittlerootTown_MaysHouse_1F_EventScript_152902:: @ 8152902 - movespriteperm 1, 1, 8 - spritebehave 1, 7 + setobjectxyperm 1, 1, 8 + setobjectmovementtype 1, 7 return LittlerootTown_MaysHouse_1F_MapScript2_15290E:: @ 815290E @@ -61,10 +61,10 @@ LittlerootTown_MaysHouse_1F_MapScript2_15290E:: @ 815290E LittlerootTown_MaysHouse_1F_EventScript_152938:: @ 8152938 lockall msgbox LittlerootTown_MaysHouse_1F_Text_172574, 4 - closebutton - move 255, LittlerootTown_MaysHouse_1F_Movement_15295E - move 1, LittlerootTown_MaysHouse_1F_Movement_15295E - waitmove 0 + closemessage + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_15295E + applymovement 1, LittlerootTown_MaysHouse_1F_Movement_15295E + waitmovement 0 warp LittlerootTown_MaysHouse_2F, 255, 1, 1 waitstate releaseall @@ -78,26 +78,26 @@ LittlerootTown_MaysHouse_1F_EventScript_152960:: @ 8152960 lockall setvar 0x8004, 1 setvar 0x8005, 1 - jump LittlerootTown_MaysHouse_1F_EventScript_1B6956 + goto LittlerootTown_MaysHouse_1F_EventScript_1B6956 end LittlerootTown_MaysHouse_1F_EventScript_152971:: @ 8152971 lockall setvar 0x8004, 1 setvar 0x8005, 1 - jump LittlerootTown_MaysHouse_1F_EventScript_1B6B2E + goto LittlerootTown_MaysHouse_1F_EventScript_1B6B2E end LittlerootTown_MaysHouse_1F_EventScript_152982:: @ 8152982 lockall - playsfx 21 - move 4, LittlerootTown_MaysHouse_1F_Movement_1A0833 - waitmove 0 - move 4, LittlerootTown_MaysHouse_1F_Movement_1A0835 - waitmove 0 - move 255, LittlerootTown_MaysHouse_1F_Movement_1A0843 - move 4, LittlerootTown_MaysHouse_1F_Movement_1529C0 - waitmove 0 + playse 21 + applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1A0833 + waitmovement 0 + applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1A0835 + waitmovement 0 + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1A0843 + applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1529C0 + waitmovement 0 special GetRivalSonDaughterString msgbox LittlerootTown_MaysHouse_1F_Text_1730C2, 4 setflag 87 @@ -116,11 +116,11 @@ LittlerootTown_MaysHouse_1F_Movement_1529C0:: @ 81529C0 @ 81529C7 lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1529E1 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1529E1 compare RESULT, 1 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1529E2 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1529E2 releaseall end @@ -136,11 +136,11 @@ LittlerootTown_MaysHouse_1F_EventScript_1529EB:: @ 81529EB lock faceplayer checkflag 130 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A21 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A21 checkflag 301 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A17 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A17 compare 0x408d, 3 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A2B + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A2B special GetRivalSonDaughterString msgbox LittlerootTown_BrendansHouse_1F_Text_1731C6, 4 release @@ -165,7 +165,7 @@ LittlerootTown_MaysHouse_1F_EventScript_152A35:: @ 8152A35 lockall setvar 0x8004, 1 setvar 0x8005, 1 - move 0x8004, LittlerootTown_MaysHouse_1F_Movement_1A0843 - waitmove 0 - jump LittlerootTown_MaysHouse_1F_EventScript_1B69B7 + applymovement 0x8004, LittlerootTown_MaysHouse_1F_Movement_1A0843 + waitmovement 0 + goto LittlerootTown_MaysHouse_1F_EventScript_1B69B7 end diff --git a/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc b/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc index 85a41caff..68bdf0fcb 100644 --- a/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc +++ b/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc @@ -5,16 +5,16 @@ LittlerootTown_MaysHouse_2F_MapScripts:: @ 8152A50 LittlerootTown_MaysHouse_2F_MapScript1_152A5B:: @ 8152A5B checkflag 130 - callif 0, LittlerootTown_MaysHouse_2F_EventScript_152A7A + call_if 0, LittlerootTown_MaysHouse_2F_EventScript_152A7A compare 0x4092, 4 - callif 1, LittlerootTown_MaysHouse_2F_EventScript_1B6950 + call_if 1, LittlerootTown_MaysHouse_2F_EventScript_1B6950 call LittlerootTown_MaysHouse_2F_EventScript_1A2F3D setvar 0x4089, 0 end LittlerootTown_MaysHouse_2F_EventScript_152A7A:: @ 8152A7A - movespriteperm 1, 7, 2 - spritebehave 1, 7 + setobjectxyperm 1, 7, 2 + setobjectmovementtype 1, 7 return LittlerootTown_MaysHouse_2F_MapScript2_152A86:: @ 8152A86 @@ -22,114 +22,114 @@ LittlerootTown_MaysHouse_2F_MapScript2_152A86:: @ 8152A86 .2byte 0 LittlerootTown_MaysHouse_2F_EventScript_152A90:: @ 8152A90 - checkgender + checkplayergender compare RESULT, 1 - jumpeq LittlerootTown_MaysHouse_2F_EventScript_1A2F68 + goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_1A2F68 end LittlerootTown_BrendansHouse_2F_EventScript_152A9D:: @ 8152A9D LittlerootTown_MaysHouse_2F_EventScript_152A9D:: @ 8152A9D lockall checkflag 292 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152BB5 - checkgender + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152BB5 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152AD4 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152AD4 compare RESULT, 1 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B4A - playsfx 9 - disappear LAST_TALKED + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B4A + playse 9 + removeobject LAST_TALKED setvar 0x408d, 3 setvar 0x4050, 1 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm releaseall end LittlerootTown_BrendansHouse_2F_EventScript_152AD4:: @ 8152AD4 msgbox LittlerootTown_BrendansHouse_2F_Text_17337E, 4 - playmusic 415, 1 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 - waitmove 0 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833 - waitmove 0 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835 - waitmove 0 + playbgm 415, 1 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 + waitmovement 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833 + waitmovement 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_2F_Text_1733AF, 4 - closebutton + closemessage compare FACING, 4 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B29 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B29 compare FACING, 2 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B34 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B34 compare FACING, 3 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B3F + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B3F return LittlerootTown_BrendansHouse_2F_EventScript_152B29:: @ 8152B29 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C11 - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C11 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152B34:: @ 8152B34 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152B3F:: @ 8152B3F - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152B4A:: @ 8152B4A msgbox LittlerootTown_BrendansHouse_2F_Text_1735C9, 4 - playmusic 421, 1 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 - waitmove 0 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833 - waitmove 0 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835 - waitmove 0 + playbgm 421, 1 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 + waitmovement 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833 + waitmovement 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_2F_Text_1735FC, 4 - closebutton + closemessage compare FACING, 4 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F compare FACING, 2 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F compare FACING, 3 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BAA + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BAA return LittlerootTown_BrendansHouse_2F_EventScript_152B9F:: @ 8152B9F - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C30 - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C30 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152BAA:: @ 8152BAA - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C25 - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C25 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152BB5:: @ 8152BB5 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 - waitmove 0 - checkgender + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 + waitmovement 0 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BDB + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BDB compare RESULT, 1 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BED + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BED setflag 293 releaseall end LittlerootTown_BrendansHouse_2F_EventScript_152BDB:: @ 8152BDB checkflag 293 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152BFF + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152BFF msgbox LittlerootTown_BrendansHouse_2F_Text_1737AE, 4 return LittlerootTown_BrendansHouse_2F_EventScript_152BED:: @ 8152BED checkflag 293 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152C08 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152C08 msgbox LittlerootTown_BrendansHouse_2F_Text_1738F2, 4 return @@ -193,11 +193,11 @@ gUnknown_08152C39:: @ 8152C39 LittlerootTown_MaysHouse_2F_EventScript_152C39:: @ 8152C39 lockall - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_MaysHouse_2F_EventScript_152C52 + goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_152C52 compare RESULT, 1 - jumpeq LittlerootTown_MaysHouse_2F_EventScript_152C5C + goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_152C5C end LittlerootTown_MaysHouse_2F_EventScript_152C52:: @ 8152C52 @@ -208,7 +208,7 @@ LittlerootTown_MaysHouse_2F_EventScript_152C52:: @ 8152C52 LittlerootTown_MaysHouse_2F_EventScript_152C5C:: @ 8152C5C setvar 0x8004, 2 special DoPCTurnOnEffect - playsfx SE_PC_ON + playse SE_PC_ON msgbox LittlerootTown_MaysHouse_2F_Text_1A10D6, 4 special BedroomPC waitstate @@ -217,7 +217,7 @@ LittlerootTown_MaysHouse_2F_EventScript_152C5C:: @ 8152C5C gMayHouse_TurnPCOff:: @ 8152C75 setvar 0x8004, 2 - playsfx SE_PC_OFF + playse SE_PC_OFF special DoPCTurnOffEffect releaseall end diff --git a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc index 94aeadfa6..e7ccd73f6 100644 --- a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc +++ b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc @@ -14,7 +14,7 @@ LittlerootTown_ProfessorBirchsLab_MapScript2_152C9D:: @ 8152C9D .2byte 0 LittlerootTown_ProfessorBirchsLab_EventScript_152CA7:: @ 8152CA7 - spriteface 255, 2 + turnobject 255, 2 end LittlerootTown_ProfessorBirchsLab_MapScript2_152CAC:: @ 8152CAC @@ -24,30 +24,30 @@ LittlerootTown_ProfessorBirchsLab_MapScript2_152CAC:: @ 8152CAC LittlerootTown_ProfessorBirchsLab_EventScript_152CBE:: @ 8152CBE lockall - bufferfirstpoke 0 + getfirstpartypokename 0 message LittlerootTown_ProfessorBirchsLab_Text_173D94 - waittext - fanfare 370 + waitmessage + playfanfare 370 waitfanfare msgbox LittlerootTown_ProfessorBirchsLab_Text_173EF8, 5 compare RESULT, 1 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152CEA + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152CEA compare RESULT, 0 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152CFA + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152CFA end LittlerootTown_ProfessorBirchsLab_EventScript_152CEA:: @ 8152CEA setvar 0x8004, 0 call LittlerootTown_ProfessorBirchsLab_EventScript_1A0678 - jump LittlerootTown_ProfessorBirchsLab_EventScript_152CFA + goto LittlerootTown_ProfessorBirchsLab_EventScript_152CFA end LittlerootTown_ProfessorBirchsLab_EventScript_152CFA:: @ 8152CFA msgbox LittlerootTown_ProfessorBirchsLab_Text_173F3D, 5 compare RESULT, 1 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D19 + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D19 compare RESULT, 0 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B end LittlerootTown_ProfessorBirchsLab_EventScript_152D19:: @ 8152D19 @@ -60,16 +60,16 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D19:: @ 8152D19 LittlerootTown_ProfessorBirchsLab_EventScript_152D2B:: @ 8152D2B msgbox LittlerootTown_ProfessorBirchsLab_Text_174075, 5 compare RESULT, 1 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D19 + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D19 compare RESULT, 0 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B end LittlerootTown_ProfessorBirchsLab_EventScript_152D4A:: @ 8152D4A lockall - move 255, LittlerootTown_ProfessorBirchsLab_Movement_152D5B - waitmove 0 - jump LittlerootTown_ProfessorBirchsLab_EventScript_152DBA + applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_152D5B + waitmovement 0 + goto LittlerootTown_ProfessorBirchsLab_EventScript_152DBA end LittlerootTown_ProfessorBirchsLab_Movement_152D5B:: @ 8152D5B @@ -86,9 +86,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D63:: @ 8152D63 lock faceplayer compare 0x4084, 3 - jumpif 4, LittlerootTown_ProfessorBirchsLab_EventScript_152D90 + goto_if 4, LittlerootTown_ProfessorBirchsLab_EventScript_152D90 checkflag 88 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D86 + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D86 msgbox LittlerootTown_ProfessorBirchsLab_Text_173B29, 4 setflag 88 release @@ -108,9 +108,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D9A:: @ 8152D9A lock faceplayer checkflag 896 - jumpif 0, LittlerootTown_ProfessorBirchsLab_EventScript_1A037F + goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1A037F compare 0x4084, 5 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152E7B + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152E7B msgbox LittlerootTown_ProfessorBirchsLab_Text_1740B4, 4 release end @@ -119,15 +119,15 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152DBA:: @ 8152DBA msgbox LittlerootTown_ProfessorBirchsLab_Text_17411F, 4 call LittlerootTown_ProfessorBirchsLab_EventScript_152E6D msgbox LittlerootTown_ProfessorBirchsLab_Text_174248, 4 - move 3, LittlerootTown_ProfessorBirchsLab_Movement_152E97 - waitmove 0 - move 255, LittlerootTown_ProfessorBirchsLab_Movement_1A0843 - waitmove 0 - checkgender + applymovement 3, LittlerootTown_ProfessorBirchsLab_Movement_152E97 + waitmovement 0 + applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_1A0843 + waitmovement 0 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E13 + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E13 compare RESULT, 1 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E40 + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E40 setvar 0x4084, 5 setflag 116 setvar 0x4051, 1 @@ -140,7 +140,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E13:: @ 8152E13 msgbox LittlerootTown_ProfessorBirchsLab_Text_1743D4, 4 giveitem ITEM_POKE_BALL, 5 compare RESULT, 0 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E85 + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E85 msgbox LittlerootTown_ProfessorBirchsLab_Text_17443D, 4 setvar RESULT, 0 return @@ -149,16 +149,16 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E40:: @ 8152E40 msgbox LittlerootTown_ProfessorBirchsLab_Text_17453C, 4 giveitem ITEM_POKE_BALL, 5 compare RESULT, 0 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E8E + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E8E msgbox LittlerootTown_ProfessorBirchsLab_Text_17458C, 4 setvar RESULT, 1 return LittlerootTown_ProfessorBirchsLab_EventScript_152E6D:: @ 8152E6D - fanfare 370 + playfanfare 370 message LittlerootTown_ProfessorBirchsLab_Text_17422F waitfanfare - waittext + waitmessage setflag 2049 return @@ -187,11 +187,11 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E9A:: @ 8152E9A LittlerootTown_ProfessorBirchsLab_EventScript_152EA3:: @ 8152EA3 lock faceplayer - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EBE + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EBE compare RESULT, 1 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EC7 + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EC7 release end diff --git a/data/scripts/maps/MagmaHideout_B1F.inc b/data/scripts/maps/MagmaHideout_B1F.inc index 0304181fb..780eea4f5 100644 --- a/data/scripts/maps/MagmaHideout_B1F.inc +++ b/data/scripts/maps/MagmaHideout_B1F.inc @@ -4,9 +4,9 @@ MagmaHideout_B1F_MapScripts:: @ 815F2A8 MagmaHideout_B1F_MapScript1_15F2AE:: @ 815F2AE checkflag 2145 - callif 1, MagmaHideout_B1F_EventScript_15F2B8 + call_if 1, MagmaHideout_B1F_EventScript_15F2B8 end MagmaHideout_B1F_EventScript_15F2B8:: @ 815F2B8 - disappear LAST_TALKED + removeobject LAST_TALKED return diff --git a/data/scripts/maps/MauvilleCity.inc b/data/scripts/maps/MauvilleCity.inc index 1b2827f2a..5c93aa252 100644 --- a/data/scripts/maps/MauvilleCity.inc +++ b/data/scripts/maps/MauvilleCity.inc @@ -9,7 +9,7 @@ MauvilleCity_MapScript1_14C038:: @ 814C038 clearflag 99 setvar 0x4093, 0 checkflag 209 - callif 1, MauvilleCity_EventScript_14C053 + call_if 1, MauvilleCity_EventScript_14C053 end MauvilleCity_EventScript_14C053:: @ 814C053 @@ -53,7 +53,7 @@ MauvilleCity_EventScript_14C0A2:: @ 814C0A2 lock faceplayer checkflag 98 - jumpeq MauvilleCity_EventScript_14C0BA + goto_if_eq MauvilleCity_EventScript_14C0BA msgbox MauvilleCity_Text_16674A, 4 setflag 98 release @@ -68,94 +68,94 @@ MauvilleCity_EventScript_14C0C4:: @ 814C0C4 lock faceplayer checkflag 284 - jumpeq MauvilleCity_EventScript_14C0E4 + goto_if_eq MauvilleCity_EventScript_14C0E4 msgbox MauvilleCity_Text_165B76, 4 - closebutton - move 7, MauvilleCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 7, MauvilleCity_Movement_1A083D + waitmovement 0 release end MauvilleCity_EventScript_14C0E4:: @ 814C0E4 msgbox MauvilleCity_Text_165E45, 4 - closebutton - move 7, MauvilleCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 7, MauvilleCity_Movement_1A083D + waitmovement 0 release end MauvilleCity_EventScript_14C0F9:: @ 814C0F9 lockall checkflag 284 - jumpeq MauvilleCity_EventScript_14C292 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 + goto_if_eq MauvilleCity_EventScript_14C292 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 msgbox MauvilleCity_Text_165BE3, 4 msgbox MauvilleCity_Text_165C57, 4 msgbox MauvilleCity_Text_165D01, 4 - move 6, MauvilleCity_Movement_1A0839 - waitmove 0 - playsfx 21 - move 6, MauvilleCity_Movement_1A0833 - waitmove 0 - move 6, MauvilleCity_Movement_1A0835 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0839 + waitmovement 0 + playse 21 + applymovement 6, MauvilleCity_Movement_1A0833 + waitmovement 0 + applymovement 6, MauvilleCity_Movement_1A0835 + waitmovement 0 msgbox MauvilleCity_Text_165D50, 5 - jump MauvilleCity_EventScript_14C154 + goto MauvilleCity_EventScript_14C154 end MauvilleCity_EventScript_14C154:: @ 814C154 compare RESULT, 1 - callif 1, MauvilleCity_EventScript_14C23C + call_if 1, MauvilleCity_EventScript_14C23C compare RESULT, 0 - jumpeq MauvilleCity_EventScript_14C285 - closebutton + goto_if_eq MauvilleCity_EventScript_14C285 + closemessage switch FACING case 2, MauvilleCity_EventScript_14C187 case 4, MauvilleCity_EventScript_14C1D9 end MauvilleCity_EventScript_14C187:: @ 814C187 - move 6, MauvilleCity_Movement_14C2AA - move 7, MauvilleCity_Movement_14C2CC - waitmove 0 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 - pause 30 - move 7, MauvilleCity_Movement_14C2D8 - waitmove 0 - move 255, MauvilleCity_Movement_1A0845 - waitmove 0 + applymovement 6, MauvilleCity_Movement_14C2AA + applymovement 7, MauvilleCity_Movement_14C2CC + waitmovement 0 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 + delay 30 + applymovement 7, MauvilleCity_Movement_14C2D8 + waitmovement 0 + applymovement 255, MauvilleCity_Movement_1A0845 + waitmovement 0 msgbox MauvilleCity_Text_1660FA, 4 - closebutton - move 6, MauvilleCity_Movement_14C2B6 - move 7, MauvilleCity_Movement_14C2DF - waitmove 0 - jump MauvilleCity_EventScript_14C22B + closemessage + applymovement 6, MauvilleCity_Movement_14C2B6 + applymovement 7, MauvilleCity_Movement_14C2DF + waitmovement 0 + goto MauvilleCity_EventScript_14C22B end MauvilleCity_EventScript_14C1D9:: @ 814C1D9 - move 6, MauvilleCity_Movement_14C2B0 - move 7, MauvilleCity_Movement_14C2D2 - waitmove 0 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 - pause 30 - move 7, MauvilleCity_Movement_14C2DC - waitmove 0 - move 255, MauvilleCity_Movement_1A0845 - waitmove 0 + applymovement 6, MauvilleCity_Movement_14C2B0 + applymovement 7, MauvilleCity_Movement_14C2D2 + waitmovement 0 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 + delay 30 + applymovement 7, MauvilleCity_Movement_14C2DC + waitmovement 0 + applymovement 255, MauvilleCity_Movement_1A0845 + waitmovement 0 msgbox MauvilleCity_Text_1660FA, 4 - closebutton - move 6, MauvilleCity_Movement_14C2C1 - move 7, MauvilleCity_Movement_14C2E8 - waitmove 0 - jump MauvilleCity_EventScript_14C22B + closemessage + applymovement 6, MauvilleCity_Movement_14C2C1 + applymovement 7, MauvilleCity_Movement_14C2E8 + waitmovement 0 + goto MauvilleCity_EventScript_14C22B end MauvilleCity_EventScript_14C22B:: @ 814C22B - disappear 6 - disappear 7 + removeobject 6 + removeobject 7 clearflag 806 clearflag 809 setflag 190 @@ -165,14 +165,14 @@ MauvilleCity_EventScript_14C22B:: @ 814C22B MauvilleCity_EventScript_14C23C:: @ 814C23C msgbox MauvilleCity_Text_165F0D, 4 trainerbattle 3, OPPONENT_WALLY_2, 0, MauvilleCity_Text_165F38 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 msgbox MauvilleCity_Text_165F85, 4 - move 6, MauvilleCity_Movement_1A0839 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0839 + waitmovement 0 msgbox MauvilleCity_Text_165FB3, 4 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 msgbox MauvilleCity_Text_166050, 4 return @@ -183,10 +183,10 @@ MauvilleCity_EventScript_14C285:: @ 814C285 end MauvilleCity_EventScript_14C292:: @ 814C292 - move 6, MauvilleCity_Movement_1A0839 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0839 + waitmovement 0 msgbox MauvilleCity_Text_165EE2, 5 - jump MauvilleCity_EventScript_14C154 + goto MauvilleCity_EventScript_14C154 end MauvilleCity_Movement_14C2AA:: @ 814C2AA @@ -285,11 +285,11 @@ MauvilleCity_EventScript_14C2F2:: @ 814C2F2 lock faceplayer checkflag 209 - jumpeq MauvilleCity_EventScript_14C368 + goto_if_eq MauvilleCity_EventScript_14C368 compare 0x40ba, 2 - jumpeq MauvilleCity_EventScript_14C33C + goto_if_eq MauvilleCity_EventScript_14C33C checkflag 208 - jumpeq MauvilleCity_EventScript_14C332 + goto_if_eq MauvilleCity_EventScript_14C332 msgbox MauvilleCity_Text_1661C1, 4 giveitem ITEM_BASEMENT_KEY setflag 208 @@ -306,7 +306,7 @@ MauvilleCity_EventScript_14C33C:: @ 814C33C msgbox MauvilleCity_Text_1663EB, 4 giveitem ITEM_TM24 compare RESULT, 0 - jumpeq MauvilleCity_EventScript_1A029B + goto_if_eq MauvilleCity_EventScript_1A029B setflag 209 msgbox MauvilleCity_Text_166488, 4 release diff --git a/data/scripts/maps/MauvilleCity_BikeShop.inc b/data/scripts/maps/MauvilleCity_BikeShop.inc index 5436bf38a..a93ff5170 100644 --- a/data/scripts/maps/MauvilleCity_BikeShop.inc +++ b/data/scripts/maps/MauvilleCity_BikeShop.inc @@ -5,28 +5,28 @@ MauvilleCity_BikeShop_EventScript_156796:: @ 8156796 lock faceplayer checkflag 90 - jumpeq MauvilleCity_BikeShop_EventScript_15686E + goto_if_eq MauvilleCity_BikeShop_EventScript_15686E checkflag 89 - jumpeq MauvilleCity_BikeShop_EventScript_1567D1 + goto_if_eq MauvilleCity_BikeShop_EventScript_1567D1 msgbox MauvilleCity_BikeShop_Text_180F9F, 4 msgbox MauvilleCity_BikeShop_Text_181016, 5 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_156824 + goto_if_eq MauvilleCity_BikeShop_EventScript_156824 compare RESULT, 0 - jumpeq MauvilleCity_BikeShop_EventScript_156817 + goto_if_eq MauvilleCity_BikeShop_EventScript_156817 end MauvilleCity_BikeShop_EventScript_1567D1:: @ 81567D1 msgbox MauvilleCity_BikeShop_Text_181016, 5 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_156824 + goto_if_eq MauvilleCity_BikeShop_EventScript_156824 compare RESULT, 0 - jumpeq MauvilleCity_BikeShop_EventScript_156817 + goto_if_eq MauvilleCity_BikeShop_EventScript_156817 end MauvilleCity_BikeShop_EventScript_1567F0:: @ 81567F0 message MauvilleCity_BikeShop_Text_1810B1 - waittext + waitmessage multichoice 21, 8, 12, 1 switch RESULT case 0, MauvilleCity_BikeShop_EventScript_15682D @@ -41,19 +41,19 @@ MauvilleCity_BikeShop_EventScript_156817:: @ 8156817 MauvilleCity_BikeShop_EventScript_156824:: @ 8156824 setflag 90 - jump MauvilleCity_BikeShop_EventScript_1567F0 + goto MauvilleCity_BikeShop_EventScript_1567F0 end MauvilleCity_BikeShop_EventScript_15682D:: @ 815682D msgbox MauvilleCity_BikeShop_Text_181332, 4 giveitem ITEM_MACH_BIKE - jump MauvilleCity_BikeShop_EventScript_156861 + goto MauvilleCity_BikeShop_EventScript_156861 end MauvilleCity_BikeShop_EventScript_156847:: @ 8156847 msgbox MauvilleCity_BikeShop_Text_18134A, 4 giveitem ITEM_ACRO_BIKE - jump MauvilleCity_BikeShop_EventScript_156861 + goto MauvilleCity_BikeShop_EventScript_156861 end MauvilleCity_BikeShop_EventScript_156861:: @ 8156861 @@ -65,19 +65,19 @@ MauvilleCity_BikeShop_EventScript_156861:: @ 8156861 MauvilleCity_BikeShop_EventScript_15686E:: @ 815686E msgbox MauvilleCity_BikeShop_Text_1813A0, 5 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_15688D + goto_if_eq MauvilleCity_BikeShop_EventScript_15688D compare RESULT, 0 - jumpeq MauvilleCity_BikeShop_EventScript_1568BF + goto_if_eq MauvilleCity_BikeShop_EventScript_1568BF end MauvilleCity_BikeShop_EventScript_15688D:: @ 815688D msgbox MauvilleCity_BikeShop_Text_1813D4, 4 checkitem ITEM_ACRO_BIKE, 1 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_1568C9 + goto_if_eq MauvilleCity_BikeShop_EventScript_1568C9 checkitem ITEM_MACH_BIKE, 1 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_1568EA + goto_if_eq MauvilleCity_BikeShop_EventScript_1568EA msgbox MauvilleCity_BikeShop_Text_181498, 4 release end @@ -88,19 +88,19 @@ MauvilleCity_BikeShop_EventScript_1568BF:: @ 81568BF end MauvilleCity_BikeShop_EventScript_1568C9:: @ 81568C9 - inccounter GAME_STAT_TRADED_BIKES + incrementgamestat GAME_STAT_TRADED_BIKES msgbox MauvilleCity_BikeShop_Text_181439, 4 removeitem ITEM_ACRO_BIKE, 1 giveitem ITEM_MACH_BIKE - jump MauvilleCity_BikeShop_EventScript_156861 + goto MauvilleCity_BikeShop_EventScript_156861 end MauvilleCity_BikeShop_EventScript_1568EA:: @ 81568EA - inccounter GAME_STAT_TRADED_BIKES + incrementgamestat GAME_STAT_TRADED_BIKES msgbox MauvilleCity_BikeShop_Text_181408, 4 removeitem ITEM_MACH_BIKE, 1 giveitem ITEM_ACRO_BIKE - jump MauvilleCity_BikeShop_EventScript_156861 + goto MauvilleCity_BikeShop_EventScript_156861 end MauvilleCity_BikeShop_EventScript_15690B:: @ 815690B @@ -109,8 +109,8 @@ MauvilleCity_BikeShop_EventScript_15690B:: @ 815690B MauvilleCity_BikeShop_EventScript_156914:: @ 8156914 message MauvilleCity_BikeShop_Text_1815EA - waittext - jump MauvilleCity_BikeShop_EventScript_156920 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156920 end MauvilleCity_BikeShop_EventScript_156920:: @ 8156920 @@ -125,20 +125,20 @@ MauvilleCity_BikeShop_EventScript_156920:: @ 8156920 MauvilleCity_BikeShop_EventScript_156962:: @ 8156962 message MauvilleCity_BikeShop_Text_18162C - waittext - jump MauvilleCity_BikeShop_EventScript_156920 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156920 end MauvilleCity_BikeShop_EventScript_15696E:: @ 815696E message MauvilleCity_BikeShop_Text_1816F5 - waittext - jump MauvilleCity_BikeShop_EventScript_156920 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156920 end MauvilleCity_BikeShop_EventScript_15697A:: @ 815697A message MauvilleCity_BikeShop_Text_1817BF - waittext - jump MauvilleCity_BikeShop_EventScript_156920 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156920 end MauvilleCity_BikeShop_EventScript_156986:: @ 8156986 @@ -147,8 +147,8 @@ MauvilleCity_BikeShop_EventScript_156986:: @ 8156986 MauvilleCity_BikeShop_EventScript_156988:: @ 8156988 message MauvilleCity_BikeShop_Text_181892 - waittext - jump MauvilleCity_BikeShop_EventScript_156994 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156994 end MauvilleCity_BikeShop_EventScript_156994:: @ 8156994 @@ -163,20 +163,20 @@ MauvilleCity_BikeShop_EventScript_156994:: @ 8156994 MauvilleCity_BikeShop_EventScript_1569D6:: @ 81569D6 message MauvilleCity_BikeShop_Text_1818D4 - waittext - jump MauvilleCity_BikeShop_EventScript_156994 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156994 end MauvilleCity_BikeShop_EventScript_1569E2:: @ 81569E2 message MauvilleCity_BikeShop_Text_18199A - waittext - jump MauvilleCity_BikeShop_EventScript_156994 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156994 end MauvilleCity_BikeShop_EventScript_1569EE:: @ 81569EE message MauvilleCity_BikeShop_Text_181A3D - waittext - jump MauvilleCity_BikeShop_EventScript_156994 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156994 end MauvilleCity_BikeShop_EventScript_1569FA:: @ 81569FA diff --git a/data/scripts/maps/MauvilleCity_GameCorner.inc b/data/scripts/maps/MauvilleCity_GameCorner.inc index f20a7dacd..2e0231287 100644 --- a/data/scripts/maps/MauvilleCity_GameCorner.inc +++ b/data/scripts/maps/MauvilleCity_GameCorner.inc @@ -7,65 +7,65 @@ MauvilleCity_GameCorner_EventScript_156A34:: @ 8156A34 msgbox MauvilleCity_GameCorner_Text_181C35, 4 checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156B32 + goto_if_eq MauvilleCity_GameCorner_EventScript_156B32 message MauvilleCity_GameCorner_Text_181CB4 - waittext - showmoney 0, 0 - snop - showcoins 0, 5 - jump MauvilleCity_GameCorner_EventScript_156A60 + waitmessage + showmoneybox 0, 0 + nop + showcoinsbox 0, 5 + goto MauvilleCity_GameCorner_EventScript_156A60 MauvilleCity_GameCorner_EventScript_156A60:: @ 8156A60 - multichoicedef 15, 0, 49, 0, 0 + multichoicedefault 15, 0, 49, 0, 0 switch RESULT case 0, MauvilleCity_GameCorner_EventScript_156AAE case 1, MauvilleCity_GameCorner_EventScript_156AF0 - jump MauvilleCity_GameCorner_EventScript_156B4C + goto MauvilleCity_GameCorner_EventScript_156B4C end @ 8156A87 - multichoicedef 15, 0, 49, 1, 0 + multichoicedefault 15, 0, 49, 1, 0 switch RESULT case 0, MauvilleCity_GameCorner_EventScript_156AAE case 1, MauvilleCity_GameCorner_EventScript_156AF0 - jump MauvilleCity_GameCorner_EventScript_156B4C + goto MauvilleCity_GameCorner_EventScript_156B4C end MauvilleCity_GameCorner_EventScript_156AAE:: @ 8156AAE checkcoins 16385 compare 0x4001, 9950 - jumpif 4, MauvilleCity_GameCorner_EventScript_156B5C + goto_if 4, MauvilleCity_GameCorner_EventScript_156B5C checkmoney 0x3e8, 0 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156B3C + goto_if_eq MauvilleCity_GameCorner_EventScript_156B3C givecoins 50 - paymoney 0x3e8, 0 - updatemoney 0, 0 - snop - updatecoins 0, 5 - playsfx 95 + takemoney 0x3e8, 0 + updatemoneybox 0, 0 + nop + updatecoinsbox 0, 5 + playse 95 msgbox MauvilleCity_GameCorner_Text_181CFE, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end MauvilleCity_GameCorner_EventScript_156AF0:: @ 8156AF0 checkcoins 16385 compare 0x4001, 9500 - jumpif 4, MauvilleCity_GameCorner_EventScript_156B5C + goto_if 4, MauvilleCity_GameCorner_EventScript_156B5C checkmoney 0x2710, 0 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156B3C + goto_if_eq MauvilleCity_GameCorner_EventScript_156B3C givecoins 500 - paymoney 0x2710, 0 - updatemoney 0, 0 - snop - updatecoins 0, 5 - playsfx 95 + takemoney 0x2710, 0 + updatemoneybox 0, 0 + nop + updatecoinsbox 0, 5 + playse 95 msgbox MauvilleCity_GameCorner_Text_181CFE, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end @@ -76,22 +76,22 @@ MauvilleCity_GameCorner_EventScript_156B32:: @ 8156B32 MauvilleCity_GameCorner_EventScript_156B3C:: @ 8156B3C msgbox MauvilleCity_GameCorner_Text_181D28, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end MauvilleCity_GameCorner_EventScript_156B4C:: @ 8156B4C msgbox MauvilleCity_GameCorner_Text_181D73, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end MauvilleCity_GameCorner_EventScript_156B5C:: @ 8156B5C msgbox MauvilleCity_GameCorner_Text_181D57, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end @@ -101,21 +101,21 @@ MauvilleCity_GameCorner_EventScript_156B6C:: @ 8156B6C msgbox MauvilleCity_GameCorner_Text_181DE1, 4 checkitem ITEM_COIN_CASE, 1 compare RESULT, 1 - jumpeq MauvilleCity_GameCorner_EventScript_156B88 + goto_if_eq MauvilleCity_GameCorner_EventScript_156B88 release end MauvilleCity_GameCorner_EventScript_156B88:: @ 8156B88 message MauvilleCity_GameCorner_Text_181E17 - waittext - showcoins 0, 0 + waitmessage + showcoinsbox 0, 0 setvar 0x4001, 0 - jump MauvilleCity_GameCorner_EventScript_156BA6 + goto MauvilleCity_GameCorner_EventScript_156BA6 MauvilleCity_GameCorner_EventScript_156B9B:: @ 8156B9B message MauvilleCity_GameCorner_Text_181E17 - waittext - jump MauvilleCity_GameCorner_EventScript_156BA6 + waitmessage + goto MauvilleCity_GameCorner_EventScript_156BA6 MauvilleCity_GameCorner_EventScript_156BA6:: @ 8156BA6 multichoice 12, 0, 48, 0 @@ -124,28 +124,28 @@ MauvilleCity_GameCorner_EventScript_156BA6:: @ 8156BA6 case 1, MauvilleCity_GameCorner_EventScript_156BF0 case 2, MauvilleCity_GameCorner_EventScript_156BFE case 3, MauvilleCity_GameCorner_EventScript_156D0D - jump MauvilleCity_GameCorner_EventScript_156D0D + goto MauvilleCity_GameCorner_EventScript_156D0D end MauvilleCity_GameCorner_EventScript_156BE2:: @ 8156BE2 setvar 0x4001, 1 - bufferdecor 0, 88 - jump MauvilleCity_GameCorner_EventScript_156C0C + getdecorname 0, 88 + goto MauvilleCity_GameCorner_EventScript_156C0C MauvilleCity_GameCorner_EventScript_156BF0:: @ 8156BF0 setvar 0x4001, 2 - bufferdecor 0, 89 - jump MauvilleCity_GameCorner_EventScript_156C0C + getdecorname 0, 89 + goto MauvilleCity_GameCorner_EventScript_156C0C MauvilleCity_GameCorner_EventScript_156BFE:: @ 8156BFE setvar 0x4001, 3 - bufferdecor 0, 90 - jump MauvilleCity_GameCorner_EventScript_156C0C + getdecorname 0, 90 + goto MauvilleCity_GameCorner_EventScript_156C0C MauvilleCity_GameCorner_EventScript_156C0C:: @ 8156C0C msgbox MauvilleCity_GameCorner_Text_181E33, 5 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156D0D + goto_if_eq MauvilleCity_GameCorner_EventScript_156D0D switch 0x4001 case 1, MauvilleCity_GameCorner_EventScript_156C46 case 2, MauvilleCity_GameCorner_EventScript_156C80 @@ -155,64 +155,64 @@ MauvilleCity_GameCorner_EventScript_156C0C:: @ 8156C0C MauvilleCity_GameCorner_EventScript_156C46:: @ 8156C46 checkcoins 16386 compare 0x4002, 1000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4 - bufferdecor 1, 88 + goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4 + getdecorname 1, 88 checkdecor 88 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156D02 - removecoins 1000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156D02 + takecoins 1000 adddecor 88 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181E49, 4 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156C80:: @ 8156C80 checkcoins 16386 compare 0x4002, 1000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4 - bufferdecor 1, 89 + goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4 + getdecorname 1, 89 checkdecor 89 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156D02 - removecoins 1000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156D02 + takecoins 1000 adddecor 89 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181E49, 4 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156CBA:: @ 8156CBA checkcoins 16386 compare 0x4002, 1000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4 - bufferdecor 1, 90 + goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4 + getdecorname 1, 90 checkdecor 90 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156D02 - removecoins 1000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156D02 + takecoins 1000 adddecor 90 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181E49, 4 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156CF4:: @ 8156CF4 msgbox MauvilleCity_GameCorner_Text_181E76, 4 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156D02:: @ 8156D02 call MauvilleCity_GameCorner_EventScript_1A02B8 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156D0D:: @ 8156D0D msgbox MauvilleCity_GameCorner_Text_181EC2, 4 - hidecoins 0, 0 + hidecoinsbox 0, 0 release end @@ -222,21 +222,21 @@ MauvilleCity_GameCorner_EventScript_156D1A:: @ 8156D1A msgbox MauvilleCity_GameCorner_Text_181DE1, 4 checkitem ITEM_COIN_CASE, 1 compare RESULT, 1 - jumpeq MauvilleCity_GameCorner_EventScript_156D36 + goto_if_eq MauvilleCity_GameCorner_EventScript_156D36 release end MauvilleCity_GameCorner_EventScript_156D36:: @ 8156D36 message MauvilleCity_GameCorner_Text_181E17 - waittext - showcoins 0, 0 + waitmessage + showcoinsbox 0, 0 setvar 0x4001, 0 - jump MauvilleCity_GameCorner_EventScript_156D54 + goto MauvilleCity_GameCorner_EventScript_156D54 MauvilleCity_GameCorner_EventScript_156D49:: @ 8156D49 message MauvilleCity_GameCorner_Text_181E17 - waittext - jump MauvilleCity_GameCorner_EventScript_156D54 + waitmessage + goto MauvilleCity_GameCorner_EventScript_156D54 MauvilleCity_GameCorner_EventScript_156D54:: @ 8156D54 multichoice 12, 0, 55, 0 @@ -247,38 +247,38 @@ MauvilleCity_GameCorner_EventScript_156D54:: @ 8156D54 case 3, MauvilleCity_GameCorner_EventScript_156DD0 case 4, MauvilleCity_GameCorner_EventScript_156DDE case 5, MauvilleCity_GameCorner_EventScript_156F77 - jump MauvilleCity_GameCorner_EventScript_156F77 + goto MauvilleCity_GameCorner_EventScript_156F77 end MauvilleCity_GameCorner_EventScript_156DA6:: @ 8156DA6 setvar 0x4001, 1 - bufferitem 0, ITEM_TM32 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM32 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DB4:: @ 8156DB4 setvar 0x4001, 2 - bufferitem 0, ITEM_TM29 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM29 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DC2:: @ 8156DC2 setvar 0x4001, 3 - bufferitem 0, ITEM_TM35 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM35 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DD0:: @ 8156DD0 setvar 0x4001, 4 - bufferitem 0, ITEM_TM24 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM24 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DDE:: @ 8156DDE setvar 0x4001, 5 - bufferitem 0, ITEM_TM13 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM13 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DEC:: @ 8156DEC msgbox MauvilleCity_GameCorner_Text_181E33, 5 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F77 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F77 switch 0x4001 case 1, MauvilleCity_GameCorner_EventScript_156E3C case 2, MauvilleCity_GameCorner_EventScript_156E76 @@ -290,91 +290,91 @@ MauvilleCity_GameCorner_EventScript_156DEC:: @ 8156DEC MauvilleCity_GameCorner_EventScript_156E3C:: @ 8156E3C checkcoins 16386 compare 0x4002, 1500 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM32, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 1500 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 1500 additem ITEM_TM32, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156E76:: @ 8156E76 checkcoins 16386 compare 0x4002, 3500 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM29, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 3500 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 3500 additem ITEM_TM29, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156EB0:: @ 8156EB0 checkcoins 16386 compare 0x4002, 4000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM35, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 4000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 4000 additem ITEM_TM35, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156EEA:: @ 8156EEA checkcoins 16386 compare 0x4002, 4000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM24, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 4000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 4000 additem ITEM_TM24, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156F24:: @ 8156F24 checkcoins 16386 compare 0x4002, 4000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM13, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 4000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 4000 additem ITEM_TM13, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156F5E:: @ 8156F5E msgbox MauvilleCity_GameCorner_Text_181E76, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156F6C:: @ 8156F6C call MauvilleCity_GameCorner_EventScript_1A02A5 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156F77:: @ 8156F77 msgbox MauvilleCity_GameCorner_Text_181EC2, 4 - hidecoins 0, 0 + hidecoinsbox 0, 0 release end @@ -390,10 +390,10 @@ MauvilleCity_GameCorner_EventScript_156F96:: @ 8156F96 lock faceplayer checkflag 226 - jumpeq MauvilleCity_GameCorner_EventScript_157072 + goto_if_eq MauvilleCity_GameCorner_EventScript_157072 msgbox MauvilleCity_GameCorner_Text_181F3D, 5 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_157068 + goto_if_eq MauvilleCity_GameCorner_EventScript_157068 switch 0x4023 case 0, MauvilleCity_GameCorner_EventScript_156FDB case 1, MauvilleCity_GameCorner_EventScript_157005 @@ -401,36 +401,36 @@ MauvilleCity_GameCorner_EventScript_156F96:: @ 8156F96 end MauvilleCity_GameCorner_EventScript_156FDB:: @ 8156FDB - bufferdecor 1, 88 + getdecorname 1, 88 checkdecor 88 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_157059 + goto_if_eq MauvilleCity_GameCorner_EventScript_157059 msgbox MauvilleCity_GameCorner_Text_181F89, 4 givedecoration 88 setflag 226 - jump MauvilleCity_GameCorner_EventScript_157072 + goto MauvilleCity_GameCorner_EventScript_157072 end MauvilleCity_GameCorner_EventScript_157005:: @ 8157005 - bufferdecor 1, 89 + getdecorname 1, 89 checkdecor 89 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_157059 + goto_if_eq MauvilleCity_GameCorner_EventScript_157059 msgbox MauvilleCity_GameCorner_Text_181F89, 4 givedecoration 89 setflag 226 - jump MauvilleCity_GameCorner_EventScript_157072 + goto MauvilleCity_GameCorner_EventScript_157072 end MauvilleCity_GameCorner_EventScript_15702F:: @ 815702F - bufferdecor 1, 90 + getdecorname 1, 90 checkdecor 90 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_157059 + goto_if_eq MauvilleCity_GameCorner_EventScript_157059 msgbox MauvilleCity_GameCorner_Text_181F89, 4 givedecoration 90 setflag 226 - jump MauvilleCity_GameCorner_EventScript_157072 + goto MauvilleCity_GameCorner_EventScript_157072 end MauvilleCity_GameCorner_EventScript_157059:: @ 8157059 @@ -454,54 +454,54 @@ MauvilleCity_GameCorner_EventScript_15707C:: @ 815707C faceplayer checkitem ITEM_COIN_CASE, 1 compare RESULT, 1 - jumpeq MauvilleCity_GameCorner_EventScript_15709C + goto_if_eq MauvilleCity_GameCorner_EventScript_15709C msgbox MauvilleCity_GameCorner_Text_18201E, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_15709C:: @ 815709C checkflag 225 - jumpeq MauvilleCity_GameCorner_EventScript_1570CA + goto_if_eq MauvilleCity_GameCorner_EventScript_1570CA checkcoins 16385 compare 0x4001, 1 - jumpif 4, MauvilleCity_GameCorner_EventScript_1570CA + goto_if 4, MauvilleCity_GameCorner_EventScript_1570CA setflag 225 givecoins 20 msgbox MauvilleCity_GameCorner_Text_18208E, 4 - playsfx 95 - jump MauvilleCity_GameCorner_EventScript_1570CA + playse 95 + goto MauvilleCity_GameCorner_EventScript_1570CA end MauvilleCity_GameCorner_EventScript_1570CA:: @ 81570CA msgbox MauvilleCity_GameCorner_Text_1820DD, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_1570D8:: @ 81570D8 lock faceplayer msgbox MauvilleCity_GameCorner_Text_182120, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_1570E8:: @ 81570E8 lock faceplayer msgbox MauvilleCity_GameCorner_Text_18217C, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_1570F8:: @ 81570F8 lock faceplayer msgbox MauvilleCity_GameCorner_Text_182241, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_157108:: @ 8157108 - closebutton - move LAST_TALKED, MauvilleCity_GameCorner_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, MauvilleCity_GameCorner_Movement_1A083D + waitmovement 0 release end @@ -509,24 +509,24 @@ MauvilleCity_GameCorner_EventScript_157115:: @ 8157115 lock faceplayer msgbox MauvilleCity_GameCorner_Text_182272, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_157125:: @ 8157125 lock faceplayer msgbox MauvilleCity_GameCorner_Text_1822F4, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_157135:: @ 8157135 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 0 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -534,10 +534,10 @@ MauvilleCity_GameCorner_EventScript_157155:: @ 8157155 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 1 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -545,10 +545,10 @@ MauvilleCity_GameCorner_EventScript_157175:: @ 8157175 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 2 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -556,10 +556,10 @@ MauvilleCity_GameCorner_EventScript_157195:: @ 8157195 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 3 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -567,10 +567,10 @@ MauvilleCity_GameCorner_EventScript_1571B5:: @ 81571B5 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 4 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -578,10 +578,10 @@ MauvilleCity_GameCorner_EventScript_1571D5:: @ 81571D5 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 5 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -589,10 +589,10 @@ MauvilleCity_GameCorner_EventScript_1571F5:: @ 81571F5 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 6 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -600,10 +600,10 @@ MauvilleCity_GameCorner_EventScript_157215:: @ 8157215 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 7 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -611,10 +611,10 @@ MauvilleCity_GameCorner_EventScript_157235:: @ 8157235 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 8 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -622,10 +622,10 @@ MauvilleCity_GameCorner_EventScript_157255:: @ 8157255 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 9 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -633,10 +633,10 @@ MauvilleCity_GameCorner_EventScript_157275:: @ 8157275 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 10 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -644,10 +644,10 @@ MauvilleCity_GameCorner_EventScript_157295:: @ 8157295 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 11 - specialval RESULT, sub_810F424 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end diff --git a/data/scripts/maps/MauvilleCity_Gym.inc b/data/scripts/maps/MauvilleCity_Gym.inc index bd5c119f3..5221add7a 100644 --- a/data/scripts/maps/MauvilleCity_Gym.inc +++ b/data/scripts/maps/MauvilleCity_Gym.inc @@ -4,7 +4,7 @@ MauvilleCity_Gym_MapScripts:: @ 8156450 MauvilleCity_Gym_MapScript1_156456:: @ 8156456 checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_1565A7 + goto_if_eq MauvilleCity_Gym_EventScript_1565A7 switch 0x4093 case 0, MauvilleCity_Gym_EventScript_156491 case 1, MauvilleCity_Gym_EventScript_15657D @@ -14,7 +14,7 @@ MauvilleCity_Gym_MapScript1_156456:: @ 8156456 MauvilleCity_Gym_EventScript_156491:: @ 8156491 checkflag 99 - jumpeq MauvilleCity_Gym_EventScript_15649B + goto_if_eq MauvilleCity_Gym_EventScript_15649B end MauvilleCity_Gym_EventScript_15649B:: @ 815649B @@ -48,19 +48,19 @@ MauvilleCity_Gym_EventScript_15649B:: @ 815649B MauvilleCity_Gym_EventScript_15657D:: @ 815657D setvar 0x8004, 0 special MauvilleGymSpecial1 - jump MauvilleCity_Gym_EventScript_156491 + goto MauvilleCity_Gym_EventScript_156491 end MauvilleCity_Gym_EventScript_15658B:: @ 815658B setvar 0x8004, 1 special MauvilleGymSpecial1 - jump MauvilleCity_Gym_EventScript_156491 + goto MauvilleCity_Gym_EventScript_156491 end MauvilleCity_Gym_EventScript_156599:: @ 8156599 setvar 0x8004, 2 special MauvilleGymSpecial1 - jump MauvilleCity_Gym_EventScript_156491 + goto MauvilleCity_Gym_EventScript_156491 end MauvilleCity_Gym_EventScript_1565A7:: @ 81565A7 @@ -70,35 +70,35 @@ MauvilleCity_Gym_EventScript_1565A7:: @ 81565A7 MauvilleCity_Gym_EventScript_1565AB:: @ 81565AB trainerbattle 1, OPPONENT_WATTSON, 0, MauvilleCity_Gym_Text_180C32, MauvilleCity_Gym_Text_180D64, MauvilleCity_Gym_EventScript_1565DB checkflag 167 - jumpif 0, MauvilleCity_Gym_EventScript_15661D + goto_if 0, MauvilleCity_Gym_EventScript_15661D compare 0x40ba, 2 - jumpeq MauvilleCity_Gym_EventScript_156641 + goto_if_eq MauvilleCity_Gym_EventScript_156641 msgbox MauvilleCity_Gym_Text_180EDB, 4 release end MauvilleCity_Gym_EventScript_1565DB:: @ 81565DB message MauvilleCity_Gym_Text_180DAF - waittext + waitmessage call MauvilleCity_Gym_EventScript_1A02C5 msgbox MauvilleCity_Gym_Text_180DDA, 4 setflag 1208 setflag 2057 addvar 0x4085, 1 compare 0x4085, 6 - callif 1, MauvilleCity_Gym_EventScript_1A00FB + call_if 1, MauvilleCity_Gym_EventScript_1A00FB setvar 0x8008, 3 call MauvilleCity_Gym_EventScript_1A01C0 special MauvilleGymSpecial3 special DrawWholeMapView - playsfx 44 - jump MauvilleCity_Gym_EventScript_15661D + playse 44 + goto MauvilleCity_Gym_EventScript_15661D end MauvilleCity_Gym_EventScript_15661D:: @ 815661D giveitem ITEM_TM34 compare RESULT, 0 - jumpeq MauvilleCity_Gym_EventScript_1A029B + goto_if_eq MauvilleCity_Gym_EventScript_1A029B msgbox MauvilleCity_Gym_Text_180E76, 4 setflag 167 release @@ -112,45 +112,45 @@ MauvilleCity_Gym_EventScript_156641:: @ 8156641 MauvilleCity_Gym_EventScript_15664B:: @ 815664B lockall checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA compare 0x4093, 1 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA setvar 0x4093, 1 setvar 0x8004, 0 - jump MauvilleCity_Gym_EventScript_1566BA + goto MauvilleCity_Gym_EventScript_1566BA end MauvilleCity_Gym_EventScript_156670:: @ 8156670 lockall checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA compare 0x4093, 2 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA setvar 0x4093, 2 setvar 0x8004, 1 - jump MauvilleCity_Gym_EventScript_1566BA + goto MauvilleCity_Gym_EventScript_1566BA end MauvilleCity_Gym_EventScript_156695:: @ 8156695 lockall checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA compare 0x4093, 3 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA setvar 0x4093, 3 setvar 0x8004, 2 - jump MauvilleCity_Gym_EventScript_1566BA + goto MauvilleCity_Gym_EventScript_1566BA end MauvilleCity_Gym_EventScript_1566BA:: @ 81566BA special MauvilleGymSpecial2 special MauvilleGymSpecial1 special DrawWholeMapView - playsfx 44 + playse 44 checkflag 99 - jumpeq MauvilleCity_Gym_EventScript_1566E1 + goto_if_eq MauvilleCity_Gym_EventScript_1566E1 checkflag 99 - jumpif 0, MauvilleCity_Gym_EventScript_1566DC + goto_if 0, MauvilleCity_Gym_EventScript_1566DC releaseall end @@ -192,7 +192,7 @@ MauvilleCity_Gym_EventScript_156742:: @ 8156742 lock faceplayer checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_156757 + goto_if_eq MauvilleCity_Gym_EventScript_156757 msgbox MauvilleCity_Gym_Text_180815, 4 release end @@ -205,15 +205,15 @@ MauvilleCity_Gym_EventScript_156757:: @ 8156757 MauvilleCity_Gym_EventScript_156761:: @ 8156761 lockall checkflag 2057 - jumpeq MauvilleCity_Gym_EventScript_156781 - jump MauvilleCity_Gym_EventScript_15678B + goto_if_eq MauvilleCity_Gym_EventScript_156781 + goto MauvilleCity_Gym_EventScript_15678B end MauvilleCity_Gym_EventScript_156771:: @ 8156771 lockall checkflag 2057 - jumpeq MauvilleCity_Gym_EventScript_156781 - jump MauvilleCity_Gym_EventScript_15678B + goto_if_eq MauvilleCity_Gym_EventScript_156781 + goto MauvilleCity_Gym_EventScript_15678B end MauvilleCity_Gym_EventScript_156781:: @ 8156781 diff --git a/data/scripts/maps/MauvilleCity_House1.inc b/data/scripts/maps/MauvilleCity_House1.inc index 48ee31be5..e76564847 100644 --- a/data/scripts/maps/MauvilleCity_House1.inc +++ b/data/scripts/maps/MauvilleCity_House1.inc @@ -5,7 +5,7 @@ MauvilleCity_House1_EventScript_1569FD:: @ 81569FD lock faceplayer checkflag 107 - jumpeq MauvilleCity_House1_EventScript_156A29 + goto_if_eq MauvilleCity_House1_EventScript_156A29 msgbox MauvilleCity_House1_Text_181B1A, 4 giveitem ITEM_HM06 setflag 107 diff --git a/data/scripts/maps/MauvilleCity_House2.inc b/data/scripts/maps/MauvilleCity_House2.inc index 8a73af034..a500a246e 100644 --- a/data/scripts/maps/MauvilleCity_House2.inc +++ b/data/scripts/maps/MauvilleCity_House2.inc @@ -5,25 +5,25 @@ MauvilleCity_House2_EventScript_1572C0:: @ 81572C0 lock faceplayer checkflag 258 - jumpeq MauvilleCity_House2_EventScript_15733D + goto_if_eq MauvilleCity_House2_EventScript_15733D msgbox MauvilleCity_House2_Text_18244E, 4 checkitem ITEM_HARBOR_MAIL, 1 compare RESULT, 1 - jumpeq MauvilleCity_House2_EventScript_1572E5 + goto_if_eq MauvilleCity_House2_EventScript_1572E5 release end MauvilleCity_House2_EventScript_1572E5:: @ 81572E5 - playsfx 21 - move LAST_TALKED, MauvilleCity_House2_Movement_1A0833 - waitmove 0 - move LAST_TALKED, MauvilleCity_House2_Movement_1A0835 - waitmove 0 + playse 21 + applymovement LAST_TALKED, MauvilleCity_House2_Movement_1A0833 + waitmovement 0 + applymovement LAST_TALKED, MauvilleCity_House2_Movement_1A0835 + waitmovement 0 msgbox MauvilleCity_House2_Text_1824D8, 5 compare RESULT, 1 - jumpeq MauvilleCity_House2_EventScript_15731B + goto_if_eq MauvilleCity_House2_EventScript_15731B compare RESULT, 0 - jumpeq MauvilleCity_House2_EventScript_157347 + goto_if_eq MauvilleCity_House2_EventScript_157347 end MauvilleCity_House2_EventScript_15731B:: @ 815731B @@ -31,7 +31,7 @@ MauvilleCity_House2_EventScript_15731B:: @ 815731B removeitem ITEM_HARBOR_MAIL, 1 giveitem ITEM_COIN_CASE setflag 258 - jump MauvilleCity_House2_EventScript_15733D + goto MauvilleCity_House2_EventScript_15733D end MauvilleCity_House2_EventScript_15733D:: @ 815733D diff --git a/data/scripts/maps/MauvilleCity_Mart.inc b/data/scripts/maps/MauvilleCity_Mart.inc index fac5906ad..0dd66eddf 100644 --- a/data/scripts/maps/MauvilleCity_Mart.inc +++ b/data/scripts/maps/MauvilleCity_Mart.inc @@ -5,7 +5,7 @@ MauvilleCity_Mart_EventScript_1573BE:: @ 81573BE lock faceplayer message MauvilleCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart MauvilleCity_Mart_Items msgbox MauvilleCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc b/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc index b2b5dabd4..7122b8c3c 100644 --- a/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc @@ -5,7 +5,7 @@ MauvilleCity_PokemonCenter_1F_MapScripts:: @ 8157351 MauvilleCity_PokemonCenter_1F_MapScript1_157357:: @ 8157357 sethealplace 5 call MauvilleCity_PokemonCenter_1F_EventScript_19FD1B - jump MauvilleCity_PokemonCenter_1F_EventScript_157365 + goto MauvilleCity_PokemonCenter_1F_EventScript_157365 end MauvilleCity_PokemonCenter_1F_EventScript_157365:: @ 8157365 @@ -15,7 +15,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_157365:: @ 8157365 MauvilleCity_PokemonCenter_1F_EventScript_157369:: @ 8157369 setvar 0x800b, 1 call MauvilleCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/MeteorFalls_1F_1R.inc b/data/scripts/maps/MeteorFalls_1F_1R.inc index 3e7155955..06abbc8f6 100644 --- a/data/scripts/maps/MeteorFalls_1F_1R.inc +++ b/data/scripts/maps/MeteorFalls_1F_1R.inc @@ -8,75 +8,75 @@ MeteorFalls_1F_1R_MapScript1_15C496:: @ 815C496 MeteorFalls_1F_1R_EventScript_15C49C:: @ 815C49C lockall - move 255, MeteorFalls_1F_1R_Movement_1A0845 - waitmove 0 - pause 30 - move 5, MeteorFalls_1F_1R_Movement_1A0845 - waitmove 0 + applymovement 255, MeteorFalls_1F_1R_Movement_1A0845 + waitmovement 0 + delay 30 + applymovement 5, MeteorFalls_1F_1R_Movement_1A0845 + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193237, 4 - closebutton - move 5, MeteorFalls_1F_1R_Movement_1A0841 - move 6, MeteorFalls_1F_1R_Movement_1A0841 - waitmove 0 - playsfx 21 - move 5, MeteorFalls_1F_1R_Movement_1A0833 - waitmove 0 - move 5, MeteorFalls_1F_1R_Movement_1A0835 - waitmove 0 + closemessage + applymovement 5, MeteorFalls_1F_1R_Movement_1A0841 + applymovement 6, MeteorFalls_1F_1R_Movement_1A0841 + waitmovement 0 + playse 21 + applymovement 5, MeteorFalls_1F_1R_Movement_1A0833 + waitmovement 0 + applymovement 5, MeteorFalls_1F_1R_Movement_1A0835 + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193268, 4 - closebutton - move 5, MeteorFalls_1F_1R_Movement_15C5EE - waitmove 0 + closemessage + applymovement 5, MeteorFalls_1F_1R_Movement_15C5EE + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_1932C5, 4 - closebutton - move 255, MeteorFalls_1F_1R_Movement_1A083F - move 5, MeteorFalls_1F_1R_Movement_1A083F - move 6, MeteorFalls_1F_1R_Movement_1A083F - waitmove 0 - reappear 7 - reappear 8 - reappear 9 - move 7, MeteorFalls_1F_1R_Movement_15C608 - move 8, MeteorFalls_1F_1R_Movement_15C60F - move 9, MeteorFalls_1F_1R_Movement_15C617 - waitmove 0 - move 5, MeteorFalls_1F_1R_Movement_1A083F - move 6, MeteorFalls_1F_1R_Movement_1A083F - waitmove 0 + closemessage + applymovement 255, MeteorFalls_1F_1R_Movement_1A083F + applymovement 5, MeteorFalls_1F_1R_Movement_1A083F + applymovement 6, MeteorFalls_1F_1R_Movement_1A083F + waitmovement 0 + addobject 7 + addobject 8 + addobject 9 + applymovement 7, MeteorFalls_1F_1R_Movement_15C608 + applymovement 8, MeteorFalls_1F_1R_Movement_15C60F + applymovement 9, MeteorFalls_1F_1R_Movement_15C617 + waitmovement 0 + applymovement 5, MeteorFalls_1F_1R_Movement_1A083F + applymovement 6, MeteorFalls_1F_1R_Movement_1A083F + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193320, 4 - closebutton - move 255, MeteorFalls_1F_1R_Movement_15C64F - move 5, MeteorFalls_1F_1R_Movement_15C5F1 - move 6, MeteorFalls_1F_1R_Movement_15C5FC - waitmove 0 - disappear 5 - disappear 6 - move 7, MeteorFalls_1F_1R_Movement_15C628 - waitmove 0 + closemessage + applymovement 255, MeteorFalls_1F_1R_Movement_15C64F + applymovement 5, MeteorFalls_1F_1R_Movement_15C5F1 + applymovement 6, MeteorFalls_1F_1R_Movement_15C5FC + waitmovement 0 + removeobject 5 + removeobject 6 + applymovement 7, MeteorFalls_1F_1R_Movement_15C628 + waitmovement 0 .ifdef SAPPHIRE msgbox MeteorFalls_1F_1R_Text_1933EC, 4 .else msgbox MeteorFalls_1F_1R_Text_193584, 4 .endif - closebutton - move 8, MeteorFalls_1F_1R_Movement_15C639 - move 9, MeteorFalls_1F_1R_Movement_15C64A - waitmove 0 + closemessage + applymovement 8, MeteorFalls_1F_1R_Movement_15C639 + applymovement 9, MeteorFalls_1F_1R_Movement_15C64A + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193720, 4 - move 7, MeteorFalls_1F_1R_Movement_1A0845 - waitmove 0 + applymovement 7, MeteorFalls_1F_1R_Movement_1A0845 + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193747, 4 - move 7, MeteorFalls_1F_1R_Movement_1A083F - waitmove 0 + applymovement 7, MeteorFalls_1F_1R_Movement_1A083F + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_1937AA, 4 - closebutton - move 7, MeteorFalls_1F_1R_Movement_15C61F - move 8, MeteorFalls_1F_1R_Movement_15C62E - move 9, MeteorFalls_1F_1R_Movement_15C63E - waitmove 0 - disappear 7 - disappear 8 - disappear 9 + closemessage + applymovement 7, MeteorFalls_1F_1R_Movement_15C61F + applymovement 8, MeteorFalls_1F_1R_Movement_15C62E + applymovement 9, MeteorFalls_1F_1R_Movement_15C63E + waitmovement 0 + removeobject 7 + removeobject 8 + removeobject 9 setflag 819 setvar 0x40bf, 1 releaseall @@ -216,7 +216,7 @@ MeteorFalls_1F_1R_EventScript_15C656:: @ 815C656 lock faceplayer checkflag 244 - jumpeq MeteorFalls_1F_1R_EventScript_15C66E + goto_if_eq MeteorFalls_1F_1R_EventScript_15C66E setflag 244 msgbox MeteorFalls_1F_1R_Text_1937EB, 4 release diff --git a/data/scripts/maps/MeteorFalls_1F_2R.inc b/data/scripts/maps/MeteorFalls_1F_2R.inc index 8e45c34ae..b3a0c51fe 100644 --- a/data/scripts/maps/MeteorFalls_1F_2R.inc +++ b/data/scripts/maps/MeteorFalls_1F_2R.inc @@ -3,9 +3,9 @@ MeteorFalls_1F_2R_MapScripts:: @ 815C678 MeteorFalls_1F_2R_EventScript_15C679:: @ 815C679 trainerbattle 0, OPPONENT_NICOLAS_1, 0, MeteorFalls_1F_2R_Text_1939C5, MeteorFalls_1F_2R_Text_193A35 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MeteorFalls_1F_2R_EventScript_15C6A0 + goto_if_eq MeteorFalls_1F_2R_EventScript_15C6A0 msgbox MeteorFalls_1F_2R_Text_193A60, 6 end @@ -16,9 +16,9 @@ MeteorFalls_1F_2R_EventScript_15C6A0:: @ 815C6A0 MeteorFalls_1F_2R_EventScript_15C6B7:: @ 815C6B7 trainerbattle 4, OPPONENT_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_193BB7, MeteorFalls_1F_2R_Text_193C10, MeteorFalls_1F_2R_Text_193C9F - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MeteorFalls_1F_2R_EventScript_15C6E2 + goto_if_eq MeteorFalls_1F_2R_EventScript_15C6E2 msgbox MeteorFalls_1F_2R_Text_193C35, 6 end @@ -29,9 +29,9 @@ MeteorFalls_1F_2R_EventScript_15C6E2:: @ 815C6E2 MeteorFalls_1F_2R_EventScript_15C6FD:: @ 815C6FD trainerbattle 4, OPPONENT_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_193D10, MeteorFalls_1F_2R_Text_193D6E, MeteorFalls_1F_2R_Text_193DFB - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MeteorFalls_1F_2R_EventScript_15C728 + goto_if_eq MeteorFalls_1F_2R_EventScript_15C728 msgbox MeteorFalls_1F_2R_Text_193D9A, 6 end diff --git a/data/scripts/maps/MossdeepCity.inc b/data/scripts/maps/MossdeepCity.inc index ddb317364..44deb9d63 100644 --- a/data/scripts/maps/MossdeepCity.inc +++ b/data/scripts/maps/MossdeepCity.inc @@ -8,7 +8,7 @@ MossdeepCity_MapScript1_14CF98:: @ 814CF98 clearflag 102 clearflag 103 checkflag 2090 - callif 1, MossdeepCity_EventScript_1A02C1 + call_if 1, MossdeepCity_EventScript_1A02C1 end MossdeepCity_EventScript_14CFAE:: @ 814CFAE @@ -60,8 +60,8 @@ MossdeepCity_EventScript_14D011:: @ 814D011 lock faceplayer msgbox MossdeepCity_Text_16944E, 4 - move LAST_TALKED, MossdeepCity_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, MossdeepCity_Movement_1A083D + waitmovement 0 release end @@ -69,14 +69,14 @@ MossdeepCity_EventScript_14D027:: @ 814D027 lock faceplayer checkflag 276 - jumpeq MossdeepCity_EventScript_14D069 + goto_if_eq MossdeepCity_EventScript_14D069 msgbox MossdeepCity_Text_1690A9, 5 compare RESULT, 0 - jumpeq MossdeepCity_EventScript_14D073 + goto_if_eq MossdeepCity_EventScript_14D073 msgbox MossdeepCity_Text_169117, 4 giveitem ITEM_KINGS_ROCK compare RESULT, 0 - jumpeq MossdeepCity_EventScript_1A029B + goto_if_eq MossdeepCity_EventScript_1A029B setflag 276 release end diff --git a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc index 14836f3e0..66ad747f9 100644 --- a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc +++ b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc @@ -7,7 +7,7 @@ MossdeepCity_GameCorner_1F_MapScripts:: @ 815AC52 MossdeepCity_GameCorner_1F_MapScript1_15AC62:: @ 815AC62 special sub_813601C compare RESULT, 1 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AC71 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AC71 end MossdeepCity_GameCorner_1F_EventScript_15AC71:: @ 815AC71 @@ -18,20 +18,20 @@ MossdeepCity_GameCorner_1F_EventScript_15AC71:: @ 815AC71 MossdeepCity_GameCorner_1F_MapScript1_15AC84:: @ 815AC84 special sub_813601C compare RESULT, 0 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AC9E + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AC9E compare 0x40c0, 0 - callif 5, MossdeepCity_GameCorner_1F_EventScript_15ACAF + call_if 5, MossdeepCity_GameCorner_1F_EventScript_15ACAF end MossdeepCity_GameCorner_1F_EventScript_15AC9E:: @ 815AC9E setvar 0x4001, 1 - movespriteperm 1, 3, 2 - spritebehave 1, 8 + setobjectxyperm 1, 3, 2 + setobjectmovementtype 1, 8 return MossdeepCity_GameCorner_1F_EventScript_15ACAF:: @ 815ACAF - movespriteperm 1, 2, 2 - spritebehave 1, 10 + setobjectxyperm 1, 2, 2 + setobjectmovementtype 1, 10 return MossdeepCity_GameCorner_1F_MapScript2_15ACBB:: @ 815ACBB @@ -42,19 +42,19 @@ MossdeepCity_GameCorner_1F_MapScript2_15ACBB:: @ 815ACBB MossdeepCity_GameCorner_1F_EventScript_15ACD5:: @ 815ACD5 lockall - move 255, MossdeepCity_GameCorner_1F_Movement_15AD3D - waitmove 0 - move 1, MossdeepCity_GameCorner_1F_Movement_15AD3F - waitmove 0 - moveoffscreen 1 - move 255, MossdeepCity_GameCorner_1F_Movement_1A0841 - waitmove 0 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AD3D + waitmovement 0 + applymovement 1, MossdeepCity_GameCorner_1F_Movement_15AD3F + waitmovement 0 + moveobjectoffscreen 1 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_1A0841 + waitmovement 0 compare 0x40c0, 1 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD22 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD22 compare 0x40c0, 2 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD2B + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD2B compare 0x40c0, 3 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD34 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD34 special LoadPlayerParty setvar 0x40c0, 0 releaseall @@ -85,7 +85,7 @@ MossdeepCity_GameCorner_1F_EventScript_15AD42:: @ 815AD42 lock faceplayer compare 0x4001, 1 - jumpeq MossdeepCity_GameCorner_1F_EventScript_15AD59 + goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15AD59 msgbox MossdeepCity_GameCorner_1F_Text_18E59A, 4 release end @@ -95,28 +95,28 @@ MossdeepCity_GameCorner_1F_EventScript_15AD59:: @ 815AD59 special sub_810F414 msgbox MossdeepCity_GameCorner_1F_Text_18E650, 5 compare RESULT, 0 - jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8 + goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8 call MossdeepCity_GameCorner_1F_EventScript_15ADF5 compare RESULT, 0 - jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8 + goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8 msgbox MossdeepCity_GameCorner_1F_Text_18E741, 5 compare RESULT, 0 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15ADE8 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15ADE8 special LoadPlayerParty - call MossdeepCity_GameCorner_1F_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8 - hidebox 0, 0, 15, 10 + goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8 + erasebox 0, 0, 15, 10 special SavePlayerParty special ReducePlayerPartyToThree msgbox MossdeepCity_GameCorner_1F_Text_18E777, 4 - closebutton + closemessage compare FACING, 2 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE04 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE04 compare FACING, 4 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE16 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE16 compare FACING, 3 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE28 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE28 warp MossdeepCity_GameCorner_B1F, 255, 3, 1 waitstate release @@ -136,21 +136,21 @@ MossdeepCity_GameCorner_1F_EventScript_15ADF5:: @ 815ADF5 return MossdeepCity_GameCorner_1F_EventScript_15AE04:: @ 815AE04 - move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46 - move 255, MossdeepCity_GameCorner_1F_Movement_15AE3A - waitmove 0 + applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE3A + waitmovement 0 return MossdeepCity_GameCorner_1F_EventScript_15AE16:: @ 815AE16 - move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE49 - move 255, MossdeepCity_GameCorner_1F_Movement_15AE3E - waitmove 0 + applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE49 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE3E + waitmovement 0 return MossdeepCity_GameCorner_1F_EventScript_15AE28:: @ 815AE28 - move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46 - move 255, MossdeepCity_GameCorner_1F_Movement_15AE42 - waitmove 0 + applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE42 + waitmovement 0 return MossdeepCity_GameCorner_1F_Movement_15AE3A:: @ 815AE3A diff --git a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc index a5a013d5f..886c64d29 100644 --- a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc +++ b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc @@ -13,25 +13,25 @@ MossdeepCity_GameCorner_B1F_MapScript2_15AE64:: @ 815AE64 MossdeepCity_GameCorner_B1F_EventScript_15AE6E:: @ 815AE6E lockall - move 255, MossdeepCity_GameCorner_B1F_Movement_15AEF9 - waitmove 0 + applymovement 255, MossdeepCity_GameCorner_B1F_Movement_15AEF9 + waitmovement 0 special sub_81360C0 msgbox 0x20234cc, 4 - closebutton + closemessage setvar 0x8004, 2 setvar 0x8005, 0 special sub_813556C waitstate compare RESULT, 3 - callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AED5 + call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AED5 compare RESULT, 1 - callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AEE3 + call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AEE3 compare RESULT, 2 - callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AEEE - closebutton - special HealPlayerParty - move 255, MossdeepCity_GameCorner_B1F_Movement_15AEFF - waitmove 0 + call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AEEE + closemessage + special ScrSpecial_HealPlayerParty + applymovement 255, MossdeepCity_GameCorner_B1F_Movement_15AEFF + waitmovement 0 special LoadPlayerParty setvar 0x4001, 1 warp MossdeepCity_GameCorner_1F, 255, 3, 1 @@ -47,14 +47,14 @@ MossdeepCity_GameCorner_B1F_EventScript_15AED5:: @ 815AED5 MossdeepCity_GameCorner_B1F_EventScript_15AEE3:: @ 815AEE3 setvar 0x40c0, 1 special ShowFieldMessageStringVar4 - waittext + waitmessage waitbutton return MossdeepCity_GameCorner_B1F_EventScript_15AEEE:: @ 815AEEE setvar 0x40c0, 2 special ShowFieldMessageStringVar4 - waittext + waitmessage waitbutton return diff --git a/data/scripts/maps/MossdeepCity_Gym.inc b/data/scripts/maps/MossdeepCity_Gym.inc index 20f43a150..944860f2d 100644 --- a/data/scripts/maps/MossdeepCity_Gym.inc +++ b/data/scripts/maps/MossdeepCity_Gym.inc @@ -4,43 +4,43 @@ MossdeepCity_Gym_MapScripts:: @ 815A4D3 MossdeepCity_Gym_MapScript1_15A4D9:: @ 815A4D9 checkflag 100 - jumpeq MossdeepCity_Gym_EventScript_15A510 - jump MossdeepCity_Gym_EventScript_15A4E8 + goto_if_eq MossdeepCity_Gym_EventScript_15A510 + goto MossdeepCity_Gym_EventScript_15A4E8 end MossdeepCity_Gym_EventScript_15A4E8:: @ 815A4E8 checkflag 101 - jumpeq MossdeepCity_Gym_EventScript_15A528 - jump MossdeepCity_Gym_EventScript_15A4F7 + goto_if_eq MossdeepCity_Gym_EventScript_15A528 + goto MossdeepCity_Gym_EventScript_15A4F7 end MossdeepCity_Gym_EventScript_15A4F7:: @ 815A4F7 checkflag 102 - jumpeq MossdeepCity_Gym_EventScript_15A540 - jump MossdeepCity_Gym_EventScript_15A506 + goto_if_eq MossdeepCity_Gym_EventScript_15A540 + goto MossdeepCity_Gym_EventScript_15A506 end MossdeepCity_Gym_EventScript_15A506:: @ 815A506 checkflag 103 - jumpeq MossdeepCity_Gym_EventScript_15A558 + goto_if_eq MossdeepCity_Gym_EventScript_15A558 end MossdeepCity_Gym_EventScript_15A510:: @ 815A510 setmaptile 5, 5, 516, 0 setmaptile 2, 7, 569, 1 - jump MossdeepCity_Gym_EventScript_15A4E8 + goto MossdeepCity_Gym_EventScript_15A4E8 end MossdeepCity_Gym_EventScript_15A528:: @ 815A528 setmaptile 8, 14, 516, 0 setmaptile 8, 10, 569, 1 - jump MossdeepCity_Gym_EventScript_15A4F7 + goto MossdeepCity_Gym_EventScript_15A4F7 end MossdeepCity_Gym_EventScript_15A540:: @ 815A540 setmaptile 15, 17, 524, 0 setmaptile 17, 15, 569, 1 - jump MossdeepCity_Gym_EventScript_15A506 + goto MossdeepCity_Gym_EventScript_15A506 end MossdeepCity_Gym_EventScript_15A558:: @ 815A558 @@ -51,14 +51,14 @@ MossdeepCity_Gym_EventScript_15A558:: @ 815A558 MossdeepCity_Gym_EventScript_15A56B:: @ 815A56B trainerbattle 8, OPPONENT_TATE_AND_LIZA, 0, MossdeepCity_Gym_Text_18CF02, MossdeepCity_Gym_Text_18D077, MossdeepCity_Gym_Text_18D324, MossdeepCity_Gym_EventScript_15A594 checkflag 171 - jumpif 0, MossdeepCity_Gym_EventScript_15A5C6 + goto_if 0, MossdeepCity_Gym_EventScript_15A5C6 msgbox MossdeepCity_Gym_Text_18D273, 4 release end MossdeepCity_Gym_EventScript_15A594:: @ 815A594 message MossdeepCity_Gym_Text_18D0F9 - waittext + waitmessage call MossdeepCity_Gym_EventScript_1A02C5 msgbox MossdeepCity_Gym_Text_18D128, 4 setflag 1229 @@ -68,13 +68,13 @@ MossdeepCity_Gym_EventScript_15A594:: @ 815A594 setvar 0x8008, 7 call MossdeepCity_Gym_EventScript_1A01C0 clearflag 905 - jump MossdeepCity_Gym_EventScript_15A5C6 + goto MossdeepCity_Gym_EventScript_15A5C6 end MossdeepCity_Gym_EventScript_15A5C6:: @ 815A5C6 giveitem ITEM_TM04 compare RESULT, 0 - jumpeq MossdeepCity_Gym_EventScript_1A029B + goto_if_eq MossdeepCity_Gym_EventScript_1A029B msgbox MossdeepCity_Gym_Text_18D1CF, 4 setflag 171 release @@ -83,91 +83,91 @@ MossdeepCity_Gym_EventScript_15A5C6:: @ 815A5C6 MossdeepCity_Gym_EventScript_15A5EA:: @ 815A5EA lockall checkflag 100 - jumpeq MossdeepCity_Gym_EventScript_15A621 + goto_if_eq MossdeepCity_Gym_EventScript_15A621 setflag 100 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 5, 5, 516, 0 setmaptile 2, 7, 569, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A619:: @ 815A619 special DrawWholeMapView - playsfx 36 + playse 36 releaseall end MossdeepCity_Gym_EventScript_15A621:: @ 815A621 clearflag 100 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 5, 5, 524, 0 setmaptile 2, 7, 568, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A646:: @ 815A646 lockall checkflag 101 - jumpeq MossdeepCity_Gym_EventScript_15A675 + goto_if_eq MossdeepCity_Gym_EventScript_15A675 setflag 101 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 8, 14, 516, 0 setmaptile 8, 10, 569, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A675:: @ 815A675 clearflag 101 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 8, 14, 517, 0 setmaptile 8, 10, 568, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A69A:: @ 815A69A lockall checkflag 102 - jumpeq MossdeepCity_Gym_EventScript_15A6C9 + goto_if_eq MossdeepCity_Gym_EventScript_15A6C9 setflag 102 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 15, 17, 524, 0 setmaptile 17, 15, 569, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A6C9:: @ 815A6C9 clearflag 102 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 15, 17, 516, 0 setmaptile 17, 15, 568, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A6EE:: @ 815A6EE lockall checkflag 103 - jumpeq MossdeepCity_Gym_EventScript_15A71D + goto_if_eq MossdeepCity_Gym_EventScript_15A71D setflag 103 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 1, 23, 525, 0 setmaptile 5, 24, 569, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A71D:: @ 815A71D clearflag 103 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 1, 23, 516, 0 setmaptile 5, 24, 568, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A742:: @ 815A742 @@ -211,7 +211,7 @@ MossdeepCity_Gym_EventScript_15A7D8:: @ 815A7D8 lock faceplayer checkflag 1229 - jumpeq MossdeepCity_Gym_EventScript_15A7ED + goto_if_eq MossdeepCity_Gym_EventScript_15A7ED msgbox MossdeepCity_Gym_Text_18C7E3, 4 release end @@ -229,15 +229,15 @@ MossdeepCity_Gym_Movement_15A7F7:: @ 815A7F7 MossdeepCity_Gym_EventScript_15A7FA:: @ 815A7FA lockall checkflag 2061 - jumpeq MossdeepCity_Gym_EventScript_15A81A - jump MossdeepCity_Gym_EventScript_15A824 + goto_if_eq MossdeepCity_Gym_EventScript_15A81A + goto MossdeepCity_Gym_EventScript_15A824 end MossdeepCity_Gym_EventScript_15A80A:: @ 815A80A lockall checkflag 2061 - jumpeq MossdeepCity_Gym_EventScript_15A81A - jump MossdeepCity_Gym_EventScript_15A824 + goto_if_eq MossdeepCity_Gym_EventScript_15A81A + goto MossdeepCity_Gym_EventScript_15A824 end MossdeepCity_Gym_EventScript_15A81A:: @ 815A81A diff --git a/data/scripts/maps/MossdeepCity_House1.inc b/data/scripts/maps/MossdeepCity_House1.inc index 319dfba8e..62edffc8b 100644 --- a/data/scripts/maps/MossdeepCity_House1.inc +++ b/data/scripts/maps/MossdeepCity_House1.inc @@ -4,11 +4,11 @@ MossdeepCity_House1_MapScripts:: @ 815A82E MossdeepCity_House1_EventScript_15A82F:: @ 815A82F lock faceplayer - bufferfirstpoke 0 + getfirstpartypokename 0 msgbox MossdeepCity_House1_Text_18D465, 4 - specialval RESULT, GetPokeblockNameByMonNature + specialvar RESULT, GetPokeblockNameByMonNature compare RESULT, 0 - jumpeq MossdeepCity_House1_EventScript_15A855 + goto_if_eq MossdeepCity_House1_EventScript_15A855 msgbox MossdeepCity_House1_Text_18D475, 4 release end diff --git a/data/scripts/maps/MossdeepCity_House2.inc b/data/scripts/maps/MossdeepCity_House2.inc index f3d07b64e..f7f66b843 100644 --- a/data/scripts/maps/MossdeepCity_House2.inc +++ b/data/scripts/maps/MossdeepCity_House2.inc @@ -12,29 +12,29 @@ MossdeepCity_House2_EventScript_15A872:: @ 815A872 MossdeepCity_House2_EventScript_15A87B:: @ 815A87B lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox MossdeepCity_House2_Text_18D61E, 4 waitpokecry - closebutton + closemessage setflag 224 clearflag 933 compare FACING, 2 - callif 1, MossdeepCity_House2_EventScript_15A8AE + call_if 1, MossdeepCity_House2_EventScript_15A8AE compare FACING, 3 - callif 1, MossdeepCity_House2_EventScript_15A8B9 - disappear 3 + call_if 1, MossdeepCity_House2_EventScript_15A8B9 + removeobject 3 release end MossdeepCity_House2_EventScript_15A8AE:: @ 815A8AE - move 3, MossdeepCity_House2_Movement_15A8C4 - waitmove 0 + applymovement 3, MossdeepCity_House2_Movement_15A8C4 + waitmovement 0 return MossdeepCity_House2_EventScript_15A8B9:: @ 815A8B9 - move 3, MossdeepCity_House2_Movement_15A8CB - waitmove 0 + applymovement 3, MossdeepCity_House2_Movement_15A8CB + waitmovement 0 return MossdeepCity_House2_Movement_15A8C4:: @ 815A8C4 diff --git a/data/scripts/maps/MossdeepCity_House3.inc b/data/scripts/maps/MossdeepCity_House3.inc index fd97ee598..8f9bf4dc5 100644 --- a/data/scripts/maps/MossdeepCity_House3.inc +++ b/data/scripts/maps/MossdeepCity_House3.inc @@ -5,10 +5,10 @@ MossdeepCity_House3_EventScript_15A972:: @ 815A972 lock faceplayer checkflag 152 - jumpeq MossdeepCity_House3_EventScript_15A9B1 + goto_if_eq MossdeepCity_House3_EventScript_15A9B1 msgbox MossdeepCity_House3_Text_18D909, 5 compare RESULT, 0 - jumpeq MossdeepCity_House3_EventScript_15A9BB + goto_if_eq MossdeepCity_House3_EventScript_15A9BB msgbox MossdeepCity_House3_Text_18D9A9, 4 giveitem ITEM_SUPER_ROD setflag 152 diff --git a/data/scripts/maps/MossdeepCity_House4.inc b/data/scripts/maps/MossdeepCity_House4.inc index 12dc941e7..fd173899d 100644 --- a/data/scripts/maps/MossdeepCity_House4.inc +++ b/data/scripts/maps/MossdeepCity_House4.inc @@ -5,7 +5,7 @@ MossdeepCity_House4_EventScript_15AB31:: @ 815AB31 lock faceplayer checkflag 2052 - jumpeq MossdeepCity_House4_EventScript_15AB46 + goto_if_eq MossdeepCity_House4_EventScript_15AB46 msgbox MossdeepCity_House4_Text_18E0E3, 4 release end @@ -20,7 +20,7 @@ MossdeepCity_House4_EventScript_15AB50:: @ 815AB50 faceplayer special sub_80BB63C compare RESULT, 0 - jumpeq MossdeepCity_House4_EventScript_15AB6D + goto_if_eq MossdeepCity_House4_EventScript_15AB6D special GetSecretBaseNearbyMapName msgbox MossdeepCity_House4_Text_18E17E, 4 release @@ -34,8 +34,8 @@ MossdeepCity_House4_EventScript_15AB6D:: @ 815AB6D MossdeepCity_House4_EventScript_15AB77:: @ 815AB77 lock faceplayer - checksound - pokecry SPECIES_SKITTY, 0 + waitse + playpokecry SPECIES_SKITTY, 0 msgbox MossdeepCity_House4_Text_18E1E1, 4 waitpokecry release diff --git a/data/scripts/maps/MossdeepCity_Mart.inc b/data/scripts/maps/MossdeepCity_Mart.inc index d1e861b99..ce5845c81 100644 --- a/data/scripts/maps/MossdeepCity_Mart.inc +++ b/data/scripts/maps/MossdeepCity_Mart.inc @@ -5,7 +5,7 @@ MossdeepCity_Mart_EventScript_15A926:: @ 815A926 lock faceplayer message MossdeepCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart MossdeepCity_Mart_Items msgbox MossdeepCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc b/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc index 988608ffd..4ed3ea57e 100644 --- a/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ MossdeepCity_PokemonCenter_1F_MapScript1_15A8D6:: @ 815A8D6 MossdeepCity_PokemonCenter_1F_EventScript_15A8DA:: @ 815A8DA setvar 0x800b, 1 call MossdeepCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc b/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc index db31e4c62..260cb4b6e 100644 --- a/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc +++ b/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc @@ -4,16 +4,16 @@ MossdeepCity_SpaceCenter_1F_MapScripts:: @ 815AB8A MossdeepCity_SpaceCenter_1F_EventScript_15AB8B:: @ 815AB8B lock faceplayer - checkdailyflags - specialval RESULT, GetWeekCount - buffernum 0, RESULT + dodailyevents + specialvar RESULT, GetWeekCount + getnumberstring 0, RESULT compare RESULT, 0 - callif 1, MossdeepCity_SpaceCenter_1F_EventScript_15ABBA + call_if 1, MossdeepCity_SpaceCenter_1F_EventScript_15ABBA compare RESULT, 1 - callif 4, MossdeepCity_SpaceCenter_1F_EventScript_15ABC3 - closebutton - move LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D - waitmove 0 + call_if 4, MossdeepCity_SpaceCenter_1F_EventScript_15ABC3 + closemessage + applymovement LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D + waitmovement 0 release end @@ -33,11 +33,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_15ABD5:: @ 815ABD5 lock faceplayer checkflag 192 - jumpeq MossdeepCity_SpaceCenter_1F_EventScript_15AC0C + goto_if_eq MossdeepCity_SpaceCenter_1F_EventScript_15AC0C msgbox MossdeepCity_SpaceCenter_1F_Text_18E335, 4 giveitem ITEM_SUN_STONE compare RESULT, 0 - jumpeq MossdeepCity_SpaceCenter_1F_EventScript_1A029B + goto_if_eq MossdeepCity_SpaceCenter_1F_EventScript_1A029B setflag 192 msgbox MossdeepCity_SpaceCenter_1F_Text_18E39B, 4 release @@ -56,8 +56,8 @@ MossdeepCity_SpaceCenter_1F_EventScript_15AC1F:: @ 815AC1F lock faceplayer msgbox MossdeepCity_SpaceCenter_1F_Text_18E427, 4 - closebutton - move LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/MossdeepCity_StevensHouse.inc b/data/scripts/maps/MossdeepCity_StevensHouse.inc index d4477bd39..8bf899780 100644 --- a/data/scripts/maps/MossdeepCity_StevensHouse.inc +++ b/data/scripts/maps/MossdeepCity_StevensHouse.inc @@ -6,7 +6,7 @@ MossdeepCity_StevensHouse_MapScripts:: @ 815A9C5 MossdeepCity_StevensHouse_MapScript1_15A9D5:: @ 815A9D5 checkflag 2052 - callif 0, MossdeepCity_StevensHouse_EventScript_15A9DF + call_if 0, MossdeepCity_StevensHouse_EventScript_15A9DF end MossdeepCity_StevensHouse_EventScript_15A9DF:: @ 815A9DF @@ -15,12 +15,12 @@ MossdeepCity_StevensHouse_EventScript_15A9DF:: @ 815A9DF MossdeepCity_StevensHouse_MapScript1_15A9E9:: @ 815A9E9 compare 0x40c6, 1 - callif 1, MossdeepCity_StevensHouse_EventScript_15A9F5 + call_if 1, MossdeepCity_StevensHouse_EventScript_15A9F5 end MossdeepCity_StevensHouse_EventScript_15A9F5:: @ 815A9F5 - movespriteperm 1, 6, 5 - spritebehave 1, 7 + setobjectxyperm 1, 6, 5 + setobjectmovementtype 1, 7 return MossdeepCity_StevensHouse_MapScript2_15AA01:: @ 815AA01 @@ -29,24 +29,24 @@ MossdeepCity_StevensHouse_MapScript2_15AA01:: @ 815AA01 MossdeepCity_StevensHouse_EventScript_15AA0B:: @ 815AA0B lockall - move 1, MossdeepCity_StevensHouse_Movement_1A083F - waitmove 0 - playsfx 21 - move 1, MossdeepCity_StevensHouse_Movement_1A0833 - waitmove 0 - move 1, MossdeepCity_StevensHouse_Movement_1A0835 - waitmove 0 - move 1, MossdeepCity_StevensHouse_Movement_15AA6E - waitmove 0 + applymovement 1, MossdeepCity_StevensHouse_Movement_1A083F + waitmovement 0 + playse 21 + applymovement 1, MossdeepCity_StevensHouse_Movement_1A0833 + waitmovement 0 + applymovement 1, MossdeepCity_StevensHouse_Movement_1A0835 + waitmovement 0 + applymovement 1, MossdeepCity_StevensHouse_Movement_15AA6E + waitmovement 0 msgbox MossdeepCity_StevensHouse_Text_18DA77, 4 giveitem ITEM_HM08 setflag 123 setflag 302 msgbox MossdeepCity_StevensHouse_Text_18DB22, 4 - closebutton - pause 20 - move 1, MossdeepCity_StevensHouse_Movement_15AA76 - waitmove 0 + closemessage + delay 20 + applymovement 1, MossdeepCity_StevensHouse_Movement_15AA76 + waitmovement 0 setvar 0x40c6, 1 releaseall end @@ -73,21 +73,21 @@ MossdeepCity_StevensHouse_EventScript_15AA7C:: @ 815AA7C lockall msgbox MossdeepCity_StevensHouse_Text_18DD12, 5 compare RESULT, 0 - jumpeq MossdeepCity_StevensHouse_EventScript_15AAE6 + goto_if_eq MossdeepCity_StevensHouse_EventScript_15AAE6 countpokemon compare RESULT, 6 - jumpeq MossdeepCity_StevensHouse_EventScript_15AADC + goto_if_eq MossdeepCity_StevensHouse_EventScript_15AADC copyvar 0x8004, RESULT - disappear 2 - fanfare 370 + removeobject 2 + playfanfare 370 message MossdeepCity_StevensHouse_Text_18DD61 waitfanfare - waittext - givepokemon SPECIES_BELDUM, 5, ITEM_NONE, 0x0, 0x0, 0 - bufferpoke 1, SPECIES_BELDUM + waitmessage + givepoke SPECIES_BELDUM, 5, ITEM_NONE, 0x0, 0x0, 0 + getspeciesname 1, SPECIES_BELDUM msgbox MossdeepCity_StevensHouse_Text_1A1102, 5 compare RESULT, 1 - callif 1, MossdeepCity_StevensHouse_EventScript_1A0678 + call_if 1, MossdeepCity_StevensHouse_EventScript_1A0678 setflag 968 setflag 298 releaseall @@ -114,7 +114,7 @@ MossdeepCity_StevensHouse_EventScript_15AAF9:: @ 815AAF9 MossdeepCity_StevensHouse_EventScript_15AB02:: @ 815AB02 lockall checkflag 302 - jumpeq MossdeepCity_StevensHouse_EventScript_15AB16 + goto_if_eq MossdeepCity_StevensHouse_EventScript_15AB16 msgbox MossdeepCity_StevensHouse_Text_18DF1A, 4 releaseall end diff --git a/data/scripts/maps/MtChimney.inc b/data/scripts/maps/MtChimney.inc index fdebcf102..a8eec9a32 100644 --- a/data/scripts/maps/MtChimney.inc +++ b/data/scripts/maps/MtChimney.inc @@ -15,46 +15,46 @@ MtChimney_MapScript1_15CF92:: @ 815CF92 MtChimney_EventScript_15CF95:: @ 815CF95 lock faceplayer - showmoney 0, 0 - snop + showmoneybox 0, 0 + nop msgbox MtChimney_Text_195760, 5 compare RESULT, 0 - jumpeq MtChimney_EventScript_15D00B + goto_if_eq MtChimney_EventScript_15D00B checkmoney 0xc8, 0 compare RESULT, 0 - jumpeq MtChimney_EventScript_15D018 + goto_if_eq MtChimney_EventScript_15D018 msgbox MtChimney_Text_1957A9, 4 checkitemspace ITEM_LAVA_COOKIE, 1 compare RESULT, 1 - callif 1, MtChimney_EventScript_15D000 + call_if 1, MtChimney_EventScript_15D000 giveitem ITEM_LAVA_COOKIE compare RESULT, 0 - jumpeq MtChimney_EventScript_15CFF3 - hidemoney 0, 0 + goto_if_eq MtChimney_EventScript_15CFF3 + hidemoneybox 0, 0 release end MtChimney_EventScript_15CFF3:: @ 815CFF3 msgbox MtChimney_Text_1A0CC2, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end MtChimney_EventScript_15D000:: @ 815D000 - paymoney 0xc8, 0 - updatemoney 0, 0 - snop + takemoney 0xc8, 0 + updatemoneybox 0, 0 + nop return MtChimney_EventScript_15D00B:: @ 815D00B msgbox MtChimney_Text_1957F7, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end MtChimney_EventScript_15D018:: @ 815D018 msgbox MtChimney_Text_1957BA, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end @@ -407,12 +407,12 @@ MtChimney_EventScript_15D174:: @ 815D174 MtChimney_EventScript_15D17D:: @ 815D17D lockall checkflag 139 - jumpif 0, MtChimney_EventScript_15D1D0 + goto_if 0, MtChimney_EventScript_15D1D0 checkflag 115 - jumpeq MtChimney_EventScript_15D1C6 + goto_if_eq MtChimney_EventScript_15D1C6 msgbox MtChimney_Text_195870, 5 compare RESULT, 0 - jumpeq MtChimney_EventScript_15D1BC + goto_if_eq MtChimney_EventScript_15D1BC msgbox MtChimney_Text_1958C6, 4 giveitem ITEM_METEORITE setflag 115 @@ -440,9 +440,9 @@ MtChimney_EventScript_15D1DA:: @ 815D1DA MtChimney_EventScript_15D1E3:: @ 815D1E3 trainerbattle 0, OPPONENT_SHELBY_1, 0, MtChimney_Text_19597F, MtChimney_Text_1959D8 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MtChimney_EventScript_15D20A + goto_if_eq MtChimney_EventScript_15D20A msgbox MtChimney_Text_195A04, 6 end diff --git a/data/scripts/maps/MtChimney_CableCarStation.inc b/data/scripts/maps/MtChimney_CableCarStation.inc index 24101b0cb..9d99eb5fb 100644 --- a/data/scripts/maps/MtChimney_CableCarStation.inc +++ b/data/scripts/maps/MtChimney_CableCarStation.inc @@ -5,12 +5,12 @@ MtChimney_CableCarStation_MapScripts:: @ 815C0FA MtChimney_CableCarStation_MapScript1_15C105:: @ 815C105 compare 0x40a3, 1 - callif 1, MtChimney_CableCarStation_EventScript_15C111 + call_if 1, MtChimney_CableCarStation_EventScript_15C111 end MtChimney_CableCarStation_EventScript_15C111:: @ 815C111 - movespriteperm 1, 5, 4 - spritebehave 1, 10 + setobjectxyperm 1, 5, 4 + setobjectmovementtype 1, 10 return MtChimney_CableCarStation_MapScript2_15C11D:: @ 815C11D @@ -19,12 +19,12 @@ MtChimney_CableCarStation_MapScript2_15C11D:: @ 815C11D MtChimney_CableCarStation_EventScript_15C127:: @ 815C127 lockall - move 255, MtChimney_CableCarStation_Movement_15C1B4 - move 1, MtChimney_CableCarStation_Movement_15C1AA - waitmove 0 + applymovement 255, MtChimney_CableCarStation_Movement_15C1B4 + applymovement 1, MtChimney_CableCarStation_Movement_15C1AA + waitmovement 0 setvar 0x40a3, 0 - movespriteperm 1, 6, 7 - spritebehave 1, 8 + setobjectxyperm 1, 6, 7 + setobjectmovementtype 1, 8 releaseall end @@ -33,20 +33,20 @@ MtChimney_CableCarStation_EventScript_15C14B:: @ 815C14B faceplayer msgbox MtChimney_CableCarStation_Text_19256A, 5 compare RESULT, 1 - jumpeq MtChimney_CableCarStation_EventScript_15C16C + goto_if_eq MtChimney_CableCarStation_EventScript_15C16C compare RESULT, 0 - jumpeq MtChimney_CableCarStation_EventScript_15C19B + goto_if_eq MtChimney_CableCarStation_EventScript_15C19B end MtChimney_CableCarStation_EventScript_15C16C:: @ 815C16C msgbox MtChimney_CableCarStation_Text_1925A9, 4 - closebutton - move 1, MtChimney_CableCarStation_Movement_15C1A5 - move 255, MtChimney_CableCarStation_Movement_15C1AF - waitmove 0 + closemessage + applymovement 1, MtChimney_CableCarStation_Movement_15C1A5 + applymovement 255, MtChimney_CableCarStation_Movement_15C1AF + waitmovement 0 setvar 0x8004, 1 setvar 0x40a3, 2 - inccounter GAME_STAT_RODE_CABLE_CAR + incrementgamestat GAME_STAT_RODE_CABLE_CAR special CableCarWarp special sub_8123218 waitstate diff --git a/data/scripts/maps/MtPyre_1F.inc b/data/scripts/maps/MtPyre_1F.inc index 805c4a8d3..026d54bfe 100644 --- a/data/scripts/maps/MtPyre_1F.inc +++ b/data/scripts/maps/MtPyre_1F.inc @@ -5,11 +5,11 @@ MtPyre_1F_EventScript_15D323:: @ 815D323 lock faceplayer checkflag 282 - jumpeq MtPyre_1F_EventScript_15D352 + goto_if_eq MtPyre_1F_EventScript_15D352 msgbox MtPyre_1F_Text_196151, 4 giveitem ITEM_CLEANSE_TAG compare RESULT, 0 - jumpeq MtPyre_1F_EventScript_1A029B + goto_if_eq MtPyre_1F_EventScript_1A029B setflag 282 release end diff --git a/data/scripts/maps/MtPyre_2F.inc b/data/scripts/maps/MtPyre_2F.inc index c44251af7..8d48dac84 100644 --- a/data/scripts/maps/MtPyre_2F.inc +++ b/data/scripts/maps/MtPyre_2F.inc @@ -6,7 +6,7 @@ MtPyre_2F_MapScripts:: @ 815D36E MtPyre_2F_MapScript1_15D37E:: @ 815D37E tileeffect 7 - warp5 MtPyre_1F, 255, 0, 0 + setholewarp MtPyre_1F, 255, 0, 0 end MtPyre_2F_EventScript_15D389:: @ 815D389 diff --git a/data/scripts/maps/MtPyre_6F.inc b/data/scripts/maps/MtPyre_6F.inc index 657b4ef15..433b533b3 100644 --- a/data/scripts/maps/MtPyre_6F.inc +++ b/data/scripts/maps/MtPyre_6F.inc @@ -3,9 +3,9 @@ MtPyre_6F_MapScripts:: @ 815D447 MtPyre_6F_EventScript_15D448:: @ 815D448 trainerbattle 0, OPPONENT_VALERIE_1, 0, MtPyre_6F_Text_1969FE, MtPyre_6F_Text_196A30 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MtPyre_6F_EventScript_15D46F + goto_if_eq MtPyre_6F_EventScript_15D46F msgbox MtPyre_6F_Text_196A4C, 6 end diff --git a/data/scripts/maps/MtPyre_Exterior.inc b/data/scripts/maps/MtPyre_Exterior.inc index efffc7c3b..550f74d9a 100644 --- a/data/scripts/maps/MtPyre_Exterior.inc +++ b/data/scripts/maps/MtPyre_Exterior.inc @@ -9,7 +9,7 @@ MtPyre_Exterior_MapScript1_15D48C:: @ 815D48C MtPyre_Exterior_EventScript_15D492:: @ 815D492 getplayerxy 0x4000, 0x4001 compare 0x4001, 12 - jumpif 0, MtPyre_Exterior_EventScript_15D4A3 + goto_if 0, MtPyre_Exterior_EventScript_15D4A3 return MtPyre_Exterior_EventScript_15D4A3:: @ 815D4A3 diff --git a/data/scripts/maps/MtPyre_Summit.inc b/data/scripts/maps/MtPyre_Summit.inc index e352ac30e..533fb6e90 100644 --- a/data/scripts/maps/MtPyre_Summit.inc +++ b/data/scripts/maps/MtPyre_Summit.inc @@ -9,55 +9,55 @@ MtPyre_Summit_MapScript1_15D4B7:: @ 815D4B7 MtPyre_Summit_EventScript_15D4BD:: @ 815D4BD lockall setvar 0x8008, 0 - jump MtPyre_Summit_EventScript_15D4E1 + goto MtPyre_Summit_EventScript_15D4E1 end MtPyre_Summit_EventScript_15D4C9:: @ 815D4C9 lockall setvar 0x8008, 1 - jump MtPyre_Summit_EventScript_15D4E1 + goto MtPyre_Summit_EventScript_15D4E1 end MtPyre_Summit_EventScript_15D4D5:: @ 815D4D5 lockall setvar 0x8008, 2 - jump MtPyre_Summit_EventScript_15D4E1 + goto MtPyre_Summit_EventScript_15D4E1 end MtPyre_Summit_EventScript_15D4E1:: @ 815D4E1 - move 255, MtPyre_Summit_Movement_1A0841 - waitmove 0 - move 2, MtPyre_Summit_Movement_1A0845 - waitmove 0 - pause 50 + applymovement 255, MtPyre_Summit_Movement_1A0841 + waitmovement 0 + applymovement 2, MtPyre_Summit_Movement_1A0845 + waitmovement 0 + delay 50 compare 0x8008, 0 - callif 1, MtPyre_Summit_EventScript_15D593 + call_if 1, MtPyre_Summit_EventScript_15D593 compare 0x8008, 1 - callif 1, MtPyre_Summit_EventScript_15D59E + call_if 1, MtPyre_Summit_EventScript_15D59E compare 0x8008, 2 - callif 1, MtPyre_Summit_EventScript_15D59F + call_if 1, MtPyre_Summit_EventScript_15D59F .ifdef SAPPHIRE msgbox UnknownString_81B52B0, 4 .else msgbox MtPyre_Summit_Text_1B5EEC, 4 .endif - closebutton + closemessage fadescreen 1 - disappear 2 - disappear 4 - disappear 5 - disappear 6 + removeobject 2 + removeobject 4 + removeobject 5 + removeobject 6 setflag 916 setflag 917 fadescreen 0 - pause 20 + delay 20 call MtPyre_Summit_EventScript_15D57A compare 0x8008, 0 - callif 1, MtPyre_Summit_EventScript_15D5AA + call_if 1, MtPyre_Summit_EventScript_15D5AA compare 0x8008, 1 - callif 1, MtPyre_Summit_EventScript_15D5BF + call_if 1, MtPyre_Summit_EventScript_15D5BF compare 0x8008, 2 - callif 1, MtPyre_Summit_EventScript_15D5CA + call_if 1, MtPyre_Summit_EventScript_15D5CA .ifdef SAPPHIRE msgbox UnknownString_81B53AB, 4 .else @@ -78,35 +78,35 @@ MtPyre_Summit_EventScript_15D57A:: @ 815D57A return MtPyre_Summit_EventScript_15D593:: @ 815D593 - move 2, MtPyre_Summit_Movement_15D5E9 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D5E9 + waitmovement 0 return MtPyre_Summit_EventScript_15D59E:: @ 815D59E return MtPyre_Summit_EventScript_15D59F:: @ 815D59F - move 2, MtPyre_Summit_Movement_15D5EC - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D5EC + waitmovement 0 return MtPyre_Summit_EventScript_15D5AA:: @ 815D5AA - move 3, MtPyre_Summit_Movement_15D5DF - waitmove 0 - move 255, MtPyre_Summit_Movement_1A0843 - waitmove 0 + applymovement 3, MtPyre_Summit_Movement_15D5DF + waitmovement 0 + applymovement 255, MtPyre_Summit_Movement_1A0843 + waitmovement 0 return MtPyre_Summit_EventScript_15D5BF:: @ 815D5BF - move 3, MtPyre_Summit_Movement_15D5E3 - waitmove 0 + applymovement 3, MtPyre_Summit_Movement_15D5E3 + waitmovement 0 return MtPyre_Summit_EventScript_15D5CA:: @ 815D5CA - move 3, MtPyre_Summit_Movement_15D5E5 - waitmove 0 - move 255, MtPyre_Summit_Movement_1A083F - waitmove 0 + applymovement 3, MtPyre_Summit_Movement_15D5E5 + waitmovement 0 + applymovement 255, MtPyre_Summit_Movement_1A083F + waitmovement 0 return MtPyre_Summit_Movement_15D5DF:: @ 815D5DF @@ -144,9 +144,9 @@ MtPyre_Summit_EventScript_15D5EF:: @ 815D5EF msgbox MtPyre_Summit_Text_1B64B3, 5 .endif compare RESULT, 1 - callif 1, MtPyre_Summit_EventScript_15D611 + call_if 1, MtPyre_Summit_EventScript_15D611 compare RESULT, 0 - callif 1, MtPyre_Summit_EventScript_15D61A + call_if 1, MtPyre_Summit_EventScript_15D61A release end @@ -170,11 +170,11 @@ MtPyre_Summit_EventScript_15D623:: @ 815D623 lock faceplayer checkflag 259 - jumpeq MtPyre_Summit_EventScript_15D6C4 + goto_if_eq MtPyre_Summit_EventScript_15D6C4 checkflag 113 - jumpeq MtPyre_Summit_EventScript_15D64A + goto_if_eq MtPyre_Summit_EventScript_15D64A checkflag 129 - jumpeq MtPyre_Summit_EventScript_15D6BA + goto_if_eq MtPyre_Summit_EventScript_15D6BA .ifdef SAPPHIRE msgbox UnknownString_81B54BE, 4 .else @@ -190,21 +190,21 @@ MtPyre_Summit_EventScript_15D64A:: @ 815D64A msgbox MtPyre_Summit_Text_1B6283, 5 .endif compare RESULT, 1 - jumpeq MtPyre_Summit_EventScript_15D669 + goto_if_eq MtPyre_Summit_EventScript_15D669 compare RESULT, 0 - jumpeq MtPyre_Summit_EventScript_15D69B + goto_if_eq MtPyre_Summit_EventScript_15D69B end MtPyre_Summit_EventScript_15D669:: @ 815D669 setvar 0x8004, ITEM_RED_OR_BLUE_ORB call MtPyre_Summit_EventScript_1A067F - closebutton - move LAST_TALKED, MtPyre_Summit_Movement_1A0841 - waitmove 0 - pause 40 - move LAST_TALKED, MtPyre_Summit_Movement_1A0839 - waitmove 0 - pause 10 + closemessage + applymovement LAST_TALKED, MtPyre_Summit_Movement_1A0841 + waitmovement 0 + delay 40 + applymovement LAST_TALKED, MtPyre_Summit_Movement_1A0839 + waitmovement 0 + delay 10 .ifdef SAPPHIRE msgbox UnknownString_81B5762, 4 .else @@ -221,9 +221,9 @@ MtPyre_Summit_EventScript_15D69B:: @ 815D69B msgbox MtPyre_Summit_Text_1B62E7, 5 .endif compare RESULT, 1 - jumpeq MtPyre_Summit_EventScript_15D669 + goto_if_eq MtPyre_Summit_EventScript_15D669 compare RESULT, 0 - jumpeq MtPyre_Summit_EventScript_15D69B + goto_if_eq MtPyre_Summit_EventScript_15D69B end MtPyre_Summit_EventScript_15D6BA:: @ 815D6BA @@ -247,78 +247,78 @@ MtPyre_Summit_EventScript_15D6C4:: @ 815D6C4 MtPyre_Summit_EventScript_15D6CE:: @ 815D6CE lockall setvar 0x8008, 0 - jump MtPyre_Summit_EventScript_15D6F2 + goto MtPyre_Summit_EventScript_15D6F2 end MtPyre_Summit_EventScript_15D6DA:: @ 815D6DA lockall setvar 0x8008, 1 - jump MtPyre_Summit_EventScript_15D6F2 + goto MtPyre_Summit_EventScript_15D6F2 end MtPyre_Summit_EventScript_15D6E6:: @ 815D6E6 lockall setvar 0x8008, 2 - jump MtPyre_Summit_EventScript_15D6F2 + goto MtPyre_Summit_EventScript_15D6F2 end MtPyre_Summit_EventScript_15D6F2:: @ 815D6F2 - move 255, MtPyre_Summit_Movement_1A0841 - waitmove 0 - move 2, MtPyre_Summit_Movement_1A0845 - waitmove 0 - pause 50 + applymovement 255, MtPyre_Summit_Movement_1A0841 + waitmovement 0 + applymovement 2, MtPyre_Summit_Movement_1A0845 + waitmovement 0 + delay 50 compare 0x8008, 0 - callif 1, MtPyre_Summit_EventScript_15D75E + call_if 1, MtPyre_Summit_EventScript_15D75E compare 0x8008, 1 - callif 1, MtPyre_Summit_EventScript_15D769 + call_if 1, MtPyre_Summit_EventScript_15D769 compare 0x8008, 2 - callif 1, MtPyre_Summit_EventScript_15D774 + call_if 1, MtPyre_Summit_EventScript_15D774 .ifdef SAPPHIRE msgbox UnknownString_81B5BFC, 4 .else msgbox MtPyre_Summit_Text_1B6848, 4 .endif - closebutton + closemessage compare 0x8008, 0 - callif 1, MtPyre_Summit_EventScript_15D77F + call_if 1, MtPyre_Summit_EventScript_15D77F compare 0x8008, 1 - callif 1, MtPyre_Summit_EventScript_15D78A + call_if 1, MtPyre_Summit_EventScript_15D78A compare 0x8008, 2 - callif 1, MtPyre_Summit_EventScript_15D795 - disappear 2 + call_if 1, MtPyre_Summit_EventScript_15D795 + removeobject 2 setvar 0x40b9, 3 releaseall end MtPyre_Summit_EventScript_15D75E:: @ 815D75E - move 2, MtPyre_Summit_Movement_15D7A0 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7A0 + waitmovement 0 return MtPyre_Summit_EventScript_15D769:: @ 815D769 - move 2, MtPyre_Summit_Movement_15D7A3 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7A3 + waitmovement 0 return MtPyre_Summit_EventScript_15D774:: @ 815D774 - move 2, MtPyre_Summit_Movement_15D7A4 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7A4 + waitmovement 0 return MtPyre_Summit_EventScript_15D77F:: @ 815D77F - move 2, MtPyre_Summit_Movement_15D7A7 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7A7 + waitmovement 0 return MtPyre_Summit_EventScript_15D78A:: @ 815D78A - move 2, MtPyre_Summit_Movement_15D7B0 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7B0 + waitmovement 0 return MtPyre_Summit_EventScript_15D795:: @ 815D795 - move 2, MtPyre_Summit_Movement_15D7B9 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7B9 + waitmovement 0 return MtPyre_Summit_Movement_15D7A0:: @ 815D7A0 diff --git a/data/scripts/maps/NewMauville_Entrance.inc b/data/scripts/maps/NewMauville_Entrance.inc index 547fc72e7..6429ff2f9 100644 --- a/data/scripts/maps/NewMauville_Entrance.inc +++ b/data/scripts/maps/NewMauville_Entrance.inc @@ -5,7 +5,7 @@ NewMauville_Entrance_MapScripts:: @ 815E48A NewMauville_Entrance_MapScript1_15E495:: @ 815E495 compare 0x40ba, 0 - callif 1, NewMauville_Entrance_EventScript_15E4A1 + call_if 1, NewMauville_Entrance_EventScript_15E4A1 end NewMauville_Entrance_EventScript_15E4A1:: @ 815E4A1 @@ -23,15 +23,15 @@ NewMauville_Entrance_MapScript1_15E4D8:: @ 815E4D8 NewMauville_Entrance_EventScript_15E4DC:: @ 815E4DC lockall - move 255, NewMauville_Entrance_Movement_1A0841 - waitmove 0 + applymovement 255, NewMauville_Entrance_Movement_1A0841 + waitmovement 0 msgbox NewMauville_Entrance_Text_1982C0, 4 checkitem ITEM_BASEMENT_KEY, 1 compare RESULT, 0 - jumpeq NewMauville_Entrance_EventScript_15E55D + goto_if_eq NewMauville_Entrance_EventScript_15E55D msgbox NewMauville_Entrance_Text_1982D4, 5 compare RESULT, 0 - jumpeq NewMauville_Entrance_EventScript_15E55D + goto_if_eq NewMauville_Entrance_EventScript_15E55D msgbox NewMauville_Entrance_Text_1982EA, 4 setmaptile 3, 0, 707, 0 setmaptile 4, 0, 708, 0 @@ -40,7 +40,7 @@ NewMauville_Entrance_EventScript_15E4DC:: @ 815E4DC setmaptile 4, 1, 716, 0 setmaptile 5, 1, 717, 1 special DrawWholeMapView - playsfx 20 + playse 20 setvar 0x40ba, 1 releaseall end diff --git a/data/scripts/maps/NewMauville_Inside.inc b/data/scripts/maps/NewMauville_Inside.inc index b088b8e7d..2d2a46ab4 100644 --- a/data/scripts/maps/NewMauville_Inside.inc +++ b/data/scripts/maps/NewMauville_Inside.inc @@ -6,15 +6,15 @@ NewMauville_Inside_MapScripts:: @ 815E55F NewMauville_Inside_MapScript1_15E56F:: @ 815E56F compare 0x4001, 1 - callif 1, NewMauville_Inside_EventScript_15E5DA + call_if 1, NewMauville_Inside_EventScript_15E5DA compare 0x4002, 1 - callif 1, NewMauville_Inside_EventScript_15E728 + call_if 1, NewMauville_Inside_EventScript_15E728 checkflag 2145 - callif 1, NewMauville_Inside_EventScript_15E58F + call_if 1, NewMauville_Inside_EventScript_15E58F end NewMauville_Inside_EventScript_15E58F:: @ 815E58F - disappear LAST_TALKED + removeobject LAST_TALKED return NewMauville_Inside_MapScript1_15E593:: @ 815E593 @@ -24,14 +24,14 @@ NewMauville_Inside_MapScript1_15E593:: @ 815E593 NewMauville_Inside_MapScript1_15E59E:: @ 815E59E compare 0x40ba, 2 - callif 1, NewMauville_Inside_EventScript_15E88B + call_if 1, NewMauville_Inside_EventScript_15E88B end NewMauville_Inside_EventScript_15E5AA:: @ 815E5AA lockall setvar 0x4001, 1 setvar 0x4002, 0 - playsfx 21 + playse 21 call NewMauville_Inside_EventScript_15E5DA special DrawWholeMapView releaseall @@ -41,7 +41,7 @@ NewMauville_Inside_EventScript_15E5C2:: @ 815E5C2 lockall setvar 0x4001, 0 setvar 0x4002, 1 - playsfx 21 + playse 21 call NewMauville_Inside_EventScript_15E728 special DrawWholeMapView releaseall @@ -151,7 +151,7 @@ NewMauville_Inside_EventScript_15E88B:: @ 815E88B NewMauville_Inside_EventScript_15E8E0:: @ 815E8E0 lockall compare 0x40ba, 2 - jumpeq NewMauville_Inside_EventScript_15E8F6 + goto_if_eq NewMauville_Inside_EventScript_15E8F6 msgbox NewMauville_Inside_Text_198315, 4 releaseall end @@ -165,9 +165,9 @@ NewMauville_Inside_EventScript_15E900:: @ 815E900 lock faceplayer setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE - checksound - pokecry SPECIES_VOLTORB, 2 - pause 40 + waitse + playpokecry SPECIES_VOLTORB, 2 + delay 40 waitpokecry setflag 974 setflag 2145 @@ -180,9 +180,9 @@ NewMauville_Inside_EventScript_15E91E:: @ 815E91E lock faceplayer setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE - checksound - pokecry SPECIES_VOLTORB, 2 - pause 40 + waitse + playpokecry SPECIES_VOLTORB, 2 + delay 40 waitpokecry setflag 975 setflag 2145 @@ -195,9 +195,9 @@ NewMauville_Inside_EventScript_15E93C:: @ 815E93C lock faceplayer setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE - checksound - pokecry SPECIES_VOLTORB, 2 - pause 40 + waitse + playpokecry SPECIES_VOLTORB, 2 + delay 40 waitpokecry setflag 976 setflag 2145 diff --git a/data/scripts/maps/OldaleTown.inc b/data/scripts/maps/OldaleTown.inc index 68ed80949..e80df2cd2 100644 --- a/data/scripts/maps/OldaleTown.inc +++ b/data/scripts/maps/OldaleTown.inc @@ -6,11 +6,11 @@ OldaleTown_MapScript1_14DD68:: @ 814DD68 call OldaleTown_EventScript_1A014E setflag 2064 checkflag 116 - callif 0, OldaleTown_EventScript_14DD92 + call_if 0, OldaleTown_EventScript_14DD92 checkflag 132 - callif 0, OldaleTown_EventScript_14DD9E + call_if 0, OldaleTown_EventScript_14DD9E checkflag 116 - callif 1, OldaleTown_EventScript_14DD8C + call_if 1, OldaleTown_EventScript_14DD8C end OldaleTown_EventScript_14DD8C:: @ 814DD8C @@ -18,13 +18,13 @@ OldaleTown_EventScript_14DD8C:: @ 814DD8C return OldaleTown_EventScript_14DD92:: @ 814DD92 - movespriteperm 3, 1, 11 - spritebehave 3, 9 + setobjectxyperm 3, 1, 11 + setobjectmovementtype 3, 9 return OldaleTown_EventScript_14DD9E:: @ 814DD9E - movespriteperm 2, 13, 14 - spritebehave 2, 8 + setobjectxyperm 2, 13, 14 + setobjectmovementtype 2, 8 return OldaleTown_EventScript_14DDAA:: @ 814DDAA @@ -39,13 +39,13 @@ OldaleTown_EventScript_14DDBC:: @ 814DDBC lock faceplayer checkflag 132 - jumpeq OldaleTown_EventScript_14DE79 + goto_if_eq OldaleTown_EventScript_14DE79 checkflag 1 - jumpeq OldaleTown_EventScript_14DE79 + goto_if_eq OldaleTown_EventScript_14DE79 setflag 1 - playmusic 420, 0 + playbgm 420, 0 msgbox OldaleTown_Text_16AEF2, 4 - closebutton + closemessage switch FACING case 1, OldaleTown_EventScript_14DE07 case 2, OldaleTown_EventScript_14DE1E @@ -53,34 +53,34 @@ OldaleTown_EventScript_14DDBC:: @ 814DDBC end OldaleTown_EventScript_14DE07:: @ 814DE07 - move 2, OldaleTown_Movement_14DE97 - move 255, OldaleTown_Movement_14DEC1 - waitmove 0 - jump OldaleTown_EventScript_14DE4C + applymovement 2, OldaleTown_Movement_14DE97 + applymovement 255, OldaleTown_Movement_14DEC1 + waitmovement 0 + goto OldaleTown_EventScript_14DE4C end OldaleTown_EventScript_14DE1E:: @ 814DE1E - move 2, OldaleTown_Movement_14DEA2 - move 255, OldaleTown_Movement_14DECB - waitmove 0 - jump OldaleTown_EventScript_14DE4C + applymovement 2, OldaleTown_Movement_14DEA2 + applymovement 255, OldaleTown_Movement_14DECB + waitmovement 0 + goto OldaleTown_EventScript_14DE4C end OldaleTown_EventScript_14DE35:: @ 814DE35 - move 255, OldaleTown_Movement_14DEB9 - move 2, OldaleTown_Movement_14DE8E - waitmove 0 - jump OldaleTown_EventScript_14DE4C + applymovement 255, OldaleTown_Movement_14DEB9 + applymovement 2, OldaleTown_Movement_14DE8E + waitmovement 0 + goto OldaleTown_EventScript_14DE4C end OldaleTown_EventScript_14DE4C:: @ 814DE4C msgbox OldaleTown_Text_16AF2F, 4 giveitem ITEM_POTION compare RESULT, 0 - jumpeq OldaleTown_EventScript_14DE83 + goto_if_eq OldaleTown_EventScript_14DE83 msgbox OldaleTown_Text_16AFE1, 4 setflag 132 - fadedefault + fadedefaultbgm release end @@ -91,7 +91,7 @@ OldaleTown_EventScript_14DE79:: @ 814DE79 OldaleTown_EventScript_14DE83:: @ 814DE83 msgbox OldaleTown_Text_1A0CC2, 4 - fadedefault + fadedefaultbgm release end @@ -196,23 +196,23 @@ OldaleTown_EventScript_14DEDF:: @ 814DEDF lock faceplayer checkflag 116 - jumpeq OldaleTown_EventScript_14DF26 + goto_if_eq OldaleTown_EventScript_14DF26 msgbox OldaleTown_Text_16B0CC, 4 - closebutton - move 3, OldaleTown_Movement_1A083D - waitmove 0 + closemessage + applymovement 3, OldaleTown_Movement_1A083D + waitmovement 0 release end OldaleTown_EventScript_14DEFF:: @ 814DEFF lockall - move 255, OldaleTown_Movement_14DFEC - move 3, OldaleTown_Movement_14DFEF - waitmove 0 + applymovement 255, OldaleTown_Movement_14DFEC + applymovement 3, OldaleTown_Movement_14DFEF + waitmovement 0 msgbox OldaleTown_Text_16B045, 4 - closebutton - move 3, OldaleTown_Movement_14DFF5 - waitmove 0 + closemessage + applymovement 3, OldaleTown_Movement_14DFF5 + waitmovement 0 releaseall end @@ -223,61 +223,61 @@ OldaleTown_EventScript_14DF26:: @ 814DF26 OldaleTown_EventScript_14DF30:: @ 814DF30 lockall - move 4, OldaleTown_Movement_1A0839 - waitmove 0 - jump OldaleTown_EventScript_14DF92 + applymovement 4, OldaleTown_Movement_1A0839 + waitmovement 0 + goto OldaleTown_EventScript_14DF92 end OldaleTown_EventScript_14DF41:: @ 814DF41 lockall - move 4, OldaleTown_Movement_14DFDE - waitmove 0 - move 255, OldaleTown_Movement_1A0843 - waitmove 0 - jump OldaleTown_EventScript_14DF92 + applymovement 4, OldaleTown_Movement_14DFDE + waitmovement 0 + applymovement 255, OldaleTown_Movement_1A0843 + waitmovement 0 + goto OldaleTown_EventScript_14DF92 end OldaleTown_EventScript_14DF5C:: @ 814DF5C lockall - move 4, OldaleTown_Movement_14DFE1 - waitmove 0 - move 255, OldaleTown_Movement_1A0843 - waitmove 0 - jump OldaleTown_EventScript_14DF92 + applymovement 4, OldaleTown_Movement_14DFE1 + waitmovement 0 + applymovement 255, OldaleTown_Movement_1A0843 + waitmovement 0 + goto OldaleTown_EventScript_14DF92 end OldaleTown_EventScript_14DF77:: @ 814DF77 lockall - move 4, OldaleTown_Movement_14DFE3 - waitmove 0 - move 255, OldaleTown_Movement_1A0843 - waitmove 0 - jump OldaleTown_EventScript_14DF92 + applymovement 4, OldaleTown_Movement_14DFE3 + waitmovement 0 + applymovement 255, OldaleTown_Movement_1A0843 + waitmovement 0 + goto OldaleTown_EventScript_14DF92 end OldaleTown_EventScript_14DF92:: @ 814DF92 - checkgender + checkplayergender compare RESULT, 0 - jumpeq OldaleTown_EventScript_14DFAA + goto_if_eq OldaleTown_EventScript_14DFAA compare RESULT, 1 - jumpeq OldaleTown_EventScript_14DFB8 + goto_if_eq OldaleTown_EventScript_14DFB8 end OldaleTown_EventScript_14DFAA:: @ 814DFAA msgbox OldaleTown_Text_16B196, 4 - jump OldaleTown_EventScript_14DFC6 + goto OldaleTown_EventScript_14DFC6 end OldaleTown_EventScript_14DFB8:: @ 814DFB8 msgbox OldaleTown_Text_16B1BE, 4 - jump OldaleTown_EventScript_14DFC6 + goto OldaleTown_EventScript_14DFC6 end OldaleTown_EventScript_14DFC6:: @ 814DFC6 - closebutton - move 4, OldaleTown_Movement_14DFE5 - waitmove 0 - disappear 4 + closemessage + applymovement 4, OldaleTown_Movement_14DFE5 + waitmovement 0 + removeobject 4 setvar 0x40c7, 2 setflag 979 releaseall diff --git a/data/scripts/maps/OldaleTown_Mart.inc b/data/scripts/maps/OldaleTown_Mart.inc index 3f4994890..b9698b58f 100644 --- a/data/scripts/maps/OldaleTown_Mart.inc +++ b/data/scripts/maps/OldaleTown_Mart.inc @@ -5,9 +5,9 @@ OldaleTown_Mart_EventScript_152F79:: @ 8152F79 lock faceplayer message OldaleTown_Mart_Text_1A0BE4 - waittext + waitmessage checkflag 116 - jumpeq OldaleTown_Mart_EventScript_152FA8 + goto_if_eq OldaleTown_Mart_EventScript_152FA8 pokemart OldaleTown_Mart_Items1 msgbox OldaleTown_Mart_Text_1A0C02, 4 release @@ -44,7 +44,7 @@ OldaleTown_Mart_EventScript_152FC6:: @ 8152FC6 lock faceplayer checkflag 116 - jumpeq OldaleTown_Mart_EventScript_152FDB + goto_if_eq OldaleTown_Mart_EventScript_152FDB msgbox OldaleTown_Mart_Text_174A8A, 4 release end diff --git a/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc b/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc index 4ba96ddc8..494f109fe 100644 --- a/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ OldaleTown_PokemonCenter_1F_MapScript1_152F0E:: @ 8152F0E OldaleTown_PokemonCenter_1F_EventScript_152F17:: @ 8152F17 setvar 0x800b, 1 call OldaleTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -27,7 +27,7 @@ OldaleTown_PokemonCenter_1F_EventScript_152F37:: @ 8152F37 lock faceplayer checkflag 2049 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_152F4C + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_152F4C msgbox OldaleTown_PokemonCenter_1F_Text_1749C0, 4 release end diff --git a/data/scripts/maps/PacifidlogTown_House2.inc b/data/scripts/maps/PacifidlogTown_House2.inc index e45f09de4..e04a8caae 100644 --- a/data/scripts/maps/PacifidlogTown_House2.inc +++ b/data/scripts/maps/PacifidlogTown_House2.inc @@ -4,30 +4,30 @@ PacifidlogTown_House2_MapScripts:: @ 8154167 PacifidlogTown_House2_EventScript_154168:: @ 8154168 lock faceplayer - checkdailyflags + dodailyevents call PacifidlogTown_House2_EventScript_1541B4 checkflag 299 - jumpeq PacifidlogTown_House2_EventScript_154254 + goto_if_eq PacifidlogTown_House2_EventScript_154254 checkflag 300 - callif 1, PacifidlogTown_House2_EventScript_1541CE + call_if 1, PacifidlogTown_House2_EventScript_1541CE checkflag 300 - callif 0, PacifidlogTown_House2_EventScript_1541D7 + call_if 0, PacifidlogTown_House2_EventScript_1541D7 setflag 300 - specialval RESULT, GetLeadMonFriendshipScore + specialvar RESULT, GetLeadMonFriendshipScore compare RESULT, 4 - jumpif 4, PacifidlogTown_House2_EventScript_1541EC - specialval RESULT, GetLeadMonFriendshipScore + goto_if 4, PacifidlogTown_House2_EventScript_1541EC + specialvar RESULT, GetLeadMonFriendshipScore compare RESULT, 2 - jumpif 4, PacifidlogTown_House2_EventScript_15421B - jump PacifidlogTown_House2_EventScript_154225 + goto_if 4, PacifidlogTown_House2_EventScript_15421B + goto PacifidlogTown_House2_EventScript_154225 end PacifidlogTown_House2_EventScript_1541B4:: @ 81541B4 checkflag 299 - jumpif 0, PacifidlogTown_House2_EventScript_1A14DC - specialval RESULT, sub_810F908 + goto_if 0, PacifidlogTown_House2_EventScript_1A14DC + specialvar RESULT, sub_810F908 compare RESULT, 0 - callif 1, PacifidlogTown_House2_EventScript_1541E8 + call_if 1, PacifidlogTown_House2_EventScript_1541E8 return PacifidlogTown_House2_EventScript_1541CE:: @ 81541CE @@ -47,7 +47,7 @@ PacifidlogTown_House2_EventScript_1541EC:: @ 81541EC msgbox PacifidlogTown_House2_Text_179169, 4 giveitem ITEM_TM27 compare RESULT, 0 - jumpeq PacifidlogTown_House2_EventScript_1A029B + goto_if_eq PacifidlogTown_House2_EventScript_1A029B setflag 299 special sub_810F950 msgbox PacifidlogTown_House2_Text_179283, 4 @@ -63,7 +63,7 @@ PacifidlogTown_House2_EventScript_154225:: @ 8154225 msgbox PacifidlogTown_House2_Text_17922D, 4 giveitem ITEM_TM21 compare RESULT, 0 - jumpeq PacifidlogTown_House2_EventScript_1A029B + goto_if_eq PacifidlogTown_House2_EventScript_1A029B setflag 299 special sub_810F950 msgbox PacifidlogTown_House2_Text_179283, 4 @@ -71,8 +71,8 @@ PacifidlogTown_House2_EventScript_154225:: @ 8154225 end PacifidlogTown_House2_EventScript_154254:: @ 8154254 - specialval RESULT, sub_810F908 - buffernum 0, RESULT + specialvar RESULT, sub_810F908 + getnumberstring 0, RESULT msgbox PacifidlogTown_House2_Text_1792F2, 4 release end @@ -80,8 +80,8 @@ PacifidlogTown_House2_EventScript_154254:: @ 8154254 PacifidlogTown_House2_EventScript_154267:: @ 8154267 lock faceplayer - checksound - pokecry SPECIES_AZURILL, 0 + waitse + playpokecry SPECIES_AZURILL, 0 msgbox PacifidlogTown_House2_Text_17938B, 4 waitpokecry msgbox PacifidlogTown_House2_Text_17939B, 4 @@ -91,8 +91,8 @@ PacifidlogTown_House2_EventScript_154267:: @ 8154267 PacifidlogTown_House2_EventScript_154282:: @ 8154282 lock faceplayer - checksound - pokecry SPECIES_AZURILL, 2 + waitse + playpokecry SPECIES_AZURILL, 2 msgbox PacifidlogTown_House2_Text_1793CC, 4 waitpokecry msgbox PacifidlogTown_House2_Text_1793DD, 4 diff --git a/data/scripts/maps/PacifidlogTown_House3.inc b/data/scripts/maps/PacifidlogTown_House3.inc index 6ab9a09b0..28b9dbd80 100644 --- a/data/scripts/maps/PacifidlogTown_House3.inc +++ b/data/scripts/maps/PacifidlogTown_House3.inc @@ -5,30 +5,30 @@ PacifidlogTown_House3_EventScript_15429E:: @ 815429E lock faceplayer checkflag 154 - jumpeq PacifidlogTown_House3_EventScript_154338 + goto_if_eq PacifidlogTown_House3_EventScript_154338 setvar 0x8008, 2 copyvar 0x8004, 0x8008 - specialval RESULT, sub_804D89C + specialvar RESULT, sub_804D89C copyvar 0x8009, RESULT msgbox PacifidlogTown_House3_Text_17940E, 5 compare RESULT, 0 - jumpeq PacifidlogTown_House3_EventScript_154320 + goto_if_eq PacifidlogTown_House3_EventScript_154320 special sub_80F9A0C waitstate copyvar 0x800a, 0x8004 compare 0x8004, 255 - jumpeq PacifidlogTown_House3_EventScript_154320 + goto_if_eq PacifidlogTown_House3_EventScript_154320 copyvar 0x8005, 0x800a - specialval RESULT, sub_804DB2C + specialvar RESULT, sub_804DB2C copyvar 0x800b, RESULT - comparevars RESULT, 0x8009 - jumpif 5, PacifidlogTown_House3_EventScript_15432A + compare RESULT, 0x8009 + goto_if 5, PacifidlogTown_House3_EventScript_15432A copyvar 0x8004, 0x8008 copyvar 0x8005, 0x800a special sub_804DB68 special sub_804E174 waitstate - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox PacifidlogTown_House3_Text_1794C4, 4 setflag 154 release @@ -40,7 +40,7 @@ PacifidlogTown_House3_EventScript_154320:: @ 8154320 end PacifidlogTown_House3_EventScript_15432A:: @ 815432A - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox PacifidlogTown_House3_Text_1794DF, 4 release end diff --git a/data/scripts/maps/PacifidlogTown_House4.inc b/data/scripts/maps/PacifidlogTown_House4.inc index e48644beb..b7a6c9f86 100644 --- a/data/scripts/maps/PacifidlogTown_House4.inc +++ b/data/scripts/maps/PacifidlogTown_House4.inc @@ -14,9 +14,9 @@ PacifidlogTown_House4_EventScript_15435E:: @ 815435E faceplayer msgbox PacifidlogTown_House4_Text_17963D, 5 compare RESULT, 1 - jumpeq PacifidlogTown_House4_EventScript_15437F + goto_if_eq PacifidlogTown_House4_EventScript_15437F compare RESULT, 0 - jumpeq PacifidlogTown_House4_EventScript_154389 + goto_if_eq PacifidlogTown_House4_EventScript_154389 end PacifidlogTown_House4_EventScript_15437F:: @ 815437F diff --git a/data/scripts/maps/PacifidlogTown_House5.inc b/data/scripts/maps/PacifidlogTown_House5.inc index dca1a51b0..46b1990df 100644 --- a/data/scripts/maps/PacifidlogTown_House5.inc +++ b/data/scripts/maps/PacifidlogTown_House5.inc @@ -4,9 +4,9 @@ PacifidlogTown_House5_MapScripts:: @ 8154393 PacifidlogTown_House5_EventScript_154394:: @ 8154394 lock faceplayer - specialval RESULT, IsMirageIslandPresent + specialvar RESULT, IsMirageIslandPresent compare RESULT, 1 - jumpeq PacifidlogTown_House5_EventScript_1543B0 + goto_if_eq PacifidlogTown_House5_EventScript_1543B0 msgbox PacifidlogTown_House5_Text_179718, 4 release end diff --git a/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc b/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc index 973f80a55..64dd5008c 100644 --- a/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ PacifidlogTown_PokemonCenter_1F_MapScript1_154105:: @ 8154105 @ 8154109 setvar 0x800b, 1 call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc index dc5efe243..1c2711b83 100644 --- a/data/scripts/maps/PetalburgCity.inc +++ b/data/scripts/maps/PetalburgCity.inc @@ -6,17 +6,17 @@ PetalburgCity_MapScripts:: @ 814B70C PetalburgCity_MapScript1_14B717:: @ 814B717 setflag 2070 compare 0x4057, 0 - callif 1, PetalburgCity_EventScript_14B731 + call_if 1, PetalburgCity_EventScript_14B731 compare 0x4057, 2 - callif 1, PetalburgCity_EventScript_14B739 + call_if 1, PetalburgCity_EventScript_14B739 end PetalburgCity_EventScript_14B731:: @ 814B731 - movespriteperm 9, 5, 11 + setobjectxyperm 9, 5, 11 return PetalburgCity_EventScript_14B739:: @ 814B739 - playmusicbattle 420 + savebgm 420 return PetalburgCity_MapScript2_14B73D:: @ 814B73D @@ -28,20 +28,20 @@ PetalburgCity_EventScript_14B747:: @ 814B747 setflag 0x4000 special SavePlayerParty special PutZigzagoonInPlayerParty - move 2, PetalburgCity_Movement_14B7ED - move 255, PetalburgCity_Movement_14B7CC - waitmove 0 + applymovement 2, PetalburgCity_Movement_14B7ED + applymovement 255, PetalburgCity_Movement_14B7CC + waitmovement 0 msgbox PetalburgCity_Text_16D361, 4 - special StartBattle_WallyTutorial + special ScrSpecial_StartWallyTutorialBattle waitstate msgbox PetalburgCity_Text_16D3DE, 4 - movecoords 2, PetalburgCity_Movement_1A083F, 0, 0 - waitmovexy 0, 0, 2 + applymovement 2, PetalburgCity_Movement_1A083F, 0, 0 + waitmovement 0, 0, 2 msgbox PetalburgCity_Text_16D408, 4 - closebutton + closemessage clearflag 0x4000 setvar 0x4057, 3 - fadedefault + fadedefaultbgm clearflag 0x4001 special LoadPlayerParty setvar 0x4085, 1 @@ -54,9 +54,9 @@ PetalburgCity_EventScript_14B7AC:: @ 814B7AC lock faceplayer msgbox PetalburgCity_Text_164490, 4 - closebutton - move 3, PetalburgCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 3, PetalburgCity_Movement_1A083D + waitmovement 0 release end @@ -157,114 +157,114 @@ PetalburgCity_EventScript_14B82D:: @ 814B82D PetalburgCity_EventScript_14B836:: @ 814B836 lockall setvar 0x8008, 0 - jump PetalburgCity_EventScript_14B866 + goto PetalburgCity_EventScript_14B866 end PetalburgCity_EventScript_14B842:: @ 814B842 lockall setvar 0x8008, 1 - jump PetalburgCity_EventScript_14B866 + goto PetalburgCity_EventScript_14B866 end PetalburgCity_EventScript_14B84E:: @ 814B84E lockall setvar 0x8008, 2 - jump PetalburgCity_EventScript_14B866 + goto PetalburgCity_EventScript_14B866 end PetalburgCity_EventScript_14B85A:: @ 814B85A lockall setvar 0x8008, 3 - jump PetalburgCity_EventScript_14B866 + goto PetalburgCity_EventScript_14B866 end PetalburgCity_EventScript_14B866:: @ 814B866 - move 9, PetalburgCity_Movement_1A0839 - waitmove 0 - playmusic 420, 0 - playsfx 21 - move 9, PetalburgCity_Movement_1A0833 - waitmove 0 - move 9, PetalburgCity_Movement_1A0835 - waitmove 0 + applymovement 9, PetalburgCity_Movement_1A0839 + waitmovement 0 + playbgm 420, 0 + playse 21 + applymovement 9, PetalburgCity_Movement_1A0833 + waitmovement 0 + applymovement 9, PetalburgCity_Movement_1A0835 + waitmovement 0 compare 0x8008, 0 - callif 1, PetalburgCity_EventScript_14B91B + call_if 1, PetalburgCity_EventScript_14B91B compare 0x8008, 1 - callif 1, PetalburgCity_EventScript_14B930 + call_if 1, PetalburgCity_EventScript_14B930 compare 0x8008, 2 - callif 1, PetalburgCity_EventScript_14B93B + call_if 1, PetalburgCity_EventScript_14B93B compare 0x8008, 3 - callif 1, PetalburgCity_EventScript_14B950 + call_if 1, PetalburgCity_EventScript_14B950 msgbox PetalburgCity_Text_16438A, 4 - closebutton + closemessage compare 0x8008, 0 - callif 1, PetalburgCity_EventScript_14B965 + call_if 1, PetalburgCity_EventScript_14B965 compare 0x8008, 1 - callif 1, PetalburgCity_EventScript_14B977 + call_if 1, PetalburgCity_EventScript_14B977 compare 0x8008, 2 - callif 1, PetalburgCity_EventScript_14B989 + call_if 1, PetalburgCity_EventScript_14B989 compare 0x8008, 3 - callif 1, PetalburgCity_EventScript_14B99B + call_if 1, PetalburgCity_EventScript_14B99B msgbox PetalburgCity_Text_164426, 4 - move 9, PetalburgCity_Movement_1A0843 - move 255, PetalburgCity_Movement_1A0843 - waitmove 0 + applymovement 9, PetalburgCity_Movement_1A0843 + applymovement 255, PetalburgCity_Movement_1A0843 + waitmovement 0 msgbox PetalburgCity_Text_164449, 4 - closebutton - move 9, PetalburgCity_Movement_14B9F4 - waitmove 0 - fadedefault + closemessage + applymovement 9, PetalburgCity_Movement_14B9F4 + waitmovement 0 + fadedefaultbgm releaseall end PetalburgCity_EventScript_14B91B:: @ 814B91B - move 9, PetalburgCity_Movement_14B9B1 - waitmove 0 - move 255, PetalburgCity_Movement_1A0845 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9B1 + waitmovement 0 + applymovement 255, PetalburgCity_Movement_1A0845 + waitmovement 0 return PetalburgCity_EventScript_14B930:: @ 814B930 - move 9, PetalburgCity_Movement_14B9B6 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9B6 + waitmovement 0 return PetalburgCity_EventScript_14B93B:: @ 814B93B - move 9, PetalburgCity_Movement_14B9B9 - waitmove 0 - move 255, PetalburgCity_Movement_1A0841 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9B9 + waitmovement 0 + applymovement 255, PetalburgCity_Movement_1A0841 + waitmovement 0 return PetalburgCity_EventScript_14B950:: @ 814B950 - move 9, PetalburgCity_Movement_14B9BE - waitmove 0 - move 255, PetalburgCity_Movement_1A0841 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9BE + waitmovement 0 + applymovement 255, PetalburgCity_Movement_1A0841 + waitmovement 0 return PetalburgCity_EventScript_14B965:: @ 814B965 - move 9, PetalburgCity_Movement_14B9C4 - move 255, PetalburgCity_Movement_14BA01 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9C4 + applymovement 255, PetalburgCity_Movement_14BA01 + waitmovement 0 return PetalburgCity_EventScript_14B977:: @ 814B977 - move 9, PetalburgCity_Movement_14B9CF - move 255, PetalburgCity_Movement_14BA0B - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9CF + applymovement 255, PetalburgCity_Movement_14BA0B + waitmovement 0 return PetalburgCity_EventScript_14B989:: @ 814B989 - move 9, PetalburgCity_Movement_14B9DD - move 255, PetalburgCity_Movement_14BA18 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9DD + applymovement 255, PetalburgCity_Movement_14BA18 + waitmovement 0 return PetalburgCity_EventScript_14B99B:: @ 814B99B - move 9, PetalburgCity_Movement_14B9E8 - move 255, PetalburgCity_Movement_14BA22 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9E8 + applymovement 255, PetalburgCity_Movement_14BA22 + waitmovement 0 return @ 814B9AD diff --git a/data/scripts/maps/PetalburgCity_Gym.inc b/data/scripts/maps/PetalburgCity_Gym.inc index c534cb538..b2d104894 100644 --- a/data/scripts/maps/PetalburgCity_Gym.inc +++ b/data/scripts/maps/PetalburgCity_Gym.inc @@ -7,28 +7,28 @@ PetalburgCity_Gym_MapScripts:: @ 8154477 PetalburgCity_Gym_MapScript1_15448C:: @ 815448C compare 0x4085, 6 - jumpeq PetalburgCity_Gym_EventScript_1544A3 + goto_if_eq PetalburgCity_Gym_EventScript_1544A3 compare 0x4085, 7 - callif 4, PetalburgCity_Gym_EventScript_1544ED + call_if 4, PetalburgCity_Gym_EventScript_1544ED end PetalburgCity_Gym_EventScript_1544A3:: @ 81544A3 setvar 0x8005, 1 call PetalburgCity_Gym_EventScript_154F9A checktrainerflag OPPONENT_RANDALL - callif 1, PetalburgCity_Gym_EventScript_154FBB + call_if 1, PetalburgCity_Gym_EventScript_154FBB checktrainerflag OPPONENT_MARY - callif 1, PetalburgCity_Gym_EventScript_154FDC + call_if 1, PetalburgCity_Gym_EventScript_154FDC checktrainerflag OPPONENT_PARKER - callif 1, PetalburgCity_Gym_EventScript_154FFD + call_if 1, PetalburgCity_Gym_EventScript_154FFD checktrainerflag OPPONENT_LORI - callif 1, PetalburgCity_Gym_EventScript_15501E + call_if 1, PetalburgCity_Gym_EventScript_15501E checktrainerflag OPPONENT_GEORGE - callif 1, PetalburgCity_Gym_EventScript_15503F + call_if 1, PetalburgCity_Gym_EventScript_15503F checktrainerflag OPPONENT_JODY - callif 1, PetalburgCity_Gym_EventScript_155060 + call_if 1, PetalburgCity_Gym_EventScript_155060 checktrainerflag OPPONENT_BERKE - callif 1, PetalburgCity_Gym_EventScript_155081 + call_if 1, PetalburgCity_Gym_EventScript_155081 end PetalburgCity_Gym_EventScript_1544ED:: @ 81544ED @@ -45,23 +45,23 @@ PetalburgCity_Gym_EventScript_1544ED:: @ 81544ED PetalburgCity_Gym_MapScript1_15451B:: @ 815451B compare 0x4085, 1 - callif 1, PetalburgCity_Gym_EventScript_15453B + call_if 1, PetalburgCity_Gym_EventScript_15453B compare 0x4085, 6 - callif 0, PetalburgCity_Gym_EventScript_154543 + call_if 0, PetalburgCity_Gym_EventScript_154543 checkflag 2052 - callif 1, PetalburgCity_Gym_EventScript_15454B + call_if 1, PetalburgCity_Gym_EventScript_15454B end PetalburgCity_Gym_EventScript_15453B:: @ 815453B - movespriteperm 10, 5, 108 + setobjectxyperm 10, 5, 108 return PetalburgCity_Gym_EventScript_154543:: @ 8154543 - movespriteperm 1, 4, 107 + setobjectxyperm 1, 4, 107 return PetalburgCity_Gym_EventScript_15454B:: @ 815454B - movespriteperm 1, 4, 107 + setobjectxyperm 1, 4, 107 return PetalburgCity_Gym_MapScript2_154553:: @ 8154553 @@ -69,7 +69,7 @@ PetalburgCity_Gym_MapScript2_154553:: @ 8154553 .2byte 0 PetalburgCity_Gym_EventScript_15455D:: @ 815455D - spriteface 255, 2 + turnobject 255, 2 end PetalburgCity_Gym_MapScript2_154562:: @ 8154562 @@ -80,16 +80,16 @@ PetalburgCity_Gym_EventScript_15456C:: @ 815456C lockall msgbox PetalburgCity_Gym_Text_17A196, 4 msgbox PetalburgCity_Gym_Text_17A1B0, 4 - closebutton - move 255, PetalburgCity_Gym_Movement_1A0845 - move 10, PetalburgCity_Gym_Movement_1545B4 - waitmove 0 - playsfx 9 - disappear 10 + closemessage + applymovement 255, PetalburgCity_Gym_Movement_1A0845 + applymovement 10, PetalburgCity_Gym_Movement_1545B4 + waitmovement 0 + playse 9 + removeobject 10 setflag 726 - pause 30 - move 255, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + delay 30 + applymovement 255, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 msgbox PetalburgCity_Gym_Text_17A2A4, 4 setvar 0x4085, 2 releaseall @@ -113,7 +113,7 @@ PetalburgCity_Gym_EventScript_1545B9:: @ 81545B9 case 6, PetalburgCity_Gym_EventScript_1549D6 case 7, PetalburgCity_Gym_EventScript_15493D msgbox PetalburgCity_Gym_Text_179DF6, 4 - closebutton + closemessage switch FACING case 1, PetalburgCity_Gym_EventScript_15463D case 2, PetalburgCity_Gym_EventScript_154648 @@ -123,88 +123,88 @@ PetalburgCity_Gym_EventScript_1545B9:: @ 81545B9 PetalburgCity_Gym_EventScript_15463D:: @ 815463D setvar 0x8008, 0 - jump PetalburgCity_Gym_EventScript_154669 + goto PetalburgCity_Gym_EventScript_154669 end PetalburgCity_Gym_EventScript_154648:: @ 8154648 setvar 0x8008, 1 - jump PetalburgCity_Gym_EventScript_154669 + goto PetalburgCity_Gym_EventScript_154669 end PetalburgCity_Gym_EventScript_154653:: @ 8154653 setvar 0x8008, 2 - jump PetalburgCity_Gym_EventScript_154669 + goto PetalburgCity_Gym_EventScript_154669 end PetalburgCity_Gym_EventScript_15465E:: @ 815465E setvar 0x8008, 3 - jump PetalburgCity_Gym_EventScript_154669 + goto PetalburgCity_Gym_EventScript_154669 end PetalburgCity_Gym_EventScript_154669:: @ 8154669 - reappear 10 - playsfx 8 + addobject 10 + playse 8 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_1547EE + call_if 1, PetalburgCity_Gym_EventScript_1547EE compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_154800 + call_if 1, PetalburgCity_Gym_EventScript_154800 compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_15481C + call_if 1, PetalburgCity_Gym_EventScript_15481C compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_15481C + call_if 1, PetalburgCity_Gym_EventScript_15481C msgbox PetalburgCity_Gym_Text_179F07, 4 msgbox PetalburgCity_Gym_Text_179F37, 4 msgbox PetalburgCity_Gym_Text_179F70, 4 msgbox PetalburgCity_Gym_Text_17A03A, 4 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_154884 + call_if 1, PetalburgCity_Gym_EventScript_154884 compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_15488F + call_if 1, PetalburgCity_Gym_EventScript_15488F compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_1548A1 + call_if 1, PetalburgCity_Gym_EventScript_1548A1 compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_1548B3 + call_if 1, PetalburgCity_Gym_EventScript_1548B3 msgbox PetalburgCity_Gym_Text_17A04A, 4 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_1548C5 + call_if 1, PetalburgCity_Gym_EventScript_1548C5 compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_1548D0 + call_if 1, PetalburgCity_Gym_EventScript_1548D0 compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_1548DB + call_if 1, PetalburgCity_Gym_EventScript_1548DB compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_1548E6 + call_if 1, PetalburgCity_Gym_EventScript_1548E6 msgbox PetalburgCity_Gym_Text_17A0A8, 4 msgbox PetalburgCity_Gym_Text_17A0EB, 4 msgbox PetalburgCity_Gym_Text_17A156, 4 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_15492F + call_if 1, PetalburgCity_Gym_EventScript_15492F compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_154930 + call_if 1, PetalburgCity_Gym_EventScript_154930 compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_15493B + call_if 1, PetalburgCity_Gym_EventScript_15493B compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_15493C + call_if 1, PetalburgCity_Gym_EventScript_15493C compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_1548F1 + call_if 1, PetalburgCity_Gym_EventScript_1548F1 compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_1548FC + call_if 1, PetalburgCity_Gym_EventScript_1548FC compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_1548F1 + call_if 1, PetalburgCity_Gym_EventScript_1548F1 compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_1548F1 + call_if 1, PetalburgCity_Gym_EventScript_1548F1 msgbox PetalburgCity_Gym_Text_17A171, 4 - closebutton + closemessage setflag 0x4001 - playmusic 420, 0 + playbgm 420, 0 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_154835 + call_if 1, PetalburgCity_Gym_EventScript_154835 compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_15484E + call_if 1, PetalburgCity_Gym_EventScript_15484E compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_154860 + call_if 1, PetalburgCity_Gym_EventScript_154860 compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_154872 - disappear 10 + call_if 1, PetalburgCity_Gym_EventScript_154872 + removeobject 10 setflag 728 setvar 0x4085, 1 setvar 0x4057, 2 @@ -218,102 +218,102 @@ PetalburgCity_Gym_EventScript_154669:: @ 8154669 end PetalburgCity_Gym_EventScript_1547EE:: @ 81547EE - move 1, PetalburgCity_Gym_Movement_1A0845 - move 10, PetalburgCity_Gym_Movement_154B27 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + applymovement 10, PetalburgCity_Gym_Movement_154B27 + waitmovement 0 return PetalburgCity_Gym_EventScript_154800:: @ 8154800 - move 10, PetalburgCity_Gym_Movement_154B1D - waitmove 0 - move 1, PetalburgCity_Gym_Movement_1A0843 - move 255, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_154B1D + waitmovement 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + applymovement 255, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_15481C:: @ 815481C - move 1, PetalburgCity_Gym_Movement_1A0845 - move 255, PetalburgCity_Gym_Movement_1A0845 - move 10, PetalburgCity_Gym_Movement_154B27 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + applymovement 255, PetalburgCity_Gym_Movement_1A0845 + applymovement 10, PetalburgCity_Gym_Movement_154B27 + waitmovement 0 return PetalburgCity_Gym_EventScript_154835:: @ 8154835 - move 1, PetalburgCity_Gym_Movement_1A0845 - move 10, PetalburgCity_Gym_Movement_154B3E - move 255, PetalburgCity_Gym_Movement_154B4D - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + applymovement 10, PetalburgCity_Gym_Movement_154B3E + applymovement 255, PetalburgCity_Gym_Movement_154B4D + waitmovement 0 return PetalburgCity_Gym_EventScript_15484E:: @ 815484E - move 10, PetalburgCity_Gym_Movement_154B2E - move 255, PetalburgCity_Gym_Movement_154B45 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_154B2E + applymovement 255, PetalburgCity_Gym_Movement_154B45 + waitmovement 0 return PetalburgCity_Gym_EventScript_154860:: @ 8154860 - move 10, PetalburgCity_Gym_Movement_154B3E - move 255, PetalburgCity_Gym_Movement_154B57 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_154B3E + applymovement 255, PetalburgCity_Gym_Movement_154B57 + waitmovement 0 return PetalburgCity_Gym_EventScript_154872:: @ 8154872 - move 10, PetalburgCity_Gym_Movement_154B36 - move 255, PetalburgCity_Gym_Movement_154B5F - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_154B36 + applymovement 255, PetalburgCity_Gym_Movement_154B5F + waitmovement 0 return PetalburgCity_Gym_EventScript_154884:: @ 8154884 - move 1, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 return PetalburgCity_Gym_EventScript_15488F:: @ 815488F - move 1, PetalburgCity_Gym_Movement_1A0845 - move 255, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + applymovement 255, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548A1:: @ 81548A1 - move 1, PetalburgCity_Gym_Movement_1A0843 - move 255, PetalburgCity_Gym_Movement_1A083F - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + applymovement 255, PetalburgCity_Gym_Movement_1A083F + waitmovement 0 return PetalburgCity_Gym_EventScript_1548B3:: @ 81548B3 - move 1, PetalburgCity_Gym_Movement_1A083F - move 255, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A083F + applymovement 255, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548C5:: @ 81548C5 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548D0:: @ 81548D0 - move 1, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548DB:: @ 81548DB - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548E6:: @ 81548E6 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548F1:: @ 81548F1 - move 10, PetalburgCity_Gym_Movement_1A0839 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_1A0839 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548FC:: @ 81548FC - move 10, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_154907:: @ 8154907 @@ -340,8 +340,8 @@ PetalburgCity_Gym_EventScript_15492F:: @ 815492F return PetalburgCity_Gym_EventScript_154930:: @ 8154930 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_15493B:: @ 815493B @@ -353,27 +353,27 @@ PetalburgCity_Gym_EventScript_15493C:: @ 815493C PetalburgCity_Gym_EventScript_15493D:: @ 815493D call PetalburgCity_Gym_EventScript_154969 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_1549B8 + goto_if_eq PetalburgCity_Gym_EventScript_1549B8 checkflag 169 - jumpif 0, PetalburgCity_Gym_EventScript_154A2C + goto_if 0, PetalburgCity_Gym_EventScript_154A2C checkflag 2052 - jumpeq PetalburgCity_Gym_EventScript_154B69 + goto_if_eq PetalburgCity_Gym_EventScript_154B69 msgbox PetalburgCity_Gym_Text_17AA6B, 4 release end PetalburgCity_Gym_EventScript_154969:: @ 8154969 - specialval RESULT, IsEnigmaBerryValid + specialvar RESULT, IsEnigmaBerryValid compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_1549B2 + goto_if_eq PetalburgCity_Gym_EventScript_1549B2 checkitem ITEM_ENIGMA_BERRY, 1 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_1549B2 + goto_if_eq PetalburgCity_Gym_EventScript_1549B2 checkpcitem ITEM_ENIGMA_BERRY, 1 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_1549B2 + goto_if_eq PetalburgCity_Gym_EventScript_1549B2 compare 0x402d, 0 - jumpeq PetalburgCity_Gym_EventScript_1549B2 + goto_if_eq PetalburgCity_Gym_EventScript_1549B2 msgbox PetalburgCity_Gym_Text_1C5570, 4 setvar RESULT, 1 return @@ -385,7 +385,7 @@ PetalburgCity_Gym_EventScript_1549B2:: @ 81549B2 PetalburgCity_Gym_EventScript_1549B8:: @ 81549B8 giveitem ITEM_ENIGMA_BERRY compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_1A029B + goto_if_eq PetalburgCity_Gym_EventScript_1A029B setvar 0x402d, 0 release end @@ -394,7 +394,7 @@ PetalburgCity_Gym_EventScript_1549D6:: @ 81549D6 msgbox PetalburgCity_Gym_Text_17A653, 4 trainerbattle 3, OPPONENT_NORMAN, 0, PetalburgCity_Gym_Text_17A77A message PetalburgCity_Gym_Text_17A7DD - waittext + waitmessage call PetalburgCity_Gym_EventScript_1A02C5 msgbox PetalburgCity_Gym_Text_17A805, 4 setflag 1217 @@ -408,76 +408,76 @@ PetalburgCity_Gym_EventScript_1549D6:: @ 81549D6 clearflag 940 call PetalburgCity_Gym_EventScript_1544ED special DrawWholeMapView - jump PetalburgCity_Gym_EventScript_154A2C + goto PetalburgCity_Gym_EventScript_154A2C end PetalburgCity_Gym_EventScript_154A2C:: @ 8154A2C giveitem ITEM_TM42 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_1A029B + goto_if_eq PetalburgCity_Gym_EventScript_1A029B setflag 169 msgbox PetalburgCity_Gym_Text_17A8CF, 4 msgbox PetalburgCity_Gym_Text_17A976, 4 - closebutton + closemessage compare FACING, 2 - callif 1, PetalburgCity_Gym_EventScript_154ABC + call_if 1, PetalburgCity_Gym_EventScript_154ABC compare FACING, 1 - callif 1, PetalburgCity_Gym_EventScript_154AC7 + call_if 1, PetalburgCity_Gym_EventScript_154AC7 compare FACING, 3 - callif 1, PetalburgCity_Gym_EventScript_154AD2 + call_if 1, PetalburgCity_Gym_EventScript_154AD2 compare FACING, 4 - callif 1, PetalburgCity_Gym_EventScript_154ADD - pause 70 + call_if 1, PetalburgCity_Gym_EventScript_154ADD + delay 70 compare FACING, 2 - callif 1, PetalburgCity_Gym_EventScript_154AE8 + call_if 1, PetalburgCity_Gym_EventScript_154AE8 compare FACING, 1 - callif 1, PetalburgCity_Gym_EventScript_154AF3 + call_if 1, PetalburgCity_Gym_EventScript_154AF3 compare FACING, 3 - callif 1, PetalburgCity_Gym_EventScript_154AFE + call_if 1, PetalburgCity_Gym_EventScript_154AFE compare FACING, 4 - callif 1, PetalburgCity_Gym_EventScript_154B09 + call_if 1, PetalburgCity_Gym_EventScript_154B09 msgbox PetalburgCity_Gym_Text_17A9F6, 4 release end PetalburgCity_Gym_EventScript_154ABC:: @ 8154ABC - move 1, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AC7:: @ 8154AC7 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AD2:: @ 8154AD2 - move 1, PetalburgCity_Gym_Movement_1A083F - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A083F + waitmovement 0 return PetalburgCity_Gym_EventScript_154ADD:: @ 8154ADD - move 1, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AE8:: @ 8154AE8 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AF3:: @ 8154AF3 - move 1, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AFE:: @ 8154AFE - move 1, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_154B09:: @ 8154B09 - move 1, PetalburgCity_Gym_Movement_1A083F - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A083F + waitmovement 0 return @ 8154B14 @@ -593,20 +593,20 @@ PetalburgCity_Gym_EventScript_154B69:: @ 8154B69 PetalburgCity_Gym_EventScript_154B73:: @ 8154B73 lockall compare 0x4085, 6 - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 85 msgbox PetalburgCity_Gym_Text_17B870, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154BA8:: @ 8154BA8 - closebutton - pause 30 - warpwalk PetalburgCity_Gym, 255, 32776, 32777 + closemessage + delay 30 + warpdoor PetalburgCity_Gym, 255, 32776, 32777 waitstate releaseall end @@ -623,150 +623,150 @@ PetalburgCity_Gym_EventScript_154BB9:: @ 8154BB9 PetalburgCity_Gym_EventScript_154BC3:: @ 8154BC3 lockall compare 0x4085, 6 - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 98 msgbox PetalburgCity_Gym_Text_17B8D4, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154BF8:: @ 8154BF8 lockall checktrainerflag OPPONENT_RANDALL - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 46 msgbox PetalburgCity_Gym_Text_17B90F, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154C2B:: @ 8154C2B lockall checktrainerflag OPPONENT_RANDALL - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 59 msgbox PetalburgCity_Gym_Text_17B950, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154C5E:: @ 8154C5E lockall checktrainerflag OPPONENT_MARY - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 59 msgbox PetalburgCity_Gym_Text_17B950, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154C91:: @ 8154C91 lockall checktrainerflag OPPONENT_MARY - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 72 msgbox PetalburgCity_Gym_Text_17B98A, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154CC4:: @ 8154CC4 lockall checktrainerflag OPPONENT_PARKER - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 20 msgbox PetalburgCity_Gym_Text_17B9C5, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154CF7:: @ 8154CF7 lockall checktrainerflag OPPONENT_LORI - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 20 msgbox PetalburgCity_Gym_Text_17B9C5, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154D2A:: @ 8154D2A lockall checktrainerflag OPPONENT_LORI - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 33 msgbox PetalburgCity_Gym_Text_17BA00, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154D5D:: @ 8154D5D lockall checktrainerflag OPPONENT_GEORGE - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 33 msgbox PetalburgCity_Gym_Text_17BA00, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154D90:: @ 8154D90 lockall checktrainerflag OPPONENT_JODY - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 7 msgbox PetalburgCity_Gym_Text_17BA3D, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154DC3:: @ 8154DC3 lockall checktrainerflag OPPONENT_BERKE - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 7 msgbox PetalburgCity_Gym_Text_17BA3D, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154DF6:: @ 8154DF6 trainerbattle 2, OPPONENT_RANDALL, 0, PetalburgCity_Gym_Text_17ADA5, PetalburgCity_Gym_Text_17AE11, PetalburgCity_Gym_EventScript_154E1A checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154E29 + goto_if_eq PetalburgCity_Gym_EventScript_154E29 msgbox PetalburgCity_Gym_Text_17AE30, 6 end @@ -784,7 +784,7 @@ PetalburgCity_Gym_EventScript_154E29:: @ 8154E29 PetalburgCity_Gym_EventScript_154E32:: @ 8154E32 trainerbattle 2, OPPONENT_PARKER, 0, PetalburgCity_Gym_Text_17AF5A, PetalburgCity_Gym_Text_17AF98, PetalburgCity_Gym_EventScript_154E56 checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154E65 + goto_if_eq PetalburgCity_Gym_EventScript_154E65 msgbox PetalburgCity_Gym_Text_17AFD3, 6 end @@ -802,7 +802,7 @@ PetalburgCity_Gym_EventScript_154E65:: @ 8154E65 PetalburgCity_Gym_EventScript_154E6E:: @ 8154E6E trainerbattle 2, OPPONENT_GEORGE, 0, PetalburgCity_Gym_Text_17B058, PetalburgCity_Gym_Text_17B0F7, PetalburgCity_Gym_EventScript_154E92 checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154EA1 + goto_if_eq PetalburgCity_Gym_EventScript_154EA1 msgbox PetalburgCity_Gym_Text_17B12C, 6 end @@ -820,7 +820,7 @@ PetalburgCity_Gym_EventScript_154EA1:: @ 8154EA1 PetalburgCity_Gym_EventScript_154EAA:: @ 8154EAA trainerbattle 2, OPPONENT_BERKE, 0, PetalburgCity_Gym_Text_17B237, PetalburgCity_Gym_Text_17B2C0, PetalburgCity_Gym_EventScript_154ECE checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154EDD + goto_if_eq PetalburgCity_Gym_EventScript_154EDD msgbox PetalburgCity_Gym_Text_17B2E4, 6 end @@ -838,7 +838,7 @@ PetalburgCity_Gym_EventScript_154EDD:: @ 8154EDD PetalburgCity_Gym_EventScript_154EE6:: @ 8154EE6 trainerbattle 2, OPPONENT_MARY, 0, PetalburgCity_Gym_Text_17B3F7, PetalburgCity_Gym_Text_17B454, PetalburgCity_Gym_EventScript_154F0A checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154F19 + goto_if_eq PetalburgCity_Gym_EventScript_154F19 msgbox PetalburgCity_Gym_Text_17B46F, 6 end @@ -856,7 +856,7 @@ PetalburgCity_Gym_EventScript_154F19:: @ 8154F19 PetalburgCity_Gym_EventScript_154F22:: @ 8154F22 trainerbattle 2, OPPONENT_LORI, 0, PetalburgCity_Gym_Text_17B58D, PetalburgCity_Gym_Text_17B5CB, PetalburgCity_Gym_EventScript_154F46 checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154F55 + goto_if_eq PetalburgCity_Gym_EventScript_154F55 msgbox PetalburgCity_Gym_Text_17B5EA, 6 end @@ -874,7 +874,7 @@ PetalburgCity_Gym_EventScript_154F55:: @ 8154F55 PetalburgCity_Gym_EventScript_154F5E:: @ 8154F5E trainerbattle 2, OPPONENT_JODY, 0, PetalburgCity_Gym_Text_17B6D4, PetalburgCity_Gym_Text_17B732, PetalburgCity_Gym_EventScript_154F82 checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154F91 + goto_if_eq PetalburgCity_Gym_EventScript_154F91 msgbox PetalburgCity_Gym_Text_17B749, 6 end @@ -892,72 +892,72 @@ PetalburgCity_Gym_EventScript_154F91:: @ 8154F91 PetalburgCity_Gym_EventScript_154F9A:: @ 8154F9A setvar 0x8004, 1 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_1550A2 return PetalburgCity_Gym_EventScript_154FBB:: @ 8154FBB setvar 0x8004, 2 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_1550C7 return PetalburgCity_Gym_EventScript_154FDC:: @ 8154FDC setvar 0x8004, 3 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_1550EC return PetalburgCity_Gym_EventScript_154FFD:: @ 8154FFD setvar 0x8004, 4 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_155111 return PetalburgCity_Gym_EventScript_15501E:: @ 815501E setvar 0x8004, 5 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_155124 return PetalburgCity_Gym_EventScript_15503F:: @ 815503F setvar 0x8004, 6 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_155149 return PetalburgCity_Gym_EventScript_155060:: @ 8155060 setvar 0x8004, 7 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_15515C return PetalburgCity_Gym_EventScript_155081:: @ 8155081 setvar 0x8004, 8 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_15516F return @@ -1022,7 +1022,7 @@ PetalburgCity_Gym_EventScript_15518B:: @ 815518B lock faceplayer checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_1551A0 + goto_if_eq PetalburgCity_Gym_EventScript_1551A0 msgbox PetalburgCity_Gym_Text_17AB96, 4 release end @@ -1035,15 +1035,15 @@ PetalburgCity_Gym_EventScript_1551A0:: @ 81551A0 PetalburgCity_Gym_EventScript_1551AA:: @ 81551AA lockall checkflag 2059 - jumpeq PetalburgCity_Gym_EventScript_1551CA - jump PetalburgCity_Gym_EventScript_1551D4 + goto_if_eq PetalburgCity_Gym_EventScript_1551CA + goto PetalburgCity_Gym_EventScript_1551D4 end PetalburgCity_Gym_EventScript_1551BA:: @ 81551BA lockall checkflag 2059 - jumpeq PetalburgCity_Gym_EventScript_1551CA - jump PetalburgCity_Gym_EventScript_1551D4 + goto_if_eq PetalburgCity_Gym_EventScript_1551CA + goto PetalburgCity_Gym_EventScript_1551D4 end PetalburgCity_Gym_EventScript_1551CA:: @ 81551CA diff --git a/data/scripts/maps/PetalburgCity_Mart.inc b/data/scripts/maps/PetalburgCity_Mart.inc index 2eac03cac..e4186eaae 100644 --- a/data/scripts/maps/PetalburgCity_Mart.inc +++ b/data/scripts/maps/PetalburgCity_Mart.inc @@ -5,9 +5,9 @@ PetalburgCity_Mart_EventScript_1552B0:: @ 81552B0 lock faceplayer message PetalburgCity_Mart_Text_1A0BE4 - waittext + waitmessage checkflag 296 - jumpeq PetalburgCity_Mart_EventScript_1552EA + goto_if_eq PetalburgCity_Mart_EventScript_1552EA pokemart PetalburgCity_Mart_Items1 msgbox PetalburgCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc b/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc index 5ef99eee1..e2013a1d6 100644 --- a/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ PetalburgCity_PokemonCenter_1F_MapScript1_15520A:: @ 815520A PetalburgCity_PokemonCenter_1F_EventScript_155213:: @ 8155213 setvar 0x800b, 1 call PetalburgCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -27,19 +27,19 @@ PetalburgCity_PokemonCenter_1F_EventScript_155233:: @ 8155233 lock faceplayer msgbox PetalburgCity_PokemonCenter_1F_Text_17BDC5, 4 - specialval RESULT, IsStarterInParty + specialvar RESULT, IsStarterInParty compare RESULT, 1 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_15524F + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_15524F release end PetalburgCity_PokemonCenter_1F_EventScript_15524F:: @ 815524F compare 0x4023, 0 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_155272 + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_155272 compare 0x4023, 1 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_15527B + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_15527B compare 0x4023, 2 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_155284 + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_155284 release end diff --git a/data/scripts/maps/PetalburgCity_WallysHouse.inc b/data/scripts/maps/PetalburgCity_WallysHouse.inc index e8ac407dc..d8e95d8c6 100644 --- a/data/scripts/maps/PetalburgCity_WallysHouse.inc +++ b/data/scripts/maps/PetalburgCity_WallysHouse.inc @@ -5,13 +5,13 @@ PetalburgCity_WallysHouse_EventScript_1543C4:: @ 81543C4 lock faceplayer checkflag 126 - jumpeq PetalburgCity_WallysHouse_EventScript_1543F7 + goto_if_eq PetalburgCity_WallysHouse_EventScript_1543F7 checkflag 122 - jumpeq PetalburgCity_WallysHouse_EventScript_154427 + goto_if_eq PetalburgCity_WallysHouse_EventScript_154427 checkflag 1217 - jumpeq PetalburgCity_WallysHouse_EventScript_154406 + goto_if_eq PetalburgCity_WallysHouse_EventScript_154406 checkflag 135 - jumpeq PetalburgCity_WallysHouse_EventScript_15443B + goto_if_eq PetalburgCity_WallysHouse_EventScript_15443B msgbox PetalburgCity_WallysHouse_Text_179805, 4 setflag 135 release @@ -19,8 +19,8 @@ PetalburgCity_WallysHouse_EventScript_1543C4:: @ 81543C4 PetalburgCity_WallysHouse_EventScript_1543F7:: @ 81543F7 checkflag 122 - jumpeq PetalburgCity_WallysHouse_EventScript_154431 - jump PetalburgCity_WallysHouse_EventScript_154406 + goto_if_eq PetalburgCity_WallysHouse_EventScript_154431 + goto PetalburgCity_WallysHouse_EventScript_154406 end PetalburgCity_WallysHouse_EventScript_154406:: @ 8154406 @@ -50,9 +50,9 @@ PetalburgCity_WallysHouse_EventScript_154445:: @ 8154445 lock faceplayer checkflag 122 - jumpeq PetalburgCity_WallysHouse_EventScript_15446D + goto_if_eq PetalburgCity_WallysHouse_EventScript_15446D checkflag 1217 - jumpeq PetalburgCity_WallysHouse_EventScript_154463 + goto_if_eq PetalburgCity_WallysHouse_EventScript_154463 msgbox PetalburgCity_WallysHouse_Text_179C2C, 4 release end diff --git a/data/scripts/maps/PetalburgWoods.inc b/data/scripts/maps/PetalburgWoods.inc index c24f7c195..0b0c72f70 100644 --- a/data/scripts/maps/PetalburgWoods.inc +++ b/data/scripts/maps/PetalburgWoods.inc @@ -9,108 +9,108 @@ PetalburgWoods_MapScript1_15CCA2:: @ 815CCA2 PetalburgWoods_EventScript_15CCA8:: @ 815CCA8 lockall call PetalburgWoods_EventScript_15CDE6 - move 4, PetalburgWoods_Movement_15CE89 - waitmove 0 + applymovement 4, PetalburgWoods_Movement_15CE89 + waitmovement 0 msgbox PetalburgWoods_Text_194D92, 4 - closebutton - playmusic BGM_EVIL_TEAM, 0 - move 3, PetalburgWoods_Movement_15CEC3 - waitmove 0 + closemessage + playbgm BGM_EVIL_TEAM, 0 + applymovement 3, PetalburgWoods_Movement_15CEC3 + waitmovement 0 msgbox PetalburgWoods_Text_194DED, 4 - closebutton - move 3, PetalburgWoods_Movement_15CEB0 - waitmove 0 - move 4, PetalburgWoods_Movement_1A0841 - waitmove 0 + closemessage + applymovement 3, PetalburgWoods_Movement_15CEB0 + waitmovement 0 + applymovement 4, PetalburgWoods_Movement_1A0841 + waitmovement 0 msgbox PetalburgWoods_Text_194E6B, 4 - closebutton - move 4, PetalburgWoods_Movement_15CE9E - waitmove 0 + closemessage + applymovement 4, PetalburgWoods_Movement_15CE9E + waitmovement 0 msgbox PetalburgWoods_Text_194E9A, 4 - move 3, PetalburgWoods_Movement_15CEC8 - waitmove 0 + applymovement 3, PetalburgWoods_Movement_15CEC8 + waitmovement 0 msgbox PetalburgWoods_Text_194EE8, 4 trainerbattle 3, OPPONENT_PETALBURG_WOODS_GRUNT, 0, PetalburgWoods_Text_194F83 - move 3, PetalburgWoods_Movement_15CEB3 - waitmove 0 + applymovement 3, PetalburgWoods_Movement_15CEB3 + waitmovement 0 call PetalburgWoods_EventScript_15CDFA - move 4, PetalburgWoods_Movement_15CE80 - waitmove 0 - jump PetalburgWoods_EventScript_15CE69 + applymovement 4, PetalburgWoods_Movement_15CE80 + waitmovement 0 + goto PetalburgWoods_EventScript_15CE69 end PetalburgWoods_EventScript_15CD42:: @ 815CD42 lockall call PetalburgWoods_EventScript_15CDE6 - move 4, PetalburgWoods_Movement_15CE8E - waitmove 0 - move 255, PetalburgWoods_Movement_1A083F - waitmove 0 + applymovement 4, PetalburgWoods_Movement_15CE8E + waitmovement 0 + applymovement 255, PetalburgWoods_Movement_1A083F + waitmovement 0 msgbox PetalburgWoods_Text_194D92, 4 - closebutton - playmusic BGM_EVIL_TEAM, 0 - move 3, PetalburgWoods_Movement_15CEC3 - waitmove 0 + closemessage + playbgm BGM_EVIL_TEAM, 0 + applymovement 3, PetalburgWoods_Movement_15CEC3 + waitmovement 0 msgbox PetalburgWoods_Text_194DED, 4 - closebutton - move 3, PetalburgWoods_Movement_15CEBF - waitmove 0 - move 4, PetalburgWoods_Movement_1A0841 - waitmove 0 + closemessage + applymovement 3, PetalburgWoods_Movement_15CEBF + waitmovement 0 + applymovement 4, PetalburgWoods_Movement_1A0841 + waitmovement 0 msgbox PetalburgWoods_Text_194E6B, 4 - closebutton - move 4, PetalburgWoods_Movement_15CEA4 - waitmove 0 + closemessage + applymovement 4, PetalburgWoods_Movement_15CEA4 + waitmovement 0 msgbox PetalburgWoods_Text_194E9A, 4 - move 255, PetalburgWoods_Movement_1A0841 - waitmove 0 + applymovement 255, PetalburgWoods_Movement_1A0841 + waitmovement 0 msgbox PetalburgWoods_Text_194EE8, 4 trainerbattle 3, OPPONENT_PETALBURG_WOODS_GRUNT, 0, PetalburgWoods_Text_194F83 - move 3, PetalburgWoods_Movement_15CEB3 - waitmove 0 + applymovement 3, PetalburgWoods_Movement_15CEB3 + waitmovement 0 call PetalburgWoods_EventScript_15CDFA - move 4, PetalburgWoods_Movement_15CE95 - waitmove 0 - jump PetalburgWoods_EventScript_15CE69 + applymovement 4, PetalburgWoods_Movement_15CE95 + waitmovement 0 + goto PetalburgWoods_EventScript_15CE69 end PetalburgWoods_EventScript_15CDE6:: @ 815CDE6 - move 4, PetalburgWoods_Movement_15CE73 - waitmove 0 + applymovement 4, PetalburgWoods_Movement_15CE73 + waitmovement 0 msgbox PetalburgWoods_Text_194D71, 4 - closebutton + closemessage return PetalburgWoods_EventScript_15CDFA:: @ 815CDFA msgbox PetalburgWoods_Text_194FA4, 4 - closebutton - move 3, PetalburgWoods_Movement_15CEB7 - waitmove 0 - disappear 3 - move 255, PetalburgWoods_Movement_1A0845 - waitmove 0 + closemessage + applymovement 3, PetalburgWoods_Movement_15CEB7 + waitmovement 0 + removeobject 3 + applymovement 255, PetalburgWoods_Movement_1A0845 + waitmovement 0 msgbox PetalburgWoods_Text_19507E, 4 giveitem ITEM_GREAT_BALL compare RESULT, 0 - jumpeq PetalburgWoods_EventScript_15CE3F - jump PetalburgWoods_EventScript_15CE4D + goto_if_eq PetalburgWoods_EventScript_15CE3F + goto PetalburgWoods_EventScript_15CE4D end PetalburgWoods_EventScript_15CE3F:: @ 815CE3F msgbox PetalburgWoods_Text_195182, 4 - jump PetalburgWoods_EventScript_15CE4D + goto PetalburgWoods_EventScript_15CE4D end PetalburgWoods_EventScript_15CE4D:: @ 815CE4D msgbox PetalburgWoods_Text_19510A, 4 - move 4, PetalburgWoods_Movement_15CEA8 - waitmove 0 + applymovement 4, PetalburgWoods_Movement_15CEA8 + waitmovement 0 msgbox PetalburgWoods_Text_195153, 4 - closebutton + closemessage return PetalburgWoods_EventScript_15CE69:: @ 815CE69 - disappear 4 + removeobject 4 setvar 0x4098, 1 releaseall end @@ -242,11 +242,11 @@ PetalburgWoods_EventScript_15CEDC:: @ 815CEDC lock faceplayer checkflag 297 - jumpeq PetalburgWoods_EventScript_15CF0B + goto_if_eq PetalburgWoods_EventScript_15CF0B msgbox PetalburgWoods_Text_19549E, 4 giveitem ITEM_MIRACLE_SEED compare RESULT, 0 - jumpeq PetalburgWoods_EventScript_1A029B + goto_if_eq PetalburgWoods_EventScript_1A029B setflag 297 release end @@ -271,9 +271,9 @@ PetalburgWoods_EventScript_15CF27:: @ 815CF27 PetalburgWoods_EventScript_15CF3E:: @ 815CF3E trainerbattle 0, OPPONENT_JAMES_1, 0, PetalburgWoods_Text_19526A, PetalburgWoods_Text_1952AE - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq PetalburgWoods_EventScript_15CF65 + goto_if_eq PetalburgWoods_EventScript_15CF65 msgbox PetalburgWoods_Text_1952CC, 6 end diff --git a/data/scripts/maps/Route101.inc b/data/scripts/maps/Route101.inc index 8462603a6..2fe80e098 100644 --- a/data/scripts/maps/Route101.inc +++ b/data/scripts/maps/Route101.inc @@ -18,25 +18,25 @@ Route101_EventScript_14E93F:: @ 814E93F Route101_EventScript_14E948:: @ 814E948 lockall - playmusic 410, 1 + playbgm 410, 1 msgbox Route101_Text_16D10E, 4 - closebutton - movesprite 2, 0, 15 - movesprite 4, 0, 16 - move 255, Route101_Movement_14EA2C - move 2, Route101_Movement_14EA50 - move 4, Route101_Movement_14EA1F - waitmove 0 - move 4, Route101_Movement_14EA00 - move 2, Route101_Movement_14EA31 - waitmove 0 - move 2, Route101_Movement_1A0843 - waitmove 0 - move 4, Route101_Movement_14EA27 - move 2, Route101_Movement_14EA58 - waitmove 0 + closemessage + setobjectxy 2, 0, 15 + setobjectxy 4, 0, 16 + applymovement 255, Route101_Movement_14EA2C + applymovement 2, Route101_Movement_14EA50 + applymovement 4, Route101_Movement_14EA1F + waitmovement 0 + applymovement 4, Route101_Movement_14EA00 + applymovement 2, Route101_Movement_14EA31 + waitmovement 0 + applymovement 2, Route101_Movement_1A0843 + waitmovement 0 + applymovement 4, Route101_Movement_14EA27 + applymovement 2, Route101_Movement_14EA58 + waitmovement 0 msgbox Route101_Text_16D119, 4 - closebutton + closemessage setvar 0x4060, 2 releaseall end @@ -44,27 +44,27 @@ Route101_EventScript_14E948:: @ 814E948 Route101_EventScript_14E9B8:: @ 814E9B8 lockall msgbox Route101_Text_16D15E, 4 - closebutton - move 255, Route101_Movement_14E9FA - waitmove 0 + closemessage + applymovement 255, Route101_Movement_14E9FA + waitmovement 0 releaseall end Route101_EventScript_14E9CE:: @ 814E9CE lockall msgbox Route101_Text_16D15E, 4 - closebutton - move 255, Route101_Movement_14E9FC - waitmove 0 + closemessage + applymovement 255, Route101_Movement_14E9FC + waitmovement 0 releaseall end Route101_EventScript_14E9E4:: @ 814E9E4 lockall msgbox Route101_Text_16D15E, 4 - closebutton - move 255, Route101_Movement_14E9FE - waitmove 0 + closemessage + applymovement 255, Route101_Movement_14E9FE + waitmovement 0 releaseall end @@ -220,16 +220,16 @@ Route101_EventScript_14EA7F:: @ 814EA7F setflag 2048 setflag 82 fadescreen 1 - disappear 4 - movesprite 255, 6, 13 - move 255, Route101_Movement_1A083F - waitmove 0 - special ChooseStarter + removeobject 4 + setobjectxy 255, 6, 13 + applymovement 255, Route101_Movement_1A083F + waitmovement 0 + special ScrSpecial_ChooseStarter waitstate - move 2, Route101_Movement_14EAD7 - waitmove 0 + applymovement 2, Route101_Movement_14EAD7 + waitmovement 0 msgbox Route101_Text_16D191, 4 - special HealPlayerParty + special ScrSpecial_HealPlayerParty setflag 720 clearflag 721 setflag 700 diff --git a/data/scripts/maps/Route102.inc b/data/scripts/maps/Route102.inc index b0a714763..95a0a4a1f 100644 --- a/data/scripts/maps/Route102.inc +++ b/data/scripts/maps/Route102.inc @@ -19,9 +19,9 @@ Route102_EventScript_14EAF5:: @ 814EAF5 Route102_EventScript_14EAFE:: @ 814EAFE trainerbattle 0, OPPONENT_CALVIN_1, 0, Route102_Text_1B79C3, Route102_Text_1B7A2C - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route102_EventScript_14EB25 + goto_if_eq Route102_EventScript_14EB25 msgbox Route102_Text_1B7A60, 6 end diff --git a/data/scripts/maps/Route103.inc b/data/scripts/maps/Route103.inc index 4c7da3d0d..ff0ccce30 100644 --- a/data/scripts/maps/Route103.inc +++ b/data/scripts/maps/Route103.inc @@ -9,22 +9,22 @@ Route103_MapScript1_14EB87:: @ 814EB87 Route103_EventScript_14EB92:: @ 814EB92 lockall - checkgender + checkplayergender compare RESULT, 0 - jumpeq Route103_EventScript_14EBAB + goto_if_eq Route103_EventScript_14EBAB compare RESULT, 1 - jumpeq Route103_EventScript_14EC04 + goto_if_eq Route103_EventScript_14EC04 end Route103_EventScript_14EBAB:: @ 814EBAB msgbox Route103_Text_16D57A, 4 - playmusic 415, 1 - move 2, Route103_Movement_1A0839 - waitmove 0 - move 2, Route103_Movement_1A0833 - waitmove 0 - move 2, Route103_Movement_1A0835 - waitmove 0 + playbgm 415, 1 + applymovement 2, Route103_Movement_1A0839 + waitmovement 0 + applymovement 2, Route103_Movement_1A0833 + waitmovement 0 + applymovement 2, Route103_Movement_1A0835 + waitmovement 0 msgbox Route103_Text_16D5B6, 4 switch 0x4023 case 0, Route103_EventScript_14EC5D @@ -34,13 +34,13 @@ Route103_EventScript_14EBAB:: @ 814EBAB Route103_EventScript_14EC04:: @ 814EC04 msgbox Route103_Text_16D762, 4 - playmusic 421, 1 - move 2, Route103_Movement_1A0839 - waitmove 0 - move 2, Route103_Movement_1A0833 - waitmove 0 - move 2, Route103_Movement_1A0835 - waitmove 0 + playbgm 421, 1 + applymovement 2, Route103_Movement_1A0839 + waitmovement 0 + applymovement 2, Route103_Movement_1A0833 + waitmovement 0 + applymovement 2, Route103_Movement_1A0835 + waitmovement 0 msgbox Route103_Text_16D7A9, 4 switch 0x4023 case 0, Route103_EventScript_14EC8D @@ -50,46 +50,46 @@ Route103_EventScript_14EC04:: @ 814EC04 Route103_EventScript_14EC5D:: @ 814EC5D trainerbattle 3, OPPONENT_MAY_4, 0, Route103_Text_16D65B - jump Route103_EventScript_14ECBD + goto Route103_EventScript_14ECBD end Route103_EventScript_14EC6D:: @ 814EC6D trainerbattle 3, OPPONENT_MAY_7, 0, Route103_Text_16D65B - jump Route103_EventScript_14ECBD + goto Route103_EventScript_14ECBD end Route103_EventScript_14EC7D:: @ 814EC7D trainerbattle 3, OPPONENT_MAY_1, 0, Route103_Text_16D65B - jump Route103_EventScript_14ECBD + goto Route103_EventScript_14ECBD end Route103_EventScript_14EC8D:: @ 814EC8D trainerbattle 3, OPPONENT_BRENDAN_4, 0, Route103_Text_16D836 - jump Route103_EventScript_14ECCB + goto Route103_EventScript_14ECCB end Route103_EventScript_14EC9D:: @ 814EC9D trainerbattle 3, OPPONENT_BRENDAN_7, 0, Route103_Text_16D836 - jump Route103_EventScript_14ECCB + goto Route103_EventScript_14ECCB end Route103_EventScript_14ECAD:: @ 814ECAD trainerbattle 3, OPPONENT_BRENDAN_1, 0, Route103_Text_16D836 - jump Route103_EventScript_14ECCB + goto Route103_EventScript_14ECCB end Route103_EventScript_14ECBD:: @ 814ECBD msgbox Route103_Text_16D688, 4 - jump Route103_EventScript_14ECD9 + goto Route103_EventScript_14ECD9 end Route103_EventScript_14ECCB:: @ 814ECCB msgbox Route103_Text_16D856, 4 - jump Route103_EventScript_14ECD9 + goto Route103_EventScript_14ECD9 end Route103_EventScript_14ECD9:: @ 814ECD9 - closebutton + closemessage switch FACING case 1, Route103_EventScript_14ED29 case 2, Route103_EventScript_14ED0C @@ -98,33 +98,33 @@ Route103_EventScript_14ECD9:: @ 814ECD9 end Route103_EventScript_14ED0C:: @ 814ED0C - move 2, Route103_Movement_14ED67 - waitmove 0 - playsfx 10 - move 2, Route103_Movement_14ED6B - waitmove 0 - jump Route103_EventScript_14ED46 + applymovement 2, Route103_Movement_14ED67 + waitmovement 0 + playse 10 + applymovement 2, Route103_Movement_14ED6B + waitmovement 0 + goto Route103_EventScript_14ED46 end Route103_EventScript_14ED29:: @ 814ED29 - move 2, Route103_Movement_14ED71 - waitmove 0 - playsfx 10 - move 2, Route103_Movement_14ED74 - waitmove 0 - jump Route103_EventScript_14ED46 + applymovement 2, Route103_Movement_14ED71 + waitmovement 0 + playse 10 + applymovement 2, Route103_Movement_14ED74 + waitmovement 0 + goto Route103_EventScript_14ED46 end Route103_EventScript_14ED46:: @ 814ED46 - disappear 2 + removeobject 2 setvar 0x4062, 1 setvar 0x4084, 4 clearflag 889 setflag 130 setvar 0x40c7, 1 clearflag 979 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm releaseall end @@ -173,9 +173,9 @@ Route103_EventScript_14ED94:: @ 814ED94 Route103_EventScript_14EDAB:: @ 814EDAB trainerbattle 4, OPPONENT_AMY_AND_LIV_1, 0, Route103_Text_1B7DF7, Route103_Text_1B7E3B, Route103_Text_1B7EAC - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route103_EventScript_14EDD6 + goto_if_eq Route103_EventScript_14EDD6 msgbox Route103_Text_1B7E50, 6 end @@ -186,9 +186,9 @@ Route103_EventScript_14EDD6:: @ 814EDD6 Route103_EventScript_14EDF1:: @ 814EDF1 trainerbattle 4, OPPONENT_AMY_AND_LIV_1, 0, Route103_Text_1B7EFB, Route103_Text_1B7F20, Route103_Text_1B7F8E - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route103_EventScript_14EE1C + goto_if_eq Route103_EventScript_14EE1C msgbox Route103_Text_1B7F40, 6 end @@ -204,9 +204,9 @@ Route103_EventScript_14EE37:: @ 814EE37 Route103_EventScript_14EE4E:: @ 814EE4E trainerbattle 0, OPPONENT_MIGUEL_1, 0, Route103_Text_1B82A9, Route103_Text_1B82EC - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route103_EventScript_14EE75 + goto_if_eq Route103_EventScript_14EE75 msgbox Route103_Text_1B830D, 6 end diff --git a/data/scripts/maps/Route104.inc b/data/scripts/maps/Route104.inc index b617767bf..651f2afb4 100644 --- a/data/scripts/maps/Route104.inc +++ b/data/scripts/maps/Route104.inc @@ -9,7 +9,7 @@ Route104_MapScript2_14EE97:: @ 814EE97 Route104_EventScript_14EEA1:: @ 814EEA1 lockall - jump Route104_EventScript_14EFD5 + goto Route104_EventScript_14EFD5 end Route104_MapScript1_14EEA8:: @ 814EEA8 @@ -18,9 +18,9 @@ Route104_MapScript1_14EEA8:: @ 814EEA8 Route104_EventScript_14EEAE:: @ 814EEAE checkflag 127 - jumpif 0, Route104_EventScript_14EEC4 + goto_if 0, Route104_EventScript_14EEC4 checkflag 2057 - jumpif 0, Route104_EventScript_14EEC4 + goto_if 0, Route104_EventScript_14EEC4 clearflag 906 return @@ -32,11 +32,11 @@ Route104_EventScript_14EEC8:: @ 814EEC8 lock faceplayer checkflag 246 - jumpeq Route104_EventScript_14EEFF + goto_if_eq Route104_EventScript_14EEFF msgbox Route104_Text_1C55B9, 4 giveitem ITEM_CHESTO_BERRY compare RESULT, 0 - jumpeq Route104_EventScript_1A029B + goto_if_eq Route104_EventScript_1A029B setflag 246 msgbox Route104_Text_1C5665, 4 release @@ -51,11 +51,11 @@ Route104_EventScript_14EF09:: @ 814EF09 lock faceplayer checkflag 279 - jumpeq Route104_EventScript_14EF38 + goto_if_eq Route104_EventScript_14EF38 msgbox Route104_Text_16DD91, 4 giveitem ITEM_WHITE_HERB compare RESULT, 0 - jumpeq Route104_EventScript_1A029B + goto_if_eq Route104_EventScript_1A029B setflag 279 release end @@ -105,11 +105,11 @@ Route104_EventScript_14EF93:: @ 814EF93 lock faceplayer checkflag 262 - jumpeq Route104_EventScript_14EFC2 + goto_if_eq Route104_EventScript_14EFC2 msgbox Route104_Text_16DC5F, 4 giveitem ITEM_TM09 compare RESULT, 0 - jumpeq Route104_EventScript_1A029B + goto_if_eq Route104_EventScript_1A029B setflag 262 release end @@ -124,44 +124,44 @@ Route104_EventScript_14EFCC:: @ 814EFCC end Route104_EventScript_14EFD5:: @ 814EFD5 - spritelevelup 8, 0, 19, 0 - spritelevelup 255, 0, 19, 0 - move 8, Route104_Movement_14F16C - waitmove 0 - disappear 8 - move 255, Route104_Movement_14F162 - waitmove 0 - spriteinvisible 255, 0, 19 + setobjectpriority 8, 0, 19, 0 + setobjectpriority 255, 0, 19, 0 + applymovement 8, Route104_Movement_14F16C + waitmovement 0 + removeobject 8 + applymovement 255, Route104_Movement_14F162 + waitmovement 0 + hideobject 255, 0, 19 call Route104_EventScript_1A02E7 - move 7, Route104_Movement_14F09F - move 255, Route104_Movement_14F09F - waitmove 0 - move 255, Route104_Movement_14F166 - waitmove 0 + applymovement 7, Route104_Movement_14F09F + applymovement 255, Route104_Movement_14F09F + waitmovement 0 + applymovement 255, Route104_Movement_14F166 + waitmovement 0 call Route104_EventScript_1A02EF - spritevisible 255, 0, 11 - move 255, Route104_Movement_14F168 - waitmove 0 - movespriteperm 2, 12, 8 - reappear 2 - spritelevelup 2, 0, 11, 0 + showobject 255, 0, 11 + applymovement 255, Route104_Movement_14F168 + waitmovement 0 + setobjectxyperm 2, 12, 8 + addobject 2 + setobjectpriority 2, 0, 11, 0 clearflag 740 - move 2, Route104_Movement_14F16F - waitmove 0 - reappear 4 + applymovement 2, Route104_Movement_14F16F + waitmovement 0 + addobject 4 clearflag 743 call Route104_EventScript_1A02EF setflag 742 - spriteinvisible 7, 0, 19 + hideobject 7, 0, 19 copyvar 0x4096, 0x8008 - restorespritelevel 255, 0, 19 - restorespritelevel 2, 0, 11 - moveoffscreen 2 + resetobjectpriority 255, 0, 19 + resetobjectpriority 2, 0, 11 + moveobjectoffscreen 2 setvar 0x408e, 0 checkflag 189 - jumpif 0, Route104_EventScript_14F08B + goto_if 0, Route104_EventScript_14F08B checkflag 189 - jumpeq Route104_EventScript_14F095 + goto_if_eq Route104_EventScript_14F095 end Route104_EventScript_14F08B:: @ 814F08B @@ -409,9 +409,9 @@ Route104_EventScript_14F189:: @ 814F189 Route104_EventScript_14F1A0:: @ 814F1A0 trainerbattle 0, OPPONENT_HALEY_1, 0, Route104_Text_1B8770, Route104_Text_1B87A7 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route104_EventScript_14F1C7 + goto_if_eq Route104_EventScript_14F1C7 msgbox Route104_Text_1B87C3, 6 end @@ -422,9 +422,9 @@ Route104_EventScript_14F1C7:: @ 814F1C7 Route104_EventScript_14F1DE:: @ 814F1DE trainerbattle 0, OPPONENT_WINSTON_1, 0, Route104_Text_1B88D4, Route104_Text_1B8911 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route104_EventScript_14F205 + goto_if_eq Route104_EventScript_14F205 msgbox Route104_Text_1B8925, 6 end @@ -435,9 +435,9 @@ Route104_EventScript_14F205:: @ 814F205 Route104_EventScript_14F21C:: @ 814F21C trainerbattle 0, OPPONENT_CINDY_1, 0, Route104_Text_1B8A24, Route104_Text_1B8A61 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route104_EventScript_14F243 + goto_if_eq Route104_EventScript_14F243 msgbox Route104_Text_1B8A69, 6 end diff --git a/data/scripts/maps/Route104_MrBrineysHouse.inc b/data/scripts/maps/Route104_MrBrineysHouse.inc index 5c6704e67..f24e92cd4 100644 --- a/data/scripts/maps/Route104_MrBrineysHouse.inc +++ b/data/scripts/maps/Route104_MrBrineysHouse.inc @@ -5,9 +5,9 @@ Route104_MrBrineysHouse_MapScripts:: @ 815BCB2 Route104_MrBrineysHouse_MapScript1_15BCB8:: @ 815BCB8 setflag 2109 compare 0x4090, 1 - callif 1, Route104_MrBrineysHouse_EventScript_15BCD4 + call_if 1, Route104_MrBrineysHouse_EventScript_15BCD4 checkflag 188 - callif 1, Route104_MrBrineysHouse_EventScript_15BCD0 + call_if 1, Route104_MrBrineysHouse_EventScript_15BCD0 end Route104_MrBrineysHouse_EventScript_15BCD0:: @ 815BCD0 @@ -15,22 +15,22 @@ Route104_MrBrineysHouse_EventScript_15BCD0:: @ 815BCD0 return Route104_MrBrineysHouse_EventScript_15BCD4:: @ 815BCD4 - movespriteperm 1, 9, 3 - spritebehave 1, 50 - movespriteperm 2, 9, 6 - spritebehave 2, 51 + setobjectxyperm 1, 9, 3 + setobjectmovementtype 1, 50 + setobjectxyperm 2, 9, 6 + setobjectmovementtype 2, 51 return Route104_MrBrineysHouse_EventScript_15BCEB:: @ 815BCEB lock faceplayer checkflag 147 - callif 0, Route104_MrBrineysHouse_EventScript_15BD0E + call_if 0, Route104_MrBrineysHouse_EventScript_15BD0E checkflag 189 - jumpif 0, Route104_MrBrineysHouse_EventScript_15BD65 + goto_if 0, Route104_MrBrineysHouse_EventScript_15BD65 checkflag 149 - jumpif 0, Route104_MrBrineysHouse_EventScript_15BD7E - jump Route104_MrBrineysHouse_EventScript_15BD32 + goto_if 0, Route104_MrBrineysHouse_EventScript_15BD7E + goto Route104_MrBrineysHouse_EventScript_15BD32 end Route104_MrBrineysHouse_EventScript_15BD0E:: @ 815BD0E @@ -38,14 +38,14 @@ Route104_MrBrineysHouse_EventScript_15BD0E:: @ 815BD0E msgbox Route104_MrBrineysHouse_Text_191A82, 4 msgbox Route104_MrBrineysHouse_Text_191AAD, 5 compare RESULT, 0 - jumpeq Route104_MrBrineysHouse_EventScript_15BD97 - jump Route104_MrBrineysHouse_EventScript_15BDAB + goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97 + goto Route104_MrBrineysHouse_EventScript_15BDAB end Route104_MrBrineysHouse_EventScript_15BD32:: @ 815BD32 message Route104_MrBrineysHouse_Text_191E80 - waittext - multichoicedef 21, 8, 14, 1, 0 + waitmessage + multichoicedefault 21, 8, 14, 1, 0 switch RESULT case 0, Route104_MrBrineysHouse_EventScript_15BDAB case 1, Route104_MrBrineysHouse_EventScript_15BDA1 @@ -55,15 +55,15 @@ Route104_MrBrineysHouse_EventScript_15BD32:: @ 815BD32 Route104_MrBrineysHouse_EventScript_15BD65:: @ 815BD65 msgbox Route104_MrBrineysHouse_Text_191CC3, 5 compare RESULT, 0 - jumpeq Route104_MrBrineysHouse_EventScript_15BD97 - jump Route104_MrBrineysHouse_EventScript_15BDAB + goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97 + goto Route104_MrBrineysHouse_EventScript_15BDAB end Route104_MrBrineysHouse_EventScript_15BD7E:: @ 815BD7E msgbox Route104_MrBrineysHouse_Text_191DA6, 5 compare RESULT, 0 - jumpeq Route104_MrBrineysHouse_EventScript_15BD97 - jump Route104_MrBrineysHouse_EventScript_15BDAB + goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97 + goto Route104_MrBrineysHouse_EventScript_15BDAB end Route104_MrBrineysHouse_EventScript_15BD97:: @ 815BD97 @@ -91,8 +91,8 @@ Route104_MrBrineysHouse_EventScript_15BDAB:: @ 815BDAB Route104_MrBrineysHouse_EventScript_15BDD1:: @ 815BDD1 lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox Route104_MrBrineysHouse_Text_191FB9, 4 waitpokecry release diff --git a/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc b/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc index 02842c62d..4c5becf88 100644 --- a/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc +++ b/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc @@ -5,39 +5,39 @@ Route104_PrettyPetalFlowerShop_MapScripts:: @ 815BDE4 Route104_PrettyPetalFlowerShop_MapScript1_15BDEA:: @ 815BDEA setflag 2108 checkflag 127 - jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03 + goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03 checkflag 2057 - jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03 + goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03 setflag 1 end Route104_PrettyPetalFlowerShop_EventScript_15BE03:: @ 815BE03 - movespriteperm 1, 4, 6 + setobjectxyperm 1, 4, 6 end Route104_PrettyPetalFlowerShop_EventScript_15BE0B:: @ 815BE0B lock faceplayer checkflag 1 - jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BE7C + goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BE7C msgbox Route104_PrettyPetalFlowerShop_Text_1C5EC6, 4 checkflag 127 - jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BE4A + goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BE4A setflag 127 msgbox Route104_PrettyPetalFlowerShop_Text_1C5F48, 5 compare RESULT, 1 - callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A + call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A compare RESULT, 0 - callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73 + call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73 release end Route104_PrettyPetalFlowerShop_EventScript_15BE4A:: @ 815BE4A msgbox Route104_PrettyPetalFlowerShop_Text_1C5F1B, 5 compare RESULT, 1 - callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A + call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A compare RESULT, 0 - callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73 + call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73 release end @@ -51,7 +51,7 @@ Route104_PrettyPetalFlowerShop_EventScript_15BE73:: @ 815BE73 Route104_PrettyPetalFlowerShop_EventScript_15BE7C:: @ 815BE7C message Route104_PrettyPetalFlowerShop_Text_1A0C42 - waittext + waitmessage pokemartbp Route104_PrettyPetalFlowerShop_Items msgbox Route104_PrettyPetalFlowerShop_Text_1A0C02, 4 release @@ -73,7 +73,7 @@ Route104_PrettyPetalFlowerShop_EventScript_15BEA4:: @ 815BEA4 lock faceplayer checkflag 94 - jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BEB9 + goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BEB9 msgbox Route104_PrettyPetalFlowerShop_Text_1C61E8, 4 release end @@ -89,15 +89,15 @@ Route104_PrettyPetalFlowerShop_EventScript_15BEB9:: @ 815BEB9 Route104_PrettyPetalFlowerShop_EventScript_15BEDA:: @ 815BEDA lock faceplayer - checkdailyflags + dodailyevents checkflag 2256 - jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BF1A + goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BF1A msgbox Route104_PrettyPetalFlowerShop_Text_1C62DA, 4 random 8 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route104_PrettyPetalFlowerShop_EventScript_1A029B + goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_1A029B setflag 2256 msgbox Route104_PrettyPetalFlowerShop_Text_1C6335, 4 release diff --git a/data/scripts/maps/Route104_Prototype.inc b/data/scripts/maps/Route104_Prototype.inc index ff1c9d258..3c218747a 100644 --- a/data/scripts/maps/Route104_Prototype.inc +++ b/data/scripts/maps/Route104_Prototype.inc @@ -5,21 +5,21 @@ Route104_Prototype_EventScript_160C4B:: @ 8160C4B lock faceplayer checktrainerflag OPPONENT_BRIANNA_1 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_CINDY_2 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_AMY_AND_LIV_3 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_GINA_AND_MIA_2 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_LUCAS_2 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_MIKE_1 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 setflag 215 msgbox Route104_Prototype_Text_19B267, 4 checkflag 216 - jumpeq Route104_Prototype_EventScript_160CFB + goto_if_eq Route104_Prototype_EventScript_160CFB release end @@ -32,21 +32,21 @@ Route104_Prototype_EventScript_160CA3:: @ 8160CA3 lock faceplayer checktrainerflag OPPONENT_BRIANNA_1 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_CINDY_2 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_AMY_AND_LIV_3 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_GINA_AND_MIA_2 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_LUCAS_2 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_MIKE_1 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 setflag 216 msgbox Route104_Prototype_Text_19B2E9, 4 checkflag 215 - jumpeq Route104_Prototype_EventScript_160CFB + goto_if_eq Route104_Prototype_EventScript_160CFB release end @@ -56,10 +56,10 @@ Route104_Prototype_EventScript_160CF1:: @ 8160CF1 end Route104_Prototype_EventScript_160CFB:: @ 8160CFB - closebutton - pause 60 + closemessage + delay 60 fadescreen 1 - pause 60 + delay 60 special DoSoftReset waitstate release diff --git a/data/scripts/maps/Route105.inc b/data/scripts/maps/Route105.inc index c71e2ce05..1182dae7e 100644 --- a/data/scripts/maps/Route105.inc +++ b/data/scripts/maps/Route105.inc @@ -4,7 +4,7 @@ Route105_MapScripts:: @ 814F298 Route105_MapScript1_14F29E:: @ 814F29E checkflag 228 - callif 0, Route105_EventScript_14F2A8 + call_if 0, Route105_EventScript_14F2A8 end Route105_EventScript_14F2A8:: @ 814F2A8 diff --git a/data/scripts/maps/Route106.inc b/data/scripts/maps/Route106.inc index 0c25594c6..2ec903363 100644 --- a/data/scripts/maps/Route106.inc +++ b/data/scripts/maps/Route106.inc @@ -17,9 +17,9 @@ Route106_EventScript_14F34F:: @ 814F34F Route106_EventScript_14F366:: @ 814F366 trainerbattle 0, OPPONENT_ELLIOT_1, 0, Route106_Text_1B8EF0, Route106_Text_1B8F25 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route106_EventScript_14F38D + goto_if_eq Route106_EventScript_14F38D msgbox Route106_Text_1B8F55, 6 end diff --git a/data/scripts/maps/Route107.inc b/data/scripts/maps/Route107.inc index a14bb7298..b6973407b 100644 --- a/data/scripts/maps/Route107.inc +++ b/data/scripts/maps/Route107.inc @@ -8,9 +8,9 @@ Route107_EventScript_14F3BC:: @ 814F3BC Route107_EventScript_14F3D3:: @ 814F3D3 trainerbattle 0, OPPONENT_TONY_1, 0, Route107_Text_1B933A, Route107_Text_1B9365 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route107_EventScript_14F3FA + goto_if_eq Route107_EventScript_14F3FA msgbox Route107_Text_1B938E, 6 end diff --git a/data/scripts/maps/Route109.inc b/data/scripts/maps/Route109.inc index 58c38173e..9f0ef8c8d 100644 --- a/data/scripts/maps/Route109.inc +++ b/data/scripts/maps/Route109.inc @@ -3,11 +3,11 @@ Route109_MapScripts:: @ 814F4D2 Route109_EventScript_14F4D3:: @ 814F4D3 call Route109_EventScript_1A010C - spritelevelup 2, 0, 24, 0 - spritelevelup 255, 0, 24, 0 - move 2, Route109_Movement_14F67B - waitmove 0 - disappear 2 + setobjectpriority 2, 0, 24, 0 + setobjectpriority 255, 0, 24, 0 + applymovement 2, Route109_Movement_14F67B + waitmovement 0 + removeobject 2 switch FACING case 1, Route109_EventScript_14F518 case 3, Route109_EventScript_14F538 @@ -15,49 +15,49 @@ Route109_EventScript_14F4D3:: @ 814F4D3 end Route109_EventScript_14F518:: @ 814F518 - move 255, Route109_Movement_14F66D - waitmove 0 - jump Route109_EventScript_14F548 + applymovement 255, Route109_Movement_14F66D + waitmovement 0 + goto Route109_EventScript_14F548 end Route109_EventScript_14F528:: @ 814F528 - move 255, Route109_Movement_14F675 - waitmove 0 - jump Route109_EventScript_14F548 + applymovement 255, Route109_Movement_14F675 + waitmovement 0 + goto Route109_EventScript_14F548 end Route109_EventScript_14F538:: @ 814F538 - move 255, Route109_Movement_14F678 - waitmove 0 - jump Route109_EventScript_14F548 + applymovement 255, Route109_Movement_14F678 + waitmovement 0 + goto Route109_EventScript_14F548 end Route109_EventScript_14F548:: @ 814F548 - spriteinvisible 255, 0, 24 + hideobject 255, 0, 24 call Route109_EventScript_1A02E7 - move 1, Route109_Movement_14F5BF - move 255, Route109_Movement_14F5BF - waitmove 0 + applymovement 1, Route109_Movement_14F5BF + applymovement 255, Route109_Movement_14F5BF + waitmovement 0 call Route109_EventScript_1A02EF - spritevisible 255, 0, 11 - move 255, Route109_Movement_14F670 - waitmove 0 - reappear 4 + showobject 255, 0, 11 + applymovement 255, Route109_Movement_14F670 + waitmovement 0 + addobject 4 clearflag 743 - movespriteperm 2, 12, 8 - reappear 2 - spritelevelup 2, 0, 11, 0 - move 2, Route109_Movement_14F67D - waitmove 0 + setobjectxyperm 2, 12, 8 + addobject 2 + setobjectpriority 2, 0, 11, 0 + applymovement 2, Route109_Movement_14F67D + waitmovement 0 clearflag 740 setflag 744 - spriteinvisible 1, 0, 24 + hideobject 1, 0, 24 msgbox Route109_Text_16B4B5, 4 - closebutton + closemessage copyvar 0x4096, 0x8008 - restorespritelevel 255, 0, 24 - restorespritelevel 2, 0, 11 - moveoffscreen 2 + resetobjectpriority 255, 0, 24 + resetobjectpriority 2, 0, 11 + moveobjectoffscreen 2 release end @@ -272,22 +272,22 @@ Route109_EventScript_14F680:: @ 814F680 lock faceplayer checkflag 149 - jumpif 0, Route109_EventScript_14F691 - jump Route109_EventScript_14F6AF + goto_if 0, Route109_EventScript_14F691 + goto Route109_EventScript_14F6AF end Route109_EventScript_14F691:: @ 814F691 message Route109_Text_16E0F9 msgbox Route109_Text_16E0F9, 5 compare RESULT, 0 - jumpeq Route109_EventScript_14F6F1 - jump Route109_EventScript_14F6E2 + goto_if_eq Route109_EventScript_14F6F1 + goto Route109_EventScript_14F6E2 end Route109_EventScript_14F6AF:: @ 814F6AF message Route109_Text_16E26A - waittext - multichoicedef 21, 8, 14, 1, 0 + waitmessage + multichoicedefault 21, 8, 14, 1, 0 switch RESULT case 0, Route109_EventScript_14F6E2 case 1, Route109_EventScript_14F6FB @@ -296,8 +296,8 @@ Route109_EventScript_14F6AF:: @ 814F6AF Route109_EventScript_14F6E2:: @ 814F6E2 msgbox Route109_Text_16E159, 4 - closebutton - jump Route109_EventScript_14F4D3 + closemessage + goto Route109_EventScript_14F4D3 end Route109_EventScript_14F6F1:: @ 814F6F1 @@ -318,9 +318,9 @@ Route109_EventScript_14F70E:: @ 814F70E lock faceplayer msgbox Route109_Text_16E405, 4 - closebutton - move LAST_TALKED, Route109_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, Route109_Movement_1A083D + waitmovement 0 release end @@ -329,22 +329,22 @@ Route109_EventScript_14F725:: @ 814F725 faceplayer special GetPlayerBigGuyGirlString checkflag 280 - jumpeq Route109_EventScript_14F762 + goto_if_eq Route109_EventScript_14F762 msgbox Route109_Text_16E433, 4 giveitem ITEM_SOFT_SAND compare RESULT, 0 - jumpeq Route109_EventScript_1A029B - closebutton - move LAST_TALKED, Route109_Movement_1A083D - waitmove 0 + goto_if_eq Route109_EventScript_1A029B + closemessage + applymovement LAST_TALKED, Route109_Movement_1A083D + waitmovement 0 setflag 280 release end Route109_EventScript_14F762:: @ 814F762 msgbox Route109_Text_16E446, 4 - move LAST_TALKED, Route109_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route109_Movement_1A083D + waitmovement 0 release end @@ -359,8 +359,8 @@ Route109_EventScript_14F77F:: @ 814F77F Route109_EventScript_14F788:: @ 814F788 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox Route109_Text_16E5CA, 4 waitpokecry release @@ -396,9 +396,9 @@ Route109_EventScript_14F7F2:: @ 814F7F2 Route109_EventScript_14F809:: @ 814F809 trainerbattle 0, OPPONENT_RICKY_1, 0, Route109_Text_1B9C23, Route109_Text_1B9C65 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route109_EventScript_14F830 + goto_if_eq Route109_EventScript_14F830 msgbox Route109_Text_1B9C6E, 6 end @@ -409,9 +409,9 @@ Route109_EventScript_14F830:: @ 814F830 Route109_EventScript_14F847:: @ 814F847 trainerbattle 0, OPPONENT_LOLA_1, 0, Route109_Text_1B9D54, Route109_Text_1B9D87 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route109_EventScript_14F86E + goto_if_eq Route109_EventScript_14F86E msgbox Route109_Text_1B9D8E, 6 end diff --git a/data/scripts/maps/Route109_SeashoreHouse.inc b/data/scripts/maps/Route109_SeashoreHouse.inc index e1d9c380b..4d8d363aa 100644 --- a/data/scripts/maps/Route109_SeashoreHouse.inc +++ b/data/scripts/maps/Route109_SeashoreHouse.inc @@ -10,11 +10,11 @@ Route109_SeashoreHouse_EventScript_160DD4:: @ 8160DD4 lock faceplayer checkflag 140 - jumpeq Route109_SeashoreHouse_EventScript_160E36 + goto_if_eq Route109_SeashoreHouse_EventScript_160E36 checkflag 141 - jumpeq Route109_SeashoreHouse_EventScript_160E08 + goto_if_eq Route109_SeashoreHouse_EventScript_160E08 checkflag 2 - jumpeq Route109_SeashoreHouse_EventScript_160DFE + goto_if_eq Route109_SeashoreHouse_EventScript_160DFE msgbox Route109_SeashoreHouse_Text_19B4D9, 4 setflag 2 release @@ -29,7 +29,7 @@ Route109_SeashoreHouse_EventScript_160E08:: @ 8160E08 msgbox Route109_SeashoreHouse_Text_19B609, 4 giveitem ITEM_SODA_POP, 6 compare RESULT, 0 - jumpeq Route109_SeashoreHouse_EventScript_160E2C + goto_if_eq Route109_SeashoreHouse_EventScript_160E2C setflag 140 release end @@ -40,41 +40,41 @@ Route109_SeashoreHouse_EventScript_160E2C:: @ 8160E2C end Route109_SeashoreHouse_EventScript_160E36:: @ 8160E36 - showmoney 0, 0 - snop + showmoneybox 0, 0 + nop msgbox Route109_SeashoreHouse_Text_19B702, 5 compare RESULT, 1 - jumpeq Route109_SeashoreHouse_EventScript_160E5A + goto_if_eq Route109_SeashoreHouse_EventScript_160E5A msgbox Route109_SeashoreHouse_Text_19B773, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end Route109_SeashoreHouse_EventScript_160E5A:: @ 8160E5A checkmoney 0x12c, 0 compare RESULT, 0 - jumpeq Route109_SeashoreHouse_EventScript_160E9E + goto_if_eq Route109_SeashoreHouse_EventScript_160E9E checkitemspace ITEM_SODA_POP, 1 compare RESULT, 0 - jumpeq Route109_SeashoreHouse_EventScript_160EAB + goto_if_eq Route109_SeashoreHouse_EventScript_160EAB msgbox Route109_SeashoreHouse_Text_19B74C, 4 - paymoney 0x12c, 0 - updatemoney 0, 0 - snop + takemoney 0x12c, 0 + updatemoneybox 0, 0 + nop giveitem ITEM_SODA_POP - hidemoney 0, 0 + hidemoneybox 0, 0 release end Route109_SeashoreHouse_EventScript_160E9E:: @ 8160E9E msgbox Route109_SeashoreHouse_Text_19B759, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end Route109_SeashoreHouse_EventScript_160EAB:: @ 8160EAB msgbox Route109_SeashoreHouse_Text_1A0CC2, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end @@ -95,11 +95,11 @@ Route109_SeashoreHouse_EventScript_160EEE:: @ 8160EEE Route109_SeashoreHouse_EventScript_160F09:: @ 8160F09 checktrainerflag OPPONENT_DWAYNE - jumpif 0, Route109_SeashoreHouse_EventScript_160F29 + goto_if 0, Route109_SeashoreHouse_EventScript_160F29 checktrainerflag OPPONENT_JOHANNA - jumpif 0, Route109_SeashoreHouse_EventScript_160F29 + goto_if 0, Route109_SeashoreHouse_EventScript_160F29 checktrainerflag OPPONENT_SIMON - jumpif 0, Route109_SeashoreHouse_EventScript_160F29 + goto_if 0, Route109_SeashoreHouse_EventScript_160F29 setflag 141 release end diff --git a/data/scripts/maps/Route110.inc b/data/scripts/maps/Route110.inc index d8c19d92c..146be5959 100644 --- a/data/scripts/maps/Route110.inc +++ b/data/scripts/maps/Route110.inc @@ -13,11 +13,11 @@ Route110_MapScript1_14F914:: @ 814F914 call Route110_EventScript_1A014E call Route110_EventScript_1A0172 compare 0x40a9, 1 - callif 1, Route110_EventScript_14F92F + call_if 1, Route110_EventScript_14F92F end Route110_EventScript_14F92F:: @ 814F92F - playmusicbattle 403 @ Bicycle music + savebgm 403 @ Bicycle music return Route110_MapScript2_14F933:: @ 814F933 @@ -25,7 +25,7 @@ Route110_MapScript2_14F933:: @ 814F933 .2byte 0 Route110_EventScript_14F93D:: @ 814F93D - special BeginCyclingRoadChallenge + special ScrSpecial_BeginCyclingRoadChallenge setvar 0x40a9, 2 return @@ -33,8 +33,8 @@ Route110_EventScript_14F946:: @ 814F946 lock faceplayer msgbox Route110_Text_16E6C0, 4 - move LAST_TALKED, Route110_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route110_Movement_1A083D + waitmovement 0 release end @@ -42,8 +42,8 @@ Route110_EventScript_14F95C:: @ 814F95C lock faceplayer msgbox Route110_Text_16E6F2, 4 - move LAST_TALKED, Route110_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route110_Movement_1A083D + waitmovement 0 release end @@ -51,8 +51,8 @@ Route110_EventScript_14F972:: @ 814F972 lock faceplayer msgbox Route110_Text_16E729, 4 - move LAST_TALKED, Route110_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route110_Movement_1A083D + waitmovement 0 release end @@ -60,8 +60,8 @@ Route110_EventScript_14F988:: @ 814F988 lock faceplayer msgbox Route110_Text_16E76A, 4 - move LAST_TALKED, Route110_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route110_Movement_1A083D + waitmovement 0 release end @@ -131,9 +131,9 @@ Route110_EventScript_14FA25:: @ 814FA25 Route110_EventScript_14FA2E:: @ 814FA2E lockall - specialval RESULT, GetRecordedCyclingRoadResults + specialvar RESULT, GetRecordedCyclingRoadResults compare RESULT, 0 - jumpeq Route110_EventScript_14FA49 + goto_if_eq Route110_EventScript_14FA49 msgbox Route110_Text_16F53A, 4 releaseall end @@ -146,11 +146,11 @@ Route110_EventScript_14FA49:: @ 814FA49 Route110_EventScript_14FA53:: @ 814FA53 lock faceplayer - specialval RESULT, GetPlayerAvatarBike + specialvar RESULT, GetPlayerAvatarBike compare RESULT, 1 - jumpeq Route110_EventScript_14FA84 + goto_if_eq Route110_EventScript_14FA84 compare 0x40a9, 0 - jumpeq Route110_EventScript_14FA7A + goto_if_eq Route110_EventScript_14FA7A msgbox Route110_Text_16F26A, 4 release end @@ -177,9 +177,9 @@ Route110_EventScript_14FAA5:: @ 814FAA5 Route110_EventScript_14FABC:: @ 814FABC trainerbattle 0, OPPONENT_EDWIN_1, 0, Route110_Text_1BA7D2, Route110_Text_1BA803 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route110_EventScript_14FAE3 + goto_if_eq Route110_EventScript_14FAE3 msgbox Route110_Text_1BA829, 6 end @@ -205,9 +205,9 @@ Route110_EventScript_14FB28:: @ 814FB28 Route110_EventScript_14FB3F:: @ 814FB3F trainerbattle 0, OPPONENT_BENJAMIN_1, 0, Route110_Text_1BA352, Route110_Text_1BA379 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route110_EventScript_14FB66 + goto_if_eq Route110_EventScript_14FB66 msgbox Route110_Text_1BA3A5, 6 end @@ -223,9 +223,9 @@ Route110_EventScript_14FB7D:: @ 814FB7D Route110_EventScript_14FB94:: @ 814FB94 trainerbattle 0, OPPONENT_ABIGAIL_1, 0, Route110_Text_1BA4A0, Route110_Text_1BA50F - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route110_EventScript_14FBBB + goto_if_eq Route110_EventScript_14FBBB msgbox Route110_Text_1BA52E, 6 end @@ -236,9 +236,9 @@ Route110_EventScript_14FBBB:: @ 814FBBB Route110_EventScript_14FBD2:: @ 814FBD2 trainerbattle 0, OPPONENT_ISABEL_1, 0, Route110_Text_1BA990, Route110_Text_1BA9D0 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route110_EventScript_14FBF9 + goto_if_eq Route110_EventScript_14FBF9 msgbox Route110_Text_1BA9E9, 6 end @@ -254,8 +254,8 @@ Route110_EventScript_14FC10:: @ 814FC10 Route110_EventScript_14FC27:: @ 814FC27 lockall - move 21, Route110_Movement_1A0843 - waitmove 0 + applymovement 21, Route110_Movement_1A0843 + waitmovement 0 call Route110_EventScript_14FC39 releaseall end @@ -279,84 +279,84 @@ Route110_EventScript_14FC39:: @ 814FC39 Route110_EventScript_14FCC3:: @ 814FCC3 msgbox Route110_Text_16EF9F, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FCD1:: @ 814FCD1 msgbox Route110_Text_16F012, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FCDF:: @ 814FCDF msgbox Route110_Text_16F069, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FCED:: @ 814FCED msgbox Route110_Text_16F0D0, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FCFB:: @ 814FCFB msgbox Route110_Text_16F139, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FD09:: @ 814FD09 setvar 0x40a9, 3 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm return Route110_EventScript_14FD13:: @ 814FD13 setvar 0x8008, 1 - jump Route110_EventScript_14FD34 + goto Route110_EventScript_14FD34 end Route110_EventScript_14FD1E:: @ 814FD1E setvar 0x8008, 2 - jump Route110_EventScript_14FD34 + goto Route110_EventScript_14FD34 end Route110_EventScript_14FD29:: @ 814FD29 setvar 0x8008, 3 - jump Route110_EventScript_14FD34 + goto Route110_EventScript_14FD34 end Route110_EventScript_14FD34:: @ 814FD34 lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, Route110_EventScript_14FDA7 + call_if 1, Route110_EventScript_14FDA7 compare RESULT, 1 - callif 1, Route110_EventScript_14FDAC - move 28, Route110_Movement_1A0845 - waitmove 0 - move 28, Route110_Movement_1A0833 - waitmove 0 - move 28, Route110_Movement_1A0835 - waitmove 0 - pause 30 + call_if 1, Route110_EventScript_14FDAC + applymovement 28, Route110_Movement_1A0845 + waitmovement 0 + applymovement 28, Route110_Movement_1A0833 + waitmovement 0 + applymovement 28, Route110_Movement_1A0835 + waitmovement 0 + delay 30 compare 0x8008, 1 - callif 1, Route110_EventScript_14FF14 + call_if 1, Route110_EventScript_14FF14 compare 0x8008, 2 - callif 1, Route110_EventScript_14FF1F + call_if 1, Route110_EventScript_14FF1F compare 0x8008, 3 - callif 1, Route110_EventScript_14FF2A - checkgender + call_if 1, Route110_EventScript_14FF2A + checkplayergender compare RESULT, 0 - jumpeq Route110_EventScript_14FDB1 + goto_if_eq Route110_EventScript_14FDB1 compare RESULT, 1 - jumpeq Route110_EventScript_14FE2B + goto_if_eq Route110_EventScript_14FE2B releaseall end Route110_EventScript_14FDA7:: @ 814FDA7 - playmusic 415, 1 + playbgm 415, 1 return Route110_EventScript_14FDAC:: @ 814FDAC - playmusic 421, 1 + playbgm 421, 1 return Route110_EventScript_14FDB1:: @ 814FDB1 @@ -369,24 +369,24 @@ Route110_EventScript_14FDB1:: @ 814FDB1 Route110_EventScript_14FDE0:: @ 814FDE0 trainerbattle 3, OPPONENT_MAY_5, 0, Route110_Text_16E826 - jump Route110_EventScript_14FE10 + goto Route110_EventScript_14FE10 end Route110_EventScript_14FDF0:: @ 814FDF0 trainerbattle 3, OPPONENT_MAY_8, 0, Route110_Text_16E826 - jump Route110_EventScript_14FE10 + goto Route110_EventScript_14FE10 end Route110_EventScript_14FE00:: @ 814FE00 trainerbattle 3, OPPONENT_MAY_2, 0, Route110_Text_16E826 - jump Route110_EventScript_14FE10 + goto Route110_EventScript_14FE10 end Route110_EventScript_14FE10:: @ 814FE10 msgbox Route110_Text_16E84C, 4 call Route110_EventScript_14FEA5 msgbox Route110_Text_16E8B3, 4 - jump Route110_EventScript_14FEB2 + goto Route110_EventScript_14FEB2 end Route110_EventScript_14FE2B:: @ 814FE2B @@ -399,24 +399,24 @@ Route110_EventScript_14FE2B:: @ 814FE2B Route110_EventScript_14FE5A:: @ 814FE5A trainerbattle 3, OPPONENT_BRENDAN_5, 0, Route110_Text_16EA0F - jump Route110_EventScript_14FE8A + goto Route110_EventScript_14FE8A end Route110_EventScript_14FE6A:: @ 814FE6A trainerbattle 3, OPPONENT_BRENDAN_8, 0, Route110_Text_16EA0F - jump Route110_EventScript_14FE8A + goto Route110_EventScript_14FE8A end Route110_EventScript_14FE7A:: @ 814FE7A trainerbattle 3, OPPONENT_BRENDAN_2, 0, Route110_Text_16EA0F - jump Route110_EventScript_14FE8A + goto Route110_EventScript_14FE8A end Route110_EventScript_14FE8A:: @ 814FE8A msgbox Route110_Text_16EA2A, 4 call Route110_EventScript_14FEA5 msgbox Route110_Text_16EA7B, 4 - jump Route110_EventScript_14FEB2 + goto Route110_EventScript_14FEB2 end Route110_EventScript_14FEA5:: @ 814FEA5 @@ -424,71 +424,71 @@ Route110_EventScript_14FEA5:: @ 814FEA5 return Route110_EventScript_14FEB2:: @ 814FEB2 - closebutton + closemessage compare 0x8008, 1 - callif 1, Route110_EventScript_14FF56 + call_if 1, Route110_EventScript_14FF56 compare 0x8008, 2 - callif 1, Route110_EventScript_14FF5E + call_if 1, Route110_EventScript_14FF5E compare 0x8008, 3 - callif 1, Route110_EventScript_14FF66 - spritebehave 28, 10 - spritebehave 29, 10 - disappear 28 - reappear 29 - pause 45 + call_if 1, Route110_EventScript_14FF66 + setobjectmovementtype 28, 10 + setobjectmovementtype 29, 10 + removeobject 28 + addobject 29 + delay 45 compare 0x8008, 1 - callif 1, Route110_EventScript_14FF35 + call_if 1, Route110_EventScript_14FF35 compare 0x8008, 2 - callif 1, Route110_EventScript_14FF40 + call_if 1, Route110_EventScript_14FF40 compare 0x8008, 3 - callif 1, Route110_EventScript_14FF4B - disappear 29 + call_if 1, Route110_EventScript_14FF4B + removeobject 29 setvar 0x4069, 1 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm releaseall end Route110_EventScript_14FF14:: @ 814FF14 - move 28, Route110_Movement_14FF6E - waitmove 0 + applymovement 28, Route110_Movement_14FF6E + waitmovement 0 return Route110_EventScript_14FF1F:: @ 814FF1F - move 28, Route110_Movement_14FF72 - waitmove 0 + applymovement 28, Route110_Movement_14FF72 + waitmovement 0 return Route110_EventScript_14FF2A:: @ 814FF2A - move 28, Route110_Movement_14FF74 - waitmove 0 + applymovement 28, Route110_Movement_14FF74 + waitmovement 0 return Route110_EventScript_14FF35:: @ 814FF35 - move 29, Route110_Movement_14FF78 - waitmove 0 + applymovement 29, Route110_Movement_14FF78 + waitmovement 0 return Route110_EventScript_14FF40:: @ 814FF40 - move 29, Route110_Movement_14FF80 - waitmove 0 + applymovement 29, Route110_Movement_14FF80 + waitmovement 0 return Route110_EventScript_14FF4B:: @ 814FF4B - move 29, Route110_Movement_14FF89 - waitmove 0 + applymovement 29, Route110_Movement_14FF89 + waitmovement 0 return Route110_EventScript_14FF56:: @ 814FF56 - movespriteperm 29, 33, 55 + setobjectxyperm 29, 33, 55 return Route110_EventScript_14FF5E:: @ 814FF5E - movespriteperm 29, 34, 55 + setobjectxyperm 29, 34, 55 return Route110_EventScript_14FF66:: @ 814FF66 - movespriteperm 29, 35, 55 + setobjectxyperm 29, 35, 55 return Route110_Movement_14FF6E:: @ 814FF6E diff --git a/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc b/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc index 96e492b39..c60bc366e 100644 --- a/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc +++ b/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc @@ -4,9 +4,9 @@ Route110_SeasideCyclingRoadNorthEntrance_MapScripts:: @ 81634C8 Route110_SeasideCyclingRoadNorthEntrance_MapScript1_1634CE:: @ 81634CE compare 0x40a9, 3 - callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5 + call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5 compare 0x40a9, 2 - callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5 + call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5 end Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5:: @ 81634E5 @@ -23,11 +23,11 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634EB:: @ 81634EB Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634F7:: @ 81634F7 @ Coord event directly in front of the gatesman heading left to right lockall - specialval RESULT, GetPlayerAvatarBike @ player state? + specialvar RESULT, GetPlayerAvatarBike @ player state? compare RESULT, 2 - callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D + call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D compare RESULT, 0 - jumpeq Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523 + goto_if_eq Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523 setflag 2091 setvar 0x4001, 1 releaseall @@ -41,9 +41,9 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D:: @ 816351D Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523:: @ 8163523 @ You don't have a bike! msgbox Route110_SeasideCyclingRoadNorthEntrance_Text_19E3AD, 4 - closebutton - move 255, Route110_SeasideCyclingRoadNorthEntrance_Movement_163538 - waitmove 0 + closemessage + applymovement 255, Route110_SeasideCyclingRoadNorthEntrance_Movement_163538 + waitmovement 0 releaseall end diff --git a/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc b/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc index 08d6fb5f1..cf18a8e36 100644 --- a/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc +++ b/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc @@ -10,9 +10,9 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_16347F:: @ 816347F Route110_SeasideCyclingRoadSouthEntrance_EventScript_16348B:: @ 816348B lockall - specialval RESULT, GetPlayerAvatarBike + specialvar RESULT, GetPlayerAvatarBike compare RESULT, 0 - jumpeq Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6 + goto_if_eq Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6 setflag 2091 setvar 0x4001, 1 releaseall @@ -20,9 +20,9 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_16348B:: @ 816348B Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6:: @ 81634A6 msgbox Route110_SeasideCyclingRoadSouthEntrance_Text_19E3AD, 4 - closebutton - move 255, Route110_SeasideCyclingRoadSouthEntrance_Movement_1634BB - waitmove 0 + closemessage + applymovement 255, Route110_SeasideCyclingRoadSouthEntrance_Movement_1634BB + waitmovement 0 releaseall end diff --git a/data/scripts/maps/Route110_TrickHouseEnd.inc b/data/scripts/maps/Route110_TrickHouseEnd.inc index 10e1a6865..12309207c 100644 --- a/data/scripts/maps/Route110_TrickHouseEnd.inc +++ b/data/scripts/maps/Route110_TrickHouseEnd.inc @@ -7,7 +7,7 @@ Route110_TrickHouseEnd_MapScripts:: @ 8161936 Route110_TrickHouseEnd_MapScript1_16194B:: @ 816194B compare 0x4001, 1 - callif 1, Route110_TrickHouseEnd_EventScript_161994 + call_if 1, Route110_TrickHouseEnd_EventScript_161994 end Route110_TrickHouseEnd_MapScript1_161957:: @ 8161957 @@ -21,9 +21,9 @@ Route110_TrickHouseEnd_MapScript2_161965:: @ 8161965 .2byte 0 Route110_TrickHouseEnd_EventScript_16196F:: @ 816196F - reappear 1 - spritevisible 1, 29, 1 - spriteface 1, 4 + addobject 1 + showobject 1, 29, 1 + turnobject 1, 4 end Route110_TrickHouseEnd_MapScript2_16197C:: @ 816197C @@ -62,9 +62,9 @@ Route110_TrickHouseEnd_EventScript_161A0B:: @ 8161A0B setvar 0x40c1, 0 giveitem ITEM_RARE_CANDY compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -75,9 +75,9 @@ Route110_TrickHouseEnd_EventScript_161A47:: @ 8161A47 setvar 0x40c1, 0 giveitem ITEM_TIMER_BALL compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -88,9 +88,9 @@ Route110_TrickHouseEnd_EventScript_161A83:: @ 8161A83 setvar 0x40c1, 0 giveitem ITEM_HARD_STONE compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -101,9 +101,9 @@ Route110_TrickHouseEnd_EventScript_161ABF:: @ 8161ABF setvar 0x40c1, 0 giveitem ITEM_SMOKE_BALL compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -114,9 +114,9 @@ Route110_TrickHouseEnd_EventScript_161AFB:: @ 8161AFB setvar 0x40c1, 0 giveitem ITEM_TM12 compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -127,9 +127,9 @@ Route110_TrickHouseEnd_EventScript_161B37:: @ 8161B37 setvar 0x40c1, 0 giveitem ITEM_MAGNET compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -140,30 +140,30 @@ Route110_TrickHouseEnd_EventScript_161B73:: @ 8161B73 setvar 0x40c1, 0 giveitem ITEM_PP_MAX compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF msgbox Route110_TrickHouseEnd_Text_19C5AF, 4 - closebutton + closemessage compare FACING, 1 - callif 1, Route110_TrickHouseEnd_EventScript_161C74 + call_if 1, Route110_TrickHouseEnd_EventScript_161C74 compare FACING, 2 - callif 1, Route110_TrickHouseEnd_EventScript_161C7F + call_if 1, Route110_TrickHouseEnd_EventScript_161C7F compare FACING, 3 - callif 1, Route110_TrickHouseEnd_EventScript_161C8A + call_if 1, Route110_TrickHouseEnd_EventScript_161C8A compare FACING, 4 - callif 1, Route110_TrickHouseEnd_EventScript_161C95 - pause 30 + call_if 1, Route110_TrickHouseEnd_EventScript_161C95 + delay 30 msgbox Route110_TrickHouseEnd_Text_19C602, 4 - closebutton - move 1, Route110_TrickHouseEnd_Movement_1A0839 - waitmove 0 - pause 30 + closemessage + applymovement 1, Route110_TrickHouseEnd_Movement_1A0839 + waitmovement 0 + delay 30 msgbox Route110_TrickHouseEnd_Text_19C691, 4 setvar 0x40c1, 0 .ifdef SAPPHIRE @@ -172,7 +172,7 @@ Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF givedecoration 31 .endc compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C61 + call_if 1, Route110_TrickHouseEnd_EventScript_161C61 msgbox Route110_TrickHouseEnd_Text_19C85C, 4 call Route110_TrickHouseEnd_EventScript_161C2E special ResetTrickHouseEndRoomFlag @@ -180,12 +180,12 @@ Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF end Route110_TrickHouseEnd_EventScript_161C2E:: @ 8161C2E - move 1, Route110_TrickHouseEnd_Movement_161315 - waitmove 0 - playsfx 178 - move 1, Route110_TrickHouseEnd_Movement_16131E - waitmove 0 - disappear 1 + applymovement 1, Route110_TrickHouseEnd_Movement_161315 + waitmovement 0 + playse 178 + applymovement 1, Route110_TrickHouseEnd_Movement_16131E + waitmovement 0 + removeobject 1 addvar 0x4044, 1 return @@ -202,43 +202,43 @@ Route110_TrickHouseEnd_EventScript_161C61:: @ 8161C61 return Route110_TrickHouseEnd_EventScript_161C74:: @ 8161C74 - move 1, Route110_TrickHouseEnd_Movement_1A0845 - waitmove 0 + applymovement 1, Route110_TrickHouseEnd_Movement_1A0845 + waitmovement 0 return Route110_TrickHouseEnd_EventScript_161C7F:: @ 8161C7F - move 1, Route110_TrickHouseEnd_Movement_1A0841 - waitmove 0 + applymovement 1, Route110_TrickHouseEnd_Movement_1A0841 + waitmovement 0 return Route110_TrickHouseEnd_EventScript_161C8A:: @ 8161C8A - move 1, Route110_TrickHouseEnd_Movement_1A083F - waitmove 0 + applymovement 1, Route110_TrickHouseEnd_Movement_1A083F + waitmovement 0 return Route110_TrickHouseEnd_EventScript_161C95:: @ 8161C95 - move 1, Route110_TrickHouseEnd_Movement_1A0843 - waitmove 0 + applymovement 1, Route110_TrickHouseEnd_Movement_1A0843 + waitmovement 0 return Route110_TrickHouseEnd_EventScript_161CA0:: @ 8161CA0 lockall - spriteface 1, 3 - playsfx 21 - move 1, Route110_TrickHouseEnd_Movement_1A0833 - waitmove 0 - pause 20 - move 1, Route110_TrickHouseEnd_Movement_161CEA - waitmove 0 - playsfx 178 - move 255, Route110_TrickHouseEnd_Movement_1A0845 - waitmove 0 + turnobject 1, 3 + playse 21 + applymovement 1, Route110_TrickHouseEnd_Movement_1A0833 + waitmovement 0 + delay 20 + applymovement 1, Route110_TrickHouseEnd_Movement_161CEA + waitmovement 0 + playse 178 + applymovement 255, Route110_TrickHouseEnd_Movement_1A0845 + waitmovement 0 msgbox Route110_TrickHouseEnd_Text_19CA8B, 4 - closebutton - move 255, Route110_TrickHouseEnd_Movement_161CE8 - waitmove 0 - pause 4 - spriteface 1, 4 + closemessage + applymovement 255, Route110_TrickHouseEnd_Movement_161CE8 + waitmovement 0 + delay 4 + turnobject 1, 4 releaseall end diff --git a/data/scripts/maps/Route110_TrickHouseEntrance.inc b/data/scripts/maps/Route110_TrickHouseEntrance.inc index 2601942be..568ba2af6 100644 --- a/data/scripts/maps/Route110_TrickHouseEntrance.inc +++ b/data/scripts/maps/Route110_TrickHouseEntrance.inc @@ -7,17 +7,17 @@ Route110_TrickHouseEntrance_MapScripts:: @ 8160F2B Route110_TrickHouseEntrance_MapScript1_160F3B:: @ 8160F3B setflag 2114 compare 0x40b5, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_160FCE + goto_if_eq Route110_TrickHouseEntrance_EventScript_160FCE compare 0x40c1, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_160FB2 + goto_if_eq Route110_TrickHouseEntrance_EventScript_160FB2 compare 0x40a6, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_16108E + goto_if_eq Route110_TrickHouseEntrance_EventScript_16108E compare 0x40a7, 5 - callif 1, Route110_TrickHouseEntrance_EventScript_160FDE + call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE compare 0x40a7, 3 - callif 1, Route110_TrickHouseEntrance_EventScript_160FDE + call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE compare 0x40a7, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_160FDE + call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE switch 0x40a7 case 0, Route110_TrickHouseEntrance_EventScript_16109A case 1, Route110_TrickHouseEntrance_EventScript_1610A0 @@ -28,7 +28,7 @@ Route110_TrickHouseEntrance_MapScript1_160F3B:: @ 8160F3B Route110_TrickHouseEntrance_EventScript_160FB2:: @ 8160FB2 setvar 0x40a5, 1 compare 0x4044, 8 - jumpeq Route110_TrickHouseEntrance_EventScript_160FC8 + goto_if_eq Route110_TrickHouseEntrance_EventScript_160FC8 setvar 0x40a7, 2 end @@ -45,56 +45,56 @@ Route110_TrickHouseEntrance_EventScript_160FCE:: @ 8160FCE Route110_TrickHouseEntrance_EventScript_160FDE:: @ 8160FDE setvar 0x40a7, 0 compare 0x4044, 1 - callif 1, Route110_TrickHouseEntrance_EventScript_16103C + call_if 1, Route110_TrickHouseEntrance_EventScript_16103C compare 0x4044, 2 - callif 1, Route110_TrickHouseEntrance_EventScript_161046 + call_if 1, Route110_TrickHouseEntrance_EventScript_161046 compare 0x4044, 3 - callif 1, Route110_TrickHouseEntrance_EventScript_161050 + call_if 1, Route110_TrickHouseEntrance_EventScript_161050 compare 0x4044, 4 - callif 1, Route110_TrickHouseEntrance_EventScript_16105A + call_if 1, Route110_TrickHouseEntrance_EventScript_16105A compare 0x4044, 5 - callif 1, Route110_TrickHouseEntrance_EventScript_161064 + call_if 1, Route110_TrickHouseEntrance_EventScript_161064 compare 0x4044, 6 - callif 1, Route110_TrickHouseEntrance_EventScript_16106E + call_if 1, Route110_TrickHouseEntrance_EventScript_16106E compare 0x4044, 7 - callif 1, Route110_TrickHouseEntrance_EventScript_161078 + call_if 1, Route110_TrickHouseEntrance_EventScript_161078 compare 0x4044, 8 - callif 1, Route110_TrickHouseEntrance_EventScript_161082 + call_if 1, Route110_TrickHouseEntrance_EventScript_161082 return Route110_TrickHouseEntrance_EventScript_16103C:: @ 816103C checkflag 2057 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161046:: @ 8161046 checkflag 2058 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161050:: @ 8161050 checkflag 2059 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_16105A:: @ 816105A checkflag 2060 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161064:: @ 8161064 checkflag 2061 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_16106E:: @ 816106E checkflag 2062 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161078:: @ 8161078 checkflag 2052 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161082:: @ 8161082 @@ -106,8 +106,8 @@ Route110_TrickHouseEntrance_EventScript_161088:: @ 8161088 return Route110_TrickHouseEntrance_EventScript_16108E:: @ 816108E - movespriteperm 1, 5, 2 - spritebehave 1, 4 + setobjectxyperm 1, 5, 2 + setobjectmovementtype 1, 4 end Route110_TrickHouseEntrance_EventScript_16109A:: @ 816109A @@ -138,15 +138,15 @@ Route110_TrickHouseEntrance_MapScript2_1610B2:: @ 81610B2 .2byte 0 Route110_TrickHouseEntrance_EventScript_1610F4:: @ 81610F4 - reappear 1 - spritevisible 1, 29, 0 - spriteface 1, 4 - spriteface 255, 3 + addobject 1 + showobject 1, 29, 0 + turnobject 1, 4 + turnobject 255, 3 end Route110_TrickHouseEntrance_EventScript_161105:: @ 8161105 - reappear 1 - spriteinvisible 1, 29, 0 + addobject 1 + hideobject 1, 29, 0 switch 0x4044 case 0, Route110_TrickHouseEntrance_EventScript_16116B case 1, Route110_TrickHouseEntrance_EventScript_161173 @@ -159,51 +159,51 @@ Route110_TrickHouseEntrance_EventScript_161105:: @ 8161105 end Route110_TrickHouseEntrance_EventScript_16116B:: @ 816116B - movesprite 1, 6, 3 + setobjectxy 1, 6, 3 end Route110_TrickHouseEntrance_EventScript_161173:: @ 8161173 - movesprite 1, 11, 5 + setobjectxy 1, 11, 5 end Route110_TrickHouseEntrance_EventScript_16117B:: @ 816117B - movesprite 1, 11, 1 + setobjectxy 1, 11, 1 end Route110_TrickHouseEntrance_EventScript_161183:: @ 8161183 - movesprite 1, 3, 1 + setobjectxy 1, 3, 1 end Route110_TrickHouseEntrance_EventScript_16118B:: @ 816118B - movesprite 1, 0, 5 + setobjectxy 1, 0, 5 end Route110_TrickHouseEntrance_EventScript_161193:: @ 8161193 - movesprite 1, 9, 1 + setobjectxy 1, 9, 1 end Route110_TrickHouseEntrance_EventScript_16119B:: @ 816119B - movesprite 1, 8, 1 + setobjectxy 1, 8, 1 end Route110_TrickHouseEntrance_EventScript_1611A3:: @ 81611A3 - movesprite 1, 4, 4 + setobjectxy 1, 4, 4 end Route110_TrickHouseEntrance_EventScript_1611AB:: @ 81611AB - disappear 1 + removeobject 1 end Route110_TrickHouseEntrance_EventScript_1611AF:: @ 81611AF - reappear 1 - movesprite 1, 5, 2 - spriteface 1, 2 + addobject 1 + setobjectxy 1, 5, 2 + turnobject 1, 2 end Route110_TrickHouseEntrance_EventScript_1611BE:: @ 81611BE - reappear 1 - movesprite 1, 5, 2 - spriteface 1, 1 + addobject 1 + setobjectxy 1, 5, 2 + turnobject 1, 1 end Route110_TrickHouseEntrance_MapScript2_1611CD:: @ 81611CD @@ -212,18 +212,18 @@ Route110_TrickHouseEntrance_MapScript2_1611CD:: @ 81611CD Route110_TrickHouseEntrance_EventScript_1611D7:: @ 81611D7 lockall - pause 20 + delay 20 compare 0x4044, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_161327 + call_if 1, Route110_TrickHouseEntrance_EventScript_161327 msgbox Route110_TrickHouseEntrance_Text_19BD82, 4 - closebutton - pause 20 - move 1, Route110_TrickHouseEntrance_Movement_161315 - waitmove 0 - playsfx 178 - move 1, Route110_TrickHouseEntrance_Movement_16131E - waitmove 0 - disappear 1 + closemessage + delay 20 + applymovement 1, Route110_TrickHouseEntrance_Movement_161315 + waitmovement 0 + playse 178 + applymovement 1, Route110_TrickHouseEntrance_Movement_16131E + waitmovement 0 + removeobject 1 setvar 0x40a7, 1 setvar 0x40a6, 0 releaseall @@ -243,28 +243,28 @@ Route110_TrickHouseEntrance_EventScript_16121A:: @ 816121A end Route110_TrickHouseEntrance_EventScript_16124D:: @ 816124D - playsfx 21 - move 255, Route110_TrickHouseEntrance_Movement_1A0833 - waitmove 0 - move 255, Route110_TrickHouseEntrance_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 255, Route110_TrickHouseEntrance_Movement_1A0833 + waitmovement 0 + applymovement 255, Route110_TrickHouseEntrance_Movement_1A0835 + waitmovement 0 compare 0x4044, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1612CD + call_if 1, Route110_TrickHouseEntrance_EventScript_1612CD compare 0x4044, 1 - callif 1, Route110_TrickHouseEntrance_EventScript_1612D6 + call_if 1, Route110_TrickHouseEntrance_EventScript_1612D6 compare 0x4044, 2 - callif 1, Route110_TrickHouseEntrance_EventScript_1612DF + call_if 1, Route110_TrickHouseEntrance_EventScript_1612DF compare 0x4044, 3 - callif 1, Route110_TrickHouseEntrance_EventScript_1612E8 + call_if 1, Route110_TrickHouseEntrance_EventScript_1612E8 compare 0x4044, 4 - callif 1, Route110_TrickHouseEntrance_EventScript_1612F1 + call_if 1, Route110_TrickHouseEntrance_EventScript_1612F1 compare 0x4044, 5 - callif 1, Route110_TrickHouseEntrance_EventScript_1612FA + call_if 1, Route110_TrickHouseEntrance_EventScript_1612FA compare 0x4044, 6 - callif 1, Route110_TrickHouseEntrance_EventScript_161303 + call_if 1, Route110_TrickHouseEntrance_EventScript_161303 compare 0x4044, 7 - callif 1, Route110_TrickHouseEntrance_EventScript_16130C - closebutton + call_if 1, Route110_TrickHouseEntrance_EventScript_16130C + closemessage setvar 0x40a6, 1 warp Route110_TrickHouseEntrance, 255, 6, 2 waitstate @@ -333,46 +333,46 @@ Route110_TrickHouseEntrance_EventScript_161327:: @ 8161327 Route110_TrickHouseEntrance_EventScript_161330:: @ 8161330 msgbox Route110_TrickHouseEntrance_Text_19BF19, 4 - closebutton - move 1, Route110_TrickHouseEntrance_Movement_1A0839 - waitmove 0 - playsfx 21 - move 1, Route110_TrickHouseEntrance_Movement_1A0833 - waitmove 0 - move 1, Route110_TrickHouseEntrance_Movement_1A0835 - waitmove 0 + closemessage + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839 + waitmovement 0 + playse 21 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0833 + waitmovement 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0835 + waitmovement 0 msgbox Route110_TrickHouseEntrance_Text_19BFAB, 4 - move 1, Route110_TrickHouseEntrance_Movement_1A0841 - waitmove 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0841 + waitmovement 0 releaseall end Route110_TrickHouseEntrance_EventScript_16136E:: @ 816136E - move 1, Route110_TrickHouseEntrance_Movement_1A0839 - waitmove 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839 + waitmovement 0 msgbox Route110_TrickHouseEntrance_Text_19C07E, 4 compare 0x4044, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_1613CE + goto_if_eq Route110_TrickHouseEntrance_EventScript_1613CE compare 0x4044, 2 - jumpeq Route110_TrickHouseEntrance_EventScript_1613FA + goto_if_eq Route110_TrickHouseEntrance_EventScript_1613FA compare 0x4044, 3 - jumpeq Route110_TrickHouseEntrance_EventScript_161426 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161426 compare 0x4044, 4 - jumpeq Route110_TrickHouseEntrance_EventScript_161452 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161452 compare 0x4044, 5 - jumpeq Route110_TrickHouseEntrance_EventScript_16147E + goto_if_eq Route110_TrickHouseEntrance_EventScript_16147E compare 0x4044, 6 - jumpeq Route110_TrickHouseEntrance_EventScript_1614AA + goto_if_eq Route110_TrickHouseEntrance_EventScript_1614AA compare 0x4044, 7 - jumpeq Route110_TrickHouseEntrance_EventScript_1614D6 + goto_if_eq Route110_TrickHouseEntrance_EventScript_1614D6 end Route110_TrickHouseEntrance_EventScript_1613CE:: @ 81613CE giveitem ITEM_RARE_CANDY compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -380,9 +380,9 @@ Route110_TrickHouseEntrance_EventScript_1613CE:: @ 81613CE Route110_TrickHouseEntrance_EventScript_1613FA:: @ 81613FA giveitem ITEM_TIMER_BALL compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -390,9 +390,9 @@ Route110_TrickHouseEntrance_EventScript_1613FA:: @ 81613FA Route110_TrickHouseEntrance_EventScript_161426:: @ 8161426 giveitem ITEM_HARD_STONE compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -400,9 +400,9 @@ Route110_TrickHouseEntrance_EventScript_161426:: @ 8161426 Route110_TrickHouseEntrance_EventScript_161452:: @ 8161452 giveitem ITEM_SMOKE_BALL compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -410,9 +410,9 @@ Route110_TrickHouseEntrance_EventScript_161452:: @ 8161452 Route110_TrickHouseEntrance_EventScript_16147E:: @ 816147E giveitem ITEM_TM12 compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -420,9 +420,9 @@ Route110_TrickHouseEntrance_EventScript_16147E:: @ 816147E Route110_TrickHouseEntrance_EventScript_1614AA:: @ 81614AA giveitem ITEM_MAGNET compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -430,9 +430,9 @@ Route110_TrickHouseEntrance_EventScript_1614AA:: @ 81614AA Route110_TrickHouseEntrance_EventScript_1614D6:: @ 81614D6 giveitem ITEM_PP_MAX compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -440,14 +440,14 @@ Route110_TrickHouseEntrance_EventScript_1614D6:: @ 81614D6 Route110_TrickHouseEntrance_EventScript_161502:: @ 8161502 setvar 0x40c1, 0 setvar 0x40a7, 3 - move 1, Route110_TrickHouseEntrance_Movement_1A0841 - waitmove 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0841 + waitmovement 0 releaseall end Route110_TrickHouseEntrance_EventScript_161518:: @ 8161518 - move 1, Route110_TrickHouseEntrance_Movement_1A0839 - waitmove 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839 + waitmovement 0 msgbox Route110_TrickHouseEntrance_Text_19C128, 4 .ifdef SAPPHIRE givedecoration 32 @@ -455,24 +455,24 @@ Route110_TrickHouseEntrance_EventScript_161518:: @ 8161518 givedecoration 31 .endif compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161551 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161551 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02B8 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02B8 msgbox Route110_TrickHouseEntrance_Text_19C18D, 4 releaseall end Route110_TrickHouseEntrance_EventScript_161551:: @ 8161551 msgbox Route110_TrickHouseEntrance_Text_19C17E, 4 - closebutton - move 1, Route110_TrickHouseEntrance_Movement_16309F - waitmove 0 - move 1, Route110_TrickHouseEntrance_Movement_161315 - waitmove 0 - playsfx 178 - move 1, Route110_TrickHouseEntrance_Movement_16131E - waitmove 0 - disappear 1 + closemessage + applymovement 1, Route110_TrickHouseEntrance_Movement_16309F + waitmovement 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_161315 + waitmovement 0 + playse 178 + applymovement 1, Route110_TrickHouseEntrance_Movement_16131E + waitmovement 0 + removeobject 1 setvar 0x40c1, 0 setvar 0x40a7, 5 releaseall @@ -494,20 +494,20 @@ Route110_TrickHouseEntrance_EventScript_1615BD:: @ 81615BD Route110_TrickHouseEntrance_EventScript_1615C7:: @ 81615C7 msgbox Route110_TrickHouseEntrance_Text_19BE7D, 5 - closebutton + closemessage compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_1615DD + goto_if_eq Route110_TrickHouseEntrance_EventScript_1615DD releaseall end Route110_TrickHouseEntrance_EventScript_1615DD:: @ 81615DD setmaptile 5, 1, 537, 0 special DrawWholeMapView - pause 20 - move 255, Route110_TrickHouseEntrance_Movement_1A0856 - waitmove 0 - move 255, Route110_TrickHouseEntrance_Movement_16165E - waitmove 0 + delay 20 + applymovement 255, Route110_TrickHouseEntrance_Movement_1A0856 + waitmovement 0 + applymovement 255, Route110_TrickHouseEntrance_Movement_16165E + waitmovement 0 switch 0x4044 case 0, Route110_TrickHouseEntrance_EventScript_161660 case 1, Route110_TrickHouseEntrance_EventScript_16166B @@ -578,7 +578,7 @@ Route110_TrickHouseEntrance_EventScript_1616B8:: @ 81616B8 Route110_TrickHouseEntrance_EventScript_1616C2:: @ 81616C2 compare 0x4044, 8 - jumpeq Route110_TrickHouseEntrance_EventScript_1616D7 + goto_if_eq Route110_TrickHouseEntrance_EventScript_1616D7 msgbox Route110_TrickHouseEntrance_Text_19BE6E, 4 releaseall end @@ -603,9 +603,9 @@ gUnknown_081616E1:: @ 81616E1 Route110_TrickHouseEntrance_EventScript_161740:: @ 8161740 compare 0x40AB, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819CAD1, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AB, 2 setmaptile 13, 1, 523, 0 special DrawWholeMapView @@ -614,9 +614,9 @@ Route110_TrickHouseEntrance_EventScript_161740:: @ 8161740 Route110_TrickHouseEntrance_EventScript_161769:: @ 8161769 compare 0x40AC, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819CCCB, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AC, 2 setmaptile 13, 1, 523, 0 special DrawWholeMapView @@ -625,9 +625,9 @@ Route110_TrickHouseEntrance_EventScript_161769:: @ 8161769 Route110_TrickHouseEntrance_EventScript_161792:: @ 8161792 compare 0x40AD, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819CEF9, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AD, 2 setmaptile 13, 1, 523, 0 special DrawWholeMapView @@ -636,9 +636,9 @@ Route110_TrickHouseEntrance_EventScript_161792:: @ 8161792 Route110_TrickHouseEntrance_EventScript_1617BB:: @ 81617BB compare 0x40AE, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819D164, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AE, 2 setmaptile 13, 1, 523, 0 special DrawWholeMapView @@ -647,9 +647,9 @@ Route110_TrickHouseEntrance_EventScript_1617BB:: @ 81617BB Route110_TrickHouseEntrance_EventScript_1617E4:: @ 81617E4 compare 0x40AF, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819D3A5, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AF, 2 setmaptile 13, 1, 523, 0 special DrawWholeMapView @@ -658,9 +658,9 @@ Route110_TrickHouseEntrance_EventScript_1617E4:: @ 81617E4 Route110_TrickHouseEntrance_EventScript_16180D:: @ 816180D compare 0x40B0, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819DC0A, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40B0, 2 setmaptile 13, 1, 523, 0 special DrawWholeMapView @@ -669,9 +669,9 @@ Route110_TrickHouseEntrance_EventScript_16180D:: @ 816180D Route110_TrickHouseEntrance_EventScript_161836:: @ 8161836 compare 0x40B1, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819DE8D, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40B1, 2 setmaptile 13, 1, 523, 0 special DrawWholeMapView @@ -680,9 +680,9 @@ Route110_TrickHouseEntrance_EventScript_161836:: @ 8161836 Route110_TrickHouseEntrance_EventScript_16185F:: @ 816185F compare 0x40B2, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819E0FF, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40B2, 2 setmaptile 13, 1, 523, 0 special DrawWholeMapView @@ -714,10 +714,10 @@ Route110_TrickHousePuzzle5_EventScript_16189C:: @ 816189C Route110_TrickHousePuzzle6_EventScript_16189C:: @ 816189C Route110_TrickHousePuzzle7_EventScript_16189C:: @ 816189C Route110_TrickHousePuzzle8_EventScript_16189C:: @ 816189C - fanfare 370 + playfanfare 370 message Route110_TrickHousePuzzle1_Text_19C1B8 waitfanfare - waittext + waitmessage msgbox Route110_TrickHousePuzzle1_Text_19C1CB, 4 releaseall end @@ -727,11 +727,11 @@ Route110_TrickHouseEntrance_EventScript_1618B0:: @ 81618B0 msgbox Route110_TrickHouseEntrance_Text_19BA56, 4 releaseall compare 0x4044, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1618E1 + call_if 1, Route110_TrickHouseEntrance_EventScript_1618E1 compare 0x4044, 1 - callif 1, Route110_TrickHouseEntrance_EventScript_1618F6 + call_if 1, Route110_TrickHouseEntrance_EventScript_1618F6 compare 0x4044, 2 - callif 1, Route110_TrickHouseEntrance_EventScript_16190B + call_if 1, Route110_TrickHouseEntrance_EventScript_16190B setvar 0x40a5, 1 end @@ -757,10 +757,10 @@ Route110_TrickHouseEntrance_EventScript_16190B:: @ 816190B return Route110_TrickHouseEntrance_EventScript_161920:: @ 8161920 - setanimation 0, 32772 - setanimation 1, 32773 - setanimation 2, 32774 - doanimation 54 - checkanimation 54 - pause 10 + setfieldeffect 0, 32772 + setfieldeffect 1, 32773 + setfieldeffect 2, 32774 + dofieldeffect 54 + waitfieldeffect 54 + delay 10 return diff --git a/data/scripts/maps/Route110_TrickHousePuzzle1.inc b/data/scripts/maps/Route110_TrickHousePuzzle1.inc index 6b6d45af2..3a89c2db1 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle1.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle1.inc @@ -4,7 +4,7 @@ Route110_TrickHousePuzzle1_MapScripts:: @ 8161CF8 Route110_TrickHousePuzzle1_MapScript1_161CFE:: @ 8161CFE compare 0x40ab, 2 - jumpeq Route110_TrickHousePuzzle1_EventScript_161D0A + goto_if_eq Route110_TrickHousePuzzle1_EventScript_161D0A end Route110_TrickHousePuzzle1_EventScript_161D0A:: @ 8161D0A @@ -14,13 +14,13 @@ Route110_TrickHousePuzzle1_EventScript_161D0A:: @ 8161D0A Route110_TrickHousePuzzle1_EventScript_161D14:: @ 8161D14 lockall compare 0x40ab, 0 - jumpeq Route110_TrickHousePuzzle1_EventScript_161D26 - jump Route110_TrickHousePuzzle1_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle1_EventScript_161D26 + goto Route110_TrickHousePuzzle1_EventScript_161892 end Route110_TrickHousePuzzle1_EventScript_161D26:: @ 8161D26 setvar 0x40ab, 1 - jump Route110_TrickHousePuzzle1_EventScript_16189C + goto Route110_TrickHousePuzzle1_EventScript_16189C end Route110_TrickHousePuzzle1_EventScript_161D31:: @ 8161D31 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle2.inc b/data/scripts/maps/Route110_TrickHousePuzzle2.inc index 27ffad50d..f71a9611a 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle2.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle2.inc @@ -5,13 +5,13 @@ Route110_TrickHousePuzzle2_MapScripts:: @ 8161D76 Route110_TrickHousePuzzle2_MapScript1_161D81:: @ 8161D81 compare 0x4001, 1 - callif 1, Route110_TrickHousePuzzle2_EventScript_161E2C + call_if 1, Route110_TrickHousePuzzle2_EventScript_161E2C compare 0x4002, 1 - callif 1, Route110_TrickHousePuzzle2_EventScript_161E3F + call_if 1, Route110_TrickHousePuzzle2_EventScript_161E3F compare 0x4003, 1 - callif 1, Route110_TrickHousePuzzle2_EventScript_161E52 + call_if 1, Route110_TrickHousePuzzle2_EventScript_161E52 compare 0x4004, 1 - callif 1, Route110_TrickHousePuzzle2_EventScript_161E65 + call_if 1, Route110_TrickHousePuzzle2_EventScript_161E65 end Route110_TrickHousePuzzle2_MapScript1_161DAE:: @ 8161DAE @@ -24,19 +24,19 @@ Route110_TrickHousePuzzle2_MapScript1_161DAE:: @ 8161DAE Route110_TrickHousePuzzle2_EventScript_161DC3:: @ 8161DC3 lockall compare 0x40ac, 0 - jumpeq Route110_TrickHousePuzzle2_EventScript_161DD5 - jump Route110_TrickHousePuzzle2_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle2_EventScript_161DD5 + goto Route110_TrickHousePuzzle2_EventScript_161892 end Route110_TrickHousePuzzle2_EventScript_161DD5:: @ 8161DD5 setvar 0x40ac, 1 - jump Route110_TrickHousePuzzle2_EventScript_16189C + goto Route110_TrickHousePuzzle2_EventScript_16189C end Route110_TrickHousePuzzle2_EventScript_161DE0:: @ 8161DE0 lockall setvar 0x4001, 1 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle2_EventScript_161E2C special DrawWholeMapView releaseall @@ -45,7 +45,7 @@ Route110_TrickHousePuzzle2_EventScript_161DE0:: @ 8161DE0 Route110_TrickHousePuzzle2_EventScript_161DF3:: @ 8161DF3 lockall setvar 0x4002, 1 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle2_EventScript_161E3F special DrawWholeMapView releaseall @@ -54,7 +54,7 @@ Route110_TrickHousePuzzle2_EventScript_161DF3:: @ 8161DF3 Route110_TrickHousePuzzle2_EventScript_161E06:: @ 8161E06 lockall setvar 0x4003, 1 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle2_EventScript_161E52 special DrawWholeMapView releaseall @@ -63,7 +63,7 @@ Route110_TrickHousePuzzle2_EventScript_161E06:: @ 8161E06 Route110_TrickHousePuzzle2_EventScript_161E19:: @ 8161E19 lockall setvar 0x4004, 1 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle2_EventScript_161E65 special DrawWholeMapView releaseall diff --git a/data/scripts/maps/Route110_TrickHousePuzzle3.inc b/data/scripts/maps/Route110_TrickHousePuzzle3.inc index efd96ec44..a50ecd3ce 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle3.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle3.inc @@ -6,9 +6,9 @@ Route110_TrickHousePuzzle3_MapScripts:: @ 8161EBD Route110_TrickHousePuzzle3_MapScript1_161EC8:: @ 8161EC8 call Route110_TrickHousePuzzle3_EventScript_161F12 compare 0x4009, 0 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FE5 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FE5 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle3_EventScript_1622C8 + call_if 1, Route110_TrickHousePuzzle3_EventScript_1622C8 end Route110_TrickHousePuzzle3_MapScript1_161EE4:: @ 8161EE4 @@ -32,19 +32,19 @@ Route110_TrickHousePuzzle3_EventScript_161F12:: @ 8161F12 setmaptile 1, 3, 600, 0 setmaptile 10, 2, 600, 0 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle3_EventScript_161F9F + call_if 1, Route110_TrickHousePuzzle3_EventScript_161F9F compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FA9 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FA9 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FB3 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FB3 compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FBD + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FBD compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FC7 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FC7 compare 0x4008, 6 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FD1 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FD1 compare 0x4008, 7 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FDB + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FDB return Route110_TrickHousePuzzle3_EventScript_161F9F:: @ 8161F9F @@ -248,50 +248,50 @@ Route110_TrickHousePuzzle3_EventScript_1622C8:: @ 81622C8 Route110_TrickHousePuzzle3_EventScript_1625AB:: @ 81625AB lockall setvar 0x4008, 1 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625B7:: @ 81625B7 lockall setvar 0x4008, 2 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625C3:: @ 81625C3 lockall setvar 0x4008, 3 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625CF:: @ 81625CF lockall setvar 0x4008, 4 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625DB:: @ 81625DB lockall setvar 0x4008, 5 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625E7:: @ 81625E7 lockall setvar 0x4008, 6 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625F3:: @ 81625F3 lockall setvar 0x4008, 7 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625FF:: @ 81625FF call Route110_TrickHousePuzzle3_EventScript_162612 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle3_EventScript_161F12 - jump Route110_TrickHousePuzzle3_EventScript_1626AD + goto Route110_TrickHousePuzzle3_EventScript_1626AD end Route110_TrickHousePuzzle3_EventScript_162612:: @ 8162612 @@ -303,19 +303,19 @@ Route110_TrickHousePuzzle3_EventScript_162612:: @ 8162612 setvar 0x4006, 0 setvar 0x4007, 0 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle3_EventScript_162683 + call_if 1, Route110_TrickHousePuzzle3_EventScript_162683 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle3_EventScript_162689 + call_if 1, Route110_TrickHousePuzzle3_EventScript_162689 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle3_EventScript_16268F + call_if 1, Route110_TrickHousePuzzle3_EventScript_16268F compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle3_EventScript_162695 + call_if 1, Route110_TrickHousePuzzle3_EventScript_162695 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle3_EventScript_16269B + call_if 1, Route110_TrickHousePuzzle3_EventScript_16269B compare 0x4008, 6 - callif 1, Route110_TrickHousePuzzle3_EventScript_1626A1 + call_if 1, Route110_TrickHousePuzzle3_EventScript_1626A1 compare 0x4008, 7 - callif 1, Route110_TrickHousePuzzle3_EventScript_1626A7 + call_if 1, Route110_TrickHousePuzzle3_EventScript_1626A7 return Route110_TrickHousePuzzle3_EventScript_162683:: @ 8162683 @@ -348,14 +348,14 @@ Route110_TrickHousePuzzle3_EventScript_1626A7:: @ 81626A7 Route110_TrickHousePuzzle3_EventScript_1626AD:: @ 81626AD compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FE5 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FE5 compare 0x4009, 0 - callif 1, Route110_TrickHousePuzzle3_EventScript_1622C8 + call_if 1, Route110_TrickHousePuzzle3_EventScript_1622C8 special DrawWholeMapView compare 0x4009, 1 - jumpeq Route110_TrickHousePuzzle3_EventScript_1626DD + goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626DD compare 0x4009, 0 - jumpeq Route110_TrickHousePuzzle3_EventScript_1626E4 + goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626E4 end Route110_TrickHousePuzzle3_EventScript_1626DD:: @ 81626DD @@ -371,13 +371,13 @@ Route110_TrickHousePuzzle3_EventScript_1626E4:: @ 81626E4 Route110_TrickHousePuzzle3_EventScript_1626EB:: @ 81626EB lockall compare 0x40ad, 0 - jumpeq Route110_TrickHousePuzzle3_EventScript_1626FD - jump Route110_TrickHousePuzzle3_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626FD + goto Route110_TrickHousePuzzle3_EventScript_161892 end Route110_TrickHousePuzzle3_EventScript_1626FD:: @ 81626FD setvar 0x40ad, 1 - jump Route110_TrickHousePuzzle3_EventScript_16189C + goto Route110_TrickHousePuzzle3_EventScript_16189C end Route110_TrickHousePuzzle3_EventScript_162708:: @ 8162708 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle4.inc b/data/scripts/maps/Route110_TrickHousePuzzle4.inc index 89d5e45c3..0c9fc426f 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle4.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle4.inc @@ -4,13 +4,13 @@ Route110_TrickHousePuzzle4_MapScripts:: @ 816274D Route110_TrickHousePuzzle4_EventScript_16274E:: @ 816274E lockall compare 0x40ae, 0 - jumpeq Route110_TrickHousePuzzle4_EventScript_162760 - jump Route110_TrickHousePuzzle4_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle4_EventScript_162760 + goto Route110_TrickHousePuzzle4_EventScript_161892 end Route110_TrickHousePuzzle4_EventScript_162760:: @ 8162760 setvar 0x40ae, 1 - jump Route110_TrickHousePuzzle4_EventScript_16189C + goto Route110_TrickHousePuzzle4_EventScript_16189C end Route110_TrickHousePuzzle4_EventScript_16276B:: @ 816276B diff --git a/data/scripts/maps/Route110_TrickHousePuzzle5.inc b/data/scripts/maps/Route110_TrickHousePuzzle5.inc index cd5d2fbb9..222a71138 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle5.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle5.inc @@ -14,163 +14,163 @@ Route110_TrickHousePuzzle5_MapScript1_1627B6:: @ 81627B6 Route110_TrickHousePuzzle5_EventScript_1627D5:: @ 81627D5 lockall compare 0x40af, 0 - jumpeq Route110_TrickHousePuzzle5_EventScript_1627E7 - jump Route110_TrickHousePuzzle5_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_1627E7 + goto Route110_TrickHousePuzzle5_EventScript_161892 end Route110_TrickHousePuzzle5_EventScript_1627E7:: @ 81627E7 setvar 0x40af, 1 - jump Route110_TrickHousePuzzle5_EventScript_16189C + goto Route110_TrickHousePuzzle5_EventScript_16189C end Route110_TrickHousePuzzle5_EventScript_1627F2:: @ 81627F2 lockall - move 1, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4001, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_162813:: @ 8162813 lockall - move 2, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4002, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_1629B3 + goto Route110_TrickHousePuzzle5_EventScript_1629B3 end Route110_TrickHousePuzzle5_EventScript_162834:: @ 8162834 lockall - move 3, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4003, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162A27 + goto Route110_TrickHousePuzzle5_EventScript_162A27 end Route110_TrickHousePuzzle5_EventScript_162855:: @ 8162855 lockall - move 4, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4004, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162A9B + goto Route110_TrickHousePuzzle5_EventScript_162A9B end Route110_TrickHousePuzzle5_EventScript_162876:: @ 8162876 lockall - move 5, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4005, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162B0F + goto Route110_TrickHousePuzzle5_EventScript_162B0F end Route110_TrickHousePuzzle5_EventScript_162897:: @ 8162897 lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_1628A3:: @ 81628A3 lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_1628AF:: @ 81628AF lockall setvar 0x4009, 2 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_1628BB:: @ 81628BB lockall setvar 0x4009, 3 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_1628C7:: @ 81628C7 lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_1629B3 + goto Route110_TrickHousePuzzle5_EventScript_1629B3 end Route110_TrickHousePuzzle5_EventScript_1628D3:: @ 81628D3 lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_1629B3 + goto Route110_TrickHousePuzzle5_EventScript_1629B3 end Route110_TrickHousePuzzle5_EventScript_1628DF:: @ 81628DF lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162A27 + goto Route110_TrickHousePuzzle5_EventScript_162A27 end Route110_TrickHousePuzzle5_EventScript_1628EB:: @ 81628EB lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_162A27 + goto Route110_TrickHousePuzzle5_EventScript_162A27 end Route110_TrickHousePuzzle5_EventScript_1628F7:: @ 81628F7 lockall setvar 0x4009, 2 - jump Route110_TrickHousePuzzle5_EventScript_162A27 + goto Route110_TrickHousePuzzle5_EventScript_162A27 end Route110_TrickHousePuzzle5_EventScript_162903:: @ 8162903 lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162A9B + goto Route110_TrickHousePuzzle5_EventScript_162A9B end Route110_TrickHousePuzzle5_EventScript_16290F:: @ 816290F lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_162A9B + goto Route110_TrickHousePuzzle5_EventScript_162A9B end Route110_TrickHousePuzzle5_EventScript_16291B:: @ 816291B lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162B0F + goto Route110_TrickHousePuzzle5_EventScript_162B0F end Route110_TrickHousePuzzle5_EventScript_162927:: @ 8162927 lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_162B0F + goto Route110_TrickHousePuzzle5_EventScript_162B0F end Route110_TrickHousePuzzle5_EventScript_162933:: @ 8162933 lockall setvar 0x4009, 2 - jump Route110_TrickHousePuzzle5_EventScript_162B0F + goto Route110_TrickHousePuzzle5_EventScript_162B0F end Route110_TrickHousePuzzle5_EventScript_16293F:: @ 816293F setvar 0x4001, 1 setvar 0x4008, 1 - playsfx 21 - move 1, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 1, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3 compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E63 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63 msgbox Route110_TrickHousePuzzle5_Text_19D423, 4 random 3 switch RESULT @@ -182,17 +182,17 @@ Route110_TrickHousePuzzle5_EventScript_16293F:: @ 816293F Route110_TrickHousePuzzle5_EventScript_1629B3:: @ 81629B3 setvar 0x4002, 1 setvar 0x4008, 2 - playsfx 21 - move 2, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 2, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E9B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E9B compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162ED3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162ED3 compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F0B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F0B msgbox Route110_TrickHousePuzzle5_Text_19D636, 4 random 3 switch RESULT @@ -204,17 +204,17 @@ Route110_TrickHousePuzzle5_EventScript_1629B3:: @ 81629B3 Route110_TrickHousePuzzle5_EventScript_162A27:: @ 8162A27 setvar 0x4003, 1 setvar 0x4008, 3 - playsfx 21 - move 3, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 3, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3 compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E63 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63 msgbox Route110_TrickHousePuzzle5_Text_19D7D3, 4 random 3 switch RESULT @@ -226,17 +226,17 @@ Route110_TrickHousePuzzle5_EventScript_162A27:: @ 8162A27 Route110_TrickHousePuzzle5_EventScript_162A9B:: @ 8162A9B setvar 0x4004, 1 setvar 0x4008, 4 - playsfx 21 - move 4, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 4, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3 compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E63 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63 msgbox Route110_TrickHousePuzzle5_Text_19D93D, 4 random 3 switch RESULT @@ -248,17 +248,17 @@ Route110_TrickHousePuzzle5_EventScript_162A9B:: @ 8162A9B Route110_TrickHousePuzzle5_EventScript_162B0F:: @ 8162B0F setvar 0x4005, 1 setvar 0x4008, 5 - playsfx 21 - move 5, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 5, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E9B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E9B compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162ED3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162ED3 compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F0B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F0B msgbox Route110_TrickHousePuzzle5_Text_19DA9A, 4 random 3 switch RESULT @@ -272,7 +272,7 @@ Route110_TrickHousePuzzle5_EventScript_162B83:: @ 8162B83 multichoice 0, 0, 25, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162BA6:: @ 8162BA6 @@ -280,7 +280,7 @@ Route110_TrickHousePuzzle5_EventScript_162BA6:: @ 8162BA6 multichoice 0, 0, 26, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162BC9:: @ 8162BC9 @@ -288,7 +288,7 @@ Route110_TrickHousePuzzle5_EventScript_162BC9:: @ 8162BC9 multichoice 0, 0, 27, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162BEC:: @ 8162BEC @@ -296,7 +296,7 @@ Route110_TrickHousePuzzle5_EventScript_162BEC:: @ 8162BEC multichoice 0, 0, 28, 1 switch RESULT case 2, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C0F:: @ 8162C0F @@ -304,7 +304,7 @@ Route110_TrickHousePuzzle5_EventScript_162C0F:: @ 8162C0F multichoice 0, 0, 29, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C32:: @ 8162C32 @@ -312,7 +312,7 @@ Route110_TrickHousePuzzle5_EventScript_162C32:: @ 8162C32 multichoice 0, 0, 30, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C55:: @ 8162C55 @@ -320,7 +320,7 @@ Route110_TrickHousePuzzle5_EventScript_162C55:: @ 8162C55 multichoice 0, 0, 31, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C78:: @ 8162C78 @@ -328,7 +328,7 @@ Route110_TrickHousePuzzle5_EventScript_162C78:: @ 8162C78 multichoice 0, 0, 32, 1 switch RESULT case 2, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C9B:: @ 8162C9B @@ -336,7 +336,7 @@ Route110_TrickHousePuzzle5_EventScript_162C9B:: @ 8162C9B multichoice 0, 0, 33, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162CBE:: @ 8162CBE @@ -344,7 +344,7 @@ Route110_TrickHousePuzzle5_EventScript_162CBE:: @ 8162CBE multichoice 0, 0, 34, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162CE1:: @ 8162CE1 @@ -352,7 +352,7 @@ Route110_TrickHousePuzzle5_EventScript_162CE1:: @ 8162CE1 multichoice 0, 0, 35, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D04:: @ 8162D04 @@ -360,7 +360,7 @@ Route110_TrickHousePuzzle5_EventScript_162D04:: @ 8162D04 multichoice 0, 0, 36, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D27:: @ 8162D27 @@ -368,7 +368,7 @@ Route110_TrickHousePuzzle5_EventScript_162D27:: @ 8162D27 multichoice 0, 0, 37, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D4A:: @ 8162D4A @@ -376,7 +376,7 @@ Route110_TrickHousePuzzle5_EventScript_162D4A:: @ 8162D4A multichoice 0, 0, 38, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D6D:: @ 8162D6D @@ -384,32 +384,32 @@ Route110_TrickHousePuzzle5_EventScript_162D6D:: @ 8162D6D multichoice 0, 0, 39, 1 switch RESULT case 2, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D90:: @ 8162D90 - checksound - playsfx 32 + waitse + playse 32 msgbox Route110_TrickHousePuzzle5_Text_19D5CF, 4 - move 1, Route110_TrickHousePuzzle5_Movement_16309F - move 2, Route110_TrickHousePuzzle5_Movement_16309F - move 3, Route110_TrickHousePuzzle5_Movement_16309F - move 4, Route110_TrickHousePuzzle5_Movement_16309F - move 5, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 1, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 2, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 3, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 4, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 5, Route110_TrickHousePuzzle5_Movement_16309F msgbox Route110_TrickHousePuzzle5_Text_19D5ED, 4 - waitmove 0 - closebutton + waitmovement 0 + closemessage msgbox Route110_TrickHousePuzzle5_Text_19D615, 4 - closebutton + closemessage warp Route110_TrickHousePuzzle5, 255, 0, 21 waitstate releaseall end Route110_TrickHousePuzzle5_EventScript_162DDF:: @ 8162DDF - checksound - playsfx 31 - jump Route110_TrickHousePuzzle5_EventScript_162DE9 + waitse + playse 31 + goto Route110_TrickHousePuzzle5_EventScript_162DE9 end Route110_TrickHousePuzzle5_EventScript_162DE9:: @ 8162DE9 @@ -419,230 +419,230 @@ Route110_TrickHousePuzzle5_EventScript_162DE9:: @ 8162DE9 Route110_TrickHousePuzzle5_EventScript_162DF3:: @ 8162DF3 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F43 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F43 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F4E + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F4E compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F59 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F59 compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F64 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F64 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F6F + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F6F return Route110_TrickHousePuzzle5_EventScript_162E2B:: @ 8162E2B compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F7A + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F7A compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F85 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F85 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F90 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F90 compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F9B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F9B compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FA6 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FA6 return Route110_TrickHousePuzzle5_EventScript_162E63:: @ 8162E63 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FB1 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FB1 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FBC + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FBC compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FC7 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FC7 compare 0x4009, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FD2 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FD2 compare 0x4009, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FDD + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FDD return Route110_TrickHousePuzzle5_EventScript_162E9B:: @ 8162E9B compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FE8 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FE8 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FF3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FF3 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FFE + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FFE compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_163009 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163009 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_163014 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163014 return Route110_TrickHousePuzzle5_EventScript_162ED3:: @ 8162ED3 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_16301F + call_if 1, Route110_TrickHousePuzzle5_EventScript_16301F compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_16302A + call_if 1, Route110_TrickHousePuzzle5_EventScript_16302A compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_163035 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163035 compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_163040 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163040 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_16304B + call_if 1, Route110_TrickHousePuzzle5_EventScript_16304B return Route110_TrickHousePuzzle5_EventScript_162F0B:: @ 8162F0B compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_163056 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163056 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_163061 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163061 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_16306C + call_if 1, Route110_TrickHousePuzzle5_EventScript_16306C compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_163077 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163077 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_163082 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163082 return Route110_TrickHousePuzzle5_EventScript_162F43:: @ 8162F43 - move 1, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F4E:: @ 8162F4E - move 2, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F59:: @ 8162F59 - move 3, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F64:: @ 8162F64 - move 4, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F6F:: @ 8162F6F - move 5, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F7A:: @ 8162F7A - move 1, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F85:: @ 8162F85 - move 2, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F90:: @ 8162F90 - move 3, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F9B:: @ 8162F9B - move 4, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FA6:: @ 8162FA6 - move 5, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FB1:: @ 8162FB1 - move 1, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FBC:: @ 8162FBC - move 2, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FC7:: @ 8162FC7 - move 3, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FD2:: @ 8162FD2 - move 4, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FDD:: @ 8162FDD - move 5, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FE8:: @ 8162FE8 - move 1, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FF3:: @ 8162FF3 - move 2, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FFE:: @ 8162FFE - move 3, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163009:: @ 8163009 - move 4, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163014:: @ 8163014 - move 5, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_16301F:: @ 816301F - move 1, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_16302A:: @ 816302A - move 2, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163035:: @ 8163035 - move 3, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163040:: @ 8163040 - move 4, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_16304B:: @ 816304B - move 5, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163056:: @ 8163056 - move 1, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163061:: @ 8163061 - move 2, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_16306C:: @ 816306C - move 3, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163077:: @ 8163077 - move 4, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163082:: @ 8163082 - move 5, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_Movement_16308D:: @ 816308D diff --git a/data/scripts/maps/Route110_TrickHousePuzzle6.inc b/data/scripts/maps/Route110_TrickHousePuzzle6.inc index 1e47bbd83..ddf845142 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle6.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle6.inc @@ -18,13 +18,13 @@ Route110_TrickHousePuzzle6_EventScript_1630E6:: @ 81630E6 Route110_TrickHousePuzzle6_EventScript_1630EA:: @ 81630EA lockall compare 0x40b0, 0 - jumpeq Route110_TrickHousePuzzle6_EventScript_1630FC - jump Route110_TrickHousePuzzle6_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle6_EventScript_1630FC + goto Route110_TrickHousePuzzle6_EventScript_161892 end Route110_TrickHousePuzzle6_EventScript_1630FC:: @ 81630FC setvar 0x40b0, 1 - jump Route110_TrickHousePuzzle6_EventScript_16189C + goto Route110_TrickHousePuzzle6_EventScript_16189C end Route110_TrickHousePuzzle6_EventScript_163107:: @ 8163107 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle7.inc b/data/scripts/maps/Route110_TrickHousePuzzle7.inc index 7f965b467..3361e3e9d 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle7.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle7.inc @@ -11,15 +11,15 @@ Route110_TrickHousePuzzle7_MapScript1_163161:: @ 8163161 Route110_TrickHousePuzzle7_EventScript_163167:: @ 8163167 checkflag 194 - callif 1, Route110_TrickHousePuzzle7_EventScript_163195 + call_if 1, Route110_TrickHousePuzzle7_EventScript_163195 checkflag 195 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631A8 + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631A8 checkflag 196 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631BB + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631BB checkflag 197 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631CE + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631CE checkflag 198 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631E1 + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631E1 return Route110_TrickHousePuzzle7_EventScript_163195:: @ 8163195 @@ -74,7 +74,7 @@ Route110_TrickHousePuzzle7_EventScript_163240:: @ 8163240 Route110_TrickHousePuzzle7_MapScript1_163253:: @ 8163253 compare 0x40b6, 1 - jumpeq Route110_TrickHousePuzzle7_EventScript_16326E + goto_if_eq Route110_TrickHousePuzzle7_EventScript_16326E clearflag 194 clearflag 195 clearflag 196 @@ -87,7 +87,7 @@ Route110_TrickHousePuzzle7_EventScript_16326E:: @ 816326E Route110_TrickHousePuzzle7_MapScript1_16326F:: @ 816326F compare 0x40b6, 1 - callif 1, Route110_TrickHousePuzzle7_EventScript_163167 + call_if 1, Route110_TrickHousePuzzle7_EventScript_163167 end Route110_TrickHousePuzzle7_MapScript2_16327B:: @ 816327B @@ -101,13 +101,13 @@ Route110_TrickHousePuzzle7_EventScript_163285:: @ 8163285 Route110_TrickHousePuzzle7_EventScript_16328B:: @ 816328B lockall compare 0x40b1, 0 - jumpeq Route110_TrickHousePuzzle7_EventScript_16329D - jump Route110_TrickHousePuzzle7_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_16329D + goto Route110_TrickHousePuzzle7_EventScript_161892 end Route110_TrickHousePuzzle7_EventScript_16329D:: @ 816329D setvar 0x40b1, 1 - jump Route110_TrickHousePuzzle7_EventScript_16189C + goto Route110_TrickHousePuzzle7_EventScript_16189C end Route110_TrickHousePuzzle7_EventScript_1632A8:: @ 81632A8 @@ -120,77 +120,77 @@ Route110_TrickHousePuzzle7_EventScript_1632A8:: @ 81632A8 Route110_TrickHousePuzzle7_EventScript_1632B9:: @ 81632B9 lockall - pause 32 + delay 32 checkflag 194 - callif 0, Route110_TrickHousePuzzle7_EventScript_163195 + call_if 0, Route110_TrickHousePuzzle7_EventScript_163195 checkflag 194 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631F4 + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631F4 special DrawWholeMapView - playsfx 36 + playse 36 checkflag 194 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633A4 + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633A4 checkflag 194 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633A9 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633A9 end Route110_TrickHousePuzzle7_EventScript_1632E8:: @ 81632E8 lockall - pause 32 + delay 32 checkflag 195 - callif 0, Route110_TrickHousePuzzle7_EventScript_1631A8 + call_if 0, Route110_TrickHousePuzzle7_EventScript_1631A8 checkflag 195 - callif 1, Route110_TrickHousePuzzle7_EventScript_163207 + call_if 1, Route110_TrickHousePuzzle7_EventScript_163207 special DrawWholeMapView - playsfx 36 + playse 36 checkflag 195 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633AE + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633AE checkflag 195 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633B3 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633B3 end Route110_TrickHousePuzzle7_EventScript_163317:: @ 8163317 lockall - pause 32 + delay 32 checkflag 196 - callif 0, Route110_TrickHousePuzzle7_EventScript_1631BB + call_if 0, Route110_TrickHousePuzzle7_EventScript_1631BB checkflag 196 - callif 1, Route110_TrickHousePuzzle7_EventScript_16321A + call_if 1, Route110_TrickHousePuzzle7_EventScript_16321A special DrawWholeMapView - playsfx 36 + playse 36 checkflag 196 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633B8 + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633B8 checkflag 196 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633BD + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633BD end Route110_TrickHousePuzzle7_EventScript_163346:: @ 8163346 lockall - pause 32 + delay 32 checkflag 197 - callif 0, Route110_TrickHousePuzzle7_EventScript_1631CE + call_if 0, Route110_TrickHousePuzzle7_EventScript_1631CE checkflag 197 - callif 1, Route110_TrickHousePuzzle7_EventScript_16322D + call_if 1, Route110_TrickHousePuzzle7_EventScript_16322D special DrawWholeMapView - playsfx 36 + playse 36 checkflag 197 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633C2 + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633C2 checkflag 197 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633C7 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633C7 end Route110_TrickHousePuzzle7_EventScript_163375:: @ 8163375 lockall - pause 32 + delay 32 checkflag 198 - callif 0, Route110_TrickHousePuzzle7_EventScript_1631E1 + call_if 0, Route110_TrickHousePuzzle7_EventScript_1631E1 checkflag 198 - callif 1, Route110_TrickHousePuzzle7_EventScript_163240 + call_if 1, Route110_TrickHousePuzzle7_EventScript_163240 special DrawWholeMapView - playsfx 36 + playse 36 checkflag 198 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633CC + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633CC checkflag 198 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633D1 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633D1 end Route110_TrickHousePuzzle7_EventScript_1633A4:: @ 81633A4 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle8.inc b/data/scripts/maps/Route110_TrickHousePuzzle8.inc index a31c868be..5f0b00684 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle8.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle8.inc @@ -4,13 +4,13 @@ Route110_TrickHousePuzzle8_MapScripts:: @ 816341B Route110_TrickHousePuzzle8_EventScript_16341C:: @ 816341C lockall compare 0x40b2, 0 - jumpeq Route110_TrickHousePuzzle8_EventScript_16342E - jump Route110_TrickHousePuzzle8_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle8_EventScript_16342E + goto Route110_TrickHousePuzzle8_EventScript_161892 end Route110_TrickHousePuzzle8_EventScript_16342E:: @ 816342E setvar 0x40b2, 1 - jump Route110_TrickHousePuzzle8_EventScript_16189C + goto Route110_TrickHousePuzzle8_EventScript_16189C end Route110_TrickHousePuzzle8_EventScript_163439:: @ 8163439 diff --git a/data/scripts/maps/Route111.inc b/data/scripts/maps/Route111.inc index 1358a44be..545e62921 100644 --- a/data/scripts/maps/Route111.inc +++ b/data/scripts/maps/Route111.inc @@ -5,7 +5,7 @@ Route111_MapScripts:: @ 814FF91 Route111_MapScript1_14FF9C:: @ 814FF9C checkflag 228 - callif 0, Route111_EventScript_14FFA6 + call_if 0, Route111_EventScript_14FFA6 end Route111_EventScript_14FFA6:: @ 814FFA6 @@ -17,21 +17,21 @@ Route111_MapScript1_14FFB9:: @ 814FFB9 call Route111_EventScript_14FFCD call Route111_EventScript_1AE313 checktrainerflag OPPONENT_VICKY - jumpif 0, Route111_EventScript_15000D + goto_if 0, Route111_EventScript_15000D end Route111_EventScript_14FFCD:: @ 814FFCD getplayerxy 0x4000, 0x4001 compare 0x4001, 34 - jumpif 0, Route111_EventScript_15000C + goto_if 0, Route111_EventScript_15000C compare 0x4001, 107 - jumpif 2, Route111_EventScript_15000C + goto_if 2, Route111_EventScript_15000C compare 0x4001, 72 - jumpif 2, Route111_EventScript_150009 + goto_if 2, Route111_EventScript_150009 compare 0x4000, 2000 - jumpif 2, Route111_EventScript_15000C + goto_if 2, Route111_EventScript_15000C compare 0x4000, 8 - jumpif 0, Route111_EventScript_15000C + goto_if 0, Route111_EventScript_15000C Route111_EventScript_150009:: @ 8150009 setweather 8 @@ -44,25 +44,25 @@ Route111_EventScript_15000D:: @ 815000D setflag 769 setflag 770 setflag 771 - settrainerflag OPPONENT_VICTOR - settrainerflag OPPONENT_VICTORIA - settrainerflag OPPONENT_VIVI + cleartrainerflag OPPONENT_VICTOR + cleartrainerflag OPPONENT_VICTORIA + cleartrainerflag OPPONENT_VIVI end Route111_EventScript_150023:: @ 8150023 lockall msgbox Route111_Text_16FA54, 5 compare RESULT, 0 - jumpeq Route111_EventScript_15005F + goto_if_eq Route111_EventScript_15005F giveitem ITEM_ROOT_FOSSIL - closebutton + closemessage setflag 963 setflag 964 - disappear 34 - pause 30 - move 35, Route111_Movement_1500AF - waitmove 0 - disappear 35 + removeobject 34 + delay 30 + applymovement 35, Route111_Movement_1500AF + waitmovement 0 + removeobject 35 releaseall end @@ -75,16 +75,16 @@ Route111_EventScript_150069:: @ 8150069 lockall msgbox Route111_Text_16FAED, 5 compare RESULT, 0 - jumpeq Route111_EventScript_1500A5 + goto_if_eq Route111_EventScript_1500A5 giveitem ITEM_CLAW_FOSSIL - closebutton + closemessage setflag 964 setflag 963 - disappear 35 - pause 30 - move 34, Route111_Movement_1500AF - waitmove 0 - disappear 34 + removeobject 35 + delay 30 + applymovement 34, Route111_Movement_1500AF + waitmovement 0 + removeobject 34 releaseall end @@ -120,13 +120,13 @@ Route111_Movement_1500AF:: @ 81500AF Route111_EventScript_1500C5:: @ 81500C5 lock faceplayer - checkdailyflags + dodailyevents checkflag 2252 - jumpeq Route111_EventScript_150100 + goto_if_eq Route111_EventScript_150100 msgbox Route111_Text_1C56F0, 4 giveitem ITEM_RAZZ_BERRY compare RESULT, 0 - jumpeq Route111_EventScript_1A029B + goto_if_eq Route111_EventScript_1A029B setflag 2252 special GetPlayerBigGuyGirlString msgbox Route111_Text_1C5781, 4 @@ -141,67 +141,67 @@ Route111_EventScript_150100:: @ 8150100 @ 815010A lockall setvar 0x8004, 0 - jump Route111_EventScript_15013A + goto Route111_EventScript_15013A end Route111_EventScript_150116:: @ 8150116 lockall setvar 0x8004, 1 - jump Route111_EventScript_15013A + goto Route111_EventScript_15013A end Route111_EventScript_150122:: @ 8150122 lockall setvar 0x8004, 2 - jump Route111_EventScript_15013A + goto Route111_EventScript_15013A end @ 815012E lockall setvar 0x8004, 3 - jump Route111_EventScript_15013A + goto Route111_EventScript_15013A end Route111_EventScript_15013A:: @ 815013A checkitem ITEM_GO_GOGGLES, 1 compare RESULT, 0 - jumpeq Route111_EventScript_150151 + goto_if_eq Route111_EventScript_150151 setvar 0x4003, 1 releaseall end Route111_EventScript_150151:: @ 8150151 msgbox Route111_Text_1A0F93, 4 - closebutton + closemessage compare 0x8004, 0 - callif 1, Route111_EventScript_150188 + call_if 1, Route111_EventScript_150188 compare 0x8004, 1 - callif 1, Route111_EventScript_150193 + call_if 1, Route111_EventScript_150193 compare 0x8004, 2 - callif 1, Route111_EventScript_15019E + call_if 1, Route111_EventScript_15019E compare 0x8004, 3 - callif 1, Route111_EventScript_1501A9 + call_if 1, Route111_EventScript_1501A9 releaseall end Route111_EventScript_150188:: @ 8150188 - move 255, Route111_Movement_1501B4 - waitmove 0 + applymovement 255, Route111_Movement_1501B4 + waitmovement 0 return Route111_EventScript_150193:: @ 8150193 - move 255, Route111_Movement_1501B6 - waitmove 0 + applymovement 255, Route111_Movement_1501B6 + waitmovement 0 return Route111_EventScript_15019E:: @ 815019E - move 255, Route111_Movement_1501B8 - waitmove 0 + applymovement 255, Route111_Movement_1501B8 + waitmovement 0 return Route111_EventScript_1501A9:: @ 81501A9 - move 255, Route111_Movement_1501BA - waitmove 0 + applymovement 255, Route111_Movement_1501BA + waitmovement 0 return Route111_Movement_1501B4:: @ 81501B4 @@ -222,14 +222,14 @@ Route111_Movement_1501BA:: @ 81501BA Route111_EventScript_1501BC:: @ 81501BC setweather 2 - fademusic 360 + fadenewbgm 360 doweather setvar 0x4003, 0 end Route111_EventScript_1501C9:: @ 81501C9 setweather 8 - fademusic 409 + fadenewbgm 409 doweather end @@ -239,7 +239,7 @@ Route111_EventScript_1501D1:: @ 81501D1 setflag 2115 msgbox Route111_Text_16F705, 5 compare RESULT, 1 - jumpeq Route111_EventScript_1501F3 + goto_if_eq Route111_EventScript_1501F3 msgbox Route111_Text_16F785, 4 release end @@ -247,80 +247,80 @@ Route111_EventScript_1501D1:: @ 81501D1 Route111_EventScript_1501F3:: @ 81501F3 msgbox Route111_Text_16F7B3, 4 trainerbattle 3, OPPONENT_VICTOR, 0, Route111_Text_16F7D2 - move 1, Route111_Movement_1A0841 - waitmove 0 + applymovement 1, Route111_Movement_1A0841 + waitmovement 0 call Route111_EventScript_150348 msgbox Route111_Text_16F7FF, 4 - closebutton - move 1, Route111_Movement_150356 - waitmove 0 - disappear 1 + closemessage + applymovement 1, Route111_Movement_150356 + waitmovement 0 + removeobject 1 call Route111_EventScript_15034F - move 255, Route111_Movement_15035B - waitmove 0 + applymovement 255, Route111_Movement_15035B + waitmovement 0 call Route111_EventScript_150348 - reappear 2 - move 2, Route111_Movement_150359 - waitmove 0 + addobject 2 + applymovement 2, Route111_Movement_150359 + waitmovement 0 call Route111_EventScript_15034F msgbox Route111_Text_16F82D, 4 trainerbattle 3, OPPONENT_VICTORIA, 0, Route111_Text_16F8A6 - move 2, Route111_Movement_1A0841 - waitmove 0 + applymovement 2, Route111_Movement_1A0841 + waitmovement 0 call Route111_EventScript_150348 msgbox Route111_Text_16F8D5, 4 - closebutton - move 2, Route111_Movement_150356 - waitmove 0 - disappear 2 + closemessage + applymovement 2, Route111_Movement_150356 + waitmovement 0 + removeobject 2 call Route111_EventScript_15034F - move 255, Route111_Movement_15035B - waitmove 0 + applymovement 255, Route111_Movement_15035B + waitmovement 0 call Route111_EventScript_150348 - reappear 3 - move 3, Route111_Movement_150359 - waitmove 0 + addobject 3 + applymovement 3, Route111_Movement_150359 + waitmovement 0 call Route111_EventScript_15034F msgbox Route111_Text_16F90E, 4 trainerbattle 3, OPPONENT_VIVI, 0, Route111_Text_16F956 - move 3, Route111_Movement_1A0841 - waitmove 0 + applymovement 3, Route111_Movement_1A0841 + waitmovement 0 call Route111_EventScript_150348 msgbox Route111_Text_16F96C, 4 - closebutton - move 3, Route111_Movement_150356 - waitmove 0 - disappear 3 + closemessage + applymovement 3, Route111_Movement_150356 + waitmovement 0 + removeobject 3 call Route111_EventScript_15034F - move 255, Route111_Movement_15035B - waitmove 0 + applymovement 255, Route111_Movement_15035B + waitmovement 0 call Route111_EventScript_150348 - reappear 4 - move 4, Route111_Movement_150359 - waitmove 0 + addobject 4 + applymovement 4, Route111_Movement_150359 + waitmovement 0 call Route111_EventScript_15034F msgbox Route111_Text_16F991, 4 trainerbattle 3, OPPONENT_VICKY, 0, Route111_Text_16F9EC msgbox Route111_Text_16FA22, 4 - closebutton - move 4, Route111_Movement_1A0841 - waitmove 0 + closemessage + applymovement 4, Route111_Movement_1A0841 + waitmovement 0 call Route111_EventScript_150348 - move 4, Route111_Movement_150356 - waitmove 0 - disappear 4 + applymovement 4, Route111_Movement_150356 + waitmovement 0 + removeobject 4 call Route111_EventScript_15034F release end Route111_EventScript_150348:: @ 8150348 - setdooropened 13, 113 - doorchange + opendoor 13, 113 + waitdooranim return Route111_EventScript_15034F:: @ 815034F - setdoorclosed 13, 113 - doorchange + closedoor 13, 113 + waitdooranim return Route111_Movement_150356:: @ 8150356 @@ -392,9 +392,9 @@ Route111_EventScript_1503EC:: @ 81503EC Route111_EventScript_150403:: @ 8150403 trainerbattle 0, OPPONENT_DUSTY_1, 0, Route111_Text_1BAEC9, Route111_Text_1BAF14 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route111_EventScript_15042A + goto_if_eq Route111_EventScript_15042A msgbox Route111_Text_1BAF5B, 6 end @@ -420,9 +420,9 @@ Route111_EventScript_15046F:: @ 815046F Route111_EventScript_150486:: @ 8150486 trainerbattle 0, OPPONENT_WILTON_1, 0, Route111_Text_1BB2E3, Route111_Text_1BB313 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route111_EventScript_1504AD + goto_if_eq Route111_EventScript_1504AD msgbox Route111_Text_1BB33E, 6 end @@ -433,9 +433,9 @@ Route111_EventScript_1504AD:: @ 81504AD Route111_EventScript_1504C4:: @ 81504C4 trainerbattle 0, OPPONENT_BROOKE_1, 0, Route111_Text_1BB44F, Route111_Text_1BB49F - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route111_EventScript_1504EB + goto_if_eq Route111_EventScript_1504EB msgbox Route111_Text_1BB4CE, 6 end diff --git a/data/scripts/maps/Route111_OldLadysRestStop.inc b/data/scripts/maps/Route111_OldLadysRestStop.inc index 107026a4b..5576a44ff 100644 --- a/data/scripts/maps/Route111_OldLadysRestStop.inc +++ b/data/scripts/maps/Route111_OldLadysRestStop.inc @@ -11,20 +11,20 @@ Route111_OldLadysRestStop_EventScript_15BFDB:: @ 815BFDB faceplayer msgbox Route111_OldLadysRestStop_Text_1923AF, 5 compare RESULT, 1 - jumpeq Route111_OldLadysRestStop_EventScript_15BFFC + goto_if_eq Route111_OldLadysRestStop_EventScript_15BFFC compare RESULT, 0 - jumpeq Route111_OldLadysRestStop_EventScript_15C029 + goto_if_eq Route111_OldLadysRestStop_EventScript_15C029 end Route111_OldLadysRestStop_EventScript_15BFFC:: @ 815BFFC msgbox Route111_OldLadysRestStop_Text_192423, 4 - closebutton + closemessage call Route111_OldLadysRestStop_EventScript_1A02CA msgbox Route111_OldLadysRestStop_Text_19244D, 5 compare RESULT, 1 - jumpeq Route111_OldLadysRestStop_EventScript_15BFFC + goto_if_eq Route111_OldLadysRestStop_EventScript_15BFFC compare RESULT, 0 - jumpeq Route111_OldLadysRestStop_EventScript_15C029 + goto_if_eq Route111_OldLadysRestStop_EventScript_15C029 end Route111_OldLadysRestStop_EventScript_15C029:: @ 815C029 diff --git a/data/scripts/maps/Route111_WinstrateFamilysHouse.inc b/data/scripts/maps/Route111_WinstrateFamilysHouse.inc index 3eb514ad2..d9a94ce75 100644 --- a/data/scripts/maps/Route111_WinstrateFamilysHouse.inc +++ b/data/scripts/maps/Route111_WinstrateFamilysHouse.inc @@ -6,7 +6,7 @@ Route111_WinstrateFamilysHouse_EventScript_15BF25:: @ 815BF25 faceplayer setvar 0x8008, 2 msgbox Route111_WinstrateFamilysHouse_Text_191FCE, 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BF3A:: @ 815BF3A @@ -14,18 +14,18 @@ Route111_WinstrateFamilysHouse_EventScript_15BF3A:: @ 815BF3A faceplayer setvar 0x8008, 3 checkflag 277 - jumpeq Route111_WinstrateFamilysHouse_EventScript_15BF72 + goto_if_eq Route111_WinstrateFamilysHouse_EventScript_15BF72 msgbox Route111_WinstrateFamilysHouse_Text_19208A, 4 giveitem ITEM_MACHO_BRACE compare RESULT, 0 - jumpeq Route111_WinstrateFamilysHouse_EventScript_1A029B + goto_if_eq Route111_WinstrateFamilysHouse_EventScript_1A029B setflag 277 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BF72:: @ 815BF72 msgbox Route111_WinstrateFamilysHouse_Text_19214D, 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BF80:: @ 815BF80 @@ -33,7 +33,7 @@ Route111_WinstrateFamilysHouse_EventScript_15BF80:: @ 815BF80 faceplayer setvar 0x8008, 1 msgbox Route111_WinstrateFamilysHouse_Text_192190, 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BF95:: @ 815BF95 @@ -41,20 +41,20 @@ Route111_WinstrateFamilysHouse_EventScript_15BF95:: @ 815BF95 faceplayer setvar 0x8008, 4 checkflag 4 - jumpeq Route111_WinstrateFamilysHouse_EventScript_15BFB6 + goto_if_eq Route111_WinstrateFamilysHouse_EventScript_15BFB6 msgbox Route111_WinstrateFamilysHouse_Text_192219, 4 setflag 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BFB6:: @ 815BFB6 msgbox Route111_WinstrateFamilysHouse_Text_192334, 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BFC4:: @ 815BFC4 - closebutton - move 0x8008, Route111_WinstrateFamilysHouse_Movement_1A083D - waitmove 0 + closemessage + applymovement 0x8008, Route111_WinstrateFamilysHouse_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/Route112.inc b/data/scripts/maps/Route112.inc index 1c1e36838..d0d464207 100644 --- a/data/scripts/maps/Route112.inc +++ b/data/scripts/maps/Route112.inc @@ -38,9 +38,9 @@ Route112_EventScript_150549:: @ 8150549 Route112_EventScript_150560:: @ 8150560 trainerbattle 0, OPPONENT_TRENT_1, 0, Route112_Text_1BB6A0, Route112_Text_1BB707 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route112_EventScript_150587 + goto_if_eq Route112_EventScript_150587 msgbox Route112_Text_1BB721, 6 end diff --git a/data/scripts/maps/Route112_CableCarStation.inc b/data/scripts/maps/Route112_CableCarStation.inc index 016b868a8..22534aa77 100644 --- a/data/scripts/maps/Route112_CableCarStation.inc +++ b/data/scripts/maps/Route112_CableCarStation.inc @@ -4,14 +4,14 @@ Route112_CableCarStation_MapScripts:: @ 815C033 .byte 0 Route112_CableCarStation_MapScript1_15C03E:: @ 815C03E - warp6 Route112, 255, 28, 28 + setescapewarp Route112, 255, 28, 28 compare 0x40a3, 2 - callif 1, Route112_CableCarStation_EventScript_15C052 + call_if 1, Route112_CableCarStation_EventScript_15C052 end Route112_CableCarStation_EventScript_15C052:: @ 815C052 - movespriteperm 1, 7, 4 - spritebehave 1, 9 + setobjectxyperm 1, 7, 4 + setobjectmovementtype 1, 9 return Route112_CableCarStation_MapScript2_15C05E:: @ 815C05E @@ -20,12 +20,12 @@ Route112_CableCarStation_MapScript2_15C05E:: @ 815C05E Route112_CableCarStation_EventScript_15C068:: @ 815C068 lockall - move 255, Route112_CableCarStation_Movement_15C0F5 - move 1, Route112_CableCarStation_Movement_15C0EB - waitmove 0 + applymovement 255, Route112_CableCarStation_Movement_15C0F5 + applymovement 1, Route112_CableCarStation_Movement_15C0EB + waitmovement 0 setvar 0x40a3, 0 - movespriteperm 1, 6, 7 - spritebehave 1, 8 + setobjectxyperm 1, 6, 7 + setobjectmovementtype 1, 8 releaseall end @@ -34,20 +34,20 @@ Route112_CableCarStation_EventScript_15C08C:: @ 815C08C faceplayer msgbox Route112_CableCarStation_Text_1924F5, 5 compare RESULT, 1 - jumpeq Route112_CableCarStation_EventScript_15C0AD + goto_if_eq Route112_CableCarStation_EventScript_15C0AD compare RESULT, 0 - jumpeq Route112_CableCarStation_EventScript_15C0DC + goto_if_eq Route112_CableCarStation_EventScript_15C0DC end Route112_CableCarStation_EventScript_15C0AD:: @ 815C0AD msgbox Route112_CableCarStation_Text_1925A9, 4 - closebutton - move 1, Route112_CableCarStation_Movement_15C0E6 - move 255, Route112_CableCarStation_Movement_15C0F0 - waitmove 0 + closemessage + applymovement 1, Route112_CableCarStation_Movement_15C0E6 + applymovement 255, Route112_CableCarStation_Movement_15C0F0 + waitmovement 0 setvar 0x8004, 0 setvar 0x40a3, 1 - inccounter GAME_STAT_RODE_CABLE_CAR + incrementgamestat GAME_STAT_RODE_CABLE_CAR special CableCarWarp special sub_8123218 waitstate diff --git a/data/scripts/maps/Route113.inc b/data/scripts/maps/Route113.inc index 1fc5a9345..2eb34cdf3 100644 --- a/data/scripts/maps/Route113.inc +++ b/data/scripts/maps/Route113.inc @@ -15,9 +15,9 @@ Route113_MapScript1_1505DA:: @ 81505DA Route113_EventScript_1505E5:: @ 81505E5 getplayerxy 0x4000, 0x4001 compare 0x4000, 19 - jumpif 0, Route113_EventScript_150604 + goto_if 0, Route113_EventScript_150604 compare 0x4000, 84 - jumpif 2, Route113_EventScript_150604 + goto_if 2, Route113_EventScript_150604 setweather 7 return @@ -60,9 +60,9 @@ Route113_EventScript_150652:: @ 8150652 Route113_EventScript_150669:: @ 8150669 trainerbattle 0, OPPONENT_MADELINE_1, 0, Route113_Text_1BBB27, Route113_Text_1BBB7A - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route113_EventScript_150690 + goto_if_eq Route113_EventScript_150690 msgbox Route113_Text_1BBB9A, 6 end @@ -73,9 +73,9 @@ Route113_EventScript_150690:: @ 8150690 Route113_EventScript_1506A7:: @ 81506A7 trainerbattle 0, OPPONENT_LAO_1, 0, Route113_Text_1BBC59, Route113_Text_1BBC90 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route113_EventScript_1506CE + goto_if_eq Route113_EventScript_1506CE msgbox Route113_Text_1BBCAB, 6 end diff --git a/data/scripts/maps/Route113_GlassWorkshop.inc b/data/scripts/maps/Route113_GlassWorkshop.inc index 83983f9bb..d0b608339 100644 --- a/data/scripts/maps/Route113_GlassWorkshop.inc +++ b/data/scripts/maps/Route113_GlassWorkshop.inc @@ -5,7 +5,7 @@ Route113_GlassWorkshop_MapScripts:: @ 816354A Route113_GlassWorkshop_MapScript1_163550:: @ 8163550 setflag 2116 compare 0x40be, 1 - callif 1, Route113_GlassWorkshop_EventScript_16355F + call_if 1, Route113_GlassWorkshop_EventScript_16355F end Route113_GlassWorkshop_EventScript_16355F:: @ 816355F @@ -16,11 +16,11 @@ Route113_GlassWorkshop_EventScript_163565:: @ 8163565 lock faceplayer compare 0x40be, 10 - jumpif 4, Route113_GlassWorkshop_EventScript_1638D2 + goto_if 4, Route113_GlassWorkshop_EventScript_1638D2 compare 0x40be, 2 - jumpeq Route113_GlassWorkshop_EventScript_1635B5 + goto_if_eq Route113_GlassWorkshop_EventScript_1635B5 compare 0x40be, 1 - jumpeq Route113_GlassWorkshop_EventScript_1635AB + goto_if_eq Route113_GlassWorkshop_EventScript_1635AB msgbox Route113_GlassWorkshop_Text_19E4E6, 4 giveitem ITEM_SOOT_SACK setvar 0x40be, 1 @@ -36,13 +36,13 @@ Route113_GlassWorkshop_EventScript_1635AB:: @ 81635AB Route113_GlassWorkshop_EventScript_1635B5:: @ 81635B5 checkitem ITEM_SOOT_SACK, 1 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_1635E4 + goto_if_eq Route113_GlassWorkshop_EventScript_1635E4 msgbox Route113_GlassWorkshop_Text_19E65B, 4 compare 0x4048, 250 - jumpif 0, Route113_GlassWorkshop_EventScript_163818 + goto_if 0, Route113_GlassWorkshop_EventScript_163818 message Route113_GlassWorkshop_Text_19E757 - waittext - jump Route113_GlassWorkshop_EventScript_1635EE + waitmessage + goto Route113_GlassWorkshop_EventScript_1635EE end Route113_GlassWorkshop_EventScript_1635E4:: @ 81635E4 @@ -68,102 +68,102 @@ Route113_GlassWorkshop_EventScript_1635EE:: @ 81635EE Route113_GlassWorkshop_EventScript_163660:: @ 8163660 setvar 0x8008, 39 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 250 compare 0x4048, 250 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 10 subvar 0x4048, 250 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_16369C:: @ 816369C setvar 0x8008, 40 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 500 compare 0x4048, 500 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 11 subvar 0x4048, 500 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_1636D8:: @ 81636D8 setvar 0x8008, 41 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 500 compare 0x4048, 500 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 12 subvar 0x4048, 500 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_163714:: @ 8163714 setvar 0x8008, 43 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 1000 compare 0x4048, 1000 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 13 subvar 0x4048, 1000 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_163750:: @ 8163750 setvar 0x8008, 42 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 1000 compare 0x4048, 1000 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 14 subvar 0x4048, 1000 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_16378C:: @ 816378C setvar 0x8009, 1 setvar 0x8008, 13 - bufferdecor 0, 0x8008 + getdecorname 0, 0x8008 setvar 0x800a, 6000 compare 0x4048, 6000 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 15 subvar 0x4048, 6000 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_1637CD:: @ 81637CD setvar 0x8009, 1 setvar 0x8008, 6 - bufferdecor 0, 0x8008 + getdecorname 0, 0x8008 setvar 0x800a, 8000 compare 0x4048, 8000 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 16 subvar 0x4048, 8000 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_16380E:: @ 816380E @@ -174,37 +174,37 @@ Route113_GlassWorkshop_EventScript_16380E:: @ 816380E Route113_GlassWorkshop_EventScript_163818:: @ 8163818 setvar 0x800a, 250 subvar 0x800a, 16456 - buffernum 0, 32778 + getnumberstring 0, 32778 msgbox Route113_GlassWorkshop_Text_19E697, 4 release end Route113_GlassWorkshop_EventScript_163830:: @ 8163830 subvar 0x800a, 16456 - buffernum 1, 32778 + getnumberstring 1, 32778 message Route113_GlassWorkshop_Text_19E890 - waittext - jump Route113_GlassWorkshop_EventScript_1635EE + waitmessage + goto Route113_GlassWorkshop_EventScript_1635EE end Route113_GlassWorkshop_EventScript_163845:: @ 8163845 message Route113_GlassWorkshop_Text_19E802 - waittext - jump Route113_GlassWorkshop_EventScript_1635EE + waitmessage + goto Route113_GlassWorkshop_EventScript_1635EE end Route113_GlassWorkshop_EventScript_163851:: @ 8163851 msgbox Route113_GlassWorkshop_Text_19E827, 4 - closebutton + closemessage fadescreen 1 - playsfx 5 - pause 30 + playse 5 + delay 30 fadescreen 0 msgbox Route113_GlassWorkshop_Text_19E9D7, 4 compare 0x8009, 0 - callif 1, Route113_GlassWorkshop_EventScript_163889 + call_if 1, Route113_GlassWorkshop_EventScript_163889 compare 0x8009, 1 - callif 1, Route113_GlassWorkshop_EventScript_1638A1 + call_if 1, Route113_GlassWorkshop_EventScript_1638A1 setvar 0x40be, 2 release end @@ -212,13 +212,13 @@ Route113_GlassWorkshop_EventScript_163851:: @ 8163851 Route113_GlassWorkshop_EventScript_163889:: @ 8163889 giveitem 0x8008 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_1638B4 + goto_if_eq Route113_GlassWorkshop_EventScript_1638B4 return Route113_GlassWorkshop_EventScript_1638A1:: @ 81638A1 givedecoration 0x8008 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_1638C3 + goto_if_eq Route113_GlassWorkshop_EventScript_1638C3 return Route113_GlassWorkshop_EventScript_1638B4:: @ 81638B4 @@ -247,58 +247,58 @@ Route113_GlassWorkshop_EventScript_1638D2:: @ 81638D2 Route113_GlassWorkshop_EventScript_163925:: @ 8163925 setvar 0x8009, 0 setvar 0x8008, 39 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_163939:: @ 8163939 setvar 0x8009, 0 setvar 0x8008, 40 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_16394D:: @ 816394D setvar 0x8009, 0 setvar 0x8008, 41 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_163961:: @ 8163961 setvar 0x8009, 0 setvar 0x8008, 43 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_163975:: @ 8163975 setvar 0x8009, 0 setvar 0x8008, 42 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_163989:: @ 8163989 setvar 0x8009, 1 setvar 0x8008, 13 - bufferdecor 0, 13 - jump Route113_GlassWorkshop_EventScript_1639B1 + getdecorname 0, 13 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_16399D:: @ 816399D setvar 0x8009, 1 setvar 0x8008, 6 - bufferdecor 0, 6 - jump Route113_GlassWorkshop_EventScript_1639B1 + getdecorname 0, 6 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_1639B1:: @ 81639B1 msgbox Route113_GlassWorkshop_Text_19E9D7, 4 compare 0x8009, 0 - callif 1, Route113_GlassWorkshop_EventScript_163889 + call_if 1, Route113_GlassWorkshop_EventScript_163889 compare 0x8009, 1 - callif 1, Route113_GlassWorkshop_EventScript_1638A1 + call_if 1, Route113_GlassWorkshop_EventScript_1638A1 setvar 0x40be, 2 release end diff --git a/data/scripts/maps/Route114.inc b/data/scripts/maps/Route114.inc index cfe1dfe7d..0730db23a 100644 --- a/data/scripts/maps/Route114.inc +++ b/data/scripts/maps/Route114.inc @@ -4,16 +4,16 @@ Route114_MapScripts:: @ 8150732 Route114_EventScript_150733:: @ 8150733 lock faceplayer - checkdailyflags + dodailyevents checkflag 2251 - jumpeq Route114_EventScript_150778 + goto_if_eq Route114_EventScript_150778 msgbox Route114_Text_1C5803, 4 random 5 addvar RESULT, 15 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route114_EventScript_1A029B + goto_if_eq Route114_EventScript_1A029B setflag 2251 msgbox Route114_Text_1C5861, 4 release @@ -28,11 +28,11 @@ Route114_EventScript_150782:: @ 8150782 lock faceplayer checkflag 231 - jumpeq Route114_EventScript_1507B9 + goto_if_eq Route114_EventScript_1507B9 msgbox Route114_Text_170154, 4 giveitem ITEM_TM05 compare RESULT, 0 - jumpeq Route114_EventScript_1A029B + goto_if_eq Route114_EventScript_1A029B setflag 231 msgbox Route114_Text_1701C5, 4 release @@ -46,8 +46,8 @@ Route114_EventScript_1507B9:: @ 81507B9 Route114_EventScript_1507C3:: @ 81507C3 lock faceplayer - checksound - pokecry SPECIES_POOCHYENA, 2 + waitse + playpokecry SPECIES_POOCHYENA, 2 msgbox Route114_Text_1701F9, 4 waitpokecry release @@ -87,9 +87,9 @@ Route114_EventScript_150836:: @ 8150836 Route114_EventScript_15084D:: @ 815084D trainerbattle 0, OPPONENT_STEVE_1, 0, Route114_Text_1BC2F5, Route114_Text_1BC327 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route114_EventScript_150874 + goto_if_eq Route114_EventScript_150874 msgbox Route114_Text_1BC337, 6 end @@ -100,9 +100,9 @@ Route114_EventScript_150874:: @ 8150874 Route114_EventScript_15088B:: @ 815088B trainerbattle 0, OPPONENT_BERNIE_1, 0, Route114_Text_1BC45A, Route114_Text_1BC499 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route114_EventScript_1508B2 + goto_if_eq Route114_EventScript_1508B2 msgbox Route114_Text_1BC4B5, 6 end diff --git a/data/scripts/maps/Route114_FossilManiacsHouse.inc b/data/scripts/maps/Route114_FossilManiacsHouse.inc index 50305dc04..b217f24c4 100644 --- a/data/scripts/maps/Route114_FossilManiacsHouse.inc +++ b/data/scripts/maps/Route114_FossilManiacsHouse.inc @@ -10,11 +10,11 @@ Route114_FossilManiacsHouse_EventScript_15C1C3:: @ 815C1C3 lock faceplayer checkflag 261 - jumpeq Route114_FossilManiacsHouse_EventScript_15C1F2 + goto_if_eq Route114_FossilManiacsHouse_EventScript_15C1F2 msgbox Route114_FossilManiacsHouse_Text_1925E1, 4 giveitem ITEM_TM28 compare RESULT, 0 - jumpeq Route114_FossilManiacsHouse_EventScript_1A029B + goto_if_eq Route114_FossilManiacsHouse_EventScript_1A029B setflag 261 release end diff --git a/data/scripts/maps/Route114_FossilManiacsTunnel.inc b/data/scripts/maps/Route114_FossilManiacsTunnel.inc index 7986a0436..13843f758 100644 --- a/data/scripts/maps/Route114_FossilManiacsTunnel.inc +++ b/data/scripts/maps/Route114_FossilManiacsTunnel.inc @@ -5,13 +5,13 @@ Route114_FossilManiacsTunnel_EventScript_15C20F:: @ 815C20F lock faceplayer checkflag 267 - jumpeq Route114_FossilManiacsTunnel_EventScript_15C24E + goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C24E checkitem ITEM_ROOT_FOSSIL, 1 compare RESULT, 1 - jumpeq Route114_FossilManiacsTunnel_EventScript_15C244 + goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C244 checkitem ITEM_CLAW_FOSSIL, 1 compare RESULT, 1 - jumpeq Route114_FossilManiacsTunnel_EventScript_15C244 + goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C244 msgbox Route114_FossilManiacsTunnel_Text_192795, 4 release end diff --git a/data/scripts/maps/Route114_LanettesHouse.inc b/data/scripts/maps/Route114_LanettesHouse.inc index ff8a1c565..e4334647c 100644 --- a/data/scripts/maps/Route114_LanettesHouse.inc +++ b/data/scripts/maps/Route114_LanettesHouse.inc @@ -10,7 +10,7 @@ Route114_LanettesHouse_EventScript_15C262:: @ 815C262 lock faceplayer checkflag 131 - jumpeq Route114_LanettesHouse_EventScript_15C28F + goto_if_eq Route114_LanettesHouse_EventScript_15C28F setflag 2123 msgbox Route114_LanettesHouse_Text_192A0D, 4 .ifdef SAPPHIRE @@ -19,7 +19,7 @@ Route114_LanettesHouse_EventScript_15C262:: @ 815C262 givedecoration 100 .endif compare RESULT, 0 - jumpeq Route114_LanettesHouse_EventScript_1A02AE + goto_if_eq Route114_LanettesHouse_EventScript_1A02AE setflag 131 release end @@ -33,7 +33,7 @@ Route114_LanettesHouse_EventScript_15C299:: @ 815C299 lockall msgbox Route114_LanettesHouse_Text_192B4A, 5 compare RESULT, 1 - jumpeq Route114_LanettesHouse_EventScript_15C2B7 + goto_if_eq Route114_LanettesHouse_EventScript_15C2B7 msgbox Route114_LanettesHouse_Text_192DA9, 4 releaseall end @@ -41,7 +41,7 @@ Route114_LanettesHouse_EventScript_15C299:: @ 815C299 Route114_LanettesHouse_EventScript_15C2B7:: @ 815C2B7 msgbox Route114_LanettesHouse_Text_192C01, 5 compare RESULT, 1 - callif 1, Route114_LanettesHouse_EventScript_15C2CC + call_if 1, Route114_LanettesHouse_EventScript_15C2CC releaseall end diff --git a/data/scripts/maps/Route115.inc b/data/scripts/maps/Route115.inc index 2b0d744ca..8e0eb7855 100644 --- a/data/scripts/maps/Route115.inc +++ b/data/scripts/maps/Route115.inc @@ -15,9 +15,9 @@ Route115_EventScript_150940:: @ 8150940 Route115_EventScript_150949:: @ 8150949 trainerbattle 0, OPPONENT_TIMOTHY_1, 0, Route115_Text_1BC9AC, Route115_Text_1BC9E6 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route115_EventScript_150970 + goto_if_eq Route115_EventScript_150970 msgbox Route115_Text_1BCA0E, 6 end @@ -33,9 +33,9 @@ Route115_EventScript_150987:: @ 8150987 Route115_EventScript_15099E:: @ 815099E trainerbattle 0, OPPONENT_NOB_1, 0, Route115_Text_1BCB8A, Route115_Text_1BCBC1 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route115_EventScript_1509C5 + goto_if_eq Route115_EventScript_1509C5 msgbox Route115_Text_1BCBDE, 6 end @@ -46,9 +46,9 @@ Route115_EventScript_1509C5:: @ 81509C5 Route115_EventScript_1509DC:: @ 81509DC trainerbattle 0, OPPONENT_CYNDY_1, 0, Route115_Text_1BCCF4, Route115_Text_1BCD32 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route115_EventScript_150A03 + goto_if_eq Route115_EventScript_150A03 msgbox Route115_Text_1BCD4C, 6 end diff --git a/data/scripts/maps/Route116.inc b/data/scripts/maps/Route116.inc index f5ef82f8b..beb01e083 100644 --- a/data/scripts/maps/Route116.inc +++ b/data/scripts/maps/Route116.inc @@ -4,20 +4,20 @@ Route116_MapScripts:: @ 8150A31 Route116_MapScript1_150A37:: @ 8150A37 checkflag 143 - callif 1, Route116_EventScript_150A41 + call_if 1, Route116_EventScript_150A41 end Route116_EventScript_150A41:: @ 8150A41 - movespriteperm 21, 41, 10 + setobjectxyperm 21, 41, 10 return Route116_EventScript_150A49:: @ 8150A49 lock faceplayer checkflag 143 - jumpeq Route116_EventScript_150A67 + goto_if_eq Route116_EventScript_150A67 checkflag 142 - jumpeq Route116_EventScript_150A71 + goto_if_eq Route116_EventScript_150A71 msgbox Route116_Text_1703CF, 4 release end @@ -36,45 +36,45 @@ Route116_EventScript_150A7B:: @ 8150A7B lock faceplayer checkflag 287 - jumpeq Route116_EventScript_150B04 + goto_if_eq Route116_EventScript_150B04 msgbox Route116_Text_1705AE, 4 - jump Route116_EventScript_150A94 + goto Route116_EventScript_150A94 end Route116_EventScript_150A94:: @ 8150A94 setflag 287 giveitem ITEM_REPEAT_BALL compare RESULT, 0 - jumpeq Route116_EventScript_150B12 + goto_if_eq Route116_EventScript_150B12 msgbox Route116_Text_1707B8, 4 - closebutton + closemessage compare FACING, 2 - callif 1, Route116_EventScript_150AEE + call_if 1, Route116_EventScript_150AEE compare FACING, 1 - callif 1, Route116_EventScript_150AEE + call_if 1, Route116_EventScript_150AEE compare FACING, 3 - callif 1, Route116_EventScript_150AEE + call_if 1, Route116_EventScript_150AEE compare FACING, 4 - callif 1, Route116_EventScript_150AF9 - disappear LAST_TALKED + call_if 1, Route116_EventScript_150AF9 + removeobject LAST_TALKED clearflag 949 setflag 256 release end Route116_EventScript_150AEE:: @ 8150AEE - move LAST_TALKED, Route116_Movement_150B1C - waitmove 0 + applymovement LAST_TALKED, Route116_Movement_150B1C + waitmovement 0 return Route116_EventScript_150AF9:: @ 8150AF9 - move LAST_TALKED, Route116_Movement_150B25 - waitmove 0 + applymovement LAST_TALKED, Route116_Movement_150B25 + waitmovement 0 return Route116_EventScript_150B04:: @ 8150B04 msgbox Route116_Text_170865, 4 - jump Route116_EventScript_150A94 + goto Route116_EventScript_150A94 end Route116_EventScript_150B12:: @ 8150B12 @@ -136,9 +136,9 @@ Route116_EventScript_150B5D:: @ 8150B5D Route116_EventScript_150B6E:: @ 8150B6E lockall - move 11, Route116_Movement_1A0843 - move 255, Route116_Movement_1A083F - waitmove 0 + applymovement 11, Route116_Movement_1A0843 + applymovement 255, Route116_Movement_1A083F + waitmovement 0 msgbox Route116_Text_17032A, 4 setvar 0x406f, 2 releaseall @@ -149,58 +149,58 @@ Route116_EventScript_150B8F:: @ 8150B8F faceplayer checkitem ITEM_BLACK_GLASSES, 1 compare RESULT, 1 - jumpeq Route116_EventScript_150BCA - specialval RESULT, sub_810F828 + goto_if_eq Route116_EventScript_150BCA + specialvar RESULT, sub_810F828 compare RESULT, 1 - jumpeq Route116_EventScript_150BBB + goto_if_eq Route116_EventScript_150BBB msgbox Route116_Text_1708EE, 4 release end Route116_EventScript_150BBB:: @ 8150BBB msgbox Route116_Text_1709B7, 4 - closebutton - jump Route116_EventScript_150C03 + closemessage + goto Route116_EventScript_150C03 end Route116_EventScript_150BCA:: @ 8150BCA msgbox Route116_Text_1708EE, 4 msgbox Route116_Text_170921, 4 - specialval RESULT, sub_810F828 + specialvar RESULT, sub_810F828 compare RESULT, 1 - jumpeq Route116_EventScript_150BF4 + goto_if_eq Route116_EventScript_150BF4 msgbox Route116_Text_170A03, 4 release end Route116_EventScript_150BF4:: @ 8150BF4 msgbox Route116_Text_17094D, 4 - closebutton - jump Route116_EventScript_150C03 + closemessage + goto Route116_EventScript_150C03 end Route116_EventScript_150C03:: @ 8150C03 - pause 20 + delay 20 compare FACING, 2 - callif 1, Route116_EventScript_150C37 + call_if 1, Route116_EventScript_150C37 compare FACING, 1 - callif 1, Route116_EventScript_150C37 + call_if 1, Route116_EventScript_150C37 compare FACING, 3 - callif 1, Route116_EventScript_150C37 + call_if 1, Route116_EventScript_150C37 compare FACING, 4 - callif 1, Route116_EventScript_150C42 - disappear LAST_TALKED + call_if 1, Route116_EventScript_150C42 + removeobject LAST_TALKED release end Route116_EventScript_150C37:: @ 8150C37 - move LAST_TALKED, Route116_Movement_150C4D - waitmove 0 + applymovement LAST_TALKED, Route116_Movement_150C4D + waitmovement 0 return Route116_EventScript_150C42:: @ 8150C42 - move LAST_TALKED, Route116_Movement_150C57 - waitmove 0 + applymovement LAST_TALKED, Route116_Movement_150C57 + waitmovement 0 return Route116_Movement_150C4D:: @ 8150C4D @@ -240,9 +240,9 @@ Route116_EventScript_150C79:: @ 8150C79 Route116_EventScript_150C90:: @ 8150C90 trainerbattle 0, OPPONENT_JERRY_1, 0, Route116_Text_1BD1C0, Route116_Text_1BD21A - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route116_EventScript_150CB7 + goto_if_eq Route116_EventScript_150CB7 msgbox Route116_Text_1BD248, 6 end @@ -263,9 +263,9 @@ Route116_EventScript_150CE5:: @ 8150CE5 Route116_EventScript_150CFC:: @ 8150CFC trainerbattle 0, OPPONENT_KAREN_1, 0, Route116_Text_1BD377, Route116_Text_1BD3AC - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route116_EventScript_150D23 + goto_if_eq Route116_EventScript_150D23 msgbox Route116_Text_1BD3C3, 6 end diff --git a/data/scripts/maps/Route116_TunnelersRestHouse.inc b/data/scripts/maps/Route116_TunnelersRestHouse.inc index d141fae37..10991c38c 100644 --- a/data/scripts/maps/Route116_TunnelersRestHouse.inc +++ b/data/scripts/maps/Route116_TunnelersRestHouse.inc @@ -18,7 +18,7 @@ Route116_TunnelersRestHouse_EventScript_15C2FA:: @ 815C2FA lock faceplayer checkflag 199 - jumpeq Route116_TunnelersRestHouse_EventScript_15C30F + goto_if_eq Route116_TunnelersRestHouse_EventScript_15C30F msgbox Route116_TunnelersRestHouse_Text_193135, 4 release end diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc index 61dbf6a30..40affd3fd 100644 --- a/data/scripts/maps/Route117.inc +++ b/data/scripts/maps/Route117.inc @@ -8,8 +8,8 @@ Route117_MapScript1_150D40:: @ 8150D40 Route117_EventScript_150D46:: @ 8150D46 checkflag 134 - jumpif 0, Route117_EventScript_150D56 - movespriteperm 3, 47, 6 + goto_if 0, Route117_EventScript_150D56 + setobjectxyperm 3, 47, 6 Route117_EventScript_150D56:: @ 8150D56 return @@ -40,9 +40,9 @@ Route117_EventScript_150D84:: @ 8150D84 Route117_EventScript_150D8D:: @ 8150D8D trainerbattle 0, OPPONENT_ISAAC_1, 0, Route117_Text_1BD49E, Route117_Text_1BD4D9 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150DB4 + goto_if_eq Route117_EventScript_150DB4 msgbox Route117_Text_1BD4F9, 6 end @@ -53,9 +53,9 @@ Route117_EventScript_150DB4:: @ 8150DB4 Route117_EventScript_150DCB:: @ 8150DCB trainerbattle 0, OPPONENT_LYDIA_1, 0, Route117_Text_1BD634, Route117_Text_1BD67B - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150DF2 + goto_if_eq Route117_EventScript_150DF2 msgbox Route117_Text_1BD69B, 6 end @@ -66,9 +66,9 @@ Route117_EventScript_150DF2:: @ 8150DF2 Route117_EventScript_150E09:: @ 8150E09 trainerbattle 0, OPPONENT_DYLAN_1, 0, Route117_Text_1BD79A, Route117_Text_1BD7E0 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150E30 + goto_if_eq Route117_EventScript_150E30 msgbox Route117_Text_1BD7F5, 6 end @@ -79,9 +79,9 @@ Route117_EventScript_150E30:: @ 8150E30 Route117_EventScript_150E47:: @ 8150E47 trainerbattle 0, OPPONENT_MARIA_1, 0, Route117_Text_1BD914, Route117_Text_1BD965 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150E6E + goto_if_eq Route117_EventScript_150E6E msgbox Route117_Text_1BD98F, 6 end @@ -97,9 +97,9 @@ Route117_EventScript_150E85:: @ 8150E85 Route117_EventScript_150E9C:: @ 8150E9C trainerbattle 4, OPPONENT_ANNA_AND_MEG_1, 0, Route117_Text_1BDBC3, Route117_Text_1BDC07, Route117_Text_1BDC96 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150EC7 + goto_if_eq Route117_EventScript_150EC7 msgbox Route117_Text_1BDC44, 6 end @@ -110,9 +110,9 @@ Route117_EventScript_150EC7:: @ 8150EC7 Route117_EventScript_150EE2:: @ 8150EE2 trainerbattle 4, OPPONENT_ANNA_AND_MEG_1, 0, Route117_Text_1BDCD2, Route117_Text_1BDD1E, Route117_Text_1BDD8B - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150F0D + goto_if_eq Route117_EventScript_150F0D msgbox Route117_Text_1BDD4E, 6 end diff --git a/data/scripts/maps/Route118.inc b/data/scripts/maps/Route118.inc index 0b5b4748e..b96346f15 100644 --- a/data/scripts/maps/Route118.inc +++ b/data/scripts/maps/Route118.inc @@ -10,12 +10,12 @@ Route118_EventScript_150F34:: @ 8150F34 lock faceplayer checkflag 227 - jumpeq Route118_EventScript_150F89 + goto_if_eq Route118_EventScript_150F89 msgbox Route118_Text_170F12, 5 compare RESULT, 1 - jumpeq Route118_EventScript_150F5E + goto_if_eq Route118_EventScript_150F5E compare RESULT, 0 - jumpeq Route118_EventScript_150F7F + goto_if_eq Route118_EventScript_150F7F end Route118_EventScript_150F5E:: @ 8150F5E @@ -51,62 +51,62 @@ Route118_EventScript_150FA5:: @ 8150FA5 Route118_EventScript_150FAE:: @ 8150FAE lockall setvar 0x8008, 0 - move 255, Route118_Movement_1A0841 - waitmove 0 - move 19, Route118_Movement_151069 - waitmove 0 - jump Route118_EventScript_151004 + applymovement 255, Route118_Movement_1A0841 + waitmovement 0 + applymovement 19, Route118_Movement_151069 + waitmovement 0 + goto Route118_EventScript_151004 end Route118_EventScript_150FCE:: @ 8150FCE lockall setvar 0x8008, 1 - move 255, Route118_Movement_1A0841 - waitmove 0 - jump Route118_EventScript_151004 + applymovement 255, Route118_Movement_1A0841 + waitmovement 0 + goto Route118_EventScript_151004 end Route118_EventScript_150FE4:: @ 8150FE4 lockall setvar 0x8008, 2 - move 255, Route118_Movement_1A0841 - waitmove 0 - move 19, Route118_Movement_15106B - waitmove 0 - jump Route118_EventScript_151004 + applymovement 255, Route118_Movement_1A0841 + waitmovement 0 + applymovement 19, Route118_Movement_15106B + waitmovement 0 + goto Route118_EventScript_151004 end Route118_EventScript_151004:: @ 8151004 - playsfx 10 - move 19, Route118_Movement_15106D - waitmove 0 - pause 30 + playse 10 + applymovement 19, Route118_Movement_15106D + waitmovement 0 + delay 30 msgbox Route118_Text_170D66, 4 - closebutton + closemessage compare 0x8008, 0 - callif 1, Route118_EventScript_151048 + call_if 1, Route118_EventScript_151048 compare 0x8008, 1 - callif 1, Route118_EventScript_151053 + call_if 1, Route118_EventScript_151053 compare 0x8008, 2 - callif 1, Route118_EventScript_15105E + call_if 1, Route118_EventScript_15105E setvar 0x4071, 1 - disappear 19 + removeobject 19 releaseall end Route118_EventScript_151048:: @ 8151048 - move 19, Route118_Movement_151071 - waitmove 0 + applymovement 19, Route118_Movement_151071 + waitmovement 0 return Route118_EventScript_151053:: @ 8151053 - move 19, Route118_Movement_15107C - waitmove 0 + applymovement 19, Route118_Movement_15107C + waitmovement 0 return Route118_EventScript_15105E:: @ 815105E - move 19, Route118_Movement_151086 - waitmove 0 + applymovement 19, Route118_Movement_151086 + waitmovement 0 return Route118_Movement_151069:: @ 8151069 @@ -161,9 +161,9 @@ Route118_Movement_151086:: @ 8151086 Route118_EventScript_15108F:: @ 815108F trainerbattle 0, OPPONENT_ROSE_1, 0, Route118_Text_1BDFF4, Route118_Text_1BE03C - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route118_EventScript_1510B6 + goto_if_eq Route118_EventScript_1510B6 msgbox Route118_Text_1BE05E, 6 end @@ -184,9 +184,9 @@ Route118_EventScript_1510E4:: @ 81510E4 Route118_EventScript_1510FB:: @ 81510FB trainerbattle 0, OPPONENT_DALTON_1, 0, Route118_Text_1BE3E8, Route118_Text_1BE406 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route118_EventScript_151122 + goto_if_eq Route118_EventScript_151122 msgbox Route118_Text_1BE413, 6 end diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc index 55a3fb1dc..2179a7e18 100644 --- a/data/scripts/maps/Route119.inc +++ b/data/scripts/maps/Route119.inc @@ -5,22 +5,22 @@ Route119_MapScripts:: @ 8151167 Route119_MapScript1_151172:: @ 8151172 checkflag 2145 - callif 1, Route119_EventScript_15117C + call_if 1, Route119_EventScript_15117C end Route119_EventScript_15117C:: @ 815117C compare 0x8004, 6 - callif 1, Route119_EventScript_151193 + call_if 1, Route119_EventScript_151193 compare 0x8004, 7 - callif 1, Route119_EventScript_151197 + call_if 1, Route119_EventScript_151197 return Route119_EventScript_151193:: @ 8151193 - disappear 35 + removeobject 35 return Route119_EventScript_151197:: @ 8151197 - disappear 36 + removeobject 36 return Route119_MapScript1_15119B:: @ 815119B @@ -28,7 +28,7 @@ Route119_MapScript1_15119B:: @ 815119B call Route119_EventScript_1A0172 call Route119_EventScript_1A0196 compare 0x40b3, 1 - callif 1, Route119_EventScript_1511B9 + call_if 1, Route119_EventScript_1511B9 special SetRoute119Weather end @@ -40,51 +40,51 @@ Route119_EventScript_1511B9:: @ 81511B9 Route119_EventScript_1511C5:: @ 81511C5 setvar 0x4001, 1 - jump Route119_EventScript_1511DB + goto Route119_EventScript_1511DB end Route119_EventScript_1511D0:: @ 81511D0 setvar 0x4001, 2 - jump Route119_EventScript_1511DB + goto Route119_EventScript_1511DB end Route119_EventScript_1511DB:: @ 81511DB lockall - reappear 25 - checkgender + addobject 25 + checkplayergender compare RESULT, 0 - callif 1, Route119_EventScript_151254 + call_if 1, Route119_EventScript_151254 compare RESULT, 1 - callif 1, Route119_EventScript_151259 - pause 65 + call_if 1, Route119_EventScript_151259 + delay 65 compare 0x4001, 1 - callif 1, Route119_EventScript_1513A6 + call_if 1, Route119_EventScript_1513A6 compare 0x4001, 2 - callif 1, Route119_EventScript_1513B1 - move 255, Route119_Movement_1A0845 - waitmove 0 - pause 30 + call_if 1, Route119_EventScript_1513B1 + applymovement 255, Route119_Movement_1A0845 + waitmovement 0 + delay 30 compare 0x4001, 1 - callif 1, Route119_EventScript_1513D2 + call_if 1, Route119_EventScript_1513D2 compare 0x4001, 2 - callif 1, Route119_EventScript_1513E1 - disappear 25 - reappear 16 - pause 30 - checkgender + call_if 1, Route119_EventScript_1513E1 + removeobject 25 + addobject 16 + delay 30 + checkplayergender compare RESULT, 0 - jumpeq Route119_EventScript_15125E + goto_if_eq Route119_EventScript_15125E compare RESULT, 1 - jumpeq Route119_EventScript_1512D8 + goto_if_eq Route119_EventScript_1512D8 releaseall end Route119_EventScript_151254:: @ 8151254 - playmusic 415, 1 + playbgm 415, 1 return Route119_EventScript_151259:: @ 8151259 - playmusic 421, 1 + playbgm 421, 1 return Route119_EventScript_15125E:: @ 815125E @@ -97,24 +97,24 @@ Route119_EventScript_15125E:: @ 815125E Route119_EventScript_15128D:: @ 815128D trainerbattle 3, OPPONENT_MAY_6, 0, Route119_Text_171156 - jump Route119_EventScript_1512BD + goto Route119_EventScript_1512BD end Route119_EventScript_15129D:: @ 815129D trainerbattle 3, OPPONENT_MAY_9, 0, Route119_Text_171156 - jump Route119_EventScript_1512BD + goto Route119_EventScript_1512BD end Route119_EventScript_1512AD:: @ 81512AD trainerbattle 3, OPPONENT_MAY_3, 0, Route119_Text_171156 - jump Route119_EventScript_1512BD + goto Route119_EventScript_1512BD end Route119_EventScript_1512BD:: @ 81512BD msgbox Route119_Text_1711B1, 4 call Route119_EventScript_151352 msgbox Route119_Text_171214, 4 - jump Route119_EventScript_151362 + goto Route119_EventScript_151362 end Route119_EventScript_1512D8:: @ 81512D8 @@ -127,24 +127,24 @@ Route119_EventScript_1512D8:: @ 81512D8 Route119_EventScript_151307:: @ 8151307 trainerbattle 3, OPPONENT_BRENDAN_6, 0, Route119_Text_1713E2 - jump Route119_EventScript_151337 + goto Route119_EventScript_151337 end Route119_EventScript_151317:: @ 8151317 trainerbattle 3, OPPONENT_BRENDAN_9, 0, Route119_Text_1713E2 - jump Route119_EventScript_151337 + goto Route119_EventScript_151337 end Route119_EventScript_151327:: @ 8151327 trainerbattle 3, OPPONENT_BRENDAN_3, 0, Route119_Text_1713E2 - jump Route119_EventScript_151337 + goto Route119_EventScript_151337 end Route119_EventScript_151337:: @ 8151337 msgbox Route119_Text_17140B, 4 call Route119_EventScript_151352 msgbox Route119_Text_171475, 4 - jump Route119_EventScript_151362 + goto Route119_EventScript_151362 end Route119_EventScript_151352:: @ 8151352 @@ -153,53 +153,53 @@ Route119_EventScript_151352:: @ 8151352 return Route119_EventScript_151362:: @ 8151362 - closebutton + closemessage compare 0x4001, 1 - callif 1, Route119_EventScript_1513D2 + call_if 1, Route119_EventScript_1513D2 compare 0x4001, 2 - callif 1, Route119_EventScript_1513E1 - disappear 16 - reappear 25 - pause 30 + call_if 1, Route119_EventScript_1513E1 + removeobject 16 + addobject 25 + delay 30 compare 0x4001, 1 - callif 1, Route119_EventScript_1513BC + call_if 1, Route119_EventScript_1513BC compare 0x4001, 2 - callif 1, Route119_EventScript_1513C7 - disappear 25 + call_if 1, Route119_EventScript_1513C7 + removeobject 25 setvar 0x4072, 1 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm releaseall end Route119_EventScript_1513A6:: @ 81513A6 - move 25, Route119_Movement_1513F0 - waitmove 0 + applymovement 25, Route119_Movement_1513F0 + waitmovement 0 return Route119_EventScript_1513B1:: @ 81513B1 - move 25, Route119_Movement_1513FA - waitmove 0 + applymovement 25, Route119_Movement_1513FA + waitmovement 0 return Route119_EventScript_1513BC:: @ 81513BC - move 25, Route119_Movement_151405 - waitmove 0 + applymovement 25, Route119_Movement_151405 + waitmovement 0 return Route119_EventScript_1513C7:: @ 81513C7 - move 25, Route119_Movement_15140F - waitmove 0 + applymovement 25, Route119_Movement_15140F + waitmovement 0 return Route119_EventScript_1513D2:: @ 81513D2 - movespriteperm 16, 25, 32 - movespriteperm 25, 25, 32 + setobjectxyperm 16, 25, 32 + setobjectxyperm 25, 25, 32 return Route119_EventScript_1513E1:: @ 81513E1 - movespriteperm 16, 26, 32 - movespriteperm 25, 26, 32 + setobjectxyperm 16, 26, 32 + setobjectxyperm 25, 26, 32 return Route119_Movement_1513F0:: @ 81513F0 @@ -296,9 +296,9 @@ Route119_EventScript_1514A8:: @ 81514A8 Route119_EventScript_1514BF:: @ 81514BF trainerbattle 0, OPPONENT_JACKSON_1, 0, Route119_Text_1BE8BB, Route119_Text_1BE90E - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route119_EventScript_1514E6 + goto_if_eq Route119_EventScript_1514E6 msgbox Route119_Text_1BE937, 6 end @@ -309,9 +309,9 @@ Route119_EventScript_1514E6:: @ 81514E6 Route119_EventScript_1514FD:: @ 81514FD trainerbattle 0, OPPONENT_CATHERINE_1, 0, Route119_Text_1BEA3A, Route119_Text_1BEA88 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route119_EventScript_151524 + goto_if_eq Route119_EventScript_151524 msgbox Route119_Text_1BEAB3, 6 end @@ -354,9 +354,9 @@ Route119_EventScript_1515C5:: @ 81515C5 lock faceplayer msgbox Route119_Text_171520, 4 - closebutton - move LAST_TALKED, Route119_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, Route119_Movement_1A083D + waitmovement 0 release end @@ -364,9 +364,9 @@ Route119_EventScript_1515DC:: @ 81515DC lock faceplayer msgbox Route119_Text_17157C, 4 - closebutton - move LAST_TALKED, Route119_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, Route119_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/Route119_House.inc b/data/scripts/maps/Route119_House.inc index 6395e40eb..42cc89068 100644 --- a/data/scripts/maps/Route119_House.inc +++ b/data/scripts/maps/Route119_House.inc @@ -8,8 +8,8 @@ Route119_House_EventScript_163DDE:: @ 8163DDE Route119_House_EventScript_163DE7:: @ 8163DE7 lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox Route119_House_Text_19F406, 4 waitpokecry release diff --git a/data/scripts/maps/Route119_WeatherInstitute_1F.inc b/data/scripts/maps/Route119_WeatherInstitute_1F.inc index 95ec39d61..3dc9672e3 100644 --- a/data/scripts/maps/Route119_WeatherInstitute_1F.inc +++ b/data/scripts/maps/Route119_WeatherInstitute_1F.inc @@ -5,12 +5,12 @@ Route119_WeatherInstitute_1F_MapScripts:: @ 8163C2A Route119_WeatherInstitute_1F_MapScript1_163C30:: @ 8163C30 call Route119_WeatherInstitute_1F_EventScript_1A0196 compare 0x40b3, 0 - callif 1, Route119_WeatherInstitute_1F_EventScript_163C41 + call_if 1, Route119_WeatherInstitute_1F_EventScript_163C41 end Route119_WeatherInstitute_1F_EventScript_163C41:: @ 8163C41 - movespriteperm 5, 0, 5 - spritebehave 5, 10 + setobjectxyperm 5, 0, 5 + setobjectmovementtype 5, 10 return Route119_WeatherInstitute_1F_EventScript_163C4D:: @ 8163C4D @@ -18,7 +18,7 @@ Route119_WeatherInstitute_1F_EventScript_163C4D:: @ 8163C4D faceplayer special GetPlayerBigGuyGirlString compare 0x40b3, 0 - jumpeq Route119_WeatherInstitute_1F_EventScript_163C67 + goto_if_eq Route119_WeatherInstitute_1F_EventScript_163C67 msgbox Route119_WeatherInstitute_1F_Text_19ED22, 4 release end @@ -39,7 +39,7 @@ Route119_WeatherInstitute_1F_EventScript_163C7A:: @ 8163C7A Route119_WeatherInstitute_1F_EventScript_163C83:: @ 8163C83 lockall msgbox Route119_WeatherInstitute_1F_Text_19EE8B, 4 - closebutton + closemessage call Route119_WeatherInstitute_1F_EventScript_1A02CA releaseall end diff --git a/data/scripts/maps/Route119_WeatherInstitute_2F.inc b/data/scripts/maps/Route119_WeatherInstitute_2F.inc index 37f8e9ec6..ac64904a2 100644 --- a/data/scripts/maps/Route119_WeatherInstitute_2F.inc +++ b/data/scripts/maps/Route119_WeatherInstitute_2F.inc @@ -5,19 +5,19 @@ Route119_WeatherInstitute_2F_MapScripts:: @ 8163CC2 Route119_WeatherInstitute_2F_MapScript1_163CC8:: @ 8163CC8 call Route119_WeatherInstitute_2F_EventScript_1A0196 compare 0x40b3, 0 - callif 1, Route119_WeatherInstitute_2F_EventScript_163CE4 + call_if 1, Route119_WeatherInstitute_2F_EventScript_163CE4 compare 0x40b3, 1 - callif 1, Route119_WeatherInstitute_2F_EventScript_163CF0 + call_if 1, Route119_WeatherInstitute_2F_EventScript_163CF0 end Route119_WeatherInstitute_2F_EventScript_163CE4:: @ 8163CE4 - movespriteperm 5, 1, 6 - spritebehave 5, 10 + setobjectxyperm 5, 1, 6 + setobjectmovementtype 5, 10 return Route119_WeatherInstitute_2F_EventScript_163CF0:: @ 8163CF0 - movespriteperm 5, 4, 6 - spritebehave 5, 10 + setobjectxyperm 5, 4, 6 + setobjectmovementtype 5, 10 return Route119_WeatherInstitute_2F_EventScript_163CFC:: @ 8163CFC @@ -37,32 +37,32 @@ Route119_WeatherInstitute_2F_EventScript_163D2A:: @ 8163D2A Route119_WeatherInstitute_2F_EventScript_163D45:: @ 8163D45 msgbox Route119_WeatherInstitute_2F_Text_19F11B, 4 - closebutton + closemessage setvar 0x40b3, 1 clearflag 893 - fadedefault + fadedefaultbgm fadescreen 1 setflag 890 - disappear 1 - disappear 2 - disappear 3 + removeobject 1 + removeobject 2 + removeobject 3 fadescreen 0 - move 5, Route119_WeatherInstitute_2F_Movement_163DC8 - waitmove 0 - moveoffscreen 5 - jump Route119_WeatherInstitute_2F_EventScript_163D7A + applymovement 5, Route119_WeatherInstitute_2F_Movement_163DC8 + waitmovement 0 + moveobjectoffscreen 5 + goto Route119_WeatherInstitute_2F_EventScript_163D7A end Route119_WeatherInstitute_2F_EventScript_163D7A:: @ 8163D7A msgbox Route119_WeatherInstitute_2F_Text_19F1CF, 4 countpokemon compare RESULT, 6 - jumpeq Route119_WeatherInstitute_2F_EventScript_163DB4 - fanfare 370 + goto_if_eq Route119_WeatherInstitute_2F_EventScript_163DB4 + playfanfare 370 message Route119_WeatherInstitute_2F_Text_19F267 waitfanfare - waittext - givepokemon SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER, 0x0, 0x0, 0 + waitmessage + givepoke SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER, 0x0, 0x0, 0 setflag 151 msgbox Route119_WeatherInstitute_2F_Text_19F27D, 4 release @@ -88,6 +88,6 @@ Route119_WeatherInstitute_2F_EventScript_163DCC:: @ 8163DCC lock faceplayer checkflag 151 - jumpeq Route119_WeatherInstitute_2F_EventScript_163DBE - jump Route119_WeatherInstitute_2F_EventScript_163D7A + goto_if_eq Route119_WeatherInstitute_2F_EventScript_163DBE + goto Route119_WeatherInstitute_2F_EventScript_163D7A end diff --git a/data/scripts/maps/Route120.inc b/data/scripts/maps/Route120.inc index 75385fe8f..868d00324 100644 --- a/data/scripts/maps/Route120.inc +++ b/data/scripts/maps/Route120.inc @@ -6,56 +6,56 @@ Route120_MapScripts:: @ 815160E Route120_MapScript1_15161E:: @ 815161E checkflag 2145 - callif 1, Route120_EventScript_151628 + call_if 1, Route120_EventScript_151628 end Route120_EventScript_151628:: @ 8151628 compare 0x8004, 0 - callif 1, Route120_EventScript_15166B + call_if 1, Route120_EventScript_15166B compare 0x8004, 1 - callif 1, Route120_EventScript_151672 + call_if 1, Route120_EventScript_151672 compare 0x8004, 2 - callif 1, Route120_EventScript_151676 + call_if 1, Route120_EventScript_151676 compare 0x8004, 3 - callif 1, Route120_EventScript_15167A + call_if 1, Route120_EventScript_15167A compare 0x8004, 4 - callif 1, Route120_EventScript_15167E + call_if 1, Route120_EventScript_15167E compare 0x8004, 5 - callif 1, Route120_EventScript_151682 + call_if 1, Route120_EventScript_151682 return Route120_EventScript_15166B:: @ 815166B - disappear 30 - disappear 36 + removeobject 30 + removeobject 36 return Route120_EventScript_151672:: @ 8151672 - disappear 37 + removeobject 37 return Route120_EventScript_151676:: @ 8151676 - disappear 38 + removeobject 38 return Route120_EventScript_15167A:: @ 815167A - disappear 39 + removeobject 39 return Route120_EventScript_15167E:: @ 815167E - disappear 41 + removeobject 41 return Route120_EventScript_151682:: @ 8151682 - disappear 40 + removeobject 40 return Route120_MapScript1_151686:: @ 8151686 checkflag 228 - callif 0, Route120_EventScript_1516A2 + call_if 0, Route120_EventScript_1516A2 checkflag 285 - callif 1, Route120_EventScript_1516B5 + call_if 1, Route120_EventScript_1516B5 checkflag 285 - callif 0, Route120_EventScript_1516DA + call_if 0, Route120_EventScript_1516DA end Route120_EventScript_1516A2:: @ 81516A2 @@ -71,7 +71,7 @@ Route120_EventScript_1516B5:: @ 81516B5 return Route120_EventScript_1516DA:: @ 81516DA - spritebehave 36, 10 + setobjectmovementtype 36, 10 return Route120_MapScript1_1516DF:: @ 81516DF @@ -82,11 +82,11 @@ Route120_MapScript1_1516DF:: @ 81516DF Route120_EventScript_1516EA:: @ 81516EA getplayerxy 0x4000, 0x4001 compare 0x4001, 14 - jumpif 3, Route120_EventScript_151715 + goto_if 3, Route120_EventScript_151715 compare 0x4001, 60 - jumpif 3, Route120_EventScript_151719 + goto_if 3, Route120_EventScript_151719 compare 0x4001, 61 - jumpif 4, Route120_EventScript_151711 + goto_if 4, Route120_EventScript_151711 return Route120_EventScript_151711:: @ 8151711 @@ -99,10 +99,10 @@ Route120_EventScript_151715:: @ 8151715 Route120_EventScript_151719:: @ 8151719 compare 0x4000, 7 - jumpif 3, Route120_EventScript_151735 + goto_if 3, Route120_EventScript_151735 compare 0x4000, 19 - jumpif 3, Route120_EventScript_151715 - jump Route120_EventScript_151735 + goto_if 3, Route120_EventScript_151715 + goto Route120_EventScript_151735 end Route120_EventScript_151735:: @ 8151735 @@ -112,15 +112,15 @@ Route120_EventScript_151735:: @ 8151735 Route120_EventScript_151739:: @ 8151739 lock faceplayer - checkdailyflags + dodailyevents checkflag 2254 - jumpeq Route120_EventScript_151837 + goto_if_eq Route120_EventScript_151837 msgbox Route120_Text_1C58F1, 5 compare RESULT, 1 - callif 1, Route120_EventScript_151841 + call_if 1, Route120_EventScript_151841 compare RESULT, 0 - callif 1, Route120_EventScript_15184A - specialval RESULT, GetPlayerTrainerIdOnesDigit + call_if 1, Route120_EventScript_15184A + specialvar RESULT, GetPlayerTrainerIdOnesDigit switch RESULT case 0, Route120_EventScript_1517DC case 5, Route120_EventScript_1517DC @@ -136,33 +136,33 @@ Route120_EventScript_151739:: @ 8151739 Route120_EventScript_1517DC:: @ 81517DC setvar 0x8004, 143 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_1517E7:: @ 81517E7 setvar 0x8004, 144 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_1517F2:: @ 81517F2 setvar 0x8004, 145 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_1517FD:: @ 81517FD setvar 0x8004, 146 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_151808:: @ 8151808 setvar 0x8004, 147 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_151813:: @ 8151813 giveitem 0x8004 compare RESULT, 0 - jumpeq Route120_EventScript_1A029B + goto_if_eq Route120_EventScript_1A029B setflag 2254 msgbox Route120_Text_1C5A0B, 4 release @@ -185,11 +185,11 @@ Route120_EventScript_151853:: @ 8151853 lock faceplayer checkflag 290 - jumpeq Route120_EventScript_151884 + goto_if_eq Route120_EventScript_151884 msgbox Route120_Text_171827, 5 compare RESULT, 0 - jumpeq Route120_EventScript_151877 - jump Route120_EventScript_15189D + goto_if_eq Route120_EventScript_151877 + goto Route120_EventScript_15189D end Route120_EventScript_151877:: @ 8151877 @@ -201,55 +201,55 @@ Route120_EventScript_151877:: @ 8151877 Route120_EventScript_151884:: @ 8151884 msgbox Route120_Text_17196F, 5 compare RESULT, 0 - jumpeq Route120_EventScript_151877 - jump Route120_EventScript_15189D + goto_if_eq Route120_EventScript_151877 + goto Route120_EventScript_15189D end Route120_EventScript_15189D:: @ 815189D msgbox Route120_Text_1719A0, 4 - closebutton + closemessage compare FACING, 2 - callif 1, Route120_EventScript_15197F + call_if 1, Route120_EventScript_15197F compare FACING, 3 - callif 1, Route120_EventScript_15198A - move 31, Route120_Movement_1A083F - waitmove 0 - pause 20 + call_if 1, Route120_EventScript_15198A + applymovement 31, Route120_Movement_1A083F + waitmovement 0 + delay 20 msgbox Route120_Text_1719D4, 4 - closebutton - move 30, Route120_Movement_1A0843 - waitmove 0 - move 30, Route120_Movement_1A0662 - waitmove 0 - checksound - pokecry SPECIES_KECLEON, 2 - pause 40 + closemessage + applymovement 30, Route120_Movement_1A0843 + waitmovement 0 + applymovement 30, Route120_Movement_1A0662 + waitmovement 0 + waitse + playpokecry SPECIES_KECLEON, 2 + delay 40 waitpokecry setwildbattle SPECIES_KECLEON, 30, ITEM_NONE setvar 0x8004, 0 setflag 2145 dowildbattle clearflag 2145 - jump Route120_EventScript_151908 + goto Route120_EventScript_151908 end Route120_EventScript_151908:: @ 8151908 - move 31, Route120_Movement_1A0845 - move 255, Route120_Movement_1A0841 - waitmove 0 + applymovement 31, Route120_Movement_1A0845 + applymovement 255, Route120_Movement_1A0841 + waitmovement 0 msgbox Route120_Text_171A40, 4 giveitem ITEM_DEVON_SCOPE setflag 285 msgbox Route120_Text_171B0E, 4 - closebutton - move 31, Route120_Movement_1A0845 - waitmove 0 - pause 50 - setanimation 0, 1 - doanimation 30 - pause 15 - disappear 31 - checkanimation 30 + closemessage + applymovement 31, Route120_Movement_1A0845 + waitmovement 0 + delay 50 + setfieldeffect 0, 1 + dofieldeffect 30 + delay 15 + removeobject 31 + waitfieldeffect 30 setmaptile 13, 15, 663, 0 setmaptile 12, 16, 671, 0 setmaptile 12, 17, 161, 0 @@ -259,13 +259,13 @@ Route120_EventScript_151908:: @ 8151908 end Route120_EventScript_15197F:: @ 815197F - move 255, Route120_Movement_1A083F - waitmove 0 + applymovement 255, Route120_Movement_1A083F + waitmovement 0 return Route120_EventScript_15198A:: @ 815198A - move 255, Route120_Movement_151995 - waitmove 0 + applymovement 255, Route120_Movement_151995 + waitmovement 0 return Route120_Movement_151995:: @ 8151995 @@ -292,9 +292,9 @@ Route120_EventScript_1519B3:: @ 81519B3 Route120_EventScript_1519CA:: @ 81519CA trainerbattle 0, OPPONENT_ROBERT_1, 0, Route120_Text_1BF07E, Route120_Text_1BF0A5 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route120_EventScript_1519F1 + goto_if_eq Route120_EventScript_1519F1 msgbox Route120_Text_1BF0C3, 6 end @@ -315,9 +315,9 @@ Route120_EventScript_151A1F:: @ 8151A1F Route120_EventScript_151A36:: @ 8151A36 trainerbattle 0, OPPONENT_BRANDON_1, 0, Route120_Text_1BF32B, Route120_Text_1BF36B - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route120_EventScript_151A5D + goto_if_eq Route120_EventScript_151A5D msgbox Route120_Text_1BF38D, 6 end diff --git a/data/scripts/maps/Route121.inc b/data/scripts/maps/Route121.inc index e1aaec716..39443d2f9 100644 --- a/data/scripts/maps/Route121.inc +++ b/data/scripts/maps/Route121.inc @@ -21,14 +21,14 @@ Route121_EventScript_151B1C:: @ 8151B1C Route121_EventScript_151B25:: @ 8151B25 lockall msgbox Route121_Text_171C8F, 4 - closebutton - move 12, Route121_Movement_151B57 - move 13, Route121_Movement_151B60 - move 14, Route121_Movement_151B69 - waitmove 0 - disappear 12 - disappear 13 - disappear 14 + closemessage + applymovement 12, Route121_Movement_151B57 + applymovement 13, Route121_Movement_151B60 + applymovement 14, Route121_Movement_151B69 + waitmovement 0 + removeobject 12 + removeobject 13 + removeobject 14 setvar 0x4074, 1 releaseall end @@ -73,9 +73,9 @@ Route121_EventScript_151B72:: @ 8151B72 Route121_EventScript_151B89:: @ 8151B89 trainerbattle 0, OPPONENT_WALTER_1, 0, Route121_Text_1BFA1B, Route121_Text_1BFA8C - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route121_EventScript_151BB0 + goto_if_eq Route121_EventScript_151BB0 msgbox Route121_Text_1BFA9D, 6 end @@ -101,9 +101,9 @@ Route121_EventScript_151BF9:: @ 8151BF9 Route121_EventScript_151C14:: @ 8151C14 trainerbattle 0, OPPONENT_JESSICA_1, 0, Route121_Text_1BFE51, Route121_Text_1BFE80 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route121_EventScript_151C3B + goto_if_eq Route121_EventScript_151C3B msgbox Route121_Text_1BFEAE, 6 end diff --git a/data/scripts/maps/Route121_SafariZoneEntrance.inc b/data/scripts/maps/Route121_SafariZoneEntrance.inc index 251b09c73..9649271f4 100644 --- a/data/scripts/maps/Route121_SafariZoneEntrance.inc +++ b/data/scripts/maps/Route121_SafariZoneEntrance.inc @@ -8,8 +8,8 @@ Route121_SafariZoneEntrance_MapScript2_15C329:: @ 815C329 Route121_SafariZoneEntrance_EventScript_15C333:: @ 815C333 lockall - move 255, Route121_SafariZoneEntrance_Movement_15C348 - waitmove 0 + applymovement 255, Route121_SafariZoneEntrance_Movement_15C348 + waitmovement 0 special ExitSafariMode setvar 0x40a4, 0 releaseall @@ -35,7 +35,7 @@ Route121_SafariZoneEntrance_EventScript_15C35A:: @ 815C35A faceplayer msgbox Route121_SafariZoneEntrance_Text_1C3704, 5 compare RESULT, 1 - jumpeq Route121_SafariZoneEntrance_EventScript_15C379 + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C379 msgbox Route121_SafariZoneEntrance_Text_1C373C, 4 release end @@ -47,39 +47,39 @@ Route121_SafariZoneEntrance_EventScript_15C379:: @ 815C379 Route121_SafariZoneEntrance_EventScript_15C383:: @ 815C383 lockall - move 255, Route121_SafariZoneEntrance_Movement_1A0841 - waitmove 0 - showmoney 0, 0 - snop + applymovement 255, Route121_SafariZoneEntrance_Movement_1A0841 + waitmovement 0 + showmoneybox 0, 0 + nop msgbox Route121_SafariZoneEntrance_Text_1C3832, 5 compare RESULT, 1 - jumpeq Route121_SafariZoneEntrance_EventScript_15C3B3 + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C3B3 msgbox Route121_SafariZoneEntrance_Text_1C3895, 4 - jump Route121_SafariZoneEntrance_EventScript_15C46C + goto Route121_SafariZoneEntrance_EventScript_15C46C end Route121_SafariZoneEntrance_EventScript_15C3B3:: @ 815C3B3 checkitem ITEM_POKEBLOCK_CASE, 1 compare RESULT, 0 - jumpeq Route121_SafariZoneEntrance_EventScript_15C450 + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C450 call Route121_SafariZoneEntrance_EventScript_15C425 checkmoney 0x1f4, 0 compare RESULT, 0 - jumpeq Route121_SafariZoneEntrance_EventScript_15C45E + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C45E msgbox Route121_SafariZoneEntrance_Text_1C38D9, 4 - paymoney 0x1f4, 0 - updatemoney 0, 0 - snop + takemoney 0x1f4, 0 + updatemoneybox 0, 0 + nop msgbox Route121_SafariZoneEntrance_Text_1C38F4, 4 - fanfare 370 + playfanfare 370 message Route121_SafariZoneEntrance_Text_1C3910 waitfanfare - waittext + waitmessage msgbox Route121_SafariZoneEntrance_Text_1C392D, 4 - closebutton - hidemoney 0, 0 - move 255, Route121_SafariZoneEntrance_Movement_15C47E - waitmove 0 + closemessage + hidemoneybox 0, 0 + applymovement 255, Route121_SafariZoneEntrance_Movement_15C47E + waitmovement 0 special EnterSafariMode setvar 0x40a4, 2 warp SafariZone_Southeast, 255, 32, 33 @@ -89,12 +89,12 @@ Route121_SafariZoneEntrance_EventScript_15C3B3:: @ 815C3B3 Route121_SafariZoneEntrance_EventScript_15C425:: @ 815C425 countpokemon compare RESULT, 6 - jumpif 5, Route121_SafariZoneEntrance_EventScript_15C44F - specialval RESULT, CheckFreePokemonStorageSpace + goto_if 5, Route121_SafariZoneEntrance_EventScript_15C44F + specialvar RESULT, CheckFreePokemonStorageSpace compare RESULT, 1 - jumpeq Route121_SafariZoneEntrance_EventScript_15C44F + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C44F msgbox Route121_SafariZoneEntrance_Text_1C39A3, 4 - jump Route121_SafariZoneEntrance_EventScript_15C46C + goto Route121_SafariZoneEntrance_EventScript_15C46C end Route121_SafariZoneEntrance_EventScript_15C44F:: @ 815C44F @@ -102,19 +102,19 @@ Route121_SafariZoneEntrance_EventScript_15C44F:: @ 815C44F Route121_SafariZoneEntrance_EventScript_15C450:: @ 815C450 msgbox Route121_SafariZoneEntrance_Text_1C39C3, 4 - jump Route121_SafariZoneEntrance_EventScript_15C46C + goto Route121_SafariZoneEntrance_EventScript_15C46C end Route121_SafariZoneEntrance_EventScript_15C45E:: @ 815C45E msgbox Route121_SafariZoneEntrance_Text_1C38B5, 4 - jump Route121_SafariZoneEntrance_EventScript_15C46C + goto Route121_SafariZoneEntrance_EventScript_15C46C end Route121_SafariZoneEntrance_EventScript_15C46C:: @ 815C46C - closebutton - hidemoney 0, 0 - move 255, Route121_SafariZoneEntrance_Movement_15C47C - waitmove 0 + closemessage + hidemoneybox 0, 0 + applymovement 255, Route121_SafariZoneEntrance_Movement_15C47C + waitmovement 0 releaseall end diff --git a/data/scripts/maps/Route123.inc b/data/scripts/maps/Route123.inc index 891a395f0..14c5a2dba 100644 --- a/data/scripts/maps/Route123.inc +++ b/data/scripts/maps/Route123.inc @@ -10,15 +10,15 @@ Route123_EventScript_151C5D:: @ 8151C5D lock faceplayer checkflag 232 - jumpeq Route123_EventScript_151CAC + goto_if_eq Route123_EventScript_151CAC msgbox Route123_Text_171D83, 4 special IsGrassTypeInParty compare RESULT, 0 - jumpeq Route123_EventScript_151CAA + goto_if_eq Route123_EventScript_151CAA msgbox Route123_Text_171DC2, 4 giveitem ITEM_TM19 compare RESULT, 0 - jumpeq Route123_EventScript_1A029B + goto_if_eq Route123_EventScript_1A029B setflag 232 msgbox Route123_Text_171E34, 4 release @@ -62,9 +62,9 @@ Route123_EventScript_151CFF:: @ 8151CFF Route123_EventScript_151D16:: @ 8151D16 trainerbattle 0, OPPONENT_CAMERON_1, 0, Route123_Text_1C013F, Route123_Text_1C01A3 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route123_EventScript_151D3D + goto_if_eq Route123_EventScript_151D3D msgbox Route123_Text_1C01B1, 6 end @@ -75,9 +75,9 @@ Route123_EventScript_151D3D:: @ 8151D3D Route123_EventScript_151D54:: @ 8151D54 trainerbattle 0, OPPONENT_JACKI_1, 0, Route123_Text_1C028C, Route123_Text_1C0303 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route123_EventScript_151D7B + goto_if_eq Route123_EventScript_151D7B msgbox Route123_Text_1C030F, 6 end diff --git a/data/scripts/maps/Route123_BerryMastersHouse.inc b/data/scripts/maps/Route123_BerryMastersHouse.inc index 9290f845d..64888759d 100644 --- a/data/scripts/maps/Route123_BerryMastersHouse.inc +++ b/data/scripts/maps/Route123_BerryMastersHouse.inc @@ -9,16 +9,16 @@ Route123_BerryMastersHouse_MapScript1_1639E5:: @ 81639E5 Route123_BerryMastersHouse_EventScript_1639E9:: @ 81639E9 lock faceplayer - checkdailyflags + dodailyevents checkflag 2253 - jumpeq Route123_BerryMastersHouse_EventScript_163A5A + goto_if_eq Route123_BerryMastersHouse_EventScript_163A5A msgbox Route123_BerryMastersHouse_Text_1C5BC4, 4 random 10 addvar RESULT, 20 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 2253 msgbox Route123_BerryMastersHouse_Text_1C5C66, 4 random 10 @@ -26,7 +26,7 @@ Route123_BerryMastersHouse_EventScript_1639E9:: @ 81639E9 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B msgbox Route123_BerryMastersHouse_Text_1C5C83, 4 release end @@ -39,18 +39,18 @@ Route123_BerryMastersHouse_EventScript_163A5A:: @ 8163A5A Route123_BerryMastersHouse_EventScript_163A64:: @ 8163A64 lock faceplayer - checkdailyflags + dodailyevents checkflag 2257 - jumpeq Route123_BerryMastersHouse_EventScript_163C13 + goto_if_eq Route123_BerryMastersHouse_EventScript_163C13 msgbox Route123_BerryMastersHouse_Text_1C5D24, 4 setvar 0x8004, 13 call Route123_BerryMastersHouse_EventScript_1A00F3 lock faceplayer compare RESULT, 1 - jumpeq Route123_BerryMastersHouse_EventScript_163AAD + goto_if_eq Route123_BerryMastersHouse_EventScript_163AAD compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_163A9B + goto_if_eq Route123_BerryMastersHouse_EventScript_163A9B end Route123_BerryMastersHouse_EventScript_163A9B:: @ 8163A9B @@ -61,17 +61,17 @@ Route123_BerryMastersHouse_EventScript_163A9B:: @ 8163A9B Route123_BerryMastersHouse_EventScript_163AAD:: @ 8163AAD compare 0x8004, 0 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 compare 0x8004, 1 - jumpeq Route123_BerryMastersHouse_EventScript_163B1E + goto_if_eq Route123_BerryMastersHouse_EventScript_163B1E compare 0x8004, 2 - jumpeq Route123_BerryMastersHouse_EventScript_163B4F + goto_if_eq Route123_BerryMastersHouse_EventScript_163B4F compare 0x8004, 3 - jumpeq Route123_BerryMastersHouse_EventScript_163B80 + goto_if_eq Route123_BerryMastersHouse_EventScript_163B80 compare 0x8004, 4 - jumpeq Route123_BerryMastersHouse_EventScript_163BB1 + goto_if_eq Route123_BerryMastersHouse_EventScript_163BB1 compare 0x8004, 5 - jumpeq Route123_BerryMastersHouse_EventScript_163BE2 + goto_if_eq Route123_BerryMastersHouse_EventScript_163BE2 end Route123_BerryMastersHouse_EventScript_163AF0:: @ 8163AF0 @@ -80,64 +80,64 @@ Route123_BerryMastersHouse_EventScript_163AF0:: @ 8163AF0 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B - jump Route123_BerryMastersHouse_EventScript_163C1D + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B + goto Route123_BerryMastersHouse_EventScript_163C1D release end Route123_BerryMastersHouse_EventScript_163B1E:: @ 8163B1E checkflag 248 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_SPELON_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 248 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163B4F:: @ 8163B4F checkflag 249 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_PAMTRE_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 249 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163B80:: @ 8163B80 checkflag 250 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_WATMEL_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 250 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163BB1:: @ 8163BB1 checkflag 251 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_DURIN_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 251 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163BE2:: @ 8163BE2 checkflag 252 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_BELUE_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 252 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163C13:: @ 8163C13 diff --git a/data/scripts/maps/Route124.inc b/data/scripts/maps/Route124.inc index 68f17b12a..ffe4cef97 100644 --- a/data/scripts/maps/Route124.inc +++ b/data/scripts/maps/Route124.inc @@ -4,7 +4,7 @@ Route124_MapScripts:: @ 8151DDF Route124_MapScript1_151DE5:: @ 8151DE5 checkflag 2090 - callif 1, Route124_EventScript_1A02C1 + call_if 1, Route124_EventScript_1A02C1 end Route124_EventScript_151DEF:: @ 8151DEF @@ -23,9 +23,9 @@ Route124_EventScript_151E0F:: @ 8151E0F Route124_EventScript_151E26:: @ 8151E26 trainerbattle 0, OPPONENT_JENNY_1, 0, Route124_Text_1C07B4, Route124_Text_1C07F9 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route124_EventScript_151E4D + goto_if_eq Route124_EventScript_151E4D msgbox Route124_Text_1C080E, 6 end @@ -46,9 +46,9 @@ Route124_EventScript_151E7B:: @ 8151E7B Route124_EventScript_151E92:: @ 8151E92 trainerbattle 4, OPPONENT_RITA_AND_SAM_1, 0, Route124_Text_1C0ABD, Route124_Text_1C0B36, Route124_Text_1C0BC8 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route124_EventScript_151EBD + goto_if_eq Route124_EventScript_151EBD msgbox Route124_Text_1C0B72, 6 end @@ -59,9 +59,9 @@ Route124_EventScript_151EBD:: @ 8151EBD Route124_EventScript_151ED8:: @ 8151ED8 trainerbattle 4, OPPONENT_RITA_AND_SAM_1, 0, Route124_Text_1C0C0E, Route124_Text_1C0C4F, Route124_Text_1C0CE0 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route124_EventScript_151F03 + goto_if_eq Route124_EventScript_151F03 msgbox Route124_Text_1C0C7F, 6 end diff --git a/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc b/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc index e1049c8be..7421e94e0 100644 --- a/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc +++ b/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc @@ -10,38 +10,38 @@ Route124_DivingTreasureHuntersHouse_EventScript_163E04:: @ 8163E04 lock faceplayer checkflag 217 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_163E20 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_163E20 msgbox Route124_DivingTreasureHuntersHouse_Text_19F416, 4 setflag 217 - jump Route124_DivingTreasureHuntersHouse_EventScript_163E2E + goto Route124_DivingTreasureHuntersHouse_EventScript_163E2E end Route124_DivingTreasureHuntersHouse_EventScript_163E20:: @ 8163E20 msgbox Route124_DivingTreasureHuntersHouse_Text_19F48F, 4 - jump Route124_DivingTreasureHuntersHouse_EventScript_163E2E + goto Route124_DivingTreasureHuntersHouse_EventScript_163E2E end Route124_DivingTreasureHuntersHouse_EventScript_163E2E:: @ 8163E2E call Route124_DivingTreasureHuntersHouse_EventScript_163E44 compare 0x4001, 0 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_164329 - jump Route124_DivingTreasureHuntersHouse_EventScript_163EA2 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_164329 + goto Route124_DivingTreasureHuntersHouse_EventScript_163EA2 end Route124_DivingTreasureHuntersHouse_EventScript_163E44:: @ 8163E44 setvar 0x4001, 0 checkitem ITEM_RED_SHARD, 1 compare RESULT, 1 - callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E8A + call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E8A checkitem ITEM_YELLOW_SHARD, 1 compare RESULT, 1 - callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E90 + call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E90 checkitem ITEM_BLUE_SHARD, 1 compare RESULT, 1 - callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E96 + call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E96 checkitem ITEM_GREEN_SHARD, 1 compare RESULT, 1 - callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E9C + call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E9C return Route124_DivingTreasureHuntersHouse_EventScript_163E8A:: @ 8163E8A @@ -62,12 +62,12 @@ Route124_DivingTreasureHuntersHouse_EventScript_163E9C:: @ 8163E9C Route124_DivingTreasureHuntersHouse_EventScript_163EA2:: @ 8163EA2 msgbox Route124_DivingTreasureHuntersHouse_Text_19F544, 4 - jump Route124_DivingTreasureHuntersHouse_EventScript_163EB0 + goto Route124_DivingTreasureHuntersHouse_EventScript_163EB0 end Route124_DivingTreasureHuntersHouse_EventScript_163EB0:: @ 8163EB0 message Route124_DivingTreasureHuntersHouse_Text_19F5C5 - waittext + waitmessage switch 0x4001 case 1, Route124_DivingTreasureHuntersHouse_EventScript_163F61 case 2, Route124_DivingTreasureHuntersHouse_EventScript_163F87 @@ -91,7 +91,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163F61:: @ 8163F61 switch RESULT case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256 case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_163F87:: @ 8163F87 @@ -99,7 +99,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163F87:: @ 8163F87 switch RESULT case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_163FAD:: @ 8163FAD @@ -108,7 +108,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163FAD:: @ 8163FAD case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_163FDE:: @ 8163FDE @@ -116,7 +116,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163FDE:: @ 8163FDE switch RESULT case 0, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164004:: @ 8164004 @@ -125,7 +125,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164004:: @ 8164004 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164035:: @ 8164035 @@ -134,7 +134,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164035:: @ 8164035 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164066:: @ 8164066 @@ -144,7 +144,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164066:: @ 8164066 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 2, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_1640A2:: @ 81640A2 @@ -152,7 +152,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640A2:: @ 81640A2 switch RESULT case 0, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_1640C8:: @ 81640C8 @@ -161,7 +161,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640C8:: @ 81640C8 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_1640F9:: @ 81640F9 @@ -170,7 +170,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640F9:: @ 81640F9 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_16412A:: @ 816412A @@ -180,7 +180,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_16412A:: @ 816412A case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164166:: @ 8164166 @@ -189,7 +189,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164166:: @ 8164166 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164197:: @ 8164197 @@ -199,7 +199,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164197:: @ 8164197 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_1641D3:: @ 81641D3 @@ -209,7 +209,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1641D3:: @ 81641D3 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_16420F:: @ 816420F @@ -220,42 +220,42 @@ Route124_DivingTreasureHuntersHouse_EventScript_16420F:: @ 816420F case 2, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 3, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 4, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164256:: @ 8164256 setvar 0x8008, 48 setvar 0x8009, 95 - jump Route124_DivingTreasureHuntersHouse_EventScript_164292 + goto Route124_DivingTreasureHuntersHouse_EventScript_164292 Route124_DivingTreasureHuntersHouse_EventScript_164265:: @ 8164265 setvar 0x8008, 50 setvar 0x8009, 96 - jump Route124_DivingTreasureHuntersHouse_EventScript_164292 + goto Route124_DivingTreasureHuntersHouse_EventScript_164292 Route124_DivingTreasureHuntersHouse_EventScript_164274:: @ 8164274 setvar 0x8008, 49 setvar 0x8009, 97 - jump Route124_DivingTreasureHuntersHouse_EventScript_164292 + goto Route124_DivingTreasureHuntersHouse_EventScript_164292 Route124_DivingTreasureHuntersHouse_EventScript_164283:: @ 8164283 setvar 0x8008, 51 setvar 0x8009, 98 - jump Route124_DivingTreasureHuntersHouse_EventScript_164292 + goto Route124_DivingTreasureHuntersHouse_EventScript_164292 Route124_DivingTreasureHuntersHouse_EventScript_164292:: @ 8164292 - bufferitem 0, 0x8008 - bufferitem 1, 0x8009 + getitemname 0, 0x8008 + getitemname 1, 0x8009 msgbox Route124_DivingTreasureHuntersHouse_Text_19F5E0, 5 compare RESULT, 0 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_16431F checkitemspace 0x8009, 1 compare RESULT, 1 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_1642D3 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_1642D3 checkitem 0x8008, 2 compare RESULT, 0 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_1642D3 - jump Route124_DivingTreasureHuntersHouse_EventScript_164315 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_1642D3 + goto Route124_DivingTreasureHuntersHouse_EventScript_164315 end Route124_DivingTreasureHuntersHouse_EventScript_1642D3:: @ 81642D3 @@ -264,11 +264,11 @@ Route124_DivingTreasureHuntersHouse_EventScript_1642D3:: @ 81642D3 msgbox Route124_DivingTreasureHuntersHouse_Text_19F606, 4 call Route124_DivingTreasureHuntersHouse_EventScript_163E44 compare 0x4001, 0 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_164333 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_164333 msgbox Route124_DivingTreasureHuntersHouse_Text_19F629, 5 compare RESULT, 1 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_163EB0 - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_163EB0 + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164315:: @ 8164315 diff --git a/data/scripts/maps/Route125.inc b/data/scripts/maps/Route125.inc index a5d2457d5..489a7314b 100644 --- a/data/scripts/maps/Route125.inc +++ b/data/scripts/maps/Route125.inc @@ -4,7 +4,7 @@ Route125_MapScripts:: @ 8151F1E Route125_MapScript1_151F24:: @ 8151F24 checkflag 2090 - callif 1, Route125_EventScript_1A02C1 + call_if 1, Route125_EventScript_1A02C1 end Route125_EventScript_151F2E:: @ 8151F2E @@ -29,9 +29,9 @@ Route125_EventScript_151F73:: @ 8151F73 Route125_EventScript_151F8A:: @ 8151F8A trainerbattle 0, OPPONENT_ERNEST_1, 0, Route125_Text_1C11AF, Route125_Text_1C11ED - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route125_EventScript_151FB1 + goto_if_eq Route125_EventScript_151FB1 msgbox Route125_Text_1C1208, 6 end diff --git a/data/scripts/maps/Route126.inc b/data/scripts/maps/Route126.inc index f3d1a77f9..729922681 100644 --- a/data/scripts/maps/Route126.inc +++ b/data/scripts/maps/Route126.inc @@ -4,7 +4,7 @@ Route126_MapScripts:: @ 8151FFE Route126_MapScript1_152004:: @ 8152004 checkflag 2090 - callif 1, Route126_EventScript_1A02C1 + call_if 1, Route126_EventScript_1A02C1 end Route126_EventScript_15200E:: @ 815200E diff --git a/data/scripts/maps/Route127.inc b/data/scripts/maps/Route127.inc index b4461b253..284d1fbd4 100644 --- a/data/scripts/maps/Route127.inc +++ b/data/scripts/maps/Route127.inc @@ -4,7 +4,7 @@ Route127_MapScripts:: @ 815206A Route127_MapScript1_152070:: @ 8152070 checkflag 2090 - callif 1, Route127_EventScript_1A02C1 + call_if 1, Route127_EventScript_1A02C1 end Route127_EventScript_15207A:: @ 815207A diff --git a/data/scripts/maps/Route128.inc b/data/scripts/maps/Route128.inc index 011591400..615662fc1 100644 --- a/data/scripts/maps/Route128.inc +++ b/data/scripts/maps/Route128.inc @@ -5,7 +5,7 @@ Route128_MapScripts:: @ 815211B Route128_MapScript1_152126:: @ 8152126 checkflag 2090 - callif 1, Route128_EventScript_1A02C1 + call_if 1, Route128_EventScript_1A02C1 call Route128_EventScript_1A0196 end @@ -15,73 +15,73 @@ Route128_MapScript2_152135:: @ 8152135 Route128_EventScript_15213F:: @ 815213F lockall - pause 20 + delay 20 .ifndef SAPPHIRE special sub_807E25C waitstate .endif - move 4, Route128_Movement_152271 - waitmove 0 + applymovement 4, Route128_Movement_152271 + waitmovement 0 msgbox Route128_Text_171EE0, 4 - move 4, Route128_Movement_152279 - waitmove 0 + applymovement 4, Route128_Movement_152279 + waitmovement 0 msgbox Route128_Text_171F35, 4 - closebutton - move 5, Route128_Movement_152293 - waitmove 0 - move 4, Route128_Movement_1A0841 - waitmove 0 + closemessage + applymovement 5, Route128_Movement_152293 + waitmovement 0 + applymovement 4, Route128_Movement_1A0841 + waitmovement 0 msgbox Route128_Text_171F4B, 4 - closebutton - move 5, Route128_Movement_1522A1 - waitmove 0 - move 255, Route128_Movement_1A0841 - waitmove 0 + closemessage + applymovement 5, Route128_Movement_1522A1 + waitmovement 0 + applymovement 255, Route128_Movement_1A0841 + waitmovement 0 msgbox Route128_Text_172008, 4 - closebutton - move 4, Route128_Movement_15227E - move 255, Route128_Movement_1A083F - move 5, Route128_Movement_152290 - waitmove 0 + closemessage + applymovement 4, Route128_Movement_15227E + applymovement 255, Route128_Movement_1A083F + applymovement 5, Route128_Movement_152290 + waitmovement 0 msgbox Route128_Text_17210B, 4 - closebutton - pause 40 - move 5, Route128_Movement_152296 - move 4, Route128_Movement_152283 - waitmove 0 - disappear 5 - disappear 4 - pause 100 - setanimation 0, 1 - doanimation 30 - checkanimation 30 - reappear 3 - move 3, Route128_Movement_15226F - waitmove 0 - move 255, Route128_Movement_1A0843 - waitmove 0 + closemessage + delay 40 + applymovement 5, Route128_Movement_152296 + applymovement 4, Route128_Movement_152283 + waitmovement 0 + removeobject 5 + removeobject 4 + delay 100 + setfieldeffect 0, 1 + dofieldeffect 30 + waitfieldeffect 30 + addobject 3 + applymovement 3, Route128_Movement_15226F + waitmovement 0 + applymovement 255, Route128_Movement_1A0843 + waitmovement 0 msgbox Route128_Text_172181, 4 - closebutton - move 3, Route128_Movement_15226D - move 255, Route128_Movement_1A0841 - waitmove 0 + closemessage + applymovement 3, Route128_Movement_15226D + applymovement 255, Route128_Movement_1A0841 + waitmovement 0 .ifdef SAPPHIRE msgbox Route128_Text_1721A2, 4 .else msgbox Route128_Text_1722A1, 4 .endif - move 3, Route128_Movement_1A0845 - waitmove 0 + applymovement 3, Route128_Movement_1A0845 + waitmovement 0 msgbox Route128_Text_1723BE, 4 - closebutton - move 3, Route128_Movement_1A0845 - waitmove 0 - pause 50 - setanimation 0, 1 - doanimation 30 - pause 15 - disappear 3 - checkanimation 30 + closemessage + applymovement 3, Route128_Movement_1A0845 + waitmovement 0 + delay 50 + setfieldeffect 0, 1 + dofieldeffect 30 + delay 15 + removeobject 3 + waitfieldeffect 30 setvar 0x407b, 2 releaseall end @@ -182,9 +182,9 @@ Route128_Movement_1522A1:: @ 81522A1 Route128_EventScript_1522A4:: @ 81522A4 trainerbattle 0, OPPONENT_ISAIAH_1, 0, Route128_Text_1C1C67, Route128_Text_1C1C95 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route128_EventScript_1522CB + goto_if_eq Route128_EventScript_1522CB msgbox Route128_Text_1C1CC3, 6 end @@ -195,9 +195,9 @@ Route128_EventScript_1522CB:: @ 81522CB Route128_EventScript_1522E2:: @ 81522E2 trainerbattle 0, OPPONENT_KATELYN_1, 0, Route128_Text_1C1DB0, Route128_Text_1C1E25 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route128_EventScript_152309 + goto_if_eq Route128_EventScript_152309 msgbox Route128_Text_1C1E4A, 6 end diff --git a/data/scripts/maps/Route130.inc b/data/scripts/maps/Route130.inc index bac6728a7..69da29471 100644 --- a/data/scripts/maps/Route130.inc +++ b/data/scripts/maps/Route130.inc @@ -3,9 +3,9 @@ Route130_MapScripts:: @ 81523C2 .byte 0 Route130_MapScript1_1523C8:: @ 81523C8 - specialval RESULT, IsMirageIslandPresent + specialvar RESULT, IsMirageIslandPresent compare RESULT, 1 - jumpeq Route130_EventScript_15240C + goto_if_eq Route130_EventScript_15240C setflag 17 setflag 18 setflag 19 @@ -22,11 +22,11 @@ Route130_MapScript1_1523C8:: @ 81523C8 setflag 30 setflag 31 setflag 32 - setmapfooter 264 + setmaplayoutindex 264 end Route130_EventScript_15240C:: @ 815240C - setmapfooter 46 + setmaplayoutindex 46 end Route130_EventScript_152410:: @ 8152410 diff --git a/data/scripts/maps/Route131.inc b/data/scripts/maps/Route131.inc index 81cb7dc02..50ad4222b 100644 --- a/data/scripts/maps/Route131.inc +++ b/data/scripts/maps/Route131.inc @@ -4,11 +4,11 @@ Route131_MapScripts:: @ 815243E Route131_MapScript1_152444:: @ 8152444 checkflag 2052 - callif 1, Route131_EventScript_15244E + call_if 1, Route131_EventScript_15244E end Route131_EventScript_15244E:: @ 815244E - setmapfooter 320 + setmaplayoutindex 320 return Route131_EventScript_152452:: @ 8152452 diff --git a/data/scripts/maps/Route134.inc b/data/scripts/maps/Route134.inc index b1f77fac1..6b4d330d1 100644 --- a/data/scripts/maps/Route134.inc +++ b/data/scripts/maps/Route134.inc @@ -3,7 +3,7 @@ Route134_MapScripts:: @ 81525B5 .byte 0 Route134_MapScript1_1525BB:: @ 81525BB - warp4 Underwater_Route134, 255, 8, 6 + setdivewarp Underwater_Route134, 255, 8, 6 end Route134_EventScript_1525C4:: @ 81525C4 diff --git a/data/scripts/maps/RustboroCity.inc b/data/scripts/maps/RustboroCity.inc index c338e8b67..916eb8108 100644 --- a/data/scripts/maps/RustboroCity.inc +++ b/data/scripts/maps/RustboroCity.inc @@ -12,7 +12,7 @@ RustboroCity_EventScript_14C386:: @ 814C386 lock faceplayer checkflag 142 - jumpeq RustboroCity_EventScript_14C39B + goto_if_eq RustboroCity_EventScript_14C39B msgbox RustboroCity_Text_16689D, 4 release end @@ -37,7 +37,7 @@ RustboroCity_EventScript_14C3BA:: @ 814C3BA lock faceplayer checkflag 2055 - jumpeq RustboroCity_EventScript_14C3CF + goto_if_eq RustboroCity_EventScript_14C3CF msgbox RustboroCity_Text_16696D, 4 release end @@ -51,7 +51,7 @@ RustboroCity_EventScript_14C3D9:: @ 814C3D9 lock faceplayer checkflag 188 - jumpeq RustboroCity_EventScript_14C3EE + goto_if_eq RustboroCity_EventScript_14C3EE msgbox RustboroCity_Text_166B86, 4 release end @@ -101,8 +101,8 @@ RustboroCity_EventScript_14C449:: @ 814C449 lock faceplayer msgbox RustboroCity_Text_166D59, 4 - move 7, RustboroCity_Movement_1A083D - waitmove 0 + applymovement 7, RustboroCity_Movement_1A083D + waitmovement 0 release end @@ -110,8 +110,8 @@ RustboroCity_EventScript_14C45F:: @ 814C45F lock faceplayer msgbox RustboroCity_Text_166DB0, 4 - move 8, RustboroCity_Movement_1A083D - waitmove 0 + applymovement 8, RustboroCity_Movement_1A083D + waitmovement 0 release end @@ -124,60 +124,60 @@ RustboroCity_EventScript_14C475:: @ 814C475 RustboroCity_EventScript_14C481:: @ 814C481 lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 0 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C498:: @ 814C498 lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 1 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C4AF:: @ 814C4AF lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 2 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C4C6:: @ 814C4C6 lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 3 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C4DD:: @ 814C4DD lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 4 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C4F4:: @ 814C4F4 msgbox RustboroCity_Text_166E65, 4 - closebutton - reappear 10 - reappear 9 - move 10, RustboroCity_Movement_14C5C2 - waitmove 0 - disappear 10 - move 9, RustboroCity_Movement_14C5D3 - waitmove 0 + closemessage + addobject 10 + addobject 9 + applymovement 10, RustboroCity_Movement_14C5C2 + waitmovement 0 + removeobject 10 + applymovement 9, RustboroCity_Movement_14C5D3 + waitmovement 0 msgbox RustboroCity_Text_166E7E, 4 - closebutton - move 9, RustboroCity_Movement_14C5DB - waitmove 0 - disappear 9 - movespriteperm 9, 30, 10 + closemessage + applymovement 9, RustboroCity_Movement_14C5DB + waitmovement 0 + removeobject 9 + setobjectxyperm 9, 30, 10 clearflag 732 setflag 142 setvar 0x405a, 2 @@ -200,30 +200,30 @@ RustboroCity_EventScript_14C4F4:: @ 814C4F4 return @ 814C56F - move 9, RustboroCity_Movement_14C5E3 - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5E3 + waitmovement 0 return @ 814C57A - move 9, RustboroCity_Movement_14C5E7 - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5E7 + waitmovement 0 return @ 814C585 - move 9, RustboroCity_Movement_14C5EC - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5EC + waitmovement 0 return @ 814C590 - move 9, RustboroCity_Movement_14C5F1 - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5F1 + waitmovement 0 return @ 814C59B - move 9, RustboroCity_Movement_14C5F7 - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5F7 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return @ 814C5B0 @@ -327,105 +327,105 @@ RustboroCity_EventScript_14C5FF:: @ 814C5FF lock faceplayer checkflag 143 - jumpeq RustboroCity_EventScript_14C614 + goto_if_eq RustboroCity_EventScript_14C614 msgbox RustboroCity_Text_166F6B, 4 release end RustboroCity_EventScript_14C614:: @ 814C614 - checksound + waitse setvar 0x4001, 4 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C620:: @ 814C620 lockall setvar 0x4001, 0 - jump RustboroCity_EventScript_14C650 + goto RustboroCity_EventScript_14C650 end RustboroCity_EventScript_14C62C:: @ 814C62C lockall setvar 0x4001, 1 - jump RustboroCity_EventScript_14C650 + goto RustboroCity_EventScript_14C650 end RustboroCity_EventScript_14C638:: @ 814C638 lockall setvar 0x4001, 2 - jump RustboroCity_EventScript_14C650 + goto RustboroCity_EventScript_14C650 end RustboroCity_EventScript_14C644:: @ 814C644 lockall setvar 0x4001, 3 - jump RustboroCity_EventScript_14C650 + goto RustboroCity_EventScript_14C650 end RustboroCity_EventScript_14C650:: @ 814C650 compare 0x4001, 0 - callif 1, RustboroCity_EventScript_14C691 + call_if 1, RustboroCity_EventScript_14C691 compare 0x4001, 1 - callif 1, RustboroCity_EventScript_14C6BD + call_if 1, RustboroCity_EventScript_14C6BD compare 0x4001, 2 - callif 1, RustboroCity_EventScript_14C6E9 + call_if 1, RustboroCity_EventScript_14C6E9 compare 0x4001, 3 - callif 1, RustboroCity_EventScript_14C715 + call_if 1, RustboroCity_EventScript_14C715 setflag 159 setvar 0x405a, 3 - moveoffscreen 9 + moveobjectoffscreen 9 msgbox RustboroCity_Text_166EA5, 4 releaseall end RustboroCity_EventScript_14C691:: @ 814C691 - move 9, RustboroCity_Movement_1A0841 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0845 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0841 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0845 + waitmovement 0 return RustboroCity_EventScript_14C6BD:: @ 814C6BD - move 9, RustboroCity_Movement_1A083F - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0843 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A083F + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0843 + waitmovement 0 return RustboroCity_EventScript_14C6E9:: @ 814C6E9 - move 9, RustboroCity_Movement_1A0845 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0845 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return RustboroCity_EventScript_14C715:: @ 814C715 - move 9, RustboroCity_Movement_1A0845 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 9, RustboroCity_Movement_14C74B - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0845 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 9, RustboroCity_Movement_14C74B + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return RustboroCity_Movement_14C74B:: @ 814C74B @@ -435,48 +435,48 @@ RustboroCity_Movement_14C74B:: @ 814C74B RustboroCity_EventScript_14C74D:: @ 814C74D lockall setvar 0x4001, 0 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C759:: @ 814C759 lockall setvar 0x4001, 1 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C765:: @ 814C765 lockall setvar 0x4001, 2 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C771:: @ 814C771 lockall setvar 0x4001, 3 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C77D:: @ 814C77D compare 0x4001, 0 - callif 1, RustboroCity_EventScript_14C7FE + call_if 1, RustboroCity_EventScript_14C7FE compare 0x4001, 1 - callif 1, RustboroCity_EventScript_14C82A + call_if 1, RustboroCity_EventScript_14C82A compare 0x4001, 2 - callif 1, RustboroCity_EventScript_14C856 + call_if 1, RustboroCity_EventScript_14C856 compare 0x4001, 3 - callif 1, RustboroCity_EventScript_14C882 + call_if 1, RustboroCity_EventScript_14C882 compare 0x4001, 4 - callif 1, RustboroCity_EventScript_14C8B8 + call_if 1, RustboroCity_EventScript_14C8B8 msgbox RustboroCity_Text_166FB4, 4 giveitem ITEM_GREAT_BALL compare RESULT, 0 - callif 1, RustboroCity_EventScript_14C7F5 + call_if 1, RustboroCity_EventScript_14C7F5 msgbox RustboroCity_Text_16707F, 4 - closebutton + closemessage setflag 144 setflag 732 setvar 0x405a, 5 - pause 30 + delay 30 warp RustboroCity_DevonCorp_3F, 255, 2, 2 waitstate releaseall @@ -487,75 +487,75 @@ RustboroCity_EventScript_14C7F5:: @ 814C7F5 return RustboroCity_EventScript_14C7FE:: @ 814C7FE - move 9, RustboroCity_Movement_1A0841 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0845 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0841 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0845 + waitmovement 0 return RustboroCity_EventScript_14C82A:: @ 814C82A - move 9, RustboroCity_Movement_1A0843 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A083F - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0843 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A083F + waitmovement 0 return RustboroCity_EventScript_14C856:: @ 814C856 - move 9, RustboroCity_Movement_1A0845 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0845 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return RustboroCity_EventScript_14C882:: @ 814C882 - move 9, RustboroCity_Movement_1A0845 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 9, RustboroCity_Movement_14C74B - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0845 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 9, RustboroCity_Movement_14C74B + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return RustboroCity_EventScript_14C8B8:: @ 814C8B8 - move 9, RustboroCity_Movement_1A083F - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A083F + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 return RustboroCity_EventScript_14C8DA:: @ 814C8DA lock faceplayer checkflag 288 - jumpeq RustboroCity_EventScript_14C917 - checkgender + goto_if_eq RustboroCity_EventScript_14C917 + checkplayergender compare RESULT, 0 - jumpeq RustboroCity_EventScript_14C8FD + goto_if_eq RustboroCity_EventScript_14C8FD compare RESULT, 1 - jumpeq RustboroCity_EventScript_14C90A + goto_if_eq RustboroCity_EventScript_14C90A end RustboroCity_EventScript_14C8FD:: @ 814C8FD @@ -571,11 +571,11 @@ RustboroCity_EventScript_14C90A:: @ 814C90A end RustboroCity_EventScript_14C917:: @ 814C917 - checkgender + checkplayergender compare RESULT, 0 - jumpeq RustboroCity_EventScript_14C92F + goto_if_eq RustboroCity_EventScript_14C92F compare RESULT, 1 - jumpeq RustboroCity_EventScript_14C939 + goto_if_eq RustboroCity_EventScript_14C939 end RustboroCity_EventScript_14C92F:: @ 814C92F diff --git a/data/scripts/maps/RustboroCity_CuttersHouse.inc b/data/scripts/maps/RustboroCity_CuttersHouse.inc index d400de1ef..3e98746f3 100644 --- a/data/scripts/maps/RustboroCity_CuttersHouse.inc +++ b/data/scripts/maps/RustboroCity_CuttersHouse.inc @@ -5,7 +5,7 @@ RustboroCity_CuttersHouse_EventScript_157D27:: @ 8157D27 lock faceplayer checkflag 137 - jumpeq RustboroCity_CuttersHouse_EventScript_157D53 + goto_if_eq RustboroCity_CuttersHouse_EventScript_157D53 msgbox RustboroCity_CuttersHouse_Text_18509C, 4 giveitem ITEM_HM01 setflag 137 diff --git a/data/scripts/maps/RustboroCity_DevonCorp_1F.inc b/data/scripts/maps/RustboroCity_DevonCorp_1F.inc index 97a59257f..48d8aaf9f 100644 --- a/data/scripts/maps/RustboroCity_DevonCorp_1F.inc +++ b/data/scripts/maps/RustboroCity_DevonCorp_1F.inc @@ -4,21 +4,21 @@ RustboroCity_DevonCorp_1F_MapScripts:: @ 8157406 RustboroCity_DevonCorp_1F_MapScript1_15740C:: @ 815740C checkflag 144 - callif 0, RustboroCity_DevonCorp_1F_EventScript_157416 + call_if 0, RustboroCity_DevonCorp_1F_EventScript_157416 end RustboroCity_DevonCorp_1F_EventScript_157416:: @ 8157416 - movespriteperm 2, 14, 2 - spritebehave 2, 8 + setobjectxyperm 2, 14, 2 + setobjectmovementtype 2, 8 return RustboroCity_DevonCorp_1F_EventScript_157422:: @ 8157422 lock faceplayer checkflag 144 - jumpeq RustboroCity_DevonCorp_1F_EventScript_15744A + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_15744A checkflag 142 - jumpeq RustboroCity_DevonCorp_1F_EventScript_157440 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157440 msgbox RustboroCity_DevonCorp_1F_Text_1829A4, 4 release end @@ -37,11 +37,11 @@ RustboroCity_DevonCorp_1F_EventScript_157454:: @ 8157454 lock faceplayer checkflag 144 - jumpeq RustboroCity_DevonCorp_1F_EventScript_15747B + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_15747B checkflag 143 - jumpeq RustboroCity_DevonCorp_1F_EventScript_157485 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157485 checkflag 142 - jumpeq RustboroCity_DevonCorp_1F_EventScript_157485 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157485 msgbox RustboroCity_DevonCorp_1F_Text_182AF0, 4 release end @@ -60,11 +60,11 @@ RustboroCity_DevonCorp_1F_EventScript_15748F:: @ 815748F lock faceplayer checkflag 144 - jumpeq RustboroCity_DevonCorp_1F_EventScript_1574B6 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574B6 checkflag 143 - jumpeq RustboroCity_DevonCorp_1F_EventScript_1574C0 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574C0 checkflag 142 - jumpeq RustboroCity_DevonCorp_1F_EventScript_1574C0 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574C0 msgbox RustboroCity_DevonCorp_1F_Text_1828EE, 4 release end diff --git a/data/scripts/maps/RustboroCity_DevonCorp_2F.inc b/data/scripts/maps/RustboroCity_DevonCorp_2F.inc index e35015b3e..f40c1b87b 100644 --- a/data/scripts/maps/RustboroCity_DevonCorp_2F.inc +++ b/data/scripts/maps/RustboroCity_DevonCorp_2F.inc @@ -4,7 +4,7 @@ RustboroCity_DevonCorp_2F_MapScripts:: @ 81574CA RustboroCity_DevonCorp_2F_MapScript1_1574D0:: @ 81574D0 compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC end RustboroCity_DevonCorp_2F_EventScript_1574DC:: @ 81574DC @@ -15,7 +15,7 @@ RustboroCity_DevonCorp_2F_EventScript_1574E2:: @ 81574E2 lock faceplayer compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC msgbox RustboroCity_DevonCorp_2F_Text_182B81, 4 release end @@ -24,9 +24,9 @@ RustboroCity_DevonCorp_2F_EventScript_1574F9:: @ 81574F9 lock faceplayer compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC checkflag 287 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157519 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157519 msgbox RustboroCity_DevonCorp_2F_Text_182BD8, 4 release end @@ -40,9 +40,9 @@ RustboroCity_DevonCorp_2F_EventScript_157523:: @ 8157523 lock faceplayer compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC checkflag 188 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157543 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157543 msgbox RustboroCity_DevonCorp_2F_Text_182D2A, 4 release end @@ -56,7 +56,7 @@ RustboroCity_DevonCorp_2F_EventScript_15754D:: @ 815754D lock faceplayer compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC msgbox RustboroCity_DevonCorp_2F_Text_182E6B, 4 release end @@ -65,30 +65,30 @@ RustboroCity_DevonCorp_2F_EventScript_157564:: @ 8157564 lock faceplayer compare 0x40c4, 2 - jumpeq RustboroCity_DevonCorp_2F_EventScript_15764A + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_15764A compare 0x40c4, 1 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157640 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157640 msgbox RustboroCity_DevonCorp_2F_Text_182ED5, 4 checkitem ITEM_ROOT_FOSSIL, 1 compare RESULT, 1 - jumpeq RustboroCity_DevonCorp_2F_EventScript_1575A6 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1575A6 checkitem ITEM_CLAW_FOSSIL, 1 compare RESULT, 1 - jumpeq RustboroCity_DevonCorp_2F_EventScript_1575EE + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1575EE release end RustboroCity_DevonCorp_2F_EventScript_1575A6:: @ 81575A6 - closebutton - playsfx 21 - move 5, RustboroCity_DevonCorp_2F_Movement_1A0833 - waitmove 0 - move 5, RustboroCity_DevonCorp_2F_Movement_1A0835 - waitmove 0 + closemessage + playse 21 + applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0833 + waitmovement 0 + applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0835 + waitmovement 0 msgbox RustboroCity_DevonCorp_2F_Text_182F35, 5 compare RESULT, 0 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157636 - bufferitem 0, ITEM_ROOT_FOSSIL + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157636 + getitemname 0, ITEM_ROOT_FOSSIL msgbox RustboroCity_DevonCorp_2F_Text_183023, 4 removeitem ITEM_ROOT_FOSSIL, 1 setvar 0x40c4, 1 @@ -97,16 +97,16 @@ RustboroCity_DevonCorp_2F_EventScript_1575A6:: @ 81575A6 end RustboroCity_DevonCorp_2F_EventScript_1575EE:: @ 81575EE - closebutton - playsfx 21 - move 5, RustboroCity_DevonCorp_2F_Movement_1A0833 - waitmove 0 - move 5, RustboroCity_DevonCorp_2F_Movement_1A0835 - waitmove 0 + closemessage + playse 21 + applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0833 + waitmovement 0 + applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0835 + waitmovement 0 msgbox RustboroCity_DevonCorp_2F_Text_182F35, 5 compare RESULT, 0 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157636 - bufferitem 0, ITEM_CLAW_FOSSIL + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157636 + getitemname 0, ITEM_CLAW_FOSSIL msgbox RustboroCity_DevonCorp_2F_Text_183023, 4 removeitem ITEM_CLAW_FOSSIL, 1 setvar 0x40c4, 1 @@ -126,48 +126,48 @@ RustboroCity_DevonCorp_2F_EventScript_157640:: @ 8157640 RustboroCity_DevonCorp_2F_EventScript_15764A:: @ 815764A compare 0x40c5, 1 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157661 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157661 compare 0x40c5, 2 - jumpeq RustboroCity_DevonCorp_2F_EventScript_1576B4 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1576B4 end RustboroCity_DevonCorp_2F_EventScript_157661:: @ 8157661 - bufferpoke 1, SPECIES_LILEEP + getspeciesname 1, SPECIES_LILEEP msgbox RustboroCity_DevonCorp_2F_Text_183124, 4 countpokemon compare RESULT, 6 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157707 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157707 copyvar 0x8004, RESULT setvar 0x40c4, 0 setflag 267 - fanfare 370 + playfanfare 370 message RustboroCity_DevonCorp_2F_Text_18319E waitfanfare - waittext - givepokemon SPECIES_LILEEP, 20, ITEM_NONE, 0x0, 0x0, 0 + waitmessage + givepoke SPECIES_LILEEP, 20, ITEM_NONE, 0x0, 0x0, 0 msgbox RustboroCity_DevonCorp_2F_Text_1A1102, 5 compare RESULT, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1A0678 + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1A0678 release end RustboroCity_DevonCorp_2F_EventScript_1576B4:: @ 81576B4 - bufferpoke 1, SPECIES_ANORITH + getspeciesname 1, SPECIES_ANORITH msgbox RustboroCity_DevonCorp_2F_Text_183124, 4 countpokemon compare RESULT, 6 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157707 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157707 copyvar 0x8004, RESULT setvar 0x40c4, 0 setflag 267 - fanfare 370 + playfanfare 370 message RustboroCity_DevonCorp_2F_Text_18319E waitfanfare - waittext - givepokemon SPECIES_ANORITH, 20, ITEM_NONE, 0x0, 0x0, 0 + waitmessage + givepoke SPECIES_ANORITH, 20, ITEM_NONE, 0x0, 0x0, 0 msgbox RustboroCity_DevonCorp_2F_Text_1A1102, 5 compare RESULT, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1A0678 + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1A0678 release end diff --git a/data/scripts/maps/RustboroCity_DevonCorp_3F.inc b/data/scripts/maps/RustboroCity_DevonCorp_3F.inc index 2b749c873..6f0152e60 100644 --- a/data/scripts/maps/RustboroCity_DevonCorp_3F.inc +++ b/data/scripts/maps/RustboroCity_DevonCorp_3F.inc @@ -6,12 +6,12 @@ RustboroCity_DevonCorp_3F_MapScripts:: @ 8157711 RustboroCity_DevonCorp_3F_MapScript1_157721:: @ 8157721 compare 0x408f, 0 - callif 1, RustboroCity_DevonCorp_3F_EventScript_15772D + call_if 1, RustboroCity_DevonCorp_3F_EventScript_15772D end RustboroCity_DevonCorp_3F_EventScript_15772D:: @ 815772D - movespriteperm 2, 3, 2 - spritebehave 2, 9 + setobjectxyperm 2, 3, 2 + setobjectmovementtype 2, 9 return RustboroCity_DevonCorp_3F_MapScript2_157739:: @ 8157739 @@ -19,7 +19,7 @@ RustboroCity_DevonCorp_3F_MapScript2_157739:: @ 8157739 .2byte 0 RustboroCity_DevonCorp_3F_EventScript_157743:: @ 8157743 - spriteface 255, 4 + turnobject 255, 4 end RustboroCity_DevonCorp_3F_MapScript2_157748:: @ 8157748 @@ -29,31 +29,31 @@ RustboroCity_DevonCorp_3F_MapScript2_157748:: @ 8157748 RustboroCity_DevonCorp_3F_EventScript_157752:: @ 8157752 lockall msgbox RustboroCity_DevonCorp_3F_Text_18374C, 4 - closebutton - move 2, RustboroCity_DevonCorp_3F_Movement_157815 - waitmove 0 - pause 80 - move 2, RustboroCity_DevonCorp_3F_Movement_15781E - waitmove 0 + closemessage + applymovement 2, RustboroCity_DevonCorp_3F_Movement_157815 + waitmovement 0 + delay 80 + applymovement 2, RustboroCity_DevonCorp_3F_Movement_15781E + waitmovement 0 msgbox RustboroCity_DevonCorp_3F_Text_183903, 4 - closebutton - playmusic 420, 0 - move 2, RustboroCity_DevonCorp_3F_Movement_157803 - move 255, RustboroCity_DevonCorp_3F_Movement_157827 - waitmove 0 + closemessage + playbgm 420, 0 + applymovement 2, RustboroCity_DevonCorp_3F_Movement_157803 + applymovement 255, RustboroCity_DevonCorp_3F_Movement_157827 + waitmovement 0 msgbox RustboroCity_DevonCorp_3F_Text_18394A, 4 - closebutton - fadedefault - move 2, RustboroCity_DevonCorp_3F_Movement_157812 - move 255, RustboroCity_DevonCorp_3F_Movement_157835 - waitmove 0 + closemessage + fadedefaultbgm + applymovement 2, RustboroCity_DevonCorp_3F_Movement_157812 + applymovement 255, RustboroCity_DevonCorp_3F_Movement_157835 + waitmovement 0 msgbox RustboroCity_DevonCorp_3F_Text_18320B, 4 giveitem ITEM_LETTER msgbox RustboroCity_DevonCorp_3F_Text_18337E, 4 - fanfare 370 + playfanfare 370 message RustboroCity_DevonCorp_3F_Text_183422 waitfanfare - waittext + waitmessage setflag 2050 setflag 188 msgbox RustboroCity_DevonCorp_3F_Text_183439, 4 @@ -147,13 +147,13 @@ RustboroCity_DevonCorp_3F_EventScript_15783B:: @ 815783B lock faceplayer checkflag 272 - jumpeq RustboroCity_DevonCorp_3F_EventScript_15789B + goto_if_eq RustboroCity_DevonCorp_3F_EventScript_15789B checkflag 189 - jumpeq RustboroCity_DevonCorp_3F_EventScript_157864 + goto_if_eq RustboroCity_DevonCorp_3F_EventScript_157864 msgbox RustboroCity_DevonCorp_3F_Text_18351E, 4 - closebutton - move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D + waitmovement 0 release end @@ -161,20 +161,20 @@ RustboroCity_DevonCorp_3F_EventScript_157864:: @ 8157864 msgbox RustboroCity_DevonCorp_3F_Text_18353E, 4 giveitem ITEM_EXP_SHARE compare RESULT, 0 - jumpeq RustboroCity_DevonCorp_3F_EventScript_1A029B + goto_if_eq RustboroCity_DevonCorp_3F_EventScript_1A029B setflag 272 msgbox RustboroCity_DevonCorp_3F_Text_1835B3, 4 - closebutton - move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D + waitmovement 0 release end RustboroCity_DevonCorp_3F_EventScript_15789B:: @ 815789B msgbox RustboroCity_DevonCorp_3F_Text_18368D, 4 - closebutton - move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D + waitmovement 0 release end @@ -182,7 +182,7 @@ RustboroCity_DevonCorp_3F_EventScript_1578B0:: @ 81578B0 lock faceplayer checkflag 256 - jumpeq RustboroCity_DevonCorp_3F_EventScript_1578C5 + goto_if_eq RustboroCity_DevonCorp_3F_EventScript_1578C5 msgbox RustboroCity_DevonCorp_3F_Text_18395C, 4 release end diff --git a/data/scripts/maps/RustboroCity_Flat2_1F.inc b/data/scripts/maps/RustboroCity_Flat2_1F.inc index 5aa91d5d1..b6b8b41b1 100644 --- a/data/scripts/maps/RustboroCity_Flat2_1F.inc +++ b/data/scripts/maps/RustboroCity_Flat2_1F.inc @@ -8,8 +8,8 @@ RustboroCity_Flat2_1F_EventScript_157D7A:: @ 8157D7A RustboroCity_Flat2_1F_EventScript_157D83:: @ 8157D83 lock faceplayer - checksound - pokecry SPECIES_SKITTY, 0 + waitse + playpokecry SPECIES_SKITTY, 0 msgbox RustboroCity_Flat2_1F_Text_185410, 4 waitpokecry release diff --git a/data/scripts/maps/RustboroCity_Flat2_2F.inc b/data/scripts/maps/RustboroCity_Flat2_2F.inc index d6e0c92b3..0dfec5cfa 100644 --- a/data/scripts/maps/RustboroCity_Flat2_2F.inc +++ b/data/scripts/maps/RustboroCity_Flat2_2F.inc @@ -9,11 +9,11 @@ RustboroCity_Flat2_2F_EventScript_157DA0:: @ 8157DA0 lock faceplayer checkflag 213 - jumpeq RustboroCity_Flat2_2F_EventScript_157DCF + goto_if_eq RustboroCity_Flat2_2F_EventScript_157DCF msgbox RustboroCity_Flat2_2F_Text_185461, 4 giveitem ITEM_PREMIER_BALL compare RESULT, 0 - jumpeq RustboroCity_Flat2_2F_EventScript_1A029B + goto_if_eq RustboroCity_Flat2_2F_EventScript_1A029B setflag 213 release end diff --git a/data/scripts/maps/RustboroCity_Gym.inc b/data/scripts/maps/RustboroCity_Gym.inc index e4f91f82e..b1bbfb8d8 100644 --- a/data/scripts/maps/RustboroCity_Gym.inc +++ b/data/scripts/maps/RustboroCity_Gym.inc @@ -4,14 +4,14 @@ RustboroCity_Gym_MapScripts:: @ 81578D8 RustboroCity_Gym_EventScript_1578D9:: @ 81578D9 trainerbattle 1, OPPONENT_ROXANNE, 0, RustboroCity_Gym_Text_183EE5, RustboroCity_Gym_Text_183FC4, RustboroCity_Gym_EventScript_1578FE checkflag 165 - jumpif 0, RustboroCity_Gym_EventScript_15793C + goto_if 0, RustboroCity_Gym_EventScript_15793C msgbox RustboroCity_Gym_Text_184252, 4 release end RustboroCity_Gym_EventScript_1578FE:: @ 81578FE message RustboroCity_Gym_Text_1840AB - waittext + waitmessage call RustboroCity_Gym_EventScript_1A02C5 msgbox RustboroCity_Gym_Text_1840D5, 4 setflag 1201 @@ -21,14 +21,14 @@ RustboroCity_Gym_EventScript_1578FE:: @ 81578FE setvar 0x8008, 1 call RustboroCity_Gym_EventScript_1A01C0 compare 0x4085, 6 - callif 1, RustboroCity_Gym_EventScript_1A00FB - jump RustboroCity_Gym_EventScript_15793C + call_if 1, RustboroCity_Gym_EventScript_1A00FB + goto RustboroCity_Gym_EventScript_15793C end RustboroCity_Gym_EventScript_15793C:: @ 815793C giveitem ITEM_TM39 compare RESULT, 0 - jumpeq RustboroCity_Gym_EventScript_1A029B + goto_if_eq RustboroCity_Gym_EventScript_1A029B setflag 165 msgbox RustboroCity_Gym_Text_184170, 4 release @@ -48,7 +48,7 @@ RustboroCity_Gym_EventScript_15798E:: @ 815798E lock faceplayer checkflag 1201 - jumpeq RustboroCity_Gym_EventScript_1579A3 + goto_if_eq RustboroCity_Gym_EventScript_1579A3 msgbox RustboroCity_Gym_Text_183A4B, 4 release end @@ -61,15 +61,15 @@ RustboroCity_Gym_EventScript_1579A3:: @ 81579A3 RustboroCity_Gym_EventScript_1579AD:: @ 81579AD lockall checkflag 2055 - jumpeq RustboroCity_Gym_EventScript_1579CD - jump RustboroCity_Gym_EventScript_1579D7 + goto_if_eq RustboroCity_Gym_EventScript_1579CD + goto RustboroCity_Gym_EventScript_1579D7 end RustboroCity_Gym_EventScript_1579BD:: @ 81579BD lockall checkflag 2055 - jumpeq RustboroCity_Gym_EventScript_1579CD - jump RustboroCity_Gym_EventScript_1579D7 + goto_if_eq RustboroCity_Gym_EventScript_1579CD + goto RustboroCity_Gym_EventScript_1579D7 end RustboroCity_Gym_EventScript_1579CD:: @ 81579CD diff --git a/data/scripts/maps/RustboroCity_House1.inc b/data/scripts/maps/RustboroCity_House1.inc index 402fff1d3..b983617e0 100644 --- a/data/scripts/maps/RustboroCity_House1.inc +++ b/data/scripts/maps/RustboroCity_House1.inc @@ -5,24 +5,24 @@ RustboroCity_House1_EventScript_157C7D:: @ 8157C7D lock faceplayer checkflag 153 - jumpeq RustboroCity_House1_EventScript_157D13 + goto_if_eq RustboroCity_House1_EventScript_157D13 setvar 0x8008, 0 copyvar 0x8004, 0x8008 - specialval RESULT, sub_804D89C + specialvar RESULT, sub_804D89C copyvar 0x8009, RESULT msgbox RustboroCity_House1_Text_184EBA, 5 compare RESULT, 0 - jumpeq RustboroCity_House1_EventScript_157CFB + goto_if_eq RustboroCity_House1_EventScript_157CFB special sub_80F9A0C waitstate copyvar 0x800a, 0x8004 compare 0x8004, 255 - jumpeq RustboroCity_House1_EventScript_157CFB + goto_if_eq RustboroCity_House1_EventScript_157CFB copyvar 0x8005, 0x800a - specialval RESULT, sub_804DB2C + specialvar RESULT, sub_804DB2C copyvar 0x800b, RESULT - comparevars RESULT, 0x8009 - jumpif 5, RustboroCity_House1_EventScript_157D05 + compare RESULT, 0x8009 + goto_if 5, RustboroCity_House1_EventScript_157D05 copyvar 0x8004, 0x8008 copyvar 0x8005, 0x800a special sub_804DB68 @@ -39,7 +39,7 @@ RustboroCity_House1_EventScript_157CFB:: @ 8157CFB end RustboroCity_House1_EventScript_157D05:: @ 8157D05 - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox RustboroCity_House1_Text_184F8F, 4 release end diff --git a/data/scripts/maps/RustboroCity_House3.inc b/data/scripts/maps/RustboroCity_House3.inc index 0e81ed158..a5088175e 100644 --- a/data/scripts/maps/RustboroCity_House3.inc +++ b/data/scripts/maps/RustboroCity_House3.inc @@ -12,8 +12,8 @@ RustboroCity_House3_EventScript_157DF6:: @ 8157DF6 RustboroCity_House3_EventScript_157DFF:: @ 8157DFF lock faceplayer - checksound - pokecry SPECIES_PIKACHU, 0 + waitse + playpokecry SPECIES_PIKACHU, 0 msgbox RustboroCity_House3_Text_18567D, 4 waitpokecry release diff --git a/data/scripts/maps/RustboroCity_Mart.inc b/data/scripts/maps/RustboroCity_Mart.inc index 6b4ff3a77..cb722a6af 100644 --- a/data/scripts/maps/RustboroCity_Mart.inc +++ b/data/scripts/maps/RustboroCity_Mart.inc @@ -5,11 +5,11 @@ RustboroCity_Mart_EventScript_157BD4:: @ 8157BD4 lock faceplayer message RustboroCity_Mart_Text_1A0BE4 - waittext + waitmessage checkflag 287 - jumpif 0, RustboroCity_Mart_EventScript_157BEF + goto_if 0, RustboroCity_Mart_EventScript_157BEF checkflag 287 - jumpeq RustboroCity_Mart_EventScript_157C18 + goto_if_eq RustboroCity_Mart_EventScript_157C18 end RustboroCity_Mart_EventScript_157BEF:: @ 8157BEF diff --git a/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc b/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc index 896e8e220..53b481832 100644 --- a/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ RustboroCity_PokemonCenter_1F_MapScript1_157B7F:: @ 8157B7F RustboroCity_PokemonCenter_1F_EventScript_157B88:: @ 8157B88 setvar 0x800b, 1 call RustboroCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/RustboroCity_PokemonSchool.inc b/data/scripts/maps/RustboroCity_PokemonSchool.inc index 8b037a3e7..73b364f5e 100644 --- a/data/scripts/maps/RustboroCity_PokemonSchool.inc +++ b/data/scripts/maps/RustboroCity_PokemonSchool.inc @@ -4,13 +4,13 @@ RustboroCity_PokemonSchool_MapScripts:: @ 81579E1 RustboroCity_PokemonSchool_EventScript_1579E2:: @ 81579E2 lockall msgbox RustboroCity_PokemonSchool_Text_184321, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_1579F1:: @ 81579F1 message RustboroCity_PokemonSchool_Text_184368 - waittext - multichoicerow 8, 1, 13, 3, 0 + waitmessage + multichoicegrid 8, 1, 13, 3, 0 switch RESULT case 0, RustboroCity_PokemonSchool_EventScript_157A50 case 1, RustboroCity_PokemonSchool_EventScript_157A5E @@ -23,27 +23,27 @@ RustboroCity_PokemonSchool_EventScript_1579F1:: @ 81579F1 RustboroCity_PokemonSchool_EventScript_157A50:: @ 8157A50 msgbox RustboroCity_PokemonSchool_Text_184389, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A5E:: @ 8157A5E msgbox RustboroCity_PokemonSchool_Text_184447, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A6C:: @ 8157A6C msgbox RustboroCity_PokemonSchool_Text_1844EC, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A7A:: @ 8157A7A msgbox RustboroCity_PokemonSchool_Text_1845A5, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A88:: @ 8157A88 msgbox RustboroCity_PokemonSchool_Text_184627, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A96:: @ 8157A96 @@ -78,37 +78,37 @@ RustboroCity_PokemonSchool_EventScript_157ACE:: @ 8157ACE lock faceplayer checkflag 275 - jumpeq RustboroCity_PokemonSchool_EventScript_157B34 + goto_if_eq RustboroCity_PokemonSchool_EventScript_157B34 compare FACING, 4 - callif 1, RustboroCity_PokemonSchool_EventScript_157B1E + call_if 1, RustboroCity_PokemonSchool_EventScript_157B1E compare FACING, 3 - callif 1, RustboroCity_PokemonSchool_EventScript_157B29 + call_if 1, RustboroCity_PokemonSchool_EventScript_157B29 msgbox RustboroCity_PokemonSchool_Text_1846A2, 4 giveitem ITEM_QUICK_CLAW compare RESULT, 0 - jumpeq RustboroCity_PokemonSchool_EventScript_1A029B - closebutton - move LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845 - waitmove 0 + goto_if_eq RustboroCity_PokemonSchool_EventScript_1A029B + closemessage + applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845 + waitmovement 0 setflag 275 release end RustboroCity_PokemonSchool_EventScript_157B1E:: @ 8157B1E - move LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B60 - waitmove 0 + applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B60 + waitmovement 0 return RustboroCity_PokemonSchool_EventScript_157B29:: @ 8157B29 - move LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B49 - waitmove 0 + applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B49 + waitmovement 0 return RustboroCity_PokemonSchool_EventScript_157B34:: @ 8157B34 msgbox RustboroCity_PokemonSchool_Text_184737, 4 - closebutton - move LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845 - waitmove 0 + closemessage + applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845 + waitmovement 0 release end diff --git a/data/scripts/maps/RusturfTunnel.inc b/data/scripts/maps/RusturfTunnel.inc index 129bef7c9..28f6f0ad4 100644 --- a/data/scripts/maps/RusturfTunnel.inc +++ b/data/scripts/maps/RusturfTunnel.inc @@ -11,21 +11,21 @@ RusturfTunnel_MapScript2_15C750:: @ 815C750 RusturfTunnel_MapScript1_15C762:: @ 815C762 call RusturfTunnel_EventScript_1A0196 compare 0x409a, 2 - callif 1, RusturfTunnel_EventScript_15C773 + call_if 1, RusturfTunnel_EventScript_15C773 end RusturfTunnel_EventScript_15C773:: @ 815C773 - movespriteperm 7, 13, 4 - movespriteperm 6, 13, 5 + setobjectxyperm 7, 13, 4 + setobjectxyperm 6, 13, 5 return RusturfTunnel_EventScript_15C782:: @ 815C782 lock faceplayer msgbox RusturfTunnel_Text_194766, 4 - closebutton - move LAST_TALKED, RusturfTunnel_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D + waitmovement 0 release end @@ -33,126 +33,126 @@ RusturfTunnel_EventScript_15C799:: @ 815C799 lock faceplayer checkflag 1 - jumpeq RusturfTunnel_EventScript_15C7BC + goto_if_eq RusturfTunnel_EventScript_15C7BC setflag 1 msgbox RusturfTunnel_Text_1944C5, 4 - closebutton - move LAST_TALKED, RusturfTunnel_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D + waitmovement 0 release end RusturfTunnel_EventScript_15C7BC:: @ 815C7BC msgbox RusturfTunnel_Text_1945B2, 4 - closebutton - move LAST_TALKED, RusturfTunnel_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D + waitmovement 0 release end RusturfTunnel_EventScript_15C7D1:: @ 815C7D1 lockall compare 0x4001, 1 - callif 1, RusturfTunnel_EventScript_15C8CA + call_if 1, RusturfTunnel_EventScript_15C8CA compare 0x4001, 2 - callif 1, RusturfTunnel_EventScript_15C8DF + call_if 1, RusturfTunnel_EventScript_15C8DF compare 0x4001, 3 - callif 1, RusturfTunnel_EventScript_15C8EA + call_if 1, RusturfTunnel_EventScript_15C8EA call RusturfTunnel_EventScript_15C92D msgbox RusturfTunnel_Text_19461D, 4 compare 0x4001, 2 - callif 1, RusturfTunnel_EventScript_15C8EB + call_if 1, RusturfTunnel_EventScript_15C8EB compare 0x4001, 3 - callif 1, RusturfTunnel_EventScript_15C8EB + call_if 1, RusturfTunnel_EventScript_15C8EB giveitem ITEM_HM04 setflag 106 msgbox RusturfTunnel_Text_194693, 4 - closebutton + closemessage compare 0x4001, 1 - callif 1, RusturfTunnel_EventScript_15C880 + call_if 1, RusturfTunnel_EventScript_15C880 compare 0x4001, 2 - callif 1, RusturfTunnel_EventScript_15C892 + call_if 1, RusturfTunnel_EventScript_15C892 compare 0x4001, 3 - callif 1, RusturfTunnel_EventScript_15C8AE + call_if 1, RusturfTunnel_EventScript_15C8AE msgbox RusturfTunnel_Text_194706, 4 - closebutton + closemessage compare 0x4001, 1 - callif 1, RusturfTunnel_EventScript_15C8F7 + call_if 1, RusturfTunnel_EventScript_15C8F7 compare 0x4001, 2 - callif 1, RusturfTunnel_EventScript_15C909 + call_if 1, RusturfTunnel_EventScript_15C909 compare 0x4001, 3 - callif 1, RusturfTunnel_EventScript_15C91B + call_if 1, RusturfTunnel_EventScript_15C91B call RusturfTunnel_EventScript_1A0442 releaseall end RusturfTunnel_EventScript_15C880:: @ 815C880 - move 255, RusturfTunnel_Movement_15C96A - move 1, RusturfTunnel_Movement_15C98F - waitmove 0 + applymovement 255, RusturfTunnel_Movement_15C96A + applymovement 1, RusturfTunnel_Movement_15C98F + waitmovement 0 return RusturfTunnel_EventScript_15C892:: @ 815C892 - move 255, RusturfTunnel_Movement_15C96D - move 1, RusturfTunnel_Movement_15C994 - waitmove 0 - move 10, RusturfTunnel_Movement_1A0845 - waitmove 0 + applymovement 255, RusturfTunnel_Movement_15C96D + applymovement 1, RusturfTunnel_Movement_15C994 + waitmovement 0 + applymovement 10, RusturfTunnel_Movement_1A0845 + waitmovement 0 return RusturfTunnel_EventScript_15C8AE:: @ 815C8AE - move 255, RusturfTunnel_Movement_15C96D - move 1, RusturfTunnel_Movement_15C994 - waitmove 0 - move 10, RusturfTunnel_Movement_1A0845 - waitmove 0 + applymovement 255, RusturfTunnel_Movement_15C96D + applymovement 1, RusturfTunnel_Movement_15C994 + waitmovement 0 + applymovement 10, RusturfTunnel_Movement_1A0845 + waitmovement 0 return RusturfTunnel_EventScript_15C8CA:: @ 815C8CA - move 1, RusturfTunnel_Movement_1A0841 - waitmove 0 - move 255, RusturfTunnel_Movement_1A0845 - waitmove 0 + applymovement 1, RusturfTunnel_Movement_1A0841 + waitmovement 0 + applymovement 255, RusturfTunnel_Movement_1A0845 + waitmovement 0 return RusturfTunnel_EventScript_15C8DF:: @ 815C8DF - move 1, RusturfTunnel_Movement_15C970 - waitmove 0 + applymovement 1, RusturfTunnel_Movement_15C970 + waitmovement 0 return RusturfTunnel_EventScript_15C8EA:: @ 815C8EA return RusturfTunnel_EventScript_15C8EB:: @ 815C8EB - closebutton - move 1, RusturfTunnel_Movement_15C98D - waitmove 0 + closemessage + applymovement 1, RusturfTunnel_Movement_15C98D + waitmovement 0 return RusturfTunnel_EventScript_15C8F7:: @ 815C8F7 - move 10, RusturfTunnel_Movement_15C945 - move 1, RusturfTunnel_Movement_15C973 - waitmove 0 + applymovement 10, RusturfTunnel_Movement_15C945 + applymovement 1, RusturfTunnel_Movement_15C973 + waitmovement 0 return RusturfTunnel_EventScript_15C909:: @ 815C909 - move 10, RusturfTunnel_Movement_15C951 - move 1, RusturfTunnel_Movement_15C980 - waitmove 0 + applymovement 10, RusturfTunnel_Movement_15C951 + applymovement 1, RusturfTunnel_Movement_15C980 + waitmovement 0 return RusturfTunnel_EventScript_15C91B:: @ 815C91B - move 10, RusturfTunnel_Movement_15C951 - move 1, RusturfTunnel_Movement_15C980 - waitmove 0 + applymovement 10, RusturfTunnel_Movement_15C951 + applymovement 1, RusturfTunnel_Movement_15C980 + waitmovement 0 return RusturfTunnel_EventScript_15C92D:: @ 815C92D - playsfx 21 - move 1, RusturfTunnel_Movement_1A0833 - waitmove 0 - move 1, RusturfTunnel_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 1, RusturfTunnel_Movement_1A0833 + waitmovement 0 + applymovement 1, RusturfTunnel_Movement_1A0835 + waitmovement 0 return RusturfTunnel_Movement_15C945:: @ 815C945 @@ -280,12 +280,12 @@ RusturfTunnel_EventScript_15C9A5:: @ 815C9A5 RusturfTunnel_EventScript_15C9AB:: @ 815C9AB lockall msgbox RusturfTunnel_Text_194159, 4 - closebutton - move 6, RusturfTunnel_Movement_15C9D3 - move 7, RusturfTunnel_Movement_15C9D3 - waitmove 0 - moveoffscreen 6 - moveoffscreen 7 + closemessage + applymovement 6, RusturfTunnel_Movement_15C9D3 + applymovement 7, RusturfTunnel_Movement_15C9D3 + waitmovement 0 + moveobjectoffscreen 6 + moveobjectoffscreen 7 setvar 0x409a, 3 releaseall end @@ -299,8 +299,8 @@ RusturfTunnel_Movement_15C9D3:: @ 815C9D3 RusturfTunnel_EventScript_15C9D7:: @ 815C9D7 lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox RusturfTunnel_Text_194188, 4 waitpokecry release @@ -309,38 +309,38 @@ RusturfTunnel_EventScript_15C9D7:: @ 815C9D7 RusturfTunnel_EventScript_15C9EA:: @ 815C9EA lock faceplayer - playmusic BGM_EVIL_TEAM, 0 + playbgm BGM_EVIL_TEAM, 0 msgbox RusturfTunnel_Text_19419B, 4 trainerbattle 3, OPPONENT_RUSTURF_TUNNEL_GRUNT, 0, RusturfTunnel_Text_194243 msgbox RusturfTunnel_Text_194274, 4 giveitem ITEM_DEVON_GOODS - closebutton - move 255, RusturfTunnel_Movement_15CA99 - move 6, RusturfTunnel_Movement_15CAA2 - waitmove 0 - disappear 6 - pause 50 - reappear 5 - move 5, RusturfTunnel_Movement_15CAAC - waitmove 0 - move 255, RusturfTunnel_Movement_15CA9F - move 5, RusturfTunnel_Movement_15CAC0 - waitmove 0 + closemessage + applymovement 255, RusturfTunnel_Movement_15CA99 + applymovement 6, RusturfTunnel_Movement_15CAA2 + waitmovement 0 + removeobject 6 + delay 50 + addobject 5 + applymovement 5, RusturfTunnel_Movement_15CAAC + waitmovement 0 + applymovement 255, RusturfTunnel_Movement_15CA9F + applymovement 5, RusturfTunnel_Movement_15CAC0 + waitmovement 0 msgbox RusturfTunnel_Text_19432A, 4 - move 5, RusturfTunnel_Movement_1A0839 - waitmove 0 + applymovement 5, RusturfTunnel_Movement_1A0839 + waitmovement 0 message RusturfTunnel_Text_19434F - waittext - checksound - pokecry SPECIES_WINGULL, 0 + waitmessage + waitse + playpokecry SPECIES_WINGULL, 0 waitbutton waitpokecry - closebutton - move 5, RusturfTunnel_Movement_15CAB4 - move 7, RusturfTunnel_Movement_15CAC3 - waitmove 0 - disappear 5 - disappear 7 + closemessage + applymovement 5, RusturfTunnel_Movement_15CAB4 + applymovement 7, RusturfTunnel_Movement_15CAC3 + waitmovement 0 + removeobject 5 + removeobject 7 clearflag 142 setflag 143 setvar 0x405a, 4 diff --git a/data/scripts/maps/SSTidalCorridor.inc b/data/scripts/maps/SSTidalCorridor.inc index 58cfbec47..2c55a9443 100644 --- a/data/scripts/maps/SSTidalCorridor.inc +++ b/data/scripts/maps/SSTidalCorridor.inc @@ -13,7 +13,7 @@ SSTidalCorridor_EventScript_15FCBC:: @ 815FCBC special SetSSTidalFlag setvar 0x40b4, 2 lockall - playsfx 73 + playse 73 msgbox SSTidalCorridor_Text_199007, 4 releaseall end @@ -21,7 +21,7 @@ SSTidalCorridor_EventScript_15FCBC:: @ 815FCBC SSTidalCorridor_EventScript_15FCD2:: @ 815FCD2 setvar 0x40b4, 6 lockall - playsfx 73 + playse 73 msgbox SSTidalCorridor_Text_199088, 4 releaseall end @@ -29,29 +29,29 @@ SSTidalCorridor_EventScript_15FCD2:: @ 815FCD2 SSTidalRooms_EventScript_15FCE5:: @ 815FCE5 special SetSSTidalFlag setvar 0x40b4, 7 - playsfx 73 + playse 73 msgbox SSTidalRooms_Text_199007, 4 return SSTidalRooms_EventScript_15FCF9:: @ 815FCF9 special ResetSSTidalFlag setvar 0x40b4, 4 - playsfx 73 + playse 73 msgbox SSTidalRooms_Text_1990F8, 4 return gUnknown_0815FD0D:: @ 815FD0D compare 0x40B4, 2 - jumpeq SSTidalCorridor_EventScript_15FD24 + goto_if_eq SSTidalCorridor_EventScript_15FD24 compare 0x40B4, 7 - jumpeq SSTidalCorridor_EventScript_15FD3A + goto_if_eq SSTidalCorridor_EventScript_15FD3A end SSTidalCorridor_EventScript_15FD24:: @ 815FD24 special ResetSSTidalFlag setvar 0x40b4, 3 lockall - playsfx 73 + playse 73 msgbox SSTidalCorridor_Text_199088, 4 releaseall end @@ -60,7 +60,7 @@ SSTidalCorridor_EventScript_15FD3A:: @ 815FD3A special ResetSSTidalFlag setvar 0x40b4, 8 lockall - playsfx 73 + playse 73 msgbox SSTidalCorridor_Text_1990B4, 4 releaseall end @@ -68,7 +68,7 @@ SSTidalCorridor_EventScript_15FD3A:: @ 815FD3A SSTidalRooms_EventScript_15FD50:: @ 815FD50 special ResetSSTidalFlag setvar 0x40b4, 8 - playsfx 73 + playse 73 msgbox SSTidalRooms_Text_1990B4, 4 return @@ -87,8 +87,8 @@ SSTidalCorridor_EventScript_15FD96:: @ 815FD96 SSTidalCorridor_EventScript_15FD9F:: @ 815FD9F lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox SSTidalCorridor_Text_199388, 4 waitpokecry release @@ -114,9 +114,9 @@ SSTidalCorridor_EventScript_15FDD6:: @ 815FDD6 lock faceplayer compare 0x40b4, 4 - jumpeq SSTidalCorridor_EventScript_15FDF8 + goto_if_eq SSTidalCorridor_EventScript_15FDF8 compare 0x40b4, 8 - jumpeq SSTidalCorridor_EventScript_15FE17 + goto_if_eq SSTidalCorridor_EventScript_15FE17 msgbox SSTidalCorridor_Text_19913B, 4 release end @@ -125,7 +125,7 @@ SSTidalCorridor_EventScript_15FDF8:: @ 815FDF8 sethealplace 8 msgbox SSTidalCorridor_Text_1991F4, 4 checkflag 260 - callif 1, SSTidalCorridor_EventScript_15FE36 + call_if 1, SSTidalCorridor_EventScript_15FE36 warp LilycoveCity_Harbor, 255, 8, 11 waitstate release @@ -135,7 +135,7 @@ SSTidalCorridor_EventScript_15FE17:: @ 815FE17 sethealplace 4 msgbox SSTidalCorridor_Text_1991F4, 4 checkflag 260 - callif 1, SSTidalCorridor_EventScript_15FE36 + call_if 1, SSTidalCorridor_EventScript_15FE36 warp SlateportCity_Harbor, 255, 8, 11 waitstate release @@ -148,9 +148,9 @@ SSTidalCorridor_EventScript_15FE36:: @ 815FE36 SSTidalCorridor_EventScript_15FE3A:: @ 815FE3A lockall compare 0x40b4, 2 - jumpeq SSTidalCorridor_EventScript_15FE5B + goto_if_eq SSTidalCorridor_EventScript_15FE5B compare 0x40b4, 7 - jumpeq SSTidalCorridor_EventScript_15FE5B + goto_if_eq SSTidalCorridor_EventScript_15FE5B msgbox SSTidalCorridor_Text_199268, 4 releaseall end @@ -164,7 +164,7 @@ SSTidalCorridor_EventScript_15FE60:: @ 815FE60 lock faceplayer checkflag 247 - jumpeq SSTidalCorridor_EventScript_15FE7A + goto_if_eq SSTidalCorridor_EventScript_15FE7A call SSTidalCorridor_EventScript_15FE84 msgbox SSTidalCorridor_Text_199203, 4 release @@ -177,23 +177,23 @@ SSTidalCorridor_EventScript_15FE7A:: @ 815FE7A SSTidalCorridor_EventScript_15FE84:: @ 815FE84 checktrainerflag OPPONENT_PHILLIP - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_LEONARD - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_COLTON - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_TUCKER - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_THOMAS - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_LEA_AND_JED - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_GARRET - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_ANETTE - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 setflag 247 - jump SSTidalCorridor_EventScript_15FE7A + goto SSTidalCorridor_EventScript_15FE7A return SSTidalCorridor_EventScript_15FED5:: @ 815FED5 diff --git a/data/scripts/maps/SSTidalRooms.inc b/data/scripts/maps/SSTidalRooms.inc index 4d588cd46..c7cd4447d 100644 --- a/data/scripts/maps/SSTidalRooms.inc +++ b/data/scripts/maps/SSTidalRooms.inc @@ -5,11 +5,11 @@ SSTidalRooms_EventScript_15FF06:: @ 815FF06 lock faceplayer checkflag 260 - jumpeq SSTidalRooms_EventScript_15FF3D + goto_if_eq SSTidalRooms_EventScript_15FF3D msgbox SSTidalRooms_Text_199B65, 4 giveitem ITEM_TM49 compare RESULT, 0 - jumpeq SSTidalRooms_EventScript_1A029B + goto_if_eq SSTidalRooms_EventScript_1A029B setflag 260 msgbox SSTidalRooms_Text_199C1A, 4 release @@ -23,7 +23,7 @@ SSTidalRooms_EventScript_15FF3D:: @ 815FF3D SSTidalRooms_EventScript_15FF47:: @ 815FF47 lockall msgbox SSTidalRooms_Text_19956B, 4 - closebutton + closemessage call SSTidalRooms_EventScript_1A02CA call SSTidalRooms_EventScript_15FD64 releaseall diff --git a/data/scripts/maps/SafariZone_Southeast.inc b/data/scripts/maps/SafariZone_Southeast.inc index 22fd5ec56..06a400810 100644 --- a/data/scripts/maps/SafariZone_Southeast.inc +++ b/data/scripts/maps/SafariZone_Southeast.inc @@ -10,22 +10,22 @@ SafariZone_Southeast_MapScript2_160041:: @ 8160041 SafariZone_Southeast_EventScript_16004B:: @ 816004B lockall setvar 0x4001, 0 - move 255, SafariZone_Southeast_Movement_160087 - waitmove 0 - move 1, SafariZone_Southeast_Movement_160089 - waitmove 0 - movespriteperm 1, 32, 34 + applymovement 255, SafariZone_Southeast_Movement_160087 + waitmovement 0 + applymovement 1, SafariZone_Southeast_Movement_160089 + waitmovement 0 + setobjectxyperm 1, 32, 34 setvar 0x40a4, 0 releaseall end SafariZone_Southeast_MapScript1_160073:: @ 8160073 compare 0x40a4, 2 - callif 1, SafariZone_Southeast_EventScript_16007F + call_if 1, SafariZone_Southeast_EventScript_16007F end SafariZone_Southeast_EventScript_16007F:: @ 816007F - movespriteperm 1, 31, 34 + setobjectxyperm 1, 31, 34 return SafariZone_Southeast_Movement_160087:: @ 8160087 @@ -53,10 +53,10 @@ SafariZone_Southeast_EventScript_1600A7:: @ 81600A7 lock faceplayer compare 0x4001, 0 - jumpeq SafariZone_Southeast_EventScript_1600D1 + goto_if_eq SafariZone_Southeast_EventScript_1600D1 msgbox SafariZone_Southeast_Text_1C3A56, 5 compare RESULT, 1 - jumpeq SafariZone_Southeast_EventScript_1600E0 + goto_if_eq SafariZone_Southeast_EventScript_1600E0 msgbox SafariZone_Southeast_Text_1C3A9C, 4 release end @@ -69,32 +69,32 @@ SafariZone_Southeast_EventScript_1600D1:: @ 81600D1 SafariZone_Southeast_EventScript_1600E0:: @ 81600E0 msgbox SafariZone_Southeast_Text_1C3ACA, 4 - closebutton + closemessage switch FACING case 2, SafariZone_Southeast_EventScript_160105 case 4, SafariZone_Southeast_EventScript_16011F end SafariZone_Southeast_EventScript_160105:: @ 8160105 - move 1, SafariZone_Southeast_Movement_160150 - waitmove 0 - move 255, SafariZone_Southeast_Movement_16014B - waitmove 0 - jump SafariZone_Southeast_EventScript_160139 + applymovement 1, SafariZone_Southeast_Movement_160150 + waitmovement 0 + applymovement 255, SafariZone_Southeast_Movement_16014B + waitmovement 0 + goto SafariZone_Southeast_EventScript_160139 end SafariZone_Southeast_EventScript_16011F:: @ 816011F - move 1, SafariZone_Southeast_Movement_160153 - waitmove 0 - move 255, SafariZone_Southeast_Movement_16014D - waitmove 0 - jump SafariZone_Southeast_EventScript_160139 + applymovement 1, SafariZone_Southeast_Movement_160153 + waitmovement 0 + applymovement 255, SafariZone_Southeast_Movement_16014D + waitmovement 0 + goto SafariZone_Southeast_EventScript_160139 end SafariZone_Southeast_EventScript_160139:: @ 8160139 setvar 0x40a4, 1 special ExitSafariMode - warpwalk Route121_SafariZoneEntrance, 255, 2, 5 + warpdoor Route121_SafariZoneEntrance, 255, 2, 5 waitstate end diff --git a/data/scripts/maps/SeafloorCavern_Entrance.inc b/data/scripts/maps/SeafloorCavern_Entrance.inc index 0bf99d2ad..7ea46d9b0 100644 --- a/data/scripts/maps/SeafloorCavern_Entrance.inc +++ b/data/scripts/maps/SeafloorCavern_Entrance.inc @@ -3,6 +3,6 @@ SeafloorCavern_Entrance_MapScripts:: @ 815DA4A .byte 0 SeafloorCavern_Entrance_MapScript1_15DA50:: @ 815DA50 - warp4 Underwater_SeafloorCavern, 255, 6, 5 - warp6 Underwater_SeafloorCavern, 255, 6, 5 + setdivewarp Underwater_SeafloorCavern, 255, 6, 5 + setescapewarp Underwater_SeafloorCavern, 255, 6, 5 end diff --git a/data/scripts/maps/SeafloorCavern_Room9.inc b/data/scripts/maps/SeafloorCavern_Room9.inc index 71184346f..eb3d108a6 100644 --- a/data/scripts/maps/SeafloorCavern_Room9.inc +++ b/data/scripts/maps/SeafloorCavern_Room9.inc @@ -6,9 +6,9 @@ SeafloorCavern_Room9_MapScript1_15DAEC:: @ 815DAEC call SeafloorCavern_Room9_EventScript_1A0196 call SeafloorCavern_Room9_EventScript_1A01B5 .ifdef SAPPHIRE - setmapfooter 157 + setmaplayoutindex 157 .else - setmapfooter 327 + setmaplayoutindex 327 .endif end @@ -18,35 +18,35 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA setvar 0x8005, 3 setvar 0x8006, 4 setvar 0x8007, 5 - move 255, SeafloorCavern_Room9_Movement_1A0841 - waitmove 0 - move 255, SeafloorCavern_Room9_Movement_15DD68 - waitmove 0 + applymovement 255, SeafloorCavern_Room9_Movement_1A0841 + waitmovement 0 + applymovement 255, SeafloorCavern_Room9_Movement_15DD68 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B41B8, 4 .else msgbox SeafloorCavern_Room9_Text_1B4850, 4 .endif - closebutton - reappear 0x8004 - move 255, SeafloorCavern_Room9_Movement_1A083F - waitmove 0 - move 0x8004, SeafloorCavern_Room9_Movement_15DD36 - waitmove 0 + closemessage + addobject 0x8004 + applymovement 255, SeafloorCavern_Room9_Movement_1A083F + waitmovement 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD36 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B41D5, 4 .else msgbox SeafloorCavern_Room9_Text_1B486C, 4 .endif - move 0x8004, SeafloorCavern_Room9_Movement_1A0841 - waitmove 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0841 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4201, 4 .else msgbox SeafloorCavern_Room9_Text_1B4897, 4 .endif - move 0x8004, SeafloorCavern_Room9_Movement_1A0839 - waitmove 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0839 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4289, 4 .else @@ -78,45 +78,45 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA .else setvar RESULT, 0 .endif - playsfx 209 - setanimation 0, 16 - setanimation 1, 42 - setanimation 2, 0 - doanimation 54 - checkanimation 54 + playse 209 + setfieldeffect 0, 16 + setfieldeffect 1, 42 + setfieldeffect 2, 0 + dofieldeffect 54 + waitfieldeffect 54 .ifdef SAPPHIRE setvar RESULT, 0 .else setvar RESULT, 1 .endif - fanfare 388 - playsfx 107 + playfanfare 388 + playse 107 special sub_80818A4 - move 0x8004, SeafloorCavern_Room9_Movement_1A0841 - move 255, SeafloorCavern_Room9_Movement_1A0841 - waitmove 0 - pause 150 - disappear 7 - reappear 1 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0841 + applymovement 255, SeafloorCavern_Room9_Movement_1A0841 + waitmovement 0 + delay 150 + removeobject 7 + addobject 1 waitstate - pause 60 - move 1, SeafloorCavern_Room9_Movement_15DD4C - waitmove 0 + delay 60 + applymovement 1, SeafloorCavern_Room9_Movement_15DD4C + waitmovement 0 special sub_80818FC waitstate setvar 0x8004, 1 setvar 0x8005, 1 special sub_810F758 waitstate - move 1, SeafloorCavern_Room9_Movement_15DD57 - waitmove 0 - disappear 1 - pause 4 + applymovement 1, SeafloorCavern_Room9_Movement_15DD57 + waitmovement 0 + removeobject 1 + delay 4 setvar 0x8004, 2 setvar 0x8005, 2 special sub_810F758 waitstate - pause 30 + delay 30 setvar 0x8004, 2 setvar 0x8005, 3 setvar 0x8006, 4 @@ -126,52 +126,52 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA .else msgbox SeafloorCavern_Room9_Text_1B4A89, 4 .endif - playsfx 2 - move 255, SeafloorCavern_Room9_Movement_1A083F - waitmove 0 + playse 2 + applymovement 255, SeafloorCavern_Room9_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4443, 4 .else msgbox SeafloorCavern_Room9_Text_1B4ADB, 4 .endif - closebutton - move 0x8004, SeafloorCavern_Room9_Movement_15DD41 - waitmove 0 + closemessage + applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD41 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B447A, 4 .else msgbox SeafloorCavern_Room9_Text_1B4B11, 4 .endif - closebutton - playsfx 3 - pause 20 - move 0x8004, SeafloorCavern_Room9_Movement_1A0845 - waitmove 0 + closemessage + playse 3 + delay 20 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0845 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B45C6, 4 .else msgbox SeafloorCavern_Room9_Text_1B4C79, 4 .endif - closebutton - reappear 0x8005 - reappear 0x8006 - reappear 0x8007 - move 0x8007, SeafloorCavern_Room9_Movement_15DD63 - move 0x8006, SeafloorCavern_Room9_Movement_15DD63 - move 0x8005, SeafloorCavern_Room9_Movement_15DD5A - waitmove 0 - move 0x8004, SeafloorCavern_Room9_Movement_1A083F - waitmove 0 + closemessage + addobject 0x8005 + addobject 0x8006 + addobject 0x8007 + applymovement 0x8007, SeafloorCavern_Room9_Movement_15DD63 + applymovement 0x8006, SeafloorCavern_Room9_Movement_15DD63 + applymovement 0x8005, SeafloorCavern_Room9_Movement_15DD5A + waitmovement 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B464D, 4 .else msgbox SeafloorCavern_Room9_Text_1B4D02, 4 .endif - playsfx 21 - move 0x8004, SeafloorCavern_Room9_Movement_1A0833 - waitmove 0 - move 0x8004, SeafloorCavern_Room9_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0833 + waitmovement 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0835 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4723, 4 .else @@ -182,10 +182,10 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA .else msgbox SeafloorCavern_Room9_Text_1B4E37, 4 .endif - closebutton - move 0x8005, SeafloorCavern_Room9_Movement_15DD60 - move 0x8004, SeafloorCavern_Room9_Movement_15DD46 - waitmove 0 + closemessage + applymovement 0x8005, SeafloorCavern_Room9_Movement_15DD60 + applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD46 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4818, 4 .else diff --git a/data/scripts/maps/SealedChamber_InnerRoom.inc b/data/scripts/maps/SealedChamber_InnerRoom.inc index 76a930dc0..526ada367 100644 --- a/data/scripts/maps/SealedChamber_InnerRoom.inc +++ b/data/scripts/maps/SealedChamber_InnerRoom.inc @@ -3,34 +3,34 @@ SealedChamber_InnerRoom_MapScripts:: @ 815F1E7 SealedChamber_InnerRoom_EventScript_15F1E8:: @ 815F1E8 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C53C1 + braillemessage SealedChamber_InnerRoom_Braille_1C53C1 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 checkflag 228 - jumpeq SealedChamber_InnerRoom_EventScript_15F247 - specialval RESULT, CheckRelicanthWailord + goto_if_eq SealedChamber_InnerRoom_EventScript_15F247 + specialvar RESULT, CheckRelicanthWailord compare RESULT, 0 - jumpeq SealedChamber_InnerRoom_EventScript_15F247 - fadeout 0 - playsfx 49 + goto_if_eq SealedChamber_InnerRoom_EventScript_15F247 + fadeoutbgm 0 + playse 49 special DoSealedChamberShakingEffect1 waitstate - pause 40 + delay 40 special DoSealedChamberShakingEffect2 waitstate - playsfx 8 - pause 40 + playse 8 + delay 40 special DoSealedChamberShakingEffect2 waitstate - playsfx 8 - pause 40 + playse 8 + delay 40 special DoSealedChamberShakingEffect2 waitstate - playsfx 8 - pause 40 + playse 8 + delay 40 msgbox SealedChamber_InnerRoom_Text_1A138B, 4 - closebutton - fadein 0 + closemessage + fadeinbgm 0 setflag 228 releaseall end @@ -41,48 +41,48 @@ SealedChamber_InnerRoom_EventScript_15F247:: @ 815F247 SealedChamber_InnerRoom_EventScript_15F249:: @ 815F249 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C53F2 + braillemessage SealedChamber_InnerRoom_Braille_1C53F2 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F257:: @ 815F257 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C5414 + braillemessage SealedChamber_InnerRoom_Braille_1C5414 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F265:: @ 815F265 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C5435 + braillemessage SealedChamber_InnerRoom_Braille_1C5435 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F273:: @ 815F273 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C545C + braillemessage SealedChamber_InnerRoom_Braille_1C545C waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F281:: @ 815F281 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C5470 + braillemessage SealedChamber_InnerRoom_Braille_1C5470 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F28F:: @ 815F28F lockall - braillemsg SealedChamber_InnerRoom_Braille_1C549B + braillemessage SealedChamber_InnerRoom_Braille_1C549B waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/SealedChamber_OuterRoom.inc b/data/scripts/maps/SealedChamber_OuterRoom.inc index 83ca4e4df..f16a88802 100644 --- a/data/scripts/maps/SealedChamber_OuterRoom.inc +++ b/data/scripts/maps/SealedChamber_OuterRoom.inc @@ -5,8 +5,8 @@ SealedChamber_OuterRoom_MapScripts:: @ 815F0C6 .byte 0 SealedChamber_OuterRoom_MapScript1_15F0D6:: @ 815F0D6 - warp4 Underwater_SealedChamber, 255, 12, 44 - warp6 Underwater_SealedChamber, 255, 12, 44 + setdivewarp Underwater_SealedChamber, 255, 12, 44 + setescapewarp Underwater_SealedChamber, 255, 12, 44 end SealedChamber_OuterRoom_MapScript1_15F0E7:: @ 815F0E7 @@ -15,7 +15,7 @@ SealedChamber_OuterRoom_MapScript1_15F0E7:: @ 815F0E7 SealedChamber_OuterRoom_MapScript1_15F0EB:: @ 815F0EB checkflag 2127 - callif 0, SealedChamber_OuterRoom_EventScript_15F0F5 + call_if 0, SealedChamber_OuterRoom_EventScript_15F0F5 end SealedChamber_OuterRoom_EventScript_15F0F5:: @ 815F0F5 @@ -29,91 +29,91 @@ SealedChamber_OuterRoom_EventScript_15F0F5:: @ 815F0F5 SealedChamber_OuterRoom_EventScript_15F12C:: @ 815F12C lockall - braillemsg SealedChamber_OuterRoom_Braille_1C534F + braillemessage SealedChamber_OuterRoom_Braille_1C534F waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F13A:: @ 815F13A lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5359 + braillemessage SealedChamber_OuterRoom_Braille_1C5359 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F148:: @ 815F148 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5363 + braillemessage SealedChamber_OuterRoom_Braille_1C5363 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F156:: @ 815F156 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C536D + braillemessage SealedChamber_OuterRoom_Braille_1C536D waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F164:: @ 815F164 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5377 + braillemessage SealedChamber_OuterRoom_Braille_1C5377 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F172:: @ 815F172 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5381 + braillemessage SealedChamber_OuterRoom_Braille_1C5381 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F180:: @ 815F180 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C538B + braillemessage SealedChamber_OuterRoom_Braille_1C538B waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F18E:: @ 815F18E lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5396 + braillemessage SealedChamber_OuterRoom_Braille_1C5396 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F19C:: @ 815F19C lockall - braillemsg SealedChamber_OuterRoom_Braille_1C539E + braillemessage SealedChamber_OuterRoom_Braille_1C539E waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F1AA:: @ 815F1AA lockall - braillemsg SealedChamber_OuterRoom_Braille_1C53A9 + braillemessage SealedChamber_OuterRoom_Braille_1C53A9 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F1B8:: @ 815F1B8 lockall checkflag 2127 - jumpeq SealedChamber_OuterRoom_EventScript_15F1CF - braillemsg SealedChamber_OuterRoom_Braille_1C53B1 + goto_if_eq SealedChamber_OuterRoom_EventScript_15F1CF + braillemessage SealedChamber_OuterRoom_Braille_1C53B1 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -124,8 +124,8 @@ SealedChamber_OuterRoom_EventScript_15F1CF:: @ 815F1CF SealedChamber_OuterRoom_EventScript_15F1D9:: @ 815F1D9 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C53B1 + braillemessage SealedChamber_OuterRoom_Braille_1C53B1 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc b/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc index 38a1c9a74..52d430db5 100644 --- a/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc +++ b/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc @@ -5,43 +5,43 @@ ShoalCave_LowTideEntranceRoom_MapScripts:: @ 815E057 ShoalCave_LowTideEntranceRoom_MapScript1_15E05D:: @ 815E05D special UpdateShoalTideFlag checkflag 2106 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E06E - jump ShoalCave_LowTideEntranceRoom_EventScript_15E072 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E06E + goto ShoalCave_LowTideEntranceRoom_EventScript_15E072 ShoalCave_LowTideEntranceRoom_EventScript_15E06E:: @ 815E06E - setmapfooter 169 + setmaplayoutindex 169 end ShoalCave_LowTideEntranceRoom_EventScript_15E072:: @ 815E072 - setmapfooter 165 + setmaplayoutindex 165 end ShoalCave_LowTideEntranceRoom_EventScript_15E076:: @ 815E076 lock faceplayer - checkdailyflags + dodailyevents checkflag 2143 - callif 1, ShoalCave_LowTideEntranceRoom_EventScript_15E176 + call_if 1, ShoalCave_LowTideEntranceRoom_EventScript_15E176 checkitem ITEM_SHOAL_SALT, 4 compare RESULT, 0 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E138 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E138 checkitem ITEM_SHOAL_SHELL, 4 compare RESULT, 0 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E138 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E138 msgbox ShoalCave_LowTideEntranceRoom_Text_1C6793, 5 compare RESULT, 0 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E16C + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E16C checkitemspace ITEM_SHELL_BELL, 1 compare RESULT, 0 - callif 1, ShoalCave_LowTideEntranceRoom_EventScript_15E106 + call_if 1, ShoalCave_LowTideEntranceRoom_EventScript_15E106 compare RESULT, 2 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E12E + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E12E msgbox ShoalCave_LowTideEntranceRoom_Text_1C6808, 4 removeitem ITEM_SHOAL_SALT, 4 removeitem ITEM_SHOAL_SHELL, 4 giveitem ITEM_SHELL_BELL compare RESULT, 0 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_1A029B msgbox ShoalCave_LowTideEntranceRoom_Text_1C688E, 4 setflag 2 release @@ -50,13 +50,13 @@ ShoalCave_LowTideEntranceRoom_EventScript_15E076:: @ 815E076 ShoalCave_LowTideEntranceRoom_EventScript_15E106:: @ 815E106 checkitem ITEM_SHOAL_SALT, 5 compare RESULT, 1 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E117 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E117 return ShoalCave_LowTideEntranceRoom_EventScript_15E117:: @ 815E117 checkitem ITEM_SHOAL_SHELL, 5 compare RESULT, 1 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E128 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E128 return ShoalCave_LowTideEntranceRoom_EventScript_15E128:: @ 815E128 @@ -71,10 +71,10 @@ ShoalCave_LowTideEntranceRoom_EventScript_15E12E:: @ 815E12E ShoalCave_LowTideEntranceRoom_EventScript_15E138:: @ 815E138 checkitem ITEM_SHOAL_SALT, 1 compare RESULT, 1 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E162 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E162 checkitem ITEM_SHOAL_SHELL, 1 compare RESULT, 1 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E162 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E162 msgbox ShoalCave_LowTideEntranceRoom_Text_1C6668, 4 release end diff --git a/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc b/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc index 3078b4625..ada997023 100644 --- a/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc +++ b/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc @@ -5,15 +5,15 @@ ShoalCave_LowTideInnerRoom_MapScripts:: @ 815E192 ShoalCave_LowTideInnerRoom_MapScript1_15E19D:: @ 815E19D checkflag 2106 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1AB - jump ShoalCave_LowTideInnerRoom_EventScript_15E1AF + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1AB + goto ShoalCave_LowTideInnerRoom_EventScript_15E1AF ShoalCave_LowTideInnerRoom_EventScript_15E1AB:: @ 815E1AB - setmapfooter 170 + setmaplayoutindex 170 end ShoalCave_LowTideInnerRoom_EventScript_15E1AF:: @ 815E1AF - setmapfooter 166 + setmaplayoutindex 166 end ShoalCave_LowTideInnerRoom_MapScript1_15E1B3:: @ 815E1B3 @@ -22,46 +22,46 @@ ShoalCave_LowTideInnerRoom_MapScript1_15E1B3:: @ 815E1B3 ShoalCave_LowTideInnerRoom_EventScript_15E1B9:: @ 815E1B9 checkflag 952 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1DA + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1DA checkflag 2106 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1DA + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1DA setmaptile 31, 8, 856, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E1DA + goto ShoalCave_LowTideInnerRoom_EventScript_15E1DA end ShoalCave_LowTideInnerRoom_EventScript_15E1DA:: @ 815E1DA checkflag 953 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1FB + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1FB checkflag 2106 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1FB + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1FB setmaptile 14, 26, 856, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E1FB + goto ShoalCave_LowTideInnerRoom_EventScript_15E1FB end ShoalCave_LowTideInnerRoom_EventScript_15E1FB:: @ 815E1FB checkflag 956 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E213 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E213 setmaptile 41, 20, 857, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E213 + goto ShoalCave_LowTideInnerRoom_EventScript_15E213 end ShoalCave_LowTideInnerRoom_EventScript_15E213:: @ 815E213 checkflag 957 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E22B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E22B setmaptile 41, 10, 857, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E22B + goto ShoalCave_LowTideInnerRoom_EventScript_15E22B end ShoalCave_LowTideInnerRoom_EventScript_15E22B:: @ 815E22B checkflag 958 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E243 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E243 setmaptile 6, 9, 857, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E243 + goto ShoalCave_LowTideInnerRoom_EventScript_15E243 end ShoalCave_LowTideInnerRoom_EventScript_15E243:: @ 815E243 checkflag 959 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E256 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E256 setmaptile 16, 13, 857, 1 return @@ -71,10 +71,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E256:: @ 815E256 ShoalCave_LowTideInnerRoom_EventScript_15E257:: @ 815E257 lockall checkflag 956 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289 giveitem ITEM_SHOAL_SHELL compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 41, 20, 859, 0 special DrawWholeMapView setflag 956 @@ -89,10 +89,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E289:: @ 815E289 ShoalCave_LowTideInnerRoom_EventScript_15E293:: @ 815E293 lockall checkflag 957 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289 giveitem ITEM_SHOAL_SHELL compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 41, 10, 859, 0 special DrawWholeMapView setflag 957 @@ -102,10 +102,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E293:: @ 815E293 ShoalCave_LowTideInnerRoom_EventScript_15E2C5:: @ 815E2C5 lockall checkflag 958 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289 giveitem ITEM_SHOAL_SHELL compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 6, 9, 859, 0 special DrawWholeMapView setflag 958 @@ -115,10 +115,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E2C5:: @ 815E2C5 ShoalCave_LowTideInnerRoom_EventScript_15E2F7:: @ 815E2F7 lockall checkflag 959 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289 giveitem ITEM_SHOAL_SHELL compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 16, 13, 859, 0 special DrawWholeMapView setflag 959 @@ -128,10 +128,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E2F7:: @ 815E2F7 ShoalCave_LowTideInnerRoom_EventScript_15E329:: @ 815E329 lockall checkflag 952 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E35B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E35B giveitem ITEM_SHOAL_SALT compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 31, 8, 858, 0 special DrawWholeMapView setflag 952 @@ -146,10 +146,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E35B:: @ 815E35B ShoalCave_LowTideInnerRoom_EventScript_15E365:: @ 815E365 lockall checkflag 953 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E35B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E35B giveitem ITEM_SHOAL_SALT compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 14, 26, 858, 0 special DrawWholeMapView setflag 953 diff --git a/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc b/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc index 67de2676f..db5779efe 100644 --- a/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc +++ b/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc @@ -8,7 +8,7 @@ ShoalCave_LowTideLowerRoom_MapScript1_15E3F9:: @ 815E3F9 ShoalCave_LowTideLowerRoom_EventScript_15E3FF:: @ 815E3FF checkflag 955 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E412 + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E412 setmaptile 18, 2, 856, 1 return @@ -18,10 +18,10 @@ ShoalCave_LowTideLowerRoom_EventScript_15E412:: @ 815E412 ShoalCave_LowTideLowerRoom_EventScript_15E413:: @ 815E413 lockall checkflag 955 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E445 + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E445 giveitem ITEM_SHOAL_SALT compare RESULT, 0 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_1A029B setmaptile 18, 2, 858, 0 special DrawWholeMapView setflag 955 @@ -37,11 +37,11 @@ ShoalCave_LowTideLowerRoom_EventScript_15E44F:: @ 815E44F lock faceplayer checkflag 283 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E47E + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E47E msgbox ShoalCave_LowTideLowerRoom_Text_198200, 4 giveitem ITEM_FOCUS_BAND compare RESULT, 0 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_1A029B setflag 283 release end diff --git a/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc b/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc index c46a2cb2d..bffb7bd49 100644 --- a/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc +++ b/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc @@ -8,7 +8,7 @@ ShoalCave_LowTideStairsRoom_MapScript1_15E39D:: @ 815E39D ShoalCave_LowTideStairsRoom_EventScript_15E3A3:: @ 815E3A3 checkflag 954 - jumpeq ShoalCave_LowTideStairsRoom_EventScript_15E3B6 + goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_15E3B6 setmaptile 11, 11, 856, 1 return @@ -18,10 +18,10 @@ ShoalCave_LowTideStairsRoom_EventScript_15E3B6:: @ 815E3B6 ShoalCave_LowTideStairsRoom_EventScript_15E3B7:: @ 815E3B7 lockall checkflag 954 - jumpeq ShoalCave_LowTideStairsRoom_EventScript_15E3E9 + goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_15E3E9 giveitem ITEM_SHOAL_SALT compare RESULT, 0 - jumpeq ShoalCave_LowTideStairsRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_1A029B setmaptile 11, 11, 858, 0 special DrawWholeMapView setflag 954 diff --git a/data/scripts/maps/SkyPillar_2F.inc b/data/scripts/maps/SkyPillar_2F.inc index 62cb389f2..3b3585bf8 100644 --- a/data/scripts/maps/SkyPillar_2F.inc +++ b/data/scripts/maps/SkyPillar_2F.inc @@ -6,5 +6,5 @@ SkyPillar_2F_MapScripts:: @ 815F2C9 SkyPillar_2F_MapScript1_15F2D9:: @ 815F2D9 tileeffect 7 - warp5 SkyPillar_1F, 255, 0, 0 + setholewarp SkyPillar_1F, 255, 0, 0 end diff --git a/data/scripts/maps/SkyPillar_4F.inc b/data/scripts/maps/SkyPillar_4F.inc index 5e1f7f4e6..3d535a25a 100644 --- a/data/scripts/maps/SkyPillar_4F.inc +++ b/data/scripts/maps/SkyPillar_4F.inc @@ -6,5 +6,5 @@ SkyPillar_4F_MapScripts:: @ 815F2E5 SkyPillar_4F_MapScript1_15F2F5:: @ 815F2F5 tileeffect 7 - warp5 SkyPillar_3F, 255, 0, 0 + setholewarp SkyPillar_3F, 255, 0, 0 end diff --git a/data/scripts/maps/SkyPillar_Top.inc b/data/scripts/maps/SkyPillar_Top.inc index 23db6a8ea..1dee6e9c4 100644 --- a/data/scripts/maps/SkyPillar_Top.inc +++ b/data/scripts/maps/SkyPillar_Top.inc @@ -4,24 +4,24 @@ SkyPillar_Top_MapScripts:: @ 815F302 SkyPillar_Top_MapScript1_15F308:: @ 815F308 checkflag 2145 - callif 1, SkyPillar_Top_EventScript_15F312 + call_if 1, SkyPillar_Top_EventScript_15F312 end SkyPillar_Top_EventScript_15F312:: @ 815F312 - disappear LAST_TALKED + removeobject LAST_TALKED return SkyPillar_Top_EventScript_15F316:: @ 815F316 lock faceplayer setwildbattle SPECIES_RAYQUAZA, 70, ITEM_NONE - checksound - pokecry SPECIES_RAYQUAZA, 2 - pause 40 + waitse + playpokecry SPECIES_RAYQUAZA, 2 + delay 40 waitpokecry setflag 773 setflag 2145 - special StartBattle_Rayquaza + special ScrSpecial_StartRayquazaBattle waitstate clearflag 2145 release diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc index 48eb5c1df..bea1455a7 100644 --- a/data/scripts/maps/SlateportCity.inc +++ b/data/scripts/maps/SlateportCity.inc @@ -13,7 +13,7 @@ SlateportCity_MapScript1_14BA3C:: @ 814BA3C setvar 0x40aa, 0 call SlateportCity_EventScript_14BA5C compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BA68 + call_if 1, SlateportCity_EventScript_14BA68 end SlateportCity_EventScript_14BA5C:: @ 814BA5C @@ -23,27 +23,27 @@ SlateportCity_EventScript_14BA5C:: @ 814BA5C return SlateportCity_EventScript_14BA68:: @ 814BA68 - movespriteperm 11, 28, 13 - movespriteperm 7, 25, 13 - movespriteperm 3, 25, 14 - movespriteperm 6, 27, 16 - movespriteperm 8, 28, 16 - movespriteperm 1, 29, 16 - movespriteperm 2, 31, 14 - spritebehave 11, 8 - spritebehave 7, 18 - spritebehave 3, 16 - spritebehave 6, 7 - spritebehave 8, 7 - spritebehave 1, 7 - spritebehave 2, 9 + setobjectxyperm 11, 28, 13 + setobjectxyperm 7, 25, 13 + setobjectxyperm 3, 25, 14 + setobjectxyperm 6, 27, 16 + setobjectxyperm 8, 28, 16 + setobjectxyperm 1, 29, 16 + setobjectxyperm 2, 31, 14 + setobjectmovementtype 11, 8 + setobjectmovementtype 7, 18 + setobjectmovementtype 3, 16 + setobjectmovementtype 6, 7 + setobjectmovementtype 8, 7 + setobjectmovementtype 1, 7 + setobjectmovementtype 2, 9 return SlateportCity_EventScript_14BAB6:: @ 814BAB6 lock faceplayer message SlateportCity_Text_164642 - waittext + waitmessage pokemart SlateportCity_Items1 msgbox SlateportCity_Text_1A0C02, 4 release @@ -64,19 +64,19 @@ SlateportCity_Items1:: @ 814BAD0 SlateportCity_EventScript_14BAE0:: @ 814BAE0 lock faceplayer - bufferfirstpoke 0 + getfirstpartypokename 0 msgbox SlateportCity_Text_164682, 4 - specialval RESULT, LeadMonHasEffortRibbon + specialvar RESULT, LeadMonHasEffortRibbon compare RESULT, 1 - callif 1, SlateportCity_EventScript_14BB35 - specialval RESULT, GetLeadMonEVCount + call_if 1, SlateportCity_EventScript_14BB35 + specialvar RESULT, ScrSpecial_AreLeadMonEVsMaxedOut compare RESULT, 0 - callif 1, SlateportCity_EventScript_14BB2B + call_if 1, SlateportCity_EventScript_14BB2B msgbox SlateportCity_Text_164691, 4 - fanfare 370 + playfanfare 370 message SlateportCity_Text_1646DD waitfanfare - waittext + waitmessage msgbox SlateportCity_Text_1646FC, 4 special GivLeadMonEffortRibbon release @@ -96,7 +96,7 @@ SlateportCity_EventScript_14BB3F:: @ 814BB3F lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BB56 + call_if 1, SlateportCity_EventScript_14BB56 msgbox SlateportCity_Text_164814, 4 release end @@ -110,7 +110,7 @@ SlateportCity_EventScript_14BB60:: @ 814BB60 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BB77 + call_if 1, SlateportCity_EventScript_14BB77 msgbox SlateportCity_Text_1648A0, 4 release end @@ -124,9 +124,9 @@ SlateportCity_EventScript_14BB81:: @ 814BB81 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BBA1 + call_if 1, SlateportCity_EventScript_14BBA1 checkflag 96 - jumpeq SlateportCity_EventScript_14BBAB + goto_if_eq SlateportCity_EventScript_14BBAB msgbox SlateportCity_Text_164937, 4 release end @@ -145,7 +145,7 @@ SlateportCity_EventScript_14BBB5:: @ 814BBB5 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BBCC + call_if 1, SlateportCity_EventScript_14BBCC msgbox SlateportCity_Text_164A30, 4 release end @@ -157,7 +157,7 @@ SlateportCity_EventScript_14BBCC:: @ 814BBCC SlateportCity_EventScript_14BBD6:: @ 814BBD6 compare 0x4058, 1 - jumpeq SlateportCity_EventScript_14BBEA + goto_if_eq SlateportCity_EventScript_14BBEA msgbox SlateportCity_Text_164AA9, 2 end @@ -169,7 +169,7 @@ SlateportCity_EventScript_14BBF3:: @ 814BBF3 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BC0A + call_if 1, SlateportCity_EventScript_14BC0A msgbox SlateportCity_Text_164B34, 4 release end @@ -183,7 +183,7 @@ SlateportCity_EventScript_14BC14:: @ 814BC14 lock faceplayer checkflag 148 - jumpeq SlateportCity_EventScript_14BC29 + goto_if_eq SlateportCity_EventScript_14BC29 msgbox SlateportCity_Text_164BBF, 4 release end @@ -200,9 +200,9 @@ SlateportCity_EventScript_14BC33:: @ 814BC33 SlateportCity_EventScript_14BC3C:: @ 814BC3C lockall checkflag 2052 - jumpeq SlateportCity_EventScript_14BC63 + goto_if_eq SlateportCity_EventScript_14BC63 checkflag 2061 - jumpeq SlateportCity_EventScript_14BC59 + goto_if_eq SlateportCity_EventScript_14BC59 msgbox SlateportCity_Text_1658A0, 4 releaseall end @@ -236,7 +236,7 @@ SlateportCity_EventScript_14BC88:: @ 814BC88 SlateportCity_EventScript_14BC91:: @ 814BC91 lockall checkflag 2052 - jumpeq SlateportCity_EventScript_14BCA5 + goto_if_eq SlateportCity_EventScript_14BCA5 msgbox SlateportCity_Text_165A8B, 4 releaseall end @@ -254,7 +254,7 @@ SlateportCity_EventScript_14BCB8:: @ 814BCB8 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BCCF + call_if 1, SlateportCity_EventScript_14BCCF msgbox SlateportCity_Text_164F9E, 4 release end @@ -289,9 +289,9 @@ SlateportCity_EventScript_14BD06:: @ 814BD06 faceplayer msgbox SlateportCity_Text_1650F1, 5 compare RESULT, 1 - callif 1, SlateportCity_EventScript_14BD28 + call_if 1, SlateportCity_EventScript_14BD28 compare RESULT, 0 - callif 1, SlateportCity_EventScript_14BD31 + call_if 1, SlateportCity_EventScript_14BD31 release end @@ -307,9 +307,9 @@ SlateportCity_EventScript_14BD3A:: @ 814BD3A lock faceplayer msgbox SlateportCity_Text_164C64, 4 - closebutton - move 5, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 5, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -317,9 +317,9 @@ SlateportCity_EventScript_14BD51:: @ 814BD51 lock faceplayer msgbox SlateportCity_Text_164C9F, 4 - closebutton - move 19, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 19, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -327,9 +327,9 @@ SlateportCity_EventScript_14BD68:: @ 814BD68 lock faceplayer msgbox SlateportCity_Text_164CE8, 4 - closebutton - move 20, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 20, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -337,9 +337,9 @@ SlateportCity_EventScript_14BD7F:: @ 814BD7F lock faceplayer msgbox SlateportCity_Text_164D2B, 4 - closebutton - move 27, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 27, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -347,9 +347,9 @@ SlateportCity_EventScript_14BD96:: @ 814BD96 lock faceplayer msgbox SlateportCity_Text_164D92, 4 - closebutton - move 28, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 28, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -357,9 +357,9 @@ SlateportCity_EventScript_14BDAD:: @ 814BDAD lock faceplayer msgbox SlateportCity_Text_164DD5, 4 - closebutton - move 29, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 29, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -367,9 +367,9 @@ SlateportCity_EventScript_14BDC4:: @ 814BDC4 lock faceplayer msgbox SlateportCity_Text_164DF4, 4 - closebutton - move 30, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 30, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -377,9 +377,9 @@ SlateportCity_EventScript_14BDDB:: @ 814BDDB lock faceplayer msgbox SlateportCity_Text_164E46, 4 - closebutton - move 31, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 31, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -387,7 +387,7 @@ SlateportCity_EventScript_14BDF2:: @ 814BDF2 lock faceplayer message SlateportCity_Text_1A0BE4 - waittext + waitmessage pokemartdecor SlateportCity_Decorations1 msgbox SlateportCity_Text_1A0C02, 4 release @@ -411,9 +411,9 @@ SlateportCity_EventScript_14BE20:: @ 814BE20 lock faceplayer checkflag 96 - jumpif 0, SlateportCity_EventScript_14BE16 + goto_if 0, SlateportCity_EventScript_14BE16 message SlateportCity_Text_1A0BE4 - waittext + waitmessage pokemartdecor SlateportCity_Decorations2 msgbox SlateportCity_Text_1A0C02, 4 release @@ -443,9 +443,9 @@ SlateportCity_Decorations2:: @ 814BE40 lock faceplayer checkflag 96 - jumpif 0, SlateportCity_EventScript_14BE16 + goto_if 0, SlateportCity_EventScript_14BE16 message SlateportCity_Text_1A0BE4 - waittext + waitmessage pokemartdecor SlateportCity_Decorations3 msgbox SlateportCity_Text_1A0C02, 4 release @@ -472,7 +472,7 @@ SlateportCity_EventScript_14BE9A:: @ 814BE9A lock faceplayer message SlateportCity_Text_1A0BE4 - waittext + waitmessage pokemart SlateportCity_Items2 msgbox SlateportCity_Text_1A0C02, 4 release @@ -490,49 +490,49 @@ SlateportCity_EventScript_14BEBC:: @ 814BEBC lockall msgbox SlateportCity_Text_165498, 4 msgbox SlateportCity_Text_1654E0, 4 - closebutton - move 10, SlateportCity_Movement_1A0843 - waitmove 0 - pause 10 - move 9, SlateportCity_Movement_1A0845 - waitmove 0 - pause 25 - move 11, SlateportCity_Movement_14C000 - move 255, SlateportCity_Movement_14C00E - move 10, SlateportCity_Movement_14BFDD - move 9, SlateportCity_Movement_14BFEA - waitmove 0 - disappear 10 - disappear 9 + closemessage + applymovement 10, SlateportCity_Movement_1A0843 + waitmovement 0 + delay 10 + applymovement 9, SlateportCity_Movement_1A0845 + waitmovement 0 + delay 25 + applymovement 11, SlateportCity_Movement_14C000 + applymovement 255, SlateportCity_Movement_14C00E + applymovement 10, SlateportCity_Movement_14BFDD + applymovement 9, SlateportCity_Movement_14BFEA + waitmovement 0 + removeobject 10 + removeobject 9 msgbox SlateportCity_Text_16558D, 4 - move 11, SlateportCity_Movement_1A0841 - waitmove 0 + applymovement 11, SlateportCity_Movement_1A0841 + waitmovement 0 msgbox SlateportCity_Text_1655E7, 4 - playmusic BGM_EVIL_TEAM, 0 + playbgm BGM_EVIL_TEAM, 0 msgbox SlateportCity_Text_1656BC, 4 - move 6, SlateportCity_Movement_1A083F - move 1, SlateportCity_Movement_1A083F - move 7, SlateportCity_Movement_14BFCD - move 3, SlateportCity_Movement_1A0831 - move 2, SlateportCity_Movement_14BFD5 - waitmove 0 - move 11, SlateportCity_Movement_1A0845 - waitmove 0 + applymovement 6, SlateportCity_Movement_1A083F + applymovement 1, SlateportCity_Movement_1A083F + applymovement 7, SlateportCity_Movement_14BFCD + applymovement 3, SlateportCity_Movement_1A0831 + applymovement 2, SlateportCity_Movement_14BFD5 + waitmovement 0 + applymovement 11, SlateportCity_Movement_1A0845 + waitmovement 0 msgbox SlateportCity_Text_16578F, 4 - playsfx 21 - move 11, SlateportCity_Movement_1A0833 - waitmove 0 - move 11, SlateportCity_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 11, SlateportCity_Movement_1A0833 + waitmovement 0 + applymovement 11, SlateportCity_Movement_1A0835 + waitmovement 0 msgbox SlateportCity_Text_1657FA, 4 - move 11, SlateportCity_Movement_1A0839 - waitmove 0 + applymovement 11, SlateportCity_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_Text_16583A, 4 - closebutton - move 11, SlateportCity_Movement_14BFFB - move 255, SlateportCity_Movement_14C008 - waitmove 0 - disappear 11 + closemessage + applymovement 11, SlateportCity_Movement_14BFFB + applymovement 255, SlateportCity_Movement_14C008 + waitmovement 0 + removeobject 11 clearflag 841 clearflag 848 clearflag 845 diff --git a/data/scripts/maps/SlateportCity_ContestHall.inc b/data/scripts/maps/SlateportCity_ContestHall.inc index 559719583..f8070f1a1 100644 --- a/data/scripts/maps/SlateportCity_ContestHall.inc +++ b/data/scripts/maps/SlateportCity_ContestHall.inc @@ -13,11 +13,11 @@ SlateportCity_ContestHall_EventScript_15555E:: @ 815555E lock faceplayer checkflag 265 - jumpeq SlateportCity_ContestHall_EventScript_155595 + goto_if_eq SlateportCity_ContestHall_EventScript_155595 msgbox SlateportCity_ContestHall_Text_17CCE2, 4 giveitem ITEM_TM41 compare RESULT, 0 - jumpeq SlateportCity_ContestHall_EventScript_1A029B + goto_if_eq SlateportCity_ContestHall_EventScript_1A029B setflag 265 msgbox SlateportCity_ContestHall_Text_17CE28, 4 release @@ -31,80 +31,80 @@ SlateportCity_ContestHall_EventScript_155595:: @ 8155595 SlateportCity_ContestHall_EventScript_15559F:: @ 815559F msgbox SlateportCity_ContestHall_Text_17CEF3, 2 lockall - move 3, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 3, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_1555B4:: @ 81555B4 msgbox SlateportCity_ContestHall_Text_17CFA7, 2 lockall - move 4, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 4, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_1555C9:: @ 81555C9 msgbox SlateportCity_ContestHall_Text_17D054, 2 lockall - move 5, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 5, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_1555DE:: @ 81555DE msgbox SlateportCity_ContestHall_Text_17D07F, 2 lockall - move 6, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 6, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_1555F3:: @ 81555F3 msgbox SlateportCity_ContestHall_Text_17D0F9, 2 lockall - move 7, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 7, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_155608:: @ 8155608 msgbox SlateportCity_ContestHall_Text_17D222, 2 lockall - move 8, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 8, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_15561D:: @ 815561D msgbox SlateportCity_ContestHall_Text_17D39A, 2 lockall - move 9, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 9, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_155632:: @ 8155632 msgbox SlateportCity_ContestHall_Text_17D3F0, 2 lockall - move 10, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 10, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_155647:: @ 8155647 msgbox SlateportCity_ContestHall_Text_17D300, 2 lockall - move 12, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 12, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_15565C:: @ 815565C msgbox SlateportCity_ContestHall_Text_17D27F, 2 lockall - move 11, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 11, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end diff --git a/data/scripts/maps/SlateportCity_ContestLobby.inc b/data/scripts/maps/SlateportCity_ContestLobby.inc index b1ce50815..cb4632d77 100644 --- a/data/scripts/maps/SlateportCity_ContestLobby.inc +++ b/data/scripts/maps/SlateportCity_ContestLobby.inc @@ -20,28 +20,28 @@ SlateportCity_ContestLobby_EventScript_15541D:: @ 815541D SlateportCity_ContestLobby_EventScript_155448:: @ 8155448 lockall - move 1, SlateportCity_ContestLobby_Movement_1554CC - waitmove 0 - playsfx 71 + applymovement 1, SlateportCity_ContestLobby_Movement_1554CC + waitmovement 0 + playse 71 setmaptile 4, 2, 545, 1 setmaptile 4, 3, 609, 1 special DrawWholeMapView - move 1, SlateportCity_ContestLobby_Movement_1554CF - waitmove 0 - playsfx 71 + applymovement 1, SlateportCity_ContestLobby_Movement_1554CF + waitmovement 0 + playse 71 setmaptile 4, 2, 721, 1 setmaptile 4, 3, 729, 1 special DrawWholeMapView - pause 20 - move 1, SlateportCity_ContestLobby_Movement_1554DC - waitmove 0 - move 255, SlateportCity_ContestLobby_Movement_1554CA - waitmove 0 + delay 20 + applymovement 1, SlateportCity_ContestLobby_Movement_1554DC + waitmovement 0 + applymovement 255, SlateportCity_ContestLobby_Movement_1554CA + waitmovement 0 msgbox SlateportCity_ContestLobby_Text_1A6832, 4 - closebutton - move 1, SlateportCity_ContestLobby_Movement_1554D3 - move 255, SlateportCity_ContestLobby_Movement_1554C0 - waitmove 0 + closemessage + applymovement 1, SlateportCity_ContestLobby_Movement_1554D3 + applymovement 255, SlateportCity_ContestLobby_Movement_1554C0 + waitmovement 0 releaseall return @@ -102,9 +102,9 @@ SlateportCity_ContestLobby_EventScript_1554F0:: @ 81554F0 SlateportCity_ContestLobby_EventScript_1554F9:: @ 81554F9 lockall checkflag 95 - jumpeq SlateportCity_ContestLobby_EventScript_155526 - move 7, SlateportCity_ContestLobby_Movement_1A0839 - waitmove 0 + goto_if_eq SlateportCity_ContestLobby_EventScript_155526 + applymovement 7, SlateportCity_ContestLobby_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_ContestLobby_Text_17CA67, 4 giveitem ITEM_POKEBLOCK_CASE setflag 95 @@ -118,7 +118,7 @@ SlateportCity_ContestLobby_EventScript_155526:: @ 8155526 SlateportCity_ContestLobby_EventScript_15552F:: @ 815552F lockall fadescreen 1 - showcontestwinner 3 + drawcontestwinner 3 releaseall end @@ -130,6 +130,6 @@ SlateportCity_ContestLobby_EventScript_155536:: @ 8155536 lockall special ShowBerryBlenderRecordWindow waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/SlateportCity_Harbor.inc b/data/scripts/maps/SlateportCity_Harbor.inc index d65d28877..f145c4a3d 100644 --- a/data/scripts/maps/SlateportCity_Harbor.inc +++ b/data/scripts/maps/SlateportCity_Harbor.inc @@ -3,12 +3,12 @@ SlateportCity_Harbor_MapScripts:: @ 8155F5D .byte 0 SlateportCity_Harbor_MapScript1_155F63:: @ 8155F63 - warp6 SlateportCity, 255, 28, 13 + setescapewarp SlateportCity, 255, 28, 13 setvar 0x4001, 0 compare 0x40a0, 1 - callif 1, SlateportCity_Harbor_EventScript_155F89 + call_if 1, SlateportCity_Harbor_EventScript_155F89 checkflag 2052 - callif 1, SlateportCity_Harbor_EventScript_155F85 + call_if 1, SlateportCity_Harbor_EventScript_155F85 end SlateportCity_Harbor_EventScript_155F85:: @ 8155F85 @@ -16,89 +16,89 @@ SlateportCity_Harbor_EventScript_155F85:: @ 8155F85 return SlateportCity_Harbor_EventScript_155F89:: @ 8155F89 - playmusicbattle BGM_EVIL_TEAM - movespriteperm 4, 12, 13 - spritebehave 4, 9 + savebgm BGM_EVIL_TEAM + setobjectxyperm 4, 12, 13 + setobjectmovementtype 4, 9 setflag 905 return SlateportCity_Harbor_EventScript_155F9B:: @ 8155F9B lockall setvar 0x8008, 0 - jump SlateportCity_Harbor_EventScript_155FD5 + goto SlateportCity_Harbor_EventScript_155FD5 end SlateportCity_Harbor_EventScript_155FA7:: @ 8155FA7 lockall setvar 0x8008, 1 - jump SlateportCity_Harbor_EventScript_155FD5 + goto SlateportCity_Harbor_EventScript_155FD5 end SlateportCity_Harbor_EventScript_155FB3:: @ 8155FB3 lockall setvar 0x8008, 2 - jump SlateportCity_Harbor_EventScript_155FD5 + goto SlateportCity_Harbor_EventScript_155FD5 end SlateportCity_Harbor_EventScript_155FBF:: @ 8155FBF lockall setvar 0x8008, 3 - move 255, SlateportCity_Harbor_Movement_1560C2 - waitmove 0 - jump SlateportCity_Harbor_EventScript_155FD5 + applymovement 255, SlateportCity_Harbor_Movement_1560C2 + waitmovement 0 + goto SlateportCity_Harbor_EventScript_155FD5 end SlateportCity_Harbor_EventScript_155FD5:: @ 8155FD5 - move 7, SlateportCity_Harbor_Movement_1A0845 - waitmove 0 - move 255, SlateportCity_Harbor_Movement_1A0841 - waitmove 0 + applymovement 7, SlateportCity_Harbor_Movement_1A0845 + waitmovement 0 + applymovement 255, SlateportCity_Harbor_Movement_1A0841 + waitmovement 0 msgbox SlateportCity_Harbor_Text_17FD7D, 4 - closebutton - move 6, SlateportCity_Harbor_Movement_15609B - move 7, SlateportCity_Harbor_Movement_15609B - move 8, SlateportCity_Harbor_Movement_1560A5 - waitmove 0 - disappear 6 - disappear 7 - disappear 8 + closemessage + applymovement 6, SlateportCity_Harbor_Movement_15609B + applymovement 7, SlateportCity_Harbor_Movement_15609B + applymovement 8, SlateportCity_Harbor_Movement_1560A5 + waitmovement 0 + removeobject 6 + removeobject 7 + removeobject 8 setvar 0x40a0, 2 compare 0x8008, 0 - callif 1, SlateportCity_Harbor_EventScript_15605C + call_if 1, SlateportCity_Harbor_EventScript_15605C compare 0x8008, 1 - callif 1, SlateportCity_Harbor_EventScript_156071 + call_if 1, SlateportCity_Harbor_EventScript_156071 compare 0x8008, 2 - callif 1, SlateportCity_Harbor_EventScript_156086 + call_if 1, SlateportCity_Harbor_EventScript_156086 compare 0x8008, 3 - callif 1, SlateportCity_Harbor_EventScript_156086 + call_if 1, SlateportCity_Harbor_EventScript_156086 msgbox SlateportCity_Harbor_Text_17FE60, 4 - closebutton + closemessage setflag 821 setflag 822 - moveoffscreen 4 - spritebehave 4, 10 + moveobjectoffscreen 4 + setobjectmovementtype 4, 10 releaseall end SlateportCity_Harbor_EventScript_15605C:: @ 815605C - move 4, SlateportCity_Harbor_Movement_1560B3 - waitmove 0 - move 255, SlateportCity_Harbor_Movement_1A0845 - waitmove 0 + applymovement 4, SlateportCity_Harbor_Movement_1560B3 + waitmovement 0 + applymovement 255, SlateportCity_Harbor_Movement_1A0845 + waitmovement 0 return SlateportCity_Harbor_EventScript_156071:: @ 8156071 - move 4, SlateportCity_Harbor_Movement_1560B9 - waitmove 0 - move 255, SlateportCity_Harbor_Movement_1A0843 - waitmove 0 + applymovement 4, SlateportCity_Harbor_Movement_1560B9 + waitmovement 0 + applymovement 255, SlateportCity_Harbor_Movement_1A0843 + waitmovement 0 return SlateportCity_Harbor_EventScript_156086:: @ 8156086 - move 4, SlateportCity_Harbor_Movement_1560BE - waitmove 0 - move 255, SlateportCity_Harbor_Movement_1A0843 - waitmove 0 + applymovement 4, SlateportCity_Harbor_Movement_1560BE + waitmovement 0 + applymovement 255, SlateportCity_Harbor_Movement_1A0843 + waitmovement 0 return SlateportCity_Harbor_Movement_15609B:: @ 815609B @@ -160,7 +160,7 @@ SlateportCity_Harbor_EventScript_1560C4:: @ 81560C4 lock faceplayer checkflag 2052 - jumpeq SlateportCity_Harbor_EventScript_1560D9 + goto_if_eq SlateportCity_Harbor_EventScript_1560D9 msgbox SlateportCity_Harbor_Text_17FA0A, 4 release end @@ -169,14 +169,14 @@ SlateportCity_Harbor_EventScript_1560D9:: @ 81560D9 msgbox SlateportCity_Harbor_Text_17FA73, 4 checkitem ITEM_SS_TICKET, 1 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_156135 + goto_if_eq SlateportCity_Harbor_EventScript_156135 message SlateportCity_Harbor_Text_17FB0A - waittext - jump SlateportCity_Harbor_EventScript_1560FD + waitmessage + goto SlateportCity_Harbor_EventScript_1560FD end SlateportCity_Harbor_EventScript_1560FD:: @ 81560FD - multichoicedef 18, 6, 52, 2, 0 + multichoicedefault 18, 6, 52, 2, 0 switch RESULT case 0, SlateportCity_Harbor_EventScript_15613F case 1, SlateportCity_Harbor_EventScript_156167 @@ -192,7 +192,7 @@ SlateportCity_Harbor_EventScript_156135:: @ 8156135 SlateportCity_Harbor_EventScript_15613F:: @ 815613F msgbox SlateportCity_Harbor_Text_17FB81, 5 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_15618A + goto_if_eq SlateportCity_Harbor_EventScript_15618A setvar 0x40b4, 1 call SlateportCity_Harbor_EventScript_156196 warp SSTidalCorridor, 255, 1, 10 @@ -203,7 +203,7 @@ SlateportCity_Harbor_EventScript_15613F:: @ 815613F SlateportCity_Harbor_EventScript_156167:: @ 8156167 msgbox SlateportCity_Harbor_Text_17FB9C, 5 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_15618A + goto_if_eq SlateportCity_Harbor_EventScript_15618A call SlateportCity_Harbor_EventScript_156196 warp BattleTower_Outside, 255, 19, 23 waitstate @@ -212,23 +212,23 @@ SlateportCity_Harbor_EventScript_156167:: @ 8156167 SlateportCity_Harbor_EventScript_15618A:: @ 815618A message SlateportCity_Harbor_Text_17FBE5 - waittext - jump SlateportCity_Harbor_EventScript_1560FD + waitmessage + goto SlateportCity_Harbor_EventScript_1560FD end SlateportCity_Harbor_EventScript_156196:: @ 8156196 msgbox SlateportCity_Harbor_Text_17FBB6, 4 - closebutton - move LAST_TALKED, SlateportCity_Harbor_Movement_1A0841 - waitmove 0 - pause 30 - spriteinvisible LAST_TALKED, 9, 8 + closemessage + applymovement LAST_TALKED, SlateportCity_Harbor_Movement_1A0841 + waitmovement 0 + delay 30 + hideobject LAST_TALKED, 9, 8 compare FACING, 2 - callif 1, SlateportCity_Harbor_EventScript_1561EF + call_if 1, SlateportCity_Harbor_EventScript_1561EF compare FACING, 4 - callif 1, SlateportCity_Harbor_EventScript_1561E4 - pause 30 - spriteinvisible 255, 0, 0 + call_if 1, SlateportCity_Harbor_EventScript_1561E4 + delay 30 + hideobject 255, 0, 0 setvar 0x8004, 5 call SlateportCity_Harbor_EventScript_1A040E return @@ -239,13 +239,13 @@ SlateportCity_Harbor_EventScript_1561DA:: @ 81561DA end SlateportCity_Harbor_EventScript_1561E4:: @ 81561E4 - move 255, SlateportCity_Harbor_Movement_1561FA - waitmove 0 + applymovement 255, SlateportCity_Harbor_Movement_1561FA + waitmovement 0 return SlateportCity_Harbor_EventScript_1561EF:: @ 81561EF - move 255, SlateportCity_Harbor_Movement_1561FD - waitmove 0 + applymovement 255, SlateportCity_Harbor_Movement_1561FD + waitmovement 0 return SlateportCity_Harbor_Movement_1561FA:: @ 81561FA @@ -269,17 +269,17 @@ SlateportCity_Harbor_EventScript_156211:: @ 8156211 lock faceplayer checkflag 2061 - jumpeq SlateportCity_Harbor_EventScript_15626F + goto_if_eq SlateportCity_Harbor_EventScript_15626F checkflag 271 - jumpeq SlateportCity_Harbor_EventScript_156265 + goto_if_eq SlateportCity_Harbor_EventScript_156265 checkflag 112 - jumpeq SlateportCity_Harbor_EventScript_156258 + goto_if_eq SlateportCity_Harbor_EventScript_156258 compare 0x40a0, 2 - jumpeq SlateportCity_Harbor_EventScript_15624E + goto_if_eq SlateportCity_Harbor_EventScript_15624E msgbox SlateportCity_Harbor_Text_17FD1C, 4 - closebutton - move LAST_TALKED, SlateportCity_Harbor_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, SlateportCity_Harbor_Movement_1A083D + waitmovement 0 release end @@ -301,12 +301,12 @@ SlateportCity_Harbor_EventScript_156265:: @ 8156265 SlateportCity_Harbor_EventScript_15626F:: @ 815626F compare 0x4001, 1 - jumpeq SlateportCity_Harbor_EventScript_156380 + goto_if_eq SlateportCity_Harbor_EventScript_156380 checkitem ITEM_SCANNER, 1 compare RESULT, 1 - jumpeq SlateportCity_Harbor_EventScript_1562A7 + goto_if_eq SlateportCity_Harbor_EventScript_1562A7 checkflag 2052 - jumpeq SlateportCity_Harbor_EventScript_15629D + goto_if_eq SlateportCity_Harbor_EventScript_15629D msgbox SlateportCity_Harbor_Text_18017B, 4 release end @@ -318,8 +318,8 @@ SlateportCity_Harbor_EventScript_15629D:: @ 815629D SlateportCity_Harbor_EventScript_1562A7:: @ 81562A7 message SlateportCity_Harbor_Text_18028B - waittext - jump SlateportCity_Harbor_EventScript_1562B3 + waitmessage + goto SlateportCity_Harbor_EventScript_1562B3 end SlateportCity_Harbor_EventScript_1562B3:: @ 81562B3 @@ -334,27 +334,27 @@ SlateportCity_Harbor_EventScript_1562B3:: @ 81562B3 SlateportCity_Harbor_EventScript_1562EA:: @ 81562EA msgbox SlateportCity_Harbor_Text_1803DD, 5 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_156374 + goto_if_eq SlateportCity_Harbor_EventScript_156374 giveitem ITEM_DEEP_SEA_TOOTH compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_1A029B + goto_if_eq SlateportCity_Harbor_EventScript_1A029B removeitem ITEM_SCANNER, 1 msgbox SlateportCity_Harbor_Text_18046B, 4 setflag 294 - jump SlateportCity_Harbor_EventScript_156380 + goto SlateportCity_Harbor_EventScript_156380 end SlateportCity_Harbor_EventScript_15632A:: @ 815632A msgbox SlateportCity_Harbor_Text_180412, 5 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_156374 + goto_if_eq SlateportCity_Harbor_EventScript_156374 giveitem ITEM_DEEP_SEA_SCALE compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_1A029B + goto_if_eq SlateportCity_Harbor_EventScript_1A029B removeitem ITEM_SCANNER, 1 msgbox SlateportCity_Harbor_Text_18046B, 4 setflag 294 - jump SlateportCity_Harbor_EventScript_156380 + goto SlateportCity_Harbor_EventScript_156380 end SlateportCity_Harbor_EventScript_15636A:: @ 815636A @@ -364,8 +364,8 @@ SlateportCity_Harbor_EventScript_15636A:: @ 815636A SlateportCity_Harbor_EventScript_156374:: @ 8156374 message SlateportCity_Harbor_Text_180447 - waittext - jump SlateportCity_Harbor_EventScript_1562B3 + waitmessage + goto SlateportCity_Harbor_EventScript_1562B3 end SlateportCity_Harbor_EventScript_156380:: @ 8156380 diff --git a/data/scripts/maps/SlateportCity_House1.inc b/data/scripts/maps/SlateportCity_House1.inc index 4161889e1..c72aa229a 100644 --- a/data/scripts/maps/SlateportCity_House1.inc +++ b/data/scripts/maps/SlateportCity_House1.inc @@ -6,9 +6,9 @@ SlateportCity_House1_EventScript_15567B:: @ 815567B faceplayer msgbox SlateportCity_House1_Text_17D46A, 5 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_15569C + goto_if_eq SlateportCity_House1_EventScript_15569C compare RESULT, 0 - jumpeq SlateportCity_House1_EventScript_1556BF + goto_if_eq SlateportCity_House1_EventScript_1556BF end SlateportCity_House1_EventScript_15569C:: @ 815569C @@ -16,9 +16,9 @@ SlateportCity_House1_EventScript_15569C:: @ 815569C special sub_80F9A0C waitstate compare 0x8004, 255 - jumpif 5, SlateportCity_House1_EventScript_1556C9 + goto_if 5, SlateportCity_House1_EventScript_1556C9 compare 0x8004, 255 - jumpeq SlateportCity_House1_EventScript_1556BF + goto_if_eq SlateportCity_House1_EventScript_1556BF end SlateportCity_House1_EventScript_1556BF:: @ 81556BF @@ -27,22 +27,22 @@ SlateportCity_House1_EventScript_1556BF:: @ 81556BF end SlateportCity_House1_EventScript_1556C9:: @ 81556C9 - specialval RESULT, ScriptGetPartyMonSpecies + specialvar RESULT, ScriptGetPartyMonSpecies compare RESULT, SPECIES_EGG - jumpeq SlateportCity_House1_EventScript_15571C + goto_if_eq SlateportCity_House1_EventScript_15571C special sub_80BFAE0 special sub_80BFB10 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_155726 - specialval RESULT, sub_810F96C + goto_if_eq SlateportCity_House1_EventScript_155726 + specialvar RESULT, sub_810F96C special sub_80BFAE0 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_155726 + goto_if_eq SlateportCity_House1_EventScript_155726 msgbox SlateportCity_House1_Text_17D505, 5 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_155730 + goto_if_eq SlateportCity_House1_EventScript_155730 compare RESULT, 0 - jumpeq SlateportCity_House1_EventScript_1556BF + goto_if_eq SlateportCity_House1_EventScript_1556BF end SlateportCity_House1_EventScript_15571C:: @ 815571C @@ -58,10 +58,10 @@ SlateportCity_House1_EventScript_155726:: @ 8155726 SlateportCity_House1_EventScript_155730:: @ 8155730 msgbox SlateportCity_House1_Text_17D580, 4 call SlateportCity_House1_EventScript_1A0678 - specialval RESULT, sub_80BF9B4 + specialvar RESULT, sub_80BF9B4 special sub_80BFAE0 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_15575A + goto_if_eq SlateportCity_House1_EventScript_15575A msgbox SlateportCity_House1_Text_17D63A, 4 release end diff --git a/data/scripts/maps/SlateportCity_House2.inc b/data/scripts/maps/SlateportCity_House2.inc index 2d50f0851..934fae153 100644 --- a/data/scripts/maps/SlateportCity_House2.inc +++ b/data/scripts/maps/SlateportCity_House2.inc @@ -10,7 +10,7 @@ SlateportCity_House2_EventScript_156399:: @ 8156399 faceplayer checkitem ITEM_CONTEST_PASS, 1 compare RESULT, 1 - jumpeq SlateportCity_House2_EventScript_1563B5 + goto_if_eq SlateportCity_House2_EventScript_1563B5 msgbox SlateportCity_House2_Text_180567, 4 release end diff --git a/data/scripts/maps/SlateportCity_Mart.inc b/data/scripts/maps/SlateportCity_Mart.inc index 730afe6d4..39a1d5ba2 100644 --- a/data/scripts/maps/SlateportCity_Mart.inc +++ b/data/scripts/maps/SlateportCity_Mart.inc @@ -5,7 +5,7 @@ SlateportCity_Mart_EventScript_156411:: @ 8156411 lock faceplayer message SlateportCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart SlateportCity_Mart_Items msgbox SlateportCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc index e84f8ccc6..1ee8ff39b 100644 --- a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc +++ b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc @@ -18,59 +18,59 @@ SlateportCity_OceanicMuseum_1F_EventScript_155ADB:: @ 8155ADB SlateportCity_OceanicMuseum_1F_EventScript_155AE4:: @ 8155AE4 lockall - move 255, SlateportCity_OceanicMuseum_1F_Movement_1A083F - waitmove 0 - jump SlateportCity_OceanicMuseum_1F_EventScript_155B06 + applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_1A083F + waitmovement 0 + goto SlateportCity_OceanicMuseum_1F_EventScript_155B06 end SlateportCity_OceanicMuseum_1F_EventScript_155AF5:: @ 8155AF5 lockall - move 255, SlateportCity_OceanicMuseum_1F_Movement_1A0843 - waitmove 0 - jump SlateportCity_OceanicMuseum_1F_EventScript_155B06 + applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_1A0843 + waitmovement 0 + goto SlateportCity_OceanicMuseum_1F_EventScript_155B06 end SlateportCity_OceanicMuseum_1F_EventScript_155B06:: @ 8155B06 - showmoney 0, 0 - snop + showmoneybox 0, 0 + nop msgbox SlateportCity_OceanicMuseum_1F_Text_17E18D, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155B2D - closebutton - hidemoney 0, 0 - move 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D - waitmove 0 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155B2D + closemessage + hidemoneybox 0, 0 + applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D + waitmovement 0 releaseall end SlateportCity_OceanicMuseum_1F_EventScript_155B2D:: @ 8155B2D checkmoney 0x32, 0 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155B5A - paymoney 0x32, 0 - updatemoney 0, 0 - snop + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155B5A + takemoney 0x32, 0 + updatemoneybox 0, 0 + nop msgbox SlateportCity_OceanicMuseum_1F_Text_17E1DE, 4 setvar 0x40aa, 1 - hidemoney 0, 0 + hidemoneybox 0, 0 releaseall end SlateportCity_OceanicMuseum_1F_EventScript_155B5A:: @ 8155B5A checkflag 149 - jumpif 0, SlateportCity_OceanicMuseum_1F_EventScript_155B7B + goto_if 0, SlateportCity_OceanicMuseum_1F_EventScript_155B7B msgbox SlateportCity_OceanicMuseum_1F_Text_17E1F5, 4 - closebutton - hidemoney 0, 0 - move 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D - waitmove 0 + closemessage + hidemoneybox 0, 0 + applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D + waitmovement 0 releaseall end SlateportCity_OceanicMuseum_1F_EventScript_155B7B:: @ 8155B7B msgbox SlateportCity_OceanicMuseum_1F_Text_17E22D, 4 setvar 0x40aa, 1 - hidemoney 0, 0 + hidemoneybox 0, 0 releaseall end @@ -157,40 +157,40 @@ SlateportCity_OceanicMuseum_1F_EventScript_155C31:: @ 8155C31 SlateportCity_OceanicMuseum_1F_EventScript_155C3A:: @ 8155C3A lock faceplayer - pause 8 - playsfx 21 - move 13, SlateportCity_OceanicMuseum_1F_Movement_1A0833 - waitmove 0 - move 13, SlateportCity_OceanicMuseum_1F_Movement_1A0835 - waitmove 0 + delay 8 + playse 21 + applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_1A0833 + waitmovement 0 + applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_1A0835 + waitmovement 0 msgbox SlateportCity_OceanicMuseum_1F_Text_17E582, 4 giveitem ITEM_TM46 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155CC2 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155CC2 setflag 269 msgbox SlateportCity_OceanicMuseum_1F_Text_17E606, 4 - closebutton + closemessage compare FACING, 2 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155C98 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155C98 compare FACING, 2 - jumpif 5, SlateportCity_OceanicMuseum_1F_EventScript_155CAD + goto_if 5, SlateportCity_OceanicMuseum_1F_EventScript_155CAD end SlateportCity_OceanicMuseum_1F_EventScript_155C98:: @ 8155C98 - move 13, SlateportCity_OceanicMuseum_1F_Movement_155CD3 - waitmove 0 + applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_155CD3 + waitmovement 0 setflag 965 - playsfx 9 - disappear 13 + playse 9 + removeobject 13 release end SlateportCity_OceanicMuseum_1F_EventScript_155CAD:: @ 8155CAD - move 13, SlateportCity_OceanicMuseum_1F_Movement_155CCC - waitmove 0 + applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_155CCC + waitmovement 0 setflag 965 - playsfx 9 - disappear 13 + playse 9 + removeobject 13 release end diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc index 57bfbbd03..e379c633d 100644 --- a/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc +++ b/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc @@ -10,82 +10,82 @@ SlateportCity_OceanicMuseum_2F_EventScript_155CE6:: @ 8155CE6 lock faceplayer msgbox SlateportCity_OceanicMuseum_2F_Text_17ECFD, 4 - closebutton - playmusic BGM_EVIL_TEAM, 1 - reappear 3 - move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB4 - waitmove 0 - reappear 4 - move 4, SlateportCity_OceanicMuseum_2F_Movement_155EC3 - waitmove 0 - move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB8 - move 4, SlateportCity_OceanicMuseum_2F_Movement_155EC5 - waitmove 0 + closemessage + playbgm BGM_EVIL_TEAM, 1 + addobject 3 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB4 + waitmovement 0 + addobject 4 + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EC3 + waitmovement 0 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB8 + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EC5 + waitmovement 0 compare FACING, 1 - callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62 + call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62 compare FACING, 4 - callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62 + call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62 msgbox SlateportCity_OceanicMuseum_2F_Text_17EDAE, 4 compare FACING, 4 - callif 5, SlateportCity_OceanicMuseum_2F_EventScript_155E6D + call_if 5, SlateportCity_OceanicMuseum_2F_EventScript_155E6D msgbox SlateportCity_OceanicMuseum_2F_Text_17EDD7, 4 msgbox SlateportCity_OceanicMuseum_2F_Text_17EE01, 4 - closebutton - move 4, SlateportCity_OceanicMuseum_2F_Movement_155EB2 - waitmove 0 + closemessage + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EB2 + waitmovement 0 compare FACING, 1 - callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E78 + call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E78 compare FACING, 3 - callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E83 + call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E83 trainerbattle 3, OPPONENT_MUSEUM_2F_GRUNT_1, 0, SlateportCity_OceanicMuseum_2F_Text_17EE4E msgbox SlateportCity_OceanicMuseum_2F_Text_17EE66, 4 - closebutton - move 4, SlateportCity_OceanicMuseum_2F_Movement_155EBF - waitmove 0 - move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB2 - waitmove 0 + closemessage + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EBF + waitmovement 0 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB2 + waitmovement 0 msgbox SlateportCity_OceanicMuseum_2F_Text_17EEA5, 4 - playmusicbattle 0 + savebgm 0 trainerbattle 3, OPPONENT_MUSEUM_2F_GRUNT_2, 0, SlateportCity_OceanicMuseum_2F_Text_17EED6 - move 3, SlateportCity_OceanicMuseum_2F_Movement_155EBF - waitmove 0 - move 3, SlateportCity_OceanicMuseum_2F_Movement_1A0845 - move 4, SlateportCity_OceanicMuseum_2F_Movement_1A0841 - waitmove 0 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EBF + waitmovement 0 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_1A0845 + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_1A0841 + waitmovement 0 msgbox SlateportCity_OceanicMuseum_2F_Text_17EEEA, 4 - closebutton - pause 35 - reappear 2 - move 2, SlateportCity_OceanicMuseum_2F_Movement_155EA8 - move 4, SlateportCity_OceanicMuseum_2F_Movement_155ECE - waitmove 0 + closemessage + delay 35 + addobject 2 + applymovement 2, SlateportCity_OceanicMuseum_2F_Movement_155EA8 + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155ECE + waitmovement 0 msgbox SlateportCity_OceanicMuseum_2F_Text_17EF62, 4 - move 2, SlateportCity_OceanicMuseum_2F_Movement_155EA6 - waitmove 0 + applymovement 2, SlateportCity_OceanicMuseum_2F_Movement_155EA6 + waitmovement 0 .ifdef SAPPHIRE msgbox SlateportCity_OceanicMuseum_2F_Text_17EFC9, 4 .else msgbox SlateportCity_OceanicMuseum_2F_Text_17F17E, 4 .endif - closebutton + closemessage fadescreen 1 - disappear 2 - disappear 3 - disappear 4 + removeobject 2 + removeobject 3 + removeobject 4 fadescreen 0 - pause 30 + delay 30 setflag 883 - move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0843 - waitmove 0 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0843 + waitmovement 0 msgbox SlateportCity_OceanicMuseum_2F_Text_17F352, 4 setvar 0x8004, 269 call SlateportCity_OceanicMuseum_2F_EventScript_1A067F msgbox SlateportCity_OceanicMuseum_2F_Text_17F433, 4 - closebutton - move 1, SlateportCity_OceanicMuseum_2F_Movement_155E98 - waitmove 0 - playsfx 9 - disappear 1 + closemessage + applymovement 1, SlateportCity_OceanicMuseum_2F_Movement_155E98 + waitmovement 0 + playse 9 + removeobject 1 setflag 900 setflag 149 clearflag 947 @@ -94,23 +94,23 @@ SlateportCity_OceanicMuseum_2F_EventScript_155CE6:: @ 8155CE6 end SlateportCity_OceanicMuseum_2F_EventScript_155E62:: @ 8155E62 - move 255, SlateportCity_OceanicMuseum_2F_Movement_1A083F - waitmove 0 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A083F + waitmovement 0 return SlateportCity_OceanicMuseum_2F_EventScript_155E6D:: @ 8155E6D - move 1, SlateportCity_OceanicMuseum_2F_Movement_1A083F - waitmove 0 + applymovement 1, SlateportCity_OceanicMuseum_2F_Movement_1A083F + waitmovement 0 return SlateportCity_OceanicMuseum_2F_EventScript_155E78:: @ 8155E78 - move 255, SlateportCity_OceanicMuseum_2F_Movement_155E8E - waitmove 0 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_155E8E + waitmovement 0 return SlateportCity_OceanicMuseum_2F_EventScript_155E83:: @ 8155E83 - move 255, SlateportCity_OceanicMuseum_2F_Movement_155E92 - waitmove 0 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_155E92 + waitmovement 0 return SlateportCity_OceanicMuseum_2F_Movement_155E8E:: @ 8155E8E @@ -265,8 +265,8 @@ SlateportCity_OceanicMuseum_2F_EventScript_155F46:: @ 8155F46 lock faceplayer msgbox SlateportCity_OceanicMuseum_2F_Text_17F53B, 4 - closebutton - move LAST_TALKED, SlateportCity_OceanicMuseum_2F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, SlateportCity_OceanicMuseum_2F_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc b/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc index c550a6850..9aa326f70 100644 --- a/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ SlateportCity_PokemonCenter_1F_MapScript1_1563C5:: @ 81563C5 SlateportCity_PokemonCenter_1F_EventScript_1563CE:: @ 81563CE setvar 0x800b, 1 call SlateportCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/SlateportCity_PokemonFanClub.inc b/data/scripts/maps/SlateportCity_PokemonFanClub.inc index 0a7466a3b..4195ad43a 100644 --- a/data/scripts/maps/SlateportCity_PokemonFanClub.inc +++ b/data/scripts/maps/SlateportCity_PokemonFanClub.inc @@ -18,27 +18,27 @@ SlateportCity_PokemonFanClub_EventScript_15576B:: @ 815576B SlateportCity_PokemonFanClub_EventScript_155795:: @ 8155795 setvar 0x40b7, 1 msgbox SlateportCity_PokemonFanClub_Text_17D773, 4 - jump SlateportCity_PokemonFanClub_EventScript_155808 + goto SlateportCity_PokemonFanClub_EventScript_155808 end SlateportCity_PokemonFanClub_EventScript_1557A8:: @ 81557A8 setvar 0x4002, 0 checkflag 204 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 checkflag 203 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 checkflag 202 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 checkflag 201 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 checkflag 200 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 compare 0x4002, 5 - callif 1, SlateportCity_PokemonFanClub_EventScript_15588D + call_if 1, SlateportCity_PokemonFanClub_EventScript_15588D compare 0x40b7, 2 - jumpeq SlateportCity_PokemonFanClub_EventScript_1557FE + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1557FE msgbox SlateportCity_PokemonFanClub_Text_17DA14, 4 - jump SlateportCity_PokemonFanClub_EventScript_155808 + goto SlateportCity_PokemonFanClub_EventScript_155808 end SlateportCity_PokemonFanClub_EventScript_1557FE:: @ 81557FE @@ -50,16 +50,16 @@ SlateportCity_PokemonFanClub_EventScript_155808:: @ 8155808 msgbox SlateportCity_PokemonFanClub_Text_17DA49, 4 setvar 0x4001, 0 checkflag 204 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559FE + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559FE checkflag 203 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559E7 + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559E7 checkflag 202 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559D0 + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559D0 checkflag 201 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559B9 + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559B9 checkflag 200 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559A2 - bufferfirstpoke 0 + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559A2 + getfirstpartypokename 0 switch 0x4001 case 0, SlateportCity_PokemonFanClub_EventScript_155899 case 1, SlateportCity_PokemonFanClub_EventScript_1558A3 @@ -86,7 +86,7 @@ SlateportCity_PokemonFanClub_EventScript_155899:: @ 8155899 SlateportCity_PokemonFanClub_EventScript_1558A3:: @ 81558A3 checkitemspace ITEM_RED_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 200 giveitem ITEM_RED_SCARF @@ -97,7 +97,7 @@ SlateportCity_PokemonFanClub_EventScript_1558A3:: @ 81558A3 SlateportCity_PokemonFanClub_EventScript_1558D4:: @ 81558D4 checkitemspace ITEM_BLUE_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 201 giveitem ITEM_BLUE_SCARF @@ -108,7 +108,7 @@ SlateportCity_PokemonFanClub_EventScript_1558D4:: @ 81558D4 SlateportCity_PokemonFanClub_EventScript_155905:: @ 8155905 checkitemspace ITEM_PINK_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 202 giveitem ITEM_PINK_SCARF @@ -119,7 +119,7 @@ SlateportCity_PokemonFanClub_EventScript_155905:: @ 8155905 SlateportCity_PokemonFanClub_EventScript_155936:: @ 8155936 checkitemspace ITEM_GREEN_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 203 giveitem ITEM_GREEN_SCARF @@ -130,7 +130,7 @@ SlateportCity_PokemonFanClub_EventScript_155936:: @ 8155936 SlateportCity_PokemonFanClub_EventScript_155967:: @ 8155967 checkitemspace ITEM_YELLOW_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 204 giveitem ITEM_YELLOW_SCARF @@ -144,9 +144,9 @@ SlateportCity_PokemonFanClub_EventScript_155998:: @ 8155998 end SlateportCity_PokemonFanClub_EventScript_1559A2:: @ 81559A2 - specialval RESULT, CheckLeadMonCool + specialvar RESULT, CheckLeadMonCool compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_1559B3 + call_if 1, SlateportCity_PokemonFanClub_EventScript_1559B3 return SlateportCity_PokemonFanClub_EventScript_1559B3:: @ 81559B3 @@ -154,9 +154,9 @@ SlateportCity_PokemonFanClub_EventScript_1559B3:: @ 81559B3 return SlateportCity_PokemonFanClub_EventScript_1559B9:: @ 81559B9 - specialval RESULT, CheckLeadMonBeauty + specialvar RESULT, CheckLeadMonBeauty compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_1559CA + call_if 1, SlateportCity_PokemonFanClub_EventScript_1559CA return SlateportCity_PokemonFanClub_EventScript_1559CA:: @ 81559CA @@ -164,9 +164,9 @@ SlateportCity_PokemonFanClub_EventScript_1559CA:: @ 81559CA return SlateportCity_PokemonFanClub_EventScript_1559D0:: @ 81559D0 - specialval RESULT, CheckLeadMonCute + specialvar RESULT, CheckLeadMonCute compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_1559E1 + call_if 1, SlateportCity_PokemonFanClub_EventScript_1559E1 return SlateportCity_PokemonFanClub_EventScript_1559E1:: @ 81559E1 @@ -174,9 +174,9 @@ SlateportCity_PokemonFanClub_EventScript_1559E1:: @ 81559E1 return SlateportCity_PokemonFanClub_EventScript_1559E7:: @ 81559E7 - specialval RESULT, CheckLeadMonSmart + specialvar RESULT, CheckLeadMonSmart compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_1559F8 + call_if 1, SlateportCity_PokemonFanClub_EventScript_1559F8 return SlateportCity_PokemonFanClub_EventScript_1559F8:: @ 81559F8 @@ -184,9 +184,9 @@ SlateportCity_PokemonFanClub_EventScript_1559F8:: @ 81559F8 return SlateportCity_PokemonFanClub_EventScript_1559FE:: @ 81559FE - specialval RESULT, CheckLeadMonTough + specialvar RESULT, CheckLeadMonTough compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_155A0F + call_if 1, SlateportCity_PokemonFanClub_EventScript_155A0F return SlateportCity_PokemonFanClub_EventScript_155A0F:: @ 8155A0F @@ -197,24 +197,24 @@ SlateportCity_PokemonFanClub_EventScript_155A15:: @ 8155A15 lock faceplayer checkflag 278 - jumpeq SlateportCity_PokemonFanClub_EventScript_155A75 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155A75 msgbox SlateportCity_PokemonFanClub_Text_17DE6B, 4 - specialval RESULT, GetLeadMonFriendshipScore + specialvar RESULT, GetLeadMonFriendshipScore compare RESULT, 4 - jumpif 4, SlateportCity_PokemonFanClub_EventScript_155A3A + goto_if 4, SlateportCity_PokemonFanClub_EventScript_155A3A release end SlateportCity_PokemonFanClub_EventScript_155A3A:: @ 8155A3A - playsfx 21 - move LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0833 - waitmove 0 - move LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0835 - waitmove 0 + playse 21 + applymovement LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0833 + waitmovement 0 + applymovement LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0835 + waitmovement 0 msgbox SlateportCity_PokemonFanClub_Text_17DF57, 4 giveitem ITEM_SOOTHE_BELL compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1A029B + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1A029B setflag 278 release end @@ -235,8 +235,8 @@ SlateportCity_PokemonFanClub_EventScript_155A88:: @ 8155A88 SlateportCity_PokemonFanClub_EventScript_155A91:: @ 8155A91 lock faceplayer - checksound - pokecry SPECIES_SKITTY, 0 + waitse + playpokecry SPECIES_SKITTY, 0 msgbox SlateportCity_PokemonFanClub_Text_17E14E, 4 waitpokecry release @@ -245,8 +245,8 @@ SlateportCity_PokemonFanClub_EventScript_155A91:: @ 8155A91 SlateportCity_PokemonFanClub_EventScript_155AA4:: @ 8155AA4 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox SlateportCity_PokemonFanClub_Text_17E164, 4 waitpokecry release @@ -255,8 +255,8 @@ SlateportCity_PokemonFanClub_EventScript_155AA4:: @ 8155AA4 SlateportCity_PokemonFanClub_EventScript_155AB7:: @ 8155AB7 lock faceplayer - checksound - pokecry SPECIES_AZUMARILL, 0 + waitse + playpokecry SPECIES_AZUMARILL, 0 msgbox SlateportCity_PokemonFanClub_Text_17E178, 4 waitpokecry release diff --git a/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc b/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc index 4c0596d29..9fe7f1f1a 100644 --- a/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc +++ b/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc @@ -4,52 +4,52 @@ SlateportCity_SternsShipyard_1F_MapScripts:: @ 8155335 SlateportCity_SternsShipyard_1F_EventScript_155336:: @ 8155336 lockall checkflag 2052 - jumpeq SlateportCity_SternsShipyard_1F_EventScript_155388 + goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_155388 checkflag 2061 - jumpeq SlateportCity_SternsShipyard_1F_EventScript_15539C + goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_15539C checkflag 149 - jumpeq SlateportCity_SternsShipyard_1F_EventScript_1553CF + goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_1553CF checkflag 148 - jumpeq SlateportCity_SternsShipyard_1F_EventScript_1553B0 + goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_1553B0 msgbox SlateportCity_SternsShipyard_1F_Text_17C14B, 4 - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C1EC, 4 - closebutton - move 1, SlateportCity_SternsShipyard_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A083D + waitmovement 0 setflag 148 setflag 882 releaseall end SlateportCity_SternsShipyard_1F_EventScript_155388:: @ 8155388 - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C472, 4 releaseall end SlateportCity_SternsShipyard_1F_EventScript_15539C:: @ 815539C - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C3F7, 4 releaseall end SlateportCity_SternsShipyard_1F_EventScript_1553B0:: @ 81553B0 - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C2F2, 4 - closebutton - move 1, SlateportCity_SternsShipyard_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_SternsShipyard_1F_EventScript_1553CF:: @ 81553CF - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C360, 4 releaseall end diff --git a/data/scripts/maps/SootopolisCity.inc b/data/scripts/maps/SootopolisCity.inc index 0c22fbc37..bddc5965d 100644 --- a/data/scripts/maps/SootopolisCity.inc +++ b/data/scripts/maps/SootopolisCity.inc @@ -6,19 +6,19 @@ SootopolisCity_MapScripts:: @ 814D07D SootopolisCity_MapScript1_14D08D:: @ 814D08D checkflag 129 - callif 0, SootopolisCity_EventScript_14D0A0 + call_if 0, SootopolisCity_EventScript_14D0A0 checkflag 129 - callif 1, SootopolisCity_EventScript_14D0B1 + call_if 1, SootopolisCity_EventScript_14D0B1 end SootopolisCity_EventScript_14D0A0:: @ 814D0A0 - movespriteperm 3, 31, 18 + setobjectxyperm 3, 31, 18 setmaptile 31, 32, 592, 1 return SootopolisCity_EventScript_14D0B1:: @ 814D0B1 checkflag 113 - callif 0, SootopolisCity_EventScript_14D0BB + call_if 0, SootopolisCity_EventScript_14D0BB return SootopolisCity_EventScript_14D0BB:: @ 814D0BB @@ -36,40 +36,40 @@ SootopolisCity_EventScript_14D0BB:: @ 814D0BB SootopolisCity_MapScript1_14D10D:: @ 814D10D setflag 2077 checkflag 113 - callif 1, SootopolisCity_EventScript_14D159 + call_if 1, SootopolisCity_EventScript_14D159 checkflag 2090 - callif 1, SootopolisCity_EventScript_14D123 + call_if 1, SootopolisCity_EventScript_14D123 end SootopolisCity_EventScript_14D123:: @ 814D123 call SootopolisCity_EventScript_1A02C1 - movespriteperm 1, 29, 19 - movespriteperm 2, 33, 19 + setobjectxyperm 1, 29, 19 + setobjectxyperm 2, 33, 19 compare 0x405e, 1 - callif 1, SootopolisCity_EventScript_14D142 + call_if 1, SootopolisCity_EventScript_14D142 return SootopolisCity_EventScript_14D142:: @ 814D142 - movespriteperm 10, 29, 6 - spritebehave 10, 10 - movespriteperm 5, 30, 6 - spritebehave 5, 9 + setobjectxyperm 10, 29, 6 + setobjectmovementtype 10, 10 + setobjectxyperm 5, 30, 6 + setobjectmovementtype 5, 9 return SootopolisCity_EventScript_14D159:: @ 814D159 - movespriteperm 10, 31, 33 - spritebehave 10, 8 + setobjectxyperm 10, 31, 33 + setobjectmovementtype 10, 8 return SootopolisCity_MapScript1_14D165:: @ 814D165 - warp4 Underwater_SootopolisCity, 255, 9, 6 + setdivewarp Underwater_SootopolisCity, 255, 9, 6 end SootopolisCity_EventScript_14D16E:: @ 814D16E lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D183 + goto_if_eq SootopolisCity_EventScript_14D183 msgbox SootopolisCity_Text_1696A4, 4 release end @@ -90,30 +90,30 @@ SootopolisCity_EventScript_14D196:: @ 814D196 SootopolisCity_EventScript_14D19F:: @ 814D19F lock faceplayer - checkdailyflags + dodailyevents special GetPlayerBigGuyGirlString checkflag 2258 - jumpeq SootopolisCity_EventScript_14D241 + goto_if_eq SootopolisCity_EventScript_14D241 msgbox SootopolisCity_Text_1C63F2, 4 random 10 addvar RESULT, 20 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq SootopolisCity_EventScript_1A029B + goto_if_eq SootopolisCity_EventScript_1A029B setflag 2258 msgbox SootopolisCity_Text_1C64D0, 4 random 2 compare RESULT, 0 - jumpeq SootopolisCity_EventScript_14D1FF + goto_if_eq SootopolisCity_EventScript_14D1FF compare RESULT, 1 - jumpeq SootopolisCity_EventScript_14D220 + goto_if_eq SootopolisCity_EventScript_14D220 end SootopolisCity_EventScript_14D1FF:: @ 814D1FF giveitem ITEM_FIGY_BERRY compare RESULT, 0 - jumpeq SootopolisCity_EventScript_1A029B + goto_if_eq SootopolisCity_EventScript_1A029B msgbox SootopolisCity_Text_1C650B, 4 release end @@ -121,7 +121,7 @@ SootopolisCity_EventScript_14D1FF:: @ 814D1FF SootopolisCity_EventScript_14D220:: @ 814D220 giveitem ITEM_IAPAPA_BERRY compare RESULT, 0 - jumpeq SootopolisCity_EventScript_1A029B + goto_if_eq SootopolisCity_EventScript_1A029B msgbox SootopolisCity_Text_1C650B, 4 release end @@ -129,7 +129,7 @@ SootopolisCity_EventScript_14D220:: @ 814D220 SootopolisCity_EventScript_14D241:: @ 814D241 msgbox SootopolisCity_Text_1C6540, 5 compare RESULT, 1 - jumpeq SootopolisCity_EventScript_14D25E + goto_if_eq SootopolisCity_EventScript_14D25E msgbox SootopolisCity_Text_1C6626, 4 release end @@ -143,7 +143,7 @@ SootopolisCity_EventScript_14D268:: @ 814D268 lock faceplayer checkflag 1236 - jumpeq SootopolisCity_EventScript_14D27D + goto_if_eq SootopolisCity_EventScript_14D27D msgbox SootopolisCity_Text_16A4D6, 4 release end @@ -157,7 +157,7 @@ SootopolisCity_EventScript_14D287:: @ 814D287 lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D29C + goto_if_eq SootopolisCity_EventScript_14D29C msgbox SootopolisCity_Text_169813, 4 release end @@ -171,7 +171,7 @@ SootopolisCity_EventScript_14D2A6:: @ 814D2A6 lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D2BB + goto_if_eq SootopolisCity_EventScript_14D2BB msgbox SootopolisCity_Text_1698A0, 4 release end @@ -185,7 +185,7 @@ SootopolisCity_EventScript_14D2C5:: @ 814D2C5 lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D2DA + goto_if_eq SootopolisCity_EventScript_14D2DA msgbox SootopolisCity_Text_1697A7, 4 release end @@ -213,81 +213,81 @@ ClosedSootopolisGymDoorScript:: @ 814D2FF SootopolisCity_EventScript_14D308:: @ 814D308 lockall - move 10, SootopolisCity_Movement_1A083F - move 255, SootopolisCity_Movement_1A0843 - waitmove 0 - playsfx 21 - move 10, SootopolisCity_Movement_1A0833 - waitmove 0 - move 10, SootopolisCity_Movement_1A0835 - waitmove 0 - move 10, SootopolisCity_Movement_14D413 - waitmove 0 + applymovement 10, SootopolisCity_Movement_1A083F + applymovement 255, SootopolisCity_Movement_1A0843 + waitmovement 0 + playse 21 + applymovement 10, SootopolisCity_Movement_1A0833 + waitmovement 0 + applymovement 10, SootopolisCity_Movement_1A0835 + waitmovement 0 + applymovement 10, SootopolisCity_Movement_14D413 + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169988, 4 .else msgbox SootopolisCity_Text_169E0F, 4 .endif - closebutton - move 10, SootopolisCity_Movement_14D417 - move 255, SootopolisCity_Movement_14D440 - waitmove 10 + closemessage + applymovement 10, SootopolisCity_Movement_14D417 + applymovement 255, SootopolisCity_Movement_14D440 + waitmovement 10 .ifdef SAPPHIRE msgbox SootopolisCity_Text_1699FD, 4 .else msgbox SootopolisCity_Text_169E82, 4 .endif - playsfx 21 - move 5, SootopolisCity_Movement_1A0833 - waitmove 0 - move 5, SootopolisCity_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 5, SootopolisCity_Movement_1A0833 + waitmovement 0 + applymovement 5, SootopolisCity_Movement_1A0835 + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169AB7, 4 .else msgbox SootopolisCity_Text_169F3C, 4 .endif - closebutton - pause 30 - move 5, SootopolisCity_Movement_14D46A - move 10, SootopolisCity_Movement_14D41D - move 255, SootopolisCity_Movement_14D445 - waitmove 0 - move 5, SootopolisCity_Movement_1A0843 - move 255, SootopolisCity_Movement_1A0843 - waitmove 0 - pause 30 - move 10, SootopolisCity_Movement_1A0845 - waitmove 0 + closemessage + delay 30 + applymovement 5, SootopolisCity_Movement_14D46A + applymovement 10, SootopolisCity_Movement_14D41D + applymovement 255, SootopolisCity_Movement_14D445 + waitmovement 0 + applymovement 5, SootopolisCity_Movement_1A0843 + applymovement 255, SootopolisCity_Movement_1A0843 + waitmovement 0 + delay 30 + applymovement 10, SootopolisCity_Movement_1A0845 + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169AE7, 4 .else msgbox SootopolisCity_Text_169F6B, 4 .endif - closebutton - pause 30 - move 5, SootopolisCity_Movement_14D47C - move 255, SootopolisCity_Movement_14D457 - move 10, SootopolisCity_Movement_14D42D - waitmove 0 - move 5, SootopolisCity_Movement_1A083F - waitmove 0 + closemessage + delay 30 + applymovement 5, SootopolisCity_Movement_14D47C + applymovement 255, SootopolisCity_Movement_14D457 + applymovement 10, SootopolisCity_Movement_14D42D + waitmovement 0 + applymovement 5, SootopolisCity_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169BC7, 4 .else msgbox SootopolisCity_Text_16A06C, 4 .endif - move 255, SootopolisCity_Movement_1A083F - waitmove 0 + applymovement 255, SootopolisCity_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169C99, 4 .else msgbox SootopolisCity_Text_16A13E, 4 .endif - moveoffscreen 5 - spritebehave 5, 9 - moveoffscreen 10 - spritebehave 10, 10 + moveobjectoffscreen 5 + setobjectmovementtype 5, 9 + moveobjectoffscreen 10 + setobjectmovementtype 10, 10 setvar 0x405e, 2 releaseall end @@ -446,7 +446,7 @@ SootopolisCity_EventScript_14D498:: @ 814D498 lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D4AD + goto_if_eq SootopolisCity_EventScript_14D4AD .ifdef SAPPHIRE msgbox SootopolisCity_Text_169DA6, 4 .else @@ -457,14 +457,14 @@ SootopolisCity_EventScript_14D498:: @ 814D498 SootopolisCity_EventScript_14D4AD:: @ 814D4AD msgbox SootopolisCity_Text_16A33E, 4 - closebutton - move LAST_TALKED, SootopolisCity_Movement_1A0845 - waitmove 0 - pause 50 - setanimation 0, 1 - doanimation 30 - pause 15 - disappear LAST_TALKED - checkanimation 30 + closemessage + applymovement LAST_TALKED, SootopolisCity_Movement_1A0845 + waitmovement 0 + delay 50 + setfieldeffect 0, 1 + dofieldeffect 30 + delay 15 + removeobject LAST_TALKED + waitfieldeffect 30 release end diff --git a/data/scripts/maps/SootopolisCity_Gym_1F.inc b/data/scripts/maps/SootopolisCity_Gym_1F.inc index 32bf4d619..51b67ee4b 100644 --- a/data/scripts/maps/SootopolisCity_Gym_1F.inc +++ b/data/scripts/maps/SootopolisCity_Gym_1F.inc @@ -20,11 +20,11 @@ SootopolisCity_Gym_1F_MapScript1_15AF25:: @ 815AF25 SootopolisCity_Gym_1F_EventScript_15AF2E:: @ 815AF2E compare 0x4022, 8 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF85 + goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF85 compare 0x4022, 28 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF73 + goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF73 compare 0x4022, 69 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF61 + goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF61 setmaptile 8, 4, 519, 0 setmaptile 8, 5, 519, 0 @@ -48,35 +48,35 @@ SootopolisCity_Gym_1F_MapScript2_15AF86:: @ 815AF86 SootopolisCity_Gym_1F_EventScript_15AFA8:: @ 815AFA8 addvar 0x4022, 1 - pause 40 - playsfx 40 + delay 40 + playse 40 call SootopolisCity_Gym_1F_EventScript_15AF2E special DrawWholeMapView end SootopolisCity_Gym_1F_EventScript_15AFBC:: @ 815AFBC addvar 0x4022, 1 - pause 40 - playsfx 40 + delay 40 + playse 40 call SootopolisCity_Gym_1F_EventScript_15AF2E special DrawWholeMapView end SootopolisCity_Gym_1F_EventScript_15AFD0:: @ 815AFD0 addvar 0x4022, 1 - pause 40 - playsfx 40 + delay 40 + playse 40 call SootopolisCity_Gym_1F_EventScript_15AF2E special DrawWholeMapView end SootopolisCity_Gym_1F_EventScript_15AFE4:: @ 815AFE4 lockall - pause 20 - move 255, SootopolisCity_Gym_1F_Movement_15AFFD - waitmove 0 - playsfx 43 - pause 60 + delay 20 + applymovement 255, SootopolisCity_Gym_1F_Movement_15AFFD + waitmovement 0 + playse 43 + delay 60 warphole SootopolisCity_Gym_B1F waitstate end @@ -88,29 +88,29 @@ SootopolisCity_Gym_1F_Movement_15AFFD:: @ 815AFFD SootopolisCity_Gym_1F_EventScript_15AFFF:: @ 815AFFF trainerbattle 1, OPPONENT_WALLACE, 0, SootopolisCity_Gym_1F_Text_18F0CA, SootopolisCity_Gym_1F_Text_18F282, SootopolisCity_Gym_1F_EventScript_15B02D checkflag 172 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15B056 + goto_if 0, SootopolisCity_Gym_1F_EventScript_15B056 checkflag 2060 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15B07A + goto_if 0, SootopolisCity_Gym_1F_EventScript_15B07A msgbox SootopolisCity_Gym_1F_Text_18F4D7, 4 release end SootopolisCity_Gym_1F_EventScript_15B02D:: @ 815B02D message SootopolisCity_Gym_1F_Text_18F342 - waittext + waitmessage call SootopolisCity_Gym_1F_EventScript_1A02C5 msgbox SootopolisCity_Gym_1F_Text_18F36B, 4 setflag 1236 setflag 2062 setvar 0x8008, 8 call SootopolisCity_Gym_1F_EventScript_1A01C0 - jump SootopolisCity_Gym_1F_EventScript_15B056 + goto SootopolisCity_Gym_1F_EventScript_15B056 end SootopolisCity_Gym_1F_EventScript_15B056:: @ 815B056 giveitem ITEM_TM03 compare RESULT, 0 - jumpeq SootopolisCity_Gym_1F_EventScript_1A029B + goto_if_eq SootopolisCity_Gym_1F_EventScript_1A029B msgbox SootopolisCity_Gym_1F_Text_18F466, 4 setflag 172 release @@ -125,7 +125,7 @@ SootopolisCity_Gym_1F_EventScript_15B084:: @ 815B084 lock faceplayer checkflag 1236 - jumpeq SootopolisCity_Gym_1F_EventScript_15B099 + goto_if_eq SootopolisCity_Gym_1F_EventScript_15B099 msgbox SootopolisCity_Gym_1F_Text_18E8A5, 4 release end @@ -138,15 +138,15 @@ SootopolisCity_Gym_1F_EventScript_15B099:: @ 815B099 SootopolisCity_Gym_1F_EventScript_15B0A3:: @ 815B0A3 lockall checkflag 2062 - jumpeq SootopolisCity_Gym_1F_EventScript_15B0C3 - jump SootopolisCity_Gym_1F_EventScript_15B0CD + goto_if_eq SootopolisCity_Gym_1F_EventScript_15B0C3 + goto SootopolisCity_Gym_1F_EventScript_15B0CD end SootopolisCity_Gym_1F_EventScript_15B0B3:: @ 815B0B3 lockall checkflag 2062 - jumpeq SootopolisCity_Gym_1F_EventScript_15B0C3 - jump SootopolisCity_Gym_1F_EventScript_15B0CD + goto_if_eq SootopolisCity_Gym_1F_EventScript_15B0C3 + goto SootopolisCity_Gym_1F_EventScript_15B0CD end SootopolisCity_Gym_1F_EventScript_15B0C3:: @ 815B0C3 diff --git a/data/scripts/maps/SootopolisCity_House1.inc b/data/scripts/maps/SootopolisCity_House1.inc index 604f04c4f..4877d6d6e 100644 --- a/data/scripts/maps/SootopolisCity_House1.inc +++ b/data/scripts/maps/SootopolisCity_House1.inc @@ -5,7 +5,7 @@ SootopolisCity_House1_EventScript_15B29B:: @ 815B29B lock faceplayer checkflag 121 - jumpeq SootopolisCity_House1_EventScript_15B2C7 + goto_if_eq SootopolisCity_House1_EventScript_15B2C7 msgbox SootopolisCity_House1_Text_18F991, 4 giveitem ITEM_TM31 setflag 121 @@ -21,8 +21,8 @@ SootopolisCity_House1_EventScript_15B2C7:: @ 815B2C7 SootopolisCity_House1_EventScript_15B2D1:: @ 815B2D1 lock faceplayer - checksound - pokecry SPECIES_KECLEON, 0 + waitse + playpokecry SPECIES_KECLEON, 0 msgbox SootopolisCity_House1_Text_18FA50, 4 waitpokecry release diff --git a/data/scripts/maps/SootopolisCity_House2.inc b/data/scripts/maps/SootopolisCity_House2.inc index 409a871a8..011806291 100644 --- a/data/scripts/maps/SootopolisCity_House2.inc +++ b/data/scripts/maps/SootopolisCity_House2.inc @@ -6,9 +6,9 @@ SootopolisCity_House2_EventScript_15B2E5:: @ 815B2E5 faceplayer msgbox SootopolisCity_House2_Text_18FA66, 5 compare RESULT, 1 - callif 1, SootopolisCity_House2_EventScript_15B307 + call_if 1, SootopolisCity_House2_EventScript_15B307 compare RESULT, 0 - callif 1, SootopolisCity_House2_EventScript_15B310 + call_if 1, SootopolisCity_House2_EventScript_15B310 release end diff --git a/data/scripts/maps/SootopolisCity_House3.inc b/data/scripts/maps/SootopolisCity_House3.inc index 88e35730e..f1bf0bf19 100644 --- a/data/scripts/maps/SootopolisCity_House3.inc +++ b/data/scripts/maps/SootopolisCity_House3.inc @@ -6,7 +6,7 @@ SootopolisCity_House3_EventScript_15B31A:: @ 815B31A faceplayer msgbox SootopolisCity_House3_Text_18FB36, 5 compare RESULT, 1 - jumpeq SootopolisCity_House3_EventScript_15B339 + goto_if_eq SootopolisCity_House3_EventScript_15B339 msgbox SootopolisCity_House3_Text_18FBC0, 4 release end diff --git a/data/scripts/maps/SootopolisCity_House4.inc b/data/scripts/maps/SootopolisCity_House4.inc index ee3bfe61b..c192a0340 100644 --- a/data/scripts/maps/SootopolisCity_House4.inc +++ b/data/scripts/maps/SootopolisCity_House4.inc @@ -12,8 +12,8 @@ SootopolisCity_House4_EventScript_15B356:: @ 815B356 SootopolisCity_House4_EventScript_15B35F:: @ 815B35F lock faceplayer - checksound - pokecry SPECIES_AZUMARILL, 0 + waitse + playpokecry SPECIES_AZUMARILL, 0 msgbox SootopolisCity_House4_Text_18FDD8, 4 waitpokecry release diff --git a/data/scripts/maps/SootopolisCity_House6.inc b/data/scripts/maps/SootopolisCity_House6.inc index cccfa78ee..a0fdc5ca4 100644 --- a/data/scripts/maps/SootopolisCity_House6.inc +++ b/data/scripts/maps/SootopolisCity_House6.inc @@ -5,14 +5,14 @@ SootopolisCity_House6_EventScript_15B386:: @ 815B386 lock faceplayer checkflag 245 - jumpeq SootopolisCity_House6_EventScript_15B3CD + goto_if_eq SootopolisCity_House6_EventScript_15B3CD msgbox SootopolisCity_House6_Text_18FEA1, 5 compare RESULT, 0 - callif 1, SootopolisCity_House6_EventScript_15B3C3 + call_if 1, SootopolisCity_House6_EventScript_15B3C3 msgbox SootopolisCity_House6_Text_18FF12, 4 givedecoration 117 compare RESULT, 0 - jumpeq SootopolisCity_House6_EventScript_15B3D7 + goto_if_eq SootopolisCity_House6_EventScript_15B3D7 setflag 245 release end @@ -28,7 +28,7 @@ SootopolisCity_House6_EventScript_15B3CD:: @ 815B3CD end SootopolisCity_House6_EventScript_15B3D7:: @ 815B3D7 - bufferdecor 1, 117 + getdecorname 1, 117 msgbox SootopolisCity_House6_Text_1A0CEF, 4 msgbox SootopolisCity_House6_Text_18FF28, 4 release diff --git a/data/scripts/maps/SootopolisCity_House8.inc b/data/scripts/maps/SootopolisCity_House8.inc index 9d7618316..df536004e 100644 --- a/data/scripts/maps/SootopolisCity_House8.inc +++ b/data/scripts/maps/SootopolisCity_House8.inc @@ -10,14 +10,14 @@ SootopolisCity_House8_EventScript_15B401:: @ 815B401 waitstate copyvar RESULT, 0x8004 compare RESULT, 255 - jumpeq SootopolisCity_House8_EventScript_15B448 + goto_if_eq SootopolisCity_House8_EventScript_15B448 special CompareShroomishSize compare RESULT, 1 - jumpeq SootopolisCity_House8_EventScript_15B452 + goto_if_eq SootopolisCity_House8_EventScript_15B452 compare RESULT, 2 - jumpeq SootopolisCity_House8_EventScript_15B45C + goto_if_eq SootopolisCity_House8_EventScript_15B45C compare RESULT, 3 - jumpeq SootopolisCity_House8_EventScript_15B466 + goto_if_eq SootopolisCity_House8_EventScript_15B466 release end @@ -40,8 +40,8 @@ SootopolisCity_House8_EventScript_15B466:: @ 815B466 msgbox SootopolisCity_House8_Text_19021D, 4 giveitem ITEM_ELIXIR compare RESULT, 0 - jumpeq SootopolisCity_House8_EventScript_15B488 - closebutton + goto_if_eq SootopolisCity_House8_EventScript_15B488 + closemessage release end @@ -59,14 +59,14 @@ SootopolisCity_House8_EventScript_15B492:: @ 815B492 waitstate copyvar RESULT, 0x8004 compare RESULT, 255 - jumpeq SootopolisCity_House8_EventScript_15B4D9 + goto_if_eq SootopolisCity_House8_EventScript_15B4D9 special CompareBarboachSize compare RESULT, 1 - jumpeq SootopolisCity_House8_EventScript_15B4E3 + goto_if_eq SootopolisCity_House8_EventScript_15B4E3 compare RESULT, 2 - jumpeq SootopolisCity_House8_EventScript_15B4ED + goto_if_eq SootopolisCity_House8_EventScript_15B4ED compare RESULT, 3 - jumpeq SootopolisCity_House8_EventScript_15B4F7 + goto_if_eq SootopolisCity_House8_EventScript_15B4F7 release end @@ -89,8 +89,8 @@ SootopolisCity_House8_EventScript_15B4F7:: @ 815B4F7 msgbox SootopolisCity_House8_Text_190536, 4 giveitem ITEM_ELIXIR compare RESULT, 0 - jumpeq SootopolisCity_House8_EventScript_15B519 - closebutton + goto_if_eq SootopolisCity_House8_EventScript_15B519 + closemessage release end diff --git a/data/scripts/maps/SootopolisCity_Mart.inc b/data/scripts/maps/SootopolisCity_Mart.inc index 9f37f9d0b..b88347002 100644 --- a/data/scripts/maps/SootopolisCity_Mart.inc +++ b/data/scripts/maps/SootopolisCity_Mart.inc @@ -5,7 +5,7 @@ SootopolisCity_Mart_EventScript_15B21B:: @ 815B21B lock faceplayer message SootopolisCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart SootopolisCity_Mart_Items msgbox SootopolisCity_Mart_Text_1A0C02, 4 release @@ -30,9 +30,9 @@ SootopolisCity_Mart_EventScript_15B24A:: @ 815B24A lock faceplayer checkflag 113 - jumpeq SootopolisCity_Mart_EventScript_15B268 + goto_if_eq SootopolisCity_Mart_EventScript_15B268 checkflag 129 - jumpif 0, SootopolisCity_Mart_EventScript_15B268 + goto_if 0, SootopolisCity_Mart_EventScript_15B268 msgbox SootopolisCity_Mart_Text_18F8D7, 4 release end @@ -46,9 +46,9 @@ SootopolisCity_Mart_EventScript_15B272:: @ 815B272 lock faceplayer checkflag 113 - jumpeq SootopolisCity_Mart_EventScript_15B290 + goto_if_eq SootopolisCity_Mart_EventScript_15B290 checkflag 129 - jumpif 0, SootopolisCity_Mart_EventScript_15B290 + goto_if 0, SootopolisCity_Mart_EventScript_15B290 msgbox SootopolisCity_Mart_Text_18F96B, 4 release end diff --git a/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc b/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc index 29cc06584..cb09d8856 100644 --- a/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ SootopolisCity_PokemonCenter_1F_MapScript1_15B196:: @ 815B196 @ 815B19A setvar 0x800B, 1 call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -18,9 +18,9 @@ SootopolisCity_PokemonCenter_1F_EventScript_15B1A8:: @ 815B1A8 lock faceplayer checkflag 113 - jumpeq SootopolisCity_PokemonCenter_1F_EventScript_15B1C6 + goto_if_eq SootopolisCity_PokemonCenter_1F_EventScript_15B1C6 checkflag 129 - jumpif 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1C6 + goto_if 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1C6 msgbox SootopolisCity_PokemonCenter_1F_Text_18F770, 4 release end @@ -34,9 +34,9 @@ SootopolisCity_PokemonCenter_1F_EventScript_15B1D0:: @ 815B1D0 lock faceplayer checkflag 113 - jumpeq SootopolisCity_PokemonCenter_1F_EventScript_15B1EE + goto_if_eq SootopolisCity_PokemonCenter_1F_EventScript_15B1EE checkflag 129 - jumpif 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1EE + goto_if 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1EE msgbox SootopolisCity_PokemonCenter_1F_Text_18F860, 4 release end diff --git a/data/scripts/maps/SouthernIsland_Exterior.inc b/data/scripts/maps/SouthernIsland_Exterior.inc index 9723647cd..3c6426024 100644 --- a/data/scripts/maps/SouthernIsland_Exterior.inc +++ b/data/scripts/maps/SouthernIsland_Exterior.inc @@ -11,13 +11,13 @@ SouthernIsland_Exterior_EventScript_160AE0:: @ 8160AE0 faceplayer msgbox SouthernIsland_Exterior_Text_1C5215, 5 compare RESULT, 0 - jumpeq SouthernIsland_Exterior_EventScript_160B25 + goto_if_eq SouthernIsland_Exterior_EventScript_160B25 msgbox SouthernIsland_Exterior_Text_1C5281, 4 - closebutton - move LAST_TALKED, SouthernIsland_Exterior_Movement_1A0845 - waitmove 0 - pause 30 - spriteinvisible 1, 26, 9 + closemessage + applymovement LAST_TALKED, SouthernIsland_Exterior_Movement_1A0845 + waitmovement 0 + delay 30 + hideobject 1, 26, 9 setvar 0x8004, 2 call SouthernIsland_Exterior_EventScript_1A047C warp LilycoveCity_Harbor, 255, 8, 11 @@ -31,13 +31,13 @@ SouthernIsland_Exterior_EventScript_160B25:: @ 8160B25 end BattleTower_Outside_EventScript_160B2F:: @ 8160B2F - move 255, BattleTower_Outside_Movement_160B45 - waitmove 0 + applymovement 255, BattleTower_Outside_Movement_160B45 + waitmovement 0 return BattleTower_Outside_EventScript_160B3A:: @ 8160B3A - move 255, BattleTower_Outside_Movement_160B47 - waitmove 0 + applymovement 255, BattleTower_Outside_Movement_160B47 + waitmovement 0 return BattleTower_Outside_Movement_160B45:: @ 8160B45 diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc index 3adf3545f..bcb316f96 100644 --- a/data/scripts/maps/SouthernIsland_Interior.inc +++ b/data/scripts/maps/SouthernIsland_Interior.inc @@ -5,11 +5,11 @@ SouthernIsland_Interior_MapScripts:: @ 8160B53 SouthernIsland_Interior_MapScript1_160B5E:: @ 8160B5E checkflag 2145 - callif 1, SouthernIsland_Interior_EventScript_160B68 + call_if 1, SouthernIsland_Interior_EventScript_160B68 end SouthernIsland_Interior_EventScript_160B68:: @ 8160B68 - disappear 2 + removeobject 2 return SouthernIsland_Interior_MapScript1_160B6C:: @ 8160B6C @@ -22,11 +22,11 @@ SouthernIsland_Interior_MapScript1_160B6C:: @ 8160B6C end SouthernIsland_Interior_EventScript_160B77:: @ 8160B77 - checkgender + checkplayergender compare RESULT, 0 - jumpeq SouthernIsland_Interior_EventScript_160B8F + goto_if_eq SouthernIsland_Interior_EventScript_160B8F compare RESULT, 1 - jumpeq SouthernIsland_Interior_EventScript_160B95 + goto_if_eq SouthernIsland_Interior_EventScript_160B95 end SouthernIsland_Interior_EventScript_160B8F:: @ 8160B8F @@ -40,34 +40,34 @@ SouthernIsland_Interior_EventScript_160B95:: @ 8160B95 SouthernIsland_Interior_EventScript_160B9B:: @ 8160B9B lockall setvar 0x8008, 12 - jump SouthernIsland_Interior_EventScript_160BA7 + goto SouthernIsland_Interior_EventScript_160BA7 end SouthernIsland_Interior_EventScript_160BA7:: @ 8160BA7 checkflag 206 - jumpeq SouthernIsland_Interior_EventScript_160C08 + goto_if_eq SouthernIsland_Interior_EventScript_160C08 checkflag 2131 - jumpif 0, SouthernIsland_Interior_EventScript_160C08 + goto_if 0, SouthernIsland_Interior_EventScript_160C08 setflag 206 special SpawnCameraDummy - move 127, SouthernIsland_Interior_Movement_160C12 - waitmove 0 - pause 50 - checksound - pokecry SPECIES_LATIAS_OR_LATIOS, 0 - pause 30 + applymovement 127, SouthernIsland_Interior_Movement_160C12 + waitmovement 0 + delay 50 + waitse + playpokecry SPECIES_LATIAS_OR_LATIOS, 0 + delay 30 waitpokecry - reappear 2 - pause 30 - move 127, SouthernIsland_Interior_Movement_160C16 - move 2, SouthernIsland_Interior_Movement_160C22 - waitmove 0 - pause 50 + addobject 2 + delay 30 + applymovement 127, SouthernIsland_Interior_Movement_160C16 + applymovement 2, SouthernIsland_Interior_Movement_160C22 + waitmovement 0 + delay 50 special RemoveCameraDummy setwildbattle SPECIES_LATIAS_OR_LATIOS, 50, ITEM_SOUL_DEW setflag 911 setflag 2145 - special StartBattle_SouthernIsland + special ScrSpecial_StartSouthernIslandBattle waitstate clearflag 2145 releaseall diff --git a/data/scripts/maps/Underwater_Route134.inc b/data/scripts/maps/Underwater_Route134.inc index ee79f9799..bbe7e1ce2 100644 --- a/data/scripts/maps/Underwater_Route134.inc +++ b/data/scripts/maps/Underwater_Route134.inc @@ -3,5 +3,5 @@ Underwater_Route134_MapScripts:: @ 815F071 .byte 0 Underwater_Route134_MapScript1_15F077:: @ 815F077 - warp4 Route134, 255, 60, 31 + setdivewarp Route134, 255, 60, 31 end diff --git a/data/scripts/maps/Underwater_SeafloorCavern.inc b/data/scripts/maps/Underwater_SeafloorCavern.inc index c879ec609..3d2fe81b2 100644 --- a/data/scripts/maps/Underwater_SeafloorCavern.inc +++ b/data/scripts/maps/Underwater_SeafloorCavern.inc @@ -7,7 +7,7 @@ Underwater_SeafloorCavern_MapScripts:: @ 815D99E Underwater_SeafloorCavern_MapScript1_15D9AE:: @ 815D9AE setflag 2119 checkflag 129 - jumpeq Underwater_SeafloorCavern_EventScript_15D9BB + goto_if_eq Underwater_SeafloorCavern_EventScript_15D9BB end Underwater_SeafloorCavern_EventScript_15D9BB:: @ 815D9BB @@ -16,7 +16,7 @@ Underwater_SeafloorCavern_EventScript_15D9BB:: @ 815D9BB Underwater_SeafloorCavern_MapScript1_15D9BF:: @ 815D9BF checkflag 129 - callif 1, Underwater_SeafloorCavern_EventScript_15D9C9 + call_if 1, Underwater_SeafloorCavern_EventScript_15D9C9 end Underwater_SeafloorCavern_EventScript_15D9C9:: @ 815D9C9 @@ -35,7 +35,7 @@ Underwater_SeafloorCavern_EventScript_15D9C9:: @ 815D9C9 return Underwater_SeafloorCavern_MapScript1_15DA36:: @ 815DA36 - warp4 SeafloorCavern_Entrance, 255, 10, 17 + setdivewarp SeafloorCavern_Entrance, 255, 10, 17 end Underwater_SeafloorCavern_EventScript_15DA3F:: @ 815DA3F diff --git a/data/scripts/maps/Underwater_SealedChamber.inc b/data/scripts/maps/Underwater_SealedChamber.inc index d7e7aabcb..836ad86e2 100644 --- a/data/scripts/maps/Underwater_SealedChamber.inc +++ b/data/scripts/maps/Underwater_SealedChamber.inc @@ -5,23 +5,23 @@ Underwater_SealedChamber_MapScripts:: @ 815F080 Underwater_SealedChamber_MapScript1_15F086:: @ 815F086 getplayerxy 0x8004, 0x8005 compare 0x8004, 12 - jumpif 5, Underwater_SealedChamber_EventScript_15F0A6 + goto_if 5, Underwater_SealedChamber_EventScript_15F0A6 compare 0x8005, 44 - jumpif 5, Underwater_SealedChamber_EventScript_15F0A6 - jump Underwater_SealedChamber_EventScript_15F0AF + goto_if 5, Underwater_SealedChamber_EventScript_15F0A6 + goto Underwater_SealedChamber_EventScript_15F0AF Underwater_SealedChamber_EventScript_15F0A6:: @ 815F0A6 - warp4 Route134, 255, 60, 31 + setdivewarp Route134, 255, 60, 31 end Underwater_SealedChamber_EventScript_15F0AF:: @ 815F0AF - warp4 SealedChamber_OuterRoom, 255, 10, 19 + setdivewarp SealedChamber_OuterRoom, 255, 10, 19 end Underwater_SealedChamber_EventScript_15F0B8:: @ 815F0B8 lockall - braillemsg Underwater_SealedChamber_Braille_1C533D + braillemessage Underwater_SealedChamber_Braille_1C533D waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/Underwater_SootopolisCity.inc b/data/scripts/maps/Underwater_SootopolisCity.inc index 624c2c83e..c9405dfd7 100644 --- a/data/scripts/maps/Underwater_SootopolisCity.inc +++ b/data/scripts/maps/Underwater_SootopolisCity.inc @@ -3,5 +3,5 @@ Underwater_SootopolisCity_MapScripts:: @ 815CAE4 .byte 0 Underwater_SootopolisCity_MapScript1_15CAEA:: @ 815CAEA - warp4 SootopolisCity, 255, 29, 53 + setdivewarp SootopolisCity, 255, 29, 53 end diff --git a/data/scripts/maps/UnknownMap_25_34.inc b/data/scripts/maps/UnknownMap_25_34.inc index cbd782f35..34d0bb70b 100644 --- a/data/scripts/maps/UnknownMap_25_34.inc +++ b/data/scripts/maps/UnknownMap_25_34.inc @@ -14,40 +14,40 @@ LinkContestRoom1_MapScript1_15F595:: @ 815F595 LinkContestRoom1_EventScript_15F5A5:: @ 815F5A5 special ScriptGetMultiplayerId compare RESULT, 0 - callif 1, LinkContestRoom1_EventScript_15F5E0 + call_if 1, LinkContestRoom1_EventScript_15F5E0 compare RESULT, 1 - callif 1, LinkContestRoom1_EventScript_15F5E4 + call_if 1, LinkContestRoom1_EventScript_15F5E4 compare RESULT, 2 - callif 1, LinkContestRoom1_EventScript_15F5E8 + call_if 1, LinkContestRoom1_EventScript_15F5E8 compare RESULT, 3 - callif 1, LinkContestRoom1_EventScript_15F5EC + call_if 1, LinkContestRoom1_EventScript_15F5EC compare RESULT, 4 - callif 1, LinkContestRoom1_EventScript_15F5F0 + call_if 1, LinkContestRoom1_EventScript_15F5F0 return LinkContestRoom1_EventScript_15F5E0:: @ 815F5E0 - playmusicbattle 393 + savebgm 393 return LinkContestRoom1_EventScript_15F5E4:: @ 815F5E4 - playmusicbattle 394 + savebgm 394 return LinkContestRoom1_EventScript_15F5E8:: @ 815F5E8 - playmusicbattle 395 + savebgm 395 return LinkContestRoom1_EventScript_15F5EC:: @ 815F5EC - playmusicbattle 396 + savebgm 396 return LinkContestRoom1_EventScript_15F5F0:: @ 815F5F0 - playmusicbattle 440 + savebgm 440 return LinkContestRoom1_MapScript1_15F5F4:: @ 815F5F4 compare 0x4009, 1 - callif 1, LinkContestRoom1_EventScript_15F600 + call_if 1, LinkContestRoom1_EventScript_15F600 end LinkContestRoom1_EventScript_15F600:: @ 815F600 @@ -68,7 +68,7 @@ LinkContestRoom1_EventScript_15F61A:: @ 815F61A end LinkContestRoom1_EventScript_15F625:: @ 815F625 - spriteinvisible 255, 0, 9 + hideobject 255, 0, 9 call LinkContestRoom1_EventScript_15F919 end @@ -76,7 +76,7 @@ LinkContestRoom1_EventScript_15F630:: @ 815F630 call LinkContestRoom1_EventScript_15F6E6 call LinkContestRoom1_EventScript_15F646 compare 0x4000, 8 - jumpif 0, LinkContestRoom1_EventScript_15F630 + goto_if 0, LinkContestRoom1_EventScript_15F630 return LinkContestRoom1_EventScript_15F646:: @ 815F646 @@ -302,73 +302,73 @@ LinkContestRoom1_EventScript_15F919:: @ 815F919 return LinkContestRoom1_EventScript_15F956:: @ 815F956 - createvsprite 5, 20, 3, 2, 3, 1 - createvsprite 46, 24, 11, 2, 3, 1 + createvobject 5, 20, 3, 2, 3, 1 + createvobject 46, 24, 11, 2, 3, 1 return LinkContestRoom1_EventScript_15F969:: @ 815F969 - createvsprite 45, 0, 2, 3, 3, 4 - createvsprite 66, 1, 2, 4, 3, 4 - createvsprite 55, 2, 2, 7, 3, 4 - createvsprite 46, 3, 2, 8, 3, 4 - createvsprite 5, 10, 12, 3, 3, 3 - createvsprite 20, 11, 12, 4, 3, 3 - createvsprite 24, 12, 12, 7, 3, 3 - createvsprite 12, 13, 12, 8, 3, 3 - createvsprite 47, 20, 3, 2, 3, 1 - createvsprite 46, 24, 11, 2, 3, 1 + createvobject 45, 0, 2, 3, 3, 4 + createvobject 66, 1, 2, 4, 3, 4 + createvobject 55, 2, 2, 7, 3, 4 + createvobject 46, 3, 2, 8, 3, 4 + createvobject 5, 10, 12, 3, 3, 3 + createvobject 20, 11, 12, 4, 3, 3 + createvobject 24, 12, 12, 7, 3, 3 + createvobject 12, 13, 12, 8, 3, 3 + createvobject 47, 20, 3, 2, 3, 1 + createvobject 46, 24, 11, 2, 3, 1 return LinkContestRoom1_EventScript_15F9C4:: @ 815F9C4 - createvsprite 45, 0, 2, 3, 3, 4 - createvsprite 66, 1, 2, 4, 3, 4 - createvsprite 55, 2, 2, 7, 3, 4 - createvsprite 48, 3, 2, 8, 3, 4 - createvsprite 5, 10, 12, 3, 3, 3 - createvsprite 20, 11, 12, 4, 3, 3 - createvsprite 24, 12, 12, 7, 3, 3 - createvsprite 45, 13, 12, 8, 3, 3 - createvsprite 22, 20, 3, 2, 3, 1 - createvsprite 23, 20, 6, 2, 3, 1 - createvsprite 34, 20, 7, 2, 3, 1 - createvsprite 46, 24, 8, 2, 3, 1 - createvsprite 48, 24, 11, 2, 3, 1 - createvsprite 11, 25, 3, 9, 3, 2 - createvsprite 35, 26, 4, 9, 3, 2 - createvsprite 17, 27, 5, 9, 3, 2 - createvsprite 41, 28, 9, 9, 3, 2 - createvsprite 38, 29, 10, 9, 3, 2 - createvsprite 83, 30, 11, 9, 3, 2 + createvobject 45, 0, 2, 3, 3, 4 + createvobject 66, 1, 2, 4, 3, 4 + createvobject 55, 2, 2, 7, 3, 4 + createvobject 48, 3, 2, 8, 3, 4 + createvobject 5, 10, 12, 3, 3, 3 + createvobject 20, 11, 12, 4, 3, 3 + createvobject 24, 12, 12, 7, 3, 3 + createvobject 45, 13, 12, 8, 3, 3 + createvobject 22, 20, 3, 2, 3, 1 + createvobject 23, 20, 6, 2, 3, 1 + createvobject 34, 20, 7, 2, 3, 1 + createvobject 46, 24, 8, 2, 3, 1 + createvobject 48, 24, 11, 2, 3, 1 + createvobject 11, 25, 3, 9, 3, 2 + createvobject 35, 26, 4, 9, 3, 2 + createvobject 17, 27, 5, 9, 3, 2 + createvobject 41, 28, 9, 9, 3, 2 + createvobject 38, 29, 10, 9, 3, 2 + createvobject 83, 30, 11, 9, 3, 2 return LinkContestRoom1_EventScript_15FA70:: @ 815FA70 - createvsprite 45, 0, 2, 3, 3, 4 - createvsprite 66, 1, 2, 4, 3, 4 - createvsprite 55, 2, 2, 7, 3, 4 - createvsprite 12, 3, 2, 8, 3, 4 - createvsprite 39, 4, 1, 3, 3, 4 - createvsprite 34, 6, 1, 5, 3, 4 - createvsprite 26, 7, 1, 6, 3, 4 - createvsprite 48, 9, 1, 8, 3, 4 - createvsprite 5, 10, 12, 3, 3, 3 - createvsprite 20, 11, 12, 4, 3, 3 - createvsprite 24, 12, 12, 7, 3, 3 - createvsprite 45, 13, 12, 8, 3, 3 - createvsprite 50, 14, 13, 3, 3, 3 - createvsprite 52, 15, 13, 4, 3, 3 - createvsprite 65, 17, 13, 6, 3, 3 - createvsprite 83, 18, 13, 7, 3, 3 - createvsprite 116, 19, 13, 8, 3, 3 - createvsprite 25, 20, 3, 2, 3, 1 - createvsprite 31, 21, 6, 2, 3, 1 - createvsprite 33, 22, 7, 2, 3, 1 - createvsprite 46, 24, 11, 2, 3, 1 - createvsprite 49, 25, 3, 9, 3, 2 - createvsprite 35, 26, 4, 9, 3, 2 - createvsprite 48, 27, 5, 9, 3, 2 - createvsprite 41, 28, 9, 9, 3, 2 - createvsprite 38, 29, 10, 9, 3, 2 - createvsprite 83, 30, 11, 9, 3, 2 + createvobject 45, 0, 2, 3, 3, 4 + createvobject 66, 1, 2, 4, 3, 4 + createvobject 55, 2, 2, 7, 3, 4 + createvobject 12, 3, 2, 8, 3, 4 + createvobject 39, 4, 1, 3, 3, 4 + createvobject 34, 6, 1, 5, 3, 4 + createvobject 26, 7, 1, 6, 3, 4 + createvobject 48, 9, 1, 8, 3, 4 + createvobject 5, 10, 12, 3, 3, 3 + createvobject 20, 11, 12, 4, 3, 3 + createvobject 24, 12, 12, 7, 3, 3 + createvobject 45, 13, 12, 8, 3, 3 + createvobject 50, 14, 13, 3, 3, 3 + createvobject 52, 15, 13, 4, 3, 3 + createvobject 65, 17, 13, 6, 3, 3 + createvobject 83, 18, 13, 7, 3, 3 + createvobject 116, 19, 13, 8, 3, 3 + createvobject 25, 20, 3, 2, 3, 1 + createvobject 31, 21, 6, 2, 3, 1 + createvobject 33, 22, 7, 2, 3, 1 + createvobject 46, 24, 11, 2, 3, 1 + createvobject 49, 25, 3, 9, 3, 2 + createvobject 35, 26, 4, 9, 3, 2 + createvobject 48, 27, 5, 9, 3, 2 + createvobject 41, 28, 9, 9, 3, 2 + createvobject 38, 29, 10, 9, 3, 2 + createvobject 83, 30, 11, 9, 3, 2 return LinkContestRoom1_EventScript_15FB64:: @ 815FB64 @@ -381,25 +381,25 @@ LinkContestRoom1_EventScript_15FB64:: @ 815FB64 return LinkContestRoom1_EventScript_15FBA1:: @ 815FBA1 - inccounter GAME_STAT_ENTERED_CONTEST + incrementgamestat GAME_STAT_ENTERED_CONTEST warp VerdanturfTown_ContestLobby, 255, 5, 4 waitstate end LinkContestRoom1_EventScript_15FBAD:: @ 815FBAD - inccounter GAME_STAT_ENTERED_CONTEST + incrementgamestat GAME_STAT_ENTERED_CONTEST warp FallarborTown_ContestLobby, 255, 5, 4 waitstate end LinkContestRoom1_EventScript_15FBB9:: @ 815FBB9 - inccounter GAME_STAT_ENTERED_CONTEST + incrementgamestat GAME_STAT_ENTERED_CONTEST warp SlateportCity_ContestLobby, 255, 5, 4 waitstate end LinkContestRoom1_EventScript_15FBC5:: @ 815FBC5 - inccounter GAME_STAT_ENTERED_CONTEST + incrementgamestat GAME_STAT_ENTERED_CONTEST warp LilycoveCity_ContestLobby, 255, 6, 4 waitstate end @@ -413,11 +413,11 @@ FallarborTown_ContestLobby_EventScript_15FBDB:: @ 815FBDB LilycoveCity_ContestLobby_EventScript_15FBDB:: @ 815FBDB SlateportCity_ContestLobby_EventScript_15FBDB:: @ 815FBDB VerdanturfTown_ContestLobby_EventScript_15FBDB:: @ 815FBDB - checkgender + checkplayergender compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_15FBF3 + goto_if_eq FallarborTown_ContestLobby_EventScript_15FBF3 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_15FBF9 + goto_if_eq FallarborTown_ContestLobby_EventScript_15FBF9 return FallarborTown_ContestLobby_EventScript_15FBF3:: @ 815FBF3 diff --git a/data/scripts/maps/VerdanturfTown.inc b/data/scripts/maps/VerdanturfTown.inc index 610643823..3e8f02302 100644 --- a/data/scripts/maps/VerdanturfTown.inc +++ b/data/scripts/maps/VerdanturfTown.inc @@ -12,17 +12,17 @@ VerdanturfTown_EventScript_14E866:: @ 814E866 lock faceplayer checkflag 199 - jumpeq VerdanturfTown_EventScript_14E885 + goto_if_eq VerdanturfTown_EventScript_14E885 msgbox VerdanturfTown_Text_16CAEB, 4 - move 2, VerdanturfTown_Movement_1A083D - waitmove 0 + applymovement 2, VerdanturfTown_Movement_1A083D + waitmovement 0 release end VerdanturfTown_EventScript_14E885:: @ 814E885 msgbox VerdanturfTown_Text_16CBCE, 4 - move 2, VerdanturfTown_Movement_1A083D - waitmove 0 + applymovement 2, VerdanturfTown_Movement_1A083D + waitmovement 0 release end @@ -38,7 +38,7 @@ VerdanturfTown_EventScript_14E8AB:: @ 814E8AB lock faceplayer checkflag 199 - jumpeq VerdanturfTown_EventScript_14E8C0 + goto_if_eq VerdanturfTown_EventScript_14E8C0 msgbox VerdanturfTown_Text_16CD4D, 4 release end diff --git a/data/scripts/maps/VerdanturfTown_ContestLobby.inc b/data/scripts/maps/VerdanturfTown_ContestLobby.inc index 8fd4016d1..8462892e6 100644 --- a/data/scripts/maps/VerdanturfTown_ContestLobby.inc +++ b/data/scripts/maps/VerdanturfTown_ContestLobby.inc @@ -20,28 +20,28 @@ VerdanturfTown_ContestLobby_EventScript_153D76:: @ 8153D76 VerdanturfTown_ContestLobby_EventScript_153DA1:: @ 8153DA1 lockall - move 1, VerdanturfTown_ContestLobby_Movement_153E25 - waitmove 0 - playsfx 71 + applymovement 1, VerdanturfTown_ContestLobby_Movement_153E25 + waitmovement 0 + playse 71 setmaptile 4, 2, 545, 1 setmaptile 4, 3, 609, 1 special DrawWholeMapView - move 1, VerdanturfTown_ContestLobby_Movement_153E28 - waitmove 0 - playsfx 71 + applymovement 1, VerdanturfTown_ContestLobby_Movement_153E28 + waitmovement 0 + playse 71 setmaptile 4, 2, 721, 1 setmaptile 4, 3, 729, 1 special DrawWholeMapView - pause 20 - move 1, VerdanturfTown_ContestLobby_Movement_153E35 - waitmove 0 - move 255, VerdanturfTown_ContestLobby_Movement_153E23 - waitmove 0 + delay 20 + applymovement 1, VerdanturfTown_ContestLobby_Movement_153E35 + waitmovement 0 + applymovement 255, VerdanturfTown_ContestLobby_Movement_153E23 + waitmovement 0 msgbox VerdanturfTown_ContestLobby_Text_1A6832, 4 - closebutton - move 1, VerdanturfTown_ContestLobby_Movement_153E2C - move 255, VerdanturfTown_ContestLobby_Movement_153E19 - waitmove 0 + closemessage + applymovement 1, VerdanturfTown_ContestLobby_Movement_153E2C + applymovement 255, VerdanturfTown_ContestLobby_Movement_153E19 + waitmovement 0 releaseall return @@ -90,7 +90,7 @@ VerdanturfTown_ContestLobby_Movement_153E35:: @ 8153E35 VerdanturfTown_ContestLobby_EventScript_153E37:: @ 8153E37 lockall fadescreen 1 - showcontestwinner 1 + drawcontestwinner 1 releaseall end @@ -102,11 +102,11 @@ VerdanturfTown_ContestLobby_EventScript_153E47:: @ 8153E47 lock faceplayer checkflag 235 - jumpeq VerdanturfTown_ContestLobby_EventScript_153E76 + goto_if_eq VerdanturfTown_ContestLobby_EventScript_153E76 msgbox VerdanturfTown_ContestLobby_Text_177DEC, 4 giveitem ITEM_TM45 compare RESULT, 0 - jumpeq VerdanturfTown_ContestLobby_EventScript_1A029B + goto_if_eq VerdanturfTown_ContestLobby_EventScript_1A029B setflag 235 release end @@ -124,6 +124,6 @@ VerdanturfTown_ContestLobby_EventScript_153E89:: @ 8153E89 lockall special ShowBerryBlenderRecordWindow waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc b/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc index 5453fb42c..1cfa785d3 100644 --- a/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc +++ b/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc @@ -5,7 +5,7 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_154030:: @ 8154030 lock faceplayer msgbox VerdanturfTown_FriendshipRatersHouse_Text_178A9C, 4 - specialval RESULT, GetLeadMonFriendshipScore + specialvar RESULT, GetLeadMonFriendshipScore switch RESULT case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_154093 case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_15409D @@ -55,8 +55,8 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_1540CF:: @ 81540CF VerdanturfTown_FriendshipRatersHouse_EventScript_1540D9:: @ 81540D9 lock faceplayer - checksound - pokecry SPECIES_PIKACHU, 0 + waitse + playpokecry SPECIES_PIKACHU, 0 msgbox VerdanturfTown_FriendshipRatersHouse_Text_178CFD, 4 waitpokecry release diff --git a/data/scripts/maps/VerdanturfTown_Mart.inc b/data/scripts/maps/VerdanturfTown_Mart.inc index 4227dc8b1..db72de227 100644 --- a/data/scripts/maps/VerdanturfTown_Mart.inc +++ b/data/scripts/maps/VerdanturfTown_Mart.inc @@ -5,7 +5,7 @@ VerdanturfTown_Mart_EventScript_153EBC:: @ 8153EBC lock faceplayer message VerdanturfTown_Mart_Text_1A0BE4 - waittext + waitmessage pokemart VerdanturfTown_Mart_Items msgbox VerdanturfTown_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc b/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc index e0fee3fb8..a0b1f87de 100644 --- a/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc @@ -11,7 +11,7 @@ PacifidlogTown_PokemonCenter_1F_EventScript_153F18:: @ 8153F18 VerdanturfTown_PokemonCenter_1F_EventScript_153F18:: @ 8153F18 setvar 0x800b, 1 call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/VerdanturfTown_WandasHouse.inc b/data/scripts/maps/VerdanturfTown_WandasHouse.inc index 80bd6151d..fad64292b 100644 --- a/data/scripts/maps/VerdanturfTown_WandasHouse.inc +++ b/data/scripts/maps/VerdanturfTown_WandasHouse.inc @@ -5,7 +5,7 @@ VerdanturfTown_WandasHouse_EventScript_153F5B:: @ 8153F5B lock faceplayer checkflag 193 - jumpeq VerdanturfTown_WandasHouse_EventScript_153F73 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153F73 msgbox VerdanturfTown_WandasHouse_Text_1783F6, 4 setflag 193 release @@ -20,9 +20,9 @@ VerdanturfTown_WandasHouse_EventScript_153F7D:: @ 8153F7D lock faceplayer checkflag 126 - jumpeq VerdanturfTown_WandasHouse_EventScript_153FA5 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FA5 checkflag 1213 - jumpeq VerdanturfTown_WandasHouse_EventScript_153F9B + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153F9B msgbox VerdanturfTown_WandasHouse_Text_17859A, 4 release end @@ -45,9 +45,9 @@ VerdanturfTown_WandasHouse_EventScript_153FB8:: @ 8153FB8 lock faceplayer checkflag 1213 - jumpeq VerdanturfTown_WandasHouse_EventScript_153FE0 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FE0 checkflag 190 - jumpeq VerdanturfTown_WandasHouse_EventScript_153FD6 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FD6 msgbox VerdanturfTown_WandasHouse_Text_1787FB, 4 release end @@ -66,11 +66,11 @@ VerdanturfTown_WandasHouse_EventScript_153FEA:: @ 8153FEA lock faceplayer checkflag 126 - jumpeq VerdanturfTown_WandasHouse_EventScript_154025 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_154025 checkflag 1213 - jumpeq VerdanturfTown_WandasHouse_EventScript_15401B + goto_if_eq VerdanturfTown_WandasHouse_EventScript_15401B checkflag 199 - jumpeq VerdanturfTown_WandasHouse_EventScript_154011 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_154011 msgbox VerdanturfTown_WandasHouse_Text_1788B1, 4 release end diff --git a/data/scripts/maps/VictoryRoad_1F.inc b/data/scripts/maps/VictoryRoad_1F.inc index f64ca20ab..fe775d793 100644 --- a/data/scripts/maps/VictoryRoad_1F.inc +++ b/data/scripts/maps/VictoryRoad_1F.inc @@ -4,7 +4,7 @@ VictoryRoad_1F_MapScripts:: @ 815DE83 VictoryRoad_1F_MapScript1_15DE89:: @ 815DE89 checkflag 126 - callif 1, VictoryRoad_1F_EventScript_15DE93 + call_if 1, VictoryRoad_1F_EventScript_15DE93 end VictoryRoad_1F_EventScript_15DE93:: @ 815DE93 @@ -13,36 +13,36 @@ VictoryRoad_1F_EventScript_15DE93:: @ 815DE93 VictoryRoad_1F_EventScript_15DE97:: @ 815DE97 lockall - reappear 4 - move 4, VictoryRoad_1F_Movement_15DF07 - waitmove 0 - jump VictoryRoad_1F_EventScript_15DED3 + addobject 4 + applymovement 4, VictoryRoad_1F_Movement_15DF07 + waitmovement 0 + goto VictoryRoad_1F_EventScript_15DED3 end VictoryRoad_1F_EventScript_15DEAB:: @ 815DEAB lockall - reappear 4 - move 4, VictoryRoad_1F_Movement_15DF13 - waitmove 0 - jump VictoryRoad_1F_EventScript_15DED3 + addobject 4 + applymovement 4, VictoryRoad_1F_Movement_15DF13 + waitmovement 0 + goto VictoryRoad_1F_EventScript_15DED3 end VictoryRoad_1F_EventScript_15DEBF:: @ 815DEBF lockall - reappear 4 - move 4, VictoryRoad_1F_Movement_15DF1E - waitmove 0 - jump VictoryRoad_1F_EventScript_15DED3 + addobject 4 + applymovement 4, VictoryRoad_1F_Movement_15DF1E + waitmovement 0 + goto VictoryRoad_1F_EventScript_15DED3 end VictoryRoad_1F_EventScript_15DED3:: @ 815DED3 - move 255, VictoryRoad_1F_Movement_1A083F - waitmove 0 + applymovement 255, VictoryRoad_1F_Movement_1A083F + waitmovement 0 msgbox VictoryRoad_1F_Text_19782B, 4 trainerbattle 3, OPPONENT_WALLY_1, 0, VictoryRoad_1F_Text_197943 msgbox VictoryRoad_1F_Text_197967, 4 clearflag 858 - moveoffscreen 4 + moveobjectoffscreen 4 setflag 126 setvar 0x40c3, 1 releaseall @@ -93,9 +93,9 @@ VictoryRoad_1F_EventScript_15DF28:: @ 815DF28 VictoryRoad_1F_EventScript_15DF31:: @ 815DF31 trainerbattle 0, OPPONENT_WALLY_3, 0, VictoryRoad_1F_Text_1979BA, VictoryRoad_1F_Text_197A23 - specialval RESULT, sub_8082C68 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq VictoryRoad_1F_EventScript_15DF58 + goto_if_eq VictoryRoad_1F_EventScript_15DF58 msgbox VictoryRoad_1F_Text_197A47, 6 end diff --git a/data/scripts/mauville_man.inc b/data/scripts/mauville_man.inc new file mode 100644 index 000000000..402afae23 --- /dev/null +++ b/data/scripts/mauville_man.inc @@ -0,0 +1,357 @@ +@ From mauville_old_man.h +@ TODO: Put these in a header + +MAUVILLE_MAN_BARD = 0 +MAUVILLE_MAN_HIPSTER = 1 +MAUVILLE_MAN_TRADER = 2 +MAUVILLE_MAN_STORYTELLER = 3 +MAUVILLE_MAN_GIDDY = 4 + +MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744 + special ScrSpecial_GetCurrentMauvilleMan + switch RESULT + case MAUVILLE_MAN_BARD, SpeakToBard + case MAUVILLE_MAN_HIPSTER, SpeakToHipster + case MAUVILLE_MAN_TRADER, SpeakToTrader + case MAUVILLE_MAN_STORYTELLER, SpeakToStoryteller + case MAUVILLE_MAN_GIDDY, SpeakToGiddy + end + + +@------------------------------------------------------------------------------- +@ Bard +@------------------------------------------------------------------------------- + +SpeakToBard: + lock + faceplayer + msgbox gTextBard_HiImTheBard, MSGBOX_YESNO + compare RESULT, YES + goto_if_eq yes_hear_song + compare RESULT, NO + goto_if_eq dont_hear_song + end + +yes_hear_song: + setvar 0x8004, 0 + @ Give the player ear rape + special ScrSpecial_PlayBardSong + delay 60 + special ScrSpecial_HasBardSongBeenChanged + compare RESULT, FALSE + @ Prompt new lyrics only if song hasn't been changed + goto_if_eq prompt_write_lyrics + msgbox gTextBard_OhWhatAMovingSong, 4 + release + end + +dont_hear_song: + msgbox gTextBard_OhYouveLeftMe, 4 + release + end + +prompt_write_lyrics: + msgbox gTextBard_SoHowDoYouLikeMySong, MSGBOX_YESNO + compare RESULT, YES + goto_if_eq write_lyrics + compare RESULT, NO + goto_if_eq dont_write_lyrics + end + +write_lyrics: + setvar 0x8004, 6 + call MauvilleCity_PokemonCenter_1F_EventScript_1A00F3 + lock + faceplayer + compare RESULT, NO + goto_if_eq dont_write_lyrics + msgbox gTextBard_ThankYouKindly, 4 + setvar 0x8004, 1 + @ Give the player ear rape again + special ScrSpecial_PlayBardSong + delay 60 + msgbox gTextBard_WasThatHowYouWanted, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq write_lyrics @ Keep looping until player responds YES + special ScrSpecial_SaveBardSongLyrics + msgbox gTextBard_OkayThatsIt, 4 + release + end + +dont_write_lyrics: + msgbox gTextBard_OhYouveLeftMe2, 4 + release + end + + +@------------------------------------------------------------------------------- +@ Hipster +@------------------------------------------------------------------------------- + +SpeakToHipster: + lock + faceplayer + setflag 2054 + msgbox gTextHipster_TheyCallMeTheHipster, 4 + special ScrSpecial_GetHipsterSpokenFlag + compare RESULT, FALSE + goto_if_eq hipster_first_time + msgbox gTextHipster_TaughtYouAlready, 4 + release + end + +hipster_first_time: + special ScrSpecial_HipsterTeachWord + compare RESULT, TRUE @ TRUE if player learned a new word + goto_if_eq teach_new_word + msgbox gTextHipster_YouAlreadyKnowALot, 4 + release + end + +teach_new_word: + msgbox gTextHipster_HaveYouHeardAbout, 4 + special ScrSpecial_SetHipsterSpokenFlag + release + end + + +@------------------------------------------------------------------------------- +@ Trader +@------------------------------------------------------------------------------- + + .include "data/text/trader.inc" + +SpeakToTrader: + lock + faceplayer + msgbox gTextTrader_Introduction, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq dont_want_to_trade + special ScrSpecial_GetTraderTradedFlag + compare RESULT, TRUE + goto_if_eq already_traded + message gTextTrader_MenuPrompt + waitmessage + goto do_trader_menu_get + end + +dont_want_to_trade: + msgbox gTextTrader_FeelUnwanted1, 2 + end + +already_traded: + msgbox gTextTrader_TradedAlready, 2 + end + +do_trader_menu_get: + special ScrSpecial_TraderMenuGetDecoration + waitstate + compare 0x8004, 0 + goto_if_eq cancelled_get_menu + compare 0x8004, 65535 + goto_if_eq rare_item_cant_trade_away + msgbox gTextTrader_ItemOnceBelongedTo, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq dont_want_item + special ScrSpecial_DoesPlayerHaveNoDecorations + compare RESULT, TRUE + goto_if_eq player_has_no_decorations + goto do_trader_menu_give + end + +cancelled_get_menu: + msgbox gTextTrader_DontWantAnything, 2 + end + +rare_item_cant_trade_away: + message gTextTrader_ICantTradeThatOneAway + waitmessage + goto do_trader_menu_get + end + +dont_want_item: + message gTextTrader_MenuPrompt + waitmessage + goto do_trader_menu_get + end + +player_has_no_decorations: + msgbox gTextTrader_YouDontHaveDecorations, 2 + end + +do_trader_menu_give: + msgbox gTextTrader_PickDecorationYoullTrade, 4 + special ScrSpecial_TraderMenuGiveDecoration + waitstate + compare 0x8006, 0 + goto_if_eq cancelled_give_menu + compare 0x8006, 65535 + goto_if_eq decoration_is_in_use + special ScrSpecial_IsDecorationFull + compare RESULT, 1 + goto_if_eq decorations_full + msgbox gTextTrader_SoWellTrade, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq do_trader_menu_give + special ScrSpecial_TraderDoDecorationTrade + msgbox gTextTrader_ThenWellTrade, 2 + end + +cancelled_give_menu: + msgbox gTextTrader_FeelUnwanted2, 2 + end + +decoration_is_in_use: + msgbox gTextTrader_InUseYouCantTradeIt, 4 + goto do_trader_menu_give + end + +decorations_full: + msgbox gTextTrader_NoRoomForThis, 2 + end + + +@------------------------------------------------------------------------------- +@ Storyteller +@------------------------------------------------------------------------------- + + .include "data/text/storyteller.inc" + +SpeakToStoryteller: + setvar 0x8008, 0 + setvar 0x8009, 0 + setvar 0x800a, 0 + setvar 0x800b, 0 + lock + faceplayer + msgbox gTextStoryteller_Introduction, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq dont_hear_story + specialvar RESULT, ScrSpecial_StorytellerGetFreeStorySlot + compare RESULT, 0 @ If slot is 0, then the list is empty + goto_if_eq no_stories_recorded +choose_story: + message gTextStoryteller_WhichTale + waitmessage + special ScrSpecial_StorytellerStoryListMenu + waitstate + compare RESULT, FALSE + goto_if_eq cancel_story_menu + setvar 0x8008, 1 + special ScrSpecial_StorytellerDisplayStory + waitmessage + waitbutton + specialvar RESULT, ScrSpecial_StorytellerUpdateStat + compare RESULT, FALSE + goto_if_eq no_stat_update + goto stat_update +cancel_story_menu: + compare 0x8008, 0 + goto_if_eq dont_hear_story + goto yes_hear_story +no_stat_update: + msgbox gTextStoryteller_CouldThereBeOtherTrainers, 4 + msgbox gTextStoryteller_HearAnotherLegendaryTale, MSGBOX_YESNO + compare RESULT, YES + goto_if_eq choose_story +yes_hear_story: + specialvar RESULT, ScrSpecial_HasStorytellerAlreadyRecorded + compare RESULT, TRUE + goto_if_eq cant_record_story @ already recorded story + specialvar RESULT, ScrSpecial_StorytellerGetFreeStorySlot + compare RESULT, 4 + goto_if_eq cant_record_story @ story list is full + goto prompt_record_story +no_stories_recorded: + msgbox gTextStoryteller_ButIKnowOfNoLegendaryTrainers, 4 +prompt_record_story: + msgbox gTextStoryteller_HaveYouAnyTales, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq dont_hear_story + specialvar RESULT, ScrSpecial_StorytellerInitializeRandomStat + compare RESULT, TRUE + goto_if_eq stat_update + msgbox gTextStoryteller_ImNotSatisfied, 4 + closemessage + release + end + +stat_update: + msgbox gTextStoryteller_BirthOfANewLegend, 4 + closemessage + release + end + +dont_hear_story: + msgbox gTextStoryteller_OhIFeelStifled, 4 + closemessage + release + end + +cant_record_story: + msgbox gTextStoryteller_WishMorePeopleWould, 4 + closemessage + release + end + + +@------------------------------------------------------------------------------- +@ Giddy +@------------------------------------------------------------------------------- + + .include "data/text/giddy.inc" + +SpeakToGiddy: + lock + faceplayer + msgbox gTextGiddy_Introduction, MSGBOX_YESNO + compare RESULT, YES + goto_if_eq yes_hear_giddy + compare RESULT, NO + goto_if_eq dont_hear_giddy + end + +yes_hear_giddy: + special ScrSpecial_GiddyShouldTellAnotherTale + compare RESULT, TRUE + goto_if_eq tell_giddy_tale + compare RESULT, FALSE + goto_if_eq bye_bye + end + +tell_another_giddy_tale: + special ScrSpecial_GiddyShouldTellAnotherTale + compare RESULT, TRUE + goto_if_eq also_i_was_thinking + compare RESULT, FALSE + goto_if_eq bye_bye + end + +also_i_was_thinking: + msgbox gTextGiddy_AlsoIWasThinking, 4 + goto tell_giddy_tale + end + +tell_giddy_tale: + special ScrSpecial_GenerateGiddyLine + special ShowFieldMessageStringVar4 + waitmessage + yesnobox 20, 8 + compare RESULT, 1 + goto_if_eq tell_another_giddy_tale + compare RESULT, 0 + goto_if_eq tell_another_giddy_tale + end + +dont_hear_giddy: + msgbox gTextGiddy_YouveDeflatedMe, 4 + release + end + +bye_bye: + msgbox gTextGiddy_ByeBye, 4 + release + end + + .include "data/text/bard.inc" + .include "data/text/hipster.inc" diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc index 5fd68beca..df097fc19 100644 --- a/data/scripts/mystery_event_club.inc +++ b/data/scripts/mystery_event_club.inc @@ -2,9 +2,9 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1B14:: @ 81B1B14 lock faceplayer checkflag 2053 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB msgbox PetalburgCity_PokemonCenter_1F_Text_1B1C97, 4 - jump PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D + goto PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D end PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D:: @ 81B1B2D @@ -19,22 +19,22 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D:: @ 81B1B2D PetalburgCity_PokemonCenter_1F_EventScript_1B1B6C:: @ 81B1B6C msgbox PetalburgCity_PokemonCenter_1F_Text_1B1D3A, 4 - jump PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D + goto PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D end PetalburgCity_PokemonCenter_1F_EventScript_1B1B7A:: @ 81B1B7A msgbox PetalburgCity_PokemonCenter_1F_Text_1B1F7B, 4 - closebutton + closemessage setvar 0x8004, 0 call PetalburgCity_PokemonCenter_1F_EventScript_1A00F3 lock faceplayer compare 0x8004, 1 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77 + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77 compare RESULT, 0 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1 + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1 compare RESULT, 1 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB end PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1:: @ 81B1BB1 @@ -45,8 +45,8 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1:: @ 81B1BB1 PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB:: @ 81B1BBB setvar 0x8004, 0 special sub_80EB7C4 - waittext - pause 80 + waitmessage + delay 80 msgbox PetalburgCity_PokemonCenter_1F_Text_1B2137, 4 release end @@ -58,7 +58,7 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BD1:: @ 81B1BD1 PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB:: @ 81B1BDB msgbox PetalburgCity_PokemonCenter_1F_Text_1B202F, 4 - jump PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9 + goto PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9 end PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9:: @ 81B1BE9 @@ -73,22 +73,22 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9:: @ 81B1BE9 PetalburgCity_PokemonCenter_1F_EventScript_1B1C28:: @ 81B1C28 msgbox PetalburgCity_PokemonCenter_1F_Text_1B1D3A, 4 - jump PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9 + goto PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9 end PetalburgCity_PokemonCenter_1F_EventScript_1B1C36:: @ 81B1C36 msgbox PetalburgCity_PokemonCenter_1F_Text_1B207F, 4 - closebutton + closemessage setvar 0x8004, 0 call PetalburgCity_PokemonCenter_1F_EventScript_1A00F3 lock faceplayer compare 0x8004, 1 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77 + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77 compare RESULT, 0 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1 + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1 compare RESULT, 1 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB end PetalburgCity_PokemonCenter_1F_EventScript_1B1C6D:: @ 81B1C6D @@ -98,9 +98,9 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1C6D:: @ 81B1C6D PetalburgCity_PokemonCenter_1F_EventScript_1B1C77:: @ 81B1C77 checkflag 2059 - jumpif 0, PetalburgCity_PokemonCenter_1F_EventScript_1B1C96 + goto_if 0, PetalburgCity_PokemonCenter_1F_EventScript_1B1C96 checkflag 2124 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1C96 + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1C96 setflag 2124 msgbox PetalburgCity_PokemonCenter_1F_Text_1B21CC, 3 release diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc index ca4b2bdb9..69a4dc3e9 100644 --- a/data/scripts/players_house.inc +++ b/data/scripts/players_house.inc @@ -6,29 +6,29 @@ LittlerootTown_MaysHouse_2F_EventScript_1B6950:: @ 81B6950 LittlerootTown_BrendansHouse_1F_EventScript_1B6956:: @ 81B6956 LittlerootTown_MaysHouse_1F_EventScript_1B6956:: @ 81B6956 msgbox LittlerootTown_BrendansHouse_1F_Text_172429, 4 - move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0839 - waitmove 0 + applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0839 + waitmovement 0 compare 0x8005, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B699F + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B699F compare 0x8005, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B69AA + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B69AA msgbox LittlerootTown_BrendansHouse_1F_Text_172453, 4 - closebutton + closemessage setvar 0x4092, 4 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B69B5 - move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B69B5 + applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841 + waitmovement 0 releaseall end LittlerootTown_BrendansHouse_1F_EventScript_1B699F:: @ 81B699F - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A0843 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A0843 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B69AA:: @ 81B69AA - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F + waitmovement 0 return LittlerootTown_BrendansHouse_1F_Movement_1B69B5:: @ 81B69B5 @@ -38,76 +38,76 @@ LittlerootTown_BrendansHouse_1F_Movement_1B69B5:: @ 81B69B5 LittlerootTown_BrendansHouse_1F_EventScript_1B69B7:: @ 81B69B7 LittlerootTown_MaysHouse_1F_EventScript_1B69B7:: @ 81B69B7 msgbox LittlerootTown_BrendansHouse_1F_Text_172531, 4 - closebutton - move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CDC - waitmove 0 + closemessage + applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CDC + waitmovement 0 releaseall end LittlerootTown_BrendansHouse_2F_EventScript_1B69D3:: @ 81B69D3 lockall setvar 0x8004, 0 - jump LittlerootTown_BrendansHouse_2F_EventScript_1B69EB + goto LittlerootTown_BrendansHouse_2F_EventScript_1B69EB end LittlerootTown_MaysHouse_2F_EventScript_1B69DF:: @ 81B69DF lockall setvar 0x8004, 1 - jump LittlerootTown_MaysHouse_2F_EventScript_1B69EB + goto LittlerootTown_MaysHouse_2F_EventScript_1B69EB end LittlerootTown_BrendansHouse_2F_EventScript_1B69EB:: @ 81B69EB LittlerootTown_MaysHouse_2F_EventScript_1B69EB:: @ 81B69EB checkflag 81 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_1B6A91 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_1B6A91 msgbox LittlerootTown_BrendansHouse_2F_Text_172E18, 4 call LittlerootTown_BrendansHouse_2F_EventScript_1B6A9B - pause 30 + delay 30 setvar 0x4092, 6 setflag 81 setflag 754 setflag 755 - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A31 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A31 compare RESULT, 1 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A61 - playsfx 9 - disappear 0x8008 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A61 + playse 9 + removeobject 0x8008 releaseall end LittlerootTown_BrendansHouse_2F_EventScript_1B6A31:: @ 81B6A31 setvar 0x8008, 14 - reappear 0x8008 - move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA2 - waitmove 0 - move 255, LittlerootTown_BrendansHouse_2F_Movement_1A0843 - waitmove 0 + addobject 0x8008 + applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA2 + waitmovement 0 + applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1A0843 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_2F_Text_172E4C, 4 - closebutton - move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA9 - waitmove 0 + closemessage + applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA9 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_1B6A61:: @ 81B6A61 setvar 0x8008, 14 - reappear 0x8008 - move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AAD - waitmove 0 - move 255, LittlerootTown_BrendansHouse_2F_Movement_1A083F - waitmove 0 + addobject 0x8008 + applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AAD + waitmovement 0 + applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1A083F + waitmovement 0 msgbox LittlerootTown_BrendansHouse_2F_Text_172E4C, 4 - closebutton - move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AB4 - waitmove 0 + closemessage + applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AB4 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_1B6A91:: @ 81B6A91 - inccounter GAME_STAT_CHECKED_CLOCK + incrementgamestat GAME_STAT_CHECKED_CLOCK fadescreen 1 - special sub_810D6B8 + special ScrSpecial_ViewWallClock waitstate releaseall end @@ -155,75 +155,75 @@ LittlerootTown_MaysHouse_1F_EventScript_1B6AB8:: @ 81B6AB8 end LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF:: @ 81B6ABF - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0843 - waitmove 0 + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0843 + waitmovement 0 call LittlerootTown_BrendansHouse_1F_EventScript_1B6B9D - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CCC - waitmove 0 - playmusic 453, 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CCC + waitmovement 0 + playbgm 453, 0 msgbox LittlerootTown_BrendansHouse_1F_Text_1725C9, 4 - closebutton - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BDB - waitmove 0 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CD2 - waitmove 0 + closemessage + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BDB + waitmovement 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CD2 + waitmovement 0 call LittlerootTown_BrendansHouse_1F_EventScript_1B6BBE - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F + waitmovement 0 msgbox LittlerootTown_BrendansHouse_1F_Text_1725FE, 4 msgbox LittlerootTown_BrendansHouse_1F_Text_172644, 4 - closebutton + closemessage setvar 0x4001, 1 - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BE1 - waitmove 0 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B6AB8 + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BE1 + waitmovement 0 + goto LittlerootTown_BrendansHouse_1F_EventScript_1B6AB8 end LittlerootTown_MaysHouse_1F_EventScript_1B6B2E:: @ 81B6B2E - move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1A083F - waitmove 0 + applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1A083F + waitmovement 0 call LittlerootTown_MaysHouse_1F_EventScript_1B6B9D - move 255, LittlerootTown_MaysHouse_1F_Movement_1B6CD4 - waitmove 0 - playmusic 453, 0 + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1B6CD4 + waitmovement 0 + playbgm 453, 0 msgbox LittlerootTown_MaysHouse_1F_Text_1725C9, 4 - closebutton - move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BDE - waitmove 0 - move 255, LittlerootTown_MaysHouse_1F_Movement_1B6CDA - waitmove 0 + closemessage + applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BDE + waitmovement 0 + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1B6CDA + waitmovement 0 call LittlerootTown_MaysHouse_1F_EventScript_1B6BBE - move 255, LittlerootTown_MaysHouse_1F_Movement_1A0843 - waitmove 0 + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1A0843 + waitmovement 0 msgbox LittlerootTown_MaysHouse_1F_Text_1725FE, 4 msgbox LittlerootTown_MaysHouse_1F_Text_172644, 4 - closebutton + closemessage setvar 0x4001, 1 - move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BE5 - waitmove 0 - jump LittlerootTown_MaysHouse_1F_EventScript_1B6AB8 + applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BE5 + waitmovement 0 + goto LittlerootTown_MaysHouse_1F_EventScript_1B6AB8 end LittlerootTown_BrendansHouse_1F_EventScript_1B6B9D:: @ 81B6B9D LittlerootTown_MaysHouse_1F_EventScript_1B6B9D:: @ 81B6B9D - playsfx 21 - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0833 - waitmove 0 - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0833 + waitmovement 0 + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0835 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_1F_Text_1725A3, 4 - closebutton + closemessage return LittlerootTown_BrendansHouse_1F_EventScript_1B6BBE:: @ 81B6BBE LittlerootTown_MaysHouse_1F_EventScript_1B6BBE:: @ 81B6BBE - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A0841 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A0841 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_1F_Text_172841, 4 - fadedefault + fadedefaultbgm special TurnOffTVScreen setflag 2096 - pause 35 + delay 35 return LittlerootTown_BrendansHouse_1F_Movement_1B6BDB:: @ 81B6BDB @@ -253,17 +253,17 @@ LittlerootTown_MaysHouse_1F_EventScript_1B6BE9:: @ 81B6BE9 lock faceplayer compare 0x4082, 4 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33 compare 0x408c, 4 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33 checkflag 2059 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D checkflag 82 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72 compare 0x4001, 1 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C80 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C80 compare 0x4092, 7 - jumpif 4, LittlerootTown_BrendansHouse_1F_EventScript_1B6C9C + goto_if 4, LittlerootTown_BrendansHouse_1F_EventScript_1B6C9C msgbox LittlerootTown_BrendansHouse_1F_Text_172429, 4 release end @@ -275,11 +275,11 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C33:: @ 81B6C33 LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D:: @ 81B6C3D checkflag 133 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72 msgbox LittlerootTown_BrendansHouse_1F_Text_172782, 4 giveitem ITEM_AMULET_COIN compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1A029B + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1A029B msgbox LittlerootTown_BrendansHouse_1F_Text_1727CD, 4 setflag 133 release @@ -287,7 +287,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D:: @ 81B6C3D LittlerootTown_BrendansHouse_1F_EventScript_1B6C72:: @ 81B6C72 msgbox LittlerootTown_BrendansHouse_1F_Text_172717, 4 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A + goto LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A end LittlerootTown_BrendansHouse_1F_EventScript_1B6C80:: @ 81B6C80 @@ -296,9 +296,9 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C80:: @ 81B6C80 end LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A:: @ 81B6C8A - closebutton + closemessage call LittlerootTown_BrendansHouse_1F_EventScript_1A02CA - inccounter GAME_STAT_RESTED_AT_HOME + incrementgamestat GAME_STAT_RESTED_AT_HOME msgbox LittlerootTown_BrendansHouse_1F_Text_17276B, 4 release end @@ -312,8 +312,8 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6CA6:: @ 81B6CA6 LittlerootTown_MaysHouse_1F_EventScript_1B6CA6:: @ 81B6CA6 lock faceplayer - checksound - pokecry SPECIES_MACHOKE, 0 + waitse + playpokecry SPECIES_MACHOKE, 0 msgbox LittlerootTown_BrendansHouse_1F_Text_17281D, 4 waitpokecry release @@ -323,8 +323,8 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6CB9:: @ 81B6CB9 LittlerootTown_MaysHouse_1F_EventScript_1B6CB9:: @ 81B6CB9 lock faceplayer - checksound - pokecry SPECIES_MACHOKE, 0 + waitse + playpokecry SPECIES_MACHOKE, 0 msgbox LittlerootTown_BrendansHouse_1F_Text_172831, 4 waitpokecry release @@ -361,43 +361,43 @@ LittlerootTown_BrendansHouse_1F_Movement_1B6CDC:: @ 81B6CDC LittlerootTown_BrendansHouse_1F_EventScript_1B6CDE:: @ 81B6CDE LittlerootTown_MaysHouse_1F_EventScript_1B6CDE:: @ 81B6CDE lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DAD + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DAD compare RESULT, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD compare 0x8008, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D compare 0x8008, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E28 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0839 - waitmove 0 - playsfx 21 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0833 - waitmove 0 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0835 - waitmove 0 - pause 20 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E28 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0839 + waitmovement 0 + playse 21 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0833 + waitmovement 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0835 + waitmovement 0 + delay 20 compare 0x8008, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD compare 0x8008, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8 msgbox LittlerootTown_BrendansHouse_1F_Text_17298B, 4 giveitem ITEM_SS_TICKET msgbox LittlerootTown_BrendansHouse_1F_Text_172A7D, 4 - closebutton + closemessage compare 0x8008, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3 compare 0x8008, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE msgbox LittlerootTown_BrendansHouse_1F_Text_172B5E, 4 - closebutton + closemessage compare 0x8008, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9 compare 0x8008, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B - playsfx 8 - disappear 0x8009 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B + playse 8 + removeobject 0x8009 setflag 291 setvar 0x4082, 4 setvar 0x408c, 4 @@ -417,45 +417,45 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD:: @ 81B6DBD return LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD:: @ 81B6DCD - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E33 - waitmove 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E33 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8:: @ 81B6DD8 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E36 - waitmove 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E36 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3:: @ 81B6DE3 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E39 - waitmove 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E39 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE:: @ 81B6DEE - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3B - waitmove 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3B + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9:: @ 81B6DF9 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3D - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3D + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B:: @ 81B6E0B - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E43 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E43 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D:: @ 81B6E1D - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E49 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E49 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6E28:: @ 81B6E28 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E54 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E54 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_Movement_1B6E33:: @ 81B6E33 diff --git a/data/scripts/pokeblocks.inc b/data/scripts/pokeblocks.inc index e1add8734..6fe754097 100644 --- a/data/scripts/pokeblocks.inc +++ b/data/scripts/pokeblocks.inc @@ -1,36 +1,36 @@ FallarborTown_ContestLobby_EventScript_1B7604:: @ 81B7604 setvar 0x8008, 4 setvar 0x8009, 1 - move 0x8008, FallarborTown_ContestLobby_Movement_1B7821 - waitmove 0 - jump FallarborTown_ContestLobby_EventScript_1B7681 + applymovement 0x8008, FallarborTown_ContestLobby_Movement_1B7821 + waitmovement 0 + goto FallarborTown_ContestLobby_EventScript_1B7681 end SlateportCity_ContestLobby_EventScript_1B761E:: @ 81B761E setvar 0x8008, 2 setvar 0x8009, 2 - move 6, SlateportCity_ContestLobby_Movement_1A083D - move 0x8008, SlateportCity_ContestLobby_Movement_1B7821 - waitmove 0 - jump SlateportCity_ContestLobby_EventScript_1B7681 + applymovement 6, SlateportCity_ContestLobby_Movement_1A083D + applymovement 0x8008, SlateportCity_ContestLobby_Movement_1B7821 + waitmovement 0 + goto SlateportCity_ContestLobby_EventScript_1B7681 end VerdanturfTown_ContestLobby_EventScript_1B763F:: @ 81B763F setvar 0x8008, 2 setvar 0x8009, 1 - move 0x8008, VerdanturfTown_ContestLobby_Movement_1B7821 - waitmove 0 - jump VerdanturfTown_ContestLobby_EventScript_1B7681 + applymovement 0x8008, VerdanturfTown_ContestLobby_Movement_1B7821 + waitmovement 0 + goto VerdanturfTown_ContestLobby_EventScript_1B7681 end LilycoveCity_ContestLobby_EventScript_1B7659:: @ 81B7659 setvar 0x8008, 3 setvar 0x8009, 3 - move 9, LilycoveCity_ContestLobby_Movement_1A083D - move 10, LilycoveCity_ContestLobby_Movement_1A083D - move 0x8008, LilycoveCity_ContestLobby_Movement_1B7821 - waitmove 0 - jump LilycoveCity_ContestLobby_EventScript_1B7681 + applymovement 9, LilycoveCity_ContestLobby_Movement_1A083D + applymovement 10, LilycoveCity_ContestLobby_Movement_1A083D + applymovement 0x8008, LilycoveCity_ContestLobby_Movement_1B7821 + waitmovement 0 + goto LilycoveCity_ContestLobby_EventScript_1B7681 end FallarborTown_ContestLobby_EventScript_1B7681:: @ 81B7681 @@ -40,24 +40,24 @@ VerdanturfTown_ContestLobby_EventScript_1B7681:: @ 81B7681 lockall msgbox FallarborTown_ContestLobby_Text_1B6E63, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B76A1 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B76A1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B76E5 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B76E5 end FallarborTown_ContestLobby_EventScript_1B76A1:: @ 81B76A1 checkitem ITEM_POKEBLOCK_CASE, 1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7780 - specialval RESULT, PlayerHasBerries + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7780 + specialvar RESULT, PlayerHasBerries compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B770E + goto_if_eq FallarborTown_ContestLobby_EventScript_1B770E msgbox FallarborTown_ContestLobby_Text_1B6E9D, 4 - specialval RESULT, sub_810CA00 + specialvar RESULT, sub_810CA00 compare RESULT, 65535 - jumpif 5, FallarborTown_ContestLobby_EventScript_1B76EF + goto_if 5, FallarborTown_ContestLobby_EventScript_1B76EF compare RESULT, 65535 - jumpeq FallarborTown_ContestLobby_EventScript_1B7776 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7776 end FallarborTown_ContestLobby_EventScript_1B76E5:: @ 81B76E5 @@ -68,27 +68,27 @@ FallarborTown_ContestLobby_EventScript_1B76E5:: @ 81B76E5 FallarborTown_ContestLobby_EventScript_1B76EF:: @ 81B76EF msgbox FallarborTown_ContestLobby_Text_1B6ED0, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B7734 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7734 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7726 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7726 end FallarborTown_ContestLobby_EventScript_1B770E:: @ 81B770E msgbox FallarborTown_ContestLobby_Text_1B6FF0, 4 - checkdailyflags + dodailyevents checkflag 2241 - jumpeq FallarborTown_ContestLobby_EventScript_1B774F - jump FallarborTown_ContestLobby_EventScript_1B7759 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B774F + goto FallarborTown_ContestLobby_EventScript_1B7759 end FallarborTown_ContestLobby_EventScript_1B7726:: @ 81B7726 msgbox FallarborTown_ContestLobby_Text_1B6F1F, 4 - jump FallarborTown_ContestLobby_EventScript_1B7734 + goto FallarborTown_ContestLobby_EventScript_1B7734 end FallarborTown_ContestLobby_EventScript_1B7734:: @ 81B7734 msgbox FallarborTown_ContestLobby_Text_1B6EF1, 4 - jump FallarborTown_ContestLobby_EventScript_1B7742 + goto FallarborTown_ContestLobby_EventScript_1B7742 end FallarborTown_ContestLobby_EventScript_1B7742:: @ 81B7742 @@ -108,7 +108,7 @@ FallarborTown_ContestLobby_EventScript_1B7759:: @ 81B7759 msgbox FallarborTown_ContestLobby_Text_1B704A, 4 giveitem ITEM_PECHA_BERRY setflag 2241 - jump FallarborTown_ContestLobby_EventScript_1B76EF + goto FallarborTown_ContestLobby_EventScript_1B76EF end FallarborTown_ContestLobby_EventScript_1B7776:: @ 81B7776 @@ -123,22 +123,22 @@ FallarborTown_ContestLobby_EventScript_1B7780:: @ 81B7780 FallarborTown_ContestLobby_EventScript_1B778A:: @ 81B778A setvar 0x8008, 4 - jump FallarborTown_ContestLobby_EventScript_1B77B6 + goto FallarborTown_ContestLobby_EventScript_1B77B6 end SlateportCity_ContestLobby_EventScript_1B7795:: @ 81B7795 setvar 0x8008, 2 - jump SlateportCity_ContestLobby_EventScript_1B77B6 + goto SlateportCity_ContestLobby_EventScript_1B77B6 end VerdanturfTown_ContestLobby_EventScript_1B77A0:: @ 81B77A0 setvar 0x8008, 2 - jump VerdanturfTown_ContestLobby_EventScript_1B77B6 + goto VerdanturfTown_ContestLobby_EventScript_1B77B6 end LilycoveCity_ContestLobby_EventScript_1B77AB:: @ 81B77AB setvar 0x8008, 3 - jump LilycoveCity_ContestLobby_EventScript_1B77B6 + goto LilycoveCity_ContestLobby_EventScript_1B77B6 end FallarborTown_ContestLobby_EventScript_1B77B6:: @ 81B77B6 @@ -148,11 +148,11 @@ VerdanturfTown_ContestLobby_EventScript_1B77B6:: @ 81B77B6 lock faceplayer msgbox FallarborTown_ContestLobby_Text_1B742F, 4 - specialval RESULT, PlayerHasBerries + specialvar RESULT, PlayerHasBerries compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B77DC + goto_if_eq FallarborTown_ContestLobby_EventScript_1B77DC compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B77E6 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B77E6 end FallarborTown_ContestLobby_EventScript_1B77DC:: @ 81B77DC @@ -161,10 +161,10 @@ FallarborTown_ContestLobby_EventScript_1B77DC:: @ 81B77DC end FallarborTown_ContestLobby_EventScript_1B77E6:: @ 81B77E6 - checkdailyflags + dodailyevents checkflag 2241 - jumpeq FallarborTown_ContestLobby_EventScript_1B77F6 - jump FallarborTown_ContestLobby_EventScript_1B7800 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B77F6 + goto FallarborTown_ContestLobby_EventScript_1B7800 end FallarborTown_ContestLobby_EventScript_1B77F6:: @ 81B77F6 @@ -188,19 +188,19 @@ VerdanturfTown_ContestLobby_Movement_1B7821:: @ 81B7821 step_end FallarborTown_ContestLobby_EventScript_1B7823:: @ 81B7823 - jump FallarborTown_ContestLobby_EventScript_1B783B + goto FallarborTown_ContestLobby_EventScript_1B783B end SlateportCity_ContestLobby_EventScript_1B7829:: @ 81B7829 - jump SlateportCity_ContestLobby_EventScript_1B783B + goto SlateportCity_ContestLobby_EventScript_1B783B end VerdanturfTown_ContestLobby_EventScript_1B782F:: @ 81B782F - jump VerdanturfTown_ContestLobby_EventScript_1B783B + goto VerdanturfTown_ContestLobby_EventScript_1B783B end LilycoveCity_ContestLobby_EventScript_1B7835:: @ 81B7835 - jump LilycoveCity_ContestLobby_EventScript_1B783B + goto LilycoveCity_ContestLobby_EventScript_1B783B end FallarborTown_ContestLobby_EventScript_1B783B:: @ 81B783B @@ -208,25 +208,25 @@ LilycoveCity_ContestLobby_EventScript_1B783B:: @ 81B783B SlateportCity_ContestLobby_EventScript_1B783B:: @ 81B783B VerdanturfTown_ContestLobby_EventScript_1B783B:: @ 81B783B lockall - specialval RESULT, PlayerHasBerries + specialvar RESULT, PlayerHasBerries compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7897 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7897 checkitem ITEM_POKEBLOCK_CASE, 1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7942 - specialval RESULT, sub_810CA00 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7942 + specialvar RESULT, sub_810CA00 compare RESULT, 65535 - jumpif 5, FallarborTown_ContestLobby_EventScript_1B7878 + goto_if 5, FallarborTown_ContestLobby_EventScript_1B7878 compare RESULT, 65535 - jumpeq FallarborTown_ContestLobby_EventScript_1B7938 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7938 end FallarborTown_ContestLobby_EventScript_1B7878:: @ 81B7878 msgbox FallarborTown_ContestLobby_Text_1B727C, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B78A1 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B78A1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7936 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7936 end FallarborTown_ContestLobby_EventScript_1B7897:: @ 81B7897 @@ -235,47 +235,47 @@ FallarborTown_ContestLobby_EventScript_1B7897:: @ 81B7897 end FallarborTown_ContestLobby_EventScript_1B78A1:: @ 81B78A1 - call FallarborTown_ContestLobby_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7936 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7936 message FallarborTown_ContestLobby_Text_1B7304 - waittext + waitmessage special sub_8083614 waitstate compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B7980 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7980 compare RESULT, 2 - jumpeq FallarborTown_ContestLobby_EventScript_1B794C + goto_if_eq FallarborTown_ContestLobby_EventScript_1B794C compare RESULT, 3 - jumpeq FallarborTown_ContestLobby_EventScript_1B7959 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7959 compare RESULT, 5 - jumpeq FallarborTown_ContestLobby_EventScript_1B7966 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7966 compare RESULT, 6 - jumpeq FallarborTown_ContestLobby_EventScript_1B7973 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7973 end FallarborTown_ContestLobby_EventScript_1B78F3:: @ 81B78F3 msgbox FallarborTown_ContestLobby_Text_1B733B, 4 - jump FallarborTown_ContestLobby_EventScript_1B791D + goto FallarborTown_ContestLobby_EventScript_1B791D end FallarborTown_ContestLobby_EventScript_1B7901:: @ 81B7901 msgbox FallarborTown_ContestLobby_Text_1B7347, 4 - jump FallarborTown_ContestLobby_EventScript_1B791D + goto FallarborTown_ContestLobby_EventScript_1B791D end FallarborTown_ContestLobby_EventScript_1B790F:: @ 81B790F msgbox FallarborTown_ContestLobby_Text_1B735A, 4 - jump FallarborTown_ContestLobby_EventScript_1B791D + goto FallarborTown_ContestLobby_EventScript_1B791D end FallarborTown_ContestLobby_EventScript_1B791D:: @ 81B791D setvar 0x8004, 0 fadescreen 1 - disappear 240 - disappear 239 - disappear 238 - disappear 237 + removeobject 240 + removeobject 239 + removeobject 238 + removeobject 237 special sub_804E538 waitstate releaseall @@ -321,11 +321,11 @@ FallarborTown_ContestLobby_EventScript_1B7973:: @ 81B7973 FallarborTown_ContestLobby_EventScript_1B7980:: @ 81B7980 fadescreen 1 - specialval RESULT, GetLinkPartnerNames + specialvar RESULT, GetLinkPartnerNames copyvar 0x8008, RESULT copyvar 0x8004, 0x8008 special SpawnBerryBlenderLinkPlayerSprites - jump FallarborTown_ContestLobby_EventScript_1B799A + goto FallarborTown_ContestLobby_EventScript_1B799A end FallarborTown_ContestLobby_EventScript_1B799A:: @ 81B799A diff --git a/data/scripts/safari_zone.inc b/data/scripts/safari_zone.inc index 03293115b..d0283f072 100644 --- a/data/scripts/safari_zone.inc +++ b/data/scripts/safari_zone.inc @@ -1,7 +1,7 @@ gUnknown_081C340A:: @ 81C340A setvar 0x40a4, 1 special ExitSafariMode - warp3 Route121_SafariZoneEntrance, 255, 2, 5 + setwarp Route121_SafariZoneEntrance, 255, 2, 5 end EventScript_1C341B: @ 81C341B @@ -15,39 +15,39 @@ gUnknown_081C342D:: @ 81C342D lockall msgbox UnknownString_81C34B2, 5 compare RESULT, 1 - jumpeq EventScript_1C3443 + goto_if_eq EventScript_1C3443 releaseall end EventScript_1C3443: - jump EventScript_1C341B + goto EventScript_1C341B gUnknown_081C3448:: @ 81C3448 lockall - playsfx 73 + playse 73 message UnknownString_81C34E4 - waittext + waitmessage waitbutton releaseall - jump EventScript_1C341B + goto EventScript_1C341B gUnknown_081C3459:: @ 81C3459 lockall - playsfx 73 + playse 73 message UnknownString_81C3514 - waittext + waitmessage waitbutton releaseall - jump EventScript_1C341B + goto EventScript_1C341B gUnknown_081C346A:: @ 81C346A lockall special SafariZoneGetPokeblockNameInFeeder - compare RESULT, -1 - jumpif 5, EventScript_1C34A9 + compare RESULT, 0xFFFF + goto_if 5, EventScript_1C34A9 msgbox UnknownString_81C354E, 5 compare RESULT, 1 - jumpeq EventScript_1C348E + goto_if_eq EventScript_1C348E releaseall end @@ -55,20 +55,20 @@ EventScript_1C348E: fadescreen 1 special sub_810BAF4 waitstate - compare RESULT, -1 - jumpif 5, EventScript_1C34A0 + compare RESULT, 0xFFFF + goto_if 5, EventScript_1C34A0 end EventScript_1C34A0: message UnknownString_81C35A9 - waittext + waitmessage waitbutton releaseall end EventScript_1C34A9: message UnknownString_81C3583 - waittext + waitmessage waitbutton releaseall end diff --git a/data/scripts/secret_power_tm.inc b/data/scripts/secret_power_tm.inc index 629125030..f3c03a853 100644 --- a/data/scripts/secret_power_tm.inc +++ b/data/scripts/secret_power_tm.inc @@ -3,7 +3,7 @@ Route111_EventScript_1A3858:: @ 81A3858 faceplayer msgbox Route111_Text_1A3520, 5 compare RESULT, 1 - jumpeq Route111_EventScript_1A3877 + goto_if_eq Route111_EventScript_1A3877 msgbox Route111_Text_1A37B5, 4 release end @@ -11,29 +11,29 @@ Route111_EventScript_1A3858:: @ 81A3858 Route111_EventScript_1A3877:: @ 81A3877 giveitem ITEM_TM43 compare RESULT, 0 - jumpeq Route111_EventScript_1A38D9 + goto_if_eq Route111_EventScript_1A38D9 msgbox Route111_Text_1A35C5, 4 - closebutton + closemessage setflag 96 clearflag 948 compare FACING, 3 - callif 1, Route111_EventScript_1A38C3 + call_if 1, Route111_EventScript_1A38C3 compare FACING, 4 - callif 1, Route111_EventScript_1A38C3 + call_if 1, Route111_EventScript_1A38C3 compare FACING, 2 - callif 1, Route111_EventScript_1A38CE - disappear LAST_TALKED + call_if 1, Route111_EventScript_1A38CE + removeobject LAST_TALKED release end Route111_EventScript_1A38C3:: @ 81A38C3 - move LAST_TALKED, Route111_Movement_1A38E3 - waitmove 0 + applymovement LAST_TALKED, Route111_Movement_1A38E3 + waitmovement 0 return Route111_EventScript_1A38CE:: @ 81A38CE - move LAST_TALKED, Route111_Movement_1A38EF - waitmove 0 + applymovement LAST_TALKED, Route111_Movement_1A38EF + waitmovement 0 return Route111_EventScript_1A38D9:: @ 81A38D9 diff --git a/data/scripts/storyteller.inc b/data/scripts/storyteller.inc deleted file mode 100644 index eba94e698..000000000 --- a/data/scripts/storyteller.inc +++ /dev/null @@ -1,82 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1B0816:: @ 81B0816 - setvar 0x8008, 0 - setvar 0x8009, 0 - setvar 0x800a, 0 - setvar 0x800b, 0 - lock - faceplayer - msgbox MauvilleCity_PokemonCenter_1F_Text_1AECC6, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914 - specialval RESULT, sub_80F889C - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B08D3 - -MauvilleCity_PokemonCenter_1F_EventScript_1B084F:: @ 81B084F - message MauvilleCity_PokemonCenter_1F_Text_1AED35 - waittext - special sub_80F8874 - waitstate - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0883 - setvar 0x8008, 1 - special sub_80F8888 - waittext - waitbutton - specialval RESULT, sub_80F88AC - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0893 - jump MauvilleCity_PokemonCenter_1F_EventScript_1B0909 - -MauvilleCity_PokemonCenter_1F_EventScript_1B0883:: @ 81B0883 - compare 0x8008, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914 - jump MauvilleCity_PokemonCenter_1F_EventScript_1B08AE - -MauvilleCity_PokemonCenter_1F_EventScript_1B0893:: @ 81B0893 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEE50, 4 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF0A, 5 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B084F - -MauvilleCity_PokemonCenter_1F_EventScript_1B08AE:: @ 81B08AE - specialval RESULT, sub_80F88E0 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F - specialval RESULT, sub_80F889C - compare RESULT, 4 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F - jump MauvilleCity_PokemonCenter_1F_EventScript_1B08DB - -MauvilleCity_PokemonCenter_1F_EventScript_1B08D3:: @ 81B08D3 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AED70, 4 - -MauvilleCity_PokemonCenter_1F_EventScript_1B08DB:: @ 81B08DB - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEEB4, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914 - specialval RESULT, sub_80F88FC - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0909 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF49, 4 - closebutton - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0909:: @ 81B0909 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEDE8, 4 - closebutton - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0914:: @ 81B0914 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AED1D, 4 - closebutton - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B091F:: @ 81B091F - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEFA5, 4 - closebutton - release - end diff --git a/data/scripts/trader.inc b/data/scripts/trader.inc deleted file mode 100644 index b52c8a2dc..000000000 --- a/data/scripts/trader.inc +++ /dev/null @@ -1,88 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB:: @ 81AEBAB - lock - faceplayer - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE88F, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA - special sub_8109C44 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3 - message MauvilleCity_PokemonCenter_1F_Text_1AE910 - waittext - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA:: @ 81AEBDA - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE8C6, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3:: @ 81AEBE3 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE8DF, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC:: @ 81AEBEC - special sub_8109E34 - waitstate - compare 0x8004, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D - compare 0x8004, 65535 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC36 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE97C, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC42 - special sub_8109C58 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D:: @ 81AEC2D - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE950, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC36:: @ 81AEC36 - message MauvilleCity_PokemonCenter_1F_Text_1AEB31 - waittext - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC42:: @ 81AEC42 - message MauvilleCity_PokemonCenter_1F_Text_1AE910 - waittext - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E:: @ 81AEC4E - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9B6, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC57:: @ 81AEC57 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9F8, 4 - special sub_8109CF0 - waitstate - compare 0x8006, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECA6 - compare 0x8006, 65535 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECAF - special sub_8109C90 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECBD - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA9B, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC57 - special sub_8109DE0 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAFB, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AECA6:: @ 81AECA6 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA2B, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AECAF:: @ 81AECAF - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAC3, 4 - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AECBD:: @ 81AECBD - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA57, 2 - end diff --git a/data/scripts/tv.inc b/data/scripts/tv.inc index 1f8956811..425f42a85 100644 --- a/data/scripts/tv.inc +++ b/data/scripts/tv.inc @@ -1,33 +1,33 @@ Event_TV:: @ 81A6E72 lockall - inccounter GAME_STAT_WATCHED_TV + incrementgamestat GAME_STAT_WATCHED_TV special sub_80C2014 - specialval RESULT, CheckForBigMovieOrEmergencyNewsOnTV + specialvar RESULT, CheckForBigMovieOrEmergencyNewsOnTV compare RESULT, 2 - jumpeq EventScript_1A6F01 + goto_if_eq EventScript_1A6F01 compare RESULT, 1 - jumpeq EventScript_1A6F0B + goto_if_eq EventScript_1A6F0B checkflag 2098 - jumpif 0, EventScript_1A6EF1 + goto_if 0, EventScript_1A6EF1 checkflag 2097 - jumpeq EventScript_1A6EF1 - specialval RESULT, IsTVShowInSearchOfTrainersAiring + goto_if_eq EventScript_1A6EF1 + specialvar RESULT, IsTVShowInSearchOfTrainersAiring compare RESULT, 1 - jumpeq EventScript_1A6F66 - jump EventScript_1A6F50 + goto_if_eq EventScript_1A6F66 + goto EventScript_1A6F50 end EventScript_1A6EBB: - specialval 0x8004, special_0x44 + specialvar 0x8004, special_0x44 compare 0x8004, 255 - jumpeq EventScript_1A6F3F - specialval RESULT, special_0x4a + goto_if_eq EventScript_1A6F3F + specialvar RESULT, special_0x4a compare RESULT, 255 - jumpeq EventScript_1A6F3F + goto_if_eq EventScript_1A6F3F copyvar 0x8004, RESULT - specialval RESULT, sub_80BDA0C + specialvar RESULT, sub_80BDA0C compare RESULT, 0 - jumpif 5, EventScript_1A6F21 + goto_if 5, EventScript_1A6F21 end EventScript_1A6EF1: @@ -57,11 +57,11 @@ EventScript_1A6F0B: EventScript_1A6F21: special DoTVShow - waittext + waitmessage waitbutton compare RESULT, 1 - jumpif 5, EventScript_1A6F21 - jump EventScript_1A6F37 + goto_if 5, EventScript_1A6F21 + goto EventScript_1A6F37 end EventScript_1A6F37: @@ -73,23 +73,23 @@ EventScript_1A6F37: EventScript_1A6F3F: special GetMomOrDadStringForTVMessage msgbox UnknownString_81A0E68, 4 - jump EventScript_1A6F37 + goto EventScript_1A6F37 end EventScript_1A6F50: special sub_80BECE8 compare RESULT, 0 - jumpeq EventScript_1A6EBB - waittext + goto_if_eq EventScript_1A6EBB + waitmessage waitbutton - jump EventScript_1A6F37 + goto EventScript_1A6F37 end EventScript_1A6F66: special DoTVShowInSearchOfTrainers - waittext + waitmessage waitbutton compare RESULT, 0 - jumpeq EventScript_1A6F66 - jump EventScript_1A6F37 + goto_if_eq EventScript_1A6F66 + goto EventScript_1A6F37 end diff --git a/data/shop.s b/data/shop.s deleted file mode 100644 index 071874d0e..000000000 --- a/data/shop.s +++ /dev/null @@ -1,69 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083CC6D0:: @ 83CC6D0 - .4byte MartText_Buy, sub_80B2EFC - .4byte MartText_Sell, sub_80B2F30 - .4byte MartText_Quit2, HandleShopMenuQuit - -gUnknown_083CC6E8:: @ 83CC6E8 - .byte 0, 1, 2 - -gUnknown_083CC6EB:: @ 83CC6EB - .byte 0, 2 - -@ unknown, unreferenced data - .align 1 - .2byte 0x2 - .2byte 0x3 - .2byte 0x4 - .2byte 0xD - .2byte 0x121 - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0x0 - .2byte 0x0 - - .align 2 -gUnknown_083CC708:: @ 83CC708 - .4byte sub_80B3BF4 - .4byte sub_80B3D7C - - .align 1 -gUnknown_083CC710:: @ 83CC710 - .2byte 0x41EE,0x7FFF - - .align 1 -gUnknown_083CC714:: @ 83CC714 - .2byte 0x284,0x282,0x280 - - .align 1 -gUnknown_083CC71A:: @ 83CC71A - .2byte 0x285,0x283,0x281 - - .align 1 -gUnknown_083CC720:: @ 83CC720 - .2byte 0x28C,0x28A,0x288 - - .align 1 -gUnknown_083CC726:: @ 83CC726 - .2byte 0x28D,0x28B,0x289 - - .align 1 -gUnknown_083CC72C:: @ 83CC72C - .2byte 0x2A0,0x2A2,0x2A4 - - .align 1 -gUnknown_083CC732:: @ 83CC732 - .2byte 0x2A1,0x2A3,0x2A5 - - .align 1 -gUnknown_083CC738:: @ 83CC738 - .2byte 0x2A8,0x2AA,0x2AC diff --git a/data/specials.inc b/data/specials.inc index 0eb6b742d..6ce9b5b1e 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -7,7 +7,7 @@ .set __special__, 0 .align 2 gSpecials:: - def_special HealPlayerParty + def_special ScrSpecial_HealPlayerParty def_special SetCableClubWarp def_special DoCableClubWarp def_special sub_80810DC @@ -58,15 +58,15 @@ gSpecials:: def_special FieldObjectInteractionWaterBerryTree def_special PlayerHasBerries def_special IsEnigmaBerryValid - def_special sub_8082558 - def_special sub_80826D8 - def_special sub_8082718 - def_special sub_8082564 - def_special sub_80847C8 + def_special ScrSpecial_GetTrainerBattleMode + def_special ScrSpecial_ShowTrainerIntroSpeech + def_special ScrSpecial_ShowTrainerNonBattlingSpeech + def_special ScrSpecial_HasTrainerBeenFought + def_special ScrSpecial_EndTrainerApproach def_special PlayTrainerEncounterMusic def_special sub_8082C68 - def_special sub_8082C9C - def_special sub_80826B0 + def_special ScrSpecial_GetTrainerEyeRematchFlag + def_special ScrSpecial_StartTrainerEyeRematch def_special ShowPokemonStorageSystem def_special CheckForAlivePartyMons def_special TurnOffTVScreen @@ -100,32 +100,32 @@ gSpecials:: def_special sub_80C5044 def_special GiveMonArtistRibbon def_special sub_808363C - def_special InitSaveDialog + def_special ScrSpecial_DoSaveDialog def_special DoWateringBerryTreeAnim def_special sub_80E60D8 def_special sub_80EB7C4 - def_special sub_80F7B14 - def_special sub_80F7B2C - def_special sub_80F7B40 - def_special sub_80F7C70 - def_special sub_80F7C84 - def_special sub_80F7C90 - def_special sub_80F7C54 + def_special ScrSpecial_GetCurrentMauvilleMan + def_special ScrSpecial_HasBardSongBeenChanged + def_special ScrSpecial_SaveBardSongLyrics + def_special ScrSpecial_GetHipsterSpokenFlag + def_special ScrSpecial_SetHipsterSpokenFlag + def_special ScrSpecial_HipsterTeachWord + def_special ScrSpecial_PlayBardSong def_special sub_80F83D0 - def_special sub_80F7CF4 - def_special sub_80F7CC8 - def_special sub_80F889C - def_special sub_80F8888 - def_special sub_80F8874 - def_special sub_80F88AC - def_special sub_80F88FC - def_special sub_80F88E0 - def_special sub_8109E34 - def_special sub_8109C44 - def_special sub_8109C58 - def_special sub_8109C90 - def_special sub_8109CF0 - def_special sub_8109DE0 + def_special ScrSpecial_GenerateGiddyLine + def_special ScrSpecial_GiddyShouldTellAnotherTale + def_special ScrSpecial_StorytellerGetFreeStorySlot + def_special ScrSpecial_StorytellerDisplayStory + def_special ScrSpecial_StorytellerStoryListMenu + def_special ScrSpecial_StorytellerUpdateStat + def_special ScrSpecial_StorytellerInitializeRandomStat + def_special ScrSpecial_HasStorytellerAlreadyRecorded + def_special ScrSpecial_TraderMenuGetDecoration + def_special ScrSpecial_GetTraderTradedFlag + def_special ScrSpecial_DoesPlayerHaveNoDecorations + def_special ScrSpecial_IsDecorationFull + def_special ScrSpecial_TraderMenuGiveDecoration + def_special ScrSpecial_TraderDoDecorationTrade def_special GetShroomishSizeRecordInfo def_special CompareShroomishSize def_special GetBarboachSizeRecordInfo @@ -160,11 +160,11 @@ gSpecials:: def_special SetFlagInVar def_special CableCarWarp def_special sub_8123218 - def_special sub_8053E90 + def_special Overworld_PlaySpecialMapMusic def_special StartWallClock - def_special sub_810D6B8 - def_special ChooseStarter - def_special StartBattle_WallyTutorial + def_special ScrSpecial_ViewWallClock + def_special ScrSpecial_ChooseStarter + def_special ScrSpecial_StartWallyTutorialBattle def_special sub_80BF9F8 def_special sub_80F9A0C def_special sub_810CA00 @@ -178,7 +178,7 @@ gSpecials:: def_special sub_810FF48 def_special sub_810FAA0 def_special sub_810FF60 - def_special RockSmashWildEncounter + def_special ScrSpecial_RockSmashWildEncounter def_special GabbyAndTyGetBattleNum def_special sub_80BDC14 def_special GabbyAndTyBeforeInterview @@ -229,11 +229,11 @@ gSpecials:: def_special sub_80F9A4C def_special sub_80F9EEC def_special sub_80FA0DC - def_special sub_80F9F84 - def_special sub_80F9F3C + def_special ScrSpecial_GetPokemonNicknameAndMoveName + def_special ScrSpecial_CountPokemonMoves def_special sub_8132670 def_special GetRecordedCyclingRoadResults - def_special BeginCyclingRoadChallenge + def_special ScrSpecial_BeginCyclingRoadChallenge def_special GetPlayerAvatarBike def_special FinishCyclingRoadChallenge def_special UpdateCyclingRoadState @@ -269,9 +269,9 @@ gSpecials:: def_special ShowBerryBlenderRecordWindow def_special ResetTrickHouseEndRoomFlag def_special SetTrickHouseEndRoomFlag - def_special TryCreatePCMenu + def_special ScrSpecial_CreatePCMenu def_special AccessHallOfFamePC - def_special sub_810D6A4 + def_special ScrSpecial_ShowDiploma def_special CheckLeadMonCool def_special CheckLeadMonBeauty def_special CheckLeadMonCute @@ -301,7 +301,7 @@ gSpecials:: def_special sub_810F4FC def_special LeadMonHasEffortRibbon def_special GivLeadMonEffortRibbon - def_special GetLeadMonEVCount + def_special ScrSpecial_AreLeadMonEVsMaxedOut def_special sub_8064EAC def_special sub_8064ED4 def_special InitRoamer @@ -318,9 +318,9 @@ gSpecials:: def_special IsPokerusInParty def_special sub_8069D78 def_special sub_810F758 - def_special StartBattle_GroudonKyogre - def_special StartBattle_Rayquaza - def_special StartBattle_Regi + def_special ScrSpecial_StartGroudonKyogreBattle + def_special ScrSpecial_StartRayquazaBattle + def_special ScrSpecial_StartRegiBattle def_special sub_8082524 def_special DoSealedChamberShakingEffect2 def_special sub_810F828 @@ -330,7 +330,7 @@ gSpecials:: def_special ShowContestEntryMonPic def_special sub_80C5164 def_special sub_8134AB4 - def_special StartBattle_SouthernIsland + def_special ScrSpecial_StartSouthernIslandBattle def_special SetRoute119Weather def_special SetRoute123Weather def_special ScriptGetMultiplayerId diff --git a/data/text/bard.inc b/data/text/bard.inc index edf4942f6..bd22c97a3 100644 --- a/data/text/bard.inc +++ b/data/text/bard.inc @@ -1,19 +1,19 @@ -UnknownString_81B0A83: @ 81B0A83 +gTextBard_BardTesting: @ 81B0A83 .string "BARD testing!$" -MauvilleCity_PokemonCenter_1F_Text_1B0A91:: @ 81B0A91 +gTextBard_HiImTheBard:: @ 81B0A91 .string "Hi, I’m the BARD.\n" .string "Would you like to hear my song?$" -MauvilleCity_PokemonCenter_1F_Text_1B0AC3:: @ 81B0AC3 +gTextBard_OhYouveLeftMe:: @ 81B0AC3 .string "Oh...\n" .string "You’ve left me feeling the blues...$" -MauvilleCity_PokemonCenter_1F_Text_1B0AED:: @ 81B0AED +gTextBard_OhWhatAMovingSong:: @ 81B0AED .string "Oh, what a moving song...\n" .string "I wish I could play it for others...$" -MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C +gTextBard_SoHowDoYouLikeMySong:: @ 81B0B2C .string "So?\n" .string "How do you like my song?\p" .string "But I’m none too happy about the\n" @@ -21,18 +21,18 @@ MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C .string "How would you like to write some new\n" .string "lyrics for me?$" -MauvilleCity_PokemonCenter_1F_Text_1B0BA6:: @ 81B0BA6 +gTextBard_OhYouveLeftMe2:: @ 81B0BA6 .string "Oh...\n" .string "You’ve left me feeling the blues...$" -MauvilleCity_PokemonCenter_1F_Text_1B0BD0:: @ 81B0BD0 +gTextBard_ThankYouKindly:: @ 81B0BD0 .string "Thank you kindly!\n" .string "Let me sing it for you.$" -MauvilleCity_PokemonCenter_1F_Text_1B0BFA:: @ 81B0BFA +gTextBard_WasThatHowYouWanted:: @ 81B0BFA .string "Was that how you wanted your song\n" .string "to go?$" -MauvilleCity_PokemonCenter_1F_Text_1B0C23:: @ 81B0C23 +gTextBard_OkayThatsIt:: @ 81B0C23 .string "Okay! That’s it, then.\n" .string "I’ll sing this song for a while.$" diff --git a/data/text/giddy.inc b/data/text/giddy.inc index 040ef2ae5..a763776bf 100644 --- a/data/text/giddy.inc +++ b/data/text/giddy.inc @@ -1,16 +1,16 @@ -MauvilleCity_PokemonCenter_1F_Text_1B092A:: @ 81B092A +gTextGiddy_Introduction:: @ 81B092A .string "I’m GIDDY!\n" .string "I have a scintillating story for you!\p" .string "Would you like to hear my story?$" -MauvilleCity_PokemonCenter_1F_Text_1B097C:: @ 81B097C +gTextGiddy_YouveDeflatedMe:: @ 81B097C .string "Oh...\n" .string "You’ve deflated me...$" -MauvilleCity_PokemonCenter_1F_Text_1B0998:: @ 81B0998 +gTextGiddy_AlsoIWasThinking:: @ 81B0998 .string "Also, I was thinking...$" -MauvilleCity_PokemonCenter_1F_Text_1B09B0:: @ 81B09B0 +gTextGiddy_ByeBye:: @ 81B09B0 .string "That’s about it, I think...\p" .string "We should chat again!\n" .string "Bye-bye!$" diff --git a/data/text/hipster.inc b/data/text/hipster.inc index a30943d3a..630db02b2 100644 --- a/data/text/hipster.inc +++ b/data/text/hipster.inc @@ -1,19 +1,19 @@ -MauvilleCity_PokemonCenter_1F_Text_1B0C5B:: @ 81B0C5B +gTextHipster_TheyCallMeTheHipster:: @ 81B0C5B .string "Hey, yo! They call me the HIPSTER.\n" .string "I’ll teach you what’s hip and happening.$" -MauvilleCity_PokemonCenter_1F_Text_1B0CA7:: @ 81B0CA7 +gTextHipster_TaughtYouAlready:: @ 81B0CA7 .string "But, hey, I taught you what’s hip and\n" .string "happening already.\p" .string "I’d like to spread the good word to\n" .string "other folks.$" -MauvilleCity_PokemonCenter_1F_Text_1B0D11:: @ 81B0D11 +gTextHipster_YouAlreadyKnowALot:: @ 81B0D11 .string "But, hey, you already know a lot about\n" .string "what’s hip and happening.\p" .string "I’ve got nothing new to teach you!$" -MauvilleCity_PokemonCenter_1F_Text_1B0D75:: @ 81B0D75 +gTextHipster_HaveYouHeardAbout:: @ 81B0D75 .string "Hey, have you heard about\n" .string "“{STR_VAR_1}”?\p" .string "What’s it mean? Well...\n" diff --git a/data/text/storyteller.inc b/data/text/storyteller.inc index 3cfa8a698..437a1fa21 100644 --- a/data/text/storyteller.inc +++ b/data/text/storyteller.inc @@ -1,24 +1,24 @@ -MauvilleCity_PokemonCenter_1F_Text_1AECC6:: @ 81AECC6 +gTextStoryteller_Introduction:: @ 81AECC6 .string "I’m the STORYTELLER.\n" .string "I’ll tell you tales of legendary\l" .string "TRAINERS.\p" .string "Will you hear my tale?$" -MauvilleCity_PokemonCenter_1F_Text_1AED1D:: @ 81AED1D +gTextStoryteller_OhIFeelStifled:: @ 81AED1D .string "Oh...\n" .string "I feel stifled...$" -MauvilleCity_PokemonCenter_1F_Text_1AED35:: @ 81AED35 +gTextStoryteller_WhichTale:: @ 81AED35 .string "I know of these legends.\n" .string "Which tale will you have me tell?$" -MauvilleCity_PokemonCenter_1F_Text_1AED70:: @ 81AED70 +gTextStoryteller_ButIKnowOfNoLegendaryTrainers:: @ 81AED70 .string "But, I know of no legendary TRAINERS.\n" .string "Hence, I know no tales.\p" .string "Where does one find a TRAINER worthy\n" .string "of a legendary tale?$" -MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8 +gTextStoryteller_BirthOfANewLegend:: @ 81AEDE8 .string "What’s that?!\n" .string "You... You...\p" .string "{STR_VAR_2}\n" @@ -26,38 +26,38 @@ MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8 .string "That is indeed magnificent!\n" .string "It’s the birth of a new legend!$" -MauvilleCity_PokemonCenter_1F_Text_1AEE50:: @ 81AEE50 +gTextStoryteller_CouldThereBeOtherTrainers:: @ 81AEE50 .string "It gets me thinking, could there be\n" .string "other TRAINERS with more impressive\l" .string "legends awaiting discovery?$" -MauvilleCity_PokemonCenter_1F_Text_1AEEB4:: @ 81AEEB4 +gTextStoryteller_HaveYouAnyTales:: @ 81AEEB4 .string "Are you a TRAINER?\p" .string "Then tell me, have you any tales that\n" .string "are even remotely legendary?$" -MauvilleCity_PokemonCenter_1F_Text_1AEF0A:: @ 81AEF0A +gTextStoryteller_HearAnotherLegendaryTale:: @ 81AEF0A .string "Incidentally... Would you care to hear\n" .string "another legendary tale?$" -MauvilleCity_PokemonCenter_1F_Text_1AEF49:: @ 81AEF49 +gTextStoryteller_ImNotSatisfied:: @ 81AEF49 .string "Hmm...\n" .string "I’m not satisfied...\p" .string "I wish you would bring me news worthy\n" .string "of being called a legend.$" -MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5 +gTextStoryteller_WishMorePeopleWould:: @ 81AEFA5 .string "I wish more people would be interested\n" .string "in hearing my epic tales of legendary\l" .string "TRAINERS.$" -UnknownString_81AEFFC:: @ 81AEFFC +gTextStoryteller_Story1Title:: @ 81AEFFC .string "The Save-Happy TRAINER$" -UnknownString_81AF013:: @ 81AF013 +gTextStoryteller_Story1Action:: @ 81AF013 .string "Saved the game$" -UnknownString_81AF022:: @ 81AF022 +gTextStoryteller_Story1Text:: @ 81AF022 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER saved the game\n" @@ -65,13 +65,13 @@ UnknownString_81AF022:: @ 81AF022 .string "A more cautious TRAINER than\n" .string "{STR_VAR_3} one will never find!$" -UnknownString_81AF0A3:: @ 81AF0A3 +gTextStoryteller_Story2Title:: @ 81AF0A3 .string "The Trendsetter TRAINER$" -UnknownString_81AF0BB:: @ 81AF0BB +gTextStoryteller_Story2Action:: @ 81AF0BB .string "Started trends$" -UnknownString_81AF0CA:: @ 81AF0CA +gTextStoryteller_Story2Text:: @ 81AF0CA .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER started new trends\n" @@ -79,13 +79,13 @@ UnknownString_81AF0CA:: @ 81AF0CA .string "{STR_VAR_3} is setting trends for all\n" .string "the HOENN region!$" -UnknownString_81AF149:: @ 81AF149 +gTextStoryteller_Story3Title:: @ 81AF149 .string "The BERRY-Planting TRAINER$" -UnknownString_81AF164:: @ 81AF164 +gTextStoryteller_Story3Action:: @ 81AF164 .string "Planted BERRIES$" -UnknownString_81AF174:: @ 81AF174 +gTextStoryteller_Story3Text:: @ 81AF174 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER planted BERRIES\n" @@ -93,13 +93,13 @@ UnknownString_81AF174:: @ 81AF174 .string "{STR_VAR_3} is a legendary lover of\n" .string "BERRIES!$" -UnknownString_81AF1E5:: @ 81AF1E5 +gTextStoryteller_Story4Title:: @ 81AF1E5 .string "The BIKE-Loving TRAINER$" -UnknownString_81AF1FD:: @ 81AF1FD +gTextStoryteller_Story4Action:: @ 81AF1FD .string "Traded BIKES$" -UnknownString_81AF20A:: @ 81AF20A +gTextStoryteller_Story4Text:: @ 81AF20A .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER swapped BIKES\n" @@ -107,13 +107,13 @@ UnknownString_81AF20A:: @ 81AF20A .string "{STR_VAR_3} must love BIKES deeply\n" .string "and passionately!$" -UnknownString_81AF281:: @ 81AF281 +gTextStoryteller_Story5Title:: @ 81AF281 .string "The Interviewed TRAINER$" -UnknownString_81AF299:: @ 81AF299 +gTextStoryteller_Story5Action:: @ 81AF299 .string "Got interviewed$" -UnknownString_81AF2A9:: @ 81AF2A9 +gTextStoryteller_Story5Text:: @ 81AF2A9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER got interviewed\n" @@ -121,26 +121,26 @@ UnknownString_81AF2A9:: @ 81AF2A9 .string "{STR_VAR_3} must be a TRAINER who’s\n" .string "attracting much attention!$" -UnknownString_81AF32C:: @ 81AF32C +gTextStoryteller_Story6Title:: @ 81AF32C .string "The Battle-Happy TRAINER$" -UnknownString_81AF345:: @ 81AF345 +gTextStoryteller_Story6Action:: @ 81AF345 .string "Battled$" -UnknownString_81AF34D:: @ 81AF34D +gTextStoryteller_Story6Text:: @ 81AF34D .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER battled {STR_VAR_1} times!\p" .string "{STR_VAR_3} must be a TRAINER who can\n" .string "never refuse a chance to battle!$" -UnknownString_81AF3D0:: @ 81AF3D0 +gTextStoryteller_Story7Title:: @ 81AF3D0 .string "The POKéMON-Catching TRAINER$" -UnknownString_81AF3ED:: @ 81AF3ED +gTextStoryteller_Story7Action:: @ 81AF3ED .string "Caught POKéMON$" -UnknownString_81AF3FC:: @ 81AF3FC +gTextStoryteller_Story7Text:: @ 81AF3FC .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER caught\n" @@ -148,13 +148,13 @@ UnknownString_81AF3FC:: @ 81AF3FC .string "{STR_VAR_3} is a legendary catcher of\n" .string "wild POKéMON!$" -UnknownString_81AF46D:: @ 81AF46D +gTextStoryteller_Story8Title:: @ 81AF46D .string "The Fishing TRAINER$" -UnknownString_81AF481:: @ 81AF481 +gTextStoryteller_Story8Action:: @ 81AF481 .string "Caught POKéMON with a ROD$" -UnknownString_81AF49B:: @ 81AF49B +gTextStoryteller_Story8Text:: @ 81AF49B .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER caught\n" @@ -162,13 +162,13 @@ UnknownString_81AF49B:: @ 81AF49B .string "{STR_VAR_3} is a legendary fishing\n" .string "expert!$" -UnknownString_81AF511:: @ 81AF511 +gTextStoryteller_Story9Title:: @ 81AF511 .string "The EGG-Warming TRAINER$" -UnknownString_81AF529:: @ 81AF529 +gTextStoryteller_Story9Action:: @ 81AF529 .string "Hatched EGGS$" -UnknownString_81AF536:: @ 81AF536 +gTextStoryteller_Story9Text:: @ 81AF536 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER hatched {STR_VAR_1} POKéMON\n" @@ -176,13 +176,13 @@ UnknownString_81AF536:: @ 81AF536 .string "{STR_VAR_3} is a legendary warmer\n" .string "of EGGS!$" -UnknownString_81AF5A9:: @ 81AF5A9 +gTextStoryteller_Story10Title:: @ 81AF5A9 .string "The Evolver TRAINER$" -UnknownString_81AF5BD:: @ 81AF5BD +gTextStoryteller_Story10Action:: @ 81AF5BD .string "Evolved POKéMON$" -UnknownString_81AF5CD:: @ 81AF5CD +gTextStoryteller_Story10Text:: @ 81AF5CD .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER made {STR_VAR_1} POKéMON\n" @@ -190,13 +190,13 @@ UnknownString_81AF5CD:: @ 81AF5CD .string "{STR_VAR_3} is the ultimate evolver\n" .string "of POKéMON!$" -UnknownString_81AF63F:: @ 81AF63F +gTextStoryteller_Story11Title:: @ 81AF63F .string "The POKéMON CENTER-Loving TRAINER$" -UnknownString_81AF661:: @ 81AF661 +gTextStoryteller_Story11Action:: @ 81AF661 .string "Used POKéMON CENTERS$" -UnknownString_81AF676:: @ 81AF676 +gTextStoryteller_Story11Text:: @ 81AF676 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER healed POKéMON\n" @@ -204,13 +204,13 @@ UnknownString_81AF676:: @ 81AF676 .string "There could be no greater lover of\n" .string "POKéMON CENTERS than {STR_VAR_3}!$" -UnknownString_81AF711:: @ 81AF711 +gTextStoryteller_Story12Title:: @ 81AF711 .string "The Homebody TRAINER$" -UnknownString_81AF726:: @ 81AF726 +gTextStoryteller_Story12Action:: @ 81AF726 .string "Rested POKéMON at home$" -UnknownString_81AF73D:: @ 81AF73D +gTextStoryteller_Story12Text:: @ 81AF73D .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER healed POKéMON\n" @@ -218,13 +218,13 @@ UnknownString_81AF73D:: @ 81AF73D .string "There could be no more of a homebody\n" .string "than {STR_VAR_3}!$" -UnknownString_81AF7BF:: @ 81AF7BF +gTextStoryteller_Story13Title:: @ 81AF7BF .string "The SAFARI-Loving TRAINER$" -UnknownString_81AF7D9:: @ 81AF7D9 +gTextStoryteller_Story13Action:: @ 81AF7D9 .string "Entered the SAFARI ZONE$" -UnknownString_81AF7F1:: @ 81AF7F1 +gTextStoryteller_Story13Text:: @ 81AF7F1 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER went into the SAFARI ZONE\n" @@ -232,13 +232,13 @@ UnknownString_81AF7F1:: @ 81AF7F1 .string "{STR_VAR_3} is a TRAINER whose wild side\n" .string "must come out in the SAFARI ZONE!$" -UnknownString_81AF88A:: @ 81AF88A +gTextStoryteller_Story14Title:: @ 81AF88A .string "The CUT-Frenzy TRAINER$" -UnknownString_81AF8A1:: @ 81AF8A1 +gTextStoryteller_Story14Action:: @ 81AF8A1 .string "Used CUT$" -UnknownString_81AF8AA:: @ 81AF8AA +gTextStoryteller_Story14Text:: @ 81AF8AA .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used CUT\n" @@ -246,13 +246,13 @@ UnknownString_81AF8AA:: @ 81AF8AA .string "{STR_VAR_3} is a TRAINER who just must\n" .string "love to CUT!$" -UnknownString_81AF91B:: @ 81AF91B +gTextStoryteller_Story15Title:: @ 81AF91B .string "The ROCK-SMASHING TRAINER$" -UnknownString_81AF935:: @ 81AF935 +gTextStoryteller_Story15Action:: @ 81AF935 .string "Smashed rocks$" -UnknownString_81AF943:: @ 81AF943 +gTextStoryteller_Story15Text:: @ 81AF943 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used ROCK SMASH\n" @@ -260,13 +260,13 @@ UnknownString_81AF943:: @ 81AF943 .string "{STR_VAR_3} must be a TRAINER who\n" .string "can’t leave a stone unsmashed!$" -UnknownString_81AF9C8:: @ 81AF9C8 +gTextStoryteller_Story16Title:: @ 81AF9C8 .string "The Move-Loving TRAINER$" -UnknownString_81AF9E0:: @ 81AF9E0 +gTextStoryteller_Story16Action:: @ 81AF9E0 .string "Moved the SECRET BASE$" -UnknownString_81AF9F6:: @ 81AF9F6 +gTextStoryteller_Story16Text:: @ 81AF9F6 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER moved the SECRET BASE\n" @@ -274,13 +274,13 @@ UnknownString_81AF9F6:: @ 81AF9F6 .string "{STR_VAR_3} is a TRAINER who loves\n" .string "to move houses often!$" -UnknownString_81AFA79:: @ 81AFA79 +gTextStoryteller_Story17Title:: @ 81AFA79 .string "The SPLASH-Happy TRAINER$" -UnknownString_81AFA92:: @ 81AFA92 +gTextStoryteller_Story17Action:: @ 81AFA92 .string "Used SPLASH$" -UnknownString_81AFA9E:: @ 81AFA9E +gTextStoryteller_Story17Text:: @ 81AFA9E .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used SPLASH\n" @@ -288,13 +288,13 @@ UnknownString_81AFA9E:: @ 81AFA9E .string "{STR_VAR_3} is a TRAINER who must love\n" .string "SPLASHING around!$" -UnknownString_81AFB17:: @ 81AFB17 +gTextStoryteller_Story18Title:: @ 81AFB17 .string "The Tenacious TRAINER$" -UnknownString_81AFB2D:: @ 81AFB2D +gTextStoryteller_Story18Action:: @ 81AFB2D .string "Resorted to using STRUGGLE$" -UnknownString_81AFB48:: @ 81AFB48 +gTextStoryteller_Story18Text:: @ 81AFB48 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER had to rely on STRUGGLE\n" @@ -302,13 +302,13 @@ UnknownString_81AFB48:: @ 81AFB48 .string "{STR_VAR_3} is a tenacious TRAINER\n" .string "who never gives in to adversity!$" -UnknownString_81AFBD8:: @ 81AFBD8 +gTextStoryteller_Story19Title:: @ 81AFBD8 .string "The SLOT Champ$" -UnknownString_81AFBE7:: @ 81AFBE7 +gTextStoryteller_Story19Action:: @ 81AFBE7 .string "Won the jackpot on the SLOTS$" -UnknownString_81AFC04:: @ 81AFC04 +gTextStoryteller_Story19Text:: @ 81AFC04 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won the jackpot on\n" @@ -316,13 +316,13 @@ UnknownString_81AFC04:: @ 81AFC04 .string "{STR_VAR_3} is a TRAINER who was lucky\n" .string "on the SLOTS!$" -UnknownString_81AFC8A:: @ 81AFC8A +gTextStoryteller_Story20Title:: @ 81AFC8A .string "The ROULETTE Champ$" -UnknownString_81AFC9D:: @ 81AFC9D +gTextStoryteller_Story20Action:: @ 81AFC9D .string "Had consecutive ROULETTE wins of$" -UnknownString_81AFCBE:: @ 81AFCBE +gTextStoryteller_Story20Text:: @ 81AFCBE .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won in ROULETTE\n" @@ -330,13 +330,13 @@ UnknownString_81AFCBE:: @ 81AFCBE .string "{STR_VAR_3} was lucky when the ball\n" .string "bounced in ROULETTE!$" -UnknownString_81AFD44:: @ 81AFD44 +gTextStoryteller_Story21Title:: @ 81AFD44 .string "The BATTLE TOWER Challenger$" -UnknownString_81AFD60:: @ 81AFD60 +gTextStoryteller_Story21Action:: @ 81AFD60 .string "Took the BATTLE TOWER challenge$" -UnknownString_81AFD80:: @ 81AFD80 +gTextStoryteller_Story21Text:: @ 81AFD80 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER took the BATTLE TOWER\n" @@ -344,13 +344,13 @@ UnknownString_81AFD80:: @ 81AFD80 .string "{STR_VAR_3} is a TRAINER who aspires\n" .string "for excellence in the BATTLE TOWER!$" -UnknownString_81AFE1D:: @ 81AFE1D +gTextStoryteller_Story22Title:: @ 81AFE1D .string "The Blend-Loving TRAINER$" -UnknownString_81AFE36:: @ 81AFE36 +gTextStoryteller_Story22Action:: @ 81AFE36 .string "Made {POKEBLOCK}S$" -UnknownString_81AFE42:: @ 81AFE42 +gTextStoryteller_Story22Text:: @ 81AFE42 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER made {POKEBLOCK}S\n" @@ -358,13 +358,13 @@ UnknownString_81AFE42:: @ 81AFE42 .string "There is none better at using a BERRY\n" .string "BLENDER than {STR_VAR_3}!$" -UnknownString_81AFEC2:: @ 81AFEC2 +gTextStoryteller_Story23Title:: @ 81AFEC2 .string "The CONTEST-Loving TRAINER$" -UnknownString_81AFEDD:: @ 81AFEDD +gTextStoryteller_Story23Action:: @ 81AFEDD .string "Entered CONTESTS$" -UnknownString_81AFEEE:: @ 81AFEEE +gTextStoryteller_Story23Text:: @ 81AFEEE .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER entered CONTESTS\n" @@ -372,13 +372,13 @@ UnknownString_81AFEEE:: @ 81AFEEE .string "{STR_VAR_3} must love showing off\n" .string "POKéMON to others!$" -UnknownString_81AFF68:: @ 81AFF68 +gTextStoryteller_Story24Title:: @ 81AFF68 .string "The CONTEST Master$" -UnknownString_81AFF7B:: @ 81AFF7B +gTextStoryteller_Story24Action:: @ 81AFF7B .string "Won CONTESTS$" -UnknownString_81AFF88:: @ 81AFF88 +gTextStoryteller_Story24Text:: @ 81AFF88 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won CONTESTS\n" @@ -386,13 +386,13 @@ UnknownString_81AFF88:: @ 81AFF88 .string "{STR_VAR_3} must be an incredible\n" .string "CONTEST master!$" -UnknownString_81AFFFB:: @ 81AFFFB +gTextStoryteller_Story25Title:: @ 81AFFFB .string "The Happy Shopper$" -UnknownString_81B000D:: @ 81B000D +gTextStoryteller_Story25Action:: @ 81B000D .string "Shopped$" -UnknownString_81B0015:: @ 81B0015 +gTextStoryteller_Story25Text:: @ 81B0015 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER bought items in shops\n" @@ -400,13 +400,13 @@ UnknownString_81B0015:: @ 81B0015 .string "{STR_VAR_3} must be one of those\n" .string "people who are born to shop.$" -UnknownString_81B009D:: @ 81B009D +gTextStoryteller_Story26Title:: @ 81B009D .string "The Item-Finding TRAINER$" -UnknownString_81B00B6:: @ 81B00B6 +gTextStoryteller_Story26Action:: @ 81B00B6 .string "Used an ITEMFINDER$" -UnknownString_81B00C9:: @ 81B00C9 +gTextStoryteller_Story26Text:: @ 81B00C9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used an ITEMFINDER\n" @@ -414,13 +414,13 @@ UnknownString_81B00C9:: @ 81B00C9 .string "{STR_VAR_3} must enjoy scouring the\n" .string "ground for hidden items!$" -UnknownString_81B014D:: @ 81B014D +gTextStoryteller_Story27Title:: @ 81B014D .string "The Rain-Soaked TRAINER$" -UnknownString_81B0165:: @ 81B0165 +gTextStoryteller_Story27Action:: @ 81B0165 .string "Got rained on$" -UnknownString_81B0173:: @ 81B0173 +gTextStoryteller_Story27Text:: @ 81B0173 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER got soaked by rain\n" @@ -428,13 +428,13 @@ UnknownString_81B0173:: @ 81B0173 .string "{STR_VAR_3}’s charisma must even\n" .string "attract rain!$" -UnknownString_81B01E9:: @ 81B01E9 +gTextStoryteller_Story28Title:: @ 81B01E9 .string "The Avid POKéDEX Reader$" -UnknownString_81B0201:: @ 81B0201 +gTextStoryteller_Story28Action:: @ 81B0201 .string "Checked a POKéDEX$" -UnknownString_81B0213:: @ 81B0213 +gTextStoryteller_Story28Text:: @ 81B0213 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER checked a POKéDEX\n" @@ -442,13 +442,13 @@ UnknownString_81B0213:: @ 81B0213 .string "{STR_VAR_3} must love inspecting\n" .string "POKéMON in a POKéDEX!$" -UnknownString_81B0290:: @ 81B0290 +gTextStoryteller_Story29Title:: @ 81B0290 .string "The RIBBON Collector$" -UnknownString_81B02A5:: @ 81B02A5 +gTextStoryteller_Story29Action:: @ 81B02A5 .string "Received RIBBONS$" -UnknownString_81B02B6:: @ 81B02B6 +gTextStoryteller_Story29Text:: @ 81B02B6 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER received RIBBONS\n" @@ -456,13 +456,13 @@ UnknownString_81B02B6:: @ 81B02B6 .string "{STR_VAR_3} must be a TRAINER who\n" .string "loves to collect RIBBONS!$" -UnknownString_81B0337:: @ 81B0337 +gTextStoryteller_Story30Title:: @ 81B0337 .string "The Ledge-Jumping TRAINER$" -UnknownString_81B0351:: @ 81B0351 +gTextStoryteller_Story30Action:: @ 81B0351 .string "Jumped down ledges$" -UnknownString_81B0364:: @ 81B0364 +gTextStoryteller_Story30Text:: @ 81B0364 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER jumped down ledges\n" @@ -470,26 +470,26 @@ UnknownString_81B0364:: @ 81B0364 .string "If there’s a ledge to be jumped,\n" .string "{STR_VAR_3} can’t ignore it!$" -UnknownString_81B03E9:: @ 81B03E9 +gTextStoryteller_Story31Title:: @ 81B03E9 .string "The Legendary TV Viewer$" -UnknownString_81B0401:: @ 81B0401 +gTextStoryteller_Story31Action:: @ 81B0401 .string "Watched TV$" -UnknownString_81B040C:: @ 81B040C +gTextStoryteller_Story31Text:: @ 81B040C .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER watched TV\n" .string "{STR_VAR_1} times!\p" .string "{STR_VAR_3} must love watching TV!$" -UnknownString_81B046E:: @ 81B046E +gTextStoryteller_Story32Title:: @ 81B046E .string "The Time-Conscious TRAINER$" -UnknownString_81B0489:: @ 81B0489 +gTextStoryteller_Story32Action:: @ 81B0489 .string "Checked the time$" -UnknownString_81B049A:: @ 81B049A +gTextStoryteller_Story32Text:: @ 81B049A .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER checked the time\n" @@ -497,13 +497,13 @@ UnknownString_81B049A:: @ 81B049A .string "{STR_VAR_3} must be a punctual TRAINER\n" .string "who’s conscious of the time.$" -UnknownString_81B0523:: @ 81B0523 +gTextStoryteller_Story33Title:: @ 81B0523 .string "The POKéMON LOTTERY Wizard$" -UnknownString_81B053E:: @ 81B053E +gTextStoryteller_Story33Action:: @ 81B053E .string "Won POKéMON LOTTERIES$" -UnknownString_81B0554:: @ 81B0554 +gTextStoryteller_Story33Text:: @ 81B0554 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won POKéMON LOTTERIES\n" @@ -511,13 +511,13 @@ UnknownString_81B0554:: @ 81B0554 .string "{STR_VAR_3} must have many friends\n" .string "to trade POKéMON with!$" -UnknownString_81B05D8:: @ 81B05D8 +gTextStoryteller_Story34Title:: @ 81B05D8 .string "The DAY CARE-Using Trainer$" -UnknownString_81B05F3:: @ 81B05F3 +gTextStoryteller_Story34Action:: @ 81B05F3 .string "Left POKéMON at the DAY CARE$" -UnknownString_81B0610:: @ 81B0610 +gTextStoryteller_Story34Text:: @ 81B0610 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER left POKéMON with the\n" @@ -525,13 +525,13 @@ UnknownString_81B0610:: @ 81B0610 .string "{STR_VAR_3} must be a real go-getter\n" .string "who raises POKéMON aggressively!$" -UnknownString_81B06A9:: @ 81B06A9 +gTextStoryteller_Story35Title:: @ 81B06A9 .string "The CABLE CAR-Loving TRAINER$" -UnknownString_81B06C6:: @ 81B06C6 +gTextStoryteller_Story35Action:: @ 81B06C6 .string "Rode the CABLE CAR$" -UnknownString_81B06D9:: @ 81B06D9 +gTextStoryteller_Story35Text:: @ 81B06D9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER rode the CABLE CAR\n" @@ -539,13 +539,13 @@ UnknownString_81B06D9:: @ 81B06D9 .string "{STR_VAR_3} must be a busy TRAINER\n" .string "who’s up and down all the time!$" -UnknownString_81B0763:: @ 81B0763 +gTextStoryteller_Story36Title:: @ 81B0763 .string "The Hot Spring-Loving TRAINER$" -UnknownString_81B0781:: @ 81B0781 +gTextStoryteller_Story36Action:: @ 81B0781 .string "Bathed in hot springs$" -UnknownString_81B0797:: @ 81B0797 +gTextStoryteller_Story36Text:: @ 81B0797 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER bathed in hot springs\n" diff --git a/data/text/trader.inc b/data/text/trader.inc index dba63bcf8..599344091 100644 --- a/data/text/trader.inc +++ b/data/text/trader.inc @@ -1,57 +1,57 @@ -MauvilleCity_PokemonCenter_1F_Text_1AE88F:: @ 81AE88F +gTextTrader_Introduction:: @ 81AE88F .string "Hi, I’m the TRADER.\n" .string "Want to trade decorations with me?$" -MauvilleCity_PokemonCenter_1F_Text_1AE8C6:: @ 81AE8C6 +gTextTrader_FeelUnwanted1:: @ 81AE8C6 .string "Oh...\n" .string "I feel unwanted...$" -MauvilleCity_PokemonCenter_1F_Text_1AE8DF:: @ 81AE8DF +gTextTrader_TradedAlready:: @ 81AE8DF .string "But we’ve traded decorations already,\n" .string "you and I.$" -MauvilleCity_PokemonCenter_1F_Text_1AE910:: @ 81AE910 +gTextTrader_MenuPrompt:: @ 81AE910 .string "If you see any decorative item that\n" .string "you want of mine, speak up.$" -MauvilleCity_PokemonCenter_1F_Text_1AE950:: @ 81AE950 +gTextTrader_DontWantAnything:: @ 81AE950 .string "You don’t want anything?\n" .string "I feel unwanted...$" -MauvilleCity_PokemonCenter_1F_Text_1AE97C:: @ 81AE97C +gTextTrader_ItemOnceBelongedTo:: @ 81AE97C .string "That decorative item once belonged\n" .string "to {STR_VAR_1}.\p" .string "Do you want it?$" -MauvilleCity_PokemonCenter_1F_Text_1AE9B6:: @ 81AE9B6 +gTextTrader_YouDontHaveDecorations:: @ 81AE9B6 .string "Uh... Wait a second. You don’t have a\n" .string "single piece of decoration!$" -MauvilleCity_PokemonCenter_1F_Text_1AE9F8:: @ 81AE9F8 +gTextTrader_PickDecorationYoullTrade:: @ 81AE9F8 .string "Okay, pick the decoration that you’ll\n" .string "trade to me.$" -MauvilleCity_PokemonCenter_1F_Text_1AEA2B:: @ 81AEA2B +gTextTrader_FeelUnwanted2:: @ 81AEA2B .string "You won’t trade with me?\n" .string "I feel unwanted...$" -MauvilleCity_PokemonCenter_1F_Text_1AEA57:: @ 81AEA57 +gTextTrader_NoRoomForThis:: @ 81AEA57 .string "You’ve got all the {STR_VAR_2}S that can\n" .string "be stored. You’ve no room for this.$" -MauvilleCity_PokemonCenter_1F_Text_1AEA9B:: @ 81AEA9B +gTextTrader_SoWellTrade:: @ 81AEA9B .string "Okay, so we’ll trade my {STR_VAR_3}\n" .string "for your {STR_VAR_2}?$" -MauvilleCity_PokemonCenter_1F_Text_1AEAC3:: @ 81AEAC3 +gTextTrader_InUseYouCantTradeIt:: @ 81AEAC3 .string "That piece of decoration is in use.\n" .string "You can’t trade it.$" -MauvilleCity_PokemonCenter_1F_Text_1AEAFB:: @ 81AEAFB +gTextTrader_ThenWellTrade:: @ 81AEAFB .string "Then we’ll trade!\n" .string "I’ll send my decoration to your PC.$" -MauvilleCity_PokemonCenter_1F_Text_1AEB31:: @ 81AEB31 +gTextTrader_ICantTradeThatOneAway:: @ 81AEB31 .string "Oops! Sorry!\n" .string "That’s a really rare piece of decoration.\l" .string "I can’t trade that one away!\p" diff --git a/data/trade.s b/data/trade.s deleted file mode 100644 index 8f96a72b1..000000000 --- a/data/trade.s +++ /dev/null @@ -1,774 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 - .byte 0x90, 0x08, 0x00, 0x00 - .byte 0xC0, 0x3A, 0x00, 0x00 - .byte 0x1C, 0x00, 0x00, 0x00 - .byte 0x30, 0x05, 0x00, 0x00 - .byte 0x24, 0x00, 0x00, 0x00 - .byte 0x64, 0x00, 0x00, 0x00 - .byte 0xD8, 0x04, 0x00, 0x00 - - .align 1 -gTradeMovesBoxTilemap:: @ 820ABF0 - .incbin "graphics/trade/moves_box_map.bin" - - .align 1 -gTradePartyBoxTilemap:: @ 820ADEE - .incbin "graphics/trade/party_box_map.bin" - - .align 2 -gTradeStripesBG2Tilemap:: @ 820AFEC - .incbin "graphics/trade/stripes_bg2_map.bin" - - .align 2 -gTradeStripesBG3Tilemap:: @ 820B7EC - .incbin "graphics/trade/stripes_bg3_map.bin" - - .align 2 -gOamData_820BFEC:: @ 820BFEC - .2byte 0x4000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_820BFF4:: @ 820BFF4 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820BFFC:: @ 820BFFC - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C004:: @ 820C004 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C00C:: @ 820C00C - obj_image_anim_frame 24, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C014:: @ 820C014 - obj_image_anim_frame 32, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C01C:: @ 820C01C - obj_image_anim_frame 40, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820C024:: @ 820C024 - .4byte gSpriteAnim_820BFF4 - .4byte gSpriteAnim_820BFFC - .4byte gSpriteAnim_820C004 - .4byte gSpriteAnim_820C00C - .4byte gSpriteAnim_820C014 - .4byte gSpriteAnim_820C01C - - .align 2 -TradeScreenTextPalette: @ 820C03C - .incbin "graphics/trade/text1.gbapal" - .incbin "graphics/trade/text2.gbapal" @ unused? - - .align 2 -gUnknown_0820C07C:: @ 820C07C - obj_tiles 0x0201d000, 256, 0x00c8 - obj_tiles 0x0201d100, 256, 0x00c9 - obj_tiles 0x0201d200, 256, 0x00ca - obj_tiles 0x0201d300, 256, 0x00cb - obj_tiles 0x0201d400, 256, 0x00cc - obj_tiles 0x0201d500, 256, 0x00cd - obj_tiles 0x0201d600, 256, 0x00ce - obj_tiles 0x0201d700, 256, 0x00cf - obj_tiles 0x0201d800, 256, 0x00d0 - obj_tiles 0x0201d900, 256, 0x00d1 - obj_tiles 0x0201da00, 256, 0x00d2 - obj_tiles 0x0201db00, 256, 0x00d3 - obj_tiles 0x0201dc00, 256, 0x00d4 - - .align 2 -gSpritePalette_TradeScreenText:: @ 820C0E4 - obj_pal TradeScreenTextPalette, 4925 - - .align 2 -gSpriteTemplate_820C0EC:: @ 820C0EC - spr_template 200, 4925, gOamData_820BFEC, gSpriteAnimTable_820C024, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_820C104:: @ 820C104 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_820C10C:: @ 820C10C - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C114:: @ 820C114 - obj_image_anim_frame 32, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820C11C:: @ 820C11C - .4byte gSpriteAnim_820C10C - .4byte gSpriteAnim_820C114 - - .align 2 -gUnknown_0820C124:: @ 820C124 - obj_tiles gUnknown_08EA1DEC, 0x800, 300 - - .align 2 -gUnknown_0820C12C:: @ 820C12C - obj_pal gUnknown_08EA0328, 2345 - - .align 2 -gSpriteTemplate_820C134:: @ 820C134 - spr_template 300, 2345, gOamData_820C104, gSpriteAnimTable_820C11C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_0820C14C:: @ 820C14C - .4byte TradeText_Cancel - .4byte TradeText_ChoosePoke - .4byte TradeText_Summary1 - .4byte TradeText_Trade1 - .4byte TradeText_CancelTradePrompt - .4byte TradeText_PressBToExit - -@ This is used to determine the next mon to select when the D-Pad is -@ pressed in a given direction. -@ Note that the mons are laid out like this. -@ 0-5 are the player's party and 6-11 are the trading partner's party. -@ 12 is the cancel button. -@ 0 1 6 7 -@ 2 3 8 9 -@ 4 5 10 11 -@ 12 -gTradeNextSelectedMonTable:: @ 820C164 - @ 0 - .byte 4, 2, 12, 12, 0, 0 @ up - .byte 2, 4, 12, 12, 0, 0 @ down - .byte 7, 6, 1, 0, 0, 0 @ left - .byte 1, 6, 7, 0, 0, 0 @ right - @ 1 - .byte 5, 3, 12, 12, 0, 0 @ up - .byte 3, 5, 12, 12, 0, 0 @ down - .byte 0, 7, 6, 1, 0, 0 @ left - .byte 6, 7, 0, 1, 0, 0 @ right - @ 2 - .byte 0, 0, 0, 0, 0, 0 @ up - .byte 4, 0, 0, 0, 0, 0 @ down - .byte 9, 8, 7, 6, 0, 0 @ left - .byte 3, 1, 0, 0, 0, 0 @ right - @ 3 - .byte 1, 1, 1, 1, 0, 0 @ up - .byte 5, 1, 1, 1, 0, 0 @ down - .byte 2, 9, 8, 7, 0, 0 @ left - .byte 8, 9, 6, 6, 0, 0 @ right - @ 4 - .byte 2, 2, 2, 2, 0, 0 @ up - .byte 0, 0, 0, 0, 0, 0 @ down - .byte 11, 10, 9, 8, 7, 6 @ left - .byte 5, 3, 1, 0, 0, 0 @ right - @ 5 - .byte 3, 3, 3, 3, 0, 0 @ up - .byte 1, 1, 1, 1, 0, 0 @ down - .byte 4, 4, 4, 4, 0, 0 @ left - .byte 10, 8, 6, 0, 0, 0 @ right - @ 6 - .byte 10, 8, 12, 0, 0, 0 @ up - .byte 8, 10, 12, 0, 0, 0 @ down - .byte 1, 0, 0, 0, 0, 0 @ left - .byte 7, 0, 1, 0, 0, 0 @ right - @ 7 - .byte 12, 0, 0, 0, 0, 0 @ up - .byte 9, 12, 0, 0, 0, 0 @ down - .byte 6, 0, 0, 0, 0, 0 @ left - .byte 0, 0, 0, 0, 0, 0 @ right - @ 8 - .byte 6, 0, 0, 0, 0, 0 @ up - .byte 10, 6, 0, 0, 0, 0 @ down - .byte 3, 2, 1, 0, 0, 0 @ left - .byte 9, 7, 0, 0, 0, 0 @ right - @ 9 - .byte 7, 0, 0, 0, 0, 0 @ up - .byte 11, 12, 0, 0, 0, 0 @ down - .byte 8, 0, 0, 0, 0, 0 @ left - .byte 2, 1, 0, 0, 0, 0 @ right - @ 10 - .byte 8, 0, 0, 0, 0, 0 @ up - .byte 6, 0, 0, 0, 0, 0 @ down - .byte 5, 4, 3, 2, 1, 0 @ left - .byte 11, 9, 7, 0, 0, 0 @ right - @ 11 - .byte 9, 0, 0, 0, 0, 0 @ up - .byte 12, 0, 0, 0, 0, 0 @ down - .byte 10, 0, 0, 0, 0, 0 @ left - .byte 4, 2, 0, 0, 0, 0 @ right - @ 12 - .byte 11, 9, 7, 6, 0, 0 @ up - .byte 7, 6, 0, 0, 0, 0 @ down - .byte 12, 0, 0, 0, 0, 0 @ left - .byte 12, 0, 0, 0, 0, 0 @ right - -@ The coordinates are in units of tiles. -@ These are used for both mon icons and the selected mon cursor, -@ but the origins of the coordinates differ. -gTradeMonSpriteCoords:: @ 820C29C - @ left-side party - .byte 1, 5 - .byte 8, 5 - .byte 1, 10 - .byte 8, 10 - .byte 1, 15 - .byte 8, 15 - - @ right-side party - .byte 16, 5 - .byte 23, 5 - .byte 16, 10 - .byte 23, 10 - .byte 16, 15 - .byte 23, 15 - - @ cancel button - .byte 23, 18 - -gTradeLevelDisplayCoords:: @ 820C2B6 - @ left-side party - .byte 5, 4 - .byte 12, 4 - .byte 5, 9 - .byte 12, 9 - .byte 5, 14 - .byte 12, 14 - - @ right-side party - .byte 20, 4 - .byte 27, 4 - .byte 20, 9 - .byte 27, 9 - .byte 20, 14 - .byte 27, 14 - -gTradeMonBoxCoords:: @ 820C2CE - @ left-side party - .byte 1, 3 - .byte 8, 3 - .byte 1, 8 - .byte 8, 8 - .byte 1, 13 - .byte 8, 13 - - @ right-side party - .byte 16, 3 - .byte 23, 3 - .byte 16, 8 - .byte 23, 8 - .byte 16, 13 - .byte 23, 13 - -gTradeUnknownSpriteCoords:: @ 820C2E6 - .byte 59, 10 - .byte 179, 10 - .byte 59, 10 - .byte 179, 10 - - .align 2 -gUnknown_0820C2F0:: @ 820C2F0 - .4byte TradeText_LinkStandby - .4byte TradeText_TradeCancelled - .4byte TradeText_OnlyPoke - .4byte TradeText_NonTradablePoke - .4byte TradeText_WaitingForFriend - .4byte TradeText_WantToTrade - -gTradeMessageWindowRects:: @ 820C308 - .byte 8, 7, 22, 12 - .byte 8, 7, 22, 12 - .byte 6, 7, 24, 12 - .byte 6, 7, 24, 12 - .byte 8, 7, 22, 12 - .byte 7, 7, 23, 12 - - .align 2 -gUnknown_0820C320:: @ 820C320 - .4byte TradeText_Summary2, sub_804A9F4 @unknown - .4byte TradeText_Trade2, sub_804AA00 - -gUnknown_0820C330:: @ 820C330 - .byte 0, 14 - .byte 15, 29 - -gUnknown_0820C334:: @ 820C334 - .byte 3, 5 - .byte 3, 7 - .byte 18, 5 - .byte 18, 7 - -gOtherText_Terminator:: - .string "$" - -gOtherText_MaleSymbol3:: @ 820C33D - .string "♂$" - -gOtherText_FemaleSymbol3:: @ 820C33F - .string "♀$" - -gOtherText_GenderlessSymbol:: @ 820C341 - .string "$$" - - .align 2 - .4byte gTileBuffer - -@ Unused debug strings? - .string "かいめの そうしん$", 13 - .string "かいめの じゅしん$", 13 - .string "ポケモンアイコンセット$", 13 - .string "OBJテキストセット$", 13 - .string "セルセット$", 13 - .string "OBJテキストADD$", 13 - .string "システムメッセージADD$", 13 - .string "はいけいセット$", 13 - -@ Shedinja's Japanese name -@ sub_8048D44 compares a pokemon name with this string -gUnknown_0820C3B0:: @ 820C3B0 - .string "ヌケニン$" - - .string "こうかんせいりつ $" @ trade completed - .string "だめだたらしいよ $" @ it's no good (trade failed maybe?) - -gUnknown_0820C3D1:: @ 820C3D1 - .byte 4, 3 - .byte 19, 3 - - .align 2 -gTradeBallPalette:: @ 820C3D8 - .incbin "graphics/trade/ball.gbapal" - - .align 2 -gTradeBallTiles:: @ 820C3F8 - .incbin "graphics/trade/ball.4bpp" - - .align 2 -gUnknown_0820C9F8:: @ 820C9F8 - .incbin "graphics/trade/unknown.gbapal" - .incbin "graphics/trade/gba.gbapal" - .incbin "graphics/trade/shadow.gbapal" - .space 32 - .incbin "graphics/trade/misc.gbapal" - - .align 2 -gUnknown_0820CA98:: @ 820CA98 - .incbin "graphics/trade/gba.4bpp" - .incbin "graphics/trade/shadow.4bpp" - - .align 2 -gUnknown_0820DD98:: @ 820DD98 - .incbin "graphics/trade/pokeball_symbol.8bpp" - - .align 2 -gUnknown_0820F798:: @ 820F798 - .incbin "graphics/trade/shadow_map.bin" - - .align 2 -gUnknown_08210798:: @ 8210798 - .incbin "graphics/trade/gba_map.bin" - - .align 2 -gUnknown_08211798:: @ 8211798 - .incbin "graphics/trade/cable_closeup_map.bin" - - .align 2 -gUnknown_08211F98:: @ 8211F98 - .incbin "graphics/trade/pokeball_symbol_map.bin" - - .incbin "graphics/unused/unknown/8212098.gbapal" - - .align 2 -gTradeCableEndPalette:: @ 82120B8 - .incbin "graphics/trade/cable_end.gbapal" - - .incbin "graphics/unused/unknown/82120D8.gbapal" - - .space 32 - - .align 2 -gTradeGlowPalette:: @ 8212118 - .incbin "graphics/trade/glow.gbapal" - - .align 2 -gTradeGlow1Tiles:: @ 8212138 - .incbin "graphics/trade/glow1.4bpp" - - .align 2 -gTradeGlow2Tiles:: @ 8212338 - .incbin "graphics/trade/glow2.4bpp" - - .align 2 -gTradeCableEndTiles:: @ 8212538 - .incbin "graphics/trade/cable_end.4bpp" - - .align 2 -gTradeGBAScreenTiles:: @ 8212738 - .incbin "graphics/trade/gba_screen.4bpp" - - .align 2 -gUnknown_08213738:: @ 8213738 - .incbin "graphics/trade/gba_affine.8bpp" - - .align 2 -gUnknown_08215778:: @ 8215778 - .incbin "graphics/trade/gba_affine_map.bin" - - .align 2 -gOamData_8215878:: @ 8215878 - .2byte 0x0100 - .2byte 0x4000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8215880:: @ 8215880 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 20, 3 - obj_image_anim_frame 24, 3 - obj_image_anim_frame 28, 3 - obj_image_anim_frame 32, 3 - obj_image_anim_frame 36, 3 - obj_image_anim_frame 40, 3 - obj_image_anim_frame 44, 3 - obj_image_anim_loop 1 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_82158BC:: @ 82158BC - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 20, 3 - obj_image_anim_frame 24, 3 - obj_image_anim_frame 28, 3 - obj_image_anim_frame 32, 3 - obj_image_anim_frame 36, 3 - obj_image_anim_frame 40, 3 - obj_image_anim_frame 44, 3 - obj_image_anim_loop 2 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82158F8:: @ 82158F8 - .4byte gSpriteAnim_8215880 - .4byte gSpriteAnim_82158BC - - .align 2 -gSpriteAffineAnim_8215900:: @ 8215900 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 1 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8215910:: @ 8215910 - obj_rot_scal_anim_frame 0xFFF8, 0x0, 0, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8215920:: @ 8215920 - obj_rot_scal_anim_frame 0x60, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 5 - obj_rot_scal_anim_frame 0x8, 0x0, 0, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_8215940:: @ 8215940 - .4byte gSpriteAffineAnim_8215900 - .4byte gSpriteAffineAnim_8215910 - .4byte gSpriteAffineAnim_8215920 - - .align 2 -gUnknown_0821594C:: @ 821594C - obj_tiles gTradeBallTiles, 0x600, 5557 - - .align 2 -gUnknown_08215954:: @ 8215954 - obj_pal gTradeBallPalette, 5558 - - .align 2 -gSpriteTemplate_821595C:: @ 821595C - spr_template 5557, 5558, gOamData_8215878, gSpriteAnimTable_82158F8, NULL, gSpriteAffineAnimTable_8215940, sub_804D6BC - - .align 2 -gOamData_8215974:: @ 8215974 - .2byte 0x0500 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821597C:: @ 821597C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215984:: @ 8215984 - .4byte gSpriteAnim_821597C - - .align 2 -gSpriteAffineAnim_8215988:: @ 8215988 - obj_rot_scal_anim_frame 0xFFF6, 0xFFF6, 0, 5 - obj_rot_scal_anim_frame 0xA, 0xA, 0, 5 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_82159A0:: @ 82159A0 - .4byte gSpriteAffineAnim_8215988 - - .align 2 -gUnknown_082159A4:: @ 82159A4 - obj_tiles gTradeGlow1Tiles, 0x200, 5550 - - .align 2 -gUnknown_082159AC:: @ 82159AC - obj_pal gTradeGlowPalette, 5551 - - .align 2 -gUnknown_082159B4:: @ 82159B4 - obj_pal gTradeCableEndPalette, 5555 - - .align 2 -gSpriteTemplate_82159BC:: @ 82159BC - spr_template 5550, 5551, gOamData_8215974, gSpriteAnimTable_8215984, NULL, gSpriteAffineAnimTable_82159A0, sub_804B058 - - .align 2 -gOamData_82159D4:: @ 82159D4 - .2byte 0x8000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_82159DC:: @ 82159DC - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82159E4:: @ 82159E4 - obj_image_anim_frame 8, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82159EC:: @ 82159EC - .4byte gSpriteAnim_82159DC - .4byte gSpriteAnim_82159E4 - - .align 2 -gUnknown_082159F4:: @ 82159F4 - obj_tiles gTradeGlow2Tiles, 0x300, 5552 - - .align 2 -gSpriteTemplate_82159FC:: @ 82159FC - spr_template 5552, 5551, gOamData_82159D4, gSpriteAnimTable_82159EC, NULL, gDummySpriteAffineAnimTable, sub_804B07C - - .align 2 -gOamData_8215A14:: @ 8215A14 - .2byte 0x8000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8215A1C:: @ 8215A1C - obj_image_anim_frame 0, 10 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215A24:: @ 8215A24 - .4byte gSpriteAnim_8215A1C - - .align 2 -gUnknown_08215A28:: @ 8215A28 - obj_tiles gTradeCableEndTiles, 0x100, 5554 - - .align 2 -gSpriteTemplate_8215A30:: @ 8215A30 - spr_template 5554, 5555, gOamData_8215A14, gSpriteAnimTable_8215A24, NULL, gDummySpriteAffineAnimTable, sub_804B0BC - - .align 2 -gOamData_8215A48:: @ 8215A48 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8215A50:: @ 8215A50 - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 64, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 96, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 64, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_loop 8 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215A74:: @ 8215A74 - .4byte gSpriteAnim_8215A50 - - .align 2 -gUnknown_08215A78:: @ 8215A78 - obj_tiles gTradeGBAScreenTiles, 0x1000, 5556 - - .align 2 -gSpriteTemplate_8215A80:: @ 8215A80 - spr_template 5556, 5555, gOamData_8215A48, gSpriteAnimTable_8215A74, NULL, gDummySpriteAffineAnimTable, sub_804B104 - - .align 1 -gTradeGlow2PaletteAnimTable:: @ 8215A98 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7FFF - - .align 2 -gSpriteAffineAnim_8215AB0:: @ 8215AB0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_8215AC0:: @ 8215AC0 - .4byte gSpriteAffineAnim_8215AB0 - -@ 8215AC4 - .include "data/ingame_trades.inc" - -gTradeBallVerticalVelocityTable:: @ 8215BA0 - .byte 0 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 1 - .byte 1 - .byte 1 - .byte 2 - .byte 2 - .byte 2 - .byte 2 - .byte 3 - .byte 3 - .byte 3 - .byte 3 - .byte 4 - .byte 4 - .byte 4 - .byte 4 - .byte -4 - .byte -4 - .byte -4 - .byte -3 - .byte -3 - .byte -3 - .byte -3 - .byte -2 - .byte -2 - .byte -2 - .byte -2 - .byte -1 - .byte -1 - .byte -1 - .byte -1 - .byte 0 - .byte -1 - .byte 0 - .byte -1 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 1 - .byte 1 - .byte 1 - .byte 2 - .byte 2 - .byte 2 - .byte 2 - .byte 3 - .byte 3 - .byte 3 - .byte 3 - .byte 4 - .byte 4 - .byte 4 - .byte 4 - .byte -4 - .byte -3 - .byte -3 - .byte -2 - .byte -2 - .byte -1 - .byte -1 - .byte -1 - .byte 0 - .byte -1 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 1 - .byte 1 - .byte 2 - .byte 2 - .byte 3 - .byte 3 - .byte 4 - .byte -4 - .byte -3 - .byte -2 - .byte -1 - .byte -1 - .byte -1 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 1 - .byte 2 - .byte 3 diff --git a/data/trainer_see.s b/data/trainer_see.s index 57eeae061..04a787f0c 100644 --- a/data/trainer_see.s +++ b/data/trainer_see.s @@ -4,47 +4,6 @@ .section .rodata .align 2 -gSpriteImage_839B308:: @ 839B308 - .incbin "graphics/unknown_sprites/839B4E0/0.4bpp" - - .align 2 -gSpriteImage_839B388:: @ 839B388 - .incbin "graphics/unknown_sprites/839B4E0/1.4bpp" - - .align 2 -gSpriteImage_839B408:: @ 839B408 - .incbin "graphics/unknown_sprites/839B408.4bpp" - - .align 2 -gIsTrainerInRange:: @ 839B488 - .4byte IsTrainerInRangeSouth - .4byte IsTrainerInRangeNorth - .4byte IsTrainerInRangeWest - .4byte IsTrainerInRangeEast - - .align 2 -gTrainerSeeFuncList:: @ 839B498 - .4byte sub_8084394 - .4byte sub_8084398 - .4byte sub_80843DC - .4byte sub_808441C - .4byte sub_8084478 - .4byte sub_8084534 - .4byte sub_8084578 - .4byte sub_80845AC - .4byte sub_80845C8 - .4byte sub_80845FC - .4byte sub_8084654 - .4byte sub_80846C8 - - .align 2 -gTrainerSeeFuncList2:: @ 839B4C8 - .4byte sub_80845C8 - .4byte sub_80845FC - .4byte sub_8084654 - .4byte sub_80846C8 - - .align 2 gOamData_839B4D8:: @ 839B4D8 .2byte 0x0000 .2byte 0x4000 diff --git a/include/bard_music.h b/include/bard_music.h new file mode 100644 index 000000000..529fd50f8 --- /dev/null +++ b/include/bard_music.h @@ -0,0 +1,31 @@ +#ifndef GUARD_BARD_MUSIC_H +#define GUARD_BARD_MUSIC_H + +struct BardSound; + +struct BardPhoneme +{ + /*0x00*/ u16 sound; + /*0x02*/ u16 length; + /*0x04*/ s16 pitch; + /*0x06*/ u16 volume; +}; + +struct BardSong +{ + /*0x00*/ u8 currWord; + /*0x01*/ u8 currPhoneme; + /*0x02*/ u8 phonemeTimer; + /*0x03*/ u8 state; + /*0x04*/ s16 var04; + /*0x06*/ u16 volume; + /*0x08*/ s16 pitch; + /*0x0A*/ s16 voiceInflection; + /*0x0C*/ u16 lyrics[6]; + /*0x18*/ struct BardPhoneme phonemes[6]; +}; + +const struct BardSound *GetWordSounds(u16 arg0, u16 arg1); +s32 GetWordPhonemes(struct BardSong *dest, const struct BardSound *src, u16 arg2); + +#endif // GUARD_BARD_MUSIC_H diff --git a/include/battle.h b/include/battle.h index d4cb53689..7850a9dd6 100644 --- a/include/battle.h +++ b/include/battle.h @@ -19,103 +19,177 @@ #define BATTLE_TYPE_LEGENDARY 0x2000 #define BATTLE_TYPE_REGI 0x4000 +#define BATTLE_WON 0x1 +#define BATTLE_LOST 0x2 +#define BATTLE_DREW 0x3 +#define BATTLE_RAN 0x4 +#define BATTLE_PLAYER_TELEPORTED 0x5 +#define BATTLE_POKE_FLED 0x6 +#define BATTLE_CAUGHT 0x7 +#define BATTLE_OPPONENT_TELEPORTED 0xA + #define AI_ACTION_DONE 0x0001 #define AI_ACTION_FLEE 0x0002 -#define AI_ACTION_WATCH 0x0004 -#define AI_ACTION_DO_NOT_ATTACK 0x0008 +#define AI_ACTION_WATCH 0x0004 +#define AI_ACTION_DO_NOT_ATTACK 0x0008 #define AI_ACTION_UNK5 0x0010 #define AI_ACTION_UNK6 0x0020 #define AI_ACTION_UNK7 0x0040 #define AI_ACTION_UNK8 0x0080 -#define STATUS_SLEEP 0x7 -#define STATUS_POISON 0x8 -#define STATUS_BURN 0x10 -#define STATUS_FREEZE 0x20 -#define STATUS_PARALYSIS 0x40 -#define STATUS_TOXIC_POISON 0x80 +#define STATUS_SLEEP 0x7 +#define STATUS_POISON 0x8 +#define STATUS_BURN 0x10 +#define STATUS_FREEZE 0x20 +#define STATUS_PARALYSIS 0x40 +#define STATUS_TOXIC_POISON 0x80 +#define STATUS_TOXIC_COUNTER 0xF00 + +#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON)) +#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) #define STATUS2_CONFUSION 0x00000007 +#define STATUS2_FLINCHED 0x00000008 #define STATUS2_UPROAR 0x00000070 +#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200 #define STATUS2_LOCK_CONFUSE 0x00000C00 #define STATUS2_MULTIPLETURNS 0x00001000 #define STATUS2_WRAPPED 0x0000E000 +#define STATUS2_INFATUATION 0x000F0000 #define STATUS2_FOCUS_ENERGY 0x00100000 #define STATUS2_TRANSFORMED 0x00200000 #define STATUS2_RECHARGE 0x00400000 #define STATUS2_RAGE 0x00800000 #define STATUS2_SUBSTITUTE 0x01000000 +#define STATUS2_DESTINY_BOND 0x02000000 #define STATUS2_ESCAPE_PREVENTION 0x04000000 #define STATUS2_NIGHTMARE 0x08000000 #define STATUS2_CURSED 0x10000000 #define STATUS2_FORESIGHT 0x20000000 +#define STATUS2_DEFENSE_CURL 0x40000000 +#define STATUS2_TORMENT 0x80000000 -#define STATUS3_LEECHSEED_RECEIVER 0x3 //two bits for the bank that gets hp +#define STATUS3_LEECHSEED_BANK 0x3 #define STATUS3_LEECHSEED 0x4 #define STATUS3_ALWAYS_HITS 0x18 //two bits #define STATUS3_PERISH_SONG 0x20 #define STATUS3_ON_AIR 0x40 #define STATUS3_UNDERGROUND 0x80 #define STATUS3_MINIMIZED 0x100 -#define STATUS3_CHARGED_UP 0x200 #define STATUS3_ROOTED 0x400 +#define STATUS3_CHARGED_UP 0x200 +#define STATUS3_YAWN 0x1800 //two bits +#define STATUS3_IMPRISIONED 0x2000 #define STATUS3_GRUDGE 0x4000 #define STATUS3_CANT_SCORE_A_CRIT 0x8000 #define STATUS3_MUDSPORT 0x10000 #define STATUS3_WATERSPORT 0x20000 #define STATUS3_UNDERWATER 0x40000 - -#define HITMARKER_x20 0x0000020 -#define HITMARKER_DESTINYBOND 0x0000040 -#define HITMARKER_NO_ANIMATIONS 0x0000080 -#define HITMARKER_IGNORE_SUBSTITUTE 0x0000100 -#define HITMARKER_NO_ATTACKSTRING 0x0000200 -#define HITMARKER_ATTACKSTRING_PRINTED 0x0000400 -#define HITMARKER_NO_PPDEDUCT 0x0000800 -#define HITMARKER_IGNORE_SAFEGUARD 0x0002000 -#define HITMARKER_SYNCHRONISE_EFFECT 0x0004000 -#define HITMARKER_IGNORE_ON_AIR 0x0010000 -#define HITMARKER_IGNORE_UNDERGROUND 0x0020000 -#define HITMARKER_IGNORE_UNDERWATER 0x0040000 -#define HITMARKER_x80000 0x0080000 -#define HITMARKER_x100000 0x0100000 -#define HITMARKER_x400000 0x0400000 -#define HITMARKER_x800000 0x0800000 -#define HITMARKER_GRUDGE 0x1000000 -#define HITMARKER_OBEYS 0x2000000 +#define STATUS3_INTIMIDATE_POKES 0x80000 +#define STATUS3_TRACE 0x100000 + +#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)) + +#define HITMARKER_x20 0x00000020 +#define HITMARKER_DESTINYBOND 0x00000040 +#define HITMARKER_NO_ANIMATIONS 0x00000080 +#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100 +#define HITMARKER_NO_ATTACKSTRING 0x00000200 +#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400 +#define HITMARKER_NO_PPDEDUCT 0x00000800 +#define HITMARKER_PURSUIT_TRAP 0x00001000 +#define HITMARKER_IGNORE_SAFEGUARD 0x00002000 +#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000 +#define HITMARKER_IGNORE_ON_AIR 0x00010000 +#define HITMARKER_IGNORE_UNDERGROUND 0x00020000 +#define HITMARKER_IGNORE_UNDERWATER 0x00040000 +#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000 +#define HITMARKER_x100000 0x00100000 +#define HITMARKER_x200000 0x00200000 +#define HITMARKER_x400000 0x00400000 +#define HITMARKER_x800000 0x00800000 +#define HITMARKER_GRUDGE 0x01000000 +#define HITMARKER_OBEYS 0x02000000 +#define HITMARKER_x8000000 0x08000000 #define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C)) #define HITMARKER_UNK(bank) ((0x10000000 << bank)) +#define SIDE_STATUS_REFLECT (1 << 0) +#define SIDE_STATUS_LIGHTSCREEN (1 << 1) +#define SIDE_STATUS_X4 (1 << 2) +#define SIDE_STATUS_SPIKES (1 << 4) +#define SIDE_STATUS_SAFEGUARD (1 << 5) +#define SIDE_STATUS_FUTUREATTACK (1 << 6) +#define SIDE_STATUS_MIST (1 << 8) +#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) + +#define ABILITYEFFECT_ON_SWITCHIN 0x0 +#define ABILITYEFFECT_ENDTURN 0x1 +#define ABILITYEFFECT_MOVES_BLOCK 0x2 +#define ABILITYEFFECT_ABSORBING 0x3 +#define ABILITYEFFECT_CONTACT 0x4 +#define ABILITYEFFECT_IMMUNITY 0x5 +#define ABILITYEFFECT_FORECAST 0x6 +#define ABILITYEFFECT_SYNCHRONIZE 0x7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 +#define ABILITYEFFECT_INTIMIDATE1 0x9 +#define ABILITYEFFECT_INTIMIDATE2 0xA +#define ABILITYEFFECT_TRACE 0xB +#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC +#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD +#define ABILITYEFFECT_FIELD_SPORT 0xE +#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF +#define ABILITYEFFECT_COUNT_OTHER_SIZE 0x10 +#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 +#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 +#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 + +#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) + +#define MOVESTATUS_MISSED (1 << 0) +#define MOVESTATUS_SUPEREFFECTIVE (1 << 1) +#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2) +#define MOVESTATUS_NOTAFFECTED (1 << 3) +#define MOVESTATUS_ONEHITKO (1 << 4) +#define MOVESTATUS_FAILED (1 << 5) +#define MOVESTATUS_ENDURED (1 << 6) +#define MOVESTATUS_HUNGON (1 << 7) + +#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)) + #define MAX_TRAINER_ITEMS 4 #define MAX_MON_MOVES 4 #define MAX_BANKS_BATTLE 4 -#define weather_rain 1 -#define weather_downpour 2 -#define weather_permament_rain 4 -#define WEATHER_RAINY ((weather_rain | weather_downpour | weather_permament_rain)) - -#define weather_sandstorm 8 -#define weather_permament_sandstorm 0x10 -#define WEATHER_SANDSTORMY ((weather_sandstorm | weather_permament_sandstorm)) - -#define weather_sun 0x20 -#define weather_permament_sun 0x40 -#define WEATHER_SUNNY ((weather_sun | weather_permament_sun)) - -#define weather_hail 0x80 - -// needed to match the hack that is get_item, thanks cam, someone else clean this up later. -extern u8 unk_2000000[]; +#define WEATHER_RAIN_TEMPORARY (1 << 0) +#define WEATHER_RAIN_DOWNPOUR (1 << 1) +#define WEATHER_RAIN_PERMANENT (1 << 2) +#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)) +#define WEATHER_SANDSTORM_TEMPORARY (1 << 3) +#define WEATHER_SANDSTORM_PERMANENT (1 << 4) +#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)) +#define WEATHER_SUN_TEMPORARY (1 << 5) +#define WEATHER_SUN_PERMANENT (1 << 6) +#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)) +#define WEATHER_HAIL (1 << 7) enum { - WEATHER_SUN, - WEATHER_RAIN, - WEATHER_SANDSTORM, - WEATHER_HAIL, + BATTLE_TERRAIN_GRASS, + BATTLE_TERRAIN_LONG_GRASS, + BATTLE_TERRAIN_SAND, + BATTLE_TERRAIN_UNDERWATER, + BATTLE_TERRAIN_WATER, + BATTLE_TERRAIN_POND, + BATTLE_TERRAIN_MOUNTAIN, + BATTLE_TERRAIN_CAVE, + BATTLE_TERRAIN_BUILDING, + BATTLE_TERRAIN_PLAIN, }; +// needed to match the hack that is get_item, thanks cam, someone else clean this up later. +extern u8 unk_2000000[]; + struct Trainer { /*0x00*/ u8 partyFlags; @@ -164,32 +238,30 @@ struct BattleStruct /* 0x2000000 */ u8 filler0[0x15DDE]; /*0x15DDE*/ u8 unk15DDE; /*0x15DDF*/ u8 unk15DDF; - /*0x15DE0*/ u8 filler15DE0[0x222]; - /*0x16002*/ u8 AnimTurn; - /*0x16003*/ u8 ScriptingActive; - /*0x16004*/ u8 WrappedMove1[4]; - /*0x16008*/ u8 WrappedMove2[4]; + /*0x15DE0*/ u8 filler15DE0[0x220]; + /*0x16000*/ u8 turnEffectsTracker; + /*0x16001*/ u8 turnEffectsBank; + /*0x16002*/ u8 animTurn; + /*0x16003*/ u8 scriptingActive; + /*0x16004*/ u8 wrappedMove[8]; /*0x1600C*/ u8 cmd49StateTracker; /*0x1600D*/ u8 unk1600D; - /*0x1600E*/ u8 unk1600E; + /*0x1600E*/ u8 turncountersTracker; /*0x1600F*/ u8 atk23StateTracker; - /*0x16010*/ u8 unk16010; - /*0x16011*/ u8 unk16011; - /*0x16012*/ u8 unk16012; - /*0x16013*/ u8 unk16013; + /*0x16010*/ u8 moveTarget[4]; /*0x16014*/ u8 unk16014; /*0x16015*/ u8 unk16015; /*0x16016*/ u8 unk16016; /*0x16017*/ u8 unk16017; /*0x16018*/ u8 expGetterID; /*0x16019*/ u8 unk16019; - /*0x1601A*/ u8 unk1601A; + /*0x1601A*/ u8 atk5A_StateTracker; //also atk5B, statetracker /*0x1601B*/ u8 wildVictorySong; - /*0x1601C*/ u8 DynamicMoveType; + /*0x1601C*/ u8 dynamicMoveType; /*0x1601D*/ u8 unk1601D; /*0x1601E*/ u8 statChanger; - /*0x1601F*/ u8 DmgMultiplier; - /*0x16020*/ u8 WrappedBy[4]; + /*0x1601F*/ u8 dmgMultiplier; + /*0x16020*/ u8 wrappedBy[4]; /*0x16024*/ u8 unk16024; /*0x16025*/ u8 unk16025; /*0x16026*/ u8 unk16026; @@ -240,48 +312,21 @@ struct BattleStruct /* 0x2000000 */ /*0x16053*/ u8 unk16053; /*0x16054*/ u8 unk16054; /*0x16055*/ u8 unk16055; - /*0x16056*/ u8 unk16056; + /*0x16056*/ u8 moneyMultiplier; /*0x16057*/ u8 unk16057; /*0x16058*/ u8 unk16058; - /*0x16059*/ u8 unk16059; + /*0x16059*/ u8 sub80173A4_Tracker; /*0x1605A*/ u8 unk1605A; /*0x1605B*/ u8 unk1605B; /*0x1605C*/ u16 exp; /*0x1605E*/ u8 unk1605E; /*0x1605F*/ u8 sentInPokes; /*0x16060*/ u8 unk16060[4]; - /*0x16064*/ u8 unk16064; - /*0x16065*/ u8 unk16065; - /*0x16066*/ u8 unk16066; - /*0x16067*/ u8 unk16067; - /*0x16068*/ u8 unk16068; - /*0x16069*/ u8 unk16069; - /*0x1606A*/ u8 unk1606A; - /*0x1606B*/ u8 unk1606B; - /*0x1606C*/ u8 unk1606C; - /*0x1606D*/ u8 unk1606D; - /*0x1606E*/ u8 unk1606E; - /*0x1606F*/ u8 unk1606F; - /*0x16070*/ u8 unk16070; - /*0x16071*/ u8 unk16071; - /*0x16072*/ u8 unk16072; - /*0x16073*/ u8 unk16073; - /*0x16074*/ u8 unk16074; - /*0x16075*/ u8 unk16075; - /*0x16076*/ u8 unk16076; - /*0x16077*/ u8 unk16077; + /*0x16064*/ u8 unk16064[4]; + /*0x16068*/ u8 unk16068[4]; + /*0x1606C*/ u8 unk1606C[4][3]; /*0x16078*/ u8 unk16078; - /*0x16079*/ u8 unk16079; - /*0x1607A*/ u8 unk1607A; - /*0x1607B*/ u8 unk1607B; - /*0x1607C*/ u8 unk1607C; - /*0x1607D*/ u8 unk1607D; - /*0x1607E*/ u8 unk1607E; - /*0x1607F*/ u8 unk1607F; - /*0x16080*/ u8 unk16080; - /*0x16081*/ u8 unk16081; - /*0x16082*/ u8 unk16082; - /*0x16083*/ u8 unk16083; + /*0x16079*/ u8 caughtNick[11]; /*0x16084*/ u8 unk16084; /*0x16085*/ u8 unk16085; /*0x16086*/ u8 unk16086; @@ -291,10 +336,7 @@ struct BattleStruct /* 0x2000000 */ /*0x1608A*/ u8 unk1608A; /*0x1608B*/ u8 unk1608B; /*0x1608C*/ u8 ChosenMoveID[4]; - /*0x16090*/ u8 unk16090; - /*0x16091*/ u8 unk16091; - /*0x16092*/ u8 unk16092; - /*0x16093*/ u8 unk16093; + /*0x16090*/ s32 bideDmg; /*0x16094*/ u8 unk16094; /*0x16095*/ u8 unk16095; /*0x16096*/ u8 unk16096; @@ -302,17 +344,17 @@ struct BattleStruct /* 0x2000000 */ /*0x16098*/ u8 unk16098; /*0x16099*/ u8 unk16099; /*0x1609A*/ u8 unk1609a; - /*0x1609B*/ u8 unk1609b; - /*0x1609C*/ u8 unk1609C; + /*0x1609B*/ u8 castformToChangeInto; + /*0x1609C*/ u8 atk6C_statetracker; /*0x1609D*/ u8 unk1609D; /*0x1609E*/ u8 unk1609E; /*0x1609F*/ u8 unk1609F; - /*0x160A0*/ u8 unk160a0; - /*0x160A1*/ u8 AnimTargetsHit; + /*0x160A0*/ u8 stringMoveType; + /*0x160A1*/ u8 animTargetsHit; /*0x160A2*/ u8 expGetterBank; /*0x160A3*/ u8 unk160A3; - /*0x160A4*/ u8 AnimArg1; - /*0x160A5*/ u8 AnimArg2; + /*0x160A4*/ u8 animArg1; + /*0x160A5*/ u8 animArg2; /*0x160A6*/ u8 unk160A6; /*0x160A7*/ u8 unk160A7; /*0x160A8*/ u8 unk160A8; @@ -335,12 +377,9 @@ struct BattleStruct /* 0x2000000 */ /*0x160B9*/ u8 unk160B9; /*0x160BA*/ u8 unk160Ba; /*0x160BB*/ u8 unk160Bb; - /*0x160BC*/ u8 unk160BC; - /*0x160BD*/ u8 unk160BD; - /*0x160BE*/ u8 unk160BE; - /*0x160BF*/ u8 unk160BF; + /*0x160BC*/ u16 HP_OnSwitchout[2]; /*0x160C0*/ u8 unk160C0; - /*0x160C1*/ u8 unk160C1; + /*0x160C1*/ u8 hpScale; /*0x160C2*/ u8 unk160C2; /*0x160C3*/ u8 unk160C3; /*0x160C4*/ u8 unk160C4; @@ -349,69 +388,157 @@ struct BattleStruct /* 0x2000000 */ /*0x160C7*/ u8 unk160C7; /*0x160C8*/ u8 unk160C8; /*0x160C9*/ u8 unk160C9; - /*0x160CA*/ u8 SynchroniseEffect; + /*0x160CA*/ u8 synchroniseEffect; /*0x160CB*/ u8 linkPlayerIndex; - /*0x160CC*/ u16 UsedHeldItems[4]; - u8 filler2[0x72E]; + /*0x160CC*/ u16 usedHeldItems[4]; + /*0x160D4*/ u8 unk160D4; + /*0x160D5*/ u8 unk160D5; + /*0x160D6*/ u8 unk160D6; + /*0x160D7*/ u8 unk160D7; + /*0x160D8*/ u8 unk160D8; + /*0x160D9*/ u8 unk160D9; + /*0x160DA*/ u8 unk160DA; + /*0x160DB*/ u8 unk160DB; + /*0x160DC*/ u8 unk160DC; + /*0x160DD*/ u8 intimidateBank; + /*0x160DE*/ u8 unk160DE; + /*0x160DF*/ u8 unk160DF; + /*0x160E0*/ u8 unk160E0; + /*0x160E1*/ u8 unk160E1; + /*0x160E2*/ u8 unk160E2; + /*0x160E3*/ u8 unk160E3; + /*0x160E4*/ u8 unk160E4; + /*0x160E5*/ u8 unk160E5; + /*0x160E6*/ u8 unk160E6; + /*0x160E7*/ u8 atkCancellerTracker; + /*0x160E8*/ u8 unk160E8; + /*0x160E9*/ u8 unk160E9; + /*0x160EA*/ u8 unk160EA; + /*0x160EB*/ u8 unk160EB; + /*0x160EC*/ u8 unk160EC; + /*0x160ED*/ u8 unk160ED; + /*0x160EE*/ u8 unk160EE; + /*0x160EF*/ u8 unk160EF; + /*0x160F0*/ u8 unk160F0; + /*0x160F1*/ u8 unk160F1; + /*0x160F2*/ u8 unk160F2; + /*0x160F3*/ u8 unk160F3; + /*0x160F4*/ u8 unk160F4; + /*0x160F5*/ u8 unk160F5; + /*0x160F6*/ u8 unk160F6; + /*0x160F7*/ u8 unk160F7; + /*0x160F8*/ u8 unk160F8; + /*0x160F9*/ u8 unk160F9; + /*0x160FA*/ u8 unk160FA; + /*0x160FB*/ u8 unk160FB; + /*0x160FC*/ u8 turnSideTracker; + /*0x160FD*/ u8 unk160FD; + /*0x160FE*/ u8 unk160FE; + /*0x160FF*/ u8 unk160FF; + /*0x16100*/ u8 unk16100; + /*0x16101*/ u8 unk16101; + /*0x16102*/ u8 unk16102; + /*0x16103*/ u8 unk16103; + /*0x16104*/ u8 unk16104; + /*0x16105*/ u8 unk16105; + /*0x16106*/ u8 unk16106; + /*0x16107*/ u8 unk16107; + /*0x16108*/ u8 unk16108; + /*0x16109*/ u8 unk16109; + /*0x1610A*/ u8 unk1610A; + /*0x1610B*/ u8 unk1610B; + /*0x1610C*/ u8 unk1610C; + /*0x1610D*/ u8 unk1610D; + /*0x1610E*/ u8 unk1610E; + /*0x1610F*/ u8 unk1610F; + /*0x16110*/ u8 sub80170DC_Tracker; + /*0x16111*/ u8 sub80170DC_Bank; + /*0x16112*/ u8 unk16112; + /*0x16113*/ u8 unk16113; + /*0x16114*/ u8 unk16114; + /*0x16115*/ u8 unk16115; + /*0x16116*/ u8 unk16116; + /*0x16117*/ u8 unk16117; + /*0x16118*/ u8 unk16118; + /*0x16119*/ u8 unk16119; + /*0x1611A*/ u8 unk1611A; + /*0x1611B*/ u8 unk1611B; + /*0x1611C*/ u8 unk1611C; + /*0x1611D*/ u8 unk1611D; + /*0x1611E*/ u8 unk1611E; + /*0x1611F*/ u8 unk1611F; + + //u8 filler2[0x72E]; /* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2; }; struct DisableStruct { - /*0x00*/ u8 filler0[0x3]; - /*0x04*/ u16 DisabledMove; - /*0x06*/ u16 EncoredMove; - /*0x08*/ u8 ProtectUses; - /*0x09*/ u8 StockpileCounter; - /*0x0A*/ u8 SubstituteHP; - u8 fillerB[4]; - u8 unkF_0:4; - u8 unkF_4:4; - u8 filler10[3]; - /*0x13*/ u8 taunt:4; - /*0x13*/ u8 unkC:4; - /*0x14*/ u8 BankPreventingEscape; - /*0x15*/ u8 BankWithSureHit; - /*0x16*/ u8 IsFirstTurn; + /*0x00*/ u32 unk0; + /*0x04*/ u16 disabledMove; + /*0x06*/ u16 encoredMove; + /*0x08*/ u8 protectUses; + /*0x09*/ u8 stockpileCounter; + /*0x0A*/ u8 substituteHP; + /*0x0B*/ u8 disableTimer1 : 4; + /*0x0B*/ u8 disableTimer2 : 4; + /*0x0C*/ u8 encoredMovePos; + /*0x0D*/ u8 unkD; + /*0x0E*/ u8 encoreTimer1 : 4; + /*0x0E*/ u8 encoreTimer2 : 4; + /*0x0F*/ u8 perishSong1 : 4; + /*0x0F*/ u8 perishSong2 : 4; + /*0x10*/ u8 furyCutterCounter; + /*0x11*/ u8 rolloutTimer1 : 4; + /*0x11*/ u8 rolloutTimer2 : 4; + /*0x12*/ u8 chargeTimer1 : 4; + /*0x12*/ u8 chargeTimer2 : 4; + /*0x13*/ u8 tauntTimer1:4; + /*0x13*/ u8 tauntTimer2:4; + /*0x14*/ u8 bankPreventingEscape; + /*0x15*/ u8 bankWithSureHit; + /*0x16*/ u8 isFirstTurn; /*0x17*/ u8 unk17; - /*0x18*/ u8 TruantCounter; - /*0x19*/ u8 RechargeCounter; + /*0x18*/ u8 truantCounter : 1; + /*0x18*/ u8 unk18_a : 3; + /*0x18*/ u8 unk18_b : 4; + /*0x19*/ u8 rechargeCounter; /*0x1A*/ u8 unk1A[2]; }; struct BattleResults { - u8 PlayerFaintCounter; // 0x0 - u8 OpponentFaintCounter; // 0x1 + u8 playerFaintCounter; // 0x0 + u8 opponentFaintCounter; // 0x1 u8 unk2; // 0x2 u8 unk3; // 0x3 u8 unk4; // 0x4 u8 unk5_0:1; // 0x5 u8 unk5_1:1; // 0x5 - u16 Poke1Species; // 0x6 - u8 PokeString1[10]; // 0x8 + u16 poke1Species; // 0x6 + u8 pokeString1[10]; // 0x8 u8 unk12; - u8 BattleTurnCounter; // 0x13 - u8 PokeString2[10]; // 0x14 + u8 battleTurnCounter; // 0x13 + u8 pokeString2[10]; // 0x14 u8 filler1E[2]; - u16 LastOpponentSpecies; // 0x20 - u16 LastUsedMove; // 0x22 - u16 OpponentMove; // 0x24 - u16 OpponentSpecies; // 0x26 - u16 CaughtPoke; // 0x28 - u8 CaughtNick[10]; // 0x2A + u16 lastOpponentSpecies; // 0x20 + u16 lastUsedMove; // 0x22 + u16 opponentMove; // 0x24 + u16 opponentSpecies; // 0x26 + u16 caughtPoke; // 0x28 + u8 caughtNick[10]; // 0x2A u8 filler34[2]; - u8 unk36[10]; + u8 unk36[10]; // usedBalls? }; struct Struct2017800 { - u8 unk0_0:1; + u8 invisible:1; u8 unk0_1:1; - u8 unk0_2:1; + u8 substituteSprite:1; u8 unk0_3:1; u8 unk0_4:1; - u16 unk2; + u16 transformedSpecies; }; struct Struct2017810 @@ -454,34 +581,34 @@ struct Struct20238C8 struct ProtectStruct { /*field0*/ - u32 Protected:1; - u32 Endured:1; - u32 OnlyStruggle:1; - u32 HelpingHand:1; - u32 BounceMove:1; - u32 StealMove:1; - u32 Flag0Unknown:1; - u32 PrlzImmobility:1; + u32 protected:1; + u32 endured:1; + u32 onlyStruggle:1; + u32 helpingHand:1; + u32 bounceMove:1; + u32 stealMove:1; + u32 flag0Unknown:1; + u32 prlzImmobility:1; /*field1*/ - u32 ConfusionSelfDmg:1; - u32 NotEffective:1; - u32 ChargingTurn:1; - u32 FleeFlag:2; //for RunAway and Smoke Ball - u32 UsedImprisionedMove:1; - u32 LoveImmobility:1; - u32 UsedDisabledMove:1; + u32 confusionSelfDmg:1; + u32 notEffective:1; + u32 chargingTurn:1; + u32 fleeFlag:2; //for RunAway and Smoke Ball + u32 usedImprisionedMove:1; + u32 loveImmobility:1; + u32 usedDisabledMove:1; /*field2*/ - u32 UsedTauntedMove:1; - u32 Flag2Unknown:1; - u32 FlinchImmobility:1; - u32 NotFirstStrike:1; - u32 Free : 4; + u32 usedTauntedMove:1; + u32 flag2Unknown:1; + u32 flinchImmobility:1; + u32 notFirstStrike:1; + u32 free : 4; /*field3*/ u32 field3 : 8; - u32 PhysicalDmg; - u32 SpecialDmg; - u8 PhysicalBank; - u8 SpecialBank; + u32 physicalDmg; + u32 specialDmg; + u8 physicalBank; + u8 specialBank; u16 fieldE; }; @@ -496,9 +623,9 @@ struct SpecialStatus u8 flag40 : 1; u8 focusBanded : 1; u8 field1[3]; - u32 moveturnLostHP; - u32 moveturnlostHP_physical; - u32 moveturnLostHP_special; + s32 moveturnLostHP; + s32 moveturnLostHP_physical; + s32 moveturnLostHP_special; u8 moveturnPhysicalBank; u8 moveturnSpecialBank; u8 field12; @@ -507,18 +634,17 @@ struct SpecialStatus struct sideTimer { - u8 reflectTimer; - u8 reflectBank; - u8 lightscreenTimer; - u8 lightscreenBank; - u8 mistTimer; - u8 mistBank; - u8 safeguardTimer; - u8 safeguardBank; - u8 followmeTimer; - u8 followmeTarget; - u8 spikesAmount; - u8 fieldB; + u8 reflectTimer; //0x0 + u8 lightscreenTimer; //0x1 + u8 mistTimer; //0x2 + u8 field3; //0x3 + u16 field4; //0x4 + u8 spikesAmount; //0x6 + u8 safeguardTimer; //0x7 + u8 followmeTimer; //0x8 + u8 followmeTarget; //0x9 + u8 fieldA; //0xA + u8 fieldB; //0xB }; struct WishFutureKnock @@ -528,9 +654,9 @@ struct WishFutureKnock s32 futureSightDmg[MAX_BANKS_BATTLE]; u16 futureSightMove[MAX_BANKS_BATTLE]; u8 wishCounter[MAX_BANKS_BATTLE]; - u8 wishUserBank[MAX_BANKS_BATTLE]; + u8 wishUserID[MAX_BANKS_BATTLE]; u8 weatherDuration; - u8 knockedOffPokes[2]; + u16 knockedOffPokes; }; extern struct UnkBattleStruct1 unk_2016A00; @@ -546,14 +672,76 @@ extern struct Struct20238C8 gUnknown_020238C8; // TODO: move ewram to global.h extern u8 ewram[]; -#define BATTLE_STRUCT ((struct BattleStruct *) (ewram + 0x00000)) -#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(ewram + 0x16800)) -#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00)) -#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00)) -#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC)) -#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800)) -#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810)) -#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840)) +#define BATTLE_STRUCT ((struct BattleStruct *) (ewram + 0x00000)) +#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(ewram + 0x16800)) +#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00)) +#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00)) +#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC)) +#define B_BATTLESCRIPTS_STACK ((struct scriptsStack *) (ewram + 0x17110)) +#define B_FUNCTION_STACK ((struct funcStack *) (ewram + 0x17140)) +#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800)) +#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810)) +#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840)) +#define ewram17000 ((u32 *) (ewram + 0x17100)) + +typedef void (*BattleCmdFunc)(void); + +struct funcStack +{ + void* ptr[8]; + u8 size; +}; + +struct scriptsStack +{ + u8* ptr[8]; + u8 size; +}; + +extern u8 gBattleTextBuff1[]; + +//function declarations of buffer emits +void EmitGetAttributes(u8 buffID, u8 request, u8 c); //0x0 +void Emitcmd1(u8 a, u8 b, u8 c); //0x1 +void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2 +void EmitSendOutPoke(u8 a, u8 b, u8 c); //0x5 +void EmitReturnPokeToBall(u8 a, u8 b); //0x6 +void EmitTrainerSlide(u8 a); //0x8 +void Emitcmd10(u8 a); //0xA +void EmitBallThrow(u8 a, u8 shakes); //0xD +//void EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF +void EmitPrintString(u8 a, u16 stringID); //0x10 +//void EmitPrintStringPlayerOnly(u8 a, u16 stringID); //0x11 +void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); //0x16 +//void EmitHealthBarUpdate(u8 a, u16 b); //0x18; Had to declare the second arg as u16 because s16 wont match in atk0b +//void EmitExpBarUpdate(u8 a, u8 b, u16 c); //0x19 +void EmitStatusIconUpdate(u8 a, u32 b, u32 c); //0x1A +void EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B +void EmitStatusXor(u8 a, u8 b); //0x1C +void EmitHitAnimation(u8 a); //0x29 +void EmitEffectivenessSound(u8 a, u16 sound); //0x2B +void Emitcmd44(u8 a, u16 sound); //0x2C +void EmitFaintingCry(u8 a); //0x2D +void EmitIntroSlide(u8 a, u8 b); //0x2E +void Emitcmd48(u8 a, u8 *b, u8 c); //0x30 +void Emitcmd49(u8 a); //0x31 +void EmitSpriteInvisibility(u8 a, u8 b); //0x33 +void EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34 +void EmitResetActionMoveSelection(u8 a, u8 b); //0x36 +void Emitcmd55(u8 a, u8 b); //0x37 + +#define REQUEST_ALL_BATTLE 0x0 +#define REQUEST_SPECIES_BATTLE 0x1 +#define REQUEST_HELDITEM_BATTLE 0x2 +#define REQUEST_MOVES_PP_BATTLE 0x3 +#define REQUEST_PPMOVE1_BATTLE 0x9 +#define REQUEST_PPMOVE2_BATTLE 0xA +#define REQUEST_PPMOVE3_BATTLE 0xB +#define REQUEST_PPMOVE4_BATTLE 0xC +#define REQUEST_STATUS_BATTLE 0x28 +#define REQUEST_HP_BATTLE 0x2A + +void MarkBufferBankForExecution(u8 bank); extern u8 gBattleTextBuff1[]; @@ -607,29 +795,28 @@ void BattleTurnPassed(void); // asm/battle_2.o void sub_8012324(void); void sub_8012FBC(u8, u8); -u8 b_first_side(u8, u8, u8); +u8 GetWhoStrikesFirst(u8, u8, u8); void TurnValuesCleanUp(u8); void SpecialStatusesClear(void); void sub_80138F0(void); -void MarkBufferBankForExecution(); void sub_80155A4(); -void CancelMultiTurnMoves(u8); +void CancelMultiTurnMoves(u8 bank); void PrepareStringBattle(); void sub_80156DC(); void sub_80157C4(u8 index); // asm/battle_3.o -u8 sub_8015A98(u8, u8, u8); -u8 UpdateTurnCounters(); -u8 TurnBasedEffects(); +u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); +u8 UpdateTurnCounters(void); +u8 TurnBasedEffects(void); u8 sub_80170DC(); u8 sub_80173A4(); -u8 AbilityBattleEffects(u8, u8, u8, u8, u16); -u8 sub_801A02C(); +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 move); +u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); // asm/battle_4.o void AI_CalcDmg(u8, u8); -void TypeCalc(u16, u8, u8); +u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def); // asm/battle_5.o void nullsub_91(void); diff --git a/include/battle_anim.h b/include/battle_anim.h index 48ceece21..2386c515c 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -53,14 +53,14 @@ struct UnknownStruct3 }; void DoMoveAnim(const u8 *const moveAnims[], u16 b, u8 c); -bool8 b_side_obj__get_some_boolean(u8 a); +bool8 IsAnimBankSpriteVisible(u8 a); void sub_8076034(u8, u8); bool8 IsContest(void); void battle_anim_clear_some_data(void); void move_anim_8072740(struct Sprite *sprite); void DestroyAnimVisualTask(u8 task); void DestroyAnimVisualTask(u8 task); -bool8 b_side_obj__get_some_boolean(u8); +bool8 IsAnimBankSpriteVisible(u8); u8 IsContest(); diff --git a/include/battle_message.h b/include/battle_message.h index da57333a5..3e37a1ccd 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -1,7 +1,23 @@ #ifndef GUARD_BATTLE_MESSAGE_H #define GUARD_BATTLE_MESSAGE_H -void StrCpyDecodeToDisplayedStringBattle(const u8 *); -void StrCpyDecodeBattle(const u8 *, u8 *); +struct StringInfoBattle +{ + u16 currentMove; + u16 lastMove; + u16 lastItem; + u8 lastAbility; + u8 scrActive; + u8 unk1605E; + u8 hpScale; + u8 StringBank; + u8 moveType; + u8 abilities[4]; + u8 textBuffs[3][0x10]; +}; + +void BufferStringBattle(u16 stringID); +u32 StrCpyDecodeToDisplayedStringBattle(const u8* src); +u32 StrCpyDecodeBattle(const u8* src, u8* dst); #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/battle_setup.h b/include/battle_setup.h index c8c463f6d..444ab5467 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -40,72 +40,38 @@ struct TrainerPartyMember3 u16 moves[4]; }; -struct TrainerBattleSpec -{ - void *ptr; - u8 ptrType; -}; - struct TrainerEyeTrainer { - u16 trainerNums[5]; + u16 opponentIDs[5]; // Each of these trainers has 5 increasingly stronger teams. u16 mapGroup; u16 mapNum; }; -//void task01_battle_start(u8 taskId); -//void task_add_01_battle_start(u8 transition, u16 song); -void CheckForSafariZoneAndProceed(void); -void StartBattle_StandardWild(void); -void StartBattle_Roamer(void); -void StartBattle_Safari(void); -//void task_add_01_battle_start_with_music_and_stats(void); -//void StartBattle_WallyTutorial(void); -void StartBattle_ScriptedWild(void); -//void StartBattle_SouthernIsland(void); -//void StartBattle_Rayquaza(void); -//void StartBattle_GroudonKyogre(void); -//void StartBattle_Regi(void); -void HandleWildBattleEnd(void); -void HandleScriptedWildBattleEnd(void); -s8 GetBattleTerrain(void); -//s8 GetBattleTransitionTypeByMap(void); -//u16 GetSumOfPartyMonLevel(u8 numMons); -//u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons); -u8 GetWildBattleTransition(void); -u8 GetTrainerBattleTransition(void); -u8 GetBattleTowerBattleTransition(void); -//void ChooseStarter(void); -void CB2_GiveStarter(void); -void CB2_StartFirstBattle(void); -void HandleFirstBattleEnd(void); -//u32 TrainerBattleLoadArg32(u8 *ptr); -//u16 TrainerBattleLoadArg16(u8 *ptr); -//u8 TrainerBattleLoadArg8(u8 *ptr); -//u16 trainerflag_opponent(void); -bool32 battle_exit_is_player_defeat(u32 a1); -//void sub_80822BC(void); -//void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data); -//void battle_80801F0(void); -u8 *TrainerBattleConfigure(const u8 *data); +void BattleSetup_StartWildBattle(void); +void BattleSetup_StartRoamerBattle(void); +void BattleSetup_StartScriptedWildBattle(void); +s8 BattleSetup_GetTerrain(void); +u8 BattleSetup_GetBattleTowerBattleTransition(void); +u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); void TrainerWantsBattle(u8, u8 *); + bool32 GetTrainerFlagFromScriptPointer(u8 *data); //void sub_8082524(void); -//u8 sub_8082558(void); -//u8 sub_8082564(void); +//u8 ScrSpecial_GetTrainerBattleMode(void); +//u8 ScrSpecial_HasTrainerBeenFought(void); //void sub_808257C(void); //void unref_sub_8082590(void); // unused -u8 trainer_flag_check(u16); +u8 HasTrainerAlreadyBeenFought(u16); void trainer_flag_set(u16); void trainer_flag_clear(u16); -void sub_80825E4(void); +void BattleSetup_StartTrainerBattle(void); void sub_808260C(void); void do_choose_name_or_words_screen(void); -//void sub_80826B0(void); -//void sub_80826D8(void); -u8 *sub_80826E8(void); -u8 *sub_8082700(void); -//void sub_8082718(void); +//void ScrSpecial_StartTrainerEyeRematch(void); +//void ScrSpecial_ShowTrainerIntroSpeech(void); +u8 *BattleSetup_GetScriptAddrAfterBattle(void); +u8 *BattleSetup_GetTrainerPostBattleScript(void); +//void ScrSpecial_ShowTrainerNonBattlingSpeech(void); //void PlayTrainerEncounterMusic(void); //u8 *SanitizeString(u8 *str); u8 *sub_808281C(void); @@ -118,7 +84,7 @@ u8 *sub_8082880(void); //s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum); //s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum); //bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum); -//bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum); +//bool8 DoesTrainerEyeTrainerWantRematch(const struct TrainerEyeTrainer *trainers, u16 trainerNum); //u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum); //void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum); //bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum); @@ -130,7 +96,7 @@ s32 sub_8082C0C(u16 mapGroup, u16 mapNum); s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum); u16 sub_8082C4C(u16 a1); //s32 sub_8082C68(void); -//u8 sub_8082C9C(void); +//u8 ScrSpecial_GetTrainerEyeRematchFlag(void); void sub_8082CB8(void); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/battle_transition.h b/include/battle_transition.h index b01378505..0b8766e87 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -1,8 +1,42 @@ #ifndef GUARD_BATTLE_TRANSITION_H #define GUARD_BATTLE_TRANSITION_H -void sub_811AABC(u8); -void sub_811AAD8(u8); -u8 sub_811AAE8(void); +void BattleTransition_StartOnField(u8 transitionID); +void BattleTransition_Start(u8 transitionID); +bool8 IsBattleTransitionDone(void); + +#define TRANSITIONS_NO 17 + +enum // TRANSITION_MUGSHOT +{ + MUGSHOT_SYDNEY, + MUGSHOT_PHOEBE, + MUGSHOT_GLACIA, + MUGSHOT_DRAKE, + MUGSHOT_STEVEN, +}; + +#define MUGSHOTS_NO 5 + +// credits for the names go to Dyskinesia and Tetrable +// names are naturally subject to change + +#define B_TRANSITION_BLUR 0 +#define B_TRANSITION_SWIRL 1 +#define B_TRANSITION_SHUFFLE 2 +#define B_TRANSITION_BIG_POKEBALL 3 +#define B_TRANSITION_POKEBALLS_TRAIL 4 +#define B_TRANSITION_CLOCKWISE_BLACKFADE 5 +#define B_TRANSITION_RIPPLE 6 +#define B_TRANSITION_WAVE 7 +#define B_TRANSITION_SLICE 8 +#define B_TRANSITION_WHITEFADE 9 +#define B_TRANSITION_GRID_SQUARES 10 +#define B_TRANSITION_SHARDS 11 +#define B_TRANSITION_SYDNEY 12 +#define B_TRANSITION_PHOEBE 13 +#define B_TRANSITION_GLACIA 14 +#define B_TRANSITION_DRAKE 15 +#define B_TRANSITION_STEVEN 16 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/berry_blender.h b/include/berry_blender.h deleted file mode 100644 index 924b24b00..000000000 --- a/include/berry_blender.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_BERRY_BLENDER_H -#define GUARD_BERRY_BLENDER_H - -void sub_80516C4(u8, u16); - -#endif // GUARD_BERRY_BLENDER_H diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h index 2b0e2bb96..e9d1f5d7c 100644 --- a/include/braille_puzzles.h +++ b/include/braille_puzzles.h @@ -2,6 +2,7 @@ #define GUARD_BRAILLEPUZZLES_H bool8 ShouldDoBrailleStrengthEffect(void); +bool8 ShouldDoBrailleFlyEffect(void); void DoBrailleStrengthEffect(void); void UseFlyAncientTomb_Callback(void); void UseFlyAncientTomb_Finish(void); @@ -10,5 +11,6 @@ bool32 BrailleWait_CheckButtonPress(void); void SealedChamberShakingEffect(u8 taskId); bool8 ShouldDoBrailleDigEffect(void); void DoBrailleDigEffect(void); +void DoBrailleFlyEffect(void); #endif diff --git a/include/cable_club.h b/include/cable_club.h index 9e6a703e3..a2fe46b30 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -3,20 +3,22 @@ #include "task.h" -void sub_8082D4C(); -void sub_8082D60(u8, u8); -u16 sub_8082D9C(u8, u8); -u32 sub_8082DF4(u8); -u32 sub_8082E28(u8); -u32 sub_8082EB8(u8); -void sub_8082FEC(u8 taskId); -void sub_80833C4(u8 taskId); -void sub_8083418(u8 taskId); -u8 sub_8083444(u8 taskId); +void sub_808347C(u8 arg0); +void sub_80834E4(void); +void sub_808350C(void); +void sub_80835D8(void); +void sub_8083614(void); +void sub_808363C(void); u8 sub_8083664(void); -void sub_8083A84(TaskFunc); -s32 sub_8083BF4(u8 id); -void sub_8083C50(u8); -void sub_8083188(u8 taskId); +void sub_8083820(void); +void sub_80839A4(void); +void sub_80839D0(void); +void sub_8083A84(TaskFunc followupFunc); +void sub_8083B5C(void); +void sub_8083B80(void); +void sub_8083B90(void); +void sub_8083BDC(void); +bool32 sub_8083BF4(u8 linkPlayerIndex); +void sub_8083C50(u8 taskId); #endif // GUARD_CABLE_CLUB_H diff --git a/include/data/field_map_obj/anim_func_ptrs.h b/include/data/field_map_obj/anim_func_ptrs.h index 63575727d..1d1fac71e 100644 --- a/include/data/field_map_obj/anim_func_ptrs.h +++ b/include/data/field_map_obj/anim_func_ptrs.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/18/2017. + // #ifndef POKERUBY_ANIM_FUNC_PTRS_H diff --git a/include/data/field_map_obj/base_oam.h b/include/data/field_map_obj/base_oam.h index 8595f97e7..49c14e8c2 100644 --- a/include/data/field_map_obj/base_oam.h +++ b/include/data/field_map_obj/base_oam.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_BASE_OAM_H diff --git a/include/data/field_map_obj/berry_tree_graphics_tables.h b/include/data/field_map_obj/berry_tree_graphics_tables.h index 53a0fd482..5b60fee6f 100644 --- a/include/data/field_map_obj/berry_tree_graphics_tables.h +++ b/include/data/field_map_obj/berry_tree_graphics_tables.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H diff --git a/include/data/field_map_obj/callback_subroutine_pointers.h b/include/data/field_map_obj/callback_subroutine_pointers.h index d24a47184..a324066b7 100644 --- a/include/data/field_map_obj/callback_subroutine_pointers.h +++ b/include/data/field_map_obj/callback_subroutine_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/18/2017. + // #ifndef POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H @@ -394,7 +394,7 @@ u8 (*const gUnknown_08375588[])(struct MapObject *, struct Sprite *) = { sub_805F3C4 }; -u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)) = { +u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8(u8)) = { sub_805F3EC, sub_805F3F0, sub_805F438, diff --git a/include/data/field_map_obj/field_effect_object_template_pointers.h b/include/data/field_map_obj/field_effect_object_template_pointers.h index 8e19747ce..320af1ff8 100644 --- a/include/data/field_map_obj/field_effect_object_template_pointers.h +++ b/include/data/field_map_obj/field_effect_object_template_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H diff --git a/include/data/field_map_obj/field_effect_objects.h b/include/data/field_map_obj/field_effect_objects.h index dc8a38542..9d3ae343d 100644 --- a/include/data/field_map_obj/field_effect_objects.h +++ b/include/data/field_map_obj/field_effect_objects.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_FIELD_EFFECT_OBJECTS_H diff --git a/include/data/field_map_obj/map_object_anims.h b/include/data/field_map_obj/map_object_anims.h index 0d6e299ee..0993f3efd 100644 --- a/include/data/field_map_obj/map_object_anims.h +++ b/include/data/field_map_obj/map_object_anims.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_ANIMS_H diff --git a/include/data/field_map_obj/map_object_graphics_info.h b/include/data/field_map_obj/map_object_graphics_info.h index 818c5b90c..7b021b66d 100644 --- a/include/data/field_map_obj/map_object_graphics_info.h +++ b/include/data/field_map_obj/map_object_graphics_info.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_H diff --git a/include/data/field_map_obj/map_object_graphics_info_pointers.h b/include/data/field_map_obj/map_object_graphics_info_pointers.h index c36827709..22a052b0d 100644 --- a/include/data/field_map_obj/map_object_graphics_info_pointers.h +++ b/include/data/field_map_obj/map_object_graphics_info_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_POINTERS_H diff --git a/include/data/field_map_obj/map_object_pic_tables.h b/include/data/field_map_obj/map_object_pic_tables.h index 37d579512..ecb5c8836 100644 --- a/include/data/field_map_obj/map_object_pic_tables.h +++ b/include/data/field_map_obj/map_object_pic_tables.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_PIC_TABLES_H diff --git a/include/data/field_map_obj/map_object_subsprites.h b/include/data/field_map_obj/map_object_subsprites.h index f928db88a..951d71e99 100644 --- a/include/data/field_map_obj/map_object_subsprites.h +++ b/include/data/field_map_obj/map_object_subsprites.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_SUBSPRITES_H diff --git a/include/data/pokemon/base_stats.h b/include/data/pokemon/base_stats.h index eadfbfe30..37f59e1c6 100644 --- a/include/data/pokemon/base_stats.h +++ b/include/data/pokemon/base_stats.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_BASE_STATS_H diff --git a/include/data/pokemon/cry_ids.h b/include/data/pokemon/cry_ids.h index d965a41cf..6207a92f0 100644 --- a/include/data/pokemon/cry_ids.h +++ b/include/data/pokemon/cry_ids.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_CRY_IDS_H diff --git a/include/data/pokemon/dex_order.h b/include/data/pokemon/dex_order.h index 6f8582533..cbb7182ed 100644 --- a/include/data/pokemon/dex_order.h +++ b/include/data/pokemon/dex_order.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_DEX_ORDER_H diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h new file mode 100644 index 000000000..ab1b1dd33 --- /dev/null +++ b/include/data/pokemon/egg_moves.h @@ -0,0 +1,1318 @@ +// + +// + +#ifndef POKERUBY_DAYCARE_H +#define POKERUBY_DAYCARE_H + +#define EGG_MOVES_SPECIES_OFFSET 20000 +#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves + +#endif //POKERUBY_DAYCARE_H + +const u16 gEggMoves[] = { + egg_moves(BULBASAUR, + MOVE_LIGHT_SCREEN, + MOVE_SKULL_BASH, + MOVE_SAFEGUARD, + MOVE_CHARM, + MOVE_PETAL_DANCE, + MOVE_MAGICAL_LEAF, + MOVE_GRASS_WHISTLE, + MOVE_CURSE), + + egg_moves(CHARMANDER, + MOVE_BELLY_DRUM, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_BITE, + MOVE_OUTRAGE, + MOVE_BEAT_UP, + MOVE_SWORDS_DANCE, + MOVE_DRAGON_DANCE), + + egg_moves(SQUIRTLE, + MOVE_MIRROR_COAT, + MOVE_HAZE, + MOVE_MIST, + MOVE_FORESIGHT, + MOVE_FLAIL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_YAWN), + + egg_moves(PIDGEY, + MOVE_PURSUIT, + MOVE_FAINT_ATTACK, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_AIR_CUTTER), + + egg_moves(RATTATA, + MOVE_SCREECH, + MOVE_FLAME_WHEEL, + MOVE_FURY_SWIPES, + MOVE_BITE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_UPROAR, + MOVE_SWAGGER), + + egg_moves(SPEAROW, + MOVE_FAINT_ATTACK, + MOVE_FALSE_SWIPE, + MOVE_SCARY_FACE, + MOVE_QUICK_ATTACK, + MOVE_TRI_ATTACK, + MOVE_ASTONISH, + MOVE_SKY_ATTACK), + + egg_moves(EKANS, + MOVE_PURSUIT, + MOVE_SLAM, + MOVE_SPITE, + MOVE_BEAT_UP, + MOVE_POISON_FANG), + + egg_moves(SANDSHREW, + MOVE_FLAIL, + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_RAPID_SPIN, + MOVE_ROCK_SLIDE, + MOVE_METAL_CLAW, + MOVE_SWORDS_DANCE, + MOVE_CRUSH_CLAW), + + egg_moves(NIDORAN_F, + MOVE_SUPERSONIC, + MOVE_DISABLE, + MOVE_TAKE_DOWN, + MOVE_FOCUS_ENERGY, + MOVE_CHARM, + MOVE_COUNTER, + MOVE_BEAT_UP), + + egg_moves(NIDORAN_M, + MOVE_COUNTER, + MOVE_DISABLE, + MOVE_SUPERSONIC, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_CONFUSION, + MOVE_BEAT_UP), + + egg_moves(VULPIX, + MOVE_FAINT_ATTACK, + MOVE_HYPNOSIS, + MOVE_FLAIL, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_HOWL, + MOVE_PSYCH_UP, + MOVE_HEAT_WAVE), + + egg_moves(ZUBAT, + MOVE_QUICK_ATTACK, + MOVE_PURSUIT, + MOVE_FAINT_ATTACK, + MOVE_GUST, + MOVE_WHIRLWIND, + MOVE_CURSE), + + egg_moves(ODDISH, + MOVE_SWORDS_DANCE, + MOVE_RAZOR_LEAF, + MOVE_FLAIL, + MOVE_SYNTHESIS, + MOVE_CHARM, + MOVE_INGRAIN), + + egg_moves(PARAS, + MOVE_FALSE_SWIPE, + MOVE_SCREECH, + MOVE_COUNTER, + MOVE_PSYBEAM, + MOVE_FLAIL, + MOVE_SWEET_SCENT, + MOVE_LIGHT_SCREEN, + MOVE_PURSUIT), + + egg_moves(VENONAT, + MOVE_BATON_PASS, + MOVE_SCREECH, + MOVE_GIGA_DRAIN, + MOVE_SIGNAL_BEAM), + + egg_moves(DIGLETT, + MOVE_FAINT_ATTACK, + MOVE_SCREECH, + MOVE_ANCIENT_POWER, + MOVE_PURSUIT, + MOVE_BEAT_UP, + MOVE_UPROAR, + MOVE_ROCK_SLIDE), + + egg_moves(MEOWTH, + MOVE_SPITE, + MOVE_CHARM, + MOVE_HYPNOSIS, + MOVE_AMNESIA, + MOVE_PSYCH_UP, + MOVE_ASSIST), + + egg_moves(PSYDUCK, + MOVE_HYPNOSIS, + MOVE_PSYBEAM, + MOVE_FORESIGHT, + MOVE_LIGHT_SCREEN, + MOVE_FUTURE_SIGHT, + MOVE_PSYCHIC, + MOVE_CROSS_CHOP, + MOVE_REFRESH), + + egg_moves(MANKEY, + MOVE_ROCK_SLIDE, + MOVE_FORESIGHT, + MOVE_MEDITATE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_REVENGE, + MOVE_SMELLING_SALT), + + egg_moves(GROWLITHE, + MOVE_BODY_SLAM, + MOVE_SAFEGUARD, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_FIRE_SPIN, + MOVE_HOWL, + MOVE_HEAT_WAVE), + + egg_moves(POLIWAG, + MOVE_MIST, + MOVE_SPLASH, + MOVE_BUBBLE_BEAM, + MOVE_HAZE, + MOVE_MIND_READER, + MOVE_WATER_SPORT, + MOVE_ICE_BALL), + + egg_moves(ABRA, + MOVE_ENCORE, + MOVE_BARRIER, + MOVE_KNOCK_OFF, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(MACHOP, + MOVE_LIGHT_SCREEN, + MOVE_MEDITATE, + MOVE_ROLLING_KICK, + MOVE_ENCORE, + MOVE_SMELLING_SALT, + MOVE_COUNTER, + MOVE_ROCK_SLIDE), + + egg_moves(BELLSPROUT, + MOVE_SWORDS_DANCE, + MOVE_ENCORE, + MOVE_REFLECT, + MOVE_SYNTHESIS, + MOVE_LEECH_LIFE, + MOVE_INGRAIN, + MOVE_MAGICAL_LEAF), + + egg_moves(TENTACOOL, + MOVE_AURORA_BEAM, + MOVE_MIRROR_COAT, + MOVE_RAPID_SPIN, + MOVE_HAZE, + MOVE_SAFEGUARD, + MOVE_CONFUSE_RAY), + + egg_moves(GEODUDE, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_BLOCK), + + egg_moves(PONYTA, + MOVE_FLAME_WHEEL, + MOVE_THRASH, + MOVE_DOUBLE_KICK, + MOVE_HYPNOSIS, + MOVE_CHARM, + MOVE_DOUBLE_EDGE), + + egg_moves(SLOWPOKE, + MOVE_SAFEGUARD, + MOVE_BELLY_DRUM, + MOVE_FUTURE_SIGHT, + MOVE_STOMP, + MOVE_MUD_SPORT, + MOVE_SLEEP_TALK, + MOVE_SNORE), + + egg_moves(FARFETCHD, + MOVE_STEEL_WING, + MOVE_FORESIGHT, + MOVE_MIRROR_MOVE, + MOVE_GUST, + MOVE_QUICK_ATTACK, + MOVE_FLAIL, + MOVE_FEATHER_DANCE, + MOVE_CURSE), + + egg_moves(DODUO, + MOVE_QUICK_ATTACK, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_FAINT_ATTACK, + MOVE_FLAIL, + MOVE_ENDEAVOR), + + egg_moves(SEEL, + MOVE_LICK, + MOVE_PERISH_SONG, + MOVE_DISABLE, + MOVE_HORN_DRILL, + MOVE_SLAM, + MOVE_ENCORE, + MOVE_FAKE_OUT, + MOVE_ICICLE_SPEAR), + + egg_moves(GRIMER, + MOVE_HAZE, + MOVE_MEAN_LOOK, + MOVE_LICK, + MOVE_IMPRISON, + MOVE_CURSE, + MOVE_SHADOW_PUNCH, + MOVE_EXPLOSION), + + egg_moves(SHELLDER, + MOVE_BUBBLE_BEAM, + MOVE_TAKE_DOWN, + MOVE_BARRIER, + MOVE_RAPID_SPIN, + MOVE_SCREECH, + MOVE_ICICLE_SPEAR), + + egg_moves(GASTLY, + MOVE_PSYWAVE, + MOVE_PERISH_SONG, + MOVE_HAZE, + MOVE_ASTONISH, + MOVE_WILL_O_WISP, + MOVE_GRUDGE, + MOVE_EXPLOSION), + + egg_moves(ONIX, + MOVE_ROCK_SLIDE, + MOVE_FLAIL, + MOVE_EXPLOSION, + MOVE_BLOCK), + + egg_moves(DROWZEE, + MOVE_BARRIER, + MOVE_ASSIST, + MOVE_ROLE_PLAY, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(KRABBY, + MOVE_DIG, + MOVE_HAZE, + MOVE_AMNESIA, + MOVE_FLAIL, + MOVE_SLAM, + MOVE_KNOCK_OFF, + MOVE_SWORDS_DANCE), + + egg_moves(EXEGGCUTE, + MOVE_SYNTHESIS, + MOVE_MOONLIGHT, + MOVE_REFLECT, + MOVE_ANCIENT_POWER, + MOVE_PSYCH_UP, + MOVE_INGRAIN, + MOVE_CURSE), + + egg_moves(CUBONE, + MOVE_ROCK_SLIDE, + MOVE_ANCIENT_POWER, + MOVE_BELLY_DRUM, + MOVE_SCREECH, + MOVE_SKULL_BASH, + MOVE_PERISH_SONG, + MOVE_SWORDS_DANCE), + + egg_moves(LICKITUNG, + MOVE_BELLY_DRUM, + MOVE_MAGNITUDE, + MOVE_BODY_SLAM, + MOVE_CURSE, + MOVE_SMELLING_SALT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE), + + egg_moves(KOFFING, + MOVE_SCREECH, + MOVE_PSYWAVE, + MOVE_PSYBEAM, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_WILL_O_WISP), + + egg_moves(RHYHORN, + MOVE_CRUNCH, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_COUNTER, + MOVE_MAGNITUDE, + MOVE_SWORDS_DANCE, + MOVE_CURSE, + MOVE_CRUSH_CLAW), + + egg_moves(CHANSEY, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_HEAL_BELL, + MOVE_AROMATHERAPY, + MOVE_SUBSTITUTE), + + egg_moves(TANGELA, + MOVE_FLAIL, + MOVE_CONFUSION, + MOVE_MEGA_DRAIN, + MOVE_REFLECT, + MOVE_AMNESIA, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER), + + egg_moves(KANGASKHAN, + MOVE_STOMP, + MOVE_FORESIGHT, + MOVE_FOCUS_ENERGY, + MOVE_SAFEGUARD, + MOVE_DISABLE, + MOVE_COUNTER, + MOVE_CRUSH_CLAW, + MOVE_SUBSTITUTE), + + egg_moves(HORSEA, + MOVE_FLAIL, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_DISABLE, + MOVE_SPLASH, + MOVE_DRAGON_RAGE, + MOVE_DRAGON_BREATH), + + egg_moves(GOLDEEN, + MOVE_PSYBEAM, + MOVE_HAZE, + MOVE_HYDRO_PUMP, + MOVE_SLEEP_TALK, + MOVE_MUD_SPORT), + + egg_moves(MR_MIME, + MOVE_FUTURE_SIGHT, + MOVE_HYPNOSIS, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_TRICK), + + egg_moves(SCYTHER, + MOVE_COUNTER, + MOVE_SAFEGUARD, + MOVE_BATON_PASS, + MOVE_RAZOR_WIND, + MOVE_REVERSAL, + MOVE_LIGHT_SCREEN, + MOVE_ENDURE, + MOVE_SILVER_WIND), + + egg_moves(PINSIR, + MOVE_FURY_ATTACK, + MOVE_FLAIL, + MOVE_FALSE_SWIPE, + MOVE_FAINT_ATTACK), + + egg_moves(LAPRAS, + MOVE_FORESIGHT, + MOVE_SUBSTITUTE, + MOVE_TICKLE, + MOVE_REFRESH, + MOVE_DRAGON_DANCE, + MOVE_CURSE, + MOVE_SLEEP_TALK, + MOVE_HORN_DRILL), + + egg_moves(EEVEE, + MOVE_CHARM, + MOVE_FLAIL, + MOVE_ENDURE, + MOVE_CURSE, + MOVE_TICKLE, + MOVE_WISH), + + egg_moves(OMANYTE, + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_SLAM, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_ROCK_SLIDE, + MOVE_SPIKES), + + egg_moves(KABUTO, + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_RAPID_SPIN, + MOVE_DIG, + MOVE_FLAIL, + MOVE_KNOCK_OFF, + MOVE_CONFUSE_RAY), + + egg_moves(AERODACTYL, + MOVE_WHIRLWIND, + MOVE_PURSUIT, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_DRAGON_BREATH, + MOVE_CURSE), + + egg_moves(SNORLAX, + MOVE_LICK, + MOVE_CHARM, + MOVE_DOUBLE_EDGE, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_SUBSTITUTE), + + egg_moves(DRATINI, + MOVE_LIGHT_SCREEN, + MOVE_MIST, + MOVE_HAZE, + MOVE_SUPERSONIC, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE), + + egg_moves(CHIKORITA, + MOVE_VINE_WHIP, + MOVE_LEECH_SEED, + MOVE_COUNTER, + MOVE_ANCIENT_POWER, + MOVE_FLAIL, + MOVE_NATURE_POWER, + MOVE_INGRAIN, + MOVE_GRASS_WHISTLE), + + egg_moves(CYNDAQUIL, + MOVE_FURY_SWIPES, + MOVE_QUICK_ATTACK, + MOVE_REVERSAL, + MOVE_THRASH, + MOVE_FORESIGHT, + MOVE_COVET, + MOVE_HOWL, + MOVE_CRUSH_CLAW), + + egg_moves(TOTODILE, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_HYDRO_PUMP, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_MUD_SPORT, + MOVE_WATER_SPORT, + MOVE_DRAGON_CLAW), + + egg_moves(SENTRET, + MOVE_DOUBLE_EDGE, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_FOCUS_ENERGY, + MOVE_REVERSAL, + MOVE_SUBSTITUTE, + MOVE_TRICK, + MOVE_ASSIST), + + egg_moves(HOOTHOOT, + MOVE_MIRROR_MOVE, + MOVE_SUPERSONIC, + MOVE_FAINT_ATTACK, + MOVE_WING_ATTACK, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_FEATHER_DANCE), + + egg_moves(LEDYBA, + MOVE_PSYBEAM, + MOVE_BIDE, + MOVE_SILVER_WIND), + + egg_moves(SPINARAK, + MOVE_PSYBEAM, + MOVE_DISABLE, + MOVE_SONIC_BOOM, + MOVE_BATON_PASS, + MOVE_PURSUIT, + MOVE_SIGNAL_BEAM), + + egg_moves(CHINCHOU, + MOVE_FLAIL, + MOVE_SCREECH, + MOVE_AMNESIA), + + egg_moves(PICHU, + MOVE_REVERSAL, + MOVE_BIDE, + MOVE_PRESENT, + MOVE_ENCORE, + MOVE_DOUBLE_SLAP, + MOVE_WISH, + MOVE_CHARGE), + + egg_moves(CLEFFA, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_AMNESIA, + MOVE_BELLY_DRUM, + MOVE_SPLASH, + MOVE_MIMIC, + MOVE_WISH, + MOVE_SUBSTITUTE), + + egg_moves(IGGLYBUFF, + MOVE_PERISH_SONG, + MOVE_PRESENT, + MOVE_FAINT_ATTACK, + MOVE_WISH, + MOVE_FAKE_TEARS), + + egg_moves(TOGEPI, + MOVE_PRESENT, + MOVE_MIRROR_MOVE, + MOVE_PECK, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_SUBSTITUTE, + MOVE_PSYCH_UP), + + egg_moves(NATU, + MOVE_HAZE, + MOVE_DRILL_PECK, + MOVE_QUICK_ATTACK, + MOVE_FAINT_ATTACK, + MOVE_STEEL_WING, + MOVE_PSYCH_UP, + MOVE_FEATHER_DANCE, + MOVE_REFRESH), + + egg_moves(MAREEP, + MOVE_TAKE_DOWN, + MOVE_BODY_SLAM, + MOVE_SAFEGUARD, + MOVE_SCREECH, + MOVE_REFLECT, + MOVE_ODOR_SLEUTH, + MOVE_CHARGE), + + egg_moves(MARILL, + MOVE_LIGHT_SCREEN, + MOVE_PRESENT, + MOVE_AMNESIA, + MOVE_FUTURE_SIGHT, + MOVE_BELLY_DRUM, + MOVE_PERISH_SONG, + MOVE_SUPERSONIC, + MOVE_SUBSTITUTE), + + egg_moves(SUDOWOODO, + MOVE_SELF_DESTRUCT), + + egg_moves(HOPPIP, + MOVE_CONFUSION, + MOVE_ENCORE, + MOVE_DOUBLE_EDGE, + MOVE_REFLECT, + MOVE_AMNESIA, + MOVE_HELPING_HAND, + MOVE_PSYCH_UP), + + egg_moves(AIPOM, + MOVE_COUNTER, + MOVE_SCREECH, + MOVE_PURSUIT, + MOVE_AGILITY, + MOVE_SPITE, + MOVE_SLAM, + MOVE_DOUBLE_SLAP, + MOVE_BEAT_UP), + + egg_moves(SUNKERN, + MOVE_GRASS_WHISTLE, + MOVE_ENCORE, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER, + MOVE_CURSE, + MOVE_HELPING_HAND), + + egg_moves(YANMA, + MOVE_WHIRLWIND, + MOVE_REVERSAL, + MOVE_LEECH_LIFE, + MOVE_SIGNAL_BEAM, + MOVE_SILVER_WIND), + + egg_moves(WOOPER, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SAFEGUARD, + MOVE_CURSE, + MOVE_MUD_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP), + + egg_moves(MURKROW, + MOVE_WHIRLWIND, + MOVE_DRILL_PECK, + MOVE_MIRROR_MOVE, + MOVE_WING_ATTACK, + MOVE_SKY_ATTACK, + MOVE_CONFUSE_RAY, + MOVE_FEATHER_DANCE, + MOVE_PERISH_SONG), + + egg_moves(MISDREAVUS, + MOVE_SCREECH, + MOVE_DESTINY_BOND, + MOVE_PSYCH_UP, + MOVE_IMPRISON), + + egg_moves(GIRAFARIG, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_BEAT_UP, + MOVE_PSYCH_UP, + MOVE_WISH, + MOVE_MAGIC_COAT), + + egg_moves(PINECO, + MOVE_REFLECT, + MOVE_PIN_MISSILE, + MOVE_FLAIL, + MOVE_SWIFT, + MOVE_COUNTER, + MOVE_SAND_TOMB), + + egg_moves(DUNSPARCE, + MOVE_BIDE, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_BITE, + MOVE_HEADBUTT, + MOVE_ASTONISH, + MOVE_CURSE), + + egg_moves(GLIGAR, + MOVE_METAL_CLAW, + MOVE_WING_ATTACK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_SAND_TOMB), + + egg_moves(SNUBBULL, + MOVE_METRONOME, + MOVE_FAINT_ATTACK, + MOVE_REFLECT, + MOVE_PRESENT, + MOVE_CRUNCH, + MOVE_HEAL_BELL, + MOVE_SNORE, + MOVE_SMELLING_SALT), + + egg_moves(QWILFISH, + MOVE_FLAIL, + MOVE_HAZE, + MOVE_BUBBLE_BEAM, + MOVE_SUPERSONIC, + MOVE_ASTONISH), + + egg_moves(SHUCKLE, + MOVE_SWEET_SCENT), + + egg_moves(HERACROSS, + MOVE_HARDEN, + MOVE_BIDE, + MOVE_FLAIL, + MOVE_FALSE_SWIPE), + + egg_moves(SNEASEL, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_FORESIGHT, + MOVE_REFLECT, + MOVE_BITE, + MOVE_CRUSH_CLAW, + MOVE_FAKE_OUT), + + egg_moves(TEDDIURSA, + MOVE_CRUNCH, + MOVE_TAKE_DOWN, + MOVE_SEISMIC_TOSS, + MOVE_COUNTER, + MOVE_METAL_CLAW, + MOVE_FAKE_TEARS, + MOVE_YAWN, + MOVE_SLEEP_TALK), + + egg_moves(SLUGMA, + MOVE_ACID_ARMOR, + MOVE_HEAT_WAVE), + + egg_moves(SWINUB, + MOVE_TAKE_DOWN, + MOVE_BITE, + MOVE_BODY_SLAM, + MOVE_ROCK_SLIDE, + MOVE_ANCIENT_POWER, + MOVE_MUD_SHOT, + MOVE_ICICLE_SPEAR, + MOVE_DOUBLE_EDGE), + + egg_moves(CORSOLA, + MOVE_ROCK_SLIDE, + MOVE_SCREECH, + MOVE_MIST, + MOVE_AMNESIA, + MOVE_BARRIER, + MOVE_INGRAIN, + MOVE_CONFUSE_RAY, + MOVE_ICICLE_SPEAR), + + egg_moves(REMORAID, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_SCREECH, + MOVE_THUNDER_WAVE, + MOVE_ROCK_BLAST), + + egg_moves(DELIBIRD, + MOVE_AURORA_BEAM, + MOVE_QUICK_ATTACK, + MOVE_FUTURE_SIGHT, + MOVE_SPLASH, + MOVE_RAPID_SPIN, + MOVE_ICE_BALL), + + egg_moves(MANTINE, + MOVE_TWISTER, + MOVE_HYDRO_PUMP, + MOVE_HAZE, + MOVE_SLAM, + MOVE_MUD_SPORT, + MOVE_ROCK_SLIDE), + + egg_moves(SKARMORY, + MOVE_DRILL_PECK, + MOVE_PURSUIT, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_CURSE), + + egg_moves(HOUNDOUR, + MOVE_FIRE_SPIN, + MOVE_RAGE, + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_WILL_O_WISP), + + egg_moves(PHANPY, + MOVE_FOCUS_ENERGY, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SNORE, + MOVE_COUNTER, + MOVE_FISSURE), + + egg_moves(STANTLER, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_BITE, + MOVE_SWAGGER, + MOVE_PSYCH_UP, + MOVE_EXTRASENSORY), + + egg_moves(TYROGUE, + MOVE_RAPID_SPIN, + MOVE_HI_JUMP_KICK, + MOVE_MACH_PUNCH, + MOVE_MIND_READER, + MOVE_HELPING_HAND), + + egg_moves(SMOOCHUM, + MOVE_MEDITATE, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_WISH, + MOVE_ICE_PUNCH), + + egg_moves(ELEKID, + MOVE_KARATE_CHOP, + MOVE_BARRIER, + MOVE_ROLLING_KICK, + MOVE_MEDITATE, + MOVE_CROSS_CHOP, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(MAGBY, + MOVE_KARATE_CHOP, + MOVE_MEGA_PUNCH, + MOVE_BARRIER, + MOVE_SCREECH, + MOVE_CROSS_CHOP, + MOVE_THUNDER_PUNCH), + + egg_moves(MILTANK, + MOVE_PRESENT, + MOVE_REVERSAL, + MOVE_SEISMIC_TOSS, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_CURSE, + MOVE_HELPING_HAND, + MOVE_SLEEP_TALK), + + egg_moves(LARVITAR, + MOVE_PURSUIT, + MOVE_STOMP, + MOVE_OUTRAGE, + MOVE_FOCUS_ENERGY, + MOVE_ANCIENT_POWER, + MOVE_DRAGON_DANCE, + MOVE_CURSE), + + egg_moves(TREECKO, + MOVE_CRUNCH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_LEECH_SEED, + MOVE_DRAGON_BREATH, + MOVE_CRUSH_CLAW), + + egg_moves(TORCHIC, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_ENDURE, + MOVE_SWAGGER, + MOVE_ROCK_SLIDE, + MOVE_SMELLING_SALT), + + egg_moves(MUDKIP, + MOVE_REFRESH, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_STOMP, + MOVE_ICE_BALL, + MOVE_MIRROR_COAT), + + egg_moves(POOCHYENA, + MOVE_ASTONISH, + MOVE_POISON_FANG, + MOVE_COVET, + MOVE_LEER, + MOVE_YAWN), + + egg_moves(ZIGZAGOON, + MOVE_CHARM, + MOVE_PURSUIT, + MOVE_SUBSTITUTE, + MOVE_TICKLE, + MOVE_TRICK), + + egg_moves(LOTAD, + MOVE_SYNTHESIS, + MOVE_RAZOR_LEAF, + MOVE_SWEET_SCENT, + MOVE_LEECH_SEED, + MOVE_FLAIL, + MOVE_WATER_GUN), + + egg_moves(SEEDOT, + MOVE_LEECH_SEED, + MOVE_AMNESIA, + MOVE_QUICK_ATTACK, + MOVE_RAZOR_WIND, + MOVE_TAKE_DOWN, + MOVE_FALSE_SWIPE), + + egg_moves(NINCADA, + MOVE_ENDURE, + MOVE_FAINT_ATTACK, + MOVE_GUST, + MOVE_SILVER_WIND), + + egg_moves(TAILLOW, + MOVE_PURSUIT, + MOVE_SUPERSONIC, + MOVE_REFRESH, + MOVE_MIRROR_MOVE, + MOVE_RAGE, + MOVE_SKY_ATTACK), + + egg_moves(SHROOMISH, + MOVE_FAKE_TEARS, + MOVE_SWAGGER, + MOVE_CHARM, + MOVE_FALSE_SWIPE, + MOVE_HELPING_HAND), + + egg_moves(SPINDA, + MOVE_ENCORE, + MOVE_ROCK_SLIDE, + MOVE_ASSIST, + MOVE_DISABLE, + MOVE_BATON_PASS, + MOVE_WISH, + MOVE_TRICK, + MOVE_SMELLING_SALT), + + egg_moves(WINGULL, + MOVE_MIST, + MOVE_TWISTER, + MOVE_AGILITY, + MOVE_GUST, + MOVE_WATER_SPORT), + + egg_moves(SURSKIT, + MOVE_FORESIGHT, + MOVE_MUD_SHOT, + MOVE_PSYBEAM, + MOVE_HYDRO_PUMP, + MOVE_MIND_READER), + + egg_moves(WAILMER, + MOVE_DOUBLE_EDGE, + MOVE_THRASH, + MOVE_SWAGGER, + MOVE_SNORE, + MOVE_SLEEP_TALK, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_TICKLE), + + egg_moves(SKITTY, + MOVE_HELPING_HAND, + MOVE_PSYCH_UP, + MOVE_UPROAR, + MOVE_FAKE_TEARS, + MOVE_WISH, + MOVE_BATON_PASS, + MOVE_SUBSTITUTE, + MOVE_TICKLE), + + egg_moves(KECLEON, + MOVE_DISABLE, + MOVE_MAGIC_COAT, + MOVE_TRICK), + + egg_moves(NOSEPASS, + MOVE_MAGNITUDE, + MOVE_ROLLOUT, + MOVE_EXPLOSION), + + egg_moves(TORKOAL, + MOVE_ERUPTION, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_YAWN), + + egg_moves(SABLEYE, + MOVE_PSYCH_UP, + MOVE_RECOVER, + MOVE_MOONLIGHT), + + egg_moves(BARBOACH, + MOVE_THRASH, + MOVE_WHIRLPOOL, + MOVE_SPARK), + + egg_moves(LUVDISC, + MOVE_SPLASH, + MOVE_SUPERSONIC, + MOVE_WATER_SPORT, + MOVE_MUD_SPORT), + + egg_moves(CORPHISH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER), + + egg_moves(FEEBAS, + MOVE_MIRROR_COAT, + MOVE_DRAGON_BREATH, + MOVE_MUD_SPORT, + MOVE_HYPNOSIS, + MOVE_LIGHT_SCREEN, + MOVE_CONFUSE_RAY), + + egg_moves(CARVANHA, + MOVE_HYDRO_PUMP, + MOVE_DOUBLE_EDGE, + MOVE_THRASH), + + egg_moves(TRAPINCH, + MOVE_FOCUS_ENERGY, + MOVE_QUICK_ATTACK, + MOVE_GUST), + + egg_moves(MAKUHITA, + MOVE_FAINT_ATTACK, + MOVE_DETECT, + MOVE_FORESIGHT, + MOVE_HELPING_HAND, + MOVE_CROSS_CHOP, + MOVE_REVENGE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER), + + egg_moves(ELECTRIKE, + MOVE_CRUNCH, + MOVE_HEADBUTT, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_SWIFT), + + egg_moves(NUMEL, + MOVE_HOWL, + MOVE_SCARY_FACE, + MOVE_BODY_SLAM, + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_STOMP), + + egg_moves(SPHEAL, + MOVE_WATER_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_YAWN, + MOVE_ROCK_SLIDE, + MOVE_CURSE, + MOVE_FISSURE), + + egg_moves(CACNEA, + MOVE_GRASS_WHISTLE, + MOVE_ACID, + MOVE_TEETER_DANCE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER), + + egg_moves(SNORUNT, + MOVE_BLOCK, + MOVE_SPIKES), + + egg_moves(AZURILL, + MOVE_ENCORE, + MOVE_SING, + MOVE_REFRESH, + MOVE_SLAM, + MOVE_TICKLE), + + egg_moves(SPOINK, + MOVE_FUTURE_SIGHT, + MOVE_EXTRASENSORY, + MOVE_SUBSTITUTE, + MOVE_TRICK), + + egg_moves(PLUSLE, + MOVE_SUBSTITUTE, + MOVE_WISH), + + egg_moves(MINUN, + MOVE_SUBSTITUTE, + MOVE_WISH), + + egg_moves(MAWILE, + MOVE_SWORDS_DANCE, + MOVE_FALSE_SWIPE, + MOVE_POISON_FANG, + MOVE_PSYCH_UP, + MOVE_ANCIENT_POWER, + MOVE_TICKLE), + + egg_moves(MEDITITE, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_FORESIGHT, + MOVE_FAKE_OUT, + MOVE_BATON_PASS, + MOVE_DYNAMIC_PUNCH), + + egg_moves(SWABLU, + MOVE_AGILITY, + MOVE_HAZE, + MOVE_PURSUIT, + MOVE_RAGE), + + egg_moves(DUSKULL, + MOVE_IMPRISON, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_GRUDGE, + MOVE_MEMENTO, + MOVE_FAINT_ATTACK), + + egg_moves(ROSELIA, + MOVE_SPIKES, + MOVE_SYNTHESIS, + MOVE_PIN_MISSILE, + MOVE_COTTON_SPORE), + + egg_moves(SLAKOTH, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_BODY_SLAM, + MOVE_SNORE, + MOVE_CRUSH_CLAW, + MOVE_CURSE, + MOVE_SLEEP_TALK), + + egg_moves(GULPIN, + MOVE_DREAM_EATER, + MOVE_ACID_ARMOR, + MOVE_SMOG, + MOVE_PAIN_SPLIT), + + egg_moves(TROPIUS, + MOVE_HEADBUTT, + MOVE_SLAM, + MOVE_RAZOR_WIND, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER), + + egg_moves(WHISMUR, + MOVE_TAKE_DOWN, + MOVE_SNORE, + MOVE_SWAGGER, + MOVE_EXTRASENSORY, + MOVE_SMELLING_SALT), + + egg_moves(CLAMPERL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_BODY_SLAM, + MOVE_SUPERSONIC, + MOVE_BARRIER, + MOVE_CONFUSE_RAY), + + egg_moves(ABSOL, + MOVE_BATON_PASS, + MOVE_FAINT_ATTACK, + MOVE_DOUBLE_EDGE, + MOVE_MAGIC_COAT, + MOVE_CURSE, + MOVE_SUBSTITUTE), + + egg_moves(SHUPPET, + MOVE_DISABLE, + MOVE_DESTINY_BOND, + MOVE_FORESIGHT, + MOVE_ASTONISH, + MOVE_IMPRISON), + + egg_moves(SEVIPER, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_BODY_SLAM), + + egg_moves(ZANGOOSE, + MOVE_FLAIL, + MOVE_DOUBLE_KICK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_ROAR, + MOVE_CURSE), + + egg_moves(RELICANTH, + MOVE_MAGNITUDE, + MOVE_SKULL_BASH, + MOVE_WATER_SPORT, + MOVE_AMNESIA, + MOVE_SLEEP_TALK, + MOVE_ROCK_SLIDE), + + egg_moves(ARON, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_STOMP, + MOVE_SMELLING_SALT), + + egg_moves(CASTFORM, + MOVE_FUTURE_SIGHT, + MOVE_PSYCH_UP), + + egg_moves(VOLBEAT, + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_TRICK), + + egg_moves(ILLUMISE, + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_GROWTH), + + egg_moves(LILEEP, + MOVE_BARRIER, + MOVE_RECOVER, + MOVE_MIRROR_COAT, + MOVE_ROCK_SLIDE), + + egg_moves(ANORITH, + MOVE_RAPID_SPIN, + MOVE_KNOCK_OFF, + MOVE_SWORDS_DANCE, + MOVE_ROCK_SLIDE), + + egg_moves(RALTS, + MOVE_DISABLE, + MOVE_WILL_O_WISP, + MOVE_MEAN_LOOK, + MOVE_MEMENTO, + MOVE_DESTINY_BOND), + + egg_moves(BAGON, + MOVE_HYDRO_PUMP, + MOVE_THRASH, + MOVE_DRAGON_RAGE, + MOVE_TWISTER, + MOVE_DRAGON_DANCE), + + egg_moves(CHIMECHO, + MOVE_DISABLE, + MOVE_CURSE, + MOVE_HYPNOSIS, + MOVE_DREAM_EATER), + + 0xFFFF +}; diff --git a/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h index 51e993347..919416fee 100644 --- a/include/data/pokemon/evolution.h +++ b/include/data/pokemon/evolution.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_EVOLUTION_H diff --git a/include/data/pokemon/experience_tables.h b/include/data/pokemon/experience_tables.h index 70c5e88ed..2fb416fe9 100644 --- a/include/data/pokemon/experience_tables.h +++ b/include/data/pokemon/experience_tables.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_EXPERIENCE_TABLES_H diff --git a/include/data/pokemon/item_effects.h b/include/data/pokemon/item_effects.h index b07573933..cd06228dd 100644 --- a/include/data/pokemon/item_effects.h +++ b/include/data/pokemon/item_effects.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_ITEM_EFFECTS_H diff --git a/include/data/pokemon/level_up_learnset_pointers.h b/include/data/pokemon/level_up_learnset_pointers.h index 753947d51..19761c996 100644 --- a/include/data/pokemon/level_up_learnset_pointers.h +++ b/include/data/pokemon/level_up_learnset_pointers.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H diff --git a/include/data/pokemon/level_up_learnsets.h b/include/data/pokemon/level_up_learnsets.h index 5b79f4bc0..bc1de82de 100644 --- a/include/data/pokemon/level_up_learnsets.h +++ b/include/data/pokemon/level_up_learnsets.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_LEVEL_UP_LEARNSETS_H diff --git a/include/data/pokemon/nature_stats.h b/include/data/pokemon/nature_stats.h index 27bd98f9d..fcef2a0ac 100644 --- a/include/data/pokemon/nature_stats.h +++ b/include/data/pokemon/nature_stats.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_NATURE_STATS_H diff --git a/include/data/pokemon/spinda_spots.h b/include/data/pokemon/spinda_spots.h index 234cdf00e..d045e0734 100644 --- a/include/data/pokemon/spinda_spots.h +++ b/include/data/pokemon/spinda_spots.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_SPINDA_SPOTS_H diff --git a/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h index fa48f7f5c..02cd22d56 100644 --- a/include/data/pokemon/tmhm_learnsets.h +++ b/include/data/pokemon/tmhm_learnsets.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_TMHM_LEARNSETS_H diff --git a/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h index 0aea322a0..c86e795c4 100644 --- a/include/data/pokemon/trainer_class_lookups.h +++ b/include/data/pokemon/trainer_class_lookups.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_TRAINER_CLASS_LOOKUPS_H diff --git a/include/data2.h b/include/data2.h index 9dd26fd5f..53a90944d 100644 --- a/include/data2.h +++ b/include/data2.h @@ -3,12 +3,7 @@ #include "sprite.h" -struct UnknownStructD2 -{ - u32 unk0; - u32 unk4; - u32 unk8; -}; +struct UnknownTaskStruct; struct MonCoords { @@ -44,8 +39,10 @@ extern u8 gEnemyMonElevation[]; extern const u8 gTrainerClassNames[][13]; extern const struct Trainer gTrainers[]; extern u8 gSpeciesNames[][11]; -extern u8 gMoveNames[][13]; -extern const struct UnknownStructD2 gUnknown_081F9674; +extern const u8 gMoveNames[][13]; +extern const u8 gAbilityNames[][13]; +extern const u8 gTypeNames[][7]; +extern const struct UnknownTaskStruct gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; extern struct CompressedSpriteSheet gUnknown_081FAEA4; extern struct CompressedSpritePalette gUnknown_081FAEAC; diff --git a/include/daycare.h b/include/daycare.h index b90c50610..e46351d72 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -1,14 +1,15 @@ #ifndef GUARD_DAYCARE_H #define GUARD_DAYCARE_H -u8 Daycare_CountPokemon(struct BoxPokemon *); -void sub_8041324(struct BoxPokemon *, struct RecordMixing_UnknownStruct *); -void sub_8041790(int i); +u8 Daycare_CountPokemon(struct DayCareData *); +void sub_8041324(struct BoxPokemon *, struct RecordMixingDayCareMail *); +void sub_8041790(u16 i); u16 sub_8041870(u16); void sub_8041940(void); void sub_8041950(void); void sub_8042044(struct Pokemon *mon, u16, u8); u8 sub_80422A0(void); u8 daycare_relationship_score_from_savegame(void); +bool8 NameHasGenderSymbol(const u8 *, u8); #endif // GUARD_DAYCARE_H diff --git a/include/decompress.h b/include/decompress.h index 07d69301f..01f66971c 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -3,14 +3,14 @@ #include "sprite.h" -void sub_800D238(const void *src, void *dest); +void LZDecompressWram(const void *src, void *dest); void LZDecompressVram(const void *src, void *dest); void LoadCompressedObjectPic(const struct CompressedSpriteSheet *a); void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *a, void *buffer); void LoadCompressedObjectPalette(const struct CompressedSpritePalette *a); void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); void DecompressPicFromTable_2(const struct CompressedSpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f); -void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g); +void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 pid); void LoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 h); void Unused_LZDecompressWramIndirect(const void **src, void *dest); diff --git a/include/diploma.h b/include/diploma.h index 81e9e3bb2..8d730fa05 100644 --- a/include/diploma.h +++ b/include/diploma.h @@ -1,6 +1,6 @@ #ifndef GUARD_DIPLOMA_H #define GUARD_DIPLOMA_H -void sub_8145D88(void); +void CB2_ShowDiploma(void); #endif // GUARD_DIPLOMA_H diff --git a/include/easy_chat.h b/include/easy_chat.h index 03e9bb737..8a820353f 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -1,7 +1,8 @@ #ifndef GUARD_EASYCHAT_H #define GUARD_EASYCHAT_H -enum { +enum +{ EC_GROUP_POKEMON, EC_GROUP_TRAINER, EC_GROUP_STATUS, @@ -26,6 +27,1045 @@ enum { EC_GROUP_POKEMON_2, }; +enum { + EC_WORD_I_CHOOSE_YOU = EC_GROUP_TRAINER << 9, + EC_WORD_GOTCHA, + EC_WORD_TRADE, + EC_WORD_SAPPHIRE, + EC_WORD_EVOLVE, + EC_WORD_ENCYCLOPEDIA, + EC_WORD_NATURE, + EC_WORD_CENTER, + EC_WORD_EGG, + EC_WORD_LINK, + EC_WORD_SP_ABILITY, + EC_WORD_TRAINER, + EC_WORD_VERSION, + EC_WORD_POKENAV, + EC_WORD_POKEMON, + EC_WORD_GET, + EC_WORD_POKEDEX, + EC_WORD_RUBY, + EC_WORD_LEVEL +}; +enum { + EC_WORD_DARK = EC_GROUP_STATUS << 9, + EC_WORD_STENCH, + EC_WORD_THICK_FAT, + EC_WORD_RAIN_DISH, + EC_WORD_DRIZZLE, + EC_WORD_ARENA_TRAP, + EC_WORD_INTIMIDATE, + EC_WORD_ROCK_HEAD, + EC_WORD_COLOR, + EC_WORD_ALT_COLOR, + EC_WORD_ROCK, + EC_WORD_BEAUTIFUL, + EC_WORD_BEAUTY, + EC_WORD_AIR_LOCK, + EC_WORD_PSYCHIC, + EC_WORD_HYPER_CUTTER, + EC_WORD_FIGHTING, + EC_WORD_SHADOW_TAG, + EC_WORD_SMART, + EC_WORD_SMARTNESS, + EC_WORD_SPEED_BOOST, + EC_WORD_COOL, + EC_WORD_COOLNESS, + EC_WORD_BATTLE_ARMOR, + EC_WORD_CUTE, + EC_WORD_CUTENESS, + EC_WORD_STURDY, + EC_WORD_SUCTION_CUPS, + EC_WORD_GRASS, + EC_WORD_CLEAR_BODY, + EC_WORD_TORRENT, + EC_WORD_GHOST, + EC_WORD_ICE, + EC_WORD_GUTS, + EC_WORD_ROUGH_SKIN, + EC_WORD_SHELL_ARMOR, + EC_WORD_NATURAL_CURE, + EC_WORD_DAMP, + EC_WORD_GROUND, + EC_WORD_LIMBER, + EC_WORD_MAGNET_PULL, + EC_WORD_WHITE_SMOKE, + EC_WORD_SYNCHRONIZE, + EC_WORD_OVERGROW, + EC_WORD_SWIFT_SWIM, + EC_WORD_SAND_STREAM, + EC_WORD_SAND_VEIL, + EC_WORD_KEEN_EYE, + EC_WORD_INNER_FOCUS, + EC_WORD_STATIC, + EC_WORD_TYPE, + EC_WORD_TOUGH, + EC_WORD_TOUGHNESS, + EC_WORD_SHED_SKIN, + EC_WORD_HUGE_POWER, + EC_WORD_VOLT_ABSORB, + EC_WORD_WATER_ABSORB, + EC_WORD_ELECTRIC, + EC_WORD_FORECAST, + EC_WORD_SERENE_GRACE, + EC_WORD_POISON, + EC_WORD_POISON_POINT, + EC_WORD_DRAGON, + EC_WORD_TRACE, + EC_WORD_OBLIVIOUS, + EC_WORD_TRUANT, + EC_WORD_RUN_AWAY, + EC_WORD_STICKY_HOLD, + EC_WORD_CLOUD_NINE, + EC_WORD_NORMAL, + EC_WORD_STEEL, + EC_WORD_ILLUMINATE, + EC_WORD_EARLY_BIRD, + EC_WORD_HUSTLE, + EC_WORD_SHINE, + EC_WORD_FLYING, + EC_WORD_DROUGHT, + EC_WORD_LIGHTNINGROD, + EC_WORD_COMPOUNDEYES, + EC_WORD_MARVEL_SCALE, + EC_WORD_WONDER_GUARD, + EC_WORD_INSOMNIA, + EC_WORD_LEVITATE, + EC_WORD_PLUS, + EC_WORD_PRESSURE, + EC_WORD_LIQUID_OOZE, + EC_WORD_COLOR_CHANGE, + EC_WORD_SOUNDPROOF, + EC_WORD_EFFECT_SPORE, + EC_WORD_PKRS, + EC_WORD_FIRE, + EC_WORD_FLAME_BODY, + EC_WORD_MINUS, + EC_WORD_OWN_TEMPO, + EC_WORD_MAGMA_ARMOR, + EC_WORD_WATER, + EC_WORD_WATER_VEIL, + EC_WORD_BUG, + EC_WORD_SWARM, + EC_WORD_CUTE_CHARM, + EC_WORD_IMMUNITY, + EC_WORD_BLAZE, + EC_WORD_PICKUP, + EC_WORD_PATTERN, + EC_WORD_FLASH_FIRE, + EC_WORD_VITAL_SPIRIT, + EC_WORD_CHLOROPHYLL, + EC_WORD_PURE_POWER, + EC_WORD_SHIELD_DUST, +}; +enum { + EC_WORD_MATCH_UP = EC_GROUP_BATTLE << 9, + EC_WORD_GO, + EC_WORD_NO_1, + EC_WORD_DECIDE, + EC_WORD_LET_ME_WIN, + EC_WORD_WINS, + EC_WORD_WIN, + EC_WORD_WON, + EC_WORD_IF_I_WIN, + EC_WORD_WHEN_I_WIN, + EC_WORD_CAN_T_WIN, + EC_WORD_CAN_WIN, + EC_WORD_NO_MATCH, + EC_WORD_SPIRIT, + EC_WORD_DECIDED, + EC_WORD_TRUMP_CARD, + EC_WORD_TAKE_THAT, + EC_WORD_COME_ON, + EC_WORD_ATTACK, + EC_WORD_SURRENDER, + EC_WORD_GUTSY, + EC_WORD_TALENT, + EC_WORD_STRATEGY, + EC_WORD_SMITE, + EC_WORD_MATCH, + EC_WORD_VICTORY, + EC_WORD_OFFENSIVE, + EC_WORD_SENSE, + EC_WORD_VERSUS, + EC_WORD_FIGHTS, + EC_WORD_POWER, + EC_WORD_CHALLENGE, + EC_WORD_STRONG, + EC_WORD_TOO_STRONG, + EC_WORD_GO_EASY, + EC_WORD_FOE, + EC_WORD_GENIUS, + EC_WORD_LEGEND, + EC_WORD_ESCAPE, + EC_WORD_AIM, + EC_WORD_BATTLE, + EC_WORD_FIGHT, + EC_WORD_RESUSCITATE, + EC_WORD_POINTS, + EC_WORD_SERIOUS, + EC_WORD_GIVE_UP, + EC_WORD_LOSS, + EC_WORD_IF_I_LOSE, + EC_WORD_LOST, + EC_WORD_LOSE, + EC_WORD_GUARD, + EC_WORD_PARTNER, + EC_WORD_REJECT, + EC_WORD_ACCEPT, + EC_WORD_INVINCIBLE, + EC_WORD_RECEIVED, + EC_WORD_EASY, + EC_WORD_WEAK, + EC_WORD_TOO_WEAK, + EC_WORD_PUSHOVER, + EC_WORD_LEADER, + EC_WORD_RULE, + EC_WORD_MOVE +}; +enum { + EC_WORD_THANKS = EC_GROUP_GREETINGS << 9, + EC_WORD_YES, + EC_WORD_HERE_GOES, + EC_WORD_HERE_I_COME, + EC_WORD_HERE_IT_IS, + EC_WORD_YEAH, + EC_WORD_WELCOME, + EC_WORD_OI, + EC_WORD_HOW_DO, + EC_WORD_CONGRATS, + EC_WORD_GIVE_ME, + EC_WORD_SORRY, + EC_WORD_APOLOGIZE, + EC_WORD_FORGIVE, + EC_WORD_HEY_THERE, + EC_WORD_HELLO, + EC_WORD_GOOD_BYE, + EC_WORD_THANK_YOU, + EC_WORD_I_VE_ARRIVED, + EC_WORD_PARDON, + EC_WORD_EXCUSE, + EC_WORD_SEE_YA, + EC_WORD_EXCUSE_ME, + EC_WORD_WELL_THEN, + EC_WORD_GO_AHEAD, + EC_WORD_APPRECIATE, + EC_WORD_HEY_QUES, + EC_WORD_WHAT_S_UP_QUES, + EC_WORD_HUH_QUES, + EC_WORD_NO, + EC_WORD_HI, + EC_WORD_YEAH_YEAH, + EC_WORD_BYE_BYE, + EC_WORD_MEET_YOU, + EC_WORD_HEY, + EC_WORD_SMELL, + EC_WORD_LISTENING, + EC_WORD_HOO_HAH, + EC_WORD_YAHOO, + EC_WORD_YO, + EC_WORD_COME_OVER, + EC_WORD_COUNT_ON +}; +enum { + EC_WORD_OPPONENT = EC_GROUP_PEOPLE << 9, + EC_WORD_I, + EC_WORD_YOU, + EC_WORD_YOURS, + EC_WORD_SON, + EC_WORD_YOUR, + EC_WORD_YOU_RE, + EC_WORD_YOU_VE, + EC_WORD_MOTHER, + EC_WORD_GRANDFATHER, + EC_WORD_UNCLE, + EC_WORD_FATHER, + EC_WORD_BOY, + EC_WORD_ADULT, + EC_WORD_BROTHER, + EC_WORD_SISTER, + EC_WORD_GRANDMOTHER, + EC_WORD_AUNT, + EC_WORD_PARENT, + EC_WORD_MAN, + EC_WORD_ME, + EC_WORD_GIRL, + EC_WORD_BABE, + EC_WORD_FAMILY, + EC_WORD_HER, + EC_WORD_HIM, + EC_WORD_HE, + EC_WORD_PLACE, + EC_WORD_DAUGHTER, + EC_WORD_HIS, + EC_WORD_HE_S, + EC_WORD_AREN_T, + EC_WORD_SIBLINGS, + EC_WORD_KID, + EC_WORD_CHILDREN, + EC_WORD_MR, + EC_WORD_MRS, + EC_WORD_MYSELF, + EC_WORD_I_WAS, + EC_WORD_TO_ME, + EC_WORD_MY, + EC_WORD_I_AM, + EC_WORD_I_VE, + EC_WORD_WHO, + EC_WORD_SOMEONE, + EC_WORD_WHO_WAS, + EC_WORD_TO_WHOM, + EC_WORD_WHOSE, + EC_WORD_WHO_IS, + EC_WORD_IT_S, + EC_WORD_LADY, + EC_WORD_FRIEND, + EC_WORD_ALLY, + EC_WORD_PERSON, + EC_WORD_DUDE, + EC_WORD_THEY, + EC_WORD_THEY_WERE, + EC_WORD_TO_THEM, + EC_WORD_THEIR, + EC_WORD_THEY_RE, + EC_WORD_THEY_VE, + EC_WORD_WE, + EC_WORD_BEEN, + EC_WORD_TO_US, + EC_WORD_OUR, + EC_WORD_WE_RE, + EC_WORD_RIVAL, + EC_WORD_WE_VE, + EC_WORD_WOMAN, + EC_WORD_SHE, + EC_WORD_SHE_WAS, + EC_WORD_TO_HER, + EC_WORD_HERS, + EC_WORD_SHE_IS, + EC_WORD_SOME +}; +enum { + EC_WORD_EXCL = EC_GROUP_VOICES << 9, + EC_WORD_EXCL_EXCL, + EC_WORD_QUES_EXCL, + EC_WORD_QUES, + EC_WORD_ELLIPSIS, + EC_WORD_ELLIPSIS_EXCL, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_DASH, + EC_WORD_DASH_DASH_DASH, + EC_WORD_UH_OH, + EC_WORD_WAAAH, + EC_WORD_AHAHA, + EC_WORD_OH_QUES, + EC_WORD_NOPE, + EC_WORD_URGH, + EC_WORD_HMM, + EC_WORD_WHOAH, + EC_WORD_WROOOAAR_EXCL, + EC_WORD_WOW, + EC_WORD_GIGGLE, + EC_WORD_SIGH, + EC_WORD_UNBELIEVABLE, + EC_WORD_CRIES, + EC_WORD_AGREE, + EC_WORD_EH_QUES, + EC_WORD_CRY, + EC_WORD_EHEHE, + EC_WORD_OI_OI_OI, + EC_WORD_OH_YEAH, + EC_WORD_OH, + EC_WORD_OOPS, + EC_WORD_SHOCKED, + EC_WORD_EEK, + EC_WORD_GRAAAH, + EC_WORD_GWAHAHAHA, + EC_WORD_WAY, + EC_WORD_TCH, + EC_WORD_HEHE, + EC_WORD_HAH, + EC_WORD_YUP, + EC_WORD_HAHAHA, + EC_WORD_AIYEEH, + EC_WORD_HIYAH, + EC_WORD_FUFUFU, + EC_WORD_LOL, + EC_WORD_SNORT, + EC_WORD_HUMPH, + EC_WORD_HEHEHE, + EC_WORD_HEH, + EC_WORD_HOHOHO, + EC_WORD_UH_HUH, + EC_WORD_OH_DEAR, + EC_WORD_ARRGH, + EC_WORD_MUFUFU, + EC_WORD_MMM, + EC_WORD_OH_KAY, + EC_WORD_OKAY, + EC_WORD_LALALA, + EC_WORD_YAY, + EC_WORD_AWW, + EC_WORD_WOWEE, + EC_WORD_GWAH, + EC_WORD_WAHAHAHA +}; +enum { + EC_WORD_LISTEN = EC_GROUP_SPEECH << 9, + EC_WORD_NOT_VERY, + EC_WORD_MEAN, + EC_WORD_LIE, + EC_WORD_LAY, + EC_WORD_RECOMMEND, + EC_WORD_NITWIT, + EC_WORD_QUITE, + EC_WORD_FROM, + EC_WORD_FEELING, + EC_WORD_BUT, + EC_WORD_HOWEVER, + EC_WORD_CASE, + EC_WORD_THE, + EC_WORD_MISS, + EC_WORD_HOW, + EC_WORD_HIT, + EC_WORD_ENOUGH, + EC_WORD_A_LOT, + EC_WORD_A_LITTLE, + EC_WORD_ABSOLUTELY, + EC_WORD_AND, + EC_WORD_ONLY, + EC_WORD_AROUND, + EC_WORD_PROBABLY, + EC_WORD_IF, + EC_WORD_VERY, + EC_WORD_A_TINY_BIT, + EC_WORD_WILD, + EC_WORD_THAT_S, + EC_WORD_JUST, + EC_WORD_EVEN_SO, + EC_WORD_MUST_BE, + EC_WORD_NATURALLY, + EC_WORD_FOR_NOW, + EC_WORD_UNDERSTOOD, + EC_WORD_JOKING, + EC_WORD_READY, + EC_WORD_SOMETHING, + EC_WORD_SOMEHOW, + EC_WORD_ALTHOUGH, + EC_WORD_ALSO, + EC_WORD_PERFECT, + EC_WORD_AS_MUCH_AS, + EC_WORD_REALLY, + EC_WORD_TRULY, + EC_WORD_SERIOUSLY, + EC_WORD_TOTALLY, + EC_WORD_UNTIL, + EC_WORD_AS_IF, + EC_WORD_MOOD, + EC_WORD_RATHER, + EC_WORD_AWFULLY, + EC_WORD_MODE, + EC_WORD_MORE, + EC_WORD_TOO_LATE, + EC_WORD_FINALLY, + EC_WORD_ANY, + EC_WORD_INSTEAD, + EC_WORD_FANTASTIC +}; +enum { + EC_WORD_WILL = EC_GROUP_ENDINGS << 9, + EC_WORD_WILL_BE_HERE, + EC_WORD_OR, + EC_WORD_TIMES, + EC_WORD_WONDER, + EC_WORD_IS_IT_QUES, + EC_WORD_BE, + EC_WORD_GIMME, + EC_WORD_COULD, + EC_WORD_LIKELY_TO, + EC_WORD_WOULD, + EC_WORD_IS, + EC_WORD_ISN_T_IT_QUES, + EC_WORD_LET_S, + EC_WORD_OTHER, + EC_WORD_ARE, + EC_WORD_WAS, + EC_WORD_WERE, + EC_WORD_THOSE, + EC_WORD_ISN_T, + EC_WORD_WON_T, + EC_WORD_CAN_T, + EC_WORD_CAN, + EC_WORD_DON_T, + EC_WORD_DO, + EC_WORD_DOES, + EC_WORD_WHOM, + EC_WORD_WHICH, + EC_WORD_WASN_T, + EC_WORD_WEREN_T, + EC_WORD_HAVE, + EC_WORD_HAVEN_T, + EC_WORD_A, + EC_WORD_AN, + EC_WORD_NOT, + EC_WORD_THERE, + EC_WORD_OK_QUES, + EC_WORD_SO, + EC_WORD_MAYBE, + EC_WORD_ABOUT, + EC_WORD_OVER, + EC_WORD_IT, + EC_WORD_ALL, + EC_WORD_FOR, + EC_WORD_ON, + EC_WORD_OFF, + EC_WORD_AS, + EC_WORD_TO, + EC_WORD_WITH, + EC_WORD_BETTER, + EC_WORD_EVER, + EC_WORD_SINCE, + EC_WORD_OF, + EC_WORD_BELONGS_TO, + EC_WORD_AT, + EC_WORD_IN, + EC_WORD_OUT, + EC_WORD_TOO, + EC_WORD_LIKE, + EC_WORD_DID, + EC_WORD_DIDN_T, + EC_WORD_DOESN_T, + EC_WORD_WITHOUT, + EC_WORD_AFTER, + EC_WORD_BEFORE, + EC_WORD_WHILE, + EC_WORD_THAN, + EC_WORD_ONCE, + EC_WORD_ANYWHERE +}; +enum { + EC_WORD_MEET = EC_GROUP_FEELINGS << 9, + EC_WORD_PLAY, + EC_WORD_HURRIED, + EC_WORD_GOES, + EC_WORD_GIDDY, + EC_WORD_HAPPY, + EC_WORD_HAPPINESS, + EC_WORD_EXCITE, + EC_WORD_IMPORTANT, + EC_WORD_FUNNY, + EC_WORD_GOT, + EC_WORD_GO_HOME, + EC_WORD_DISAPPOINTED, + EC_WORD_DISAPPOINTS, + EC_WORD_SAD, + EC_WORD_TRY, + EC_WORD_TRIES, + EC_WORD_HEARS, + EC_WORD_THINK, + EC_WORD_HEAR, + EC_WORD_WANTS, + EC_WORD_MISHEARD, + EC_WORD_DISLIKE, + EC_WORD_ANGRY, + EC_WORD_ANGER, + EC_WORD_SCARY, + EC_WORD_LONESOME, + EC_WORD_DISAPPOINT, + EC_WORD_JOY, + EC_WORD_GETS, + EC_WORD_NEVER, + EC_WORD_DARN, + EC_WORD_DOWNCAST, + EC_WORD_INCREDIBLE, + EC_WORD_LIKES, + EC_WORD_DISLIKES, + EC_WORD_BORING, + EC_WORD_CARE, + EC_WORD_CARES, + EC_WORD_ALL_RIGHT, + EC_WORD_ADORE, + EC_WORD_DISASTER, + EC_WORD_ENJOY, + EC_WORD_ENJOYS, + EC_WORD_EAT, + EC_WORD_LACKING, + EC_WORD_BAD, + EC_WORD_HARD, + EC_WORD_TERRIBLE, + EC_WORD_SHOULD, + EC_WORD_NICE, + EC_WORD_DRINK, + EC_WORD_SURPRISE, + EC_WORD_FEAR, + EC_WORD_WANT, + EC_WORD_WAIT, + EC_WORD_SATISFIED, + EC_WORD_SEE, + EC_WORD_RARE, + EC_WORD_NEGATIVE, + EC_WORD_DONE, + EC_WORD_DANGER, + EC_WORD_DEFEATED, + EC_WORD_BEAT, + EC_WORD_GREAT, + EC_WORD_ROMANTIC, + EC_WORD_QUESTION, + EC_WORD_UNDERSTAND, + EC_WORD_UNDERSTANDS +}; +enum { + EC_WORD_HOT = EC_GROUP_CONDITIONS << 9, + EC_WORD_EXISTS, + EC_WORD_EXCESS, + EC_WORD_APPROVED, + EC_WORD_HAS, + EC_WORD_GOOD, + EC_WORD_LESS, + EC_WORD_MOMENTUM, + EC_WORD_GOING, + EC_WORD_WEIRD, + EC_WORD_BUSY, + EC_WORD_TOGETHER, + EC_WORD_FULL, + EC_WORD_ABSENT, + EC_WORD_BEING, + EC_WORD_NEED, + EC_WORD_TASTY, + EC_WORD_SKILLED, + EC_WORD_NOISY, + EC_WORD_BIG, + EC_WORD_LATE, + EC_WORD_CLOSE, + EC_WORD_DOCILE, + EC_WORD_AMUSING, + EC_WORD_ENTERTAINING, + EC_WORD_PERFECTION, + EC_WORD_PRETTY, + EC_WORD_HEALTHY, + EC_WORD_EXCELLENT, + EC_WORD_UPSIDE_DOWN, + EC_WORD_COLD, + EC_WORD_REFRESHING, + EC_WORD_UNAVOIDABLE, + EC_WORD_MUCH, + EC_WORD_OVERWHELMING, + EC_WORD_FABULOUS, + EC_WORD_ELSE, + EC_WORD_EXPENSIVE, + EC_WORD_CORRECT, + EC_WORD_IMPOSSIBLE, + EC_WORD_SMALL, + EC_WORD_DIFFERENT, + EC_WORD_TIRED, + EC_WORD_SKILL, + EC_WORD_TOP, + EC_WORD_NON_STOP, + EC_WORD_PREPOSTEROUS, + EC_WORD_NONE, + EC_WORD_NOTHING, + EC_WORD_NATURAL, + EC_WORD_BECOMES, + EC_WORD_LUKEWARM, + EC_WORD_FAST, + EC_WORD_LOW, + EC_WORD_AWFUL, + EC_WORD_ALONE, + EC_WORD_BORED, + EC_WORD_SECRET, + EC_WORD_MYSTERY, + EC_WORD_LACKS, + EC_WORD_BEST, + EC_WORD_LOUSY, + EC_WORD_MISTAKE, + EC_WORD_KIND, + EC_WORD_WELL, + EC_WORD_WEAKENED, + EC_WORD_SIMPLE, + EC_WORD_SEEMS, + EC_WORD_BADLY +}; +enum { + EC_WORD_MEETS = EC_GROUP_ACTIONS << 9, + EC_WORD_CONCEDE, + EC_WORD_GIVE, + EC_WORD_GIVES, + EC_WORD_PLAYED, + EC_WORD_PLAYS, + EC_WORD_COLLECT, + EC_WORD_WALKING, + EC_WORD_WALKS, + EC_WORD_SAYS, + EC_WORD_WENT, + EC_WORD_SAID, + EC_WORD_WAKE_UP, + EC_WORD_WAKES_UP, + EC_WORD_ANGERS, + EC_WORD_TEACH, + EC_WORD_TEACHES, + EC_WORD_PLEASE, + EC_WORD_LEARN, + EC_WORD_CHANGE, + EC_WORD_STORY, + EC_WORD_TRUST, + EC_WORD_LAVISH, + EC_WORD_LISTENS, + EC_WORD_HEARING, + EC_WORD_TRAINS, + EC_WORD_CHOOSE, + EC_WORD_COME, + EC_WORD_CAME, + EC_WORD_SEARCH, + EC_WORD_MAKE, + EC_WORD_CAUSE, + EC_WORD_KNOW, + EC_WORD_KNOWS, + EC_WORD_REFUSE, + EC_WORD_STORES, + EC_WORD_BRAG, + EC_WORD_IGNORANT, + EC_WORD_THINKS, + EC_WORD_BELIEVE, + EC_WORD_SLIDE, + EC_WORD_EATS, + EC_WORD_USE, + EC_WORD_USES, + EC_WORD_USING, + EC_WORD_COULDN_T, + EC_WORD_CAPABLE, + EC_WORD_DISAPPEAR, + EC_WORD_APPEAR, + EC_WORD_THROW, + EC_WORD_WORRY, + EC_WORD_SLEPT, + EC_WORD_SLEEP, + EC_WORD_RELEASE, + EC_WORD_DRINKS, + EC_WORD_RUNS, + EC_WORD_RUN, + EC_WORD_WORKS, + EC_WORD_WORKING, + EC_WORD_TALKING, + EC_WORD_TALK, + EC_WORD_SINK, + EC_WORD_SMACK, + EC_WORD_PRETEND, + EC_WORD_PRAISE, + EC_WORD_OVERDO, + EC_WORD_SHOW, + EC_WORD_LOOKS, + EC_WORD_SEES, + EC_WORD_SEEK, + EC_WORD_OWN, + EC_WORD_TAKE, + EC_WORD_ALLOW, + EC_WORD_FORGET, + EC_WORD_FORGETS, + EC_WORD_APPEARS, + EC_WORD_FAINT, + EC_WORD_FAINTED +}; +enum { + EC_WORD_CHORES = EC_GROUP_LIFESTYLE << 9, + EC_WORD_HOME, + EC_WORD_MONEY, + EC_WORD_ALLOWANCE, + EC_WORD_BATH, + EC_WORD_CONVERSATION, + EC_WORD_SCHOOL, + EC_WORD_COMMEMORATE, + EC_WORD_HABIT, + EC_WORD_GROUP, + EC_WORD_WORD, + EC_WORD_STORE, + EC_WORD_SERVICE, + EC_WORD_WORK, + EC_WORD_SYSTEM, + EC_WORD_TRAIN, + EC_WORD_CLASS, + EC_WORD_LESSONS, + EC_WORD_INFORMATION, + EC_WORD_LIVING, + EC_WORD_TEACHER, + EC_WORD_TOURNAMENT, + EC_WORD_LETTER, + EC_WORD_EVENT, + EC_WORD_DIGITAL, + EC_WORD_TEST, + EC_WORD_DEPT_STORE, + EC_WORD_TELEVISION, + EC_WORD_PHONE, + EC_WORD_ITEM, + EC_WORD_NAME, + EC_WORD_NEWS, + EC_WORD_POPULAR, + EC_WORD_PARTY, + EC_WORD_STUDY, + EC_WORD_MACHINE, + EC_WORD_MAIL, + EC_WORD_MESSAGE, + EC_WORD_PROMISE, + EC_WORD_DREAM, + EC_WORD_KINDERGARTEN, + EC_WORD_LIFE, + EC_WORD_RADIO, + EC_WORD_RENTAL, + EC_WORD_WORLD +}; +enum { + EC_WORD_IDOL = EC_GROUP_HOBBIES << 9, + EC_WORD_ANIME, + EC_WORD_SONG, + EC_WORD_MOVIE, + EC_WORD_SWEETS, + EC_WORD_CHAT, + EC_WORD_CHILD_S_PLAY, + EC_WORD_TOYS, + EC_WORD_MUSIC, + EC_WORD_CARDS, + EC_WORD_SHOPPING, + EC_WORD_CAMERA, + EC_WORD_VIEWING, + EC_WORD_SPECTATOR, + EC_WORD_GOURMET, + EC_WORD_GAME, + EC_WORD_RPG, + EC_WORD_COLLECTION, + EC_WORD_COMPLETE, + EC_WORD_MAGAZINE, + EC_WORD_WALK, + EC_WORD_BIKE, + EC_WORD_HOBBY, + EC_WORD_SPORTS, + EC_WORD_SOFTWARE, + EC_WORD_SONGS, + EC_WORD_DIET, + EC_WORD_TREASURE, + EC_WORD_TRAVEL, + EC_WORD_DANCE, + EC_WORD_CHANNEL, + EC_WORD_MAKING, + EC_WORD_FISHING, + EC_WORD_DATE, + EC_WORD_DESIGN, + EC_WORD_LOCOMOTIVE, + EC_WORD_PLUSH_DOLL, + EC_WORD_PC, + EC_WORD_FLOWERS, + EC_WORD_HERO, + EC_WORD_NAP, + EC_WORD_HEROINE, + EC_WORD_FASHION, + EC_WORD_ADVENTURE, + EC_WORD_BOARD, + EC_WORD_BALL, + EC_WORD_BOOK, + EC_WORD_FESTIVAL, + EC_WORD_COMICS, + EC_WORD_HOLIDAY, + EC_WORD_PLANS, + EC_WORD_TRENDY, + EC_WORD_VACATION, + EC_WORD_LOOK +}; +enum { + EC_WORD_FALL = EC_GROUP_TIME << 9, + EC_WORD_MORNING, + EC_WORD_TOMORROW, + EC_WORD_LAST, + EC_WORD_DAY, + EC_WORD_SOMETIME, + EC_WORD_ALWAYS, + EC_WORD_CURRENT, + EC_WORD_FOREVER, + EC_WORD_DAYS, + EC_WORD_END, + EC_WORD_TUESDAY, + EC_WORD_YESTERDAY, + EC_WORD_TODAY, + EC_WORD_FRIDAY, + EC_WORD_MONDAY, + EC_WORD_LATER, + EC_WORD_EARLIER, + EC_WORD_ANOTHER, + EC_WORD_TIME, + EC_WORD_FINISH, + EC_WORD_WEDNESDAY, + EC_WORD_SOON, + EC_WORD_START, + EC_WORD_MONTH, + EC_WORD_STOP, + EC_WORD_NOW, + EC_WORD_FINAL, + EC_WORD_NEXT, + EC_WORD_AGE, + EC_WORD_SATURDAY, + EC_WORD_SUMMER, + EC_WORD_SUNDAY, + EC_WORD_BEGINNING, + EC_WORD_SPRING, + EC_WORD_DAYTIME, + EC_WORD_WINTER, + EC_WORD_DAILY, + EC_WORD_OLDEN, + EC_WORD_ALMOST, + EC_WORD_NEARLY, + EC_WORD_THURSDAY, + EC_WORD_NIGHTTIME, + EC_WORD_NIGHT, + EC_WORD_WEEK +}; +enum { + EC_WORD_HIGHS = EC_GROUP_MISC << 9, + EC_WORD_LOWS, + EC_WORD_UM, + EC_WORD_REAR, + EC_WORD_THINGS, + EC_WORD_THING, + EC_WORD_BELOW, + EC_WORD_ABOVE, + EC_WORD_BACK, + EC_WORD_HIGH, + EC_WORD_HERE, + EC_WORD_INSIDE, + EC_WORD_OUTSIDE, + EC_WORD_BESIDE, + EC_WORD_THIS_IS_IT_EXCL, + EC_WORD_THIS, + EC_WORD_EVERY, + EC_WORD_THESE, + EC_WORD_THESE_WERE, + EC_WORD_DOWN, + EC_WORD_THAT, + EC_WORD_THOSE_ARE, + EC_WORD_THOSE_WERE, + EC_WORD_THAT_S_IT_EXCL, + EC_WORD_AM, + EC_WORD_THAT_WAS, + EC_WORD_FRONT, + EC_WORD_UP, + EC_WORD_CHOICE, + EC_WORD_FAR, + EC_WORD_AWAY, + EC_WORD_NEAR, + EC_WORD_WHERE, + EC_WORD_WHEN, + EC_WORD_WHAT, + EC_WORD_DEEP, + EC_WORD_SHALLOW, + EC_WORD_WHY, + EC_WORD_CONFUSED, + EC_WORD_OPPOSITE, + EC_WORD_LEFT, + EC_WORD_RIGHT +}; +enum { + EC_WORD_WANDERING = EC_GROUP_ADJECTIVES << 9, + EC_WORD_RICKETY, + EC_WORD_ROCK_SOLID, + EC_WORD_HUNGRY, + EC_WORD_TIGHT, + EC_WORD_TICKLISH, + EC_WORD_TWIRLING, + EC_WORD_SPIRALING, + EC_WORD_THIRSTY, + EC_WORD_LOLLING, + EC_WORD_SILKY, + EC_WORD_SADLY, + EC_WORD_HOPELESS, + EC_WORD_USELESS, + EC_WORD_DROOLING, + EC_WORD_EXCITING, + EC_WORD_THICK, + EC_WORD_SMOOTH, + EC_WORD_SLIMY, + EC_WORD_THIN, + EC_WORD_BREAK, + EC_WORD_VORACIOUS, + EC_WORD_SCATTER, + EC_WORD_AWESOME, + EC_WORD_WIMPY, + EC_WORD_WOBBLY, + EC_WORD_SHAKY, + EC_WORD_RIPPED, + EC_WORD_SHREDDED, + EC_WORD_INCREASING, + EC_WORD_YET, + EC_WORD_DESTROYED, + EC_WORD_FIERY, + EC_WORD_LOVEY_DOVEY, + EC_WORD_HAPPILY, + EC_WORD_ANTICIPATION +}; +enum { + EC_WORD_APPEAL = EC_GROUP_EVENTS << 9, + EC_WORD_EVENTS, + EC_WORD_STAY_AT_HOME, + EC_WORD_BERRY, + EC_WORD_CONTEST, + EC_WORD_MC, + EC_WORD_JUDGE, + EC_WORD_SUPER, + EC_WORD_STAGE, + EC_WORD_HALL_OF_FAME, + EC_WORD_EVOLUTION, + EC_WORD_HYPER, + EC_WORD_BATTLE_TOWER, + EC_WORD_LEADERS, + EC_WORD_BATTLE_ROOM, + EC_WORD_HIDDEN, + EC_WORD_SECRET_BASE, + EC_WORD_BLEND, + EC_WORD_POKEBLOCK, + EC_WORD_MASTER, + EC_WORD_RANK, + EC_WORD_RIBBON +}; +enum { + EC_WORD_KTHX_BYE = EC_GROUP_TRENDY_SAYING << 9, + EC_WORD_YES_SIR_EXCL, + EC_WORD_AVANT_GARDE, + EC_WORD_COUPLE, + EC_WORD_MUCH_OBLIGED, + EC_WORD_YEEHAW_EXCL, + EC_WORD_MEGA, + EC_WORD_1_HIT_KO_EXCL, + EC_WORD_DESTINY, + EC_WORD_CANCEL, + EC_WORD_NEW, + EC_WORD_FLATTEN, + EC_WORD_KIDDING, + EC_WORD_LOSER, + EC_WORD_LOSING, + EC_WORD_HAPPENING, + EC_WORD_HIP_AND, + EC_WORD_SHAKE, + EC_WORD_SHADY, + EC_WORD_UPBEAT, + EC_WORD_MODERN, + EC_WORD_SMELL_YA, + EC_WORD_BANG, + EC_WORD_KNOCKOUT, + EC_WORD_HASSLE, + EC_WORD_WINNER, + EC_WORD_FEVER, + EC_WORD_WANNABE, + EC_WORD_BABY, + EC_WORD_HEART, + EC_WORD_OLD, + EC_WORD_YOUNG, + EC_WORD_UGLY +}; + +#define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon) +#define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon) +#define EC_MOVE(move) ((EC_GROUP_MOVE_1 << 9) | MOVE_##move) +#define EC_MOVE2(move) ((EC_GROUP_MOVE_2 << 9) | MOVE_##move) + +#define EC_GROUP(word) ((word) >> 9) +#define EC_INDEX(word) ((word) & 0x1FF) + +extern u8 gUnknown_020388AC; u16 sub_80EB72C(u16 group); void sub_80EB6FC(u16 *, u16); @@ -33,7 +1073,7 @@ void InitEasyChatPhrases(void); u8 sub_80EAD7C(u8 group); u16 sub_80EAE88(u8); u8 sub_80EB37C(u16); -u8* sub_80EB3FC(u8 *, u16); +u8* EasyChat_GetWordText(u8 *, u16); u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16); u16 sub_80EB784(u16 group); u8 sub_80EB868(u8); diff --git a/include/event_data.h b/include/event_data.h index 98e4a6da3..ae048af4c 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -22,7 +22,7 @@ bool8 VarSet(u16 id, u16 value); u8 VarGetFieldObjectGraphicsId(u8 id); u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); -u8 FlagReset(u16 id); +u8 FlagClear(u16 id); bool8 FlagGet(u16 id); extern u16 gSpecialVar_0x8000; diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h new file mode 100644 index 000000000..a960f637b --- /dev/null +++ b/include/evolution_graphics.h @@ -0,0 +1,15 @@ +#ifndef GUARD_EVOLUTION_GRAPHICS_H +#define GUARD_EVOLUTION_GRAPHICS_H + +void LoadEvoSparkleSpriteAndPal(void); + +u8 LaunchTask_PreEvoSparklesSet1(u16 arg0); +u8 LaunchTask_PreEvoSparklesSet2(void); +u8 LaunchTask_PostEvoSparklesSet1(void); +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species); +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species); +u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID); + +#define EvoGraphicsTaskEvoStop data[8] + +#endif // GUARD_EVOLUTION_GRAPHICS_H diff --git a/include/evolution_scene.h b/include/evolution_scene.h new file mode 100644 index 000000000..48bd6ebe1 --- /dev/null +++ b/include/evolution_scene.h @@ -0,0 +1,10 @@ +#ifndef GUARD_EVOLUTION_SCENE_H +#define GUARD_EVOLUTION_SCENE_H + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); + +extern void (*gCB2_AfterEvolution)(void); + +#endif // GUARD_EVOLUTION_SCENE_H diff --git a/include/field_camera.h b/include/field_camera.h index 4ce207541..17126d190 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -11,7 +11,7 @@ struct CameraSomething s32 unk14; }; -extern struct Camera gUnknown_0202E844; +extern struct Camera gCamera; void move_tilemap_camera_to_upper_left_corner(void); void sub_8057A58(void); diff --git a/include/field_door.h b/include/field_door.h index 1759e0dc1..31fdd154b 100644 --- a/include/field_door.h +++ b/include/field_door.h @@ -20,6 +20,6 @@ void FieldSetDoorClosed(u32, u32); s8 FieldAnimateDoorClose(u32, u32); s8 FieldAnimateDoorOpen(u32, u32); bool8 FieldIsDoorAnimationRunning(void); -u32 sub_8058790(u32 x, u32 y); +u32 GetDoorSoundEffect(u32 x, u32 y); #endif diff --git a/include/field_effect.h b/include/field_effect.h index bf80ca0dc..a509697e4 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -130,6 +130,8 @@ void PokeballGlowEffect_5(struct Sprite *); void PokeballGlowEffect_6(struct Sprite *); void PokeballGlowEffect_7(struct Sprite *); +void sub_8086748(void); + bool8 sub_80867AC(struct Task *); bool8 sub_8086854(struct Task *); bool8 sub_8086870(struct Task *); @@ -138,6 +140,8 @@ bool8 sub_808699C(struct Task *); bool8 sub_80869B8(struct Task *); bool8 sub_80869F8(struct Task *); +void sub_8086A2C(u8, u8); + bool8 sub_8086AA0(struct Task *); bool8 sub_8086AC0(struct Task *); bool8 sub_8086B30(struct Task *); @@ -163,6 +167,8 @@ bool8 sub_8087124(struct Task *); bool8 dive_2_unknown(struct Task *); bool8 dive_3_unknown(struct Task *); +void sub_80871B8(u8); + bool8 sub_808722C(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_8087264(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_8087298(struct Task *, struct MapObject *, struct Sprite *); @@ -175,6 +181,8 @@ bool8 sub_80874FC(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_8087548(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_808759C(struct Task *, struct MapObject *, struct Sprite *); +void sub_8087654(u8); + bool8 sub_80876C8(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_80876F8(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_8087774(struct Task *, struct MapObject *, struct Sprite *); @@ -236,7 +244,7 @@ void sub_808948C(struct Task *); void sub_80894C4(struct Task *); void fishE(struct Task *); -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer); +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest); u8 CreateBirchSprite(s16 x, s16 y, u8 subpriority); u8 CreateMonSprite_PicBox(u16, s16, s16, u8); @@ -245,6 +253,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); void sub_80878A8(void); void sub_8087BA8(void); -extern u32 gUnknown_0202FF84[8]; +extern u32 gFieldEffectArguments[8]; #endif // GUARD_FIELD_EFFECT_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index a1dd53a2b..7bba24fa6 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -1,6 +1,8 @@ #ifndef GUARD_FIELD_EFFECT_HELPERS_H #define GUARD_FIELD_EFFECT_HELPERS_H +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; + void sub_812869C(struct MapObject *); bool8 sub_81286C4(struct MapObject *); void oamc_shadow(struct Sprite *); @@ -26,6 +28,9 @@ void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y); void sub_8127ED0(u8, u8); void sub_8127F28(u8, u8, s16); u8 sub_8128124(u8 id); -void ash(s16, s16, u16, u8); +void ash(s16, s16, u16, s16); +void SetUpReflection(struct MapObject *mapObj, struct Sprite *sprite, u8 a); +u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject); +u8 sub_8126FF0(u8, u8, u8, s16, s16); #endif // GUARD_FIELD_EFFECT_HELPERS_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 764adfc9a..111dc92a6 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -16,7 +16,7 @@ void sub_8080B60(void); void atk17_seteffectuser(void); void sub_8080E28(void); void sub_8080E44(void); -int sub_8080E70(void); +bool32 sub_8080E70(void); void sub_8080E88(void); void sub_8080E88(); void sp13E_warp_to_last_warp(void); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index d2a1a9b1f..641a28ed3 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -3,6 +3,8 @@ #include "sprite.h" +extern const u8 gUnknown_0830FD14[]; + #define fieldmap_object_cb(setup, callback, table) \ static u8 callback(struct MapObject *, struct Sprite *);\ void setup(struct Sprite *sprite)\ @@ -54,17 +56,15 @@ u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3); u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3); u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); +u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8(u8)); extern struct CameraSomething gUnknown_03004880; extern u16 gUnknown_03004898; @@ -318,7 +318,7 @@ u8 get_go_fast_image_anim_num(u8); u8 get_go_faster_image_anim_num(u8); u8 sub_805FD78(u8); -int state_to_direction(u8, u8, u8); +u32 state_to_direction(u8, u32, u32); void sub_805AA98(); void sub_805AAB0(void); @@ -379,14 +379,14 @@ u8 sub_805FDF8(u8); u8 sub_805FE08(u8); void npc_set_running_behaviour_etc(struct MapObject *, u8); u8 npc_running_behaviour_by_direction(u8); -u8 npc_block_way(struct MapObject *, s16, s16, u8); +u8 npc_block_way(struct MapObject *, s16, s16, u32); u8 sub_8060024(struct MapObject *, s16, s16, u8); u8 sub_8060234(u8, u8, u8); void sub_8060288(u8, u8, u8); void sub_8060388(s16, s16, s16 *, s16 *); void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1); void GetFieldObjectMovingCameraOffset(s16 *, s16 *); -void FieldObjectMoveDestCoords(struct MapObject *pObject, u8 unk_19, s16 *pInt, s16 *pInt1); +void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *); bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8); @@ -396,21 +396,23 @@ void FieldObjectClearAnim(struct MapObject *); bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *); u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); u8 FieldObjectGetSpecialAnim(struct MapObject *); -u8 GetFaceDirectionAnimId(u8); -u8 GetSimpleGoAnimId(u8); -u8 GetGoSpeed0AnimId(u8 a); -u8 sub_8060744(u8 a); -u8 d2s_08064034(u8 a); -u8 sub_806079C(u8 a); -u8 sub_80607F4(u8 a); -u8 GetJumpLedgeAnimId(u8 a); -u8 sub_806084C(u8); -u8 sub_8060878(u8); -u8 sub_80608D0(u8); -u8 GetStepInPlaceDelay32AnimId(u8 a); -u8 GetStepInPlaceDelay16AnimId(u8); -u8 GetStepInPlaceDelay8AnimId(u8 a); -u8 GetStepInPlaceDelay4AnimId(u8 a); +u8 GetFaceDirectionAnimId(u32); +u8 GetSimpleGoAnimId(u32); +u8 GetGoSpeed0AnimId(u32); +u8 sub_8060744(u32); +u8 d2s_08064034(u32); +u8 sub_806079C(u32); +u8 sub_80607C8(u32); +u8 sub_80607F4(u32); +u8 GetJumpLedgeAnimId(u32); +u8 sub_806084C(u32); +u8 sub_8060878(u32); +u8 sub_80608A4(u32); +u8 sub_80608D0(u32); +u8 GetStepInPlaceDelay32AnimId(u32); +u8 GetStepInPlaceDelay16AnimId(u32); +u8 GetStepInPlaceDelay8AnimId(u32); +u8 GetStepInPlaceDelay4AnimId(u32); u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); u8 sub_80609D8(u8); u8 sub_8060A04(u8); @@ -427,5 +429,9 @@ void sub_80634D0(struct MapObject *, struct Sprite *); u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8); void CameraObjectSetFollowedObjectId(u8); u8 sub_805ADDC(u8); +void sub_8060320(u32, s16 *, s16 *, s16, s16); +u8 obj_unfreeze(struct Sprite *, s16, s16, u8); +u16 npc_paltag_by_palslot(u8); +void sub_8060470(s16 *, s16 *, s16, s16); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index fd29a9a7f..f760bf153 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -18,4 +18,6 @@ void DoShadowFieldEffect(struct MapObject *mapObject); u8 sub_8064704(struct Sprite *); u8 sub_806478C(struct Sprite *); void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3); +void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite); + #endif diff --git a/include/field_poison.h b/include/field_poison.h index 8e8e2746f..df0b31434 100644 --- a/include/field_poison.h +++ b/include/field_poison.h @@ -1,6 +1,6 @@ #ifndef GUARD_FIELD_POISON_H #define GUARD_FIELD_POISON_H -s32 overworld_poison(void); +s32 DoPoisonFieldEffect(void); #endif // GUARD_FIELD_POISON_H diff --git a/include/field_special_scene.h b/include/field_special_scene.h index ef3f07120..d674f09df 100644 --- a/include/field_special_scene.h +++ b/include/field_special_scene.h @@ -9,5 +9,6 @@ void Task_Truck3(u8 taskId); void Task_HandleTruckSequence(u8 taskId); void ExecuteTruckSequence(void); void EndTruckSequence(u8); +void sub_80C791C(void); #endif // GUARD_FIELD_SPECIAL_SCENE_H diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index 572b77711..ff92fcc40 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -404,10 +404,6 @@ void SampleFreqSet(u32 freq); void m4aSoundVSyncOn(void); void m4aSoundVSyncOff(void); -void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); -void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch); -void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan); void ClearModM(struct MusicPlayerTrack *track); void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth); void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed); diff --git a/include/gba/macro.h b/include/gba/macro.h index 230fb4383..1e0254806 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -84,4 +84,38 @@ dmaRegs[5]; \ } +#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, (block)); \ + _src += (block); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) + +#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) + +#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ +} + +#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16) +#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32) + #endif // GUARD_GBA_MACRO_H diff --git a/include/gba/types.h b/include/gba/types.h index 96e057ab7..480619d21 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -39,11 +39,11 @@ struct PlttData struct OamData { /*0x00*/ u32 y:8; - /*0x01*/ u32 affineMode:2; - u32 objMode:2; - u32 mosaic:1; - u32 bpp:1; - u32 shape:2; + /*0x01*/ u32 affineMode:2; // 0x1, 0x2 = 0x3 + u32 objMode:2; // 0x4, 0x8 = 0xC + u32 mosaic:1; // 0x10 + u32 bpp:1; // 0x20 + u32 shape:2; // 0x40, 0x80 /*0x02*/ u32 x:9; u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 4029132e8..5c93eb8ab 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -14,16 +14,16 @@ enum // map types enum { - MAP_TYPE_0, - MAP_TYPE_TOWN, - MAP_TYPE_CITY, - MAP_TYPE_ROUTE, - MAP_TYPE_UNDERGROUND, - MAP_TYPE_UNDERWATER, - MAP_TYPE_6, - MAP_TYPE_7, - MAP_TYPE_INDOOR, - MAP_TYPE_SECRET_BASE + MAP_TYPE_0, // 0 + MAP_TYPE_TOWN, // 1 + MAP_TYPE_CITY, // 2 + MAP_TYPE_ROUTE, // 3 + MAP_TYPE_UNDERGROUND, // 4 + MAP_TYPE_UNDERWATER, // 5 + MAP_TYPE_6, // 6 + MAP_TYPE_7, // 7 + MAP_TYPE_INDOOR, // 8 + MAP_TYPE_SECRET_BASE // 9 }; // map battle scenes diff --git a/include/global.h b/include/global.h index 73f73093d..f0eb7401f 100644 --- a/include/global.h +++ b/include/global.h @@ -37,6 +37,7 @@ fndec\ #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) +#define POKEMON_SLOTS_NUMBER 412 #define POKEMON_NAME_LENGTH 10 #define OT_NAME_LENGTH 7 @@ -447,43 +448,69 @@ struct MailStruct /*0x20*/ u16 itemId; }; -struct UnkMauvilleOldManStruct + +// Mauville Pokemon Center men + +struct MauvilleManCommon { - u8 unk_2D94; - u8 unk_2D95; - /*0x2D96*/ u16 mauvilleOldMan_ecArray[6]; - /*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6]; - /*0x2DAE*/ u8 playerName[8]; - /*0x2DB6*/ u8 filler_2DB6[0x3]; - /*0x2DB9*/ u8 playerTrainerId[4]; - u8 unk_2DBD; -}; /*size = 0x2C*/ + u8 id; +}; -struct UnkMauvilleOldManStruct2 +struct MauvilleManBard { - u8 filler0; - u8 unk1; - u8 unk2; - u16 mauvilleOldMan_ecArray[10]; - u8 mauvilleOldMan_ecArray2[12]; - u8 fillerF[0x2]; + /*0x00*/ u8 id; + /*0x02*/ u16 songLyrics[6]; + /*0x0E*/ u16 temporaryLyrics[6]; + /*0x1A*/ u8 playerName[8]; + /*0x22*/ u8 filler_2DB6[0x3]; + /*0x25*/ u8 playerTrainerId[4]; + /*0x29*/ bool8 hasChangedSong; }; /*size = 0x2C*/ -struct MauvilleOldManTrader +struct MauvilleManHipster { - u8 unk0; + u8 id; + bool8 alreadySpoken; +}; + +struct MauvilleManTrader +{ + u8 id; u8 unk1[4]; u8 unk5[4][11]; - u8 unk31; + bool8 alreadyTraded; }; -typedef union OldMan +struct MauvilleManStoryteller { - struct UnkMauvilleOldManStruct oldMan1; - struct UnkMauvilleOldManStruct2 oldMan2; - struct MauvilleOldManTrader trader; - u8 filler[0x40]; -} OldMan; + u8 id; + bool8 alreadyRecorded; + u8 filler2[2]; + u8 gameStatIDs[4]; + u8 trainerNames[4][7]; + u8 statValues[4][4]; +}; + +struct MauvilleManGiddy +{ + /*0x00*/ u8 id; + /*0x01*/ u8 taleCounter; + /*0x02*/ u8 questionNum; + /*0x04*/ u16 randomWords[10]; + /*0x18*/ u8 questionList[12]; +}; /*size = 0x2C*/ + + +union MauvilleMan +{ + struct MauvilleManCommon common; + struct MauvilleManBard bard; + struct MauvilleManHipster hipster; + struct MauvilleManTrader trader; + struct MauvilleManStoryteller storyteller; + struct MauvilleManGiddy giddy; + u8 filler[0x40]; // needed to pad out the struct +}; struct Unk_SB_Access_Struct1 { @@ -534,18 +561,34 @@ struct GabbyAndTyData /*2b1b*/ u8 valB_5:3; }; -struct RecordMixing_UnknownStructSub +struct DayCareMail { - u32 unk0; - u8 data[0x34]; - //u8 data[0x38]; + /*0x00*/ struct MailStruct message; + /*0x24*/ u8 names[19]; }; -struct RecordMixing_UnknownStruct +struct DayCareStepCountersEtc { + u32 steps[2]; + u16 personalityLo; + u8 unk_11a; +}; + +struct RecordMixingDayCareMail { - struct RecordMixing_UnknownStructSub data[2]; + struct DayCareMail mail[2]; u32 unk70; - u16 unk74[0x2]; + u16 unk74[2]; +}; + +struct DayCareMisc +{ + struct DayCareMail mail[2]; + struct DayCareStepCountersEtc countersEtc; +}; + +struct DayCareData { + struct BoxPokemon mons[2]; + struct DayCareMisc misc; }; struct LinkBattleRecord @@ -557,18 +600,37 @@ struct LinkBattleRecord u16 draws; }; +struct RecordMixingGiftData +{ + u8 unk0; + u8 quantity; + u16 itemId; + u8 filler4[8]; +}; + +struct RecordMixingGift +{ + int checksum; + struct RecordMixingGiftData data; +}; + +// there should be enough flags for all 412 slots +// each slot takes up 8 flags +// if the value is not divisible by 8, we need to account for the reminder as well +#define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0)) + struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; /*0x04*/ struct WarpData location; /*0x0C*/ struct WarpData warp1; /*0x14*/ struct WarpData warp2; - /*0x1C*/ struct WarpData warp3; + /*0x1C*/ struct WarpData lastHealLocation; /*0x24*/ struct WarpData warp4; - /*0x2C*/ u16 battleMusic; + /*0x2C*/ u16 savedMusic; /*0x2E*/ u8 weather; /*0x2F*/ u8 filler_2F; - /*0x30*/ u8 flashUsed; + /*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest /*0x32*/ u16 mapDataId; /*0x34*/ u16 mapView[0x100]; /*0x234*/ u8 playerPartyCount; @@ -583,7 +645,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x640*/ struct ItemSlot bagPocket_TMHM[64]; /*0x740*/ struct ItemSlot bagPocket_Berries[46]; /*0x7F8*/ struct Pokeblock pokeblocks[40]; - /*0x938*/ u8 unk938[52]; // pokedex related + /*0x938*/ u8 dexSeen2[DEX_FLAGS_NO]; /*0x96C*/ u16 berryBlenderRecords[3]; /*0x972*/ u8 filler_972[0x6]; /*0x978*/ u16 trainerRematchStepCounter; @@ -626,24 +688,20 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2B4C*/ struct MailStruct mail[16]; /*0x2D8C*/ u8 unk2D8C[4]; /*0x2D90*/ u8 filler_2D90[0x4]; - /*0x2D94*/ OldMan oldMan; + /*0x2D94*/ union MauvilleMan mauvilleMan; /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff /*0x2DFC*/ u8 filler_2DFC[0x8]; /*0x2E04*/ SB_Struct sbStruct; - /*0x2F9C*/ struct BoxPokemon daycareData[2]; - /*0x303C*/ struct RecordMixing_UnknownStruct filler_303C; - /*0x30AC*/ u8 filler_30B4[0x2]; - /*0x30B6*/ u8 filler_30B6; - /*0x30B7*/ u8 filler_30B7[1]; + /*0x2F9C*/ struct DayCareData daycareData; /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x3108*/ u8 filler_3108[8]; - /*0x3110*/ u8 giftRibbons[7]; - /*0x3117*/ u8 filler_311B[0x2D]; + /*0x3110*/ u8 giftRibbons[11]; + /*0x3117*/ u8 filler_311B[0x29]; /*0x3144*/ struct Roamer roamer; /*0x3160*/ struct EnigmaBerry enigmaBerry; /*0x3690*/ struct RamScript ramScript; - /*0x3A7C*/ u8 filler_3A7C[0x10]; - /*0x3A8C*/ u8 unk3A8C[52]; //pokedex related + /*0x3A7C*/ struct RecordMixingGift recordMixingGift; + /*0x3A8C*/ u8 dexSeen3[DEX_FLAGS_NO]; }; extern struct SaveBlock1 gSaveBlock1; @@ -665,8 +723,8 @@ struct Pokedex /*0x04*/ u32 unownPersonality; // set when you first see Unown /*0x08*/ u32 spindaPersonality; // set when you first see Spinda /*0x0C*/ u32 unknown3; - /*0x10*/ u8 owned[52]; - /*0x44*/ u8 seen[52]; + /*0x10*/ u8 owned[DEX_FLAGS_NO]; + /*0x44*/ u8 seen[DEX_FLAGS_NO]; }; struct SaveBlock2_Sub @@ -674,7 +732,8 @@ struct SaveBlock2_Sub /*0x0000, 0x00A8*/ u8 filler_000[0x3D8]; /*0x03D8, 0x0480*/ u16 var_480; /*0x03DA, 0x0482*/ u16 var_482; - /*0x03DC, 0x0484*/ u8 filler_3DC[0xD0]; + /*0x03DC, 0x0484*/ u8 filler_3DC[0x14]; + /*0x03F0, 0x0498*/ u8 ereaderTrainer[0xBC]; /*0x04AC, 0x0554*/ u8 var_4AC; /*0x04AD, 0x0555*/ u8 var_4AD; /*0x04AE, 0x0556*/ u8 var_4AE[2]; diff --git a/include/graphics.h b/include/graphics.h index 5632cb831..f3a722b40 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2564,4 +2564,13 @@ extern const u8 gUnknown_08E8CFC0[]; extern const u8 gUnknown_08E8D4C0[]; extern const u8 gUnknown_08E8D9C0[]; +extern const u8 gUnknown_08EA1DEC[]; +extern const u16 gUnknown_08EA0328[]; +extern const u16 gUnknown_08EA02C8[]; +extern const u16 gUnknown_08EA0348[]; +extern const u16 gUnknown_08EA15C8[]; +extern const u16 gTradeMonBoxTilemap[]; +extern const u8 gUnknown_08D00000[]; +extern const u16 gUnknown_08D00524[]; +extern const u8 gUnknown_08D004E0[]; #endif // GUARD_GRAPHICS_H diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h index 5abb2381b..2718d2f9f 100644 --- a/include/intro_credits_graphics.h +++ b/include/intro_credits_graphics.h @@ -10,15 +10,16 @@ extern const struct SpritePalette gIntro2SpritePalettes[]; extern const struct CompressedSpriteSheet gUnknown_08416E24; extern const struct CompressedSpriteSheet gUnknown_08416E34; -void load_intro_part2_graphics(/*TODO: arg types*/); -void sub_8148C78(/*TODO: arg types*/); +void load_intro_part2_graphics(u8 a); +void sub_8148C78(u8 a); void sub_8148CB0(u8); void sub_8148E90(u8); -u8 sub_8148EC0(/*TODO: arg types*/); -void sub_8149020(/*TODO: arg types*/); -u8 intro_create_brendan_sprite(/*TODO: arg types*/); -u8 intro_create_may_sprite(/*TODO: arg types*/); -u8 intro_create_latios_sprite(/*TODO: arg types*/); -u8 intro_create_latias_sprite(/*TODO: arg types*/); +u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d); +void sub_8148F3C(u8); +void sub_8149020(u8); +u8 intro_create_brendan_sprite(s16 a, s16 b); +u8 intro_create_may_sprite(s16 a, s16 b); +u8 intro_create_latios_sprite(s16 a, s16 b); +u8 intro_create_latias_sprite(s16 a, s16 b); #endif // GUARD_INTRO_CREDITS_GRAPHICS_H diff --git a/include/item_menu.h b/include/item_menu.h index 6950ed0ff..29618f347 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -3,6 +3,17 @@ #include "string_util.h" +struct PocketScrollState +{ + u8 cursorPos; + u8 scrollTop; + u8 numSlots; + u8 cursorMax; +}; + +extern struct PocketScrollState gBagPocketScrollStates[]; +extern struct ItemSlot *gCurrentBagPocketItemSlots; + void ResetBagScrollPositions(void); void ClearBag(void); void sub_80A3E0C(void); diff --git a/include/item_use.h b/include/item_use.h index 1558f7691..227c0c9ee 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -38,7 +38,7 @@ void sub_80C9FC0(u8); void ItemUseOutOfBattle_Repel(u8); void ItemUseOutOfBattle_BlackWhiteFlute(u8); void task08_080A1C44(u8); -u8 sub_80CA1C8(void); +u8 CanUseEscapeRopeOnCurrMap(void); void ItemUseOutOfBattle_EscapeRope(u8); void ItemUseOutOfBattle_EvolutionStone(u8); void ItemUseInBattle_PokeBall(u8); @@ -49,5 +49,6 @@ void ItemUseInBattle_Escape(u8); void ItemUseOutOfBattle_EnigmaBerry(u8); void ItemUseInBattle_EnigmaBerry(u8); void ItemUseOutOfBattle_CannotUse(u8); +u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); #endif // GUARD_ITEM_USE_H diff --git a/include/m4a.h b/include/m4a.h index b6c8f9072..7d016c98b 100644 --- a/include/m4a.h +++ b/include/m4a.h @@ -16,4 +16,9 @@ void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo); +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); +void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); +void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan); + #endif //GUARD_M4A_H diff --git a/include/mail_data.h b/include/mail_data.h index df4b385a1..2659c0d37 100644 --- a/include/mail_data.h +++ b/include/mail_data.h @@ -11,6 +11,6 @@ u8 GiveMailToMon2(struct Pokemon *, struct MailStruct *); void TakeMailFromMon(struct Pokemon *); u8 TakeMailFromMon2(struct Pokemon *); bool8 ItemIsMail(u16); -bool8 ItemIsMail(u16); +bool8 MonHasMail(struct Pokemon *); #endif // GUARD_MAIL_DATA_H diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h index f7352be22..9fb57743e 100644 --- a/include/map_obj_lock.h +++ b/include/map_obj_lock.h @@ -7,7 +7,7 @@ bool8 sub_8064CFC(void); void ScriptFreezeMapObjects(void); void sub_8064D38(u8 taskId); bool8 sub_8064DB4(void); -void sub_8064DD8(void); +void LockSelectedMapObject(void); void sub_8064E2C(void); void unref_sub_8064E5C(void); void sub_8064EAC(void); diff --git a/include/mauville_man.h b/include/mauville_man.h new file mode 100644 index 000000000..2b8f139f2 --- /dev/null +++ b/include/mauville_man.h @@ -0,0 +1,18 @@ +#ifndef GUARD_MAUVILLE_OLD_MAN_H +#define GUARD_MAUVILLE_OLD_MAN_H + +// IDs +enum +{ + MAUVILLE_MAN_BARD, + MAUVILLE_MAN_HIPSTER, + MAUVILLE_MAN_TRADER, + MAUVILLE_MAN_STORYTELLER, + MAUVILLE_MAN_GIDDY, +}; + +void SetupMauvilleOldMan(void); +void sub_80F7F30(void); +void sub_80F83D0(void); + +#endif // GUARD_MAUVILLE_OLD_MAN_H diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h deleted file mode 100644 index 473fcf5c8..000000000 --- a/include/mauville_old_man.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef GUARD_MAUVILLE_OLD_MAN_H -#define GUARD_MAUVILLE_OLD_MAN_H - -void SetMauvilleOldMan(void); -void sub_80F7DC0(void); -void sub_80F7F30(void); -void sub_80F7F80(u8); -void sub_80F83D0(void); -void sub_80F83F8(void); - -#endif // GUARD_MAUVILLE_OLD_MAN_H diff --git a/include/menu.h b/include/menu.h index e1bb4f1e4..3cf47b9b8 100644 --- a/include/menu.h +++ b/include/menu.h @@ -43,7 +43,7 @@ u16 unref_sub_8071F98(u8, u8); void unref_sub_8071FBC(u16, u8, u8, u8, u8); void MenuDisplayMessageBox(void); void MenuPrintMessage(const u8 *, u8, u8); -void sub_8072044(const u8 *); +void MenuPrintMessageDefaultCoords(const u8 *); void MenuSetText(const u8 *); u8 MenuUpdateWindowText(void); u8 unref_sub_8072098(void); @@ -59,7 +59,7 @@ void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); s8 sub_80727CC(void); u8 sub_807288C(u8); void PrintMenuItems(u8, u8, u8, const struct MenuAction[]); -void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], const u8*); +void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 ProcessMenuInputNoWrap_(void); diff --git a/include/menu_cursor.h b/include/menu_cursor.h index ca82ef244..6d31cc29f 100644 --- a/include/menu_cursor.h +++ b/include/menu_cursor.h @@ -21,4 +21,8 @@ void sub_814AD7C(u8 a1, u8 a2); void sub_814ADC8(void); void sub_814ADF4(u8 a1); +#if GERMAN +extern const u32 gUnknown_0842F798[2]; +#endif + #endif // GUARD_MENU_CURSOR_H diff --git a/include/money.h b/include/money.h index 49015ee19..5a0acd482 100644 --- a/include/money.h +++ b/include/money.h @@ -2,15 +2,15 @@ #define GUARD_MONEY_H bool8 IsEnoughMoney(u32, u32); -void sub_80B79B8(u32 *, u32); -void sub_80B79E0(u32 *, u32); -void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2); -void sub_80B7A94(u32 arg0, u8 arg1, u8 x, u8 y); +void AddMoney(u32 *, u32); +void RemoveMoney(u32 *, u32); +void GetMoneyAmountText(u8 *buffer, u32 arg1, u8 arg2); +void PrintMoneyAmount(u32 arg0, u8 arg1, u8 x, u8 y); void sub_80B7AEC(u32, u8 left, u8 top); -void sub_80B7B34(void); -void sub_80B7BEC(u32, u8, u8); -void sub_80B7C14(u32, u8, u8); -void RemoveMoneyLabelObject(u8, u8); +void sub_80B7B34(u8, u8, int); +void UpdateMoneyWindow(u32, u8, u8); +void OpenMoneyWindow(u32, u8, u8); +void CloseMoneyWindow(u8, u8); bool8 sub_80B7CE8(void); void sub_80B7D0C(void); diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index 766303588..ab23a8d00 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -1,8 +1,8 @@ #ifndef GUARD_MYSTERY_EVENT_SCRIPT_H #define GUARD_MYSTERY_EVENT_SCRIPT_H -u32 sub_812613C(u8 *); -void sub_8126160(u32 val); -u16 sub_8126338(void); +u32 RunMysteryEventScript(u8 *); +void SetMysteryEventScriptStatus(u32 val); +u16 GetRecordMixingGift(void); #endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/rom4.h b/include/overworld.h index fabd25302..0954f1b63 100644 --- a/include/rom4.h +++ b/include/overworld.h @@ -22,42 +22,42 @@ struct UCoords32 u32 x, y; }; -extern struct UCoords32 gUnknown_0821664C[]; +extern const struct UCoords32 gUnknown_0821664C[]; extern void (*gFieldCallback)(void); // sub_8052F5C -void flag_var_implications_of_teleport_(void); -void new_game(void); -void sub_8053014(void); -void sub_8053050(void); +void Overworld_ResetStateAfterFly(void); +void Overworld_ResetStateAfterTeleport(void); +void Overworld_ResetStateAfterDigEscRope(void); +void Overworld_ResetStateAfterWhiteOut(void); // sub_805308C void ResetGameStats(void); void IncrementGameStat(u8 index); u32 GetGameStat(u8 index); void SetGameStat(u8, u32); -// sub_8053154 -// sub_8053198 -void update_saveblock1_field_object_coords(u8, s16, s16); -void update_saveblock1_field_object_movement_behavior(u8, u8); +// LoadMapObjTemplatesFromHeader +// LoadSaveblockMapObjScripts +void Overworld_SetMapObjTemplateCoords(u8, s16, s16); +void Overworld_SetMapObjTemplateMovementType(u8, u8); // mapdata_load_assets_to_gpu_and_full_redraw // get_mapdata_header -// warp_shift -// warp_set +// ApplyCurrentWarp +// SetWarpData // warp_data_is_not_neg_1 -struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum); +struct MapHeader * const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); struct MapHeader * const warp1_get_mapheader(void); // set_current_map_header_from_sav1_save_old_name -// sub_805338C +// LoadSaveblockMapHeader // sub_80533CC void warp_in(void); -void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId); void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); void sub_8053538(u8); -void sub_8053570(void); -void sub_8053588(u8); +void Overworld_SetWarpDestToLastHealLoc(void); +void Overworld_SetHealLocationWarp(u8); void sub_80535C4(s16 a1, s16 a2); void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void sub_8053678(void); @@ -69,7 +69,7 @@ void sub_8053720(s16, s16); // unref_sub_8053790 void sub_80537CC(u8); void gpu_sync_bg_hide(); -// sub_8053818 +// GetMapConnection // sub_8053850 bool8 sub_80538B0(u16 x, u16 y); bool8 sub_80538D0(u16 x, u16 y); @@ -81,37 +81,37 @@ void walkrun_find_lowest_active_bit_in_bitfield(void); u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3); u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8); u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); -bool32 IsBikingAllowedByMap(void); -void sub_8053C98(void); -void sub_8053CE4(s32 a1); -u8 sav1_get_flash_used_on_map(void); +bool32 Overworld_IsBikingAllowed(void); +void SetDefaultFlashLevel(void); +void Overworld_SetFlashLevel(s32 a1); +u8 Overworld_GetFlashLevel(void); void sub_8053D14(u16); // sub_8053D30 // sub_8053D6C -// sub_8053D9C -// sav1_map_get_music -// warp1_target_get_music -// call_map_music_set_to_zero -void sub_8053E90(void); -void sav1_set_battle_music_maybe(u16); -void sav1_reset_battle_music_maybe(void); +// GetLocationMusic +// GetCurrLocationDefaultMusic +// GetWarpDestinationMusic +// Overworld_ResetMapMusic +void Overworld_PlaySpecialMapMusic(void); +void Overworld_SetSavedMusic(u16); +void Overworld_ClearSavedMusic(void); void sub_8053F0C(void); -void sub_8053F84(void); -void sub_8053FB0(u16); -// is_warp1_light_level_8_or_9 -// sub_8053FF8 +void Overworld_ChangeMusicToDefault(void); +void Overworld_ChangeMusicTo(u16); +// GetMapMusicFadeoutSpeed +void sub_8053FF8(void); bool8 sub_8054034(void); -void sub_8054044(void); -// sub_8054050 -void sub_80540D0(s16 *, u16 *); -void sub_8054164(void); -u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum); -// get_map_light_level_from_warp -u8 sav1_map_get_light_level(void); -u8 get_map_light_from_warp0(void); -bool8 is_light_level_1_2_3_5_or_6(u8 a1); -bool8 is_light_level_1_2_3_or_6(u8 a1); -u8 is_light_level_8_or_9(u8); +void Overworld_FadeOutMapMusic(void); +// PlayAmbientCry +void UpdateAmbientCry(s16 *, u16 *); +void ChooseAmbientCrySpecies(void); +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); +// GetMapTypeByWarpData +u8 Overworld_GetMapTypeOfSaveblockLocation(void); +u8 get_map_type_from_warp0(void); +bool8 is_map_type_1_2_3_5_or_6(u8 a1); +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 a1); +u8 Overworld_MapTypeIsIndoors(u8); // unref_sub_8054260 u8 sav1_map_get_name(); // sav1_map_get_battletype @@ -119,8 +119,8 @@ u8 sav1_map_get_name(); bool32 is_c1_link_related_active(void); // c1_overworld_normal // c1_overworld -// c2_overworld_basic -// sub_8054398 +// OverworldBasic +void CB2_OverworldBasic(void); void c2_overworld(void); // set_callback1 // sub_80543DC @@ -129,8 +129,8 @@ void CB2_NewGame(void); void CB2_WhiteOut(void); void CB2_LoadMap(void); void CB2_LoadMap2(void); -// sub_8054534 -// sub_8054588 +void sub_8054534(void); +void sub_8054588(void); void c2_80567AC(void); void c2_exit_to_overworld_2_switch(void); void c2_exit_to_overworld_2_local(void); @@ -233,5 +233,6 @@ u8 npc_something3(u8, u8); u8 LinkPlayerDetectCollision(u8, u8, s16, s16); void CreateLinkPlayerSprite(u8); void SpriteCB_LinkPlayer(struct Sprite *); +void sub_805465C(void); #endif // GUARD_ROM4_H diff --git a/include/party_menu.h b/include/party_menu.h index 9ce476869..e3f5c62f3 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -53,40 +53,58 @@ struct Struct201B000 u16 unk282; }; +struct Unk2001000 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + void* unkC; + u16 array[53561]; +}; + extern u8 ewram[]; +#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000)) #define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) #define ewram1B000_alt (*(struct Struct201B000 *)(ewram + 0x1B000)) #define EWRAM_1B000 ewram1B000_alt void sub_806AEDC(void); -void sub_806AF4C(); +void sub_806AF4C(u8 arg0, u8 arg1, void* arg2, u8 arg3); void OpenPartyMenu(u8, u8); void OpenPartyMenu(); -u8 sub_806B124(void); +bool8 sub_806B124(void); u8 IsLinkDoubleBattle(void); u8 sub_806B58C(u8); u8 sub_806B58C(u8); void sub_806BC3C(u8, u8); u8 sub_806BD58(u8, u8); u8 sub_806BD58(u8, u8); -u16 sub_806BD80(); // undefined args in battle_party_menu.c +u16 sub_806BD80(u8); void task_pc_turn_off(); -void sub_806BF74(); -void sub_806C994(); -u8 sub_806CA38(u8); +void sub_806BF74(u8 arg0, u8 arg1); +void sub_806C994(u8 arg0, u8 arg1); +u8 sub_806CA38(u8 taskID); void sub_806CB74(u8 taskId); void sub_806CCE4(void); void sub_806CD44(u8 taskId); -void sub_806D538(); -void sub_806D538(); -void sub_806D538(); +void sub_806D538(u8 arg0, u8 arg1); void sub_806D5A4(void); void SetMonIconAnim(); void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *); void LoadHeldItemIconGraphics(void); -void LoadHeldItemIconGraphics(void); +void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c); void CreateHeldItemIcons_806DC34(); // undefined args void CreateHeldItemIcons_806DC34(); +void CreateHeldItemIcons(u8 *, u8 *, u8); u8 GetMonIconSpriteId_maybe(); void SetHeldItemIconVisibility(); void TryPrintPartyMenuMonNickname(); @@ -151,5 +169,13 @@ void DoRareCandyItemEffect(u8, u16, TaskFunc); void Task_RareCandy1(u8); void Task_RareCandy2(u8); void sub_8070848(u8 taskId); +void sub_806CA60(u8 taskId); +void sub_806CD5C(u8 taskId); +void DoTakeMail(u8 taskId, TaskFunc func); +void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func); +void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func); +void sub_806D668(u8 partyID); +void TaughtMove(u8 taskId); +void StopTryingToTeachMove_806F588(u8 taskId); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokeball.h b/include/pokeball.h index 19f813415..0a709c869 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -7,5 +7,6 @@ void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u32 s void sub_804777C(u8); void sub_80478DC(u8); void sub_804794C(u8); +u8 sub_8047580(u8, u8, u8, u8, u8, u8, u8, u32); #endif // GUARD_POKEBALL_H diff --git a/include/pokeblock.h b/include/pokeblock.h index f78ed40c3..6720653a0 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -1,7 +1,8 @@ #ifndef GUARD_POKEBLOCK_H #define GUARD_POKEBLOCK_H -enum { +enum +{ PBLOCK_CLR_BLACK, PBLOCK_CLR_RED, PBLOCK_CLR_BLUE, @@ -10,15 +11,32 @@ enum { PBLOCK_CLR_YELLOW }; +enum +{ + PBLOCK_COLOR, + PBLOCK_SPICY, + PBLOCK_DRY, + PBLOCK_SWEET, + PBLOCK_BITTER, + PBLOCK_SOUR, + PBLOCK_FEEL, +}; + void sub_810B96C(void); u8 sub_810BA50(s16, s16, u8); u8 sub_810C9B0(struct Pokeblock *); -s16 sub_810CA9C(const struct Pokeblock *, u8); +s16 GetPokeblockData(const struct Pokeblock *, u8); u8 sub_810C9E8(struct Pokeblock *); void sub_810BA7C(u8); void ClearPokeblocks(void); -bool8 sub_810CA6C(u8); -s16 sub_810CAE4(u8, const struct Pokeblock *); +bool8 PokeblockClearIfExists(u8); +s16 PokeblockGetGain(u8, const struct Pokeblock *); u8 sub_810CB68(u8, u8*); +void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); +void CB2_PreparePokeblockFeedScene(void); + +#include "main.h" + +void sub_8136130(struct Pokeblock *, MainCallback); #endif // GUARD_POKEBLOCK_H diff --git a/include/pokeblock_feed.h b/include/pokeblock_feed.h deleted file mode 100644 index 65d0d1dc9..000000000 --- a/include/pokeblock_feed.h +++ /dev/null @@ -1,10 +0,0 @@ -// -// Created by Scott Norton on 6/28/17. -// - -#ifndef POKERUBY_POKEBLOCK_FEED_H -#define POKERUBY_POKEBLOCK_FEED_H - -void sub_8147ADC(void); - -#endif //POKERUBY_POKEBLOCK_FEED_H diff --git a/include/pokedex.h b/include/pokedex.h index 1bc63a4ff..c47494e1f 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -9,7 +9,17 @@ void CB2_InitPokedex(void); u8 sub_809070C(u16 dexNum, u32 b, u32 c); const u8 *GetPokemonCategory(u16); u16 GetPokedexHeightWeight(u16 dexNum, u8 data); -s8 GetNationalPokedexFlag(u16, u8); + +enum +{ + FLAG_GET_SEEN, + FLAG_GET_CAUGHT, + FLAG_SET_SEEN, + FLAG_SET_CAUGHT +}; + +s8 GetSetPokedexFlag(u16, u8); + u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); bool8 sub_8090FC0(void); diff --git a/include/pokemon.h b/include/pokemon.h index c69fb87e0..76728a5ee 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -93,6 +93,8 @@ #define MON_DATA_SPATK2 87 #define MON_DATA_SPDEF2 88 +#define MAX_LEVEL 100 + #define MON_MALE 0x00 #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF @@ -349,6 +351,18 @@ struct BattlePokemon /*0x54*/ u32 otId; }; +enum +{ + STAT_STAGE_HP, // 0 + STAT_STAGE_ATK, // 1 + STAT_STAGE_DEF, // 2 + STAT_STAGE_SPEED, // 3 + STAT_STAGE_SPATK, // 4 + STAT_STAGE_SPDEF, // 5 + STAT_STAGE_ACC, // 6 + STAT_STAGE_EVASION, // 7 +}; + struct BaseStats { /*0x00*/ u8 baseHP; @@ -379,7 +393,7 @@ struct BaseStats /*0x17*/ u8 ability2; /*0x18*/ u8 safariZoneFleeRate; /*0x19*/ u8 bodyColor:7; - u8 unk19_7:1; + u8 noFlip:1; }; struct BattleMove @@ -392,9 +406,16 @@ struct BattleMove u8 secondaryEffectChance; u8 target; u8 priority; - u32 flags; + u8 flags; + u8 pad[3]; }; +#define FLAG_MAKES_CONTACT 0x1 +#define FLAG_PROTECT_AFFECTED 0x2 +#define FLAG_MAGICCOAT_AFFECTED 0x4 +#define FLAG_SNATCH_AFFECTED 0x8 +#define FLAG_KINGSROCK_AFFECTED 0x20 + struct PokemonStorage { /*0x00*/ u8 currentBox; @@ -464,7 +485,9 @@ struct EvolutionData struct Evolution evolutions[5]; }; +extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[PARTY_SIZE]; +extern u8 gEnemyPartyCount; extern struct Pokemon gEnemyParty[PARTY_SIZE]; extern const u8 *const gItemEffectTable[]; extern const struct BaseStats gBaseStats[]; @@ -489,7 +512,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src); void sub_803AF78(struct Pokemon *mon, struct UnknownPokemonStruct *dest); u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); void CalculateMonStats(struct Pokemon *mon); -void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest); +void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest); u8 GetLevelFromMonExp(struct Pokemon *mon); u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon); u16 GiveMoveToMon(struct Pokemon *mon, u16 move); @@ -499,7 +522,7 @@ void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot); void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot); void GiveMonInitialMoveset(struct Pokemon *mon); void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon); -u16 sub_803B7C8(struct Pokemon *mon, u8 a2); +u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 a2); void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move); void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); @@ -555,6 +578,7 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum); u16 NationalToHoennOrder(u16); u16 SpeciesToNationalPokedexNum(u16); u16 HoennToNationalOrder(u16); +u16 SpeciesToCryId(u16 species); void DrawSpindaSpots(u16, u32, u8 *, u8); u8 sub_803FBBC(void); u8 sub_803FC58(u16); @@ -562,13 +586,14 @@ void AdjustFriendship(struct Pokemon *, u8); u8 CheckPartyHasHadPokerus(struct Pokemon *, u8); void UpdatePartyPokerusTime(u16); u32 CanMonLearnTMHM(struct Pokemon *, u8); +u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 sub_8040574(struct Pokemon *party); void ClearBattleMonForms(void); void sub_80408BC(); void current_map_music_set__default_for_battle(u16); -const u8 *pokemon_get_pal(struct Pokemon *mon); -const u8 *species_and_otid_get_pal(u16, u32, u32); -const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32); +const u8 *GetMonSpritePal(struct Pokemon *mon); +const u8 *GetMonSpritePalFromOtIdPersonality(u16, u32, u32); +const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16, u32, u32); bool8 IsOtherTrainer(u32, u8 *); void sub_8040B8C(void); void SetWildMonHeldItem(void); @@ -576,5 +601,10 @@ u8 *sub_8040D08(); bool32 sub_8040D3C(u16 species, u8 *name, u8 language); s8 sub_8040A54(struct Pokemon *, u8); u16 GetMonEVCount(struct Pokemon *); +u16 GetEvolutionTargetSpecies(struct Pokemon *, u8, u16); +const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *); +bool8 IsPokeSpriteNotFlipped(u16); +u8 GetLevelUpMovesBySpecies(u16, u16 *); +u8 TryIncrementMonLevel(struct Pokemon *); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 98f984564..2fbf9f700 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -1,7 +1,7 @@ #ifndef GUARD_POKEMON_ICON_H #define GUARD_POKEMON_ICON_H -u8 CreateMonIcon(); +u8 CreateMonIcon(u16, void (*callback)(struct Sprite *), s16, s16, bool8, u32); u8 sub_809D3A4(u16 arg0, void (*)(struct Sprite *), int, u8 arg3, u32 arg4); u16 GetUnownLetterByPersonality(u32); u16 sub_809D4A8(u16); @@ -10,5 +10,7 @@ void sub_809D51C(void); void sub_809D580(u16); void sub_809D608(u16); void UpdateMonIconFrame(struct Sprite *sprite); +void sub_809D824(struct Sprite *, u8); +void sub_809D62C(struct Sprite *); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h index fc43a44c6..06f905577 100644 --- a/include/pokemon_menu.h +++ b/include/pokemon_menu.h @@ -1,15 +1,47 @@ #ifndef GUARD_POKEMON_MENU_H #define GUARD_POKEMON_MENU_H +#define POKEMENU_FIRST_FIELD_MOVE_ID 10 + +enum +{ + POKEMENU_SUMMARY, // 0 + POKEMENU_SWITCH, // 1 + POKEMENU_ITEM, // 2 + POKEMENU_CANCEL, // 3 + POKEMENU_GIVE_ITEM, // 4 + POKEMENU_TAKE_ITEM, // 5 + POKEMENU_TAKE_MAIL, // 6 + POKEMENU_MAIL, // 7 + POKEMENU_READ_MAIL, // 8 + POKEMENU_CANCEL_SUBMENU, // 9 + POKEMENU_CUT, // 10 + POKEMENU_FLASH, // 11 + POKEMENU_ROCK_SMASH, // 12 + POKEMENU_STRENGTH, // 13 + POKEMENU_SURF, // 14 + POKEMENU_FLY, // 15 + POKEMENU_DIVE, // 16 + POKEMENU_WATERFALL, // 17 + POKEMENU_TELEPORT, // 18 + POKEMENU_DIG, // 19 + POKEMENU_SECRET_POWER, // 20 + POKEMENU_MILK_DRINK, // 21 + POKEMENU_SOFT_BOILED, // 22 + POKEMENU_SWEET_SCENT, // 23 +}; + +extern u8 gLastFieldPokeMenuOpened; +extern void (*gUnknown_03005CE4)(void); + +void sub_808B5B4(u32 taskID); void sub_8089A70(void); -void sub_808A004(); -void sub_808AB90(void); -void sub_808AB90(void); // unknown args -void sub_808AB90(void); +void sub_808A004(u8 taskID); +void FieldCallback_Teleport(void); void sub_808AD58(void); void sub_808B020(void); -void sub_808B0C0(u8); +void sub_808B0C0(u8 taskID); void sub_808B508(u8); -void sub_808B564(); +void sub_808B564(void); #endif // GUARD_POKEMON_MENU_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index bd4e7915b..9fe3436ef 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -2,5 +2,7 @@ #define GUARD_POKEMON_STORAGE_SYSTEM_H void ResetPokemonStorageSystem(void); +void BoxMonRestorePP(struct BoxPokemon *); +void party_compaction(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/rom3.h b/include/rom3.h index a45ec7dc4..81bb56df1 100644 --- a/include/rom3.h +++ b/include/rom3.h @@ -1,6 +1,8 @@ #ifndef GUARD_ROM3_H #define GUARD_ROM3_H +struct DisableStruct; + void sub_800B858(void); void setup_poochyena_battle(); void sub_800B950(void); @@ -8,58 +10,58 @@ void sub_800B9A8(void); void sub_800BA78(void); void sub_800BD54(void); void sub_800BF28(void); -void dp01_prepare_buffer_wireless_probably(u8 a, u16, u8 *c); +void PrepareBufferDataTransferLink(u8 a, u16, u8 *c); void sub_800C1A8(u8); void sub_800C35C(void); void sub_800C47C(u8); void EmitGetAttributes(u8 a, u8 b, u8 c); -void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c); -void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e); -void dp01_build_cmdbuf_x04_4_4_4(u8 a); -void sub_800C704(u8, u8, u8); -void dp01_build_cmdbuf_x06_a(u8 a, u8 b); -void dp01_build_cmdbuf_x07_7_7_7(u8 a); -void dp01_build_cmdbuf_x08_8_8_8(u8 a); -void dp01_build_cmdbuf_x09_9_9_9(u8 a); -void EmitFaintAnimation(u8 a); -void dp01_build_cmdbuf_x0B_B_B_B(u8 a); -void dp01_build_cmdbuf_x0C_C_C_C(u8 a); -void dp01_build_cmdbuf_x0D_a(u8 a, u8 b); -void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g); +void Emitcmd1(u8 a, u8 b, u8 c); +void EmitLoadPokeSprite(u8 a); +void EmitSendOutPoke(u8, u8, u8); +void EmitReturnPokeToBall(u8 a, u8 b); +void EmitTrainerThrow(u8 a); +void EmitTrainerSlide(u8 a); +void EmitTrainerSlideBack(u8 a); +void Emitcmd10(u8 a); +void Emitcmd11(u8 a); +void Emitcmd12(u8 a); +void EmitBallThrow(u8 a, u8 b); +void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g); void EmitPrintString(u8 a, u16 b); -void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c); -void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d); -void sub_800CBE0(u8 a, u8 *b); -void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e); -void dp01_build_cmdbuf_x17_17_17_17(u8 a); -void EmitHealthBarUpdate(u8 a, s16 b); -void EmitExpBarUpdate(u8 a, u8 b, s16 c); +void EmitPrintStringPlayerOnly(u8 a, u16 stringID); +void Emitcmd18(u8 a, u8 b, u16 c); +void Emitcmd20(u8 a, u8 b, u8 c, u8 *d); +void EmitOpenBag(u8 a, u8 *b); +void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); +void Emitcmd23(u8 a); +void EmitHealthBarUpdate(u8 a, u16 b); +void EmitExpBarUpdate(u8 a, u8 b, u16 c); void EmitStatusIconUpdate(u8 a, u32 b, u32 c); void EmitStatusAnimation(u8 a, u8 b, u32 c); void EmitStatusXor(u8 a, u8 b); -void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8, u16, u8 *); -void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c); -void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c); -void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b); -void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b); -void dp01_build_cmdbuf_x25_25_25_25(u8 a); -void dp01_build_cmdbuf_x26_a(u8 a, u8 b); -void dp01_build_cmdbuf_x27_27_27_27(u8 a); -void dp01_build_cmdbuf_x28_28_28_28(u8 a); +void Emitcmd29(u8, u16, u8 *); +void Emitcmd33(u8 a, u8 b, u16 c); +void Emitcmd34(u8 a, u8 b, u8 *c); +void Emitcmd35(u8 a, u16 b); +void Emitcmd36(u8 a, u16 b); +void Emitcmd37(u8 a); +void Emitcmd38(u8 a, u8 b); +void Emitcmd39(u8 a); +void Emitcmd40(u8 a); void EmitHitAnimation(u8 a); -void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a); +void Emitcmd42(u8 a); void EmitEffectivenessSound(u8 a, u16 b); -void sub_800D074(u8 a, u16 b); +void Emitcmd44(u8 a, u16 b); void EmitFaintingCry(u8 a); -void EmitBattleIntroSlide(u8 a, u8 b); -void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a); -void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); -void dp01_build_cmdbuf_x31_31_31_31(u8 a); -void dp01_build_cmdbuf_x32_32_32_32(u8 a); +void EmitIntroSlide(u8 a, u8 b); +void EmitTrainerBallThrow(u8 a); +void Emitcmd48(u8 a, u8 *b, u8 c); +void Emitcmd49(u8 a); +void Emitcmd50(u8 a); void EmitSpriteInvisibility(u8 a, u8 b); void EmitBattleAnimation(u8 a, u8 b, u16 c); void EmitLinkStandbyMsg(u8 a, u8 b); void EmitResetActionMoveSelection(u8 a, u8 b); -void dp01_build_cmdbuf_x37_a(u8 a, u8 b); +void Emitcmd55(u8 a, u8 b); #endif // GUARD_ROM3_H diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h index 11e94e1f5..94e535df5 100644 --- a/include/rom_8077ABC.h +++ b/include/rom_8077ABC.h @@ -4,10 +4,18 @@ #include "sprite.h" #include "task.h" +enum +{ + ANIM_BANK_ATK, + ANIM_BANK_DEF, + ANIM_BANK_ATK_PARTNER, + ANIM_BANK_DEF_PARTNER +}; + u8 sub_8077ABC(u8, u8); u8 sub_8077E44(u8 slot, u16 species, u8 a3); -u8 obj_id_for_side_relative_to_move(u8 side); -void oamt_set_x3A_32(struct Sprite *sprite, void(*callback)(struct Sprite *)); +u8 GetAnimBankSpriteId(u8 side); +void StoreSpriteCallbackInData6(struct Sprite *sprite, void(*callback)(struct Sprite *)); void sub_8078314(struct Sprite *sprite); void sub_8078364(struct Sprite *sprite); void sub_8078458(struct Sprite *sprite); @@ -22,8 +30,8 @@ u8 GetBankIdentity(u8 slot); u8 GetBankByPlayerAI(u8); u8 GetBankByPlayerAI(u8); u8 GetBankByPlayerAI(u8 state); -u8 sub_8078874(u8); -bool8 sub_8078874(u8); +u8 AnimBankSpriteExists(u8); +bool8 AnimBankSpriteExists(u8); bool8 IsDoubleBattle(); u8 IsDoubleBattle(void); bool8 IsDoubleBattle(void); @@ -55,5 +63,6 @@ void sub_807A784(u8 taskId); void sub_807A850(struct Task *task, u8 taskId); void sub_807A8D4(struct Sprite *sprite); void sub_807A960(struct Sprite *sprite); +void sub_8078A34(struct Sprite *sprite); #endif // GUARD_ROM_8077ABC_H diff --git a/include/script.h b/include/script.h index b3d888edf..5a899cf4a 100644 --- a/include/script.h +++ b/include/script.h @@ -11,7 +11,7 @@ struct ScriptContext u8 stackDepth; u8 mode; u8 comparisonResult; - u8 (*nativePtr)(void); + bool8 (*nativePtr)(void); const u8 *scriptPtr; const u8 *stack[20]; ScrCmdFunc *cmdTable; @@ -23,9 +23,9 @@ struct ScriptContext void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd); u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr); -void SetupNativeScript(struct ScriptContext *ctx, void *ptr); +void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void)); void StopScript(struct ScriptContext *ctx); -u8 RunScript(struct ScriptContext *ctx); +u8 RunScriptCommand(struct ScriptContext *ctx); u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr); const u8 *ScriptPop(struct ScriptContext *ctx); void ScriptJump(struct ScriptContext *ctx, u8 *ptr); @@ -42,16 +42,12 @@ void ScriptContext1_SetupScript(const u8 *ptr); void ScriptContext1_Stop(void); void EnableBothScriptContexts(void); void ScriptContext2_RunNewScript(const u8 *ptr); -u8 *mapheader_get_tagged_pointer(u8 tag); -void mapheader_run_script_by_tag(u8 tag); -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag); void mapheader_run_script_with_tag_x1(void); void mapheader_run_script_with_tag_x3(void); void mapheader_run_script_with_tag_x5(void); void mapheader_run_script_with_tag_x6(void); bool8 mapheader_run_first_tag2_script_list_match(void); void mapheader_run_first_tag4_script_list_match(void); -u32 CalculateRamScriptChecksum(void); void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); u8 *GetRamScript(u8 objectId, u8 *script); diff --git a/include/script_menu.h b/include/script_menu.h index cc5c442ec..dca8c26a7 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -1,33 +1,19 @@ #ifndef GUARD_SCRIPTMENU_H #define GUARD_SCRIPTMENU_H -struct MultichoiceListStruct -{ - struct MenuAction *list; - u8 count; -}; +struct MenuAction; extern const u8 *const gUnknown_083CE048[]; -bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4); -bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5); -u16 GetStringWidthInTilesForScriptMenu(const u8 *str); -void DrawMultichoiceMenu(u8, u8, u8, struct MenuAction *list, u8, u8); -void sub_80B5230(u8, u8, u8, u8, u8, u8); -void sub_80B52B4(u8); +bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4); +bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5); bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4); -void sub_80B53B4(u8, u8, u8, struct MenuAction *list, u8); -bool8 yes_no_box(u8 var1, u8 var2); -bool8 IsScriptActive(void); // unused -void task_yes_no_maybe(u8); -bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); -void sub_80B5684(u8); -bool8 TryCreatePCMenu(void); -void CreatePCMenu(void); -void sub_80B5838(void); -void task_picbox(u8 taskId); -bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3); -void *picbox_close(void); -bool8 sub_80B59AC(void); +bool8 ScriptMenu_YesNo(u8 var1, u8 var2); +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); +bool8 ScrSpecial_CreatePCMenu(void); +void ScriptMenu_CreatePCMenu(void); +void ScriptMenu_DisplayPCStartupPrompt(void); +bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); +bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); #endif diff --git a/include/script_movement.h b/include/script_movement.h index e3cdc25b3..dc6d7e51b 100644 --- a/include/script_movement.h +++ b/include/script_movement.h @@ -1,8 +1,8 @@ #ifndef GUARD_SCRIPT_MOVEMENT_H #define GUARD_SCRIPT_MOVEMENT_H -bool8 exec_movement(u8, u8, u8, u8 *); -bool8 sub_80A212C(u8, u8, u8); +bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *); +bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8); void sub_80A2178(void); #endif // GUARD_SCRIPT_MOVEMENT_H diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h index 629980a2d..fab07994e 100644 --- a/include/script_pokemon_80C4.h +++ b/include/script_pokemon_80C4.h @@ -8,10 +8,10 @@ void ReducePlayerPartyToThree(void); u8 sub_80C4D50(void); void ShowContestWinner(void); -void HealPlayerParty(); +void ScrSpecial_HealPlayerParty(); u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); u8 ScriptGiveEgg(u16); -void ScriptWildBattle(u16, u8, u16); +void CreateScriptedWildMon(u16, u8, u16); void ScriptSetMonMoveSlot(u8, u16, u8); #endif diff --git a/include/shop.h b/include/shop.h index cca6091c9..b785ca764 100644 --- a/include/shop.h +++ b/include/shop.h @@ -1,6 +1,34 @@ #ifndef GUARD_SHOP_H #define GUARD_SHOP_H +enum +{ + MART_TYPE_0, // normal mart + MART_TYPE_1, + MART_TYPE_2, +}; + +// shop view window NPC info enum +enum +{ + MAP_OBJ_ID, + X_COORD, + Y_COORD, + ANIM_NUM +}; + +struct MartInfo +{ + /* 0x0 */ void (* callback) (void); + /* 0x4 */ u16 *itemList; + /* 0x8 */ u8 itemCount; // how many unique items are there for sale? + /* 0x9 */ u8 cursor; // this shows the on-screen true index of the cursor and not the current item selected. + /* 0xA */ u8 numChoices; // how many options does the mart have? can be either 2 or 1 (BUY/SELL vs BUY) + /* 0xB */ u8 choicesAbove; // when your cursor is far down, there are choices that have scrolled up past the top. this is the count of that. + /* 0xC */ u8 martType; // 0-2. 0 is normal mart while 1-2 seem to be decor shops or non-stackable purchases in general. + /* 0xD */ u8 curItemCount; // if you are selling an item, this is the count of the current item stack you have. +}; + void sub_80B2E38(u8); void HandleShopMenuQuit(u8); void sub_80B2FA0(u8); @@ -11,8 +39,10 @@ void BuyMenuDrawMapGraphics(void); void sub_80B3764(int, int); void sub_80B37EC(void); void sub_80B40E8(u8); -void CreatePokemartMenu(void *); -void CreateDecorationShop1Menu(void *); -void CreateDecorationShop2Menu(void *); +void CreatePokemartMenu(u16 *); +void CreateDecorationShop1Menu(u16 *); +void CreateDecorationShop2Menu(u16 *); +void sub_80B356C(void); +void sub_80B368C(void); #endif // GUARD_SHOP_H diff --git a/include/songs.h b/include/songs.h index 8cf7ee5e9..afd26d683 100644 --- a/include/songs.h +++ b/include/songs.h @@ -36,29 +36,29 @@ enum /*0x1E*/ SE_N, /*0x1F*/ SE_SEIKAI, /*0x20*/ SE_HAZURE, - SE_EXP, - SE_JITE_PYOKO, - SE_MU_PACHI, - SE_TK_KASYA, - SE_FU_ZAKU, - SE_FU_ZAKU2, - SE_FU_ZUZUZU, - SE_RU_GASHIN, - SE_RU_GASYAN, - SE_RU_BARI, - SE_RU_HYUU, - SE_KI_GASYAN, - SE_TK_WARPIN, - SE_TK_WARPOUT, - SE_TU_SAA, - SE_HI_TURUN, - SE_TRACK_MOVE, - SE_TRACK_STOP, - SE_TRACK_HAIK, - SE_TRACK_DOOR, - SE_MOTER, - SE_CARD, - SE_SAVE, + /*0x21*/ SE_EXP, + /*0x22*/ SE_JITE_PYOKO, + /*0x23*/ SE_MU_PACHI, + /*0x24*/ SE_TK_KASYA, + /*0x25*/ SE_FU_ZAKU, + /*0x26*/ SE_FU_ZAKU2, + /*0x27*/ SE_FU_ZUZUZU, + /*0x28*/ SE_RU_GASHIN, + /*0x29*/ SE_RU_GASYAN, + /*0x2A*/ SE_RU_BARI, + /*0x2B*/ SE_RU_HYUU, + /*0x2C*/ SE_KI_GASYAN, + /*0x2D*/ SE_TK_WARPIN, + /*0x2E*/ SE_TK_WARPOUT, + /*0x2F*/ SE_TU_SAA, + /*0x30*/ SE_HI_TURUN, + /*0x31*/ SE_TRACK_MOVE, + /*0x32*/ SE_TRACK_STOP, + /*0x33*/ SE_TRACK_HAIK, + /*0x34*/ SE_TRACK_DOOR, + /*0x35*/ SE_MOTER, + /*0x36*/ SE_CARD, + /*0x37*/ SE_SAVE, /*0x38*/ SE_KON, /*0x39*/ SE_KON2, /*0x3A*/ SE_KON3, @@ -105,9 +105,9 @@ enum SE_C_PASI, SE_C_SYU, SE_C_PIKON, - SE_REAPOKE, - SE_OP_BASYU, - SE_BT_START, + /*0x66*/ SE_REAPOKE, + /*0x67*/ SE_OP_BASYU, + /*0x68*/ SE_BT_START, SE_DENDOU, SE_JIHANKI, SE_TAMA, @@ -131,20 +131,20 @@ enum /*0x7D*/ SE_W145B, /*0x7E*/ SE_W145C, /*0x7F*/ SE_W240, - SE_W015, - SE_W081, - SE_W081B, - SE_W088, - SE_W016, - SE_W016B, - SE_W003, - SE_W104, - SE_W013, - SE_W196, - SE_W086, - SE_W004, - SE_W025, - SE_W025B, + /*0x80*/ SE_W015, + /*0x81*/ SE_W081, + /*0x82*/ SE_W081B, + /*0x83*/ SE_W088, + /*0x84*/ SE_W016, + /*0x85*/ SE_W016B, + /*0x86*/ SE_W003, + /*0x87*/ SE_W104, + /*0x88*/ SE_W013, + /*0x89*/ SE_W196, + /*0x8A*/ SE_W086, + /*0x8B*/ SE_W004, + /*0x8C*/ SE_W025, + /*0x8D*/ SE_W025B, SE_W152, SE_W026, SE_W172, @@ -185,29 +185,29 @@ enum SE_W071B, SE_W071, SE_W103, - SE_W062, - SE_W062B, - SE_W048, - SE_W187, - SE_W118, - SE_W155, - SE_W122, - SE_W060, - SE_W185, - SE_W014, - SE_W043, - SE_W207, - SE_W207B, - SE_W215, - SE_W109, - SE_W173, - SE_W280, - SE_W202, - SE_W060B, - SE_W076, - SE_W080, - SE_W100, - SE_W107, + /*0xB6*/ SE_W062, + /*0xB7*/ SE_W062B, + /*0xB8*/ SE_W048, + /*0xB9*/ SE_W187, + /*0xBA*/ SE_W118, + /*0xBB*/ SE_W155, + /*0xBC*/ SE_W122, + /*0xBD*/ SE_W060, + /*0xBE*/ SE_W185, + /*0xBF*/ SE_W014, + /*0xC0*/ SE_W043, + /*0xC1*/ SE_W207, + /*0xC2*/ SE_W207B, + /*0xC3*/ SE_W215, + /*0xC4*/ SE_W109, + /*0xC5*/ SE_W173, + /*0xC6*/ SE_W280, + /*0xC7*/ SE_W202, + /*0xC8*/ SE_W060B, + /*0xC9*/ SE_W076, + /*0xCA*/ SE_W080, + /*0xCB*/ SE_W100, + /*0xCC*/ SE_W107, SE_W166, SE_W129, SE_W115, @@ -274,38 +274,38 @@ enum /*0x171*/ BGM_ME_BACHI, /*0x172*/ BGM_FANFA4, /*0x173*/ BGM_FANFA5, - BGM_ME_WAZA, - BGM_BIJYUTU, - BGM_DOORO_X4, - BGM_FUNE_KAN, - BGM_ME_SHINKA, - BGM_SHINKA, - BGM_ME_WASURE, - BGM_SYOUJOEYE, - BGM_BOYEYE, - BGM_DAN02, - BGM_MACHI_S3, - BGM_ODAMAKI, - BGM_B_TOWER, - BGM_SWIMEYE, - BGM_DAN03, - BGM_ME_KINOMI, - BGM_ME_TAMA, - BGM_ME_B_BIG, - BGM_ME_B_SMALL, - BGM_ME_ZANNEN, - BGM_BD_TIME, - BGM_TEST1, - BGM_TEST2, - BGM_TEST3, - BGM_TEST4, - BGM_TEST, - BGM_GOMACHI0, - BGM_GOTOWN, - BGM_POKECEN, - BGM_NEXTROAD, - BGM_GRANROAD, - BGM_CYCLING, + /*0x174*/ BGM_ME_WAZA, + /*0x175*/ BGM_BIJYUTU, + /*0x176*/ BGM_DOORO_X4, + /*0x177*/ BGM_FUNE_KAN, + /*0x178*/ BGM_ME_SHINKA, + /*0x179*/ BGM_SHINKA, + /*0x17A*/ BGM_ME_WASURE, + /*0x17B*/ BGM_SYOUJOEYE, + /*0x17C*/ BGM_BOYEYE, + /*0x17D*/ BGM_DAN02, + /*0x17E*/ BGM_MACHI_S3, + /*0x17F*/ BGM_ODAMAKI, + /*0x180*/ BGM_B_TOWER, + /*0x181*/ BGM_SWIMEYE, + /*0x182*/ BGM_DAN03, + /*0x183*/ BGM_ME_KINOMI, + /*0x184*/ BGM_ME_TAMA, + /*0x185*/ BGM_ME_B_BIG, + /*0x186*/ BGM_ME_B_SMALL, + /*0x187*/ BGM_ME_ZANNEN, + /*0x188*/ BGM_BD_TIME, + /*0x189*/ BGM_TEST1, + /*0x18A*/ BGM_TEST2, + /*0x18B*/ BGM_TEST3, + /*0x18C*/ BGM_TEST4, + /*0x18D*/ BGM_TEST, + /*0x18E*/ BGM_GOMACHI0, + /*0x18F*/ BGM_GOTOWN, + /*0x190*/ BGM_POKECEN, + /*0x191*/ BGM_NEXTROAD, + /*0x192*/ BGM_GRANROAD, + /*0x193*/ BGM_CYCLING, BGM_FRIENDLY, BGM_MISHIRO, BGM_TOZAN, diff --git a/include/species.h b/include/species.h index e33481afd..9ab0565cb 100644 --- a/include/species.h +++ b/include/species.h @@ -1,7 +1,8 @@ #ifndef GUARD_SPECIES_H #define GUARD_SPECIES_H -enum { +enum +{ SPECIES_NONE, // 0x000 SPECIES_BULBASAUR, // 0x001 SPECIES_IVYSAUR, // 0x002 diff --git a/include/sprite.h b/include/sprite.h index 733231eb5..0d84c8127 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -204,14 +204,14 @@ struct Sprite /*0x3A*/ s16 data6; /*0x3C*/ s16 data7; - /*0x3E*/ u16 inUse:1; - u16 coordOffsetEnabled:1; - u16 invisible:1; - u16 flags_3:1; - u16 flags_4:1; - u16 flags_5:1; - u16 flags_6:1; - u16 flags_7:1; + /*0x3E*/ u16 inUse:1; //1 + u16 coordOffsetEnabled:1; //2 + u16 invisible:1; //4 + u16 flags_3:1; //8 + u16 flags_4:1; //0x10 + u16 flags_5:1; //0x20 + u16 flags_6:1; //0x40 + u16 flags_7:1; //0x80 /*0x3F*/ u16 hFlip:1; u16 vFlip:1; u16 animBeginning:1; @@ -299,4 +299,6 @@ u8 SpriteTileAllocBitmapOp(u16 bit, u8 op); extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; +extern const struct SpriteTemplate gDummySpriteTemplate; + #endif // GUARD_SPRITE_H diff --git a/include/start_menu.h b/include/start_menu.h index 5169b3bf0..d3f77dc99 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -5,7 +5,7 @@ void CreateStartMenuTask(void (*func)(u8)); void sub_80712B4(u8 taskId); void sub_8071310(void); -void InitSaveDialog(void); +void ScrSpecial_DoSaveDialog(void); void sub_8071B28(void); #endif // GUARD_STARTER_CHOOSE_H diff --git a/include/strings2.h b/include/strings2.h index 600bb2d31..8052c6c4a 100644 --- a/include/strings2.h +++ b/include/strings2.h @@ -319,4 +319,8 @@ extern const u8 gOtherText_OK[]; // wallclock extern const u8 gOtherText_CorrectTimePrompt[]; +#if GERMAN +extern const u8 deuOtherText_ForgotAndLearned[]; +#endif + #endif // GUARD_STRINGS2_H diff --git a/include/text.h b/include/text.h index 99987d2c3..ebc4ebe7e 100644 --- a/include/text.h +++ b/include/text.h @@ -2,6 +2,7 @@ #define GUARD_TEXT_H #define CHAR_SPACE 0x00 +#define CHAR_SONG_WORD_SEPARATOR 0x37 // separates words in the bard song. Not sure if it's used for anything else #define CHAR_0 0xA1 #define CHAR_QUESTION_MARK 0xAC #define CHAR_PERIOD 0xAD @@ -97,35 +98,35 @@ struct WindowConfig struct Window { - u8 textMode; - u8 fontNum; - u8 language; - u8 foregroundColor; - u8 backgroundColor; - u8 shadowColor; - u8 paletteNum; - u8 tilemapLeft; - u8 tilemapTop; - u8 width; - u8 height; - u8 win_field_B; - u8 win_field_C; - u8 delayCounter; - u8 spacing; - u8 win_field_F; - u8 cursorX; - u8 cursorY; - u8 left; - u16 top; - u16 state; - u16 downArrowCounter; - u16 tileDataStartOffset; - u16 tileDataOffset; - u16 textIndex; - const u8 *text; - u8 *tileData; - u16 *tilemap; - struct WindowConfig *config; + /*0x00*/ u8 textMode; + /*0x01*/ u8 fontNum; + /*0x02*/ u8 language; + /*0x03*/ u8 foregroundColor; + /*0x04*/ u8 backgroundColor; + /*0x05*/ u8 shadowColor; + /*0x06*/ u8 paletteNum; + /*0x07*/ u8 tilemapLeft; + /*0x08*/ u8 tilemapTop; + /*0x09*/ u8 width; + /*0x0A*/ u8 height; + /*0x0B*/ u8 win_field_B; + /*0x0C*/ u8 win_field_C; + /*0x0D*/ u8 delayCounter; + /*0x0E*/ u8 spacing; + /*0x0F*/ u8 win_field_F; + /*0x10*/ u8 cursorX; + /*0x11*/ u8 cursorY; + /*0x12*/ u8 left; + /*0x14*/ u16 top; // padded to 0x14 + /*0x16*/ u16 state; + /*0x18*/ u16 downArrowCounter; + /*0x1A*/ u16 tileDataStartOffset; + /*0x1C*/ u16 tileDataOffset; + /*0x1E*/ u16 textIndex; + /*0x20*/ const u8 *text; + /*0x24*/ u8 *tileData; + /*0x28*/ u16 *tilemap; + /*0x2C*/ const struct WindowConfig *config; }; extern vu16 *const gBGControlRegs[]; @@ -202,6 +203,7 @@ extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; +extern u8 gTileBuffer[]; void LoadFontDefaultPalette(const struct WindowConfig *winConfig); void SetUpWindowConfig(const struct WindowConfig *winConfig); @@ -244,8 +246,8 @@ u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 l u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6); u8 sub_8004E24(struct Window *win); void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow); -void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text); -u8 GetStringWidthGivenWindowConfig(struct WindowConfig *winConfig, const u8 *s); +void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text); +u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s); void ConvertInternationalString(u8 *s, u8 language); void StripExtCtrlCodes(u8 *str); s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2); diff --git a/include/trade.h b/include/trade.h new file mode 100644 index 000000000..1dd4b53bd --- /dev/null +++ b/include/trade.h @@ -0,0 +1,64 @@ + +#ifndef GUARD_TRADE_H +#define GUARD_TRADE_H + +struct TradeEwramSubstruct2 { + /*0x0000*/ u8 filler_0000; + /*0x0004*/ struct Window window; + /*0x0034*/ u8 textWindowBaseTileNum; + /*0x0038*/ struct Pokemon pokemon; + /*0x009c*/ u8 unk_009c; + /*0x009d*/ u8 unk_009d; + /*0x009e*/ u16 linkData[10]; + /*0x00b2*/ u8 unk_00b2; + /*0x00b3*/ u8 unk_00b3; + /*0x00b4*/ u16 unk_00b4; + /*0x00b6*/ u16 unk_00b6; + // Sprite indices + /*0x00b8*/ u8 pokePicSpriteIdxs[2]; + /*0x00ba*/ u8 unk_00ba; + /*0x00bb*/ u8 unk_00bb; + /*0x00bc*/ u8 unk_00bc; + /*0x00bd*/ u8 unk_00bd; + // Timer + /*0x00c0*/ u32 unk_00c0; + // Scene index + /*0x00c4*/ u16 unk_00c4; + /*0x00c6*/ u8 filler_00c6[0x3c]; + /*0x0102*/ u8 unk_0102; + /*0x0103*/ u8 unk_0103; + /*0x0104*/ u16 unk_0104; + /*0x0106*/ u16 unk_0106; + /*0x0108*/ u16 unk_0108; + /*0x010a*/ u16 unk_010a; + /*0x010c*/ u16 unk_010c; + /*0x010e*/ s16 unk_010e; + /*0x0110*/ s16 bg1vofs; + /*0x0112*/ s16 bg1hofs; + /*0x0114*/ s16 bg2vofs; + /*0x0116*/ s16 bg2hofs; + /*0x0118*/ u16 unk_0118; + /*0x011a*/ u16 unk_011a; + /*0x011c*/ u16 unk_011c; + /*0x011e*/ u8 isLinkTrade; + /*0x0120*/ u16 tradeSpecies[2]; + /*0x0124*/ u16 unk_0124; +}; + +extern struct TradeEwramSubstruct2 *gUnknown_03004828; +extern const u16 gUnknown_0820C9F8[][16]; +extern const u32 gUnknown_0820CA98[]; +extern const u16 gUnknown_0820F798[]; + +void sub_8047CD8(void); +u16 sub_804DB2C(void); +void sub_804DB68(void); +void sub_804E174(void); +const u8 gOtherText_MaleSymbol3[2]; +const u8 gOtherText_FemaleSymbol3[2]; +const u8 gOtherText_GenderlessSymbol[2]; + +void sub_804E22C(void); +u16 sub_804D89C(void); + +#endif //POKERUBY_TRADE_H diff --git a/include/trader.h b/include/trader.h index 24a9f2a07..832a04b65 100644 --- a/include/trader.h +++ b/include/trader.h @@ -1,6 +1,7 @@ #ifndef GUARD_TRADER_H #define GUARD_TRADER_H -void sub_81099CC(void); +void TraderSetup(void); +void sub_8109A20(void); #endif // GUARD_TRADER_H diff --git a/include/trainer_see.h b/include/trainer_see.h index b80a41641..de96dcd3a 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -7,29 +7,13 @@ bool8 CheckTrainers(void); bool8 CheckTrainer(u8); u8 TrainerCanApproachPlayer(struct MapObject *); -bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y); -bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y); -bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y); -bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y); + bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *, u8, u8); void sub_80842C8(struct MapObject *, u8); void sub_80842FC(void (*func)(u8)); void RunTrainerSeeFuncList(u8); -u8 sub_8084394(void); -s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); -void sub_80846E4(u8 taskId); void sub_8084794(struct MapObject *var); -void sub_80847C8(void); +void ScrSpecial_EndTrainerApproach(void); void sub_80847D8(u8); void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3); void objc_exclamation_mark_probably(struct Sprite *sprite); diff --git a/include/unknown_task.h b/include/unknown_task.h index dc07767d6..d7ac63931 100644 --- a/include/unknown_task.h +++ b/include/unknown_task.h @@ -1,14 +1,24 @@ #ifndef GUARD_UNKNOWN_TASK_H #define GUARD_UNKNOWN_TASK_H +struct UnknownTaskStruct +{ + volatile void *dest; + u32 control; + u8 unk8; + u8 unk9; +}; + 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(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); +//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/include/use_pokeblock.h b/include/use_pokeblock.h deleted file mode 100644 index f34857cf1..000000000 --- a/include/use_pokeblock.h +++ /dev/null @@ -1,10 +0,0 @@ -// -// Created by Scott Norton on 5/31/17. -// - -#ifndef POKERUBY_USE_POKEBLOCK_H -#define POKERUBY_USE_POKEBLOCK_H - -void sub_8136130(struct Pokeblock *, MainCallback); - -#endif //POKERUBY_USE_POKEBLOCK_H diff --git a/include/util.h b/include/util.h index 1851c2e82..87fa4aecc 100644 --- a/include/util.h +++ b/include/util.h @@ -9,5 +9,7 @@ extern const u32 gBitTable[]; u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); +u16 CalcCRC16(u8 *data, int length); +void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha); #endif // GUARD_UTIL_H diff --git a/include/vars.h b/include/vars.h index efbb462a4..179fd6f93 100644 --- a/include/vars.h +++ b/include/vars.h @@ -45,6 +45,7 @@ #define VAR_0x4095 0x4095 #define VAR_0x4097 0x4097 #define VAR_0x409a 0x409a +#define VAR_WEATHER_INSTITUTE_CLEARED 0x040B3 #define VAR_PORTHOLE 0x40B4 #define VAR_0x40BC 0x40BC diff --git a/include/wild_encounter.h b/include/wild_encounter.h index a4485b08d..d4b343126 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -28,12 +28,12 @@ extern struct WildPokemonHeader gWildMonHeaders[]; void DisableWildEncounters(bool8 disabled); bool8 StandardWildEncounter(u16 a, u16 b); -void RockSmashWildEncounter(void); +void ScrSpecial_RockSmashWildEncounter(void); bool8 SweetScentWildEncounter(void); -bool8 GetFishingWildMonListHeader(void); +bool8 DoesCurrentMapHaveFishingMons(void); void FishingWildEncounter(u8 rod); u16 GetLocalWildMon(bool8 *isWaterMon); -u16 GetMirageIslandMon(void); +u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.txt b/ld_script.txt index 3e12b279d..5e38556fe 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -25,7 +25,7 @@ SECTIONS { <BSS> /* .bss.code starts at 0x3000F60 */ - src/m4a_2.o(.bss.code); + src/libs/m4a_2.o(.bss.code); /* COMMON starts at 0x3001760 */ <COMMON> @@ -39,241 +39,225 @@ SECTIONS { ALIGN(4) { asm/crt0.o(.text); - src/main.o(.text); - src/sprite.o(.text); - src/text.o(.text); - src/string_util.o(.text); - src/link.o(.text); - src/rtc.o(.text); - src/main_menu.o(.text); + src/engine/main.o(.text); + src/engine/sprite.o(.text); + src/engine/text.o(.text); + src/engine/string_util.o(.text); + src/engine/link.o(.text); + src/engine/rtc.o(.text); + src/engine/main_menu.o(.text); src/rom3.o(.text); - src/decompress.o(.text); + src/engine/decompress.o(.text); asm/battle_1.o(.text); src/rom_800D42C.o(.text); asm/battle_1.o(.text_800DC24); - src/battle_2.o(.text); + src/battle/battle_2.o(.text); asm/battle_2.o(.text); - asm/battle_3.o(.text); - asm/battle_4.o(.text); - asm/battle_5.o(.text); - src/battle_6.o(.text); - src/battle_7.o(.text); - src/battle_8.o(.text); + src/battle/battle_3.o(.text); + src/battle/battle_4.o(.text); + src/battle/battle_controller_player.o(.text); + src/battle/battle_7.o(.text); + src/battle/battle_controller_opponent.o(.text); asm/battle_9.o(.text); - src/battle_10.o(.text); - src/pokemon_1.o(.text); - src/calculate_base_damage.o(.text); - src/pokemon_2.o(.text); + src/battle/battle_controller_linkopponent.o(.text); + src/pokemon/pokemon_1.o(.text); + src/battle/calculate_base_damage.o(.text); + src/pokemon/pokemon_2.o(.text); asm/pokemon_item_effect.o(.text); - src/pokemon_3.o(.text); + src/pokemon/pokemon_3.o(.text); src/de_rom_8040FE0.o(.text); - src/trig.o(.text); - src/rng.o(.text); - src/util.o(.text); - src/blend_palette.o(.text); - src/daycare.o(.text); - asm/daycare.o(.text); - src/egg_hatch.o(.text); - asm/egg_hatch.o(.text); - src/battle_interface.o(.text); - src/smokescreen.o(.text); - src/pokeball.o(.text); - src/load_save.o(.text); - asm/trade.o(.text); - src/trade.o(.text); - asm/trade.o(.text.sub_804A9F4); - src/trade.o(.text.sub_804DAD4); - asm/trade.o(.text.sub_804DB2C); - asm/berry_blender.o(.text); - src/play_time.o(.text); - src/new_game.o(.text); - src/rom4.o(.text); - src/fieldmap.o(.text); - src/metatile_behavior.o(.text); - src/field_camera.o(.text); - src/field_door.o(.text); - src/field_player_avatar.o(.text); - src/field_map_obj.o(.text); - asm/field_map_obj.o(.text); - src/field_map_obj.o(.text_fmocb2_c); - src/field_ground_effect.o(.text); - asm/field_ground_effect.o(.text); - src/field_map_obj_helpers.o(.text); - src/field_message_box.o(.text); - src/map_obj_lock.o(.text); - src/text_window.o(.text); - src/script.o(.text); - src/scrcmd.o(.text); - src/field_control_avatar.o(.text); - src/event_data.o(.text); - src/coord_event_weather.o(.text); - src/field_tasks.o(.text); - src/clock.o(.text); - src/reset_rtc_screen.o(.text); + src/engine/trig.o(.text); + src/engine/rng.o(.text); + src/engine/util.o(.text); + src/engine/blend_palette.o(.text); + src/field/daycare.o(.text); + src/scene/egg_hatch.o(.text); + src/battle/battle_interface.o(.text); + src/battle/smokescreen.o(.text); + src/battle/pokeball.o(.text); + src/engine/load_save.o(.text); + src/engine/trade.o(.text); + src/scene/berry_blender.o(.text); + src/engine/play_time.o(.text); + src/scene/new_game.o(.text); + src/field/overworld.o(.text); + src/field/fieldmap.o(.text); + src/field/metatile_behavior.o(.text); + src/field/field_camera.o(.text); + src/field/field_door.o(.text); + src/field/field_player_avatar.o(.text); + src/field/field_map_obj.o(.text); + src/field/field_ground_effect.o(.text); + src/field/field_map_obj_helpers.o(.text); + src/field/field_message_box.o(.text); + src/field/map_obj_lock.o(.text); + src/engine/text_window.o(.text); + src/engine/script.o(.text); + src/field/scrcmd.o(.text); + src/field/field_control_avatar.o(.text); + src/field/event_data.o(.text); + src/field/coord_event_weather.o(.text); + src/field/field_tasks.o(.text); + src/engine/clock.o(.text); + src/engine/reset_rtc_screen.o(.text); asm/party_menu.o(.text); - src/party_menu.o(.text); + src/field/party_menu.o(.text); asm/party_menu.o(.text_8070968); - src/start_menu.o(.text); - src/menu.o(.text); - src/tileset_anim.o(.text); - src/palette.o(.text); - src/sound.o(.text); - src/battle_anim.o(.text); + src/field/start_menu.o(.text); + src/engine/menu.o(.text); + src/engine/tileset_anim.o(.text); + src/engine/palette.o(.text); + src/engine/sound.o(.text); + src/battle/battle_anim.o(.text); src/rom_8077ABC.o(.text); - src/task.o(.text); - asm/reshow_battle_screen.o(.text); - asm/battle_anim_807B69C.o(.text); - src/title_screen.o(.text); - src/field_weather.o(.text); + src/engine/task.o(.text); + src/battle/reshow_battle_screen.o(.text); + src/battle/battle_anim_807B69C.o(.text); + src/scene/title_screen.o(.text); + src/field/field_weather.o(.text); asm/field_weather.o(.text); - src/field_fadetransition.o(.text); - asm/field_fadetransition.o(.text); - src/field_screen_effect.o(.text); - src/battle_setup.o(.text); - asm/cable_club.o(.text); - src/cable_club.o(.text); - asm/cable_club.o(.text_80830E4); - src/mori_debug_menu.o(.text); - src/trainer_see.o(.text); - src/wild_encounter.o(.text); - src/field_effect.o(.text); + src/field/field_fadetransition.o(.text); + src/field/field_screen_effect.o(.text); + src/battle/battle_setup.o(.text); + src/engine/cable_club.o(.text); + src/debug/mori_debug_menu.o(.text); + src/field/trainer_see.o(.text); + src/field/wild_encounter.o(.text); + src/field/field_effect.o(.text); src/unknown_task.o(.text); - asm/pokemon_menu.o(.text); - src/option_menu.o(.text); - src/pokedex.o(.text); - src/trainer_card.o(.text); - src/save_menu_util.o(.text); - src/battle_party_menu.o(.text); + src/pokemon/pokemon_menu.o(.text); + src/engine/option_menu.o(.text); + src/pokemon/pokedex.o(.text); + src/engine/trainer_card.o(.text); + src/engine/save_menu_util.o(.text); + src/battle/battle_party_menu.o(.text); asm/pokemon_storage_system.o(.text); - src/pokemon_storage_system.o(.text); + src/pokemon/pokemon_storage_system.o(.text); asm/pokemon_storage_system.o(.text_8098A38); - src/pokemon_icon.o(.text); + src/pokemon/pokemon_icon.o(.text); asm/pokemon_summary_screen.o(.text); - src/pokemon_summary_screen.o(.text); + src/pokemon/pokemon_summary_screen.o(.text); asm/pokemon_summary_screen.o(.text_80A0958); - src/script_movement.o(.text); - src/fldeff_cut.o(.text); - src/mail_data.o(.text); - src/map_name_popup.o(.text); - src/item_menu.o(.text); - src/battle_anim_80A7E7C.o(.text); - src/item.o(.text); - src/matsuda_debug_menu.o(.text); + src/field/script_movement.o(.text); + src/field/fldeff_cut.o(.text); + src/pokemon/mail_data.o(.text); + src/field/map_name_popup.o(.text); + src/field/item_menu.o(.text); + src/battle/battle_anim_80A7E7C.o(.text); + src/field/item.o(.text); + src/debug/matsuda_debug_menu.o(.text); asm/contest.o(.text); - src/shop.o(.text); - asm/shop.o(.text); - src/berry.o(.text); - src/script_menu.o(.text); - src/naming_screen.o(.text); - src/money.o(.text); + src/field/shop.o(.text); + src/field/berry.o(.text); + src/field/script_menu.o(.text); + src/engine/naming_screen.o(.text); + src/field/money.o(.text); asm/contest_effect.o(.text); - src/record_mixing.o(.text); - src/sound_check_menu.o(.text); - src/secret_base.o(.text); + src/engine/record_mixing.o(.text); + src/debug/sound_check_menu.o(.text); + src/field/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); - src/tv.o(.text); + src/field/tv.o(.text); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); - src/field_poison.o(.text); - src/pokemon_size_record.o(.text); + src/field/field_poison.o(.text); + src/pokemon/pokemon_size_record.o(.text); asm/fldeff_80C5CD4.o(.text); - src/field_special_scene.o(.text); - src/rotating_gate.o(.text); - src/safari_zone.o(.text); + src/field/field_special_scene.o(.text); + src/field/rotating_gate.o(.text); + src/field/safari_zone.o(.text); asm/contest_link_80C857C.o(.text); - src/contest_link_80C857C.o(.text); - src/item_use.o(.text); + src/battle/contest_link_80C857C.o(.text); + src/field/item_use.o(.text); asm/battle_anim_80CA710.o(.text); - src/bike.o(.text); + src/field/bike.o(.text); asm/easy_chat.o(.text); - src/easy_chat.o(.text); + src/field/easy_chat.o(.text); asm/pokenav.o(.text); - src/pokenav.o(.text); + src/field/pokenav.o(.text); asm/pokenav.o(.text_80F708C); - src/mon_markings.o(.text); - src/mauville_old_man.o(.text); - asm/mauville_old_man.o(.text); - src/mail.o(.text); - src/menu_helpers.o(.text); + src/pokemon/mon_markings.o(.text); + src/field/mauville_man.o(.text); + src/pokemon/mail.o(.text); + src/field/menu_helpers.o(.text); src/script_pokemon_util_80F99CC.o(.text); - src/dewford_trend.o(.text); - src/heal_location.o(.text); - src/region_map.o(.text); + src/field/dewford_trend.o(.text); + src/field/heal_location.o(.text); + src/field/region_map.o(.text); + src/scene/cute_sketch.o(.text); asm/cute_sketch.o(.text); - src/decoration.o(.text); + src/field/decoration.o(.text); asm/slot_machine.o(.text); - src/slot_machine.o(.text); + src/field/slot_machine.o(.text); asm/slot_machine.o(.text_8104D30) - src/slot_machine.o(.text_b); - src/contest_painting.o(.text); - src/battle_ai.o(.text); - src/trader.o(.text); - src/starter_choose.o(.text); - src/wallclock.o(.text); + src/field/slot_machine.o(.text_b); + src/scene/contest_painting.o(.text); + src/battle/battle_ai.o(.text); + src/field/trader.o(.text); + src/field/starter_choose.o(.text); + src/field/wallclock.o(.text); src/rom6.o(.text); - src/pokeblock.o(.text); - src/fldeff_flash.o(.text); - src/post_battle_event_funcs.o(.text); - src/time_events.o(.text); - src/birch_pc.o(.text); - src/hof_pc.o(.text); - src/field_specials.o(.text); - src/battle_records.o(.text); + src/field/pokeblock.o(.text); + src/field/fldeff_flash.o(.text); + src/battle/post_battle_event_funcs.o(.text); + src/engine/time_events.o(.text); + src/field/birch_pc.o(.text); + src/field/hof_pc.o(.text); + src/field/field_specials.o(.text); + src/battle/battle_records.o(.text); asm/pokedex_area_screen.o(.text); - asm/evolution_scene.o(.text); + src/scene/evolution_scene.o(.text); asm/roulette.o(.text); asm/pokedex_cry_screen.o(.text); - src/pokedex_cry_screen.o(.text); + src/pokemon/pokedex_cry_screen.o(.text); asm/pokedex_cry_screen.o(.text_811A4F8); - src/coins.o(.text); - src/landmark.o(.text); - src/fldeff_strength.o(.text); - asm/battle_transition.o(.text); - src/battle_811DA74.o(.text); - asm/battle_message.o(.text); - src/choose_party.o(.text); + src/field/coins.o(.text); + src/field/landmark.o(.text); + src/field/fldeff_strength.o(.text); + src/battle/battle_transition.o(.text); + src/battle/battle_controller_linkpartner.o(.text); + src/battle/battle_message.o(.text); + src/field/choose_party.o(.text); asm/cable_car.o(.text); asm/roulette_util.o(.text); asm/cable_car_util.o(.text); src/unused_8124F94.o(.text); - src/save.o(.text); - src/mystery_event_script.o(.text); - asm/mystery_event_script.o(.text); - asm/field_effect_helpers.o(.text); + src/engine/save.o(.text); + src/engine/mystery_event_script.o(.text); + src/field/field_effect_helpers.o(.text); asm/contest_ai.o(.text); asm/battle_anim_81258BC.o(.text); - src/battle_anim_81258BC.o(.text); - asm/battle_anim_81258BC.o(.text_812BBFC); - src/fldeff_sweetscent.o(.text); + src/battle/battle_controller_safari.o(.text); + src/field/fldeff_sweetscent.o(.text); asm/battle_anim_812C144.o(.text); - asm/learn_move.o(.text); - src/fldeff_softboiled.o(.text); - src/decoration_inventory.o(.text); - src/roamer.o(.text); + src/pokemon/learn_move.o(.text); + src/field/fldeff_softboiled.o(.text); + src/field/decoration_inventory.o(.text); + src/field/roamer.o(.text); asm/battle_tower.o(.text); - src/use_pokeblock.o(.text); - src/battle_anim_8137220.o(.text); - src/player_pc.o(.text); - src/intro.o(.text); - src/field_region_map.o(.text); + src/field/use_pokeblock.o(.text); + src/battle/battle_controller_wally.o(.text); + src/field/player_pc.o(.text); + src/scene/intro.o(.text); + src/field/field_region_map.o(.text); asm/battle_anim_813F0F4.o(.text); - asm/hall_of_fame.o(.text); - src/credits.o(.text); - src/lottery_corner.o(.text); - src/diploma.o(.text); - src/berry_tag_screen.o(.text); - src/mystery_event_menu.o(.text); - src/save_failed_screen.o(.text); - src/braille_puzzles.o(.text); - asm/pokeblock_feed.o(.text); - src/clear_save_data_menu.o(.text); - asm/intro_credits_graphics.o(.text); - asm/evolution_graphics.o(.text); - src/bard_music.o(.text); - src/fldeff_teleport.o(.text); - src/unknown_debug_menu.o(.text); - src/name_string_util.o(.text); - src/menu_cursor.o(.text); + src/scene/hall_of_fame.o(.text); + src/scene/credits.o(.text); + src/field/lottery_corner.o(.text); + src/field/diploma.o(.text); + src/field/berry_tag_screen.o(.text); + src/engine/mystery_event_menu.o(.text); + src/engine/save_failed_screen.o(.text); + src/field/braille_puzzles.o(.text); + src/pokemon/pokeblock_feed.o(.text); + src/engine/clear_save_data_menu.o(.text); + src/scene/intro_credits_graphics.o(.text); + src/scene/evolution_graphics.o(.text); + src/field/bard_music.o(.text); + src/field/fldeff_teleport.o(.text); + src/debug/unknown_debug_menu.o(.text); + src/engine/name_string_util.o(.text); + src/engine/menu_cursor.o(.text); } =0 script_data : @@ -287,7 +271,7 @@ SECTIONS { data/battle_scripts_2.o(script_data); data/battle_ai_scripts.o(script_data); data/contest_ai_scripts.o(script_data); - data/script_funcs.o(script_data); + data/mystery_event_script_cmd_table.o(script_data); } =0 lib_text : @@ -295,13 +279,13 @@ SECTIONS { { asm/libgcnmultiboot.o(.text); asm/m4a_1.o(.text); - src/m4a_2.o(.text); + src/libs/m4a_2.o(.text); asm/m4a_3.o(.text); - src/m4a_4.o(.text); - src/agb_flash.o(.text); - src/agb_flash_1m.o(.text); - src/agb_flash_mx.o(.text); - src/siirtc.o(.text); + src/libs/m4a_4.o(.text); + src/libs/agb_flash.o(.text); + src/libs/agb_flash_1m.o(.text); + src/libs/agb_flash_mx.o(.text); + src/libs/siirtc.o(.text); asm/libagbsyscall.o(.text); tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text); tools/agbcc/lib/libgcc.a:_divsi3.o(.text); @@ -317,168 +301,175 @@ SECTIONS { tools/agbcc/lib/libgcc.a:fp-bit.o(.text); tools/agbcc/lib/libgcc.a:_lshrdi3.o(.text); tools/agbcc/lib/libgcc.a:_negdi2.o(.text); - src/libc.o(.text); + src/libs/libc.o(.text); } =0 .rodata : ALIGN(4) { - src/main.o(.rodata); - src/sprite.o(.rodata); + src/engine/main.o(.rodata); + src/engine/sprite.o(.rodata); . += 0x8; /* Why the gap? */ - src/text.o(.rodata); - src/string_util.o(.rodata); - src/link.o(.rodata); - src/rtc.o(.rodata); + src/engine/text.o(.rodata); + src/engine/string_util.o(.rodata); + src/engine/link.o(.rodata); + src/engine/rtc.o(.rodata); data/main_menu.o(.rodata); - data/data2.o(.rodata); - src/pokemon_data.o(.rodata); + data/data2a.o(.rodata); + src/battle/battle_4.o(.rodata); + src/battle/battle_controller_player.o(.rodata); + data/data2b.o(.rodata); + src/battle/battle_controller_opponent.o(.rodata); + src/battle/battle_controller_linkopponent.o(.rodata); + data/battle_moves.o(.rodata); + src/battle/battle_3.o(.rodata); + src/pokemon/pokemon_data.o(.rodata); . = ALIGN(4); - src/trig.o(.rodata); - src/util.o(.rodata); - data/daycare.o(.rodata); - data/egg_hatch.o(.rodata); + src/engine/trig.o(.rodata); + src/engine/util.o(.rodata); + src/field/daycare.o(.rodata); + src/scene/egg_hatch.o(.rodata); data/battle_interface.o(.rodata); - src/pokeball.o(.rodata); - data/trade.o(.rodata); - data/berry_blender.o(.rodata); - src/new_game.o(.rodata); - data/rom4.o(.rodata); + src/battle/pokeball.o(.rodata); + src/engine/trade.o(.rodata); + src/scene/berry_blender.o(.rodata); + src/scene/new_game.o(.rodata); + src/field/overworld.o(.rodata); data/tilesets.o(.rodata); data/maps.o(.rodata); - src/fieldmap.o(.rodata); - src/metatile_behavior.o(.rodata); + src/field/fieldmap.o(.rodata); + src/field/metatile_behavior.o(.rodata); data/field_door.o(.rodata); - src/field_player_avatar.o(.rodata); - src/field_map_obj.o(.rodata); - src/field_ground_effect.o(.rodata); - data/field_ground_effect.o(.rodata); + src/field/field_player_avatar.o(.rodata); + src/field/field_map_obj.o(.rodata); + src/field/field_ground_effect.o(.rodata); data/field_map_obj_helpers.o(.rodata); data/text_window.o(.rodata); - src/script.o(.rodata); - src/scrcmd.o(.rodata); - src/coord_event_weather.o(.rodata); - src/field_tasks.o(.rodata); + src/engine/script.o(.rodata); + src/field/scrcmd.o(.rodata); + src/field/coord_event_weather.o(.rodata); + src/field/field_tasks.o(.rodata); data/reset_rtc_screen.o(.rodata); data/party_menu.o(.rodata); - src/start_menu.o(.rodata); - src/menu.o(.rodata); + src/field/start_menu.o(.rodata); + src/engine/menu.o(.rodata); data/tileset_anim.o(.rodata); - src/palette.o(.rodata); - src/sound.o(.rodata); + src/engine/palette.o(.rodata); + src/engine/sound.o(.rodata); data/battle_anim.o(.rodata); - src/battle_anim.o(.rodata); + src/battle/battle_anim.o(.rodata); src/rom_8077ABC.o(.rodata); data/map_events.o(.rodata); data/data_8393054.o(.rodata); - src/task.o(.rodata); - data/battle_anim_807B69C.o(.rodata); - src/title_screen.o(.rodata); + src/engine/task.o(.rodata); + src/battle/battle_anim_807B69C.o(.rodata); + src/scene/title_screen.o(.rodata); data/field_weather.o(.rodata); - src/field_screen_effect.o(.rodata); - src/battle_setup.o(.rodata); + src/field/field_screen_effect.o(.rodata); + src/battle/battle_setup.o(.rodata); data/cable_club.o(.rodata); data/mori_debug_menu.o(.rodata); + src/field/trainer_see.o(.rodata); data/trainer_see.o(.rodata); - src/wild_encounter.o(.rodata); + src/field/wild_encounter.o(.rodata); data/wild_encounter.o(.rodata); - src/field_effect.o(.rodata); - data/pokemon_menu.o(.rodata); - src/option_menu.o(.rodata); - src/pokedex.o(.rodata); - src/trainer_card.o(.rodata); - src/battle_party_menu.o(.rodata); + src/field/field_effect.o(.rodata); + src/pokemon/pokemon_menu.o(.rodata); + src/engine/option_menu.o(.rodata); + src/pokemon/pokedex.o(.rodata); + src/engine/trainer_card.o(.rodata); + src/battle/battle_party_menu.o(.rodata); data/pokemon_storage_system.o(.rodata); - src/pokemon_icon.o(.rodata); + src/pokemon/pokemon_icon.o(.rodata); data/pokemon_summary_screen.o(.rodata); data/fldeff_cut.o(.rodata); - src/item_menu.o(.rodata); + src/field/item_menu.o(.rodata); data/battle_anim_80A7E7C.o(.rodata); - src/item.o(.rodata); + src/field/item.o(.rodata); data/matsuda_debug_menu.o(.rodata); data/contest.o(.rodata); - data/shop.o(.rodata); - src/berry.o(.rodata); - src/script_menu.o(.rodata); - src/naming_screen.o(.rodata); + src/field/shop.o(.rodata); + src/field/berry.o(.rodata); + src/field/script_menu.o(.rodata); + src/engine/naming_screen.o(.rodata); data/naming_screen.o(.rodata); data/money.o(.rodata); data/contest_effect.o(.rodata); - src/record_mixing.o(.data); - src/record_mixing.o(.rodata); - src/sound_check_menu.o(.rodata); + src/engine/record_mixing.o(.data); + src/engine/record_mixing.o(.rodata); + src/debug/sound_check_menu.o(.rodata); data/secret_base.o(.rodata); data/tv.o(.rodata); data/contest_link_80C2020.o(.rodata); - src/pokemon_size_record.o(.rodata); + src/pokemon/pokemon_size_record.o(.rodata); data/fldeff_80C5CD4.o(.rodata); - src/field_special_scene.o(.rodata); + src/field/field_special_scene.o(.rodata); data/field_special_scene.o(.rodata); - src/rotating_gate.o(.rodata); - src/item_use.o(.rodata); + src/field/rotating_gate.o(.rodata); + src/field/item_use.o(.rodata); data/battle_anim_80CA710.o(.rodata); - src/bike.o(.rodata); + src/field/bike.o(.rodata); data/easy_chat.o(.rodata); data/pokenav.o(.rodata); data/mon_markings.o(.rodata); - data/mauville_old_man.o(.rodata); + src/field/mauville_man.o(.rodata); data/mail.o(.rodata); - src/menu_helpers.o(.rodata); - src/heal_location.o(.rodata); - src/region_map.o(.rodata); + src/field/menu_helpers.o(.rodata); + src/field/heal_location.o(.rodata); + src/field/region_map.o(.rodata); data/cute_sketch.o(.rodata); - src/decoration.o(.rodata); + src/field/decoration.o(.rodata); data/slot_machine.o(.rodata); - src/contest_painting.o(.rodata); - src/battle_ai.o(.rodata); - src/trader.o(.rodata); - src/starter_choose.o(.rodata); - src/wallclock.o(.rodata); - src/pokeblock.o(.rodata); + src/scene/contest_painting.o(.rodata); + src/battle/battle_ai.o(.rodata); + src/field/trader.o(.rodata); + src/field/starter_choose.o(.rodata); + src/field/wallclock.o(.rodata); + src/field/pokeblock.o(.rodata); data/fldeff_flash.o(.rodata); - src/time_events.o(.rodata); - src/field_specials.o(.rodata); + src/engine/time_events.o(.rodata); + src/field/field_specials.o(.rodata); data/pokedex_area_screen.o(.rodata); - data/evolution_scene.o(.rodata); + src/scene/evolution_scene.o(.rodata); data/roulette.o(.rodata); data/pokedex_cry_screen.o(.rodata); data/landmark.o(.rodata); - data/battle_transition.o(.rodata); - data/battle_811DA74.o(.rodata); + src/battle/battle_transition.o(.rodata); + src/battle/battle_controller_linkpartner.o(.rodata); data/battle_message.o(.rodata); - src/choose_party.o(.rodata); + src/field/choose_party.o(.rodata); data/cable_car.o(.rodata); - src/save.o(.rodata); - data/field_effect_helpers.o(.rodata); + src/engine/save.o(.rodata); + src/field/field_effect_helpers.o(.rodata); data/contest_ai.o(.rodata); - data/battle_anim_81258BC.o(.rodata); + src/battle/battle_controller_safari.o(.rodata); data/battle_anim_812C144.o(.rodata); - data/learn_move.o(.rodata); - src/decoration_inventory.o(.rodata); - src/roamer.o(.rodata); + src/pokemon/learn_move.o(.rodata); + src/field/decoration_inventory.o(.rodata); + src/field/roamer.o(.rodata); data/battle_tower.o(.rodata); - src/use_pokeblock.o(.rodata); - data/battle_anim_8137220.o(.rodata); - src/player_pc.o(.rodata); - src/intro.o(.rodata); + src/field/use_pokeblock.o(.rodata); + src/battle/battle_controller_wally.o(.rodata); + src/field/player_pc.o(.rodata); + src/scene/intro.o(.rodata); data/battle_anim_813F0F4.o(.rodata); - data/hall_of_fame.o(.rodata); - src/credits.o(.rodata); + src/scene/hall_of_fame.o(.rodata); + src/scene/credits.o(.rodata); data/credits.o(.rodata); - src/lottery_corner.o(.rodata); - src/diploma.o(.rodata); + src/field/lottery_corner.o(.rodata); + src/field/diploma.o(.rodata); src/strings.o(.rodata); - src/berry_tag_screen.o(.rodata); - src/save_failed_screen.o(.rodata); - data/pokeblock_feed.o(.rodata); + src/field/berry_tag_screen.o(.rodata); + src/engine/save_failed_screen.o(.rodata); + src/pokemon/pokeblock_feed.o(.rodata); data/intro_credits_graphics.o(.rodata); - data/evolution_graphics.o(.rodata); + src/scene/evolution_graphics.o(.rodata); data/bard_music.o(.rodata); data/unknown_debug_menu.o(.rodata); data/strings2.o(.rodata); data/menu_cursor.o(.rodata); data/mystery_event_msg.o(.rodata); - src/m4a_tables.o(.rodata); + src/libs/m4a_tables.o(.rodata); data/sound_data.o(.rodata); } =0 @@ -907,11 +898,11 @@ SECTIONS { lib_rodata : ALIGN(4) { - src/agb_flash.o(.rodata); - src/agb_flash_1m.o(.rodata); - src/agb_flash_mx.o(.rodata); - src/agb_flash_le.o(.rodata); - src/siirtc.o(.rodata); + src/libs/agb_flash.o(.rodata); + src/libs/agb_flash_1m.o(.rodata); + src/libs/agb_flash_mx.o(.rodata); + src/libs/agb_flash_le.o(.rodata); + src/libs/siirtc.o(.rodata); tools/agbcc/lib/libgcc.a:_udivdi3.o(.rodata); } =0 diff --git a/shared_syms.txt b/shared_syms.txt index 884f0e89d..571e0633e 100644 --- a/shared_syms.txt +++ b/shared_syms.txt @@ -3,6 +3,8 @@ ewram = 0x2000000; unk_2004000 = 0x2004000; +gUnk_2009000 = 0x2009000; + unk_2007800 = 0x2007800; unk_2007900 = 0x2007900; diff --git a/src/bard_music.c b/src/bard_music.c deleted file mode 100644 index a31568475..000000000 --- a/src/bard_music.c +++ /dev/null @@ -1,97 +0,0 @@ -#include "global.h" -#include "easy_chat.h" - -struct BardSound -{ - u8 pad_00[48]; -}; - -struct UnkBard -{ - /*0x00*/ u8 var00; - /*0x01*/ s8 var01; - /*0x02*/ u16 var02; - /*0x04*/ u16 var04; - /*0x06*/ u16 var06; -}; - -struct UnkBard3 -{ - /*0x00*/ u16 var00; - /*0x02*/ u16 var02; - /*0x04*/ s16 var04; - /*0x06*/ u16 var06; -}; - -struct UnkBard2 -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 var02; - /*0x03*/ u8 var03; - /*0x04*/ u16 var04; - u8 pad06[4]; - /*0x0A*/ u16 var0A; - u8 pad0C[12]; - /*0x18*/ struct UnkBard3 var18[6]; -}; - -extern struct BardSound *gBardMusicTable[]; -extern s16 *gUnknown_08417068[]; -extern u32 gUnknown_084170F4[]; - -static s16 sub_814A2B8(u32 arg0, u32 arg1) -{ - return gUnknown_08417068[arg0][arg1]; -} - -#if ENGLISH -struct BardSound *sub_814A2D0(u16 arg0, u16 arg1) -{ - struct BardSound *sounds = gBardMusicTable[arg0]; - - return &sounds[arg1]; -} -#elif GERMAN -struct BardSound *sub_814A2D0(u16 arg0, u16 arg1) -{ - u32 index; - struct BardSound *sounds; - - sounds = gBardMusicTable[arg0]; - index = de_sub_80EB748(arg0, arg1); - - return &sounds[index]; -} -#endif - -s32 sub_814A2EC(struct UnkBard2 *dest, struct UnkBard *src, u16 arg2) -{ - s32 i; - s32 j; - s32 thirty; - - for (i = 0; i < 6; i++) - { - dest->var18[i].var00 = src[i].var00; - if (src[i].var00 != 0xFF) - { - s32 r1 = src[i].var01 +gUnknown_084170F4[src[i].var00]; - - dest->var18[i].var02 = r1; - dest->var18[i].var06 = src[i].var04; - dest->var04 += r1; - } - } - - for (j = 0, thirty = 30; j < i; j++) - dest->var18[j].var04 = sub_814A2B8(thirty + arg2, j); - - dest->var00++; - dest->var01 = 0; - dest->var02 = 0; - dest->var03 = 0; - dest->var0A = 0; - - //warning: no return statement in function returning non-void -} diff --git a/src/battle_2.c b/src/battle/battle_2.c index d08f2b8df..770aa1209 100644 --- a/src/battle_2.c +++ b/src/battle/battle_2.c @@ -181,7 +181,7 @@ extern u8 gHealthboxIDs[]; extern struct UnknownStruct6 gUnknown_03004DE0; //extern u16 gUnknown_03004DE0[][0xA0]; // possibly? extern u16 gBattleTypeFlags; -extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of GetBattleTerrain. +extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of BattleSetup_GetTerrain. extern u8 gReservedSpritePaletteCount; extern u16 gTrainerBattleOpponent; extern struct BattleEnigmaBerry gEnigmaBerries[]; @@ -239,7 +239,8 @@ void InitBattle(void) gUnknown_03004DE0.unk0[i] = 0xFF10; gUnknown_03004DE0.unk780[i] = 0xFF10; } - sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); + //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); + sub_80895F8(gUnknown_081F9674); SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); gUnknown_030042A4 = 0; @@ -250,7 +251,7 @@ void InitBattle(void) gUnknown_03004280 = 0; gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; - gBattleTerrain = GetBattleTerrain(); + gBattleTerrain = BattleSetup_GetTerrain(); InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0); InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC); @@ -1347,8 +1348,8 @@ void sub_8010384(struct Sprite *sprite) u16 species; u8 yOffset; - if (ewram17800[r6].unk2 != 0) - species = ewram17800[r6].unk2; + if (ewram17800[r6].transformedSpecies != 0) + species = ewram17800[r6].transformedSpecies; else species = sprite->data2; @@ -1584,7 +1585,7 @@ void sub_8010874(void) for (j = 0; j < (u32)0x1C; j++) r4[j] = 0; - gDisableStructs[i].IsFirstTurn = 2; + gDisableStructs[i].isFirstTurn= 2; gUnknown_02024C70[i] = 0; gLastUsedMove[i] = 0; gMoveHitWith[i] = 0; @@ -1655,25 +1656,25 @@ void sub_8010874(void) ewram16113 = 0; for (i = 0; i < 11; i++) gBattleResults.unk36[i] = 0; - gBattleResults.BattleTurnCounter = 0; - gBattleResults.PlayerFaintCounter = 0; - gBattleResults.OpponentFaintCounter = 0; + gBattleResults.battleTurnCounter = 0; + gBattleResults.playerFaintCounter = 0; + gBattleResults.opponentFaintCounter = 0; gBattleResults.unk2 = 0; gBattleResults.unk3 = 0; gBattleResults.unk4 = 0; gBattleResults.unk5_0 = 0; gBattleResults.unk5_1 = 0; - gBattleResults.LastOpponentSpecies = 0; - gBattleResults.LastUsedMove = 0; - gBattleResults.OpponentMove = 0; - gBattleResults.Poke1Species = 0; - gBattleResults.OpponentSpecies = 0; - gBattleResults.CaughtPoke = 0; + gBattleResults.lastOpponentSpecies = 0; + gBattleResults.lastUsedMove = 0; + gBattleResults.opponentMove = 0; + gBattleResults.poke1Species = 0; + gBattleResults.opponentSpecies = 0; + gBattleResults.caughtPoke = 0; for (i = 0; i < 10; i++) { - gBattleResults.PokeString1[i] = 0; - gBattleResults.PokeString2[i] = 0; - gBattleResults.CaughtNick[i] = 0; + gBattleResults.pokeString1[i] = 0; + gBattleResults.pokeString2[i] = 0; + gBattleResults.caughtNick[i] = 0; } } @@ -1692,25 +1693,25 @@ void SwitchInClearStructs(void) { struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i]; - if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].BankPreventingEscape == gActiveBank) + if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].bankPreventingEscape == gActiveBank) sp20->unk0 &= ~0x04000000; - if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].BankWithSureHit == gActiveBank) + if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank) { gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; - gDisableStructs[i].BankWithSureHit = 0; + gDisableStructs[i].bankWithSureHit = 0; } } } if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); - gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_RECEIVER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); + gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); for (i = 0; i < gNoOfAllBanks; i++) { if (GetBankSide(gActiveBank) != GetBankSide(i) && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 - && (gDisableStructs[i].BankWithSureHit == gActiveBank)) + && (gDisableStructs[i].bankWithSureHit == gActiveBank)) { gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; gStatuses3[i] |= 0x10; @@ -1740,13 +1741,13 @@ void SwitchInClearStructs(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { - gDisableStructs[gActiveBank].SubstituteHP = sp0.SubstituteHP; - gDisableStructs[gActiveBank].BankWithSureHit = sp0.BankWithSureHit; - gDisableStructs[gActiveBank].unkF_0 = sp0.unkF_0; - gDisableStructs[gActiveBank].unkF_4 = sp0.unkF_4; + gDisableStructs[gActiveBank].substituteHP = sp0.substituteHP; + gDisableStructs[gActiveBank].bankWithSureHit = sp0.bankWithSureHit; + gDisableStructs[gActiveBank].perishSong1 = sp0.perishSong1; + gDisableStructs[gActiveBank].perishSong2 = sp0.perishSong2; } - gDisableStructs[gActiveBank].IsFirstTurn = 2; + gDisableStructs[gActiveBank].isFirstTurn= 2; gLastUsedMove[gActiveBank] = 0; gMoveHitWith[gActiveBank] = 0; gUnknown_02024C44[gActiveBank] = 0; @@ -1781,7 +1782,7 @@ void UndoEffectsAfterFainting(void) gStatuses3[gActiveBank] = 0; for (i = 0; i < gNoOfAllBanks; i++) { - if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].BankPreventingEscape == gActiveBank) + if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank) gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; if (gBattleMons[i].status2 & (gBitTable[gActiveBank] << 16)) gBattleMons[i].status2 &= ~(gBitTable[gActiveBank] << 16); @@ -1794,27 +1795,27 @@ void UndoEffectsAfterFainting(void) ptr = (u8 *)&gDisableStructs[gActiveBank]; for (i = 0; i < (u32)0x1C; i++) ptr[i] = 0; - gProtectStructs[gActiveBank].Protected = 0; - gProtectStructs[gActiveBank].Endured = 0; - gProtectStructs[gActiveBank].OnlyStruggle = 0; - gProtectStructs[gActiveBank].HelpingHand = 0; - gProtectStructs[gActiveBank].BounceMove = 0; - gProtectStructs[gActiveBank].StealMove = 0; - gProtectStructs[gActiveBank].Flag0Unknown = 0; - gProtectStructs[gActiveBank].PrlzImmobility = 0; - gProtectStructs[gActiveBank].ConfusionSelfDmg = 0; - gProtectStructs[gActiveBank].NotEffective = 0; - gProtectStructs[gActiveBank].ChargingTurn = 0; - gProtectStructs[gActiveBank].FleeFlag = 0; - gProtectStructs[gActiveBank].UsedImprisionedMove = 0; - gProtectStructs[gActiveBank].LoveImmobility = 0; - gProtectStructs[gActiveBank].UsedDisabledMove = 0; - gProtectStructs[gActiveBank].UsedTauntedMove = 0; - gProtectStructs[gActiveBank].Flag2Unknown = 0; - gProtectStructs[gActiveBank].FlinchImmobility = 0; - gProtectStructs[gActiveBank].NotFirstStrike = 0; - - gDisableStructs[gActiveBank].IsFirstTurn = 2; + gProtectStructs[gActiveBank].protected = 0; + gProtectStructs[gActiveBank].endured = 0; + gProtectStructs[gActiveBank].onlyStruggle = 0; + gProtectStructs[gActiveBank].helpingHand = 0; + gProtectStructs[gActiveBank].bounceMove = 0; + gProtectStructs[gActiveBank].stealMove = 0; + gProtectStructs[gActiveBank].flag0Unknown = 0; + gProtectStructs[gActiveBank].prlzImmobility = 0; + gProtectStructs[gActiveBank].confusionSelfDmg = 0; + gProtectStructs[gActiveBank].notEffective = 0; + gProtectStructs[gActiveBank].chargingTurn = 0; + gProtectStructs[gActiveBank].fleeFlag = 0; + gProtectStructs[gActiveBank].usedImprisionedMove = 0; + gProtectStructs[gActiveBank].loveImmobility = 0; + gProtectStructs[gActiveBank].usedDisabledMove = 0; + gProtectStructs[gActiveBank].usedTauntedMove = 0; + gProtectStructs[gActiveBank].flag2Unknown = 0; + gProtectStructs[gActiveBank].flinchImmobility = 0; + gProtectStructs[gActiveBank].notFirstStrike = 0; + + gDisableStructs[gActiveBank].isFirstTurn= 2; gLastUsedMove[gActiveBank] = 0; gMoveHitWith[gActiveBank] = 0; gUnknown_02024C44[gActiveBank] = 0; @@ -1866,7 +1867,7 @@ static void BattlePrepIntroSlide(void) if (gBattleExecBuffer == 0) { gActiveBank = GetBankByPlayerAI(0); - EmitBattleIntroSlide(0, gBattleTerrain); + EmitIntroSlide(0, gBattleTerrain); MarkBufferBankForExecution(gActiveBank); gBattleMainFunc = sub_8011384; gBattleCommunication[0] = 0; @@ -1910,7 +1911,7 @@ void sub_8011384(void) if (GetBankIdentity(gActiveBank) == 0) { - dp01_build_cmdbuf_x07_7_7_7(0); + EmitTrainerThrow(0); MarkBufferBankForExecution(gActiveBank); } @@ -1918,20 +1919,20 @@ void sub_8011384(void) { if (GetBankIdentity(gActiveBank) == 1) { - dp01_build_cmdbuf_x07_7_7_7(0); + EmitTrainerThrow(0); MarkBufferBankForExecution(gActiveBank); } if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } else { if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) { - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); - dp01_build_cmdbuf_x04_4_4_4(0); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + EmitLoadPokeSprite(0); MarkBufferBankForExecution(gActiveBank); } } @@ -1941,7 +1942,7 @@ void sub_8011384(void) if (GetBankIdentity(gActiveBank) == 2 || GetBankIdentity(gActiveBank) == 3) { - dp01_build_cmdbuf_x07_7_7_7(0); + EmitTrainerThrow(0); MarkBufferBankForExecution(gActiveBank); } } @@ -1979,7 +1980,7 @@ void bc_801333C(void) } } gActiveBank = GetBankByPlayerAI(1); - dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80); + Emitcmd48(0, (u8 *)sp0, 0x80); MarkBufferBankForExecution(gActiveBank); for (i = 0; i < 6; i++) @@ -1997,7 +1998,7 @@ void bc_801333C(void) } } gActiveBank = GetBankByPlayerAI(0); - dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80); + Emitcmd48(0, (u8 *)sp0, 0x80); MarkBufferBankForExecution(gActiveBank); gBattleMainFunc = bc_battle_begin_message; @@ -2063,13 +2064,13 @@ void sub_8011834(void) { if (GetBankIdentity(gActiveBank) == 1) { - dp01_build_cmdbuf_x2F_2F_2F_2F(0); + EmitTrainerBallThrow(0); MarkBufferBankForExecution(gActiveBank); } if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 3) { - dp01_build_cmdbuf_x2F_2F_2F_2F(0); + EmitTrainerBallThrow(0); MarkBufferBankForExecution(gActiveBank); } } @@ -2085,7 +2086,7 @@ void bc_801362C(void) { if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } gBattleMainFunc = sub_8011970; } @@ -2115,13 +2116,13 @@ void sub_80119B4(void) { if (GetBankIdentity(gActiveBank) == 0) { - dp01_build_cmdbuf_x2F_2F_2F_2F(0); + EmitTrainerBallThrow(0); MarkBufferBankForExecution(gActiveBank); } if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 2) { - dp01_build_cmdbuf_x2F_2F_2F_2F(0); + EmitTrainerBallThrow(0); MarkBufferBankForExecution(gActiveBank); } } @@ -2140,7 +2141,7 @@ void unref_sub_8011A68(void) { if (GetBankSide(gActiveBank) == 0) { - sub_800C704(0, gBattlePartyID[gActiveBank], 0); + EmitSendOutPoke(0, gBattlePartyID[gActiveBank], 0); MarkBufferBankForExecution(gActiveBank); } } @@ -2167,7 +2168,7 @@ void BattleBeginFirstTurn(void) { for (j = i + 1; j < gNoOfAllBanks; j++) { - if (b_first_side(gTurnOrder[i], gTurnOrder[j], 1) != 0) + if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 1) != 0) sub_8012FBC(i, j); } } @@ -2191,7 +2192,7 @@ void BattleBeginFirstTurn(void) return; while (ewram160F9 < gNoOfAllBanks) { - if (sub_801A02C(0, gTurnOrder[ewram160F9], 0) != 0) + if (ItemBattleEffects(0, gTurnOrder[ewram160F9], 0) != 0) r9++; ewram160F9++; if (r9 != 0) @@ -2286,8 +2287,8 @@ void BattleTurnPassed(void) gBattleMainFunc = sub_80138F0; return; } - if (gBattleResults.BattleTurnCounter < 0xFF) - gBattleResults.BattleTurnCounter++; + if (gBattleResults.battleTurnCounter < 0xFF) + gBattleResults.battleTurnCounter++; for (i = 0; i < gNoOfAllBanks; i++) { gActionForBanks[i] = 0xFF; @@ -2429,7 +2430,7 @@ void sub_8012324(void) } else { - dp01_build_cmdbuf_x12_a_bb(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8)); + Emitcmd18(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8)); MarkBufferBankForExecution(gActiveBank); gBattleCommunication[gActiveBank]++; } diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c new file mode 100644 index 000000000..b59757f00 --- /dev/null +++ b/src/battle/battle_3.c @@ -0,0 +1,6595 @@ +#include "global.h" +#include "abilities.h" +#include "battle.h" +#include "moves.h" +#include "item.h" +#include "items.h" +#include "hold_effects.h" +#include "species.h" +#include "pokemon.h" +#include "data2.h" +#include "rng.h" +#include "text.h" +#include "battle_move_effects.h" +#include "string_util.h" +#include "flags.h" + +extern u8* gBattlescriptCurrInstr; +extern u8 gActiveBank; +extern u8 gBattleBufferB[4][0x200]; +extern u8* gUnknown_02024C1C[4]; //battlescript location when you try to choose a move you're not allowed to +extern u16 gLastUsedMove[4]; +extern struct BattlePokemon gBattleMons[4]; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gStringBank; +extern u16 gLastUsedItem; +extern u16 gCurrentMove; +extern const u32 gBitTable[]; +extern u16 gBattleTypeFlags; +extern u8 gNoOfAllBanks; +extern u32 gStatuses3[4]; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gTurnOrder[4]; +extern u16 gSideAffecting[2]; +extern u16 gBattleWeather; +extern void (*gBattleMainFunc)(void); +extern u8 gAbsentBankFlags; +extern u8 gBattleCommunication[]; +extern u32 gHitMarker; +extern u8 gEffectBank; +extern u8 gBank1; +extern s32 gBattleMoveDamage; +extern u16 gBattlePartyID[4]; +extern u16 gChosenMovesByBanks[4]; +extern s32 gTakenDmg[4]; +extern u8 gTakenDmgBanks[4]; +extern u8 gBattleMoveFlags; +extern u8 gLastUsedAbility; +extern u8 gBattleTextBuff2[]; +extern u8 gFightStateTracker; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gUnknown_02024BE5; +extern u8 gCurrMovePos; +extern u16 gRandomMove; +extern s32 gBattleMoveDamage; +extern u16 gDynamicBasePower; +extern u32 gBattleExecBuffer; +extern const u16 gSoundMovesTable[]; +extern const u8 gStatusConditionString_PoisonJpn[]; +extern const u8 gStatusConditionString_SleepJpn[]; +extern const u8 gStatusConditionString_ParalysisJpn[]; +extern const u8 gStatusConditionString_BurnJpn[]; +extern const u8 gStatusConditionString_IceJpn[]; +extern const u8 gStatusConditionString_ConfusionJpn[]; +extern const u8 gStatusConditionString_LoveJpn[]; +extern const BattleCmdFunc gBattleScriptingCommandsTable[]; + +u8 IsImprisoned(u8 bank, u16 move); +u8 GetBankByPlayerAI(u8 ID); +u8 GetBankIdentity(u8 bank); +u8 GetBankSide(u8 bank); +void b_call_bc_move_exec(u8* BS_ptr); +bool8 sub_8015660(u8 bank); //check if a move failed +void SetMoveEffect(bool8 primary, u8 certainArg); +bool8 UproarWakeUpCheck(u8 bank); +bool8 sub_8018018(u8 bank, u8, u8); +void sub_8015740(u8 bank); +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); +u8 CountTrailingZeroBits(u32 a); +u8 GetMoveTarget(u16 move, u8 useMoveTarget); +u8 sub_803FC34(u8 bank); +u16 sub_803FBFC(u8 a); +u8 weather_get_current(void); +void b_push_move_exec(u8* BS_ptr); +void RecordAbilityBattle(u8 bank, u8 ability); +void RecordItemBattle(u8 bank, u8 holdEffect); +void sub_8013F54(void); +void sub_8013FBC(void); +s8 GetPokeFlavourRelation(u32 pid, u8 flavor); + +extern u8 BattleScript_MoveSelectionDisabledMove[]; +extern u8 BattleScript_MoveSelectionTormented[]; +extern u8 BattleScript_MoveSelectionTaunted[]; +extern u8 BattleScript_MoveSelectionImprisoned[]; +extern u8 BattleScript_MoveSelectionChoiceBanded[]; +extern u8 BattleScript_MoveSelectionNoPP[]; +extern u8 BattleScript_NoMovesLeft[]; +extern u8 BattleScript_WishComesTrue[]; +extern u8 BattleScript_IngrainTurnHeal[]; +extern u8 BattleScript_LeechSeedTurnDrain[]; +extern u8 BattleScript_PoisonTurnDmg[]; +extern u8 BattleScript_BurnTurnDmg[]; +extern u8 BattleScript_NightmareTurnDmg[]; +extern u8 BattleScript_CurseTurnDmg[]; +extern u8 BattleScript_WrapTurnDmg[]; +extern u8 BattleScript_WrapEnds[]; +extern u8 BattleScript_DisabledNoMore[]; +extern u8 BattleScript_EncoredNoMore[]; + +extern u8 gUnknown_081D9030[]; +extern u8 gUnknown_081D8F62[]; +extern u8 gUnknown_081D8FFF[]; +extern u8 gUnknown_081D8F7D[]; +extern u8 gUnknown_081D9016[]; +extern u8 gUnknown_081D9008[]; +extern u8 gUnknown_081D9041[]; +extern u8 gUnknown_081D950F[]; //uproar wakeup BS +extern u8 gUnknown_081D957E[]; //uproar BS +extern u8 BattleScript_ThrashConfuses[]; +extern u8 BattleScript_YawnMakesAsleep[]; +extern u8 BattleScript_FutureSightHits[]; +extern u8 BattleScript_PerishSongHits[]; +extern u8 BattleScript_PerishSongTimerGoesDown[]; +extern u8 gUnknown_081D8C72[]; +extern u8 gUnknown_081D8C7B[]; + +extern u8 BattleScript_MoveUsedIsAsleep[]; +extern u8 BattleScript_MoveUsedWokeUp[]; +extern u8 BattleScript_MoveUsedIsFrozen[]; +extern u8 BattleScript_MoveUsedUnfroze[]; +extern u8 BattleScript_MoveUsedLoafingAround[]; +extern u8 BattleScript_MoveUsedMustRecharge[]; +extern u8 BattleScript_MoveUsedFlinched[]; +extern u8 BattleScript_MoveUsedIsDisabled[]; +extern u8 BattleScript_MoveUsedIsTaunted[]; +extern u8 BattleScript_MoveUsedIsImprisoned[]; +extern u8 BattleScript_MoveUsedIsConfused[]; +extern u8 BattleScript_MoveUsedIsConfusedNoMore[]; +extern u8 BattleScript_MoveUsedIsParalyzed[]; +extern u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; +extern u8 BattleScript_MoveUsedIsInLove[]; +extern u8 BattleScript_BideStoringEnergy[]; +extern u8 BattleScript_BideAttack[]; +extern u8 BattleScript_BideNoEnergyToAttack[]; + +extern u8 gUnknown_081D901D[]; //load weather from overworld +extern u8 BattleScript_DrizzleActivates[]; +extern u8 BattleScript_SandstreamActivates[]; +extern u8 BattleScript_DroughtActivates[]; +extern u8 BattleScript_CastformChange[]; +extern u8 BattleScript_RainDishActivates[]; +extern u8 BattleScript_ShedSkinActivates[]; +extern u8 BattleScript_SpeedBoostActivates[]; +extern u8 BattleScript_SoundproofProtected[]; +extern u8 BattleScript_MoveHPDrain[]; +extern u8 BattleScript_MoveHPDrain_PPLoss[]; +extern u8 BattleScript_FlashFireBoost[]; +extern u8 BattleScript_FlashFireBoost_PPLoss[]; +extern u8 BattleScript_MoveHPDrain_FullHP[]; +extern u8 BattleScript_MoveHPDrain_FullHP_PPLoss[]; +extern u8 BattleScript_ColorChangeActivates[]; +extern u8 BattleScript_RoughSkinActivates[]; +extern u8 BattleScript_ApplySecondaryEffect[]; +extern u8 BattleScript_CuteCharmActivates[]; +extern u8 gUnknown_081D9956[]; //ability status clear +extern u8 BattleScript_SynchronizeActivates[]; +extern u8 gUnknown_081D978C[]; //intimidate1 +extern u8 gUnknown_081D9795[]; //intimidate2 +extern u8 BattleScript_TraceActivates[]; + +extern u8 BattleScript_WhiteHerbEnd2[]; +extern u8 BattleScript_WhiteHerbRet[]; +extern u8 BattleScript_ItemHealHP_RemoveItem[]; +extern u8 BattleScript_BerryPPHealEnd2[]; +extern u8 BattleScript_ItemHealHP_End2[]; +extern u8 BattleScript_BerryConfuseHealEnd2[]; +extern u8 BattleScript_BerryStatRaiseEnd2[]; +extern u8 BattleScript_BerryFocusEnergyEnd2[]; +extern u8 BattleScript_BerryCurePrlzEnd2[]; +extern u8 BattleScript_BerryCurePsnEnd2[]; +extern u8 BattleScript_BerryCureBrnEnd2[]; +extern u8 BattleScript_BerryCureFrzEnd2[]; +extern u8 BattleScript_BerryCureSlpEnd2[]; +extern u8 BattleScript_BerryCureConfusionEnd2[]; +extern u8 gUnknown_081D9A44[]; //berry cure any status end2 +extern u8 BattleScript_BerryCureParRet[]; +extern u8 BattleScript_BerryCurePsnRet[]; +extern u8 BattleScript_BerryCureBrnRet[]; +extern u8 BattleScript_BerryCureFrzRet[]; +extern u8 BattleScript_BerryCureSlpRet[]; +extern u8 BattleScript_BerryCureConfusionRet[]; +extern u8 gUnknown_081D9A4A[]; //berry cure any status return + +extern u8 BattleScript_ItemHealHP_Ret[]; + +extern u8 gUnknown_081D995F[]; //disobedient while asleep +extern u8 gUnknown_081D996F[]; //disobedient, uses a random move +extern u8 gUnknown_081D9989[]; //disobedient, went to sleep +extern u8 gUnknown_081D99A0[]; //disobedient, hits itself + +#define CHOICED_MOVE(bank)(((u16*)(&ewram[bank * 2 + 0x160e8]))) + +//array entries for battle communication +#define MOVE_EFFECT_BYTE 0x3 +#define MULTISTRING_CHOOSER 0x5 +#define MSG_DISPLAY 0x7 + +void b_movescr_stack_push(u8* BS_ptr) +{ + B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = BS_ptr; +} + +void b_movescr_stack_push_cursor(void) +{ + B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = gBattlescriptCurrInstr; +} + +void b_movescr_stack_pop_cursor(void) +{ + gBattlescriptCurrInstr = B_BATTLESCRIPTS_STACK->ptr[--B_BATTLESCRIPTS_STACK->size]; +} + +u8 sub_8015894(void) //msg can't select a move +{ + u8 limitations = 0; + u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]]; + u8 holdEffect; + u16* choicedMove = CHOICED_MOVE(gActiveBank); + if (gDisableStructs[gActiveBank].disabledMove == move && move) + { + BATTLE_STRUCT->scriptingActive = gActiveBank; + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionDisabledMove; + limitations++; + } + if (move == gLastUsedMove[gActiveBank] && move != MOVE_STRUGGLE && gBattleMons[gActiveBank].status2 & STATUS2_TORMENT) + { + CancelMultiTurnMoves(gActiveBank); + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTormented; + limitations++; + } + if (gDisableStructs[gActiveBank].tauntTimer1 && gBattleMoves[move].power == 0) + { + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTaunted; + limitations++; + } + if (IsImprisoned(gActiveBank, move)) + { + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionImprisoned; + limitations++; + } + if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[gActiveBank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item); + gStringBank = gActiveBank; + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move) + { + gCurrentMove = *choicedMove; + gLastUsedItem = gBattleMons[gActiveBank].item; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionChoiceBanded; + limitations++; + } + if (gBattleMons[gActiveBank].pp[gBattleBufferB[gActiveBank][2]] == 0) + { + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionNoPP; + limitations++; + } + return limitations; +} + +#define MOVE_LIMITATION_ZEROMOVE (1 << 0) +#define MOVE_LIMITATION_PP (1 << 1) +#define MOVE_LIMITATION_DISABLED (1 << 2) +#define MOVE_LIMITATION_TORMENTED (1 << 3) +#define MOVE_LIMITATION_TAUNT (1 << 4) +#define MOVE_LIMITATION_IMPRISION (1 << 5) + +u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) +{ + u8 holdEffect; + u16* choicedMove = CHOICED_MOVE(bank); + s32 i; + if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[bank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item); + gStringBank = bank; + for (i = 0; i < 4; i++) + { + if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].moves[i] == gLastUsedMove[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) + unusableMoves |= gBitTable[i]; + if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) + unusableMoves |= gBitTable[i]; + if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION) + unusableMoves |= gBitTable[i]; + if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i]) + unusableMoves |= gBitTable[i]; + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i]) + unusableMoves |= gBitTable[i]; + } + return unusableMoves; +} + +bool8 AreAllMovesUnusable(void) +{ + u8 unusable; + unusable = CheckMoveLimitations(gActiveBank, 0, 0xFF); + if (unusable == 0xF) //all moves are unusable + { + gProtectStructs[gActiveBank].onlyStruggle = 1; + gUnknown_02024C1C[gActiveBank] = BattleScript_NoMovesLeft; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleBufferB[gActiveBank][3] = GetBankByPlayerAI((GetBankIdentity(gActiveBank) ^ 1) | (Random() & 2)); + else + gBattleBufferB[gActiveBank][3] = GetBankByPlayerAI(GetBankIdentity(gActiveBank) ^ 1); + } + else + gProtectStructs[gActiveBank].onlyStruggle = 0; + return (unusable == 0xF); +} + +u8 IsImprisoned(u8 bank, u16 move) +{ + u8 imprisionedMoves = 0; + u8 bankSide = GetBankSide(bank); + s32 i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED) + { + s32 j; + for (j = 0; j < 4; j++) + { + if (move == gBattleMons[i].moves[j]) + break; + } + if (j < 4) + imprisionedMoves++; + } + } + return imprisionedMoves; +} + +u8 UpdateTurnCounters(void) +{ + u8 effect = 0; + s32 i; + + for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankAttacker]; gBankAttacker++) + { + } + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankTarget]; gBankTarget++) + { + } + + do + { + u8 sideBank; + + switch (BATTLE_STRUCT->turncountersTracker) + { + case 0: + for (i = 0; i < gNoOfAllBanks; i++) + { + gTurnOrder[i] = i; + } + for (i = 0; i < gNoOfAllBanks - 1; i++) + { + s32 j; + for (j = i + 1; j < gNoOfAllBanks; j++) + { + if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0)) + sub_8012FBC(i, j); + } + } + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + case 1: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + + if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT) + { + if (--gSideTimer[sideBank].reflectTimer == 0) + { + + gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; + b_call_bc_move_exec(gUnknown_081D9030); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_REFLECT; + gBattleTextBuff1[3] = MOVE_REFLECT >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 2: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN) + { + if (--gSideTimer[sideBank].lightscreenTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; + b_call_bc_move_exec(gUnknown_081D9030); + gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN; + gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 3: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideTimer[sideBank].mistTimer && --gSideTimer[sideBank].mistTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; + b_call_bc_move_exec(gUnknown_081D9030); + gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_MIST; + gBattleTextBuff1[3] = MOVE_MIST >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 4: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD) + { + if (--gSideTimer[sideBank].safeguardTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; + b_call_bc_move_exec(gUnknown_081D9041); + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 5: + while (BATTLE_STRUCT->turnSideTracker < gNoOfAllBanks) + { + gActiveBank = gTurnOrder[BATTLE_STRUCT->turnSideTracker]; + if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) + { + gBankTarget = gActiveBank; + b_call_bc_move_exec(BattleScript_WishComesTrue); + effect++; + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + } + break; + case 6: + if (gBattleWeather & WEATHER_RAIN_ANY) + { + if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) + { + if (--gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_RAIN_TEMPORARY; + gBattleWeather &= ~WEATHER_RAIN_DOWNPOUR; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + b_call_bc_move_exec(gUnknown_081D8F62); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 7: + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY; + gBattlescriptCurrInstr = gUnknown_081D8FFF; + } + else + gBattlescriptCurrInstr = gUnknown_081D8F7D; + + BATTLE_STRUCT->animArg1 = 0xC; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + b_call_bc_move_exec(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 8: + if (gBattleWeather & WEATHER_SUN_ANY) + { + if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_SUN_TEMPORARY; + gBattlescriptCurrInstr = gUnknown_081D9016; + } + else + gBattlescriptCurrInstr = gUnknown_081D9008; + + b_call_bc_move_exec(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 9: + if (gBattleWeather & WEATHER_HAIL) + { + if (--gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_HAIL; + gBattlescriptCurrInstr = gUnknown_081D8FFF; + } + else + gBattlescriptCurrInstr = gUnknown_081D8F7D; + + BATTLE_STRUCT->animArg1 = 0xD; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + b_call_bc_move_exec(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 10: + effect++; + break; + } + } while (effect == 0); + return (gBattleMainFunc != BattleTurnPassed); +} + +#define TURNBASED_MAX_CASE 19 + +u8 TurnBasedEffects(void) +{ + u8 effect = 0; + + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); + while (BATTLE_STRUCT->turnEffectsBank < gNoOfAllBanks && BATTLE_STRUCT->turnEffectsTracker <= TURNBASED_MAX_CASE) + { + gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->turnEffectsBank]; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + { + BATTLE_STRUCT->turnEffectsBank++; + } + else + { + switch (BATTLE_STRUCT->turnEffectsTracker) + { + case 0: // ingrain + if ((gStatuses3[gActiveBank] & STATUS3_ROOTED) + && gBattleMons[gActiveBank].hp != gBattleMons[gActiveBank].maxHP + && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + b_call_bc_move_exec(BattleScript_IngrainTurnHeal); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 1: // end turn abilities + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBank, 0, 0, 0)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 2: // item effects + if (ItemBattleEffects(1, gActiveBank, 0)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 18: // item effects again + if (ItemBattleEffects(1, gActiveBank, 1)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 3: // leech seed + if (gStatuses3[gActiveBank] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBank].hp != 0) + { + gBankTarget = gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BATTLE_STRUCT->animArg1 = gBankTarget; + BATTLE_STRUCT->animArg2 = gBankAttacker; + b_call_bc_move_exec(BattleScript_LeechSeedTurnDrain); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 4: // poison + if ((gBattleMons[gActiveBank].status1 & STATUS_POISON) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_call_bc_move_exec(BattleScript_PoisonTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 5: // toxic poison + if ((gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns + gBattleMons[gActiveBank].status1 += 0x100; + gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8; + b_call_bc_move_exec(BattleScript_PoisonTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 6: // burn + if ((gBattleMons[gActiveBank].status1 & STATUS_BURN) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_call_bc_move_exec(BattleScript_BurnTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 7: // spooky nightmares + if ((gBattleMons[gActiveBank].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBank].hp != 0) + { + // missing sleep check + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_call_bc_move_exec(BattleScript_NightmareTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 8: // curse + if ((gBattleMons[gActiveBank].status2 & STATUS2_CURSED) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_call_bc_move_exec(BattleScript_CurseTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 9: // wrap + if ((gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMons[gActiveBank].status2 -= 0x2000; + if (gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) // damaged by wrap + { + BATTLE_STRUCT->animArg1 = ewram[gActiveBank * 2 + 0x16004]; + BATTLE_STRUCT->animArg2 = ewram[gActiveBank * 2 + 0x16005]; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = ewram[gActiveBank * 2 + 0x16004]; + gBattleTextBuff1[3] = ewram[gActiveBank * 2 + 0x16005]; + gBattleTextBuff1[4] = EOS; + gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else // broke free + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = ewram[gActiveBank * 2 + 0x16004]; + gBattleTextBuff1[3] = ewram[gActiveBank * 2 + 0x16005]; + gBattleTextBuff1[4] = EOS; + gBattlescriptCurrInstr = BattleScript_WrapEnds; + } + b_call_bc_move_exec(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 10: // uproar + if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) + { + for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks; gBankAttacker++) + { + if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + && gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + b_call_bc_move_exec(gUnknown_081D950F); + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + } + if (gBankAttacker != gNoOfAllBanks) + { + effect = 2; // a pokemon was awaken + break; + } + else + { + gBankAttacker = gActiveBank; + gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down + if (sub_8015660(gActiveBank)) + { + CancelMultiTurnMoves(gActiveBank); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleMons[gActiveBank].status2 |= STATUS2_MULTIPLETURNS; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + CancelMultiTurnMoves(gActiveBank); + } + b_call_bc_move_exec(gUnknown_081D957E); + effect = 1; + } + } + if (effect != 2) + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 11: // thrash + if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) + { + gBattleMons[gActiveBank].status2 -= 0x400; + if (sub_8015660(gActiveBank)) + CancelMultiTurnMoves(gActiveBank); + else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) + && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS)) + { + gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS); + if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47; + SetMoveEffect(1, 0); + if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) + b_call_bc_move_exec(BattleScript_ThrashConfuses); + effect++; + } + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 12: // disable + if (gDisableStructs[gActiveBank].disableTimer1 != 0) + { + int i; + for (i = 0; i < 4; i++) + { + if (gDisableStructs[gActiveBank].disabledMove == gBattleMons[gActiveBank].moves[i]) + break; + } + if (i == 4) // pokemon does not have the disabled move anymore + { + gDisableStructs[gActiveBank].disabledMove = 0; + gDisableStructs[gActiveBank].disableTimer1 = 0; + } + else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends + { + gDisableStructs[gActiveBank].disabledMove = 0; + b_call_bc_move_exec(BattleScript_DisabledNoMore); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 13: // encore + if (gDisableStructs[gActiveBank].encoreTimer1 != 0) + { + if (gBattleMons[gActiveBank].moves[gDisableStructs[gActiveBank].encoredMovePos] != gDisableStructs[gActiveBank].encoredMove) // pokemon does not have the encored move anymore + { + gDisableStructs[gActiveBank].encoredMove = 0; + gDisableStructs[gActiveBank].encoreTimer1 = 0; + } + else if (--gDisableStructs[gActiveBank].encoreTimer1 == 0 + || gBattleMons[gActiveBank].pp[gDisableStructs[gActiveBank].encoredMovePos] == 0) + { + gDisableStructs[gActiveBank].encoredMove = 0; + gDisableStructs[gActiveBank].encoreTimer1 = 0; + b_call_bc_move_exec(BattleScript_EncoredNoMore); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 14: // lock-on decrement + if (gStatuses3[gActiveBank] & STATUS3_ALWAYS_HITS) + gStatuses3[gActiveBank] -= 0x8; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 15: // charge + if (gDisableStructs[gActiveBank].chargeTimer1 && --gDisableStructs[gActiveBank].chargeTimer1 == 0) + gStatuses3[gActiveBank] &= ~STATUS3_CHARGED_UP; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 16: // taunt + if (gDisableStructs[gActiveBank].tauntTimer1) + gDisableStructs[gActiveBank].tauntTimer1--; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 17: // yawn + if (gStatuses3[gActiveBank] & STATUS3_YAWN) + { + gStatuses3[gActiveBank] -= 0x800; + if (!(gStatuses3[gActiveBank] & STATUS3_YAWN) && !(gBattleMons[gActiveBank].status1 & STATUS_ANY) + && gBattleMons[gActiveBank].ability != ABILITY_VITAL_SPIRIT + && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBank)) + { + CancelMultiTurnMoves(gActiveBank); + gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + gEffectBank = gActiveBank; + b_call_bc_move_exec(BattleScript_YawnMakesAsleep); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 19: // done + BATTLE_STRUCT->turnEffectsTracker = 0; + BATTLE_STRUCT->turnEffectsBank++; + break; + } + if (effect != 0) + return effect; + } + } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); + return 0; +} + +bool8 sub_80170DC(void) // handle future sight and perish song +{ + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); + switch (BATTLE_STRUCT->sub80170DC_Tracker) + { + case 0: // future sight + while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) + { + gActiveBank = BATTLE_STRUCT->sub80170DC_Bank; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + BATTLE_STRUCT->sub80170DC_Bank++; + else + { + BATTLE_STRUCT->sub80170DC_Bank++; + if (gWishFutureKnock.futureSightCounter[gActiveBank] && --gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) + { + if (gWishFutureKnock.futureSightMove[gActiveBank] == MOVE_FUTURE_SIGHT) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else //Doom Desire + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank]; + gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8; + gBattleTextBuff1[4] = 0xFF; + gBankTarget = gActiveBank; + gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; + gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; + b_call_bc_move_exec(BattleScript_FutureSightHits); + return 1; + } + } + } + BATTLE_STRUCT->sub80170DC_Tracker = 1; + BATTLE_STRUCT->sub80170DC_Bank = 0; + case 1: // perish song + while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) + { + gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->sub80170DC_Bank]; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + BATTLE_STRUCT->sub80170DC_Bank++; + else + { + BATTLE_STRUCT->sub80170DC_Bank++; + if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 1; + gBattleTextBuff1[3] = 1; + gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSong1; + gBattleTextBuff1[5] = 0xFF; + if (gDisableStructs[gActiveBank].perishSong1 == 0) + { + gStatuses3[gActiveBank] &= ~(STATUS3_PERISH_SONG); + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + gBattlescriptCurrInstr = BattleScript_PerishSongHits; + } + else + { + gDisableStructs[gActiveBank].perishSong1--; + gBattlescriptCurrInstr = BattleScript_PerishSongTimerGoesDown; + } + b_call_bc_move_exec(gBattlescriptCurrInstr); + return 1; + } + } + } + break; + } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); + return 0; +} + +#define sub_80173A4_MAX_CASE 7 + +bool8 sub_80173A4(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + return 0; + do + { + int i; + switch (BATTLE_STRUCT->sub80173A4_Tracker) + { + case 0: + BATTLE_STRUCT->unk1605A = 0; + BATTLE_STRUCT->sub80173A4_Tracker++; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gAbsentBankFlags & gBitTable[i] && !sub_8018018(i, 6, 6)) + gAbsentBankFlags &= ~(gBitTable[i]); + } + case 1: + do + { + gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; + if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(BATTLE_STRUCT->unk16113 & gBitTable[gBattlePartyID[BATTLE_STRUCT->unk1605A]]) && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) + { + b_call_bc_move_exec(gUnknown_081D8C72); + BATTLE_STRUCT->sub80173A4_Tracker = 2; + return 1; + } + } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); + BATTLE_STRUCT->sub80173A4_Tracker = 3; + break; + case 2: + sub_8015740(gBank1); + if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) + BATTLE_STRUCT->sub80173A4_Tracker = 3; + else + BATTLE_STRUCT->sub80173A4_Tracker = 1; + break; + case 3: + BATTLE_STRUCT->unk1605A = 0; + BATTLE_STRUCT->sub80173A4_Tracker++; + case 4: + do + { + gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; //or should banks be switched? + if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) + { + b_call_bc_move_exec(gUnknown_081D8C7B); + BATTLE_STRUCT->sub80173A4_Tracker = 5; + return 1; + } + } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); + BATTLE_STRUCT->sub80173A4_Tracker = 6; + break; + case 5: + if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) + BATTLE_STRUCT->sub80173A4_Tracker = 6; + else + BATTLE_STRUCT->sub80173A4_Tracker = 4; + break; + case 6: + if (AbilityBattleEffects(9, 0, 0, 0, 0) || AbilityBattleEffects(0xB, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(6, 0, 0, 0, 0)) + return 1; + BATTLE_STRUCT->sub80173A4_Tracker++; + break; + case 7: + break; + } + } while (BATTLE_STRUCT->sub80173A4_Tracker != sub_80173A4_MAX_CASE); + return 0; +} + +void b_clear_atk_up_if_hit_flag_unless_enraged(void) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].status2 & STATUS2_RAGE && gChosenMovesByBanks[i] != MOVE_RAGE) + gBattleMons[i].status2 &= ~(STATUS2_RAGE); + } +} + +#define ATKCANCELLER_MAX_CASE 14 + +u8 AtkCanceller_UnableToUseMove(void) +{ + u8 effect = 0; + s32* bideDmg = &BATTLE_STRUCT->bideDmg; + do + { + switch (BATTLE_STRUCT->atkCancellerTracker) + { + case 0: // flags clear + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_DESTINY_BOND); + gStatuses3[gBankAttacker] &= ~(STATUS3_GRUDGE); + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 1: // check being asleep + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + { + if (UproarWakeUpCheck(gBankAttacker)) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + b_movescr_stack_push_cursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + else + { + u8 toSub; + if (gBattleMons[gBankAttacker].ability == ABILITY_EARLY_BIRD) + toSub = 2; + else + toSub = 1; + if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) < toSub) + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + else + gBattleMons[gBankAttacker].status1 -= toSub; + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + { + if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK) + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 2; + } + } + else + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + b_movescr_stack_push_cursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + } + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 2: // check being frozen + if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) + { + if (Random() % 5) + { + if (gBattleMoves[gCurrentMove].effect != EFFECT_THAW_HIT) // unfreezing via a move effect happens in case 13 + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + } + else + { + BATTLE_STRUCT->atkCancellerTracker++; + break; + } + } + else // unfreeze + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + effect = 2; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 3: // truant + if (gBattleMons[gBankAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBankAttacker].truantCounter) + { + CancelMultiTurnMoves(gBankAttacker); + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + gBattleMoveFlags |= MOVESTATUS_MISSED; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 4: // recharge + if (gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RECHARGE); + gDisableStructs[gBankAttacker].rechargeCounter = 0; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 5: // flinch + if (gBattleMons[gBankAttacker].status2 & STATUS2_FLINCHED) + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_FLINCHED); + gProtectStructs[gBankAttacker].flinchImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 6: // disabled move + if (gDisableStructs[gBankAttacker].disabledMove == gCurrentMove && gDisableStructs[gBankAttacker].disabledMove != 0) + { + gProtectStructs[gBankAttacker].usedDisabledMove = 1; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 7: // taunt + if (gDisableStructs[gBankAttacker].tauntTimer1 && gBattleMoves[gCurrentMove].power == 0) + { + gProtectStructs[gBankAttacker].usedTauntedMove = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 8: // imprisoned + if (IsImprisoned(gBankAttacker, gCurrentMove)) + { + gProtectStructs[gBankAttacker].usedImprisionedMove = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 9: // confusion + if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) + { + gBattleMons[gBankAttacker].status2--; + if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) + { + if (Random() & 1) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + b_movescr_stack_push_cursor(); + } + else // confusion dmg + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBankTarget = gBankAttacker; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); + gProtectStructs[gBankAttacker].confusionSelfDmg = 1; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + } + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused; + } + else // snapped out of confusion + { + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore; + } + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 10: // paralysis + if (gBattleMons[gBankAttacker].status1 & STATUS_PARALYSIS && (Random() % 4) == 0) + { + gProtectStructs[gBankAttacker].prlzImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 11: // infatuation + if (gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) + { + BATTLE_STRUCT->scriptingActive = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10); + if (Random() & 1) + b_movescr_stack_push_cursor(); + else + { + b_movescr_stack_push(BattleScript_MoveUsedIsParalyzedCantAttack); + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gProtectStructs[gBankAttacker].loveImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + } + gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 12: // bide + if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) + { + gBattleMons[gBankAttacker].status2 -= 0x100; + if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) + gBattlescriptCurrInstr = BattleScript_BideStoringEnergy; + else + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); + if (gTakenDmg[gBankAttacker]) + { + gCurrentMove = MOVE_BIDE; + *bideDmg = gTakenDmg[gBankAttacker] * 2; + gBankTarget = gTakenDmgBanks[gBankAttacker]; + if (gAbsentBankFlags & gBitTable[gBankTarget]) + gBankTarget = GetMoveTarget(MOVE_BIDE, 1); + gBattlescriptCurrInstr = BattleScript_BideAttack; + } + else + gBattlescriptCurrInstr = BattleScript_BideNoEnergyToAttack; + } + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 13: // move thawing + if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) + { + if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + effect = 2; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 14: // last case + break; + } + + } while (BATTLE_STRUCT->atkCancellerTracker != ATKCANCELLER_MAX_CASE && effect == 0); + + if (effect == 2) + { + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + return effect; +} + +bool8 sub_8018018(u8 bank, u8 r1, u8 r2) +{ + struct Pokemon* party; + u8 r7; + u8 r6; + s32 i; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + return 0; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + r7 = sub_803FC34(bank); + if (GetBankSide(bank) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + r6 = sub_803FBFC(r7); + for (i = r6 * 3; i < r6 * 3 + 3; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + break; + } + return (i == r6 * 3 + 3); + } + else + { + if (GetBankSide(bank) == 1) + { + r7 = GetBankByPlayerAI(1); + r6 = GetBankByPlayerAI(3); + party = gEnemyParty; + } + else + { + r7 = GetBankByPlayerAI(0); + r6 = GetBankByPlayerAI(2); + party = gPlayerParty; + } + if (r1 == 6) + r1 = gBattlePartyID[r7]; + if (r2 == 6) + r2 = gBattlePartyID[r6]; + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG && i != r1 && i != r2 && i != ewram[r7 + 0x16068] && i != ewram[r6 + 0x16068]) + break; + } + return (i == 6); + } +} + +enum +{ + CASTFORM_NO_CHANGE, //0 + CASTFORM_TO_NORMAL, //1 + CASTFORM_TO_FIRE, //2 + CASTFORM_TO_WATER, //3 + CASTFORM_TO_ICE, //4 +}; + +u8 CastformDataTypeChange(u8 bank) +{ + u8 formChange = 0; + if (gBattleMons[bank].species != SPECIES_CASTFORM || gBattleMons[bank].ability != ABILITY_FORECAST || gBattleMons[bank].hp == 0) + return CASTFORM_NO_CHANGE; + if (!WEATHER_HAS_EFFECT && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL) + { + gBattleMons[bank].type1 = TYPE_NORMAL; + gBattleMons[bank].type2 = TYPE_NORMAL; + return CASTFORM_TO_NORMAL; + } + if (!WEATHER_HAS_EFFECT) + return CASTFORM_NO_CHANGE; + if (!(gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SUN_ANY | WEATHER_HAIL)) && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL) + { + gBattleMons[bank].type1 = TYPE_NORMAL; + gBattleMons[bank].type2 = TYPE_NORMAL; + formChange = CASTFORM_TO_NORMAL; + } + if (gBattleWeather & WEATHER_SUN_ANY && gBattleMons[bank].type1 != TYPE_FIRE && gBattleMons[bank].type2 != TYPE_FIRE) + { + gBattleMons[bank].type1 = TYPE_FIRE; + gBattleMons[bank].type2 = TYPE_FIRE; + formChange = CASTFORM_TO_FIRE; + } + if (gBattleWeather & WEATHER_RAIN_ANY && gBattleMons[bank].type1 != TYPE_WATER && gBattleMons[bank].type2 != TYPE_WATER) + { + gBattleMons[bank].type1 = TYPE_WATER; + gBattleMons[bank].type2 = TYPE_WATER; + formChange = CASTFORM_TO_WATER; + } + if (gBattleWeather & WEATHER_HAIL && gBattleMons[bank].type1 != TYPE_ICE && gBattleMons[bank].type2 != TYPE_ICE) + { + gBattleMons[bank].type1 = TYPE_ICE; + gBattleMons[bank].type2 = TYPE_ICE; + formChange = CASTFORM_TO_ICE; + } + return formChange; +} + +#ifdef NONMATCHING + +struct Struct2017100 +{ + u32 arr[4]; +}; + +#define ewram17100 (*(struct Struct2017100 *)(ewram + 0x17100)) + +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) +{ + u8 effect = 0; + struct Pokemon* pokeAtk; + struct Pokemon* pokeDef; + u16 speciesAtk; + u16 speciesDef; + u32 pidAtk; + u32 pidDef; + + if (gBankAttacker >= gNoOfAllBanks) + gBankAttacker = bank; + if (GetBankSide(gBankAttacker) == 0) + pokeAtk = &gPlayerParty[gBattlePartyID[gBankAttacker]]; + else + pokeAtk = &gEnemyParty[gBattlePartyID[gBankAttacker]]; + + if (gBankTarget >= gNoOfAllBanks) + gBankTarget = bank; + if (GetBankSide(gBankTarget) == 0) + pokeDef = &gPlayerParty[gBattlePartyID[gBankTarget]]; + else + pokeDef = &gEnemyParty[gBattlePartyID[gBankTarget]]; + + speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES); + pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY); + + speciesDef = GetMonData(pokeDef, MON_DATA_SPECIES); + pidDef = GetMonData(pokeDef, MON_DATA_PERSONALITY); + + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning? + { + //_08018436 + int i; // r4 + u16 move; + // Hmm... + #define moveType moveArg + //u16 moveType; + u8 side; + + if (special) + gLastUsedAbility = special; + else + gLastUsedAbility = gBattleMons[bank].ability; + + if (moveArg) + move = moveArg; + else + move = gCurrentMove; + + if (BATTLE_STRUCT->dynamicMoveType) + moveType = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + moveType = gBattleMoves[move].type; + + //_080184AC + switch (caseID) + { + case ABILITYEFFECT_ON_SWITCHIN: // 0 + //_08018518 + if (gBankAttacker >= gNoOfAllBanks) + gBankAttacker = bank; + switch (gLastUsedAbility) + { + case 0xFF: //weather from overworld + //_08018586 + switch (weather_get_current()) + { + case 3: + case 5: + case 13: + if (!(gBattleWeather & WEATHER_RAIN_ANY)) + { + gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT); + BATTLE_STRUCT->animArg1 = 0xA; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case 8: + if (!(gBattleWeather & WEATHER_SANDSTORM_ANY)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + BATTLE_STRUCT->animArg1 = 0xC; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case 12: + if (!(gBattleWeather & WEATHER_SUN_ANY)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + BATTLE_STRUCT->animArg1 = 0xB; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + } + if (effect) + { + gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); + b_push_move_exec(gUnknown_081D901D); + } + break; + case ABILITY_DRIZZLE: + //_08018680 + if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) + { + gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); + b_push_move_exec(BattleScript_DrizzleActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_SAND_STREAM: + //_080186B8 + if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + b_push_move_exec(BattleScript_SandstreamActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_DROUGHT: + //_080186F0 + if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + b_push_move_exec(BattleScript_DroughtActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_INTIMIDATE: + //_08018728 + if (!(gSpecialStatuses[bank].intimidatedPoke)) + { + gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES; + gSpecialStatuses[bank].intimidatedPoke = 1; + } + break; + case ABILITY_FORECAST: + //_0801875C + effect = CastformDataTypeChange(bank); + if (effect != 0) + { + b_push_move_exec(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = bank; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + } + break; + case ABILITY_TRACE: + //_080187A0 + if (!(gSpecialStatuses[bank].traced)) + { + gStatuses3[bank] |= STATUS3_TRACE; + gSpecialStatuses[bank].traced = 1; + } + break; + case ABILITY_CLOUD_NINE: + case ABILITY_AIR_LOCK: + //_080187DC + { + u8 i; + + for (i = 0; i < gNoOfAllBanks; i++) + { + // TODO: i should be in r6 here + //asm("":::"r4","r5"); + effect = CastformDataTypeChange(i); + if (effect != 0) + { + b_push_move_exec(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = i; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + break; + } + } + } + break; + } + break; + case ABILITYEFFECT_ENDTURN: // 1 + //_08018814 + if (gBattleMons[bank].hp != 0) + { + gBankAttacker = bank; + switch (gLastUsedAbility) + { + case ABILITY_RAIN_DISH: + if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) + && gBattleMons[bank].maxHP > gBattleMons[bank].hp) + { + gLastUsedAbility = ABILITY_RAIN_DISH; //why + b_push_move_exec(BattleScript_RainDishActivates); + gBattleMoveDamage = gBattleMons[bank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + effect++; + } + break; + case ABILITY_SHED_SKIN: + if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0) + { + if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON)) + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + if (gBattleMons[bank].status1 & STATUS_SLEEP) + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + if (gBattleMons[bank].status1 & STATUS_BURN) + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + if (gBattleMons[bank].status1 & STATUS_FREEZE) + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + gBattleMons[bank].status1 = 0; + //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); fixed in Emerald + BATTLE_STRUCT->scriptingActive = gActiveBank = bank; + b_push_move_exec(BattleScript_ShedSkinActivates); + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); + MarkBufferBankForExecution(gActiveBank); + effect++; + } + break; + case ABILITY_SPEED_BOOST: + if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2) + { + gBattleMons[bank].statStages[STAT_STAGE_SPEED]++; + BATTLE_STRUCT->animArg1 = 0x11; + BATTLE_STRUCT->animArg2 = 0; + b_push_move_exec(BattleScript_SpeedBoostActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_TRUANT: + gDisableStructs[gBankAttacker].truantCounter ^= 1; + break; + } + } + break; + case ABILITYEFFECT_MOVES_BLOCK: // 2 + //_08018A40 + if (gLastUsedAbility == ABILITY_SOUNDPROOF) + { + for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++) + { + if (gSoundMovesTable[i] == move) + break; + } + if (gSoundMovesTable[i] != 0xFFFF) + { + if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS) + gHitMarker |= HITMARKER_NO_PPDEDUCT; + gBattlescriptCurrInstr = BattleScript_SoundproofProtected; + effect = 1; + } + } + break; + case ABILITYEFFECT_ABSORBING: // 3 + //_08018AD8 + if (move) + { + switch (gLastUsedAbility) + { + case ABILITY_VOLT_ABSORB: + if (moveType == TYPE_ELECTRIC && gBattleMoves[move].power != 0) + { + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; + } + break; + case ABILITY_WATER_ABSORB: + if (moveType == TYPE_WATER && gBattleMoves[move].power != 0) + { + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; + } + break; + case ABILITY_FLASH_FIRE: + if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE)) + { + if (!(ewram17100.arr[bank] & 1)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + ewram17100.arr[bank] |= 1; + effect = 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + effect = 2; + } + } + break; + } + if (effect == 1) + { + if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) + { + if ((gProtectStructs[gBankAttacker].notFirstStrike)) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + } + else + { + gBattleMoveDamage = gBattleMons[bank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + } + } + break; + case ABILITYEFFECT_CONTACT: // 4 + //_08018CF0 + switch (gLastUsedAbility) + { + case ABILITY_COLOR_CHANGE: + //_08018DCC + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && move != MOVE_STRUGGLE + && gBattleMoves[move].power != 0 + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && gBattleMons[bank].type1 != moveType + && gBattleMons[bank].type2 != moveType + && gBattleMons[bank].hp != 0) + { + gBattleMons[bank].type1 = moveType; + gBattleMons[bank].type2 = moveType; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = moveType; + gBattleTextBuff1[3] = 0xFF; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; + effect++; + } + break; + case ABILITY_ROUGH_SKIN: + //_08018E94 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; + effect++; + } + break; + case ABILITY_EFFECT_SPORE: + //_08018F54 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 10) == 0) + { + do + { + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; + } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); + if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) + gBattleCommunication[MOVE_EFFECT_BYTE] += 2; + gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_POISON_POINT: + //_0801904C + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_STATIC: + //_08019128 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_FLAME_BODY: + //_08019204 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_CUTE_CHARM: + //_080192E0 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && gBattleMons[gBankTarget].hp != 0 + && (Random() % 3) == 0 + && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) + && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF + && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) + { + gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; + effect++; + } + break; + } + break; + case ABILITYEFFECT_IMMUNITY: // 5 + //_08019448 + { + #define i bank + for (i = 0; i < gNoOfAllBanks; i++) + { + switch (gBattleMons[i].ability) + { + case ABILITY_IMMUNITY: + if (gBattleMons[i].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + effect = 1; + } + break; + case ABILITY_OWN_TEMPO: + if (gBattleMons[i].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + effect = 2; + } + break; + case ABILITY_LIMBER: + if (gBattleMons[i].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + effect = 1; + } + break; + case ABILITY_INSOMNIA: + case ABILITY_VITAL_SPIRIT: + if (gBattleMons[i].status1 & STATUS_SLEEP) + { + gBattleMons[i].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + effect = 1; + } + break; + case ABILITY_WATER_VEIL: + if (gBattleMons[i].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + effect = 1; + } + break; + case ABILITY_MAGMA_ARMOR: + if (gBattleMons[i].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + effect = 1; + } + break; + case ABILITY_OBLIVIOUS: + if (gBattleMons[i].status2 & STATUS2_INFATUATION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + effect = 3; + } + break; + } + if (effect) + { + switch (effect) + { + case 1: // status cleared + gBattleMons[i].status1 = 0; + break; + case 2: // get rid of confusion + gBattleMons[i].status2 &= ~(STATUS2_CONFUSION); + break; + case 3: // get rid of infatuation + gBattleMons[i].status2 &= ~(STATUS2_INFATUATION); + break; + } + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = gUnknown_081D9956; + BATTLE_STRUCT->scriptingActive = i; + gActiveBank = i; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + return effect; + } + } + #undef i + } + break; + case ABILITYEFFECT_FORECAST: // 6 + //_080197B4 + { + #define i bank + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_FORECAST) + { + effect = CastformDataTypeChange(i); + if (effect) + { + b_push_move_exec(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = i; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + return effect; + } + } + } + #undef i + } + break; + case ABILITYEFFECT_SYNCHRONIZE: // 7 + //_08019804 + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + { + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + BATTLE_STRUCT->synchroniseEffect &= 0x3F; + if (BATTLE_STRUCT->synchroniseEffect == 6) + BATTLE_STRUCT->synchroniseEffect = 2; + gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect + 0x40; + BATTLE_STRUCT->scriptingActive = gBankTarget; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8 + //_08019880 + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + { + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + BATTLE_STRUCT->synchroniseEffect &= 0x3F; + if (BATTLE_STRUCT->synchroniseEffect == 6) + BATTLE_STRUCT->synchroniseEffect = 2; + gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITYEFFECT_INTIMIDATE1: // 9 + //_080198FC + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES) + { + gLastUsedAbility = ABILITY_INTIMIDATE; + gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + b_push_move_exec(gUnknown_081D978C); + BATTLE_STRUCT->intimidateBank = i; + effect++; + break; + } + } + break; + case ABILITYEFFECT_TRACE: // 11 + //_08019940 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) + { + u8 opposite = (GetBankIdentity(i) ^ 1) & 1; + u8 target1 = GetBankByPlayerAI(opposite); + u8 target2 = GetBankByPlayerAI(opposite + 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 + && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + { + //_080199AE + gActiveBank = GetBankByPlayerAI(((Random() & 1) * 2) | opposite); + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0) + { + //_08019A34 + gActiveBank = target1; + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + { + //_08019A78 + gActiveBank = target2; + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + } + else + //_08019ABC + { + gActiveBank = target1; + if (gBattleMons[target1].ability && gBattleMons[target1].hp) + { + gBattleMons[i].ability = gBattleMons[target1].ability; + gLastUsedAbility = gBattleMons[target1].ability; + effect++; + } + } + if (effect) + { + b_push_move_exec(BattleScript_TraceActivates); + gStatuses3[i] &= ~(STATUS3_TRACE); + BATTLE_STRUCT->scriptingActive = i; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; + gBattleTextBuff1[4] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 9; + gBattleTextBuff2[2] = gLastUsedAbility; + gBattleTextBuff2[3] = EOS; + break; + } + } + } + break; + case ABILITYEFFECT_INTIMIDATE2: // 10 + //_08019B1C + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES)) + { + gLastUsedAbility = ABILITY_INTIMIDATE; + gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = gUnknown_081D9795; + BATTLE_STRUCT->intimidateBank = i; + effect++; + break; + } + } + break; + case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12 + //_08019B60 + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_CHECK_BANK_SIDE: // 13 + //_08019BBC + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) == side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_FIELD_SPORT: // 14 + //_08019C18 + switch (gLastUsedAbility) + { + case 0xFD: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_MUDSPORT) + effect = i + 1; + } + break; + case 0xFE: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_WATERSPORT) + effect = i + 1; + } + break; + default: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + } + break; + case ABILITYEFFECT_CHECK_ON_FIELD: // 19 + //_08019CD4 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15 + //_08019D18 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && i != bank) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16 + //_08019D5C + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + case ABILITYEFFECT_COUNT_BANK_SIDE: // 17 + //_08019DB8 + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) == side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + case ABILITYEFFECT_COUNT_ON_FIELD: // 18 + //_08019F44 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && i != bank) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + } + //_08019F76 + if (effect && caseID < 0xC && gLastUsedAbility != 0xFF) + RecordAbilityBattle(bank, gLastUsedAbility); + } + + return effect; +} + +#else +__attribute__((naked)) +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x28\n\ + ldr r4, [sp, 0x48]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x4]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r10, r1\n\ + lsls r2, 24\n\ + lsrs r6, r2, 24\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + mov r8, r3\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + movs r0, 0\n\ + mov r9, r0\n\ + ldr r5, _08018380 @ =gBankAttacker\n\ + ldr r1, _08018384 @ =gNoOfAllBanks\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08018360\n\ + mov r1, r10\n\ + strb r1, [r5]\n\ +_08018360:\n\ + ldrb r0, [r5]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08018390\n\ + ldr r1, _08018388 @ =gBattlePartyID\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + ldr r0, _0801838C @ =gPlayerParty\n\ + b _080183A0\n\ + .align 2, 0\n\ +_08018380: .4byte gBankAttacker\n\ +_08018384: .4byte gNoOfAllBanks\n\ +_08018388: .4byte gBattlePartyID\n\ +_0801838C: .4byte gPlayerParty\n\ +_08018390:\n\ + ldr r1, _080183D0 @ =gBattlePartyID\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + ldr r0, _080183D4 @ =gEnemyParty\n\ +_080183A0:\n\ + adds r7, r1, r0\n\ + ldr r5, _080183D8 @ =gBankTarget\n\ + ldr r1, _080183DC @ =gNoOfAllBanks\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _080183B2\n\ + mov r2, r10\n\ + strb r2, [r5]\n\ +_080183B2:\n\ + ldrb r0, [r5]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080183E4\n\ + ldr r1, _080183D0 @ =gBattlePartyID\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + ldr r0, _080183E0 @ =gPlayerParty\n\ + b _080183F4\n\ + .align 2, 0\n\ +_080183D0: .4byte gBattlePartyID\n\ +_080183D4: .4byte gEnemyParty\n\ +_080183D8: .4byte gBankTarget\n\ +_080183DC: .4byte gNoOfAllBanks\n\ +_080183E0: .4byte gPlayerParty\n\ +_080183E4:\n\ + ldr r1, _08018444 @ =gBattlePartyID\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + ldr r0, _08018448 @ =gEnemyParty\n\ +_080183F4:\n\ + adds r5, r1, r0\n\ + adds r0, r7, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + adds r0, r7, 0\n\ + movs r1, 0\n\ + bl GetMonData\n\ + str r0, [sp, 0x10]\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0xC]\n\ + adds r0, r5, 0\n\ + movs r1, 0\n\ + bl GetMonData\n\ + str r0, [sp, 0x14]\n\ + ldr r0, _0801844C @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018436\n\ + bl _08019F92\n\ +_08018436:\n\ + mov r3, r8\n\ + cmp r3, 0\n\ + beq _08018454\n\ + ldr r0, _08018450 @ =gLastUsedAbility\n\ + strb r3, [r0]\n\ + mov r8, r0\n\ + b _0801846A\n\ + .align 2, 0\n\ +_08018444: .4byte gBattlePartyID\n\ +_08018448: .4byte gEnemyParty\n\ +_0801844C: .4byte gBattleTypeFlags\n\ +_08018450: .4byte gLastUsedAbility\n\ +_08018454:\n\ + ldr r2, _08018474 @ =gLastUsedAbility\n\ + ldr r1, _08018478 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r5, r10\n\ + muls r5, r0\n\ + adds r0, r5, 0\n\ + adds r0, r1\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + mov r8, r2\n\ +_0801846A:\n\ + cmp r4, 0\n\ + beq _0801847C\n\ + adds r3, r4, 0\n\ + b _08018480\n\ + .align 2, 0\n\ +_08018474: .4byte gLastUsedAbility\n\ +_08018478: .4byte gBattleMons\n\ +_0801847C:\n\ + ldr r0, _08018494 @ =gCurrentMove\n\ + ldrh r3, [r0]\n\ +_08018480:\n\ + ldr r1, _08018498 @ =0x02000000\n\ + ldr r2, _0801849C @ =0x0001601c\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + adds r7, r1, 0\n\ + cmp r0, 0\n\ + beq _080184A0\n\ + movs r4, 0x3F\n\ + ands r4, r0\n\ + b _080184AC\n\ + .align 2, 0\n\ +_08018494: .4byte gCurrentMove\n\ +_08018498: .4byte 0x02000000\n\ +_0801849C: .4byte 0x0001601c\n\ +_080184A0:\n\ + ldr r1, _080184C0 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x2]\n\ +_080184AC:\n\ + ldr r5, [sp, 0x4]\n\ + cmp r5, 0x13\n\ + bls _080184B6\n\ + bl _08019F76\n\ +_080184B6:\n\ + lsls r0, r5, 2\n\ + ldr r1, _080184C4 @ =_080184C8\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080184C0: .4byte gBattleMoves\n\ +_080184C4: .4byte _080184C8\n\ + .align 2, 0\n\ +_080184C8:\n\ + .4byte _08018518\n\ + .4byte _08018814\n\ + .4byte _08018A40\n\ + .4byte _08018AD8\n\ + .4byte _08018CF0\n\ + .4byte _08019448\n\ + .4byte _080197B4\n\ + .4byte _08019804\n\ + .4byte _08019880\n\ + .4byte _080198FC\n\ + .4byte _08019B1C\n\ + .4byte _08019940\n\ + .4byte _08019B60\n\ + .4byte _08019BBC\n\ + .4byte _08019C18\n\ + .4byte _08019D18\n\ + .4byte _08019D5C\n\ + .4byte _08019DB8\n\ + .4byte _08019F44\n\ + .4byte _08019CD4\n\ +_08018518:\n\ + ldr r2, _0801854C @ =gBankAttacker\n\ + ldr r0, _08018550 @ =gNoOfAllBanks\n\ + ldrb r1, [r2]\n\ + adds r5, r0, 0\n\ + ldrb r0, [r5]\n\ + cmp r1, r0\n\ + bcc _0801852A\n\ + mov r1, r10\n\ + strb r1, [r2]\n\ +_0801852A:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + cmp r0, 0x2D\n\ + bne _08018534\n\ + b _080186B8\n\ +_08018534:\n\ + cmp r0, 0x2D\n\ + bgt _08018564\n\ + cmp r0, 0xD\n\ + bne _0801853E\n\ + b _080187DC\n\ +_0801853E:\n\ + cmp r0, 0xD\n\ + bgt _08018554\n\ + cmp r0, 0x2\n\ + bne _08018548\n\ + b _08018680\n\ +_08018548:\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_0801854C: .4byte gBankAttacker\n\ +_08018550: .4byte gNoOfAllBanks\n\ +_08018554:\n\ + cmp r0, 0x16\n\ + bne _0801855A\n\ + b _08018728\n\ +_0801855A:\n\ + cmp r0, 0x24\n\ + bne _08018560\n\ + b _080187A0\n\ +_08018560:\n\ + bl _08019F76\n\ +_08018564:\n\ + cmp r0, 0x46\n\ + bne _0801856A\n\ + b _080186F0\n\ +_0801856A:\n\ + cmp r0, 0x46\n\ + bgt _08018578\n\ + cmp r0, 0x3B\n\ + bne _08018574\n\ + b _0801875C\n\ +_08018574:\n\ + bl _08019F76\n\ +_08018578:\n\ + cmp r0, 0x4D\n\ + bne _0801857E\n\ + b _080187DC\n\ +_0801857E:\n\ + cmp r0, 0xFF\n\ + beq _08018586\n\ + bl _08019F76\n\ +_08018586:\n\ + bl weather_get_current\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + subs r0, 0x3\n\ + cmp r0, 0xA\n\ + bhi _0801864C\n\ + lsls r0, 2\n\ + ldr r1, _080185A0 @ =_080185A4\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080185A0: .4byte _080185A4\n\ + .align 2, 0\n\ +_080185A4:\n\ + .4byte _080185D0\n\ + .4byte _0801864C\n\ + .4byte _080185D0\n\ + .4byte _0801864C\n\ + .4byte _0801864C\n\ + .4byte _080185F8\n\ + .4byte _0801864C\n\ + .4byte _0801864C\n\ + .4byte _0801864C\n\ + .4byte _08018620\n\ + .4byte _080185D0\n\ +_080185D0:\n\ + ldr r2, _080185EC @ =gBattleWeather\n\ + ldrh r1, [r2]\n\ + movs r0, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801864C\n\ + movs r0, 0x5\n\ + strh r0, [r2]\n\ + ldr r0, _080185F0 @ =0x02000000\n\ + ldr r3, _080185F4 @ =0x000160a4\n\ + adds r2, r0, r3\n\ + movs r1, 0xA\n\ + b _08018638\n\ + .align 2, 0\n\ +_080185EC: .4byte gBattleWeather\n\ +_080185F0: .4byte 0x02000000\n\ +_080185F4: .4byte 0x000160a4\n\ +_080185F8:\n\ + ldr r3, _08018614 @ =gBattleWeather\n\ + ldrh r1, [r3]\n\ + movs r2, 0x18\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801864C\n\ + strh r2, [r3]\n\ + ldr r0, _08018618 @ =0x02000000\n\ + ldr r3, _0801861C @ =0x000160a4\n\ + adds r2, r0, r3\n\ + movs r1, 0xC\n\ + b _08018638\n\ + .align 2, 0\n\ +_08018614: .4byte gBattleWeather\n\ +_08018618: .4byte 0x02000000\n\ +_0801861C: .4byte 0x000160a4\n\ +_08018620:\n\ + ldr r3, _08018668 @ =gBattleWeather\n\ + ldrh r1, [r3]\n\ + movs r2, 0x60\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801864C\n\ + strh r2, [r3]\n\ + ldr r0, _0801866C @ =0x02000000\n\ + ldr r3, _08018670 @ =0x000160a4\n\ + adds r2, r0, r3\n\ + movs r1, 0xB\n\ +_08018638:\n\ + strb r1, [r2]\n\ + ldr r5, _08018674 @ =0x00016003\n\ + adds r0, r5\n\ + mov r1, r10\n\ + strb r1, [r0]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_0801864C:\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + bne _08018656\n\ + bl _08019F92\n\ +_08018656:\n\ + bl weather_get_current\n\ + ldr r1, _08018678 @ =gBattleCommunication\n\ + strb r0, [r1, 0x5]\n\ + ldr r0, _0801867C @ =gUnknown_081D901D\n\ + bl b_push_move_exec\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018668: .4byte gBattleWeather\n\ +_0801866C: .4byte 0x02000000\n\ +_08018670: .4byte 0x000160a4\n\ +_08018674: .4byte 0x00016003\n\ +_08018678: .4byte gBattleCommunication\n\ +_0801867C: .4byte gUnknown_081D901D\n\ +_08018680:\n\ + ldr r2, _080186A8 @ =gBattleWeather\n\ + ldrh r1, [r2]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018690\n\ + bl _08019F76\n\ +_08018690:\n\ + movs r0, 0x5\n\ + strh r0, [r2]\n\ + ldr r0, _080186AC @ =BattleScript_DrizzleActivates\n\ + bl b_push_move_exec\n\ + ldr r0, _080186B0 @ =0x02000000\n\ + ldr r3, _080186B4 @ =0x00016003\n\ + adds r0, r3\n\ + mov r5, r10\n\ + strb r5, [r0]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080186A8: .4byte gBattleWeather\n\ +_080186AC: .4byte BattleScript_DrizzleActivates\n\ +_080186B0: .4byte 0x02000000\n\ +_080186B4: .4byte 0x00016003\n\ +_080186B8:\n\ + ldr r2, _080186E0 @ =gBattleWeather\n\ + ldrh r1, [r2]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080186C8\n\ + bl _08019F76\n\ +_080186C8:\n\ + movs r0, 0x18\n\ + strh r0, [r2]\n\ + ldr r0, _080186E4 @ =BattleScript_SandstreamActivates\n\ + bl b_push_move_exec\n\ + ldr r0, _080186E8 @ =0x02000000\n\ + ldr r1, _080186EC @ =0x00016003\n\ + adds r0, r1\n\ + mov r2, r10\n\ + strb r2, [r0]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080186E0: .4byte gBattleWeather\n\ +_080186E4: .4byte BattleScript_SandstreamActivates\n\ +_080186E8: .4byte 0x02000000\n\ +_080186EC: .4byte 0x00016003\n\ +_080186F0:\n\ + ldr r2, _08018718 @ =gBattleWeather\n\ + ldrh r1, [r2]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018700\n\ + bl _08019F76\n\ +_08018700:\n\ + movs r0, 0x60\n\ + strh r0, [r2]\n\ + ldr r0, _0801871C @ =BattleScript_DroughtActivates\n\ + bl b_push_move_exec\n\ + ldr r0, _08018720 @ =0x02000000\n\ + ldr r3, _08018724 @ =0x00016003\n\ + adds r0, r3\n\ + mov r5, r10\n\ + strb r5, [r0]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018718: .4byte gBattleWeather\n\ +_0801871C: .4byte BattleScript_DroughtActivates\n\ +_08018720: .4byte 0x02000000\n\ +_08018724: .4byte 0x00016003\n\ +_08018728:\n\ + ldr r0, _08018754 @ =gSpecialStatuses\n\ + mov r1, r10\n\ + lsls r2, r1, 2\n\ + adds r1, r2, r1\n\ + lsls r1, 2\n\ + adds r3, r1, r0\n\ + ldrb r0, [r3]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018740\n\ + bl _08019F76\n\ +_08018740:\n\ + ldr r1, _08018758 @ =gStatuses3\n\ + adds r1, r2, r1\n\ + ldr r0, [r1]\n\ + movs r2, 0x80\n\ + lsls r2, 12\n\ + orrs r0, r2\n\ + str r0, [r1]\n\ + ldrb r0, [r3]\n\ + movs r1, 0x8\n\ + b _080187CA\n\ + .align 2, 0\n\ +_08018754: .4byte gSpecialStatuses\n\ +_08018758: .4byte gStatuses3\n\ +_0801875C:\n\ + mov r0, r10\n\ + bl CastformDataTypeChange\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + cmp r0, 0\n\ + bne _08018770\n\ + bl _08019F92\n\ +_08018770:\n\ + ldr r0, _08018790 @ =BattleScript_CastformChange\n\ + bl b_push_move_exec\n\ + ldr r0, _08018794 @ =0x02000000\n\ + ldr r2, _08018798 @ =0x00016003\n\ + adds r1, r0, r2\n\ + mov r3, r10\n\ + strb r3, [r1]\n\ + mov r1, r9\n\ + subs r1, 0x1\n\ + ldr r5, _0801879C @ =0x0001609b\n\ + adds r0, r5\n\ + strb r1, [r0]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018790: .4byte BattleScript_CastformChange\n\ +_08018794: .4byte 0x02000000\n\ +_08018798: .4byte 0x00016003\n\ +_0801879C: .4byte 0x0001609b\n\ +_080187A0:\n\ + ldr r0, _080187D4 @ =gSpecialStatuses\n\ + mov r1, r10\n\ + lsls r2, r1, 2\n\ + adds r1, r2, r1\n\ + lsls r1, 2\n\ + adds r3, r1, r0\n\ + ldrb r0, [r3]\n\ + lsls r0, 27\n\ + cmp r0, 0\n\ + bge _080187B8\n\ + bl _08019F76\n\ +_080187B8:\n\ + ldr r1, _080187D8 @ =gStatuses3\n\ + adds r1, r2, r1\n\ + ldr r0, [r1]\n\ + movs r2, 0x80\n\ + lsls r2, 13\n\ + orrs r0, r2\n\ + str r0, [r1]\n\ + ldrb r0, [r3]\n\ + movs r1, 0x10\n\ +_080187CA:\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_080187D4: .4byte gSpecialStatuses\n\ +_080187D8: .4byte gStatuses3\n\ +_080187DC:\n\ + movs r6, 0\n\ + ldrb r5, [r5]\n\ + cmp r6, r5\n\ + bcc _080187E8\n\ + bl _08019F76\n\ +_080187E8:\n\ + adds r0, r6, 0\n\ + bl CastformDataTypeChange\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + cmp r0, 0\n\ + beq _080187FC\n\ + bl _08019E14\n\ +_080187FC:\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r0, _08018810 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bcc _080187E8\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018810: .4byte gNoOfAllBanks\n\ +_08018814:\n\ + ldr r2, _08018844 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r4, r1, r2\n\ + ldrh r0, [r4, 0x28]\n\ + cmp r0, 0\n\ + bne _08018828\n\ + bl _08019F76\n\ +_08018828:\n\ + ldr r0, _08018848 @ =gBankAttacker\n\ + mov r3, r10\n\ + strb r3, [r0]\n\ + mov r3, r8\n\ + ldrb r5, [r3]\n\ + cmp r5, 0x2C\n\ + beq _0801885A\n\ + cmp r5, 0x2C\n\ + bgt _0801884C\n\ + cmp r5, 0x3\n\ + bne _08018840\n\ + b _080189B8\n\ +_08018840:\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018844: .4byte gBattleMons\n\ +_08018848: .4byte gBankAttacker\n\ +_0801884C:\n\ + cmp r5, 0x36\n\ + bne _08018852\n\ + b _08018A18\n\ +_08018852:\n\ + cmp r5, 0x3D\n\ + beq _080188DC\n\ + bl _08019F76\n\ +_0801885A:\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x13\n\ + movs r1, 0\n\ + movs r2, 0xD\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0\n\ + beq _08018876\n\ + bl _08019F76\n\ +_08018876:\n\ + str r0, [sp]\n\ + movs r0, 0x13\n\ + movs r1, 0\n\ + movs r2, 0x4D\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0801888E\n\ + bl _08019F76\n\ +_0801888E:\n\ + ldr r0, _080188D0 @ =gBattleWeather\n\ + ldrh r1, [r0]\n\ + movs r0, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801889E\n\ + bl _08019F76\n\ +_0801889E:\n\ + ldrh r0, [r4, 0x2C]\n\ + ldrh r1, [r4, 0x28]\n\ + cmp r0, r1\n\ + bhi _080188AA\n\ + bl _08019F76\n\ +_080188AA:\n\ + mov r2, r8\n\ + strb r5, [r2]\n\ + ldr r0, _080188D4 @ =BattleScript_RainDishActivates\n\ + bl b_push_move_exec\n\ + ldr r1, _080188D8 @ =gBattleMoveDamage\n\ + ldrh r0, [r4, 0x2C]\n\ + lsrs r0, 4\n\ + str r0, [r1]\n\ + cmp r0, 0\n\ + bne _080188C4\n\ + movs r0, 0x1\n\ + str r0, [r1]\n\ +_080188C4:\n\ + ldr r0, [r1]\n\ + negs r0, r0\n\ + str r0, [r1]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080188D0: .4byte gBattleWeather\n\ +_080188D4: .4byte BattleScript_RainDishActivates\n\ +_080188D8: .4byte gBattleMoveDamage\n\ +_080188DC:\n\ + adds r0, r2, 0\n\ + adds r0, 0x4C\n\ + adds r5, r1, r0\n\ + ldrb r0, [r5]\n\ + cmp r0, 0\n\ + bne _080188EC\n\ + bl _08019F76\n\ +_080188EC:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, 0\n\ + beq _08018906\n\ + bl _08019F76\n\ +_08018906:\n\ + ldr r0, [r5]\n\ + movs r1, 0x88\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018918\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn\n\ + bl StringCopy\n\ +_08018918:\n\ + ldr r0, [r5]\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801892A\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _08018998 @ =gStatusConditionString_SleepJpn\n\ + bl StringCopy\n\ +_0801892A:\n\ + ldr r0, [r5]\n\ + movs r1, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801893C\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn\n\ + bl StringCopy\n\ +_0801893C:\n\ + ldr r0, [r5]\n\ + movs r1, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801894E\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn\n\ + bl StringCopy\n\ +_0801894E:\n\ + ldr r0, [r5]\n\ + movs r1, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018960\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _080189A4 @ =gStatusConditionString_IceJpn\n\ + bl StringCopy\n\ +_08018960:\n\ + str r4, [r5]\n\ + ldr r0, _080189A8 @ =0x02000000\n\ + ldr r4, _080189AC @ =gActiveBank\n\ + mov r3, r10\n\ + strb r3, [r4]\n\ + ldr r1, _080189B0 @ =0x00016003\n\ + adds r0, r1\n\ + strb r3, [r0]\n\ + ldr r0, _080189B4 @ =BattleScript_ShedSkinActivates\n\ + bl b_push_move_exec\n\ + str r5, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018990: .4byte gBattleTextBuff1\n\ +_08018994: .4byte gStatusConditionString_PoisonJpn\n\ +_08018998: .4byte gStatusConditionString_SleepJpn\n\ +_0801899C: .4byte gStatusConditionString_ParalysisJpn\n\ +_080189A0: .4byte gStatusConditionString_BurnJpn\n\ +_080189A4: .4byte gStatusConditionString_IceJpn\n\ +_080189A8: .4byte 0x02000000\n\ +_080189AC: .4byte gActiveBank\n\ +_080189B0: .4byte 0x00016003\n\ +_080189B4: .4byte BattleScript_ShedSkinActivates\n\ +_080189B8:\n\ + ldrb r2, [r4, 0x1B]\n\ + movs r0, 0x1B\n\ + ldrsb r0, [r4, r0]\n\ + cmp r0, 0xB\n\ + ble _080189C6\n\ + bl _08019F76\n\ +_080189C6:\n\ + ldr r0, _08018A04 @ =gDisableStructs\n\ + mov r3, r10\n\ + lsls r1, r3, 3\n\ + subs r1, r3\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x16]\n\ + cmp r0, 0x2\n\ + bne _080189DC\n\ + bl _08019F76\n\ +_080189DC:\n\ + adds r0, r2, 0x1\n\ + movs r2, 0\n\ + strb r0, [r4, 0x1B]\n\ + ldr r5, _08018A08 @ =0x000160a4\n\ + adds r1, r7, r5\n\ + movs r0, 0x11\n\ + strb r0, [r1]\n\ + ldr r1, _08018A0C @ =0x000160a5\n\ + adds r0, r7, r1\n\ + strb r2, [r0]\n\ + ldr r0, _08018A10 @ =BattleScript_SpeedBoostActivates\n\ + bl b_push_move_exec\n\ + ldr r2, _08018A14 @ =0x00016003\n\ + adds r0, r7, r2\n\ + mov r3, r10\n\ + strb r3, [r0]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018A04: .4byte gDisableStructs\n\ +_08018A08: .4byte 0x000160a4\n\ +_08018A0C: .4byte 0x000160a5\n\ +_08018A10: .4byte BattleScript_SpeedBoostActivates\n\ +_08018A14: .4byte 0x00016003\n\ +_08018A18:\n\ + ldr r2, _08018A3C @ =gDisableStructs\n\ + ldrb r0, [r0]\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrb r3, [r1, 0x18]\n\ + lsls r0, r3, 31\n\ + lsrs r0, 31\n\ + movs r2, 0x1\n\ + eors r2, r0\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + ands r0, r3\n\ + orrs r0, r2\n\ + strb r0, [r1, 0x18]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018A3C: .4byte gDisableStructs\n\ +_08018A40:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + cmp r0, 0x2B\n\ + beq _08018A4C\n\ + bl _08019F76\n\ +_08018A4C:\n\ + movs r4, 0\n\ + ldr r0, _08018ABC @ =gSoundMovesTable\n\ + ldrh r2, [r0]\n\ + ldr r5, _08018AC0 @ =0x0000ffff\n\ + adds r1, r0, 0\n\ + cmp r2, r5\n\ + bne _08018A5E\n\ + bl _08019F76\n\ +_08018A5E:\n\ + cmp r2, r3\n\ + beq _08018A76\n\ + adds r2, r1, 0\n\ +_08018A64:\n\ + adds r2, 0x2\n\ + adds r4, 0x1\n\ + ldrh r0, [r2]\n\ + cmp r0, r5\n\ + bne _08018A72\n\ + bl _08019F76\n\ +_08018A72:\n\ + cmp r0, r3\n\ + bne _08018A64\n\ +_08018A76:\n\ + lsls r0, r4, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldr r0, _08018AC0 @ =0x0000ffff\n\ + cmp r1, r0\n\ + bne _08018A86\n\ + bl _08019F76\n\ +_08018A86:\n\ + ldr r1, _08018AC4 @ =gBattleMons\n\ + ldr r0, _08018AC8 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 5\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018AAC\n\ + ldr r0, _08018ACC @ =gHitMarker\n\ + ldr r1, [r0]\n\ + movs r2, 0x80\n\ + lsls r2, 4\n\ + orrs r1, r2\n\ + str r1, [r0]\n\ +_08018AAC:\n\ + ldr r1, _08018AD0 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018AD4 @ =BattleScript_SoundproofProtected\n\ + str r0, [r1]\n\ + movs r0, 0x1\n\ + mov r9, r0\n\ + bl _08019F7C\n\ + .align 2, 0\n\ +_08018ABC: .4byte gSoundMovesTable\n\ +_08018AC0: .4byte 0x0000ffff\n\ +_08018AC4: .4byte gBattleMons\n\ +_08018AC8: .4byte gBankAttacker\n\ +_08018ACC: .4byte gHitMarker\n\ +_08018AD0: .4byte gBattlescriptCurrInstr\n\ +_08018AD4: .4byte BattleScript_SoundproofProtected\n\ +_08018AD8:\n\ + cmp r3, 0\n\ + bne _08018AE0\n\ + bl _08019F76\n\ +_08018AE0:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xB\n\ + beq _08018B50\n\ + cmp r0, 0xB\n\ + bgt _08018AF2\n\ + cmp r0, 0xA\n\ + beq _08018AF8\n\ + b _08018C6A\n\ +_08018AF2:\n\ + cmp r0, 0x12\n\ + beq _08018BA8\n\ + b _08018C6A\n\ +_08018AF8:\n\ + cmp r4, 0xD\n\ + beq _08018AFE\n\ + b _08018C6A\n\ +_08018AFE:\n\ + ldr r0, _08018B28 @ =gBattleMoves\n\ + lsls r1, r3, 1\n\ + adds r1, r3\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + cmp r0, 0\n\ + bne _08018B10\n\ + b _08018C6A\n\ +_08018B10:\n\ + ldr r1, _08018B2C @ =gProtectStructs\n\ + ldr r0, _08018B30 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018B3C\n\ + ldr r1, _08018B34 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018B38 @ =BattleScript_MoveHPDrain\n\ + b _08018B40\n\ + .align 2, 0\n\ +_08018B28: .4byte gBattleMoves\n\ +_08018B2C: .4byte gProtectStructs\n\ +_08018B30: .4byte gBankAttacker\n\ +_08018B34: .4byte gBattlescriptCurrInstr\n\ +_08018B38: .4byte BattleScript_MoveHPDrain\n\ +_08018B3C:\n\ + ldr r1, _08018B48 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018B4C @ =BattleScript_MoveHPDrain_PPLoss\n\ +_08018B40:\n\ + str r0, [r1]\n\ + movs r2, 0x1\n\ + b _08018C68\n\ + .align 2, 0\n\ +_08018B48: .4byte gBattlescriptCurrInstr\n\ +_08018B4C: .4byte BattleScript_MoveHPDrain_PPLoss\n\ +_08018B50:\n\ + cmp r4, 0xB\n\ + beq _08018B56\n\ + b _08018C6A\n\ +_08018B56:\n\ + ldr r0, _08018B80 @ =gBattleMoves\n\ + lsls r1, r3, 1\n\ + adds r1, r3\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + cmp r0, 0\n\ + bne _08018B68\n\ + b _08018C6A\n\ +_08018B68:\n\ + ldr r1, _08018B84 @ =gProtectStructs\n\ + ldr r0, _08018B88 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018B94\n\ + ldr r1, _08018B8C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018B90 @ =BattleScript_MoveHPDrain\n\ + b _08018B98\n\ + .align 2, 0\n\ +_08018B80: .4byte gBattleMoves\n\ +_08018B84: .4byte gProtectStructs\n\ +_08018B88: .4byte gBankAttacker\n\ +_08018B8C: .4byte gBattlescriptCurrInstr\n\ +_08018B90: .4byte BattleScript_MoveHPDrain\n\ +_08018B94:\n\ + ldr r1, _08018BA0 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018BA4 @ =BattleScript_MoveHPDrain_PPLoss\n\ +_08018B98:\n\ + str r0, [r1]\n\ + movs r3, 0x1\n\ + mov r9, r3\n\ + b _08018C6A\n\ + .align 2, 0\n\ +_08018BA0: .4byte gBattlescriptCurrInstr\n\ +_08018BA4: .4byte BattleScript_MoveHPDrain_PPLoss\n\ +_08018BA8:\n\ + cmp r4, 0xA\n\ + bne _08018C6A\n\ + ldr r1, _08018BF4 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r5, r10\n\ + muls r5, r0\n\ + adds r0, r5, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08018C6A\n\ + ldr r2, _08018BF8 @ =0x02017100\n\ + mov r0, r10\n\ + lsls r1, r0, 2\n\ + adds r0, r1, r2\n\ + ldr r3, [r0]\n\ + movs r4, 0x1\n\ + ands r3, r4\n\ + adds r5, r1, 0\n\ + cmp r3, 0\n\ + bne _08018C30\n\ + ldr r0, _08018BFC @ =gBattleCommunication\n\ + strb r3, [r0, 0x5]\n\ + ldr r1, _08018C00 @ =gProtectStructs\n\ + ldr r0, _08018C04 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018C10\n\ + ldr r1, _08018C08 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018C0C @ =BattleScript_FlashFireBoost\n\ + b _08018C14\n\ + .align 2, 0\n\ +_08018BF4: .4byte gBattleMons\n\ +_08018BF8: .4byte 0x02017100\n\ +_08018BFC: .4byte gBattleCommunication\n\ +_08018C00: .4byte gProtectStructs\n\ +_08018C04: .4byte gBankAttacker\n\ +_08018C08: .4byte gBattlescriptCurrInstr\n\ +_08018C0C: .4byte BattleScript_FlashFireBoost\n\ +_08018C10:\n\ + ldr r1, _08018C28 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018C2C @ =BattleScript_FlashFireBoost_PPLoss\n\ +_08018C14:\n\ + str r0, [r1]\n\ + adds r0, r5, r2\n\ + ldr r1, [r0]\n\ + movs r2, 0x1\n\ + orrs r1, r2\n\ + str r1, [r0]\n\ + movs r1, 0x2\n\ + mov r9, r1\n\ + b _08018C6A\n\ + .align 2, 0\n\ +_08018C28: .4byte gBattlescriptCurrInstr\n\ +_08018C2C: .4byte BattleScript_FlashFireBoost_PPLoss\n\ +_08018C30:\n\ + ldr r0, _08018C4C @ =gBattleCommunication\n\ + strb r4, [r0, 0x5]\n\ + ldr r1, _08018C50 @ =gProtectStructs\n\ + ldr r0, _08018C54 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018C60\n\ + ldr r1, _08018C58 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018C5C @ =BattleScript_FlashFireBoost\n\ + b _08018C64\n\ + .align 2, 0\n\ +_08018C4C: .4byte gBattleCommunication\n\ +_08018C50: .4byte gProtectStructs\n\ +_08018C54: .4byte gBankAttacker\n\ +_08018C58: .4byte gBattlescriptCurrInstr\n\ +_08018C5C: .4byte BattleScript_FlashFireBoost\n\ +_08018C60:\n\ + ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018CA8 @ =BattleScript_FlashFireBoost_PPLoss\n\ +_08018C64:\n\ + str r0, [r1]\n\ + movs r2, 0x2\n\ +_08018C68:\n\ + mov r9, r2\n\ +_08018C6A:\n\ + mov r3, r9\n\ + cmp r3, 0x1\n\ + beq _08018C74\n\ + bl _08019F76\n\ +_08018C74:\n\ + ldr r1, _08018CAC @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r5, r10\n\ + muls r5, r0\n\ + adds r0, r5, 0\n\ + adds r1, r0, r1\n\ + ldrh r0, [r1, 0x2C]\n\ + ldrh r2, [r1, 0x28]\n\ + cmp r0, r2\n\ + bne _08018CD0\n\ + ldr r1, _08018CB0 @ =gProtectStructs\n\ + ldr r0, _08018CB4 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018CBC\n\ + ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018CB8 @ =BattleScript_MoveHPDrain_FullHP\n\ + str r0, [r1]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018CA4: .4byte gBattlescriptCurrInstr\n\ +_08018CA8: .4byte BattleScript_FlashFireBoost_PPLoss\n\ +_08018CAC: .4byte gBattleMons\n\ +_08018CB0: .4byte gProtectStructs\n\ +_08018CB4: .4byte gBankAttacker\n\ +_08018CB8: .4byte BattleScript_MoveHPDrain_FullHP\n\ +_08018CBC:\n\ + ldr r1, _08018CC8 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018CCC @ =BattleScript_MoveHPDrain_FullHP_PPLoss\n\ + str r0, [r1]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018CC8: .4byte gBattlescriptCurrInstr\n\ +_08018CCC: .4byte BattleScript_MoveHPDrain_FullHP_PPLoss\n\ +_08018CD0:\n\ + ldr r2, _08018CEC @ =gBattleMoveDamage\n\ + ldrh r0, [r1, 0x2C]\n\ + lsrs r0, 2\n\ + str r0, [r2]\n\ + cmp r0, 0\n\ + bne _08018CE0\n\ + mov r3, r9\n\ + str r3, [r2]\n\ +_08018CE0:\n\ + ldr r0, [r2]\n\ + negs r0, r0\n\ + str r0, [r2]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018CEC: .4byte gBattleMoveDamage\n\ +_08018CF0:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + subs r0, 0x9\n\ + cmp r0, 0x2F\n\ + bls _08018CFE\n\ + bl _08019F76\n\ +_08018CFE:\n\ + lsls r0, 2\n\ + ldr r1, _08018D08 @ =_08018D0C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08018D08: .4byte _08018D0C\n\ + .align 2, 0\n\ +_08018D0C:\n\ + .4byte _08019128\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08018DCC\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08018E94\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08018F54\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _0801904C\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019204\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _080192E0\n\ +_08018DCC:\n\ + ldr r0, _08018E74 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018DDC\n\ + bl _08019F76\n\ +_08018DDC:\n\ + cmp r3, 0xA5\n\ + bne _08018DE4\n\ + bl _08019F76\n\ +_08018DE4:\n\ + ldr r0, _08018E78 @ =gBattleMoves\n\ + lsls r1, r3, 1\n\ + adds r1, r3\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + cmp r0, 0\n\ + bne _08018DF8\n\ + bl _08019F76\n\ +_08018DF8:\n\ + ldr r2, _08018E7C @ =gSpecialStatuses\n\ + ldr r0, _08018E80 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018E20\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018E20\n\ + bl _08019F76\n\ +_08018E20:\n\ + ldr r1, _08018E84 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r1, r0, r1\n\ + adds r3, r1, 0\n\ + adds r3, 0x21\n\ + ldrb r0, [r3]\n\ + cmp r0, r4\n\ + bne _08018E3A\n\ + bl _08019F76\n\ +_08018E3A:\n\ + adds r2, r1, 0\n\ + adds r2, 0x22\n\ + ldrb r0, [r2]\n\ + cmp r0, r4\n\ + bne _08018E48\n\ + bl _08019F76\n\ +_08018E48:\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + bne _08018E52\n\ + bl _08019F76\n\ +_08018E52:\n\ + strb r4, [r3]\n\ + strb r4, [r2]\n\ + ldr r1, _08018E88 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x1]\n\ + strb r4, [r1, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08018E8C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018E90 @ =BattleScript_ColorChangeActivates\n\ + str r0, [r1]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018E74: .4byte gBattleMoveFlags\n\ +_08018E78: .4byte gBattleMoves\n\ +_08018E7C: .4byte gSpecialStatuses\n\ +_08018E80: .4byte gBankTarget\n\ +_08018E84: .4byte gBattleMons\n\ +_08018E88: .4byte gBattleTextBuff1\n\ +_08018E8C: .4byte gBattlescriptCurrInstr\n\ +_08018E90: .4byte BattleScript_ColorChangeActivates\n\ +_08018E94:\n\ + ldr r0, _08018F2C @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018EA4\n\ + bl _08019F76\n\ +_08018EA4:\n\ + ldr r1, _08018F30 @ =gBattleMons\n\ + ldr r0, _08018F34 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r4, r0, r1\n\ + ldrh r0, [r4, 0x28]\n\ + cmp r0, 0\n\ + bne _08018EBA\n\ + bl _08019F76\n\ +_08018EBA:\n\ + ldr r0, _08018F38 @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08018ECC\n\ + bl _08019F76\n\ +_08018ECC:\n\ + ldr r2, _08018F3C @ =gSpecialStatuses\n\ + ldr r0, _08018F40 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018EF4\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018EF4\n\ + bl _08019F76\n\ +_08018EF4:\n\ + ldr r1, _08018F44 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r2, 0x1\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08018F0E\n\ + bl _08019F76\n\ +_08018F0E:\n\ + ldr r1, _08018F48 @ =gBattleMoveDamage\n\ + ldrh r0, [r4, 0x2C]\n\ + lsrs r0, 4\n\ + str r0, [r1]\n\ + cmp r0, 0\n\ + bne _08018F1C\n\ + str r2, [r1]\n\ +_08018F1C:\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08018F4C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018F50 @ =BattleScript_RoughSkinActivates\n\ + str r0, [r1]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018F2C: .4byte gBattleMoveFlags\n\ +_08018F30: .4byte gBattleMons\n\ +_08018F34: .4byte gBankAttacker\n\ +_08018F38: .4byte gProtectStructs\n\ +_08018F3C: .4byte gSpecialStatuses\n\ +_08018F40: .4byte gBankTarget\n\ +_08018F44: .4byte gBattleMoves\n\ +_08018F48: .4byte gBattleMoveDamage\n\ +_08018F4C: .4byte gBattlescriptCurrInstr\n\ +_08018F50: .4byte BattleScript_RoughSkinActivates\n\ +_08018F54:\n\ + ldr r0, _08019020 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018F64\n\ + bl _08019F76\n\ +_08018F64:\n\ + ldr r1, _08019024 @ =gBattleMons\n\ + ldr r0, _08019028 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08018F7A\n\ + bl _08019F76\n\ +_08018F7A:\n\ + ldr r0, _0801902C @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08018F8C\n\ + bl _08019F76\n\ +_08018F8C:\n\ + ldr r2, _08019030 @ =gSpecialStatuses\n\ + ldr r0, _08019034 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018FB4\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018FB4\n\ + bl _08019F76\n\ +_08018FB4:\n\ + ldr r1, _08019038 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08018FCC\n\ + bl _08019F76\n\ +_08018FCC:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _08018FE4\n\ + bl _08019F76\n\ +_08018FE4:\n\ + ldr r5, _0801903C @ =gBattleCommunication\n\ + movs r4, 0x3\n\ +_08018FE8:\n\ + bl Random\n\ + ands r0, r4\n\ + strb r0, [r5, 0x3]\n\ + cmp r0, 0\n\ + beq _08018FE8\n\ + ldr r1, _0801903C @ =gBattleCommunication\n\ + ldrb r0, [r1, 0x3]\n\ + cmp r0, 0x3\n\ + bne _08019000\n\ + adds r0, 0x2\n\ + strb r0, [r1, 0x3]\n\ +_08019000:\n\ + ldrb r0, [r1, 0x3]\n\ + adds r0, 0x40\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019040 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019044 @ =BattleScript_ApplySecondaryEffect\n\ + str r0, [r1]\n\ + ldr r2, _08019048 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08019020: .4byte gBattleMoveFlags\n\ +_08019024: .4byte gBattleMons\n\ +_08019028: .4byte gBankAttacker\n\ +_0801902C: .4byte gProtectStructs\n\ +_08019030: .4byte gSpecialStatuses\n\ +_08019034: .4byte gBankTarget\n\ +_08019038: .4byte gBattleMoves\n\ +_0801903C: .4byte gBattleCommunication\n\ +_08019040: .4byte gBattlescriptCurrInstr\n\ +_08019044: .4byte BattleScript_ApplySecondaryEffect\n\ +_08019048: .4byte gHitMarker\n\ +_0801904C:\n\ + ldr r0, _080190FC @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801905C\n\ + bl _08019F76\n\ +_0801905C:\n\ + ldr r1, _08019100 @ =gBattleMons\n\ + ldr r0, _08019104 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08019072\n\ + bl _08019F76\n\ +_08019072:\n\ + ldr r0, _08019108 @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08019084\n\ + bl _08019F76\n\ +_08019084:\n\ + ldr r2, _0801910C @ =gSpecialStatuses\n\ + ldr r0, _08019110 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _080190AC\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _080190AC\n\ + bl _08019F76\n\ +_080190AC:\n\ + ldr r1, _08019114 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080190C4\n\ + bl _08019F76\n\ +_080190C4:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _080190DC\n\ + bl _08019F76\n\ +_080190DC:\n\ + ldr r1, _08019118 @ =gBattleCommunication\n\ + movs r0, 0x42\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _0801911C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019120 @ =BattleScript_ApplySecondaryEffect\n\ + str r0, [r1]\n\ + ldr r2, _08019124 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080190FC: .4byte gBattleMoveFlags\n\ +_08019100: .4byte gBattleMons\n\ +_08019104: .4byte gBankAttacker\n\ +_08019108: .4byte gProtectStructs\n\ +_0801910C: .4byte gSpecialStatuses\n\ +_08019110: .4byte gBankTarget\n\ +_08019114: .4byte gBattleMoves\n\ +_08019118: .4byte gBattleCommunication\n\ +_0801911C: .4byte gBattlescriptCurrInstr\n\ +_08019120: .4byte BattleScript_ApplySecondaryEffect\n\ +_08019124: .4byte gHitMarker\n\ +_08019128:\n\ + ldr r0, _080191D8 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08019138\n\ + bl _08019F76\n\ +_08019138:\n\ + ldr r1, _080191DC @ =gBattleMons\n\ + ldr r0, _080191E0 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _0801914E\n\ + bl _08019F76\n\ +_0801914E:\n\ + ldr r0, _080191E4 @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08019160\n\ + bl _08019F76\n\ +_08019160:\n\ + ldr r2, _080191E8 @ =gSpecialStatuses\n\ + ldr r0, _080191EC @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08019188\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08019188\n\ + bl _08019F76\n\ +_08019188:\n\ + ldr r1, _080191F0 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080191A0\n\ + bl _08019F76\n\ +_080191A0:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _080191B8\n\ + bl _08019F76\n\ +_080191B8:\n\ + ldr r1, _080191F4 @ =gBattleCommunication\n\ + movs r0, 0x45\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _080191F8 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080191FC @ =BattleScript_ApplySecondaryEffect\n\ + str r0, [r1]\n\ + ldr r2, _08019200 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080191D8: .4byte gBattleMoveFlags\n\ +_080191DC: .4byte gBattleMons\n\ +_080191E0: .4byte gBankAttacker\n\ +_080191E4: .4byte gProtectStructs\n\ +_080191E8: .4byte gSpecialStatuses\n\ +_080191EC: .4byte gBankTarget\n\ +_080191F0: .4byte gBattleMoves\n\ +_080191F4: .4byte gBattleCommunication\n\ +_080191F8: .4byte gBattlescriptCurrInstr\n\ +_080191FC: .4byte BattleScript_ApplySecondaryEffect\n\ +_08019200: .4byte gHitMarker\n\ +_08019204:\n\ + ldr r0, _080192B4 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08019214\n\ + bl _08019F76\n\ +_08019214:\n\ + ldr r1, _080192B8 @ =gBattleMons\n\ + ldr r0, _080192BC @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _0801922A\n\ + bl _08019F76\n\ +_0801922A:\n\ + ldr r0, _080192C0 @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _0801923C\n\ + bl _08019F76\n\ +_0801923C:\n\ + ldr r1, _080192C4 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08019254\n\ + bl _08019F76\n\ +_08019254:\n\ + ldr r2, _080192C8 @ =gSpecialStatuses\n\ + ldr r0, _080192CC @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _0801927C\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _0801927C\n\ + bl _08019F76\n\ +_0801927C:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _08019294\n\ + bl _08019F76\n\ +_08019294:\n\ + ldr r1, _080192D0 @ =gBattleCommunication\n\ + movs r0, 0x43\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _080192D4 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080192D8 @ =BattleScript_ApplySecondaryEffect\n\ + str r0, [r1]\n\ + ldr r2, _080192DC @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080192B4: .4byte gBattleMoveFlags\n\ +_080192B8: .4byte gBattleMons\n\ +_080192BC: .4byte gBankAttacker\n\ +_080192C0: .4byte gProtectStructs\n\ +_080192C4: .4byte gBattleMoves\n\ +_080192C8: .4byte gSpecialStatuses\n\ +_080192CC: .4byte gBankTarget\n\ +_080192D0: .4byte gBattleCommunication\n\ +_080192D4: .4byte gBattlescriptCurrInstr\n\ +_080192D8: .4byte BattleScript_ApplySecondaryEffect\n\ +_080192DC: .4byte gHitMarker\n\ +_080192E0:\n\ + ldr r0, _08019420 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080192F0\n\ + bl _08019F76\n\ +_080192F0:\n\ + ldr r5, _08019424 @ =gBattleMons\n\ + ldr r7, _08019428 @ =gBankAttacker\n\ + ldrb r1, [r7]\n\ + movs r6, 0x58\n\ + adds r0, r1, 0\n\ + muls r0, r6\n\ + adds r0, r5\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08019308\n\ + bl _08019F76\n\ +_08019308:\n\ + ldr r0, _0801942C @ =gProtectStructs\n\ + lsls r1, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _0801931A\n\ + bl _08019F76\n\ +_0801931A:\n\ + ldr r1, _08019430 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08019332\n\ + bl _08019F76\n\ +_08019332:\n\ + ldr r3, _08019434 @ =gSpecialStatuses\n\ + ldr r0, _08019438 @ =gBankTarget\n\ + mov r8, r0\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r2, r0, 2\n\ + adds r0, r3, 0\n\ + adds r0, 0x8\n\ + adds r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _0801935C\n\ + adds r0, r3, 0\n\ + adds r0, 0xC\n\ + adds r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _0801935C\n\ + bl _08019F76\n\ +_0801935C:\n\ + adds r0, r1, 0\n\ + muls r0, r6\n\ + adds r0, r5\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _0801936C\n\ + bl _08019F76\n\ +_0801936C:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _08019384\n\ + bl _08019F76\n\ +_08019384:\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xC\n\ + bne _08019396\n\ + bl _08019F76\n\ +_08019396:\n\ + ldr r0, [sp, 0x8]\n\ + ldr r1, [sp, 0x10]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + adds r4, r0, 0\n\ + ldr r0, [sp, 0xC]\n\ + ldr r1, [sp, 0x14]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsls r4, 24\n\ + lsls r0, 24\n\ + cmp r4, r0\n\ + bne _080193B4\n\ + bl _08019F76\n\ +_080193B4:\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r4, r5, 0\n\ + adds r4, 0x50\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + movs r1, 0xF0\n\ + lsls r1, 12\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080193CE\n\ + bl _08019F76\n\ +_080193CE:\n\ + ldr r0, [sp, 0x8]\n\ + ldr r1, [sp, 0x10]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0xFF\n\ + bne _080193E2\n\ + bl _08019F76\n\ +_080193E2:\n\ + ldr r0, [sp, 0xC]\n\ + ldr r1, [sp, 0x14]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0xFF\n\ + bne _080193F6\n\ + bl _08019F76\n\ +_080193F6:\n\ + ldrb r0, [r7]\n\ + adds r2, r0, 0\n\ + muls r2, r6\n\ + adds r2, r4\n\ + ldr r1, _0801943C @ =gBitTable\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ + lsls r1, 16\n\ + ldr r0, [r2]\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019440 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019444 @ =BattleScript_CuteCharmActivates\n\ + str r0, [r1]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08019420: .4byte gBattleMoveFlags\n\ +_08019424: .4byte gBattleMons\n\ +_08019428: .4byte gBankAttacker\n\ +_0801942C: .4byte gProtectStructs\n\ +_08019430: .4byte gBattleMoves\n\ +_08019434: .4byte gSpecialStatuses\n\ +_08019438: .4byte gBankTarget\n\ +_0801943C: .4byte gBitTable\n\ +_08019440: .4byte gBattlescriptCurrInstr\n\ +_08019444: .4byte BattleScript_CuteCharmActivates\n\ +_08019448:\n\ + movs r5, 0\n\ + mov r10, r5\n\ + ldr r0, _0801947C @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r10, r0\n\ + bcc _08019458\n\ + bl _08019F76\n\ +_08019458:\n\ + ldr r1, _08019480 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r0, r1\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + subs r0, 0x7\n\ + adds r2, r1, 0\n\ + cmp r0, 0x41\n\ + bls _08019472\n\ + b _080196D6\n\ +_08019472:\n\ + lsls r0, 2\n\ + ldr r1, _08019484 @ =_08019488\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0801947C: .4byte gNoOfAllBanks\n\ +_08019480: .4byte gBattleMons\n\ +_08019484: .4byte _08019488\n\ + .align 2, 0\n\ +_08019488:\n\ + .4byte _080195EC\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196B0\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _08019614\n\ + .4byte _080196D6\n\ + .4byte _08019590\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080195BC\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _08019680\n\ + .4byte _08019650\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _08019614\n\ +_08019590:\n\ + movs r0, 0x58\n\ + mov r3, r10\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _080195B0 @ =0x00000f88\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080195AA\n\ + b _080196D6\n\ +_080195AA:\n\ + ldr r0, _080195B4 @ =gBattleTextBuff1\n\ + ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn\n\ + b _0801969C\n\ + .align 2, 0\n\ +_080195B0: .4byte 0x00000f88\n\ +_080195B4: .4byte gBattleTextBuff1\n\ +_080195B8: .4byte gStatusConditionString_PoisonJpn\n\ +_080195BC:\n\ + movs r0, 0x58\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080195D6\n\ + b _080196D6\n\ +_080195D6:\n\ + ldr r0, _080195E4 @ =gBattleTextBuff1\n\ + ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn\n\ + bl StringCopy\n\ + movs r2, 0x2\n\ + mov r9, r2\n\ + b _080196DC\n\ + .align 2, 0\n\ +_080195E4: .4byte gBattleTextBuff1\n\ +_080195E8: .4byte gStatusConditionString_ConfusionJpn\n\ +_080195EC:\n\ + movs r0, 0x58\n\ + mov r3, r10\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + ldr r0, _0801960C @ =gBattleTextBuff1\n\ + ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn\n\ + b _0801969C\n\ + .align 2, 0\n\ +_0801960C: .4byte gBattleTextBuff1\n\ +_08019610: .4byte gStatusConditionString_ParalysisJpn\n\ +_08019614:\n\ + movs r0, 0x58\n\ + mov r3, r10\n\ + muls r3, r0\n\ + adds r0, r2, 0\n\ + adds r0, 0x4C\n\ + adds r0, r3, r0\n\ + ldr r0, [r0]\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + adds r2, 0x50\n\ + adds r2, r3, r2\n\ + ldr r0, [r2]\n\ + ldr r1, _08019644 @ =0xf7ffffff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r0, _08019648 @ =gBattleTextBuff1\n\ + ldr r1, _0801964C @ =gStatusConditionString_SleepJpn\n\ + bl StringCopy\n\ + movs r0, 0x1\n\ + mov r9, r0\n\ + b _080196DC\n\ + .align 2, 0\n\ +_08019644: .4byte 0xf7ffffff\n\ +_08019648: .4byte gBattleTextBuff1\n\ +_0801964C: .4byte gStatusConditionString_SleepJpn\n\ +_08019650:\n\ + movs r0, 0x58\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + ldr r0, _08019678 @ =gBattleTextBuff1\n\ + ldr r1, _0801967C @ =gStatusConditionString_BurnJpn\n\ + bl StringCopy\n\ + movs r2, 0x1\n\ + mov r9, r2\n\ + b _080196DC\n\ + .align 2, 0\n\ +_08019678: .4byte gBattleTextBuff1\n\ +_0801967C: .4byte gStatusConditionString_BurnJpn\n\ +_08019680:\n\ + movs r0, 0x58\n\ + mov r3, r10\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + ldr r0, _080196A8 @ =gBattleTextBuff1\n\ + ldr r1, _080196AC @ =gStatusConditionString_IceJpn\n\ +_0801969C:\n\ + bl StringCopy\n\ + movs r5, 0x1\n\ + mov r9, r5\n\ + b _080196DC\n\ + .align 2, 0\n\ +_080196A8: .4byte gBattleTextBuff1\n\ +_080196AC: .4byte gStatusConditionString_IceJpn\n\ +_080196B0:\n\ + movs r0, 0x58\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0xF0\n\ + lsls r1, 12\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + ldr r0, _080196EC @ =gBattleTextBuff1\n\ + ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn\n\ + bl StringCopy\n\ + movs r2, 0x3\n\ + mov r9, r2\n\ +_080196D6:\n\ + mov r3, r9\n\ + cmp r3, 0\n\ + beq _08019798\n\ +_080196DC:\n\ + mov r5, r9\n\ + cmp r5, 0x2\n\ + beq _08019710\n\ + cmp r5, 0x2\n\ + bgt _080196F4\n\ + cmp r5, 0x1\n\ + beq _080196FC\n\ + b _0801973C\n\ + .align 2, 0\n\ +_080196EC: .4byte gBattleTextBuff1\n\ +_080196F0: .4byte gStatusConditionString_LoveJpn\n\ +_080196F4:\n\ + mov r0, r9\n\ + cmp r0, 0x3\n\ + beq _08019728\n\ + b _0801973C\n\ +_080196FC:\n\ + ldr r1, _0801970C @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r1, 0x4C\n\ + adds r2, r1\n\ + movs r0, 0\n\ + b _0801973A\n\ + .align 2, 0\n\ +_0801970C: .4byte gBattleMons\n\ +_08019710:\n\ + ldr r1, _08019724 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r1, 0x50\n\ + adds r2, r1\n\ + ldr r0, [r2]\n\ + movs r1, 0x8\n\ + negs r1, r1\n\ + b _08019738\n\ + .align 2, 0\n\ +_08019724: .4byte gBattleMons\n\ +_08019728:\n\ + ldr r1, _08019778 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r1, 0x50\n\ + adds r2, r1\n\ + ldr r0, [r2]\n\ + ldr r1, _0801977C @ =0xfff0ffff\n\ +_08019738:\n\ + ands r0, r1\n\ +_0801973A:\n\ + str r0, [r2]\n\ +_0801973C:\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019780 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019784 @ =gUnknown_081D9956\n\ + str r0, [r1]\n\ + ldr r0, _08019788 @ =0x02000000\n\ + ldr r1, _0801978C @ =0x00016003\n\ + adds r0, r1\n\ + mov r2, r10\n\ + strb r2, [r0]\n\ + ldr r4, _08019790 @ =gActiveBank\n\ + strb r2, [r4]\n\ + ldrb r1, [r4]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + ldr r1, _08019794 @ =gUnknown_02024ACC\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + bl _08019F92\n\ + .align 2, 0\n\ +_08019778: .4byte gBattleMons\n\ +_0801977C: .4byte 0xfff0ffff\n\ +_08019780: .4byte gBattlescriptCurrInstr\n\ +_08019784: .4byte gUnknown_081D9956\n\ +_08019788: .4byte 0x02000000\n\ +_0801978C: .4byte 0x00016003\n\ +_08019790: .4byte gActiveBank\n\ +_08019794: .4byte gUnknown_02024ACC\n\ +_08019798:\n\ + mov r0, r10\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + ldr r0, _080197B0 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r10, r0\n\ + bcs _080197AC\n\ + b _08019458\n\ +_080197AC:\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_080197B0: .4byte gNoOfAllBanks\n\ +_080197B4:\n\ + movs r3, 0\n\ + mov r10, r3\n\ + ldr r0, _080197FC @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r10, r0\n\ + bcc _080197C2\n\ + b _08019F76\n\ +_080197C2:\n\ + ldr r4, _08019800 @ =gBattleMons\n\ +_080197C4:\n\ + movs r0, 0x58\n\ + mov r5, r10\n\ + muls r5, r0\n\ + adds r0, r5, 0\n\ + adds r0, r4\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3B\n\ + bne _080197E8\n\ + mov r0, r10\n\ + bl CastformDataTypeChange\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + cmp r0, 0\n\ + beq _080197E8\n\ + b _08019E40\n\ +_080197E8:\n\ + mov r0, r10\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + ldr r0, _080197FC @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r10, r0\n\ + bcc _080197C4\n\ + b _08019F76\n\ + .align 2, 0\n\ +_080197FC: .4byte gNoOfAllBanks\n\ +_08019800: .4byte gBattleMons\n\ +_08019804:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x1C\n\ + beq _0801980E\n\ + b _08019F76\n\ +_0801980E:\n\ + ldr r4, _08019860 @ =gHitMarker\n\ + ldr r1, [r4]\n\ + movs r0, 0x80\n\ + lsls r0, 7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801981E\n\ + b _08019F76\n\ +_0801981E:\n\ + ldr r0, _08019864 @ =0xffffbfff\n\ + ands r1, r0\n\ + str r1, [r4]\n\ + ldr r3, _08019868 @ =0x000160ca\n\ + adds r2, r7, r3\n\ + ldrb r1, [r2]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + cmp r0, 0x6\n\ + bne _08019838\n\ + movs r0, 0x2\n\ + strb r0, [r2]\n\ +_08019838:\n\ + ldr r1, _0801986C @ =gBattleCommunication\n\ + ldrb r0, [r2]\n\ + adds r0, 0x40\n\ + strb r0, [r1, 0x3]\n\ + ldr r0, _08019870 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + ldr r5, _08019874 @ =0x00016003\n\ + adds r0, r7, r5\n\ + strb r1, [r0]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019878 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0801987C @ =BattleScript_SynchronizeActivates\n\ + str r0, [r1]\n\ + ldr r0, [r4]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r4]\n\ + b _08019F22\n\ + .align 2, 0\n\ +_08019860: .4byte gHitMarker\n\ +_08019864: .4byte 0xffffbfff\n\ +_08019868: .4byte 0x000160ca\n\ +_0801986C: .4byte gBattleCommunication\n\ +_08019870: .4byte gBankTarget\n\ +_08019874: .4byte 0x00016003\n\ +_08019878: .4byte gBattlescriptCurrInstr\n\ +_0801987C: .4byte BattleScript_SynchronizeActivates\n\ +_08019880:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x1C\n\ + beq _0801988A\n\ + b _08019F76\n\ +_0801988A:\n\ + ldr r4, _080198DC @ =gHitMarker\n\ + ldr r1, [r4]\n\ + movs r0, 0x80\n\ + lsls r0, 7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801989A\n\ + b _08019F76\n\ +_0801989A:\n\ + ldr r0, _080198E0 @ =0xffffbfff\n\ + ands r1, r0\n\ + str r1, [r4]\n\ + ldr r3, _080198E4 @ =0x000160ca\n\ + adds r2, r7, r3\n\ + ldrb r1, [r2]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + cmp r0, 0x6\n\ + bne _080198B4\n\ + movs r0, 0x2\n\ + strb r0, [r2]\n\ +_080198B4:\n\ + ldr r1, _080198E8 @ =gBattleCommunication\n\ + ldrb r0, [r2]\n\ + strb r0, [r1, 0x3]\n\ + ldr r0, _080198EC @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + ldr r5, _080198F0 @ =0x00016003\n\ + adds r0, r7, r5\n\ + strb r1, [r0]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _080198F4 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080198F8 @ =BattleScript_SynchronizeActivates\n\ + str r0, [r1]\n\ + ldr r0, [r4]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r4]\n\ + b _08019F22\n\ + .align 2, 0\n\ +_080198DC: .4byte gHitMarker\n\ +_080198E0: .4byte 0xffffbfff\n\ +_080198E4: .4byte 0x000160ca\n\ +_080198E8: .4byte gBattleCommunication\n\ +_080198EC: .4byte gBankAttacker\n\ +_080198F0: .4byte 0x00016003\n\ +_080198F4: .4byte gBattlescriptCurrInstr\n\ +_080198F8: .4byte BattleScript_SynchronizeActivates\n\ +_080198FC:\n\ + movs r4, 0\n\ + ldr r0, _08019934 @ =gNoOfAllBanks\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + blt _08019908\n\ + b _08019F76\n\ +_08019908:\n\ + ldr r0, _08019938 @ =gBattleMons\n\ + adds r5, r1, 0\n\ + ldr r2, _0801993C @ =gStatuses3\n\ + adds r3, r0, 0\n\ + adds r3, 0x20\n\ + movs r6, 0x80\n\ + lsls r6, 12\n\ +_08019916:\n\ + ldrb r1, [r3]\n\ + cmp r1, 0x16\n\ + bne _08019926\n\ + ldr r0, [r2]\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08019926\n\ + b _08019E6C\n\ +_08019926:\n\ + adds r2, 0x4\n\ + adds r3, 0x58\n\ + adds r4, 0x1\n\ + cmp r4, r5\n\ + blt _08019916\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019934: .4byte gNoOfAllBanks\n\ +_08019938: .4byte gBattleMons\n\ +_0801993C: .4byte gStatuses3\n\ +_08019940:\n\ + movs r4, 0\n\ + ldr r0, _08019A1C @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _0801994C\n\ + b _08019F76\n\ +_0801994C:\n\ + ldr r0, _08019A20 @ =gActiveBank\n\ + mov r8, r0\n\ + ldr r1, _08019A24 @ =gBattleMons\n\ + adds r1, 0x20\n\ + str r1, [sp, 0x1C]\n\ + movs r2, 0\n\ + str r2, [sp, 0x20]\n\ +_0801995A:\n\ + ldr r3, [sp, 0x1C]\n\ + ldrb r0, [r3]\n\ + cmp r0, 0x24\n\ + beq _08019964\n\ + b _08019AF6\n\ +_08019964:\n\ + ldr r0, _08019A28 @ =gStatuses3\n\ + ldr r5, [sp, 0x20]\n\ + adds r0, r5, r0\n\ + ldr r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 13\n\ + ands r1, r0\n\ + str r5, [sp, 0x18]\n\ + cmp r1, 0\n\ + bne _0801997A\n\ + b _08019AF6\n\ +_0801997A:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + adds r5, r0, 0\n\ + eors r5, r1\n\ + ands r5, r1\n\ + adds r0, r5, 0\n\ + bl GetBankByPlayerAI\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r0, r5, 0x2\n\ + bl GetBankByPlayerAI\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r0, _08019A2C @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r2, 0x1\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080199AE\n\ + b _08019ABC\n\ +_080199AE:\n\ + movs r1, 0x58\n\ + adds r0, r6, 0\n\ + muls r0, r1\n\ + ldr r3, _08019A24 @ =gBattleMons\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08019A78\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019A34\n\ + movs r1, 0x58\n\ + adds r0, r7, 0\n\ + muls r0, r1\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08019A34\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019A34\n\ + str r2, [sp, 0x24]\n\ + bl Random\n\ + ldr r2, [sp, 0x24]\n\ + adds r1, r2, 0\n\ + ands r1, r0\n\ + lsls r1, 1\n\ + orrs r5, r1\n\ + adds r0, r5, 0\n\ + bl GetBankByPlayerAI\n\ + mov r2, r8\n\ + strb r0, [r2]\n\ + ldrb r0, [r2]\n\ + movs r3, 0x58\n\ + muls r0, r3\n\ + ldr r5, _08019A24 @ =gBattleMons\n\ + adds r0, r5\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + ldr r1, [sp, 0x1C]\n\ + strb r0, [r1]\n\ + ldrb r0, [r2]\n\ + muls r0, r3\n\ + adds r0, r5\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + ldr r2, _08019A30 @ =gLastUsedAbility\n\ + strb r0, [r2]\n\ + b _08019AE4\n\ + .align 2, 0\n\ +_08019A1C: .4byte gNoOfAllBanks\n\ +_08019A20: .4byte gActiveBank\n\ +_08019A24: .4byte gBattleMons\n\ +_08019A28: .4byte gStatuses3\n\ +_08019A2C: .4byte gBattleTypeFlags\n\ +_08019A30: .4byte gLastUsedAbility\n\ +_08019A34:\n\ + ldr r3, _08019A74 @ =gBattleMons\n\ + movs r2, 0x58\n\ + adds r0, r6, 0\n\ + muls r0, r2\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08019A78\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019A78\n\ + mov r5, r8\n\ + strb r6, [r5]\n\ + adds r1, r4, 0\n\ + muls r1, r2\n\ + adds r1, r3\n\ + ldrb r0, [r5]\n\ + muls r0, r2\n\ + adds r0, r3\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r1, 0x20\n\ + strb r0, [r1]\n\ + ldrb r0, [r5]\n\ + muls r0, r2\n\ + adds r0, r3\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + b _08019AE0\n\ + .align 2, 0\n\ +_08019A74: .4byte gBattleMons\n\ +_08019A78:\n\ + ldr r3, _08019AB8 @ =gBattleMons\n\ + movs r2, 0x58\n\ + adds r0, r7, 0\n\ + muls r0, r2\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08019AEE\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019AEE\n\ + mov r5, r8\n\ + strb r7, [r5]\n\ + adds r1, r4, 0\n\ + muls r1, r2\n\ + adds r1, r3\n\ + ldrb r0, [r5]\n\ + muls r0, r2\n\ + adds r0, r3\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r1, 0x20\n\ + strb r0, [r1]\n\ + ldrb r0, [r5]\n\ + muls r0, r2\n\ + adds r0, r3\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + b _08019AE0\n\ + .align 2, 0\n\ +_08019AB8: .4byte gBattleMons\n\ +_08019ABC:\n\ + mov r2, r8\n\ + strb r6, [r2]\n\ + movs r3, 0x58\n\ + adds r0, r6, 0\n\ + muls r0, r3\n\ + ldr r5, _08019B10 @ =gBattleMons\n\ + adds r0, r5\n\ + adds r2, r0, 0\n\ + adds r2, 0x20\n\ + ldrb r1, [r2]\n\ + cmp r1, 0\n\ + beq _08019AEE\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + beq _08019AEE\n\ + ldr r0, [sp, 0x1C]\n\ + strb r1, [r0]\n\ + ldrb r0, [r2]\n\ +_08019AE0:\n\ + ldr r1, _08019B14 @ =gLastUsedAbility\n\ + strb r0, [r1]\n\ +_08019AE4:\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019AEE:\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + beq _08019AF6\n\ + b _08019E88\n\ +_08019AF6:\n\ + ldr r3, [sp, 0x1C]\n\ + adds r3, 0x58\n\ + str r3, [sp, 0x1C]\n\ + ldr r5, [sp, 0x20]\n\ + adds r5, 0x4\n\ + str r5, [sp, 0x20]\n\ + adds r4, 0x1\n\ + ldr r0, _08019B18 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + bge _08019B0E\n\ + b _0801995A\n\ +_08019B0E:\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019B10: .4byte gBattleMons\n\ +_08019B14: .4byte gLastUsedAbility\n\ +_08019B18: .4byte gNoOfAllBanks\n\ +_08019B1C:\n\ + movs r4, 0\n\ + ldr r0, _08019B54 @ =gNoOfAllBanks\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + blt _08019B28\n\ + b _08019F76\n\ +_08019B28:\n\ + ldr r0, _08019B58 @ =gBattleMons\n\ + adds r5, r1, 0\n\ + ldr r2, _08019B5C @ =gStatuses3\n\ + adds r3, r0, 0\n\ + adds r3, 0x20\n\ + movs r6, 0x80\n\ + lsls r6, 12\n\ +_08019B36:\n\ + ldrb r1, [r3]\n\ + cmp r1, 0x16\n\ + bne _08019B46\n\ + ldr r0, [r2]\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08019B46\n\ + b _08019F04\n\ +_08019B46:\n\ + adds r2, 0x4\n\ + adds r3, 0x58\n\ + adds r4, 0x1\n\ + cmp r4, r5\n\ + blt _08019B36\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019B54: .4byte gNoOfAllBanks\n\ +_08019B58: .4byte gBattleMons\n\ +_08019B5C: .4byte gStatuses3\n\ +_08019B60:\n\ + mov r0, r10\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _08019BB0 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019B76\n\ + b _08019F76\n\ +_08019B76:\n\ + ldr r7, _08019BB4 @ =gBattleMons\n\ +_08019B78:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r3, r4, 0x1\n\ + cmp r0, r5\n\ + beq _08019BA2\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _08019BA2\n\ + ldr r0, _08019BB8 @ =gLastUsedAbility\n\ + strb r6, [r0]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019BA2:\n\ + adds r4, r3, 0\n\ + ldr r0, _08019BB0 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019B78\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019BB0: .4byte gNoOfAllBanks\n\ +_08019BB4: .4byte gBattleMons\n\ +_08019BB8: .4byte gLastUsedAbility\n\ +_08019BBC:\n\ + mov r0, r10\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _08019C0C @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019BD2\n\ + b _08019F76\n\ +_08019BD2:\n\ + ldr r7, _08019C10 @ =gBattleMons\n\ +_08019BD4:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r3, r4, 0x1\n\ + cmp r0, r5\n\ + bne _08019BFE\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _08019BFE\n\ + ldr r0, _08019C14 @ =gLastUsedAbility\n\ + strb r6, [r0]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019BFE:\n\ + adds r4, r3, 0\n\ + ldr r0, _08019C0C @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019BD4\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019C0C: .4byte gNoOfAllBanks\n\ +_08019C10: .4byte gBattleMons\n\ +_08019C14: .4byte gLastUsedAbility\n\ +_08019C18:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xFD\n\ + beq _08019C40\n\ + cmp r0, 0xFE\n\ + beq _08019C78\n\ + movs r4, 0\n\ + ldr r0, _08019C38 @ =gNoOfAllBanks\n\ + adds r5, r0, 0\n\ + ldrb r2, [r5]\n\ + cmp r4, r2\n\ + blt _08019C32\n\ + b _08019F76\n\ +_08019C32:\n\ + ldr r2, _08019C3C @ =gBattleMons\n\ + b _08019CB0\n\ + .align 2, 0\n\ +_08019C38: .4byte gNoOfAllBanks\n\ +_08019C3C: .4byte gBattleMons\n\ +_08019C40:\n\ + movs r4, 0\n\ + ldr r0, _08019C70 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019C4C\n\ + b _08019F76\n\ +_08019C4C:\n\ + ldr r5, _08019C74 @ =gStatuses3\n\ + movs r2, 0x80\n\ + lsls r2, 9\n\ + adds r1, r0, 0\n\ +_08019C54:\n\ + lsls r0, r4, 2\n\ + adds r0, r5\n\ + ldr r0, [r0]\n\ + ands r0, r2\n\ + adds r3, r4, 0x1\n\ + cmp r0, 0\n\ + beq _08019C68\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019C68:\n\ + adds r4, r3, 0\n\ + cmp r4, r1\n\ + blt _08019C54\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019C70: .4byte gNoOfAllBanks\n\ +_08019C74: .4byte gStatuses3\n\ +_08019C78:\n\ + movs r4, 0\n\ + ldr r0, _08019CA8 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019C84\n\ + b _08019F76\n\ +_08019C84:\n\ + ldr r5, _08019CAC @ =gStatuses3\n\ + movs r2, 0x80\n\ + lsls r2, 10\n\ + adds r1, r0, 0\n\ +_08019C8C:\n\ + lsls r0, r4, 2\n\ + adds r0, r5\n\ + ldr r0, [r0]\n\ + ands r0, r2\n\ + adds r3, r4, 0x1\n\ + cmp r0, 0\n\ + beq _08019CA0\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019CA0:\n\ + adds r4, r3, 0\n\ + cmp r4, r1\n\ + blt _08019C8C\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019CA8: .4byte gNoOfAllBanks\n\ +_08019CAC: .4byte gStatuses3\n\ +_08019CB0:\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r2\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0x1\n\ + cmp r0, r6\n\ + bne _08019CCA\n\ + mov r0, r8\n\ + strb r6, [r0]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019CCA:\n\ + adds r4, r3, 0\n\ + ldrb r1, [r5]\n\ + cmp r4, r1\n\ + blt _08019CB0\n\ + b _08019F76\n\ +_08019CD4:\n\ + movs r4, 0\n\ + ldr r0, _08019D10 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019CE0\n\ + b _08019F76\n\ +_08019CE0:\n\ + ldr r7, _08019D14 @ =gBattleMons\n\ + adds r2, r0, 0\n\ + movs r5, 0x58\n\ +_08019CE6:\n\ + adds r0, r4, 0\n\ + muls r0, r5\n\ + adds r1, r0, r7\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0x1\n\ + cmp r0, r6\n\ + bne _08019D08\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019D08\n\ + mov r0, r8\n\ + strb r6, [r0]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019D08:\n\ + adds r4, r3, 0\n\ + cmp r4, r2\n\ + blt _08019CE6\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019D10: .4byte gNoOfAllBanks\n\ +_08019D14: .4byte gBattleMons\n\ +_08019D18:\n\ + movs r4, 0\n\ + ldr r0, _08019D50 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019D24\n\ + b _08019F76\n\ +_08019D24:\n\ + ldr r7, _08019D54 @ =gBattleMons\n\ + adds r1, r0, 0\n\ + movs r5, 0x58\n\ + ldr r2, _08019D58 @ =gLastUsedAbility\n\ +_08019D2C:\n\ + adds r0, r4, 0\n\ + muls r0, r5\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0x1\n\ + cmp r0, r6\n\ + bne _08019D48\n\ + cmp r4, r10\n\ + beq _08019D48\n\ + strb r6, [r2]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019D48:\n\ + adds r4, r3, 0\n\ + cmp r4, r1\n\ + blt _08019D2C\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019D50: .4byte gNoOfAllBanks\n\ +_08019D54: .4byte gBattleMons\n\ +_08019D58: .4byte gLastUsedAbility\n\ +_08019D5C:\n\ + mov r0, r10\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _08019DAC @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019D72\n\ + b _08019F76\n\ +_08019D72:\n\ + ldr r7, _08019DB0 @ =gBattleMons\n\ +_08019D74:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r5\n\ + beq _08019DA0\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _08019DA0\n\ + ldr r0, _08019DB4 @ =gLastUsedAbility\n\ + strb r6, [r0]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019DA0:\n\ + adds r4, 0x1\n\ + ldr r0, _08019DAC @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019D74\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019DAC: .4byte gNoOfAllBanks\n\ +_08019DB0: .4byte gBattleMons\n\ +_08019DB4: .4byte gLastUsedAbility\n\ +_08019DB8:\n\ + mov r0, r10\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _08019E08 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019DCE\n\ + b _08019F76\n\ +_08019DCE:\n\ + ldr r7, _08019E0C @ =gBattleMons\n\ +_08019DD0:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r5\n\ + bne _08019DFC\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _08019DFC\n\ + ldr r0, _08019E10 @ =gLastUsedAbility\n\ + strb r6, [r0]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019DFC:\n\ + adds r4, 0x1\n\ + ldr r0, _08019E08 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019DD0\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019E08: .4byte gNoOfAllBanks\n\ +_08019E0C: .4byte gBattleMons\n\ +_08019E10: .4byte gLastUsedAbility\n\ +_08019E14:\n\ + ldr r0, _08019E30 @ =BattleScript_CastformChange\n\ + bl b_push_move_exec\n\ + ldr r0, _08019E34 @ =0x02000000\n\ + ldr r2, _08019E38 @ =0x00016003\n\ + adds r1, r0, r2\n\ + strb r6, [r1]\n\ + mov r1, r9\n\ + subs r1, 0x1\n\ + ldr r3, _08019E3C @ =0x0001609b\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019E30: .4byte BattleScript_CastformChange\n\ +_08019E34: .4byte 0x02000000\n\ +_08019E38: .4byte 0x00016003\n\ +_08019E3C: .4byte 0x0001609b\n\ +_08019E40:\n\ + ldr r0, _08019E5C @ =BattleScript_CastformChange\n\ + bl b_push_move_exec\n\ + ldr r0, _08019E60 @ =0x02000000\n\ + ldr r5, _08019E64 @ =0x00016003\n\ + adds r1, r0, r5\n\ + mov r2, r10\n\ + strb r2, [r1]\n\ + mov r1, r9\n\ + subs r1, 0x1\n\ + ldr r3, _08019E68 @ =0x0001609b\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ + b _08019F92\n\ + .align 2, 0\n\ +_08019E5C: .4byte BattleScript_CastformChange\n\ +_08019E60: .4byte 0x02000000\n\ +_08019E64: .4byte 0x00016003\n\ +_08019E68: .4byte 0x0001609b\n\ +_08019E6C:\n\ + mov r5, r8\n\ + strb r1, [r5]\n\ + ldr r0, [r2]\n\ + ldr r1, _08019E80 @ =0xfff7ffff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r0, _08019E84 @ =gUnknown_081D978C\n\ + bl b_push_move_exec\n\ + b _08019F1A\n\ + .align 2, 0\n\ +_08019E80: .4byte 0xfff7ffff\n\ +_08019E84: .4byte gUnknown_081D978C\n\ +_08019E88:\n\ + ldr r0, _08019EDC @ =BattleScript_TraceActivates\n\ + bl b_push_move_exec\n\ + ldr r1, _08019EE0 @ =gStatuses3\n\ + ldr r2, [sp, 0x18]\n\ + adds r1, r2, r1\n\ + ldr r0, [r1]\n\ + ldr r2, _08019EE4 @ =0xffefffff\n\ + ands r0, r2\n\ + str r0, [r1]\n\ + ldr r0, _08019EE8 @ =0x02000000\n\ + ldr r3, _08019EEC @ =0x00016003\n\ + adds r0, r3\n\ + strb r4, [r0]\n\ + ldr r1, _08019EF0 @ =gBattleTextBuff1\n\ + movs r4, 0xFD\n\ + strb r4, [r1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x1]\n\ + ldr r2, _08019EF4 @ =gActiveBank\n\ + ldrb r0, [r2]\n\ + strb r0, [r1, 0x2]\n\ + ldr r3, _08019EF8 @ =gBattlePartyID\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _08019EFC @ =gBattleTextBuff2\n\ + strb r4, [r1]\n\ + movs r0, 0x9\n\ + strb r0, [r1, 0x1]\n\ + ldr r0, _08019F00 @ =gLastUsedAbility\n\ + ldrb r0, [r0]\n\ + strb r0, [r1, 0x2]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r1, 0x3]\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019EDC: .4byte BattleScript_TraceActivates\n\ +_08019EE0: .4byte gStatuses3\n\ +_08019EE4: .4byte 0xffefffff\n\ +_08019EE8: .4byte 0x02000000\n\ +_08019EEC: .4byte 0x00016003\n\ +_08019EF0: .4byte gBattleTextBuff1\n\ +_08019EF4: .4byte gActiveBank\n\ +_08019EF8: .4byte gBattlePartyID\n\ +_08019EFC: .4byte gBattleTextBuff2\n\ +_08019F00: .4byte gLastUsedAbility\n\ +_08019F04:\n\ + mov r5, r8\n\ + strb r1, [r5]\n\ + ldr r0, [r2]\n\ + ldr r1, _08019F30 @ =0xfff7ffff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019F34 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019F38 @ =gUnknown_081D9795\n\ + str r0, [r1]\n\ +_08019F1A:\n\ + ldr r0, _08019F3C @ =0x02000000\n\ + ldr r1, _08019F40 @ =0x000160dd\n\ + adds r0, r1\n\ + strb r4, [r0]\n\ +_08019F22:\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019F30: .4byte 0xfff7ffff\n\ +_08019F34: .4byte gBattlescriptCurrInstr\n\ +_08019F38: .4byte gUnknown_081D9795\n\ +_08019F3C: .4byte 0x02000000\n\ +_08019F40: .4byte 0x000160dd\n\ +_08019F44:\n\ + movs r4, 0\n\ + ldr r0, _08019FA4 @ =gNoOfAllBanks\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + bge _08019F76\n\ + ldr r0, _08019FA8 @ =gBattleMons\n\ + adds r2, r1, 0\n\ + adds r1, r0, 0\n\ + adds r1, 0x20\n\ + ldr r3, _08019FAC @ =gLastUsedAbility\n\ +_08019F58:\n\ + ldrb r0, [r1]\n\ + cmp r0, r6\n\ + bne _08019F6E\n\ + cmp r4, r10\n\ + beq _08019F6E\n\ + strb r6, [r3]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019F6E:\n\ + adds r1, 0x58\n\ + adds r4, 0x1\n\ + cmp r4, r2\n\ + blt _08019F58\n\ +_08019F76:\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + beq _08019F92\n\ +_08019F7C:\n\ + ldr r3, [sp, 0x4]\n\ + cmp r3, 0xB\n\ + bhi _08019F92\n\ + ldr r1, _08019FAC @ =gLastUsedAbility\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xFF\n\ + beq _08019F92\n\ + adds r1, r0, 0\n\ + mov r0, r10\n\ + bl RecordAbilityBattle\n\ +_08019F92:\n\ + mov r0, r9\n\ + add sp, 0x28\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_08019FA4: .4byte gNoOfAllBanks\n\ +_08019FA8: .4byte gBattleMons\n\ +_08019FAC: .4byte gLastUsedAbility\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +void b_call_bc_move_exec(u8* BS_ptr) +{ + gBattlescriptCurrInstr = BS_ptr; + B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; + gBattleMainFunc = sub_8013F54; + gFightStateTracker = 0; +} + +void b_push_move_exec(u8* BS_ptr) +{ + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BS_ptr; + B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; + gBattleMainFunc = sub_8013FBC; +} + +enum +{ + ITEM_NO_EFFECT, // 0 + ITEM_STATUS_CHANGE, // 1 + ITEM_EFFECT_OTHER, // 2 + ITEM_PP_CHANGE, // 3 + ITEM_HP_CHANGE, // 4 + ITEM_STATS_CHANGE, // 5 +}; + +enum +{ + FLAVOR_SPICY, // 0 + FLAVOR_DRY, // 1 + FLAVOR_SWEET, // 2 + FLAVOR_BITTER, // 3 + FLAVOR_SOUR, // 4 +}; + +u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) +{ + int i = 0; + u8 effect = ITEM_NO_EFFECT; + u8 changedPP = 0; + u8 bankHoldEffect, atkHoldEffect, defHoldEffect; + u8 bankQuality, atkQuality, defQuality; + u16 atkItem, defItem; + + gLastUsedItem = gBattleMons[bank].item; + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + bankHoldEffect = gEnigmaBerries[bank].holdEffect; + bankQuality = gEnigmaBerries[bank].holdEffectParam; + } + else + { + bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); + bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem); + } + + atkItem = gBattleMons[gBankAttacker].item; + if (atkItem == ITEM_ENIGMA_BERRY) + { + atkHoldEffect = gEnigmaBerries[gBankAttacker].holdEffect; + atkQuality = gEnigmaBerries[gBankAttacker].holdEffectParam; + } + else + { + atkHoldEffect = ItemId_GetHoldEffect(atkItem); + atkQuality = ItemId_GetHoldEffectParam(atkItem); + } + + // def variables are unused + defItem = gBattleMons[gBankTarget].item; + if (defItem == ITEM_ENIGMA_BERRY) + { + defHoldEffect = gEnigmaBerries[gBankTarget].holdEffect; + defQuality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + defHoldEffect = ItemId_GetHoldEffect(defItem); + defQuality = ItemId_GetHoldEffectParam(defItem); + } + + switch (caseID) + { + case 0: + switch (bankHoldEffect) + { + case HOLD_EFFECT_DOUBLE_PRIZE: + BATTLE_STRUCT->moneyMultiplier = 2; + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); + } + break; + } + break; + case 1: + if (gBattleMons[bank].hp) + { + switch (bankHoldEffect) + { + case HOLD_EFFECT_RESTORE_HP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleMoveDamage = bankQuality; + if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = 4; + } + break; + case HOLD_EFFECT_RESTORE_PP: + if (!moveTurn) + { + struct Pokemon* poke; + u8 ppBonuses; + u16 move; + + if (GetBankSide(bank) == 0) + poke = &gPlayerParty[gBattlePartyID[bank]]; + else + poke = &gEnemyParty[gBattlePartyID[bank]]; + for (i = 0; i < 4; i++) + { + move = GetMonData(poke, MON_DATA_MOVE1 + i); + changedPP = GetMonData(poke, MON_DATA_PP1 + i); + ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES); + if (move && changedPP == 0) + break; + } + if (i != 4) + { + u8 maxPP = CalculatePPWithBonus(move, ppBonuses, i); + if (changedPP + bankQuality > maxPP) + changedPP = maxPP; + else + changedPP = changedPP + bankQuality; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = move; + gBattleTextBuff1[3] = move >> 8; + gBattleTextBuff1[4] = 0xFF; + b_call_bc_move_exec(BattleScript_BerryPPHealEnd2); + EmitSetAttributes(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); + MarkBufferBankForExecution(gActiveBank); + effect = ITEM_PP_CHANGE; + } + } + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); + } + break; + case HOLD_EFFECT_LEFTOVERS: + if (gBattleMons[bank].hp < gBattleMons[bank].maxHP && !moveTurn) + { + gBattleMoveDamage = gBattleMons[bank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + b_call_bc_move_exec(BattleScript_ItemHealHP_End2); + effect = ITEM_HP_CHANGE; + RecordItemBattle(bank, bankHoldEffect); + } + break; + // nice copy/paste there gamefreak, making a function for confuse berries was too much eh? + case HOLD_EFFECT_CONFUSE_SPICY: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SPICY; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_DRY: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_DRY; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_DRY) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_SWEET: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SWEET; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_BITTER: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_BITTER; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_SOUR: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SOUR; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + // copy/paste again, smh + case HOLD_EFFECT_ATTACK_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_ATK; + gBattleTextBuff1[3] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD2; + gBattleTextBuff2[3] = 0xD2 >> 8; + gBattleTextBuff2[4] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_ATK; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_ATK; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_DEFENSE_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_DEF; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_DEF; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_DEF; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SPEED_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPEED; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPEED; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPEED; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SP_ATTACK_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPATK; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPATK; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPATK; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SP_DEFENSE_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPDEF; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPDEF; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPDEF; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_CRITICAL_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY)) + { + gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY; + b_call_bc_move_exec(BattleScript_BerryFocusEnergyEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_RANDOM_STAT_UP: + if (!moveTurn && gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality) + { + for (i = 0; i < 5; i++) + { + if (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] < 0xC) + break; + } + if (i != 5) + { + do + { + i = Random() % 5; + } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = i + 1; + gBattleTextBuff1[3] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD1; + gBattleTextBuff2[3] = 0xD1 >> 8; + gBattleTextBuff2[4] = 0; + gBattleTextBuff2[5] = 0xD2; + gBattleTextBuff2[6] = 0xD2 >> 8; + gBattleTextBuff2[7] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x21 + i; + BATTLE_STRUCT->animArg1 = 0x21 + i + 6; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + } + break; + case HOLD_EFFECT_CURE_PAR: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + b_call_bc_move_exec(BattleScript_BerryCurePrlzEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + b_call_bc_move_exec(BattleScript_BerryCurePsnEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_BRN: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + gBattleMons[bank].status1 &= ~(STATUS_BURN); + b_call_bc_move_exec(BattleScript_BerryCureBrnEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_FRZ: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + b_call_bc_move_exec(BattleScript_BerryCureFrzEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_SLP: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + b_call_bc_move_exec(BattleScript_BerryCureSlpEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_CONFUSION: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + b_call_bc_move_exec(BattleScript_BerryCureConfusionEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_STATUS: + if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + i = 0; + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + i++; + } + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + i++; + } + if (!(i > 1)) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleMons[bank].status1 = 0; + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + b_call_bc_move_exec(gUnknown_081D9A44); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_ATTRACT: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + b_call_bc_move_exec(gUnknown_081D9A44); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect = ITEM_EFFECT_OTHER; + } + break; + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + switch (effect) + { + case ITEM_STATUS_CHANGE: + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + case ITEM_PP_CHANGE: + if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i])) + gBattleMons[bank].pp[i] = changedPP; + break; + } + } + } + break; + case 2: + break; + case 3: + for (bank = 0; bank < gNoOfAllBanks; bank++) + { + gLastUsedItem = gBattleMons[bank].item; + if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) + { + bankHoldEffect = gEnigmaBerries[bank].holdEffect; + bankQuality = gEnigmaBerries[bank].holdEffectParam; + } + else + { + bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); + bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem); + } + switch (bankHoldEffect) + { + case HOLD_EFFECT_CURE_PAR: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureParRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_BRN: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + gBattleMons[bank].status1 &= ~(STATUS_BURN); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_FRZ: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_SLP: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_CONFUSION: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_ATTRACT: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + b_movescr_stack_push_cursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = gUnknown_081D9A4A; + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_STATUS: + if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + } + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + } + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + } + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + } + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + } + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + } + gBattleMons[bank].status1 = 0; + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + b_movescr_stack_push_cursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = gUnknown_081D9A4A; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; + return effect; // unnecessary return + } + break; + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = bank; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + } + break; + case 4: + if (gBattleMoveDamage) + { + switch (atkHoldEffect) + { + case HOLD_EFFECT_FLINCH: + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (Random() % 100) < bankQuality + && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED + && gBattleMons[gBankTarget].hp) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 8; + b_movescr_stack_push_cursor(); + SetMoveEffect(0, 0); + b_movescr_stack_pop_cursor(); + } + break; + case HOLD_EFFECT_SHELL_BELL: + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gSpecialStatuses[gBankTarget].moveturnLostHP != 0 + && gSpecialStatuses[gBankTarget].moveturnLostHP != 0xFFFF + && gBankAttacker != gBankTarget + && gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP + && gBattleMons[gBankAttacker].hp != 0) + { + gLastUsedItem = atkItem; + gStringBank = gBankAttacker; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + gBattleMoveDamage = (gSpecialStatuses[gBankTarget].moveturnLostHP / atkQuality) * -1; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = -1; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; + effect++; + } + break; + } + } + break; + } + + return effect; +} + +struct CombinedMove +{ + u16 move1; + u16 move2; + u16 newMove; +}; + +static const struct CombinedMove sCombinedMoves[2] = +{ + {MOVE_EMBER, MOVE_GUST, MOVE_HEAT_WAVE}, + {0xFFFF, 0xFFFF, 0xFFFF} +}; + +void unref_sub_801B40C(void) +{ + int i = 0; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + do + { + u8 bank = 0; + do + { + u8 absent = gAbsentBankFlags; + if (gBitTable[bank] & absent || absent & gBitTable[bank + 2]) + bank++; + else + { + if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank + 2]) + { + gSideTimer[GetBankIdentity(bank) & 1].field3 = (bank) | ((bank + 2) << 4); + gSideTimer[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; + gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; + } + if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank]) + { + gSideTimer[GetBankIdentity(bank) & 1].field3 = (bank + 2) | ((bank) << 4); + gSideTimer[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; + gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; + } + bank++; + } + } while (bank < 2); + i++; + } while (sCombinedMoves[i].move1 != 0xFFFF); + } +} + +void sub_801B594(void) +{ + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[*gBattlescriptCurrInstr](); +} + +u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target +{ + u8 targetBank = 0; + u8 moveTarget; + u8 side; + + if (useMoveTarget) + moveTarget = useMoveTarget - 1; + else + moveTarget = gBattleMoves[move].target; + + switch (moveTarget) + { + case 0: + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) + targetBank = gSideTimer[side].followmeTarget; + else + { + side = GetBankSide(gBankAttacker); + do + { + targetBank = Random() % gNoOfAllBanks; + } while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]); + if (gBattleMoves[move].type == TYPE_ELECTRIC + && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0) + && gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD) + { + targetBank ^= 2; + RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability); + gSpecialStatuses[targetBank].lightningRodRedirected = 1; + } + } + break; + case 1: + case 8: + case 32: + case 64: + targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); + if (gAbsentBankFlags & gBitTable[targetBank]) + targetBank ^= 2; + break; + case 4: + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) + targetBank = gSideTimer[side].followmeTarget; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4) + { + if (GetBankSide(gBankAttacker) == 0) + { + if (Random() & 1) + targetBank = GetBankByPlayerAI(1); + else + targetBank = GetBankByPlayerAI(3); + } + else + { + if (Random() & 1) + targetBank = GetBankByPlayerAI(0); + else + targetBank = GetBankByPlayerAI(2); + } + if (gAbsentBankFlags & gBitTable[targetBank]) + targetBank ^= 2; + } + else + targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); + break; + case 2: + case 16: + targetBank = gBankAttacker; + break; + } + ewram[gBankAttacker + 0x16010] = targetBank; + return targetBank; +} + +u8 IsPokeDisobedient(void) +{ + u8 obedienceLevel; + s32 rnd; + s32 calc; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK + || GetBankSide(gBankAttacker) == 1 + || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName) + || FlagGet(BADGE08_GET)) + return 0; + + obedienceLevel = 10; + if (FlagGet(BADGE02_GET)) + obedienceLevel = 30; + if (FlagGet(BADGE04_GET)) + obedienceLevel = 50; + if (FlagGet(BADGE06_GET)) + obedienceLevel = 70; + + if (gBattleMons[gBankAttacker].level <= obedienceLevel) + return 0; + rnd = (Random() & 255); + calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; + if (calc < obedienceLevel) + return 0; + + // is not obedient + if (gCurrentMove == MOVE_RAGE) + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE); + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) + { + gBattlescriptCurrInstr = gUnknown_081D995F; + return 1; + } + + rnd = (Random() & 255); + calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; + if (calc < obedienceLevel) + { + calc = CheckMoveLimitations(gBankAttacker, gBitTable[gCurrMovePos], 0xFF); + if (calc == 0xF) // all moves cannot be used + { + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + return 1; + } + else // use a random move + { + do + { + gCurrMovePos = gUnknown_02024BE5 = Random() & 3; + } while (gBitTable[gCurrMovePos] & calc); + gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gBattleCommunication[3] = 0; + gDynamicBasePower = 0; + BATTLE_STRUCT->dynamicMoveType = 0; + gBattlescriptCurrInstr = gUnknown_081D996F; + gBankTarget = GetMoveTarget(gRandomMove, 0); + gHitMarker |= HITMARKER_x200000; + return 2; + } + } + else + { + obedienceLevel = gBattleMons[gBankAttacker].level - obedienceLevel; + + calc = (Random() & 255); + if (calc < obedienceLevel && !(gBattleMons[gBankAttacker].status1 & STATUS_ANY) && gBattleMons[gBankAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBankAttacker].ability != ABILITY_INSOMNIA) + { + // try putting asleep + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].status2 & STATUS2_UPROAR) + break; + } + if (i == gNoOfAllBanks) + { + gBattlescriptCurrInstr = gUnknown_081D9989; + return 1; + } + } + calc -= obedienceLevel; + if (calc < obedienceLevel) + { + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); + gBankTarget = gBankAttacker; + gBattlescriptCurrInstr = gUnknown_081D99A0; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + return 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + return 1; + } + } +} diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c new file mode 100644 index 000000000..e4a4895b5 --- /dev/null +++ b/src/battle/battle_4.c @@ -0,0 +1,17641 @@ +#include "global.h" +#include "battle.h" +#include "battle_move_effects.h" +#include "moves.h" +#include "abilities.h" +#include "item.h" +#include "items.h" +#include "data2.h" +#include "hold_effects.h" +#include "rng.h" +#include "rom3.h" +#include "species.h" +#include "pokemon.h" +#include "text.h" +#include "palette.h" +#include "main.h" +#include "songs.h" +#include "sound.h" +#include "task.h" +#include "decompress.h" +#include "naming_screen.h" + +//extern needed variables +extern u8 gCritMultiplier; +extern s32 gBattleMoveDamage; +extern u32 gStatuses3[4]; +extern u16 gBattleTypeFlags; +extern const u32 gBitTable[]; +extern const struct BaseStats gBaseStats[]; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern struct BattlePokemon gBattleMons[4]; +extern u8 gActiveBank; +extern u32 gBattleExecBuffer; +extern u8 gNoOfAllBanks; +extern u16 gBattlePartyID[4]; +extern u8 gTurnOrder[4]; +extern u8 gUnknown_02024A76[4]; +extern u16 gCurrentMove; +extern u8 gLastUsedAbility; +extern u16 gBattleWeather; +extern u8 gStringBank; +extern u8 gEffectBank; +extern u8 gAbsentBankFlags; +extern u8 gMultiHitCounter; +extern u16 gLastUsedMove[4]; +extern u16 gLockedMove[4]; +extern u16 gChosenMovesByBanks[4]; +extern u16 gSideAffecting[2]; +extern u16 gPauseCounterBattle; +extern u16 gPaydayMoney; +extern u16 gRandomTurnNumber; +extern u8 gBattleOutcome; +extern u8 gBattleTerrain; +extern u16 gTrainerBattleOpponent; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8* gBattlescriptCurrInstr; +extern u8 gCurrMovePos; +extern u8 gFightStateTracker; +extern u32 gHitMarker; +extern u8 gBattleMoveFlags; +extern u8 gBattleCommunication[]; +extern u16 gMoveHitWith[4]; +extern u16 gUnknown_02024C44[4]; +extern u8 gStringBank; +extern u16 gDynamicBasePower; +extern const u8 gTypeEffectiveness[]; +extern u16 gLastUsedItem; +extern u16 gBattleMovePower; +extern s32 gHP_dealt; +extern s32 gTakenDmg[4]; +extern u8 gTakenDmgBanks[4]; +extern const u16 gMissStrings[]; +extern u8 gSentPokesToOpponent[2]; +extern u8 gBank1; +extern u16 gExpShareExp; +extern u8 gBattleTextBuff1[]; +extern u8 gBattleTextBuff2[]; +extern u8 gBattleTextBuff3[]; +extern u8 gLeveledUpInBattle; +extern void (*gBattleMainFunc)(void); +extern struct Window gUnknown_03004210; +extern const u8 gUnknown_08400D7A[]; +extern u8 gPlayerPartyCount; +extern u16 gMoveToLearn; //move to learn +extern const u8 gTrainerMoney[]; +extern u16 gRandomMove; +extern u8* gBattleScriptsEffectsTable[]; +extern u16 gUnknown_02024BE8; //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 gUnknown_02024C4C[4]; //last used moves by banks, another one +extern u8 gCurrentMoveTurn; +extern u16 gTrappingMoves[]; + +//extern functions +u8 AtkCanceller_UnableToUseMove(void); +void PressurePPLose(u8 bank_atk, u8 bank_def, u16 move); +void CancelMultiTurnMoves(u8 bank); +void b_movescr_stack_push(u8* BS_ptr); +void b_movescr_stack_push_cursor(void); +void RecordAbilityBattle(u8 bank, u8 ability); +void RecordItemBattle(u8 bank, u8 holdEffect); +int IsPokeDisobedient(void); +static bool8 IsTwoTurnsMove(u16 move); +static void DestinyBondFlagUpdate(void); +static void b_wonderguard_and_levitate(void); +u8 GetBankIdentity(u8 bank); +u8 GetBankSide(u8 bank); +u8 GetBattleBank(u8 bankValue); +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); +static u8 AttacksThisTurn(u8 bank, u16 move); //Note: returns 1 if it's a charging turn, otherwise 2 +void UndoEffectsAfterFainting(void); +void BattleMusicStop(void); +void PlayBGM(u16 songID); +void MonGainEVs(struct Pokemon*, u16 defeatedSpecies); +extern u8 gBattleBufferB[4][0x200]; +void sub_80324F8(struct Pokemon*, u8 bank); +void AdjustFriendship(struct Pokemon*, u8 value); +bool8 IsTradedMon(struct Pokemon*); +void b_movescr_stack_pop_cursor(void); +void SwitchInClearStructs(void); +u8* ConvertIntToDecimalStringN(u8*, s32, u8, u8); +u8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); +u16 SpeciesToNationalPokedexNum(u16 species); +u8 sub_803FC34(u8 bank); +u16 sub_803FBFC(u8 a); +u8 GetBankByPlayerAI(u8 ID); +void sub_8012258(u8); +void sub_80157C4(u8 bank); //update sent pokes in battle +//MonTryLearningNewMove teach poke a move +u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); +void IncrementGameStat(u8 index); +u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); +u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight); +u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +void DestroyMenuCursor(void); +void sub_802BC6C(void); +void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32); +u8 sub_809FA30(void); +bool32 IsHMMove2(u16 move); +void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0); +void nullsub_6(void); +void ReshowBattleScreenAfterMenu(void); +void sub_800F808(void); +void AddMoney(u32* moneySaveblock, u32 to_give); +void sub_80156DC(void); //set sentpokes value +bool8 sub_8014AB8(u8 bank); //can run from battle +u8 CountAliveMons(u8 caseID); +void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp); +u8 CanRunFromBattle(void); +u8 GetMoveTarget(u16 move, u8 targetbyte); //get target of move +void sub_80153D0(u8 atk); //pressure perish song pp decrement +u8 CastformDataTypeChange(u8 bank); +void b_push_move_exec(u8* bs_ptr); +u8 Overworld_GetMapTypeOfSaveblockLocation(void); +u8 CalculatePlayerPartyCount(void); +u16 Sqrt(u32 num); +u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display +void sub_814A880(u8 a1, u8 a2); +u8 CheckMoveLimitations(u8 bank, u8 unusable_moves, u8 flags); +void sub_801529C(u8 bank); +bool8 IsLinkDoubleBattle(void); +void sub_8094B6C(u8 bank, u8 partyID, u8 r2); + +//extern BattleScripts +extern u8 BattleScript_EndTurn[]; +extern u8 BattleScript_NoPPForMove[]; +extern u8 BattleScript_MagicCoatBounce[]; +extern u8 BattleScript_TookAttack[]; +extern u8 BattleScript_SnatchedMove[]; +extern u8 BattleScript_Pausex20[]; +extern u8 BattleScript_SubstituteFade[]; +extern u8 BattleScript_HangedOnMsg[]; +extern u8 BattleScript_OneHitKOMsg[]; +extern u8 BattleScript_EnduredMsg[]; +extern u8 BattleScript_PSNPrevention[]; +extern u8 BattleScript_BRNPrevention[]; +extern u8 BattleScript_PRLZPrevention[]; +extern u8 BattleScript_FlinchPrevention[]; +extern u8 BattleScript_StatUp[]; +extern u8 BattleScript_StatDown[]; +extern u8 BattleScript_NoItemSteal[]; +extern u8 BattleScript_ItemSteal[]; +extern u8 BattleScript_RapidSpinAway[]; +extern u8 BattleScript_TargetPRLZHeal[]; +extern u8 BattleScript_KnockedOff[]; +extern u8 BattleScript_LevelUp[]; +extern u8 BattleScript_WrapFree[]; +extern u8 BattleScript_LeechSeedFree[]; +extern u8 BattleScript_SpikesFree[]; +extern u8 BattleScript_ButItFailed[]; +extern u8 BattleScript_ObliviousPreventsAttraction[]; +extern u8 BattleScript_MistProtected[]; +extern u8 BattleScript_AbilityNoStatLoss[]; +extern u8 BattleScript_AbilityNoSpecificStatLoss[]; +extern u8 BattleScript_TrainerBallBlock[]; +extern u8 BattleScript_WallyBallThrow[]; +extern u8 BattleScript_SuccessBallThrow[]; +extern u8 BattleScript_ShakeBallThrow[]; +extern u8 BattleScript_AllStatsUp[]; +extern u8 BattleScript_AtkDefDown[]; +extern u8 BattleScript_SAtkDown2[]; + +extern u8 gUnknown_081D919F[]; //spikes1 +extern u8 gUnknown_081D9171[]; //spikes2 +extern u8 gUnknown_081D91CD[]; //spikes3 +extern u8 BattleScript_1D6F44[]; //present dmg +extern u8 BattleScript_1D83B5[]; //present full hp +extern u8 BattleScript_1D839B[]; //present hp heal +extern u8 BattleScript_1D6F74[]; +extern u8 BattleScript_CastformChange[]; +extern u8 gUnknown_081D9834[]; +extern u8 gUnknown_081D90FC[]; //bs random switchout +extern u8 gUnknown_081D95DB[]; //bs payday money give +extern u8 gUnknown_081D8C58[]; +extern u8 gUnknown_081D8C65[]; +extern u8 gUnknown_081D9156[]; +extern u8 gUnknown_081D9468[]; + + +//useful macros +//read via orr +#define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) +#define BSScriptRead8(ptr) (((u8)((ptr)[0]))) +#define BSScriptReadPtr(ptr) ((void *)BSScriptRead32(ptr)) + +//read via add +#define BS2ScriptRead32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) +#define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr)) + +#define TargetProtectAffected ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) + +//array entries for battle communication +#define MOVE_EFFECT_BYTE 0x3 +#define MULTISTRING_CHOOSER 0x5 +#define MSG_DISPLAY 0x7 + +#define TARGET_SELECTED 0x0 +#define TARGET_DEPENDS 0x1 +#define TARGET_BOTH 0x8 +#define TARGET_FOES_AND_ALLY 0x20 +#define TARGET_OPPONENTS_FIELD 0x40 + +#define TYPE_FORESIGHT 0xFE +#define TYPE_ENDTABLE 0xFF + +#define CMP_EQUAL 0x0 +#define CMP_NOT_EQUAL 0x1 +#define CMP_GREATER_THAN 0x2 +#define CMP_LESS_THAN 0x3 +#define CMP_COMMON_BITS 0x4 +#define CMP_NO_COMMON_BITS 0x5 + +#define uBYTE0_16(value)(( (u8) (((u16)(value) & (0x000000FF)) >> 0x00))) +#define uBYTE1_16(value)(( (u8) (((u16)(value) & (0x0000FF00)) >> 0x08))) + +#define uBYTE0_32(value)(( (u8) (((u32)(value) & (0x000000FF)) >> 0x00))) +#define uBYTE1_32(value)(( (u8) (((u32)(value) & (0x0000FF00)) >> 0x08))) +#define uBYTE2_32(value)(( (u8) (((u32)(value) & (0x00FF0000)) >> 0x10))) +#define uBYTE3_32(value)(( (u8) (((u32)(value) & (0xFF000000)) >> 0x18))) + +#define sBYTE0_16(value)(( (u8) (((s16)(value) & (0x000000FF)) >> 0x00))) +#define sBYTE1_16(value)(( (u8) (((s16)(value) & (0x0000FF00)) >> 0x08))) + +#define sBYTE0_32(value)(( (u8) (((s32)(value) & (0x000000FF)) >> 0x00))) +#define sBYTE1_32(value)(( (u8) (((s32)(value) & (0x0000FF00)) >> 0x08))) +#define sBYTE2_32(value)(( (u8) (((s32)(value) & (0x00FF0000)) >> 0x10))) +#define sBYTE3_32(value)(( (u8) (((s32)(value) & (0xFF000000)) >> 0x18))) + +#define USED_HELD_ITEM(bank)((((u16*)(&unk_2000000[bank * 2 + 0x160cc])))) + +#define RecordAbilitySetField6(ability, fieldValue) \ +(gLastUsedAbility = ability, gBattleCommunication[6] = fieldValue, RecordAbilityBattle(gBankTarget, ability)) + +#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_physical.moveturnLostHP_special))) + +#define HP_ON_SWITCHOUT (((u16*)(0x020160bc))) + +static void atk00_attackcanceler(void); +static void atk01_accuracycheck(void); +static void atk02_attackstring(void); +static void atk03_ppreduce(void); +static void atk04_critcalc(void); +static void atk05_damagecalc1(void); +static void atk06_typecalc(void); +static void atk07_dmg_adjustment(void); +static void atk08_dmg_adjustment2(void); +static void atk09_attackanimation(void); +static void atk0A_waitanimation(void); +static void atk0B_healthbarupdate(void); +static void atk0C_datahpupdate(void); +static void atk0D_critmessage(void); +static void atk0E_effectiveness_sound(void); +static void atk0F_resultmessage(void); +static void atk10_printstring(void); +static void atk11_printstring_playeronly(void); +static void atk12_waitmessage(void); +static void atk13_printfromtable(void); +static void atk14_printfromtable_playeronly(void); +static void atk15_seteffectwithchancetarget(void); +static void atk16_seteffectprimary(void); +static void atk17_seteffectsecondary(void); +static void atk18_status_effect_clear(void); +static void atk19_faint_pokemon(void); +static void atk1A_faint_animation(void); +static void atk1B_faint_effects_clear(void); +static void atk1C_jumpifstatus(void); +static void atk1D_jumpifstatus2(void); +static void atk1E_jumpifability(void); +static void atk1F_jumpifsideaffecting(void); +static void atk20_jumpifstat(void); +static void atk21_jumpifstatus3(void); +static void atk22_jumpiftype(void); +static void atk23_getexp(void); +static void atk24(void); +static void atk25_move_values_cleanup(void); +static void atk26_set_multihit(void); +static void atk27_decrement_multihit(void); +static void atk28_goto(void); +static void atk29_jumpifbyte(void); +static void atk2A_jumpifhalfword(void); +static void atk2B_jumpifword(void); +static void atk2C_jumpifarrayequal(void); +static void atk2D_jumpifarraynotequal(void); +static void atk2E_setbyte(void); +static void atk2F_addbyte(void); +static void atk30_subbyte(void); +static void atk31_copyarray(void); +static void atk32_copyarray_withindex(void); +static void atk33_orbyte(void); +static void atk34_orhalfword(void); +static void atk35_orword(void); +static void atk36_bicbyte(void); +static void atk37_bichalfword(void); +static void atk38_bicword(void); +static void atk39_pause(void); +static void atk3A_waitstate(void); +static void atk3B_healthbar_update(void); +static void atk3C_return(void); +static void atk3D_end(void); +static void atk3E_end2(void); +static void atk3F_end3(void); +static void atk40_jump_if_move_affected_by_protect(void); +static void atk41_call(void); +static void atk42_jumpiftype2(void); +static void atk43_jumpifabilitypresent(void); +static void atk44(void); +static void atk45_playanimation(void); +static void atk46_playanimation2(void); +static void atk47_setgraphicalstatchangevalues(void); +static void atk48_playstatchangeanimation(void); +static void atk49_moveendturn(void); +static void atk4A_typecalc2(void); +static void atk4B_return_atk_to_ball(void); +static void atk4C_copy_poke_data(void); +static void atk4D_switch_data_update(void); +static void atk4E_switchin_anim(void); +static void atk4F_jump_if_cannot_switch(void); +static void atk50_openpartyscreen(void); +static void atk51_switch_handle_order(void); +static void atk52_switch_in_effects(void); +static void atk53_trainer_slide(void); +static void atk54_effectiveness_sound(void); +static void atk55_play_sound(void); +static void atk56_fainting_cry(void); +static void atk57(void); +static void atk58_return_to_ball(void); +void atk59_learnmove_inbattle(void); +static void atk5A(void); +static void atk5B_80256E0(void); +static void atk5C_hitanimation(void); +static void atk5D_getmoneyreward(void); +static void atk5E_8025A70(void); +static void atk5F_8025B24(void); +static void atk60_increment_gamestat(void); +static void atk61_8025BA4(void); +static void atk62_08025C6C(void); +static void atk63_jumptorandomattack(void); +static void atk64_statusanimation(void); +static void atk65_status2animation(void); +static void atk66_chosenstatusanimation(void); +static void atk67_8025ECC(void); +static void atk68_80246A0(void); +static void atk69_dmg_adjustment2(void); +void atk6A_removeitem(void); +static void atk6B_atknameinbuff1(void); +static void atk6C_lvlbox_display(void); +static void atk6D_set_sentpokes_values(void); +static void atk6E_set_atk_to_player0(void); +static void atk6F_set_visible(void); +static void atk70_record_ability(void); +static void atk71_buffer_move_to_learn(void); +static void atk72_jump_if_can_run_frombattle(void); +static void atk73_hp_thresholds(void); +static void atk74_hp_thresholds2(void); +static void atk75_8026A58(void); +static void atk76_various(void); +static void atk77_setprotect(void); +static void atk78_faintifabilitynotdamp(void); +static void atk79_setatkhptozero(void); +static void atk7A_jumpwhiletargetvalid(void); +static void atk7B_healhalfHP_if_possible(void); +static void atk7C_8025508(void); +static void atk7D_set_rain(void); +static void atk7E_setreflect(void); +static void atk7F_setseeded(void); +static void atk80_manipulatedamage(void); +static void atk81_setrest(void); +static void atk82_jumpifnotfirstturn(void); +static void atk83_nop(void); +static void atk84_jump_if_cant_sleep(void); +static void atk85_stockpile(void); +static void atk86_stockpiletobasedamage(void); +static void atk87_stockpiletohpheal(void); +static void atk88_negativedamage(void); +static u8 ChangeStatBuffs(s8, u8, u8, u8*); +static void atk89_statbuffchange(void); +static void atk8A_normalisebuffs(void); +static void atk8B_setbide(void); +static void atk8C_confuseifrepeatingattackends(void); +static void atk8D_setmultihit_counter(void); +static void atk8E_prepare_multihit(void); +static void atk8F_forcerandomswitch(void); +static void atk90_conversion_type_change(void); +static void atk91_givepaydaymoney(void); +static void atk92_setlightscreen(void); +static void atk93_ko_move(void); +static void atk94_gethalfcurrentenemyhp(void); +static void atk95_setsandstorm(void); +static void atk96_weatherdamage(void); +static void atk97_try_infatuation(void); +static void atk98_status_icon_update(void); +static void atk99_setmist(void); +static void atk9A_set_focusenergy(void); +static void atk9B_transformdataexecution(void); +static void atk9C_set_substitute(void); +static void atk9D_copyattack(void); +static void atk9E_metronome(void); +static void atk9F_dmgtolevel(void); +static void atkA0_psywavedamageeffect(void); +static void atkA1_counterdamagecalculator(void); +static void atkA2_mirrorcoatdamagecalculator(void); +static void atkA3_disablelastusedattack(void); +static void atkA4_setencore(void); +static void atkA5_painsplitdmgcalc(void); +static void atkA6_settypetorandomresistance(void); +static void atkA7_setalwayshitflag(void); +static void atkA8_copymovepermanently(void); +static void atkA9_sleeptalk_choose_move(void); +static void atkAA_set_destinybond(void); +static void atkAB_DestinyBondFlagUpdate(void); +static void atkAC_remaininghptopower(void); +static void atkAD_spite_ppreduce(void); +static void atkAE_heal_party_status(void); +static void atkAF_cursetarget(void); +static void atkB0_set_spikes(void); +static void atkB1_set_foresight(void); +static void atkB2_setperishsong(void); +static void atkB3_rolloutdamagecalculation(void); +static void atkB4_jumpifconfusedandstatmaxed(void); +static void atkB5_furycuttercalc(void); +static void atkB6_happinesstodamagecalculation(void); +static void atkB7_presentdamagecalculation(void); +static void atkB8_set_safeguard(void); +static void atkB9_magnitudedamagecalculation(void); +static void atkBA_jumpifnopursuitswitchdmg(void); +static void atkBB_setsunny(void); +static void atkBC_maxattackhalvehp(void); +static void atkBD_copyfoestats(void); +static void atkBE_breakfree(void); +static void atkBF_set_defense_curl(void); +static void atkC0_recoverbasedonsunlight(void); +static void atkC1_hidden_power(void); +static void atkC2_selectnexttarget(void); +static void atkC3_setfutureattack(void); +static void atkC4_beat_up(void); +static void atkC5_hidepreattack(void); +static void atkC6_unhidepostattack(void); +static void atkC7_setminimize(void); +static void atkC8_sethail(void); +static void atkC9_jumpifattackandspecialattackcannotfall(void); +static void atkCA_setforcedtarget(void); +static void atkCB_setcharge(void); +static void atkCC_callterrainattack(void); +static void atkCD_cureifburnedparalysedorpoisoned(void); +static void atkCE_settorment(void); +static void atkCF_jumpifnodamage(void); +static void atkD0_settaunt(void); +static void atkD1_set_helpinghand(void); +static void atkD2_swap_items(void); +static void atkD3_copy_ability(void); +static void atkD4_wish_effect(void); +static void atkD5_setroots(void); +static void atkD6_doubledamagedealtifdamaged(void); +static void atkD7_setyawn(void); +static void atkD8_setdamagetohealthdifference(void); +static void atkD9_scaledamagebyhealthratio(void); +static void atkDA_abilityswap(void); +static void atkDB_imprisoneffect(void); +static void atkDC_setgrudge(void); +static void atkDD_weightdamagecalculation(void); +static void atkDE_asistattackselect(void); +static void atkDF_setmagiccoat(void); +static void atkE0_setstealstatchange(void); +static void atkE1_intimidate_string_loader(void); +static void atkE2_switchout_abilities(void); +static void atkE3_jumpiffainted(void); +static void atkE4_getsecretpowereffect(void); +static void atkE5_pickup(void); +static void atkE6_castform_change_animation(void); +static void atkE7_castform_data_change(void); +static void atkE8_settypebasedhalvers(void); +static void atkE9_setweatherballtype(void); +static void atkEA_recycleitem(void); +static void atkEB_settypetoterrain(void); +static void atkEC_pursuit_sth(void); +static void atkED_802B4B4(void); +static void atkEE_removelightscreenreflect(void); +void atkEF_pokeball_catch_calculation(void); +static void atkF0_copy_caught_poke(void); +static void atkF1_setpoke_as_caught(void); +static void atkF2_display_dex_info(void); +static void atkF3_nickname_caught_poke(void); +static void atkF4_802BEF0(void); +static void atkF5_removeattackerstatus1(void); +static void atkF6_802BF48(void); +static void atkF7_802BF54(void); + +const BattleCmdFunc gBattleScriptingCommandsTable[] = +{ + atk00_attackcanceler, + atk01_accuracycheck, + atk02_attackstring, + atk03_ppreduce, + atk04_critcalc, + atk05_damagecalc1, + atk06_typecalc, + atk07_dmg_adjustment, + atk08_dmg_adjustment2, + atk09_attackanimation, + atk0A_waitanimation, + atk0B_healthbarupdate, + atk0C_datahpupdate, + atk0D_critmessage, + atk0E_effectiveness_sound, + atk0F_resultmessage, + atk10_printstring, + atk11_printstring_playeronly, + atk12_waitmessage, + atk13_printfromtable, + atk14_printfromtable_playeronly, + atk15_seteffectwithchancetarget, + atk16_seteffectprimary, + atk17_seteffectsecondary, + atk18_status_effect_clear, + atk19_faint_pokemon, + atk1A_faint_animation, + atk1B_faint_effects_clear, + atk1C_jumpifstatus, + atk1D_jumpifstatus2, + atk1E_jumpifability, + atk1F_jumpifsideaffecting, + atk20_jumpifstat, + atk21_jumpifstatus3, + atk22_jumpiftype, + atk23_getexp, + atk24, + atk25_move_values_cleanup, + atk26_set_multihit, + atk27_decrement_multihit, + atk28_goto, + atk29_jumpifbyte, + atk2A_jumpifhalfword, + atk2B_jumpifword, + atk2C_jumpifarrayequal, + atk2D_jumpifarraynotequal, + atk2E_setbyte, + atk2F_addbyte, + atk30_subbyte, + atk31_copyarray, + atk32_copyarray_withindex, + atk33_orbyte, + atk34_orhalfword, + atk35_orword, + atk36_bicbyte, + atk37_bichalfword, + atk38_bicword, + atk39_pause, + atk3A_waitstate, + atk3B_healthbar_update, + atk3C_return, + atk3D_end, + atk3E_end2, + atk3F_end3, + atk40_jump_if_move_affected_by_protect, + atk41_call, + atk42_jumpiftype2, + atk43_jumpifabilitypresent, + atk44, + atk45_playanimation, + atk46_playanimation2, + atk47_setgraphicalstatchangevalues, + atk48_playstatchangeanimation, + atk49_moveendturn, + atk4A_typecalc2, + atk4B_return_atk_to_ball, + atk4C_copy_poke_data, + atk4D_switch_data_update, + atk4E_switchin_anim, + atk4F_jump_if_cannot_switch, + atk50_openpartyscreen, + atk51_switch_handle_order, + atk52_switch_in_effects, + atk53_trainer_slide, + atk54_effectiveness_sound, + atk55_play_sound, + atk56_fainting_cry, + atk57, + atk58_return_to_ball, + atk59_learnmove_inbattle, + atk5A, + atk5B_80256E0, + atk5C_hitanimation, + atk5D_getmoneyreward, + atk5E_8025A70, + atk5F_8025B24, + atk60_increment_gamestat, + atk61_8025BA4, + atk62_08025C6C, + atk63_jumptorandomattack, + atk64_statusanimation, + atk65_status2animation, + atk66_chosenstatusanimation, + atk67_8025ECC, + atk68_80246A0, + atk69_dmg_adjustment2, + atk6A_removeitem, + atk6B_atknameinbuff1, + atk6C_lvlbox_display, + atk6D_set_sentpokes_values, + atk6E_set_atk_to_player0, + atk6F_set_visible, + atk70_record_ability, + atk71_buffer_move_to_learn, + atk72_jump_if_can_run_frombattle, + atk73_hp_thresholds, + atk74_hp_thresholds2, + atk75_8026A58, + atk76_various, + atk77_setprotect, + atk78_faintifabilitynotdamp, + atk79_setatkhptozero, + atk7A_jumpwhiletargetvalid, + atk7B_healhalfHP_if_possible, + atk7C_8025508, + atk7D_set_rain, + atk7E_setreflect, + atk7F_setseeded, + atk80_manipulatedamage, + atk81_setrest, + atk82_jumpifnotfirstturn, + atk83_nop, + atk84_jump_if_cant_sleep, + atk85_stockpile, + atk86_stockpiletobasedamage, + atk87_stockpiletohpheal, + atk88_negativedamage, + atk89_statbuffchange, + atk8A_normalisebuffs, + atk8B_setbide, + atk8C_confuseifrepeatingattackends, + atk8D_setmultihit_counter, + atk8E_prepare_multihit, + atk8F_forcerandomswitch, + atk90_conversion_type_change, + atk91_givepaydaymoney, + atk92_setlightscreen, + atk93_ko_move, + atk94_gethalfcurrentenemyhp, + atk95_setsandstorm, + atk96_weatherdamage, + atk97_try_infatuation, + atk98_status_icon_update, + atk99_setmist, + atk9A_set_focusenergy, + atk9B_transformdataexecution, + atk9C_set_substitute, + atk9D_copyattack, + atk9E_metronome, + atk9F_dmgtolevel, + atkA0_psywavedamageeffect, + atkA1_counterdamagecalculator, + atkA2_mirrorcoatdamagecalculator, + atkA3_disablelastusedattack, + atkA4_setencore, + atkA5_painsplitdmgcalc, + atkA6_settypetorandomresistance, + atkA7_setalwayshitflag, + atkA8_copymovepermanently, + atkA9_sleeptalk_choose_move, + atkAA_set_destinybond, + atkAB_DestinyBondFlagUpdate, + atkAC_remaininghptopower, + atkAD_spite_ppreduce, + atkAE_heal_party_status, + atkAF_cursetarget, + atkB0_set_spikes, + atkB1_set_foresight, + atkB2_setperishsong, + atkB3_rolloutdamagecalculation, + atkB4_jumpifconfusedandstatmaxed, + atkB5_furycuttercalc, + atkB6_happinesstodamagecalculation, + atkB7_presentdamagecalculation, + atkB8_set_safeguard, + atkB9_magnitudedamagecalculation, + atkBA_jumpifnopursuitswitchdmg, + atkBB_setsunny, + atkBC_maxattackhalvehp, + atkBD_copyfoestats, + atkBE_breakfree, + atkBF_set_defense_curl, + atkC0_recoverbasedonsunlight, + atkC1_hidden_power, + atkC2_selectnexttarget, + atkC3_setfutureattack, + atkC4_beat_up, + atkC5_hidepreattack, + atkC6_unhidepostattack, + atkC7_setminimize, + atkC8_sethail, + atkC9_jumpifattackandspecialattackcannotfall, + atkCA_setforcedtarget, + atkCB_setcharge, + atkCC_callterrainattack, + atkCD_cureifburnedparalysedorpoisoned, + atkCE_settorment, + atkCF_jumpifnodamage, + atkD0_settaunt, + atkD1_set_helpinghand, + atkD2_swap_items, + atkD3_copy_ability, + atkD4_wish_effect, + atkD5_setroots, + atkD6_doubledamagedealtifdamaged, + atkD7_setyawn, + atkD8_setdamagetohealthdifference, + atkD9_scaledamagebyhealthratio, + atkDA_abilityswap, + atkDB_imprisoneffect, + atkDC_setgrudge, + atkDD_weightdamagecalculation, + atkDE_asistattackselect, + atkDF_setmagiccoat, + atkE0_setstealstatchange, + atkE1_intimidate_string_loader, + atkE2_switchout_abilities, + atkE3_jumpiffainted, + atkE4_getsecretpowereffect, + atkE5_pickup, + atkE6_castform_change_animation, + atkE7_castform_data_change, + atkE8_settypebasedhalvers, + atkE9_setweatherballtype, + atkEA_recycleitem, + atkEB_settypetoterrain, + atkEC_pursuit_sth, + atkED_802B4B4, + atkEE_removelightscreenreflect, + atkEF_pokeball_catch_calculation, + atkF0_copy_caught_poke, + atkF1_setpoke_as_caught, + atkF2_display_dex_info, + atkF3_nickname_caught_poke, + atkF4_802BEF0, + atkF5_removeattackerstatus1, + atkF6_802BF48, + atkF7_802BF54, +}; + +struct statFractions +{ + u8 dividend; + u8 divisor; +}; + +static const struct statFractions gAccuracyStageRatios[] = +{ + { 33, 100}, // -6 + { 36, 100}, // -5 + { 43, 100}, // -4 + { 50, 100}, // -3 + { 60, 100}, // -2 + { 75, 100}, // -1 + { 1, 1}, // 0 + {133, 100}, // +1 + {166, 100}, // +2 + { 2, 1}, // +3 + {233, 100}, // +4 + {133, 50}, // +5 + { 3, 1}, // +6 +}; + +//The chance is 1/N for each stage. +static const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2}; + +static const u32 gStatusFlagsForMoveEffects[] = +{ + 0x00000000, + 0x00000007, + 0x00000008, + 0x00000010, + 0x00000020, + 0x00000040, + 0x00000080, + 0x00000007, + 0x00000008, + 0x00000000, + 0x00000070, + 0x00000000, + 0x00001000, + 0x0000E000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00400000, + 0x00000000, + 0x00000000, + 0x04000000, + 0x08000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000C00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 +}; + +extern u8 BattleScript_1D963E[]; +extern u8 BattleScript_1D965A[]; +extern u8 BattleScript_1D9669[]; +extern u8 BattleScript_1D9678[]; +extern u8 BattleScript_1D9687[]; +extern u8 BattleScript_1D969D[]; +extern u8 BattleScript_1D96BA[]; +extern u8 BattleScript_1D9696[]; +extern u8 BattleScript_1D96B1[]; +extern u8 BattleScript_1D96AA[]; +extern u8 BattleScript_1D96C8[]; + +u8* const gMoveEffectBS_Ptrs[] = +{ + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D965A, + BattleScript_1D9669, + BattleScript_1D9678, + BattleScript_1D9687, + BattleScript_1D969D, + BattleScript_1D96BA, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D9696, + BattleScript_1D96AA, + BattleScript_1D963E, + BattleScript_1D96B1, + BattleScript_1D96C8, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D96C8 +}; + +const u8 sUnreferencedBitMask1[] = {0, 1, 3, 7, 0xF, 0x1F, 0x3F}; + +const u8 gLevelUpStatBoxStats[] = {MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPD}; + +static const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF}; + +static const u16 sUnknown_081FACFE[] = //banned moves to copy +{ + MOVE_METRONOME, + MOVE_STRUGGLE, + MOVE_SKETCH, + MOVE_MIMIC, + 0xFFFE, + MOVE_COUNTER, + MOVE_MIRROR_COAT, + MOVE_PROTECT, + MOVE_DETECT, + MOVE_ENDURE, + MOVE_DESTINY_BOND, + MOVE_SLEEP_TALK, + MOVE_THIEF, + MOVE_FOLLOW_ME, + MOVE_SNATCH, + MOVE_HELPING_HAND, + MOVE_COVET, + MOVE_TRICK, + MOVE_FOCUS_PUNCH, + 0xFFFF +}; + +static const u8 sUnknown_081FAD26[] = //reversal+flail HP thresholds to power +{ + 1, 200, + 4, 150, + 9, 100, + 16, 80, + 32, 40, + 48, 20 +}; + +static const u16 sNaturePowerMoves[] = +{ + MOVE_STUN_SPORE, + MOVE_RAZOR_LEAF, + MOVE_EARTHQUAKE, + MOVE_HYDRO_PUMP, + MOVE_SURF, + MOVE_BUBBLE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_SHADOW_BALL, + MOVE_SWIFT, + MOVE_SWIFT +}; + +//weight-based damage table for Low Kick +//format: min. weight (hectograms), base power +static const u16 sWeightDamage[] = +{ + 100, 20, + 250, 40, + 500, 60, + 1000, 80, + 2000, 100, + -1, -1 +}; + +static const u16 sPickupItems[] = +{ + ITEM_SUPER_POTION, 30, + ITEM_FULL_HEAL, 40, + ITEM_ULTRA_BALL, 50, + ITEM_RARE_CANDY, 60, + ITEM_FULL_RESTORE, 70, + ITEM_REVIVE, 80, + ITEM_NUGGET, 90, + ITEM_PROTEIN, 95, + ITEM_PP_UP, 99, + ITEM_KINGS_ROCK, 1 +}; + +static const u8 sTerrainToType[] = +{ + TYPE_GRASS, // tall grass + TYPE_GRASS, // long grass + TYPE_GROUND, // sand + TYPE_WATER, // underwater + TYPE_WATER, // water + TYPE_WATER, // pond water + TYPE_ROCK , // rock + TYPE_ROCK , // cave + TYPE_NORMAL, // building + TYPE_NORMAL, // plain +}; + +static const u8 sBallCatchBonuses[] = +{ + 20, 15, 10, 15 //Ultra, Great, Poke, Safari +}; + +static void atk00_attackcanceler(void) +{ + int i; + if (gBattleOutcome) + { + gFightStateTracker = 0xC; + return; + } + if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) + { + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattlescriptCurrInstr = BattleScript_EndTurn; + return; + } + if (AtkCanceller_UnableToUseMove()) + return; + if (AbilityBattleEffects(2, gBankTarget, 0, 0, 0)) + return; + if (!gBattleMons[gBankAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200) + && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) + { + gBattlescriptCurrInstr = BattleScript_NoPPForMove; + gBattleMoveFlags |= MOVESTATUS_MISSED; + return; + } + gHitMarker &= ~(HITMARKER_x800000); + if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) + { + u8 disobedient = IsPokeDisobedient(); + asm("":::"r0"); //It's impossible to match + asm("":::"r1"); + if ((disobedient)) + { + if (disobedient == 2) + gHitMarker |= HITMARKER_OBEYS; + else + gBattleMoveFlags |= MOVESTATUS_MISSED; + return; + } + } + gHitMarker |= HITMARKER_OBEYS; + if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED) + { + PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT); + gProtectStructs[gBankTarget].bounceMove = 0; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MagicCoatBounce; + return; + } + for (i = 0; i < gNoOfAllBanks; i++) + { + if ((gProtectStructs[gTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) + { + PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH); + gProtectStructs[gTurnOrder[i]].stealMove = 0; + BATTLE_STRUCT->scriptingActive = gTurnOrder[i]; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SnatchedMove; + return; + } + } + if (gSpecialStatuses[gBankTarget].lightningRodRedirected) + { + gSpecialStatuses[gBankTarget].lightningRodRedirected = 0; + gLastUsedAbility = ABILITY_LIGHTNING_ROD; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_TookAttack; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else if (TargetProtectAffected + && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)) + && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)))) + { + CancelMultiTurnMoves(gBankAttacker); + gBattleMoveFlags |= MOVESTATUS_MISSED; + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = 1; + gBattlescriptCurrInstr++; + } + else + { + gBattlescriptCurrInstr++; + } +} + +static void JumpIfMoveFailed(u8 adder, u16 move) +{ + void* to_store = gBattlescriptCurrInstr + adder; + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + to_store = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + DestinyBondFlagUpdate(); + if (AbilityBattleEffects(3, gBankTarget, 0, 0, move)) + return; + } + gBattlescriptCurrInstr = to_store; +} + +static void atk40_jump_if_move_affected_by_protect(void) +{ + if (TargetProtectAffected) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(5, 0); + gBattleCommunication[6] = 1; + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +static bool8 JumpIfMoveAffectedByProtect(u16 move) +{ + bool8 affected = 0; + if (TargetProtectAffected) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + gBattleCommunication[6] = 1; + affected = 1; + } + return affected; +} + +static bool8 AccuracyCalcHelper(u16 move) +{ + if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + + if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBankTarget] & STATUS3_ON_AIR) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_ON_AIR; + + if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBankTarget] & STATUS3_UNDERGROUND) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_UNDERGROUND; + + if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBankTarget] & STATUS3_UNDERWATER) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_UNDERWATER; + + if ((WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMoves[move].effect == EFFECT_THUNDER) + || (gBattleMoves[move].effect == EFFECT_ALWAYS_HIT || gBattleMoves[move].effect == EFFECT_VITAL_THROW)) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + return FALSE; +} + +static void atk01_accuracycheck(void) +{ + u16 move = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + if (move == 0xFFFE || move == 0xFFFF) + { + if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker) + gBattlescriptCurrInstr += 7; + else if (gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else if (!JumpIfMoveAffectedByProtect(0)) + gBattlescriptCurrInstr += 7; + } + else + { + u8 type; s8 buff; u8 MoveAcc; u16 calc; u8 hold_effect; u8 quality; + if (move == 0) {move = gCurrentMove;} + + if (BATTLE_STRUCT->dynamicMoveType) + type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + type = gBattleMoves[move].type; + + if (JumpIfMoveAffectedByProtect(move)) + return; + if (AccuracyCalcHelper(move)) + return; + + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + { + u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC]; + buff = acc; + } + else + { + u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC]; + buff = acc + 6 - gBattleMons[gBankTarget].statStages[STAT_STAGE_EVASION]; + } + + if (buff < 0) {buff = 0;} + if (buff > 0xC) {buff = 0xC;} + + MoveAcc = gBattleMoves[move].accuracy; + //check Thunder on sunny weather + if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER) + MoveAcc = 50; + + calc = gAccuracyStageRatios[buff].dividend * MoveAcc; + calc /= gAccuracyStageRatios[buff].divisor; + + if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES) + calc = (calc * 130) / 100; //1.3 compound eyes boost + if (WEATHER_HAS_EFFECT && gBattleMons[gBankTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY) + calc = (calc * 80) / 100; //1.2 sand veil loss; + if (gBattleMons[gBankAttacker].ability == ABILITY_HUSTLE && type < 9) + calc = (calc * 80) / 100; //1.2 hustle loss; + + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_EVASION_UP) + calc = (calc * (100 - quality)) / 100; + + //final calculation + if ((Random() % 100 + 1) > calc) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && (gBattleMoves[move].target == 0x8 || gBattleMoves[move].target == 0x20)) + gBattleCommunication[6] = 2; + else + gBattleCommunication[6] = 0; + b_wonderguard_and_levitate(); + + } + JumpIfMoveFailed(7, move); + } +} + +static void atk02_attackstring(void) +{ + if (gBattleExecBuffer) + return; + if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED))) + { + PrepareStringBattle(4, gBankAttacker); + gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED; + } + gBattlescriptCurrInstr++; + gBattleCommunication[MSG_DISPLAY] = 0; +} + +static void atk03_ppreduce(void) +{ + int to_deduct = 1; + if (gBattleExecBuffer) + return; + if (!gSpecialStatuses[gBankAttacker].flag20) + { + switch (gBattleMoves[gCurrentMove].target) + { + case TARGET_FOES_AND_ALLY: + to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0); + break; + case TARGET_BOTH: + case TARGET_OPPONENTS_FIELD: + to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_PRESSURE, 0, 0); + break; + default: + if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE) + to_deduct++; + break; + } + } + if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBankAttacker].pp[gCurrMovePos]) + { + gProtectStructs[gBankAttacker].notFirstStrike = 1; + if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > to_deduct) + gBattleMons[gBankAttacker].pp[gCurrMovePos] -= to_deduct; + else + gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0; + + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) + && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos])) + { + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]); + MarkBufferBankForExecution(gBankAttacker); + } + } + gHitMarker &= ~(HITMARKER_NO_PPDEDUCT); + gBattlescriptCurrInstr++; +} + +static void atk04_critcalc(void) +{ + u8 hold_effect; u16 item; u16 crit_chance; int adderv3, adderv5, adderv6, adderv7, adderv8, adderv9, adderv10, adderv11; u16 adderv12; + item = gBattleMons[gBankAttacker].item; + if (item == ITEM_ENIGMA_BERRY) + hold_effect = gEnigmaBerries[gBankAttacker].holdEffect; + else + hold_effect = ItemId_GetHoldEffect(item); + + gStringBank = gBankAttacker; + + if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) + adderv3 = 2; + else + adderv3 = 0; + + if (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL) {adderv3++;} + adderv5 = adderv3; + if (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK) {adderv5 = adderv3 + 1;} + + if (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK) {adderv5++;} + adderv6 = adderv5; + if (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL) {adderv6 = adderv5 + 1;} + + adderv7 = 0; + if (hold_effect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY) {adderv7 = 1;} + adderv8 = 2 * adderv7; + adderv9 = 0; + if (hold_effect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD) {adderv9 = 1;} + adderv11 = 2 * adderv9; + if (hold_effect == HOLD_EFFECT_SCOPE_LENS) + {adderv10 = 1 + adderv6 + adderv8; adderv12 = adderv10 + adderv11;} + else + {adderv10 = adderv6 + adderv8; adderv12 = adderv10 + adderv11;} + + crit_chance = adderv12; + + if (crit_chance > 4) {crit_chance = 4;} + + if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR) + && !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT) + && !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE)) + && !(Random() % gCriticalHitChance[crit_chance])) + gCritMultiplier = 2; + else + gCritMultiplier = 1; + gBattlescriptCurrInstr++; +} + +static void atk05_damagecalc1(void) +{ + u16 side_hword = gSideAffecting[GetBankIdentity(gBankTarget) & 1]; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + side_hword, gDynamicBasePower, + BATTLE_STRUCT->dynamicMoveType, gBankAttacker, gBankTarget); + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier; + + if (gStatuses3[gBankAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + gBattleMoveDamage *= 2; + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + + gBattlescriptCurrInstr++; +} + +void AI_CalcDmg(u8 BankAtk, u8 BankDef) +{ + u16 side_hword = gSideAffecting[GetBankIdentity(BankDef) & 1]; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[BankAtk], &gBattleMons[BankDef], gCurrentMove, + side_hword, gDynamicBasePower, + BATTLE_STRUCT->dynamicMoveType, BankAtk, BankDef); + gDynamicBasePower = 0; + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier; + + if (gStatuses3[BankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + gBattleMoveDamage *= 2; + if (gProtectStructs[BankAtk].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; +} + +static void ModulateDmgByType(u8 multiplier) +{ + gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; + if (gBattleMoveDamage == 0 && multiplier != 0) + gBattleMoveDamage = 1; + + switch (multiplier) + { + case 0: //no effect + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE; + break; + case 5: //not very effecting + if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) + gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE; + else + gBattleMoveFlags |= MOVESTATUS_NOTVERYEFFECTIVE; + } + break; + case 20: //super effective + if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE) + gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + else + gBattleMoveFlags |= MOVESTATUS_SUPEREFFECTIVE; + } + break; + } +} + +static void atk06_typecalc(void) +{ + int i = 0; + u8 move_type; + if (gCurrentMove != MOVE_STRUGGLE) + { + if (BATTLE_STRUCT->dynamicMoveType) + move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + move_type = gBattleMoves[gCurrentMove].type; + + //check stab + if (gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type) + { + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = move_type; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + else if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + //check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + } + i += 3; + } + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 + && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleMoveFlags |= MOVESTATUS_MISSED; + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + gProtectStructs[gBankAttacker].notEffective = 1; + } + gBattlescriptCurrInstr++; +} +static void b_wonderguard_and_levitate(void) +{ + u8 flags = 0; + int i = 0; + u8 move_type; + + if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power) + return; + + if (BATTLE_STRUCT->dynamicMoveType) + move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + move_type = gBattleMoves[gCurrentMove].type; + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + RecordAbilitySetField6(ABILITY_LEVITATE, move_type); + return; + } + + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + if (gTypeEffectiveness[i] == move_type) + { + //check no effect + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gProtectStructs[gBankAttacker].notEffective = 1; + } + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && + gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gProtectStructs[gBankAttacker].notEffective = 1; + } + + //check super effective + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 20) + flags |= 1; + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 20) + flags |= 1; + + //check not very effective + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 5) + flags |= 2; + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 5) + flags |= 2; + } + i += 3; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2) + { + if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power) + { + RecordAbilitySetField6(ABILITY_WONDER_GUARD, 3); + } + } +} + +static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal copy of the ModulateDmgbyType1 with different args... +{ + gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; + if (gBattleMoveDamage == 0 && multiplier != 0) + gBattleMoveDamage = 1; + + switch (multiplier) + { + case 0: //no effect + *flags |= MOVESTATUS_NOTAFFECTED; + *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + *flags &= ~MOVESTATUS_SUPEREFFECTIVE; + break; + case 5: //not very effecting + if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT)) + { + if (*flags & MOVESTATUS_SUPEREFFECTIVE) + *flags &= ~MOVESTATUS_SUPEREFFECTIVE; + else + *flags |= MOVESTATUS_NOTVERYEFFECTIVE; + } + break; + case 20: //super effective + if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT)) + { + if (*flags & MOVESTATUS_NOTVERYEFFECTIVE) + *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + else + *flags |= MOVESTATUS_SUPEREFFECTIVE; + } + break; + } +} + +u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) +{ + int i = 0; + u8 flags = 0; + u8 move_type; + + if (move == MOVE_STRUGGLE) + return 0; + + move_type = gBattleMoves[move].type; + + //check stab + if (gBattleMons[bank_atk].type1 == move_type || gBattleMons[bank_atk].type2 == move_type) + { + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } + + if (gBattleMons[bank_def].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + flags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[bank_def].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + else if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type1) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + //check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type2 && + gBattleMons[gBankTarget /* what the christ */].type1 != gBattleMons[bank_def].type2) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + } + i += 3; + } + } + + if (gBattleMons[bank_def].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_MISSED) && + AttacksThisTurn(bank_atk, move) == 2 && + (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) && + gBattleMoves[move].power) + { + flags |= MOVESTATUS_MISSED; + } + return flags; +} + +u8 AI_TypeCalc(u16 move, u16 species, u8 ability) +{ + int i = 0; + u8 flags = 0; + u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2, move_type; + + if (move == MOVE_STRUGGLE) + return 0; + + move_type = gBattleMoves[move].type; + + if (ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED; + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + i += 3; + continue; + } + if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == type1) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + //check type2 + if (gTypeEffectiveness[i + 1] == type2 && gBattleMons[gBankTarget].type1 != type2) //gf you morons, you should check if (type1 != type2)... + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + } + i += 3; + } + } + if (ability == ABILITY_WONDER_GUARD + && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[move].power) + flags |= MOVESTATUS_NOTAFFECTED; + return flags; +} + +// Multiplies the damage by a random factor between 85% to 100% inclusive +static inline void ApplyRandomDmgMultiplier(void) +{ + u16 rand = Random(); + u16 randPercent = 100 - (rand % 16); + + if (gBattleMoveDamage != 0) + { + gBattleMoveDamage *= randPercent; + gBattleMoveDamage /= 100; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } +} + +void Unused_ApplyRandomDmgMultiplier(void) +{ + ApplyRandomDmgMultiplier(); +} + +static void atk07_dmg_adjustment(void) +{ + u8 hold_effect, quality; + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemBattle(gBankTarget, hold_effect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured + && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + goto END; + } + if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} + +static void atk08_dmg_adjustment2(void) //literally the same as 0x7 except it doesn't check for false swipe move effect... +{ + u8 hold_effect, quality; + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemBattle(gBankTarget, hold_effect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (!gProtectStructs[gBankTarget].endured + && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + goto END; + } + if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} + +static void atk09_attackanimation(void) +{ + if (gBattleExecBuffer) + return; + + if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_Pausex20; + BATTLE_STRUCT->animTurn += 1; + BATTLE_STRUCT->animTargetsHit += 1; + } + else + { + if ((gBattleMoves[gCurrentMove].target & TARGET_BOTH || gBattleMoves[gCurrentMove].target & TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && BATTLE_STRUCT->animTargetsHit) + { + gBattlescriptCurrInstr++; + return; + } + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + gActiveBank = gBankAttacker; + + EmitMoveAnimation(0, gCurrentMove, BATTLE_STRUCT->animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker]); + BATTLE_STRUCT->animTurn += 1; + BATTLE_STRUCT->animTargetsHit += 1; + MarkBufferBankForExecution(gBankAttacker); + gBattlescriptCurrInstr++; + } + else + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_Pausex20; + } + } +} + +static void atk0A_waitanimation(void) +{ + if (gBattleExecBuffer == 0) + gBattlescriptCurrInstr++; +} + +static void atk0B_healthbarupdate(void) +{ + if (gBattleExecBuffer) + return; + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + goto END; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + PrepareStringBattle(0x80, gActiveBank); + goto END; + } + + EmitHealthBarUpdate(0, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + + if (!GetBankSide(gActiveBank) && gBattleMoveDamage > 0) + gBattleResults.unk5_0 = 1; + + END: + gBattlescriptCurrInstr += 2; +} + +static void atk0C_datahpupdate(void) +{ + register u32 move_type asm("r6"); //no idea how to match it otherwise + u8 dynamic_move_type; + + if (gBattleExecBuffer) + return; + + dynamic_move_type = BATTLE_STRUCT->dynamicMoveType; + if (dynamic_move_type && !(dynamic_move_type & 0x40)) + { + move_type = 0x3F; + move_type &= dynamic_move_type; + } + else + { + move_type = gBattleMoves[gCurrentMove].type; + } + + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage) + { + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = gBattleMoveDamage; + gDisableStructs[gActiveBank].substituteHP -= gBattleMoveDamage; + gHP_dealt = gBattleMoveDamage; + } + else + { + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP; + gHP_dealt = gDisableStructs[gActiveBank].substituteHP; + gDisableStructs[gActiveBank].substituteHP = 0; + } + //check substitute fading + if (gDisableStructs[gActiveBank].substituteHP == 0) + { + gBattlescriptCurrInstr += 2; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SubstituteFade; + return; + } + } + else + { + gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE); + if (gBattleMoveDamage < 0) //hp goes up + { + gBattleMons[gActiveBank].hp -= gBattleMoveDamage; + if (gBattleMons[gActiveBank].hp > gBattleMons[gActiveBank].maxHP) + gBattleMons[gActiveBank].hp = gBattleMons[gActiveBank].maxHP; + + } + else //hp goes down + { + if (gHitMarker & HITMARKER_x20) + { + gHitMarker &= ~(HITMARKER_x20); + } + else + { + gTakenDmg[gActiveBank] += gBattleMoveDamage; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + gTakenDmgBanks[gActiveBank] = gBankAttacker; + else + gTakenDmgBanks[gActiveBank] = gBankTarget; + } + + if (gBattleMons[gActiveBank].hp > gBattleMoveDamage) + { + gBattleMons[gActiveBank].hp -= gBattleMoveDamage; + gHP_dealt = gBattleMoveDamage; + } + else + { + gHP_dealt = gBattleMons[gActiveBank].hp; + gBattleMons[gActiveBank].hp = 0; + } + + if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000)) + gSpecialStatuses[gActiveBank].moveturnLostHP = gHP_dealt; + + if (move_type <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) + { + gProtectStructs[gActiveBank].physicalDmg = gHP_dealt; + gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHP_dealt; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + { + gProtectStructs[gActiveBank].physicalBank = gBankAttacker; + gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker; + } + else + { + gProtectStructs[gActiveBank].physicalBank = gBankTarget; + gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget; + } + } + else if (move_type > 8 && !(gHitMarker & HITMARKER_x100000)) + { + gProtectStructs[gActiveBank].specialDmg = gHP_dealt; + gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHP_dealt; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + { + gProtectStructs[gActiveBank].specialBank = gBankAttacker; + gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker; + } + else + { + gProtectStructs[gActiveBank].specialBank = gBankTarget; + gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankTarget; + } + } + } + gHitMarker &= ~(HITMARKER_x100000); + EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + MarkBufferBankForExecution(gActiveBank); + } + } + else + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF; + } + gBattlescriptCurrInstr += 2; +} + +static void atk0D_critmessage(void) +{ + if (gBattleExecBuffer == 0) + { + if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + PrepareStringBattle(0xD9, gBankAttacker); + gBattleCommunication[MSG_DISPLAY] = 1; + } + gBattlescriptCurrInstr++; + } +} + +static void atk0E_effectiveness_sound(void) +{ + if (gBattleExecBuffer) + return; + gActiveBank = gBankTarget; + if (!(gBattleMoveFlags & MOVESTATUS_MISSED)) + { + u8 flag = ~MOVESTATUS_MISSED; + switch (gBattleMoveFlags & flag) + { + case MOVESTATUS_SUPEREFFECTIVE: + EmitEffectivenessSound(0, 14); + MarkBufferBankForExecution(gActiveBank); + break; + case MOVESTATUS_NOTVERYEFFECTIVE: + EmitEffectivenessSound(0, 12); + MarkBufferBankForExecution(gActiveBank); + break; + case MOVESTATUS_NOTAFFECTED: + case MOVESTATUS_FAILED: + break; + case MOVESTATUS_ENDURED: + case MOVESTATUS_ONEHITKO: + case MOVESTATUS_HUNGON: + default: + if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) + { + EmitEffectivenessSound(0, 14); + MarkBufferBankForExecution(gActiveBank); + } + else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE) + { + EmitEffectivenessSound(0, 12); + MarkBufferBankForExecution(gActiveBank); + } + else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))) + { + EmitEffectivenessSound(0, 13); + MarkBufferBankForExecution(gActiveBank); + } + break; + } + } + gBattlescriptCurrInstr++; +} + +static void atk0F_resultmessage(void) +{ + u16 stringID = 0; + + if (gBattleExecBuffer) + return; + + if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2)) + { + stringID = gMissStrings[gBattleCommunication[6]]; + gBattleCommunication[MSG_DISPLAY] = 1; + } + else + { + gBattleCommunication[MSG_DISPLAY] = 1; + switch (gBattleMoveFlags & 0xFE) + { + case MOVESTATUS_SUPEREFFECTIVE: + stringID = 0xDE; + break; + case MOVESTATUS_NOTVERYEFFECTIVE: + stringID = 0xDD; + break; + case MOVESTATUS_ONEHITKO: + stringID = 0xDA; + break; + case MOVESTATUS_ENDURED: + stringID = 0x99; + break; + case MOVESTATUS_FAILED: + goto FAILED; + case MOVESTATUS_NOTAFFECTED: + goto NOTAFFECTED; + case MOVESTATUS_HUNGON: + gLastUsedItem = gBattleMons[gBankTarget].item; + gStringBank = gBankTarget; + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + return; + default: + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + NOTAFFECTED: + stringID = 0x1B; + else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO) + { + gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO); + gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE); + gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_OneHitKOMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_ENDURED) + { + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_EnduredMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_HUNGON) + { + gLastUsedItem = gBattleMons[gBankTarget].item; + gStringBank = gBankTarget; + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_FAILED) + FAILED: + stringID = 0xE5; + else + gBattleCommunication[MSG_DISPLAY] = 0; + } + } + + if (stringID) + { + register u16 dummy asm("r0") = stringID; //Can't match it otherwise + PrepareStringBattle(dummy, gBankAttacker); + } + gBattlescriptCurrInstr++; +} + +static void atk10_printstring(void) +{ + if (gBattleExecBuffer == 0) + { + u16 var = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + PrepareStringBattle(var, gBankAttacker); + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +static void atk11_printstring_playeronly(void) +{ + gActiveBank = gBankAttacker; + EmitPrintStringPlayerOnly(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 1; +} + +static void atk12_waitmessage(void) +{ + if (gBattleExecBuffer == 0) + { + if (!gBattleCommunication[MSG_DISPLAY]) + { + gBattlescriptCurrInstr += 3; + } + else + { + u16 to_wait = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= to_wait) + { + gPauseCounterBattle = 0; + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 0; + } + } + } +} + +static void atk13_printfromtable(void) +{ + if (gBattleExecBuffer == 0) + { + u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + ptr += gBattleCommunication[MULTISTRING_CHOOSER]; + PrepareStringBattle(*(u16*)ptr, gBankAttacker); + gBattlescriptCurrInstr += 5; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +static void atk14_printfromtable_playeronly(void) +{ + if (gBattleExecBuffer == 0) + { + u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + ptr += gBattleCommunication[MULTISTRING_CHOOSER]; + gActiveBank = gBankAttacker; + EmitPrintStringPlayerOnly(0, *(u16*)ptr); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +u8 BankGetTurnOrder(u8 bank) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == bank) + break; + } + return i; +} + +//Someone please decompile this monstrosity below... +#ifdef NONMATCHING +void SetMoveEffect(bool8 primary, u8 certainArg) +{ + #define EffectAffectsUser 0x40 + register u8 certain asm("r5") = certainArg; + register bool32 StatusChanged asm("r10") = 0; + register int AffectsUser asm("r6") = 0; //0x40 otherwise + bool32 NoSunCanFreeze = 1; + + if (gBattleCommunication[MOVE_EFFECT_BYTE] & EffectAffectsUser) + { + gEffectBank = gBankAttacker; //bank that effects get applied on + gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(EffectAffectsUser); + AffectsUser = EffectAffectsUser; + BATTLE_STRUCT->scriptingActive = gBankTarget; //theoretically the attacker + } + else + { + gEffectBank = gBankTarget; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + } + + if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9) + {gBattlescriptCurrInstr++; return;} + + if (gSideAffecting[GetBankIdentity(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7) + {gBattlescriptCurrInstr++; return;} + + //make sure at least ONE HP except payday and thief + if (gBattleMons[gEffectBank].hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F) + {gBattlescriptCurrInstr++; return;} + + if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && AffectsUser != EffectAffectsUser) + {gBattlescriptCurrInstr++; return;} + + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) //status change + { + switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + case STATUS_SLEEP: + //check active uproar + if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR); gActiveBank++) {} + } + else + gActiveBank = gNoOfAllBanks; + if (gBattleMons[gEffectBank].status1) {break;} + if (gActiveBank != gNoOfAllBanks) {break;} //nice way of checking uproar... + if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA) {break;} + + CancelMultiTurnMoves(gEffectBank); + StatusChanged = 1; + break; + case STATUS_POISON: + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_IMMUNITY; + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + //_0801E664: + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + return; + } + else + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} + } + if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (gBattleMons[gEffectBank].type1 == TYPE_POISON) {break;} + if (gBattleMons[gEffectBank].type2 == TYPE_POISON) {break;} + if (gBattleMons[gEffectBank].type1 == TYPE_STEEL) {break;} + if (gBattleMons[gEffectBank].type2 == TYPE_STEEL) {break;} + if (gBattleMons[gEffectBank].status1) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} + + StatusChanged = 1; + break; + case STATUS_BURN: + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_WATER_VEIL; + RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + //_0801E664: + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + return; + } + else + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} + } + if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE || gBattleMons[gEffectBank].type2 == TYPE_FIRE) + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (gBattleMons[gEffectBank].type1 == TYPE_FIRE) {break;} + if (gBattleMons[gEffectBank].type2 == TYPE_FIRE) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL) {break;} + if (gBattleMons[gEffectBank].status1 == 0) {break;} + StatusChanged = 1; + break; + case STATUS_FREEZE: + if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) {NoSunCanFreeze = 0;} + if (gBattleMons[gEffectBank].type1 == TYPE_ICE) {break;} + if (gBattleMons[gEffectBank].type2 == TYPE_ICE) {break;} + if (gBattleMons[gEffectBank].status1) {break;} + if (NoSunCanFreeze == 0) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR) {break;} + + CancelMultiTurnMoves(gEffectBank); + StatusChanged = 1; + break; + case STATUS_PARALYSIS: + if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER) + { + if ((primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_LIMBER; + RecordAbilityBattle(gEffectBank, ABILITY_LIMBER); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + //_0801E664: + gBattlescriptCurrInstr = BattleScript_PRLZPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + return; + } + else + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} + } + else {break;} + } + if (gBattleMons[gEffectBank].status1) {break;} + StatusChanged = 1; + break; + case STATUS_TOXIC_POISON: + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_IMMUNITY; + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + //_0801E664: + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + return; + } + else + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} + } + if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (gBattleMons[gEffectBank].status1) {break;} + if (gBattleMons[gEffectBank].type1 != TYPE_POISON && + gBattleMons[gEffectBank].type2 != TYPE_POISON && + gBattleMons[gEffectBank].type1 != TYPE_STEEL && + gBattleMons[gEffectBank].type2 != TYPE_STEEL) + { + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} + gBattleMons[gEffectBank].status1 &= ~(0x9); //This gets (correctly) optimized out... + StatusChanged = 1; + break; + } + else + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + break; + } + if (StatusChanged == 1) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) + gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); + else + gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gActiveBank = gEffectBank; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); + MarkBufferBankForExecution(gActiveBank); + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (gBattleCommunication[MOVE_EFFECT_BYTE] == 2 || gBattleCommunication[MOVE_EFFECT_BYTE] == 6 || gBattleCommunication[MOVE_EFFECT_BYTE] == 5 || gBattleCommunication[MOVE_EFFECT_BYTE] == 3) + { + BATTLE_STRUCT->synchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; + gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; + } + return; + } + else if (StatusChanged == 0) + {gBattlescriptCurrInstr++; return;} + } + else + { + if (gBattleMons[gEffectBank].status2 & gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + gBattlescriptCurrInstr++; + return; + } + switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + case 7: //confusion + if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO) + {gBattlescriptCurrInstr++; return;} + if (gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION) + {gBattlescriptCurrInstr++; return;} + gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 8: //flinch + if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS) + { + if (primary == 1 || certain == 0x80) + { + gLastUsedAbility = ABILITY_INNER_FOCUS; + RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; + return; + } + else + {gBattlescriptCurrInstr++; return;} + } + else + { + if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn) + gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr++; return; + } + break; + case 10: //uproar + if (gBattleMons[gEffectBank].status2 & STATUS2_UPROAR) + {gBattlescriptCurrInstr++; return;} + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gEffectBank] = gCurrentMove; + gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 11: //pay day + if (!(GetBankIdentity(gBankAttacker) & 1)) + { + u16 PayDay = gPaydayMoney; + gPaydayMoney += (gBattleMons[gBankAttacker].level * 5); + if (PayDay > gPaydayMoney) + gPaydayMoney = 0xFFFF; + } + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 9: //tri attack + if (gBattleMons[gEffectBank].status1) + {gBattlescriptCurrInstr++; return;} + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3; + SetMoveEffect(0, 0); + break; + case 12: //charging move + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gEffectBank] = gCurrentMove; + gProtectStructs[gEffectBank].chargingTurn = 1; + gBattlescriptCurrInstr++; + break; + case 13: //wrap + if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED) + {gBattlescriptCurrInstr++; return;} + gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 0xD; + BATTLE_STRUCT->wrappedMove[gEffectBank*2] = (u8)gCurrentMove; + (1 + BATTLE_STRUCT->wrappedMove)[gEffectBank*2] = gCurrentMove >> 8; //don't ask. + BATTLE_STRUCT->wrappedBy[gEffectBank] = gBankAttacker; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + while (gBattleCommunication[MULTISTRING_CHOOSER] <= 4 + && gCurrentMove != gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]]) + gBattleCommunication[MULTISTRING_CHOOSER]++; + break; + case 14: //25% recoil + gBattleMoveDamage = (gHP_dealt) / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 15 ... 21: //stat + 1 + if (ChangeStatBuffs(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;} + else + { + BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one + BATTLE_STRUCT->animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatUp; + } + break; + case 22 ... 28: //stat - 1 + if (ChangeStatBuffs(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly + else + { + BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + BATTLE_STRUCT->animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatDown; + } + break; + case 39 ... 45: //stat + 2 + if (ChangeStatBuffs(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;} + else + { + BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + BATTLE_STRUCT->animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatUp; + } + break; + case 46 ... 52: //stat - 2 + if (ChangeStatBuffs(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;} + else + { + BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + BATTLE_STRUCT->animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatDown; + } + break; + case 29: //recharge + gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE; + gDisableStructs[gEffectBank].rechargeCounter = 2; + gLockedMove[gEffectBank] = gCurrentMove; + gBattlescriptCurrInstr++; + break; + case 30: //rage + gBattleMons[gBankAttacker].status2 |= STATUS2_RAGE; + gBattlescriptCurrInstr++; + break; + case 31: //item steal + { + u8 side = GetBankSide(gBankAttacker); + if (GetBankSide(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400) + {gBattlescriptCurrInstr++; return;} + if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]])) + {gBattlescriptCurrInstr++; return;} + if (gBattleMons[gBankTarget].item && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD) + { + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + gLastUsedAbility = gBattleMons[gBankTarget].ability; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + return; + } + if (gBattleMons[gBankAttacker].item) + {gBattlescriptCurrInstr++; return;} + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + {gBattlescriptCurrInstr++; return;} + if (gBattleMons[gBankTarget].item == 0) + {gBattlescriptCurrInstr++; return;} + + gLastUsedItem = gBattleMons[gBankTarget].item; + unk_2000000[gBankAttacker * 2 + 0x160cc] = gLastUsedItem; + gBattleMons[gBankTarget].item = 0; + + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + MarkBufferBankForExecution(gBankAttacker); + + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + MarkBufferBankForExecution(gBankTarget); + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_ItemSteal; + + ewram[gBankTarget * 2 + 0x160e8] = 0; + //STORE_CHOICEMOVE(gBankTarget, 0); + } + break; + case 32: //escape prevention + gBattleMons[gBankTarget].status2 |= STATUS2_RECHARGE; + gDisableStructs[gBankTarget].bankPreventingEscape = gBankAttacker; + gBattlescriptCurrInstr++; + break; + case 33: //nightmare + gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE; + gBattlescriptCurrInstr++; + break; + case 34: //ancientpower + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_AllStatsUp; + return; + case 35: //break free rapidspin + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_RapidSpinAway; + return; + case 36: //paralysis removal + if (gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS) + { + gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS); + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + MarkBufferBankForExecution(gActiveBank); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; + } + else + {gBattlescriptCurrInstr++; return;} + break; + case 37: //superpower + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_AtkDefDown; + return; + case 38: //33% recoil + gBattleMoveDamage = gHP_dealt / 3; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 53: //thrash + if (!(gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)) + { + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gEffectBank] = gCurrentMove; + gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA); + } + else + {gBattlescriptCurrInstr++; return;} + break; + case 54: //knock off + if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD) + { + if (gBattleMons[gEffectBank].item == 0) + {gBattlescriptCurrInstr++; return;} + gLastUsedAbility = ABILITY_STICKY_HOLD; + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD); + return; + } + if (gBattleMons[gEffectBank].item == 0) + {gBattlescriptCurrInstr++; return;} + else + { + u8 side = GetBankSide(gEffectBank); + gLastUsedItem = gBattleMons[gEffectBank].item; + gBattleMons[gEffectBank].item = 0; + gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]]; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_KnockedOff; + + ewram[gEffectBank * 2 + 0x160e8] = 0; + //STORE_CHOICEMOVE(gEffectBank, 0); + } + break; + case 59: //overheat + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SAtkDown2; + return; + } + } +} +#else +__attribute__((naked)) +void SetMoveEffect(bool8 primary, u8 certainArg) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r1, 24\n\ + lsrs r5, r1, 24\n\ + movs r0, 0\n\ + mov r10, r0\n\ + movs r6, 0\n\ + movs r1, 0x1\n\ + str r1, [sp, 0x4]\n\ + ldr r1, _0801E430 @ =gBattleCommunication\n\ + ldrb r3, [r1, 0x3]\n\ + movs r0, 0x40\n\ + ands r0, r3\n\ + adds r7, r1, 0\n\ + cmp r0, 0\n\ + beq _0801E444\n\ + ldr r2, _0801E434 @ =gEffectBank\n\ + ldr r0, _0801E438 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + movs r0, 0xBF\n\ + ands r0, r3\n\ + strb r0, [r7, 0x3]\n\ + movs r6, 0x40\n\ + ldr r0, _0801E43C @ =0x02000000\n\ + ldr r1, _0801E440 @ =gBankTarget\n\ + b _0801E450\n\ + .align 2, 0\n\ +_0801E430: .4byte gBattleCommunication\n\ +_0801E434: .4byte gEffectBank\n\ +_0801E438: .4byte gBankAttacker\n\ +_0801E43C: .4byte 0x02000000\n\ +_0801E440: .4byte gBankTarget\n\ +_0801E444:\n\ + ldr r2, _0801E538 @ =gEffectBank\n\ + ldr r0, _0801E53C @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + ldr r0, _0801E540 @ =0x02000000\n\ + ldr r1, _0801E544 @ =gBankAttacker\n\ +_0801E450:\n\ + ldrb r1, [r1]\n\ + ldr r3, _0801E548 @ =0x00016003\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ + mov r8, r2\n\ + ldr r2, _0801E54C @ =gBattleMons\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r2\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x13\n\ + bne _0801E48A\n\ + ldr r0, _0801E550 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801E48A\n\ + cmp r4, 0\n\ + bne _0801E48A\n\ + ldrb r0, [r7, 0x3]\n\ + cmp r0, 0x9\n\ + bhi _0801E48A\n\ + bl _0801F5DC\n\ +_0801E48A:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + bl GetBankIdentity\n\ + ldr r2, _0801E554 @ =gSideAffecting\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + lsls r1, 1\n\ + adds r1, r2\n\ + ldrh r1, [r1]\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E4C4\n\ + ldr r0, _0801E550 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801E4C4\n\ + cmp r4, 0\n\ + bne _0801E4C4\n\ + ldr r0, _0801E558 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + cmp r0, 0x7\n\ + bhi _0801E4C4\n\ + bl _0801F5DC\n\ +_0801E4C4:\n\ + ldr r3, _0801E54C @ =gBattleMons\n\ + ldr r2, _0801E538 @ =gEffectBank\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r3\n\ + ldrh r0, [r0, 0x28]\n\ + mov r8, r2\n\ + mov r9, r3\n\ + cmp r0, 0\n\ + bne _0801E4EA\n\ + ldr r0, _0801E558 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + cmp r0, 0xB\n\ + beq _0801E4EA\n\ + cmp r0, 0x1F\n\ + beq _0801E4EA\n\ + bl _0801F5DC\n\ +_0801E4EA:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + mov r1, r9\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E50C\n\ + cmp r6, 0x40\n\ + beq _0801E50C\n\ + bl _0801F5DC\n\ +_0801E50C:\n\ + ldr r0, _0801E558 @ =gBattleCommunication\n\ + ldrb r1, [r0, 0x3]\n\ + adds r7, r0, 0\n\ + cmp r1, 0x6\n\ + bls _0801E518\n\ + b _0801EB4A\n\ +_0801E518:\n\ + ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects\n\ + ldrb r0, [r7, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + cmp r0, 0x10\n\ + bne _0801E528\n\ + b _0801E714\n\ +_0801E528:\n\ + cmp r0, 0x10\n\ + bhi _0801E560\n\ + cmp r0, 0x7\n\ + beq _0801E57A\n\ + cmp r0, 0x8\n\ + bne _0801E536\n\ + b _0801E630\n\ +_0801E536:\n\ + b _0801EA14\n\ + .align 2, 0\n\ +_0801E538: .4byte gEffectBank\n\ +_0801E53C: .4byte gBankTarget\n\ +_0801E540: .4byte 0x02000000\n\ +_0801E544: .4byte gBankAttacker\n\ +_0801E548: .4byte 0x00016003\n\ +_0801E54C: .4byte gBattleMons\n\ +_0801E550: .4byte gHitMarker\n\ +_0801E554: .4byte gSideAffecting\n\ +_0801E558: .4byte gBattleCommunication\n\ +_0801E55C: .4byte gStatusFlagsForMoveEffects\n\ +_0801E560:\n\ + cmp r0, 0x40\n\ + bne _0801E566\n\ + b _0801E888\n\ +_0801E566:\n\ + cmp r0, 0x40\n\ + bhi _0801E572\n\ + cmp r0, 0x20\n\ + bne _0801E570\n\ + b _0801E7EA\n\ +_0801E570:\n\ + b _0801EA14\n\ +_0801E572:\n\ + cmp r0, 0x80\n\ + bne _0801E578\n\ + b _0801E8E4\n\ +_0801E578:\n\ + b _0801EA14\n\ +_0801E57A:\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x2B\n\ + beq _0801E5DC\n\ + ldr r0, _0801E5D4 @ =gActiveBank\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + ldr r1, _0801E5D8 @ =gNoOfAllBanks\n\ + ldrb r3, [r1]\n\ + adds r7, r0, 0\n\ + mov r12, r1\n\ + cmp r3, 0\n\ + beq _0801E5E8\n\ + mov r4, r9\n\ + ldr r0, [r4, 0x50]\n\ + movs r1, 0x70\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801E5E8\n\ + adds r1, r7, 0\n\ + mov r6, r9\n\ + adds r6, 0x50\n\ + movs r5, 0x58\n\ + movs r4, 0x70\n\ +_0801E5B4:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r3\n\ + bcs _0801E5E8\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _0801E5B4\n\ + b _0801E5E8\n\ + .align 2, 0\n\ +_0801E5D4: .4byte gActiveBank\n\ +_0801E5D8: .4byte gNoOfAllBanks\n\ +_0801E5DC:\n\ + ldr r0, _0801E628 @ =gActiveBank\n\ + ldr r2, _0801E62C @ =gNoOfAllBanks\n\ + ldrb r1, [r2]\n\ + strb r1, [r0]\n\ + adds r7, r0, 0\n\ + mov r12, r2\n\ +_0801E5E8:\n\ + mov r0, r8\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + adds r1, r2, 0\n\ + muls r1, r0\n\ + mov r0, r9\n\ + adds r0, 0x4C\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E600\n\ + b _0801EA14\n\ +_0801E600:\n\ + ldrb r0, [r7]\n\ + mov r3, r12\n\ + ldrb r3, [r3]\n\ + cmp r0, r3\n\ + beq _0801E60C\n\ + b _0801EA14\n\ +_0801E60C:\n\ + mov r4, r9\n\ + adds r0, r1, r4\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x48\n\ + bne _0801E61A\n\ + b _0801EA14\n\ +_0801E61A:\n\ + cmp r0, 0xF\n\ + bne _0801E620\n\ + b _0801EA14\n\ +_0801E620:\n\ + adds r0, r2, 0\n\ + bl CancelMultiTurnMoves\n\ + b _0801EA04\n\ + .align 2, 0\n\ +_0801E628: .4byte gActiveBank\n\ +_0801E62C: .4byte gNoOfAllBanks\n\ +_0801E630:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x11\n\ + bne _0801E688\n\ + cmp r4, 0x1\n\ + beq _0801E64A\n\ + cmp r5, 0x80\n\ + bne _0801E688\n\ +_0801E64A:\n\ + ldr r0, _0801E678 @ =gLastUsedAbility\n\ + strb r1, [r0]\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r1, 0x11\n\ + bl RecordAbilityBattle\n\ + ldr r4, _0801E67C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E680 @ =BattleScript_PSNPrevention\n\ +_0801E664:\n\ + str r0, [r4]\n\ + ldr r2, _0801E684 @ =gHitMarker\n\ + ldr r1, [r2]\n\ + movs r0, 0x80\n\ + lsls r0, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E676\n\ + b _0801E928\n\ +_0801E676:\n\ + b _0801E94C\n\ + .align 2, 0\n\ +_0801E678: .4byte gLastUsedAbility\n\ +_0801E67C: .4byte gBattlescriptCurrInstr\n\ +_0801E680: .4byte BattleScript_PSNPrevention\n\ +_0801E684: .4byte gHitMarker\n\ +_0801E688:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + movs r1, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r1, r0, 0\n\ + adds r1, 0x21\n\ + ldrb r1, [r1]\n\ + cmp r1, 0x3\n\ + beq _0801E6AC\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3\n\ + beq _0801E6AC\n\ + cmp r1, 0x8\n\ + beq _0801E6AC\n\ + cmp r0, 0x8\n\ + bne _0801E6C6\n\ +_0801E6AC:\n\ + ldr r0, _0801E710 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E6C6\n\ + cmp r4, 0x1\n\ + bne _0801E6C0\n\ + b _0801E98C\n\ +_0801E6C0:\n\ + cmp r5, 0x80\n\ + bne _0801E6C6\n\ + b _0801E98C\n\ +_0801E6C6:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + mov r4, r9\n\ + adds r3, r1, r4\n\ + adds r0, r3, 0\n\ + adds r0, 0x21\n\ + ldrb r4, [r0]\n\ + cmp r4, 0x3\n\ + bne _0801E6DE\n\ + b _0801EA14\n\ +_0801E6DE:\n\ + adds r0, 0x1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3\n\ + bne _0801E6E8\n\ + b _0801EA14\n\ +_0801E6E8:\n\ + cmp r4, 0x8\n\ + bne _0801E6EE\n\ + b _0801EA14\n\ +_0801E6EE:\n\ + cmp r0, 0x8\n\ + bne _0801E6F4\n\ + b _0801EA14\n\ +_0801E6F4:\n\ + mov r0, r9\n\ + adds r0, 0x4C\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E702\n\ + b _0801EA14\n\ +_0801E702:\n\ + adds r0, r3, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + bne _0801E70E\n\ + b _0801EA14\n\ +_0801E70E:\n\ + b _0801EA04\n\ + .align 2, 0\n\ +_0801E710: .4byte gHitMarker\n\ +_0801E714:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x29\n\ + bne _0801E758\n\ + cmp r4, 0x1\n\ + beq _0801E72E\n\ + cmp r5, 0x80\n\ + bne _0801E758\n\ +_0801E72E:\n\ + ldr r0, _0801E74C @ =gLastUsedAbility\n\ + strb r1, [r0]\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r1, 0x29\n\ + bl RecordAbilityBattle\n\ + ldr r4, _0801E750 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E754 @ =BattleScript_BRNPrevention\n\ + b _0801E664\n\ + .align 2, 0\n\ +_0801E74C: .4byte gLastUsedAbility\n\ +_0801E750: .4byte gBattlescriptCurrInstr\n\ +_0801E754: .4byte BattleScript_BRNPrevention\n\ +_0801E758:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + mov r2, r9\n\ + adds r1, r0, r2\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xA\n\ + beq _0801E778\n\ + adds r0, r1, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xA\n\ + bne _0801E7A8\n\ +_0801E778:\n\ + ldr r0, _0801E79C @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E7A8\n\ + cmp r4, 0x1\n\ + beq _0801E78E\n\ + cmp r5, 0x80\n\ + bne _0801E7A8\n\ +_0801E78E:\n\ + ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention\n\ + b _0801E998\n\ + .align 2, 0\n\ +_0801E79C: .4byte gHitMarker\n\ +_0801E7A0: .4byte gBattlescriptCurrInstr\n\ +_0801E7A4: .4byte BattleScript_BRNPrevention\n\ +_0801E7A8:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r1, 0x58\n\ + adds r2, r0, 0\n\ + muls r2, r1\n\ + mov r4, r9\n\ + adds r1, r2, r4\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xA\n\ + bne _0801E7C2\n\ + b _0801EA14\n\ +_0801E7C2:\n\ + adds r0, r1, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xA\n\ + bne _0801E7CE\n\ + b _0801EA14\n\ +_0801E7CE:\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x29\n\ + bne _0801E7DA\n\ + b _0801EA14\n\ +_0801E7DA:\n\ + mov r0, r9\n\ + adds r0, 0x4C\n\ + adds r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E7E8\n\ + b _0801EA14\n\ +_0801E7E8:\n\ + b _0801EA04\n\ +_0801E7EA:\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x13\n\ + movs r1, 0\n\ + movs r2, 0xD\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0\n\ + bne _0801E826\n\ + str r0, [sp]\n\ + movs r0, 0x13\n\ + movs r1, 0\n\ + movs r2, 0x4D\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0801E826\n\ + ldr r0, _0801E87C @ =gBattleWeather\n\ + ldrh r1, [r0]\n\ + movs r0, 0x60\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E826\n\ + movs r1, 0\n\ + str r1, [sp, 0x4]\n\ +_0801E826:\n\ + ldr r4, _0801E880 @ =gBattleMons\n\ + ldr r0, _0801E884 @ =gEffectBank\n\ + ldrb r3, [r0]\n\ + movs r0, 0x58\n\ + adds r2, r3, 0\n\ + muls r2, r0\n\ + adds r1, r2, r4\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xF\n\ + bne _0801E840\n\ + b _0801EA14\n\ +_0801E840:\n\ + adds r0, r1, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xF\n\ + bne _0801E84C\n\ + b _0801EA14\n\ +_0801E84C:\n\ + adds r0, r4, 0\n\ + adds r0, 0x4C\n\ + adds r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E85A\n\ + b _0801EA14\n\ +_0801E85A:\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, 0\n\ + bne _0801E862\n\ + b _0801EA14\n\ +_0801E862:\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x28\n\ + bne _0801E86E\n\ + b _0801EA14\n\ +_0801E86E:\n\ + adds r0, r3, 0\n\ + bl CancelMultiTurnMoves\n\ + movs r3, 0x1\n\ + mov r10, r3\n\ + b _0801EA14\n\ + .align 2, 0\n\ +_0801E87C: .4byte gBattleWeather\n\ +_0801E880: .4byte gBattleMons\n\ +_0801E884: .4byte gEffectBank\n\ +_0801E888:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + mov r2, r9\n\ + adds r0, r1, r2\n\ + adds r0, 0x20\n\ + ldrb r2, [r0]\n\ + cmp r2, 0x7\n\ + bne _0801E8D0\n\ + cmp r4, 0x1\n\ + beq _0801E8A6\n\ + cmp r5, 0x80\n\ + beq _0801E8A6\n\ + b _0801EA14\n\ +_0801E8A6:\n\ + ldr r0, _0801E8C4 @ =gLastUsedAbility\n\ + strb r2, [r0]\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r1, 0x7\n\ + bl RecordAbilityBattle\n\ + ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention\n\ + b _0801E664\n\ + .align 2, 0\n\ +_0801E8C4: .4byte gLastUsedAbility\n\ +_0801E8C8: .4byte gBattlescriptCurrInstr\n\ +_0801E8CC: .4byte BattleScript_PRLZPrevention\n\ +_0801E8D0:\n\ + mov r0, r9\n\ + adds r0, 0x4C\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E8DE\n\ + b _0801EA14\n\ +_0801E8DE:\n\ + movs r4, 0x1\n\ + mov r10, r4\n\ + b _0801EA14\n\ +_0801E8E4:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x11\n\ + bne _0801E952\n\ + cmp r4, 0x1\n\ + beq _0801E8FE\n\ + cmp r5, 0x80\n\ + bne _0801E952\n\ +_0801E8FE:\n\ + ldr r0, _0801E938 @ =gLastUsedAbility\n\ + strb r1, [r0]\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + movs r1, 0x11\n\ + bl RecordAbilityBattle\n\ + ldr r4, _0801E93C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E940 @ =BattleScript_PSNPrevention\n\ + str r0, [r4]\n\ + ldr r2, _0801E944 @ =gHitMarker\n\ + ldr r1, [r2]\n\ + movs r0, 0x80\n\ + lsls r0, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E94C\n\ +_0801E928:\n\ + movs r0, 0x1\n\ + strb r0, [r7, 0x5]\n\ + ldr r0, _0801E948 @ =0xffffdfff\n\ + ands r1, r0\n\ + str r1, [r2]\n\ + bl _0801F5FA\n\ + .align 2, 0\n\ +_0801E938: .4byte gLastUsedAbility\n\ +_0801E93C: .4byte gBattlescriptCurrInstr\n\ +_0801E940: .4byte BattleScript_PSNPrevention\n\ +_0801E944: .4byte gHitMarker\n\ +_0801E948: .4byte 0xffffdfff\n\ +_0801E94C:\n\ + strb r0, [r7, 0x5]\n\ + bl _0801F5FA\n\ +_0801E952:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + movs r1, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r1, r0, 0\n\ + adds r1, 0x21\n\ + ldrb r1, [r1]\n\ + cmp r1, 0x3\n\ + beq _0801E976\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3\n\ + beq _0801E976\n\ + cmp r1, 0x8\n\ + beq _0801E976\n\ + cmp r0, 0x8\n\ + bne _0801E9B4\n\ +_0801E976:\n\ + ldr r0, _0801E9A4 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E9B4\n\ + cmp r4, 0x1\n\ + beq _0801E98C\n\ + cmp r5, 0x80\n\ + bne _0801E9B4\n\ +_0801E98C:\n\ + ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E9AC @ =BattleScript_PSNPrevention\n\ +_0801E998:\n\ + str r0, [r4]\n\ + ldr r1, _0801E9B0 @ =gBattleCommunication\n\ + movs r0, 0x2\n\ + strb r0, [r1, 0x5]\n\ + bl _0801F5FA\n\ + .align 2, 0\n\ +_0801E9A4: .4byte gHitMarker\n\ +_0801E9A8: .4byte gBattlescriptCurrInstr\n\ +_0801E9AC: .4byte BattleScript_PSNPrevention\n\ +_0801E9B0: .4byte gBattleCommunication\n\ +_0801E9B4:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r6, 0x58\n\ + muls r0, r6\n\ + mov r2, r9\n\ + adds r2, 0x4C\n\ + adds r5, r0, r2\n\ + ldr r4, [r5]\n\ + cmp r4, 0\n\ + bne _0801EA14\n\ + mov r3, r9\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r3, [r0]\n\ + cmp r3, 0x3\n\ + beq _0801EA0A\n\ + adds r0, 0x1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3\n\ + beq _0801EA0A\n\ + cmp r3, 0x8\n\ + beq _0801EA0A\n\ + cmp r0, 0x8\n\ + beq _0801EA0A\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + beq _0801EA14\n\ + mov r4, r8\n\ + ldrb r0, [r4]\n\ + adds r1, r0, 0\n\ + muls r1, r6\n\ + adds r1, r2\n\ + ldr r0, [r1]\n\ + movs r2, 0x9\n\ + negs r2, r2\n\ + ands r0, r2\n\ + str r0, [r1]\n\ +_0801EA04:\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ + b _0801EA14\n\ +_0801EA0A:\n\ + ldr r0, _0801EA58 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r2, 0x8\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_0801EA14:\n\ + mov r1, r10\n\ + cmp r1, 0x1\n\ + beq _0801EA1C\n\ + b _0801EB3C\n\ +_0801EA1C:\n\ + ldr r0, _0801EA5C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects\n\ + ldr r0, _0801EA64 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r3, [r0]\n\ + cmp r3, 0x7\n\ + bne _0801EA70\n\ + bl Random\n\ + ldr r2, _0801EA68 @ =gBattleMons\n\ + ldr r1, _0801EA6C @ =gEffectBank\n\ + ldrb r3, [r1]\n\ + movs r1, 0x58\n\ + muls r3, r1\n\ + adds r2, 0x4C\n\ + adds r3, r2\n\ + movs r1, 0x3\n\ + ands r1, r0\n\ + adds r1, 0x2\n\ + ldr r0, [r3]\n\ + orrs r0, r1\n\ + str r0, [r3]\n\ + b _0801EA84\n\ + .align 2, 0\n\ +_0801EA58: .4byte gBattleMoveFlags\n\ +_0801EA5C: .4byte gBattlescriptCurrInstr\n\ +_0801EA60: .4byte gStatusFlagsForMoveEffects\n\ +_0801EA64: .4byte gBattleCommunication\n\ +_0801EA68: .4byte gBattleMons\n\ +_0801EA6C: .4byte gEffectBank\n\ +_0801EA70:\n\ + ldr r2, _0801EAD4 @ =gBattleMons\n\ + ldr r0, _0801EAD8 @ =gEffectBank\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + adds r2, 0x4C\n\ + adds r1, r2\n\ + ldr r0, [r1]\n\ + orrs r0, r3\n\ + str r0, [r1]\n\ +_0801EA84:\n\ + ldr r2, _0801EADC @ =gBattlescriptCurrInstr\n\ + ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs\n\ + ldr r5, _0801EAE4 @ =gBattleCommunication\n\ + ldrb r0, [r5, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + str r0, [r2]\n\ + ldr r4, _0801EAE8 @ =gActiveBank\n\ + ldr r1, _0801EAD8 @ =gEffectBank\n\ + ldrb r0, [r1]\n\ + strb r0, [r4]\n\ + ldrb r1, [r1]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + ldr r1, _0801EAEC @ =gUnknown_02024ACC\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r2, _0801EAF0 @ =gHitMarker\n\ + ldr r1, [r2]\n\ + movs r0, 0x80\n\ + lsls r0, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801EAF8\n\ + movs r0, 0x1\n\ + strb r0, [r5, 0x5]\n\ + ldr r0, _0801EAF4 @ =0xffffdfff\n\ + ands r1, r0\n\ + str r1, [r2]\n\ + b _0801EAFA\n\ + .align 2, 0\n\ +_0801EAD4: .4byte gBattleMons\n\ +_0801EAD8: .4byte gEffectBank\n\ +_0801EADC: .4byte gBattlescriptCurrInstr\n\ +_0801EAE0: .4byte gMoveEffectBS_Ptrs\n\ +_0801EAE4: .4byte gBattleCommunication\n\ +_0801EAE8: .4byte gActiveBank\n\ +_0801EAEC: .4byte gUnknown_02024ACC\n\ +_0801EAF0: .4byte gHitMarker\n\ +_0801EAF4: .4byte 0xffffdfff\n\ +_0801EAF8:\n\ + strb r0, [r5, 0x5]\n\ +_0801EAFA:\n\ + ldr r0, _0801EB2C @ =gBattleCommunication\n\ + ldrb r2, [r0, 0x3]\n\ + adds r7, r0, 0\n\ + cmp r2, 0x2\n\ + beq _0801EB14\n\ + cmp r2, 0x6\n\ + beq _0801EB14\n\ + cmp r2, 0x5\n\ + beq _0801EB14\n\ + cmp r2, 0x3\n\ + beq _0801EB14\n\ + bl _0801F5FA\n\ +_0801EB14:\n\ + ldr r0, _0801EB30 @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + ldr r2, _0801EB34 @ =0x000160ca\n\ + adds r0, r2\n\ + strb r1, [r0]\n\ + ldr r2, _0801EB38 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 7\n\ + bl _0801F4F2\n\ + .align 2, 0\n\ +_0801EB2C: .4byte gBattleCommunication\n\ +_0801EB30: .4byte 0x02000000\n\ +_0801EB34: .4byte 0x000160ca\n\ +_0801EB38: .4byte gHitMarker\n\ +_0801EB3C:\n\ + mov r3, r10\n\ + cmp r3, 0\n\ + beq _0801EB46\n\ + bl _0801F5FA\n\ +_0801EB46:\n\ + bl _0801F5DC\n\ +_0801EB4A:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r1, r0\n\ + ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects\n\ + ldrb r3, [r7, 0x3]\n\ + lsls r0, r3, 2\n\ + adds r0, r2\n\ + ldr r1, [r1]\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _0801EB6E\n\ + bl _0801F5DC\n\ +_0801EB6E:\n\ + subs r0, r3, 0x7\n\ + cmp r0, 0x34\n\ + bls _0801EB78\n\ + bl _0801F5FA\n\ +_0801EB78:\n\ + lsls r0, 2\n\ + ldr r1, _0801EB88 @ =_0801EB8C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0801EB84: .4byte gStatusFlagsForMoveEffects\n\ +_0801EB88: .4byte _0801EB8C\n\ + .align 2, 0\n\ +_0801EB8C:\n\ + .4byte _0801EC60\n\ + .4byte _0801ECD4\n\ + .4byte _0801EE4C\n\ + .4byte _0801ED60\n\ + .4byte _0801EDDC\n\ + .4byte _0801EE84\n\ + .4byte _0801EECC\n\ + .4byte _0801EFA8\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F13C\n\ + .4byte _0801F184\n\ + .4byte _0801F1A4\n\ + .4byte _0801F364\n\ + .4byte _0801F3A0\n\ + .4byte _0801F3BC\n\ + .4byte _0801F3D4\n\ + .4byte _0801F3EC\n\ + .4byte _0801F44C\n\ + .4byte _0801F464\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F4A8\n\ + .4byte _0801F500\n\ + .4byte _0801F5FA\n\ + .4byte _0801F5FA\n\ + .4byte _0801F5FA\n\ + .4byte _0801F5FA\n\ + .4byte _0801F5EC\n\ +_0801EC60:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + movs r5, 0x58\n\ + adds r1, r0, 0\n\ + muls r1, r5\n\ + mov r2, r9\n\ + adds r0, r1, r2\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x14\n\ + bne _0801EC7A\n\ + bl _0801F5DC\n\ +_0801EC7A:\n\ + mov r4, r9\n\ + adds r4, 0x50\n\ + adds r0, r1, r4\n\ + ldr r0, [r0]\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801EC8E\n\ + bl _0801F5DC\n\ +_0801EC8E:\n\ + bl Random\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + adds r2, r1, 0\n\ + muls r2, r5\n\ + adds r2, r4\n\ + lsls r0, 16\n\ + movs r1, 0xC0\n\ + lsls r1, 10\n\ + ands r1, r0\n\ + lsrs r1, 16\n\ + adds r1, 0x2\n\ + ldr r0, [r2]\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801ECD0 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + bl _0801F5F8\n\ + .align 2, 0\n\ +_0801ECC8: .4byte gBattlescriptCurrInstr\n\ +_0801ECCC: .4byte gMoveEffectBS_Ptrs\n\ +_0801ECD0: .4byte gBattleCommunication\n\ +_0801ECD4:\n\ + mov r0, r8\n\ + ldrb r2, [r0]\n\ + movs r6, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r6\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x27\n\ + bne _0801ED18\n\ + cmp r4, 0x1\n\ + beq _0801ECF4\n\ + cmp r5, 0x80\n\ + beq _0801ECF4\n\ + bl _0801F5DC\n\ +_0801ECF4:\n\ + ldr r0, _0801ED0C @ =gLastUsedAbility\n\ + strb r1, [r0]\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + movs r1, 0x27\n\ + bl RecordAbilityBattle\n\ + ldr r1, _0801ED10 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention\n\ + str r0, [r1]\n\ + bl _0801F5FA\n\ + .align 2, 0\n\ +_0801ED0C: .4byte gLastUsedAbility\n\ +_0801ED10: .4byte gBattlescriptCurrInstr\n\ +_0801ED14: .4byte BattleScript_FlinchPrevention\n\ +_0801ED18:\n\ + adds r0, r2, 0\n\ + bl BankGetTurnOrder\n\ + ldr r1, _0801ED54 @ =gCurrentMoveTurn\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bhi _0801ED2E\n\ + bl _0801F5DC\n\ +_0801ED2E:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + adds r2, r0, 0\n\ + muls r2, r6\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects\n\ + ldr r0, _0801ED5C @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r1, [r2]\n\ + ldr r0, [r0]\n\ + orrs r1, r0\n\ + str r1, [r2]\n\ + bl _0801F5DC\n\ + .align 2, 0\n\ +_0801ED54: .4byte gCurrentMoveTurn\n\ +_0801ED58: .4byte gStatusFlagsForMoveEffects\n\ +_0801ED5C: .4byte gBattleCommunication\n\ +_0801ED60:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r5, 0x58\n\ + muls r0, r5\n\ + mov r4, r9\n\ + adds r4, 0x50\n\ + adds r2, r0, r4\n\ + ldr r1, [r2]\n\ + movs r0, 0x70\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801ED7C\n\ + bl _0801F5DC\n\ +_0801ED7C:\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + orrs r1, r0\n\ + str r1, [r2]\n\ + ldr r1, _0801EDC8 @ =gLockedMove\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldr r1, _0801EDCC @ =gCurrentMove\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ + bl Random\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + adds r2, r1, 0\n\ + muls r2, r5\n\ + adds r2, r4\n\ + movs r1, 0x3\n\ + ands r1, r0\n\ + adds r1, 0x2\n\ + lsls r1, 4\n\ + ldr r0, [r2]\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801EDD8 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + bl _0801F5F8\n\ + .align 2, 0\n\ +_0801EDC8: .4byte gLockedMove\n\ +_0801EDCC: .4byte gCurrentMove\n\ +_0801EDD0: .4byte gBattlescriptCurrInstr\n\ +_0801EDD4: .4byte gMoveEffectBS_Ptrs\n\ +_0801EDD8: .4byte gBattleCommunication\n\ +_0801EDDC:\n\ + ldr r5, _0801EE30 @ =gBankAttacker\n\ + ldrb r0, [r5]\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0801EE14\n\ + ldr r4, _0801EE34 @ =gPaydayMoney\n\ + ldrh r3, [r4]\n\ + ldr r2, _0801EE38 @ =gBattleMons\n\ + ldrb r1, [r5]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r2\n\ + adds r0, 0x2A\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + adds r0, r3, r0\n\ + strh r0, [r4]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r3, r0\n\ + bls _0801EE14\n\ + ldr r3, _0801EE3C @ =0x0000ffff\n\ + adds r0, r3, 0\n\ + strh r0, [r4]\n\ +_0801EE14:\n\ + ldr r4, _0801EE40 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801EE48 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + bl _0801F5F8\n\ + .align 2, 0\n\ +_0801EE30: .4byte gBankAttacker\n\ +_0801EE34: .4byte gPaydayMoney\n\ +_0801EE38: .4byte gBattleMons\n\ +_0801EE3C: .4byte 0x0000ffff\n\ +_0801EE40: .4byte gBattlescriptCurrInstr\n\ +_0801EE44: .4byte gMoveEffectBS_Ptrs\n\ +_0801EE48: .4byte gBattleCommunication\n\ +_0801EE4C:\n\ + mov r4, r8\n\ + ldrb r1, [r4]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + mov r1, r9\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801EE62\n\ + b _0801F5DC\n\ +_0801EE62:\n\ + bl Random\n\ + ldr r4, _0801EE80 @ =gBattleCommunication\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + adds r0, 0x3\n\ + strb r0, [r4, 0x3]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl SetMoveEffect\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801EE80: .4byte gBattleCommunication\n\ +_0801EE84:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 5\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r1, _0801EEC0 @ =gLockedMove\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldr r1, _0801EEC4 @ =gCurrentMove\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ + ldr r0, _0801EEC8 @ =gProtectStructs\n\ + ldrb r1, [r2]\n\ + lsls r1, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + movs r2, 0x4\n\ + orrs r0, r2\n\ + strb r0, [r1, 0x1]\n\ + b _0801F5DC\n\ + .align 2, 0\n\ +_0801EEC0: .4byte gLockedMove\n\ +_0801EEC4: .4byte gCurrentMove\n\ +_0801EEC8: .4byte gProtectStructs\n\ +_0801EECC:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r6, 0x58\n\ + muls r0, r6\n\ + mov r4, r9\n\ + adds r4, 0x50\n\ + adds r0, r4\n\ + ldr r5, [r0]\n\ + movs r0, 0xE0\n\ + lsls r0, 8\n\ + ands r5, r0\n\ + cmp r5, 0\n\ + beq _0801EEE8\n\ + b _0801F5DC\n\ +_0801EEE8:\n\ + bl Random\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + adds r2, r1, 0\n\ + muls r2, r6\n\ + adds r2, r4\n\ + movs r1, 0x3\n\ + ands r1, r0\n\ + adds r1, 0x3\n\ + lsls r1, 13\n\ + ldr r0, [r2]\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _0801EF80 @ =0x02000000\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + ldr r4, _0801EF84 @ =0x00016004\n\ + adds r0, r4\n\ + adds r0, r2\n\ + ldr r6, _0801EF88 @ =gCurrentMove\n\ + ldrh r1, [r6]\n\ + strb r1, [r0]\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + ldr r1, _0801EF8C @ =0x00016005\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrh r1, [r6]\n\ + lsrs r1, 8\n\ + strb r1, [r0]\n\ + ldrb r0, [r3]\n\ + ldr r3, _0801EF90 @ =0x00016020\n\ + adds r0, r3\n\ + adds r0, r2\n\ + ldr r1, _0801EF94 @ =gBankAttacker\n\ + ldrb r1, [r1]\n\ + strb r1, [r0]\n\ + ldr r4, _0801EF98 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs\n\ + ldr r2, _0801EFA0 @ =gBattleCommunication\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + str r0, [r4]\n\ + strb r5, [r2, 0x5]\n\ + ldr r1, _0801EFA4 @ =gTrappingMoves\n\ + ldrh r0, [r1]\n\ + ldrh r4, [r6]\n\ + cmp r0, r4\n\ + bne _0801EF5C\n\ + b _0801F5FA\n\ +_0801EF5C:\n\ + adds r3, r1, 0\n\ + adds r1, r6, 0\n\ +_0801EF60:\n\ + ldrb r0, [r2, 0x5]\n\ + adds r0, 0x1\n\ + strb r0, [r2, 0x5]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x4\n\ + bls _0801EF70\n\ + b _0801F5FA\n\ +_0801EF70:\n\ + ldrb r0, [r2, 0x5]\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + ldrh r4, [r1]\n\ + cmp r0, r4\n\ + bne _0801EF60\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801EF80: .4byte 0x02000000\n\ +_0801EF84: .4byte 0x00016004\n\ +_0801EF88: .4byte gCurrentMove\n\ +_0801EF8C: .4byte 0x00016005\n\ +_0801EF90: .4byte 0x00016020\n\ +_0801EF94: .4byte gBankAttacker\n\ +_0801EF98: .4byte gBattlescriptCurrInstr\n\ +_0801EF9C: .4byte gMoveEffectBS_Ptrs\n\ +_0801EFA0: .4byte gBattleCommunication\n\ +_0801EFA4: .4byte gTrappingMoves\n\ +_0801EFA8:\n\ + ldr r1, _0801EFD8 @ =gBattleMoveDamage\n\ + ldr r0, _0801EFDC @ =gHP_dealt\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bge _0801EFB4\n\ + adds r0, 0x3\n\ +_0801EFB4:\n\ + asrs r0, 2\n\ + str r0, [r1]\n\ + cmp r0, 0\n\ + bne _0801EFC0\n\ + movs r0, 0x1\n\ + str r0, [r1]\n\ +_0801EFC0:\n\ + ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801EFE8 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801EFD8: .4byte gBattleMoveDamage\n\ +_0801EFDC: .4byte gHP_dealt\n\ +_0801EFE0: .4byte gBattlescriptCurrInstr\n\ +_0801EFE4: .4byte gMoveEffectBS_Ptrs\n\ +_0801EFE8: .4byte gBattleCommunication\n\ +_0801EFEC:\n\ + ldrb r1, [r7, 0x3]\n\ + adds r1, 0xF2\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + movs r0, 0x10\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl ChangeStatBuffs\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0\n\ + beq _0801F008\n\ + b _0801F5DC\n\ +_0801F008:\n\ + ldr r2, _0801F02C @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + ldr r4, _0801F030 @ =0x000160a4\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + ldr r0, _0801F034 @ =0x000160a5\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r4, _0801F038 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F03C @ =BattleScript_StatUp\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F02C: .4byte 0x02000000\n\ +_0801F030: .4byte 0x000160a4\n\ +_0801F034: .4byte 0x000160a5\n\ +_0801F038: .4byte gBattlescriptCurrInstr\n\ +_0801F03C: .4byte BattleScript_StatUp\n\ +_0801F040:\n\ + movs r0, 0x70\n\ + negs r0, r0\n\ + ldrb r1, [r7, 0x3]\n\ + adds r1, 0xEB\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl ChangeStatBuffs\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0\n\ + beq _0801F05E\n\ + b _0801F5DC\n\ +_0801F05E:\n\ + ldr r2, _0801F080 @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + ldr r4, _0801F084 @ =0x000160a4\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + ldr r0, _0801F088 @ =0x000160a5\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r4, _0801F08C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F090 @ =BattleScript_StatDown\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F080: .4byte 0x02000000\n\ +_0801F084: .4byte 0x000160a4\n\ +_0801F088: .4byte 0x000160a5\n\ +_0801F08C: .4byte gBattlescriptCurrInstr\n\ +_0801F090: .4byte BattleScript_StatDown\n\ +_0801F094:\n\ + ldrb r1, [r7, 0x3]\n\ + adds r1, 0xDA\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + movs r0, 0x20\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl ChangeStatBuffs\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0\n\ + beq _0801F0B0\n\ + b _0801F5DC\n\ +_0801F0B0:\n\ + ldr r2, _0801F0D4 @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + ldr r4, _0801F0D8 @ =0x000160a4\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + ldr r0, _0801F0DC @ =0x000160a5\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F0E4 @ =BattleScript_StatUp\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F0D4: .4byte 0x02000000\n\ +_0801F0D8: .4byte 0x000160a4\n\ +_0801F0DC: .4byte 0x000160a5\n\ +_0801F0E0: .4byte gBattlescriptCurrInstr\n\ +_0801F0E4: .4byte BattleScript_StatUp\n\ +_0801F0E8:\n\ + movs r0, 0x60\n\ + negs r0, r0\n\ + ldrb r1, [r7, 0x3]\n\ + adds r1, 0xD3\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl ChangeStatBuffs\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0\n\ + beq _0801F106\n\ + b _0801F5DC\n\ +_0801F106:\n\ + ldr r2, _0801F128 @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + ldr r4, _0801F12C @ =0x000160a4\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + ldr r0, _0801F130 @ =0x000160a5\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r4, _0801F134 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F138 @ =BattleScript_StatDown\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F128: .4byte 0x02000000\n\ +_0801F12C: .4byte 0x000160a4\n\ +_0801F130: .4byte 0x000160a5\n\ +_0801F134: .4byte gBattlescriptCurrInstr\n\ +_0801F138: .4byte BattleScript_StatDown\n\ +_0801F13C:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 15\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _0801F178 @ =gDisableStructs\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + movs r1, 0x2\n\ + strb r1, [r0, 0x19]\n\ + ldr r1, _0801F17C @ =gLockedMove\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldr r1, _0801F180 @ =gCurrentMove\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ + b _0801F5DC\n\ + .align 2, 0\n\ +_0801F178: .4byte gDisableStructs\n\ +_0801F17C: .4byte gLockedMove\n\ +_0801F180: .4byte gCurrentMove\n\ +_0801F184:\n\ + ldr r0, _0801F1A0 @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 16\n\ +_0801F19A:\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + b _0801F5DC\n\ + .align 2, 0\n\ +_0801F1A0: .4byte gBankAttacker\n\ +_0801F1A4:\n\ + ldr r4, _0801F254 @ =gBankAttacker\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _0801F1D8\n\ + ldr r0, _0801F258 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _0801F25C @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801F214\n\ + ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r1, r0\n\ + beq _0801F1D8\n\ + b _0801F5DC\n\ +_0801F1D8:\n\ + ldr r0, _0801F258 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _0801F25C @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801F214\n\ + ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r1, r0\n\ + beq _0801F214\n\ + ldr r0, _0801F264 @ =gWishFutureKnock\n\ + adds r0, 0x29\n\ + adds r0, r6, r0\n\ + ldrb r1, [r0]\n\ + ldr r3, _0801F268 @ =gBitTable\n\ + ldr r2, _0801F26C @ =gBattlePartyID\n\ + ldr r0, _0801F254 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _0801F214\n\ + b _0801F5DC\n\ +_0801F214:\n\ + ldr r2, _0801F270 @ =gBattleMons\n\ + ldr r1, _0801F274 @ =gBankTarget\n\ + ldrb r0, [r1]\n\ + movs r3, 0x58\n\ + muls r0, r3\n\ + adds r4, r0, r2\n\ + ldrh r0, [r4, 0x2E]\n\ + adds r7, r1, 0\n\ + mov r9, r2\n\ + cmp r0, 0\n\ + beq _0801F284\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3C\n\ + bne _0801F284\n\ + ldr r1, _0801F278 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0801F27C @ =BattleScript_NoItemSteal\n\ + str r0, [r1]\n\ + ldr r1, _0801F280 @ =gLastUsedAbility\n\ + ldrb r0, [r7]\n\ + muls r0, r3\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F254: .4byte gBankAttacker\n\ +_0801F258: .4byte gBattleTypeFlags\n\ +_0801F25C: .4byte 0x00000902\n\ +_0801F260: .4byte gTrainerBattleOpponent\n\ +_0801F264: .4byte gWishFutureKnock\n\ +_0801F268: .4byte gBitTable\n\ +_0801F26C: .4byte gBattlePartyID\n\ +_0801F270: .4byte gBattleMons\n\ +_0801F274: .4byte gBankTarget\n\ +_0801F278: .4byte gBattlescriptCurrInstr\n\ +_0801F27C: .4byte BattleScript_NoItemSteal\n\ +_0801F280: .4byte gLastUsedAbility\n\ +_0801F284:\n\ + ldr r4, _0801F340 @ =gBankAttacker\n\ + mov r10, r4\n\ + ldrb r1, [r4]\n\ + movs r0, 0x58\n\ + mov r8, r0\n\ + mov r0, r8\n\ + muls r0, r1\n\ + add r0, r9\n\ + ldrh r3, [r0, 0x2E]\n\ + cmp r3, 0\n\ + beq _0801F29C\n\ + b _0801F5DC\n\ +_0801F29C:\n\ + ldrb r0, [r7]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + add r0, r9\n\ + ldrh r2, [r0, 0x2E]\n\ + adds r0, r2, 0\n\ + cmp r0, 0xAF\n\ + bne _0801F2B0\n\ + b _0801F5DC\n\ +_0801F2B0:\n\ + cmp r0, 0\n\ + bne _0801F2B6\n\ + b _0801F5DC\n\ +_0801F2B6:\n\ + lsls r0, r1, 1\n\ + ldr r5, _0801F344 @ =0x020160f0\n\ + adds r0, r5\n\ + ldr r1, _0801F348 @ =gLastUsedItem\n\ + strh r2, [r0]\n\ + strh r2, [r1]\n\ + ldrb r0, [r7]\n\ + mov r4, r8\n\ + muls r4, r0\n\ + adds r0, r4, 0\n\ + add r0, r9\n\ + movs r6, 0\n\ + strh r3, [r0, 0x2E]\n\ + ldr r4, _0801F34C @ =gActiveBank\n\ + mov r2, r10\n\ + ldrb r0, [r2]\n\ + strb r0, [r4]\n\ + str r1, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0x2\n\ + bl EmitSetAttributes\n\ + mov r3, r10\n\ + ldrb r0, [r3]\n\ + bl MarkBufferBankForExecution\n\ + ldrb r0, [r7]\n\ + strb r0, [r4]\n\ + ldrb r0, [r7]\n\ + mov r4, r8\n\ + muls r4, r0\n\ + adds r0, r4, 0\n\ + mov r1, r9\n\ + adds r1, 0x2E\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0x2\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r7]\n\ + bl MarkBufferBankForExecution\n\ + ldr r4, _0801F350 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F354 @ =BattleScript_ItemSteal\n\ + str r0, [r4]\n\ + ldr r0, _0801F358 @ =0xfffe9f10\n\ + adds r5, r0\n\ + ldrb r0, [r7]\n\ + lsls r0, 1\n\ + ldr r1, _0801F35C @ =0x000160e8\n\ + adds r0, r1\n\ + adds r0, r5\n\ + strb r6, [r0]\n\ + ldrb r0, [r7]\n\ + lsls r0, 1\n\ + ldr r2, _0801F360 @ =0x000160e9\n\ + adds r0, r2\n\ + adds r0, r5\n\ + strb r6, [r0]\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F340: .4byte gBankAttacker\n\ +_0801F344: .4byte 0x020160f0\n\ +_0801F348: .4byte gLastUsedItem\n\ +_0801F34C: .4byte gActiveBank\n\ +_0801F350: .4byte gBattlescriptCurrInstr\n\ +_0801F354: .4byte BattleScript_ItemSteal\n\ +_0801F358: .4byte 0xfffe9f10\n\ +_0801F35C: .4byte 0x000160e8\n\ +_0801F360: .4byte 0x000160e9\n\ +_0801F364:\n\ + ldr r3, _0801F394 @ =gBankTarget\n\ + ldrb r1, [r3]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 19\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _0801F398 @ =gDisableStructs\n\ + ldrb r1, [r3]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldr r1, _0801F39C @ =gBankAttacker\n\ + ldrb r1, [r1]\n\ + strb r1, [r0, 0x14]\n\ + b _0801F5DC\n\ + .align 2, 0\n\ +_0801F394: .4byte gBankTarget\n\ +_0801F398: .4byte gDisableStructs\n\ +_0801F39C: .4byte gBankAttacker\n\ +_0801F3A0:\n\ + ldr r0, _0801F3B8 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 20\n\ + b _0801F19A\n\ + .align 2, 0\n\ +_0801F3B8: .4byte gBankTarget\n\ +_0801F3BC:\n\ + ldr r4, _0801F3CC @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F3D0 @ =BattleScript_AllStatsUp\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F3CC: .4byte gBattlescriptCurrInstr\n\ +_0801F3D0: .4byte BattleScript_AllStatsUp\n\ +_0801F3D4:\n\ + ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F3E4: .4byte gBattlescriptCurrInstr\n\ +_0801F3E8: .4byte BattleScript_RapidSpinAway\n\ +_0801F3EC:\n\ + ldr r6, _0801F43C @ =gBankTarget\n\ + ldrb r0, [r6]\n\ + movs r2, 0x58\n\ + muls r0, r2\n\ + mov r1, r9\n\ + adds r1, 0x4C\n\ + adds r5, r0, r1\n\ + ldr r4, [r5]\n\ + movs r0, 0x40\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + bne _0801F406\n\ + b _0801F5DC\n\ +_0801F406:\n\ + movs r0, 0x41\n\ + negs r0, r0\n\ + ands r4, r0\n\ + str r4, [r5]\n\ + ldr r4, _0801F440 @ =gActiveBank\n\ + ldrb r0, [r6]\n\ + strb r0, [r4]\n\ + ldrb r0, [r4]\n\ + muls r0, r2\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r4, _0801F444 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F43C: .4byte gBankTarget\n\ +_0801F440: .4byte gActiveBank\n\ +_0801F444: .4byte gBattlescriptCurrInstr\n\ +_0801F448: .4byte BattleScript_TargetPRLZHeal\n\ +_0801F44C:\n\ + ldr r4, _0801F45C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F460 @ =BattleScript_AtkDefDown\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F45C: .4byte gBattlescriptCurrInstr\n\ +_0801F460: .4byte BattleScript_AtkDefDown\n\ +_0801F464:\n\ + ldr r4, _0801F494 @ =gBattleMoveDamage\n\ + ldr r0, _0801F498 @ =gHP_dealt\n\ + ldr r0, [r0]\n\ + movs r1, 0x3\n\ + bl __divsi3\n\ + str r0, [r4]\n\ + cmp r0, 0\n\ + bne _0801F47A\n\ + movs r0, 0x1\n\ + str r0, [r4]\n\ +_0801F47A:\n\ + ldr r4, _0801F49C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801F4A4 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F494: .4byte gBattleMoveDamage\n\ +_0801F498: .4byte gHP_dealt\n\ +_0801F49C: .4byte gBattlescriptCurrInstr\n\ +_0801F4A0: .4byte gMoveEffectBS_Ptrs\n\ +_0801F4A4: .4byte gBattleCommunication\n\ +_0801F4A8:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r5, 0x58\n\ + muls r0, r5\n\ + mov r4, r9\n\ + adds r4, 0x50\n\ + adds r2, r0, r4\n\ + ldr r1, [r2]\n\ + movs r0, 0xC0\n\ + lsls r0, 4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801F4C4\n\ + b _0801F5DC\n\ +_0801F4C4:\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + orrs r1, r0\n\ + str r1, [r2]\n\ + ldr r1, _0801F4F8 @ =gLockedMove\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldr r1, _0801F4FC @ =gCurrentMove\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ + bl Random\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + adds r2, r1, 0\n\ + muls r2, r5\n\ + adds r2, r4\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + adds r1, 0x2\n\ + lsls r1, 10\n\ + ldr r0, [r2]\n\ +_0801F4F2:\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F4F8: .4byte gLockedMove\n\ +_0801F4FC: .4byte gCurrentMove\n\ +_0801F500:\n\ + mov r5, r8\n\ + ldrb r3, [r5]\n\ + movs r4, 0x58\n\ + adds r0, r3, 0\n\ + muls r0, r4\n\ + mov r2, r9\n\ + adds r1, r0, r2\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r2, [r0]\n\ + cmp r2, 0x3C\n\ + bne _0801F540\n\ + ldrh r0, [r1, 0x2E]\n\ + cmp r0, 0\n\ + beq _0801F5DC\n\ + ldr r0, _0801F534 @ =gLastUsedAbility\n\ + strb r2, [r0]\n\ + ldr r1, _0801F538 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0801F53C @ =BattleScript_NoItemSteal\n\ + str r0, [r1]\n\ + ldrb r0, [r5]\n\ + movs r1, 0x3C\n\ + bl RecordAbilityBattle\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F534: .4byte gLastUsedAbility\n\ +_0801F538: .4byte gBattlescriptCurrInstr\n\ +_0801F53C: .4byte BattleScript_NoItemSteal\n\ +_0801F540:\n\ + ldrh r0, [r1, 0x2E]\n\ + cmp r0, 0\n\ + beq _0801F5DC\n\ + adds r0, r3, 0\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r1, _0801F5B8 @ =gLastUsedItem\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + muls r0, r4\n\ + add r0, r9\n\ + ldrh r0, [r0, 0x2E]\n\ + strh r0, [r1]\n\ + ldrb r0, [r3]\n\ + muls r0, r4\n\ + add r0, r9\n\ + movs r5, 0\n\ + movs r1, 0\n\ + strh r1, [r0, 0x2E]\n\ + ldr r2, _0801F5BC @ =gWishFutureKnock\n\ + adds r2, 0x29\n\ + adds r2, r6, r2\n\ + ldr r3, _0801F5C0 @ =gBitTable\n\ + ldr r1, _0801F5C4 @ =gBattlePartyID\n\ + mov r4, r8\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F5CC @ =BattleScript_KnockedOff\n\ + str r0, [r4]\n\ + ldr r1, _0801F5D0 @ =0x02000000\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + ldr r3, _0801F5D4 @ =0x000160e8\n\ + adds r0, r3\n\ + adds r0, r1\n\ + strb r5, [r0]\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + ldr r4, _0801F5D8 @ =0x000160e9\n\ + adds r0, r4\n\ + adds r0, r1\n\ + strb r5, [r0]\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F5B8: .4byte gLastUsedItem\n\ +_0801F5BC: .4byte gWishFutureKnock\n\ +_0801F5C0: .4byte gBitTable\n\ +_0801F5C4: .4byte gBattlePartyID\n\ +_0801F5C8: .4byte gBattlescriptCurrInstr\n\ +_0801F5CC: .4byte BattleScript_KnockedOff\n\ +_0801F5D0: .4byte 0x02000000\n\ +_0801F5D4: .4byte 0x000160e8\n\ +_0801F5D8: .4byte 0x000160e9\n\ +_0801F5DC:\n\ + ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F5E8: .4byte gBattlescriptCurrInstr\n\ +_0801F5EC:\n\ + ldr r4, _0801F60C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F610 @ =BattleScript_SAtkDown2\n\ +_0801F5F8:\n\ + str r0, [r4]\n\ +_0801F5FA:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0801F60C: .4byte gBattlescriptCurrInstr\n\ +_0801F610: .4byte BattleScript_SAtkDown2\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + + +static void atk15_seteffectwithchancetarget(void) +{ + u32 PercentChance; + if (gBattleMons[gBankAttacker].ability == ABILITY_SERENE_GRACE) + PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; + else + PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; + if (gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F; + SetMoveEffect(0, 0x80); + } + else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (PercentChance >= 100) + SetMoveEffect(0, 0x80); + else + SetMoveEffect(0, 0); + } + else + gBattlescriptCurrInstr++; + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + BATTLE_STRUCT->unk16112 = 0; +} + +static void atk16_seteffectprimary(void) +{ + SetMoveEffect(1, 0); +} + +static void atk17_seteffectsecondary(void) +{ + SetMoveEffect(0, 0); +} + +static void atk18_status_effect_clear(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) + gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + else + gBattleMons[gActiveBank].status2 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattlescriptCurrInstr += 2; + BATTLE_STRUCT->unk16112 = 0; +} + +static void atk19_faint_pokemon(void) +{ + u8 *r4; + + if (gBattlescriptCurrInstr[2] != 0) + { + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + { + r4 = BSScriptReadPtr(gBattlescriptCurrInstr + 3); + + b_movescr_stack_pop_cursor(); + gBattlescriptCurrInstr = r4; + gSideAffecting[GetBankSide(gActiveBank)] &= ~SIDE_STATUS_SPIKES_DAMAGED; + } + else + { + gBattlescriptCurrInstr += 7; + } + } + else + { + u8 bank; + + if (gBattlescriptCurrInstr[1] == 1) + { + gActiveBank = gBankAttacker; + bank = gBankTarget; + r4 = gUnknown_081D8C58; + } + else + { + gActiveBank = gBankTarget; + bank = gBankAttacker; + r4 = gUnknown_081D8C65; + } + if (!(gAbsentBankFlags & gBitTable[gActiveBank]) + && gBattleMons[gActiveBank].hp == 0) + { + ewram[0x160AC + bank * 2 + 0] = 0; + ewram[0x160AC + bank * 2 + 1] = 0; + ewram[0x16100 + bank * 4 + 0] = 0; + ewram[0x16100 + bank * 4 + 1] = 0; + ewram[0x16100 + bank * 4 + 2] = 0; + ewram[0x16100 + bank * 4 + 3] = 0; + + gHitMarker |= HITMARKER_FAINTED(gActiveBank); + b_movescr_stack_push(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = r4; + if (GetBankSide(gActiveBank) == 0) + { + gHitMarker |= HITMARKER_x400000; + if (gBattleResults.playerFaintCounter < 0xFF) + gBattleResults.playerFaintCounter++; + if (gBattleMons[bank].level > gBattleMons[gActiveBank].level) + { + if (gBattleMons[bank].level - gBattleMons[gActiveBank].level > 0x1D) + AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 8); + else + AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 6); + } + } + else + { + if (gBattleResults.opponentFaintCounter < 0xFF) + gBattleResults.opponentFaintCounter++; + gBattleResults.lastOpponentSpecies = gBattleMons[gActiveBank].species; + } + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0) + { + b_movescr_stack_push(gBattlescriptCurrInstr); + gBattleMoveDamage = gBattleMons[bank].hp; + gBattlescriptCurrInstr = gUnknown_081D9156; + } + if ((gStatuses3[gBankTarget] & STATUS3_GRUDGE) + && !(gHitMarker & HITMARKER_GRUDGE) + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget) + && gBattleMons[gBankAttacker].hp != 0 + && gCurrentMove != MOVE_STRUGGLE) + { + u8 moveIndex = ewram[0x1608C + gBankAttacker]; + + gBattleMons[gBankAttacker].pp[moveIndex] = 0; + b_movescr_stack_push(gBattlescriptCurrInstr); + gBattlescriptCurrInstr = gUnknown_081D9468; + gActiveBank = gBankAttacker; + EmitSetAttributes(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); + MarkBufferBankForExecution(gActiveBank); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gBattleMons[gBankAttacker].moves[moveIndex]; + gBattleTextBuff1[3] = gBattleMons[gBankAttacker].moves[moveIndex] >> 8; + gBattleTextBuff1[4] = EOS; + } + } + else + { + gBattlescriptCurrInstr += 7; + } + } +} + +static void atk1A_faint_animation(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + Emitcmd10(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } +} + +static void atk1B_faint_effects_clear(void) +{ + //Clears things like attraction or trapping to other banks + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gBattleMons[gActiveBank].status1 = 0; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + UndoEffectsAfterFainting(); + gBattlescriptCurrInstr += 2; + } +} + +static void atk1C_jumpifstatus(void) +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 10; +} + +static void atk1D_jumpifstatus2(void) +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 10; +} + +static void atk1E_jumpifability(void) +{ + u8 bank; + u8 ability = BSScriptRead8(gBattlescriptCurrInstr + 2); + void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 8) + { + bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBankAttacker, ability, 0, 0); + if (bank) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jump_loc; + RecordAbilityBattle(bank -1, gLastUsedAbility); + unk_2000000[0x160f8] = bank - 1; + } + else + gBattlescriptCurrInstr += 7; + } + else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 9) + { + bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBankAttacker, ability, 0, 0); + if (bank) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jump_loc; + RecordAbilityBattle(bank - 1, gLastUsedAbility); + unk_2000000[0x160f8] = bank - 1; + } + else + gBattlescriptCurrInstr += 7; + } + else + { + bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[bank].ability == ability) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jump_loc; + RecordAbilityBattle(bank, gLastUsedAbility); + unk_2000000[0x160f8] = bank; + } + else + gBattlescriptCurrInstr += 7; + } +} + +static void atk1F_jumpifsideaffecting(void) +{ + u8 side; + u16 flags; + void* jump_loc; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1) + side = GetBankIdentity(gBankAttacker) & 1; + else + side = GetBankIdentity(gBankTarget) & 1; + + flags = BS2ScriptRead16(gBattlescriptCurrInstr + 2); + jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 4); + + if (gSideAffecting[side] & flags) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 8; +} + +static void atk20_jumpifstat(void) +{ + u8 ret = 0; + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 value = gBattleMons[bank].statStages[BSScriptRead8(gBattlescriptCurrInstr + 3)]; + switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + { + case CMP_EQUAL: + if (value == BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_NOT_EQUAL: + if (value != BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_GREATER_THAN: + if (value > BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_LESS_THAN: + if (value < BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_COMMON_BITS: + if (value & BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_NO_COMMON_BITS: + if (!(value & BSScriptRead8(gBattlescriptCurrInstr + 4))) + ret++; + break; + } + if (ret) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + else + gBattlescriptCurrInstr += 9; +} + +static void atk21_jumpifstatus3(void) +{ + u32 flags; + void* jump_loc; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7); + if (BSScriptRead8(gBattlescriptCurrInstr + 6)) + { + if ((gStatuses3[gActiveBank] & flags) != 0) + gBattlescriptCurrInstr += 11; + else + gBattlescriptCurrInstr = jump_loc; + } + else + { + if ((gStatuses3[gActiveBank] & flags) != 0) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 11; + } +} + +static void atk22_jumpiftype(void) //u8 bank, u8 type, *ptr +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 type = BSScriptRead8(gBattlescriptCurrInstr + 2); + void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); + + if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 7; +} + +//here we go again... +#ifdef NONMATCHING +static void atk23_getexp(void) +{ + u8 hold_effect; + int via_expshare = 0, sent_in; + u16* exp = &BATTLE_STRUCT->exp; + gBank1 = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + sent_in = gSentPokesToOpponent[(gBank1 & 2) >> 1]; + switch (BATTLE_STRUCT->atk23StateTracker) + { + case 0: //check if should receive exp at all + if (GetBankSide(gBank1) != 1 || (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + BATTLE_STRUCT->atk23StateTracker = 6; //goto last case + else + { + BATTLE_STRUCT->atk23StateTracker++; + ((u8*)ewram)[0x16113] |= gBitTable[gBattlePartyID[gBank1]]; + } + break; + case 1: //calculate experience points to redistribute + { + int via_sent_in = 0; + u16 calculatedExp; + int i; + for (i = 0; i < 6; i++) + { + u16 item; + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == 0 || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + continue; + if (gBitTable[i] & sent_in) + via_sent_in++; + + item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (item == ITEM_ENIGMA_BERRY) + hold_effect = gSaveBlock1.enigmaBerry.holdEffect; + else + hold_effect = ItemId_GetHoldEffect(item); + + if (hold_effect == HOLD_EFFECT_EXP_SHARE) + via_expshare++; + } + calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7; + if (via_expshare) //at least one poke is getting exp via exp share + { + calculatedExp /= 2; + *exp = calculatedExp / via_sent_in; + if (*exp == 0) + *exp = 1; + + gExpShareExp = calculatedExp / via_expshare; + if (gExpShareExp == 0) + gExpShareExp = 1; + } + else + { + *exp = calculatedExp / via_sent_in; + if (*exp == 0) + *exp = 1; + gExpShareExp = 0; + } + BATTLE_STRUCT->atk23StateTracker++; + BATTLE_STRUCT->expGetterID = 0; + BATTLE_STRUCT->sentInPokes = sent_in; + } //no break statement + case 2: //loop; set exp value to the poke in expgetter_id and print message + if (gBattleExecBuffer == 0) + { + u16 item = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HELD_ITEM); + u8* tracker; u32 zero; + if (item == ITEM_ENIGMA_BERRY) + hold_effect = gSaveBlock1.enigmaBerry.holdEffect; + else + hold_effect = ItemId_GetHoldEffect(item); + + if ((hold_effect != HOLD_EFFECT_EXP_SHARE && !(BATTLE_STRUCT->sentInPokes & 1))) + { + BATTLE_STRUCT->sentInPokes >>= 1; + tracker = &BATTLE_STRUCT->atk23StateTracker; + zero = 0; + *tracker = 5; //increment looper + gBattleMoveDamage = zero; //used for exp + } + else if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) == 100) + { + BATTLE_STRUCT->sentInPokes >>= 1; + tracker = &BATTLE_STRUCT->atk23StateTracker; + zero = 0; + *tracker = 5; //increment looper + gBattleMoveDamage = zero; //used for exp + } + else + { + //music change in wild battle after fainting a poke + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !BATTLE_STRUCT->wildVictorySong) + { + BattleMusicStop(); + PlayBGM(0x161); + BATTLE_STRUCT->wildVictorySong++; + } + + if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP)) + { + s16 stringID; + if (BATTLE_STRUCT->sentInPokes & 1) + gBattleMoveDamage = *exp; + else + gBattleMoveDamage = 0; + + if (hold_effect == HOLD_EFFECT_EXP_SHARE) + gBattleMoveDamage += gExpShareExp; + if (hold_effect == HOLD_EFFECT_LUCKY_EGG) + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + + if (IsTradedMon(&gPlayerParty[BATTLE_STRUCT->expGetterID])) + { + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + stringID = 0x14A; + } + else + { + stringID = 0x149; + } + + //get exp getter bank + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (!(gBattlePartyID[2] != BATTLE_STRUCT->expGetterID) && !(gAbsentBankFlags & gBitTable[2])) + BATTLE_STRUCT->expGetterBank = 2; + else + { + if (!(gAbsentBankFlags & gBitTable[0])) + BATTLE_STRUCT->expGetterBank = 0; + else + BATTLE_STRUCT->expGetterBank = 2; + } + } + else + BATTLE_STRUCT->expGetterBank = 0; + + //buffer poke name + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = BATTLE_STRUCT->expGetterBank; + gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID; + gBattleTextBuff1[4] = 0xFF; + + //buffer 'gained' or 'gained a boosted' + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = stringID; + stringID = (stringID >> 8) & (0xFF); //this does not want to cooperate + gBattleTextBuff2[3] = stringID; + gBattleTextBuff2[4] = 0xFF; + + //buffer exp number + gBattleTextBuff3[0] = 0xFD; + gBattleTextBuff3[1] = 1; + gBattleTextBuff3[2] = 4; //word + gBattleTextBuff3[3] = 5; //max digits + gBattleTextBuff3[4] = gBattleMoveDamage; + gBattleTextBuff3[5] = sBYTE1_32(gBattleMoveDamage); + gBattleTextBuff3[6] = sBYTE2_32(gBattleMoveDamage); + gBattleTextBuff3[7] = sBYTE3_32(gBattleMoveDamage); + gBattleTextBuff3[8] = 0xFF; + + PrepareStringBattle(0xD, BATTLE_STRUCT->expGetterBank); + MonGainEVs(&gPlayerParty[BATTLE_STRUCT->expGetterID], gBattleMons[gBank1].species); + } + BATTLE_STRUCT->sentInPokes >>= 1; + BATTLE_STRUCT->atk23StateTracker++; + } + } + break; + case 3: //Set Stats and give exp + if (gBattleExecBuffer == 0) + { + gBattleBufferB[BATTLE_STRUCT->expGetterBank][0] = 0; + if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) != 100) + { + // Doesn't match. + BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); + BATTLE_STRUCT->beforeLvlUp[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); + BATTLE_STRUCT->beforeLvlUp[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); + BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + BATTLE_STRUCT->beforeLvlUp[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + BATTLE_STRUCT->beforeLvlUp[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); + + gActiveBank = BATTLE_STRUCT->expGetterBank; + EmitExpBarUpdate(0, BATTLE_STRUCT->expGetterID, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + } + BATTLE_STRUCT->atk23StateTracker++; + } + break; + case 4: //lvl up if necessary + if (gBattleExecBuffer == 0) + { + gActiveBank = BATTLE_STRUCT->expGetterBank; + if (gBattleBufferB[gActiveBank][0] == 0x21 && gBattleBufferB[gActiveBank][1] == 0xB) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID) + sub_80324F8(&gPlayerParty[gActiveBank], gActiveBank); + + //buff poke name + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID; + gBattleTextBuff1[4] = 0xFF; + + //buff level + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 1; + gBattleTextBuff2[2] = 1; + gBattleTextBuff2[3] = 3; + gBattleTextBuff2[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); + gBattleTextBuff2[5] = 0xFF; + + b_movescr_stack_push_cursor(); + gLeveledUpInBattle |= gBitTable[BATTLE_STRUCT->expGetterID]; + gBattlescriptCurrInstr = BattleScript_LevelUp; + gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8)); + AdjustFriendship(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0); + + //update battle mon structure after level up + if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && gBattleMons[0].hp) + { + gBattleMons[0].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); + gBattleMons[0].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP); + gBattleMons[0].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); + gBattleMons[0].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); + gBattleMons[0].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); + gBattleMons[0].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + gBattleMons[0].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + gBattleMons[0].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); + } + //What is else if? Guess it's too advanced for GameFreak + if (gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gBattleMons[2].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); + gBattleMons[2].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP); + gBattleMons[2].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); + gBattleMons[2].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); + gBattleMons[2].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); + //There are no words...GF can't even copy&paste code properly + gBattleMons[2].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + gBattleMons[2].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD /*RIP*/); + gBattleMons[2].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + } + BATTLE_STRUCT->atk23StateTracker = 5; + } + else + { + gBattleMoveDamage = 0; + BATTLE_STRUCT->atk23StateTracker = 5; + } + } + break; + case 5: //looper increment + if (gBattleMoveDamage) //there is exp to give, goto case 3 that gives exp + BATTLE_STRUCT->atk23StateTracker = 3; + else + { + if (++BATTLE_STRUCT->expGetterID <= 5) + BATTLE_STRUCT->atk23StateTracker = 2; //loop again + else + BATTLE_STRUCT->atk23StateTracker = 6; //we're done + } + break; + case 6: //increment instruction + if (gBattleExecBuffer == 0) + { + //not even sure why gamefreak clears that data in this place + gBattleMons[gBank1].item = 0; + gBattleMons[gBank1].ability = 0; + gBattlescriptCurrInstr += 2; + } + break; + } +} +#else +__attribute__((naked)) +static void atk23_getexp(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + movs r6, 0\n\ + ldr r0, _0802004C @ =0x0201605c\n\ + mov r10, r0\n\ + ldr r0, _08020050 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r0, [r0, 0x1]\n\ + bl GetBattleBank\n\ + ldr r1, _08020054 @ =gBank1\n\ + strb r0, [r1]\n\ + ldr r2, _08020058 @ =gSentPokesToOpponent\n\ + movs r1, 0x2\n\ + ands r1, r0\n\ + lsls r1, 24\n\ + lsrs r1, 25\n\ + adds r1, r2\n\ + ldrb r1, [r1]\n\ + mov r8, r1\n\ + mov r0, r10\n\ + subs r0, 0x4D\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x6\n\ + bls _08020040\n\ + bl _08020996\n\ +_08020040:\n\ + lsls r0, 2\n\ + ldr r1, _0802005C @ =_08020060\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0802004C: .4byte 0x0201605c\n\ +_08020050: .4byte gBattlescriptCurrInstr\n\ +_08020054: .4byte gBank1\n\ +_08020058: .4byte gSentPokesToOpponent\n\ +_0802005C: .4byte _08020060\n\ + .align 2, 0\n\ +_08020060:\n\ + .4byte _0802007C\n\ + .4byte _080200FC\n\ + .4byte _08020216\n\ + .4byte _0802055C\n\ + .4byte _08020648\n\ + .4byte _08020910\n\ + .4byte _0802096C\n\ +_0802007C:\n\ + ldr r4, _080200A8 @ =gBank1\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _08020098\n\ + ldr r0, _080200AC @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _080200B0 @ =0x00000982\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080200BC\n\ +_08020098:\n\ + ldr r0, _080200B4 @ =0x02000000\n\ + ldr r1, _080200B8 @ =0x0001600f\n\ + adds r0, r1\n\ + movs r1, 0x6\n\ + strb r1, [r0]\n\ + bl _08020996\n\ + .align 2, 0\n\ +_080200A8: .4byte gBank1\n\ +_080200AC: .4byte gBattleTypeFlags\n\ +_080200B0: .4byte 0x00000982\n\ +_080200B4: .4byte 0x02000000\n\ +_080200B8: .4byte 0x0001600f\n\ +_080200BC:\n\ + ldr r2, _080200E8 @ =0x02000000\n\ + ldr r3, _080200EC @ =0x0001600f\n\ + adds r1, r2, r3\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + ldr r0, _080200F0 @ =0x00016113\n\ + adds r2, r0\n\ + ldr r3, _080200F4 @ =gBitTable\n\ + ldr r1, _080200F8 @ =gBattlePartyID\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + bl _08020996\n\ + .align 2, 0\n\ +_080200E8: .4byte 0x02000000\n\ +_080200EC: .4byte 0x0001600f\n\ +_080200F0: .4byte 0x00016113\n\ +_080200F4: .4byte gBitTable\n\ +_080200F8: .4byte gBattlePartyID\n\ +_080200FC:\n\ + movs r5, 0\n\ + movs r7, 0\n\ + ldr r1, _08020150 @ =gSaveBlock1 + 0x3688\n\ + mov r9, r1\n\ +_08020104:\n\ + movs r0, 0x64\n\ + adds r1, r7, 0\n\ + muls r1, r0\n\ + ldr r0, _08020154 @ =gPlayerParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0802016A\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0802016A\n\ + ldr r0, _08020158 @ =gBitTable\n\ + lsls r1, r7, 2\n\ + adds r1, r0\n\ + ldr r0, [r1]\n\ + mov r2, r8\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08020138\n\ + adds r5, 0x1\n\ +_08020138:\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xAF\n\ + bne _0802015C\n\ + mov r3, r9\n\ + ldrb r4, [r3]\n\ + b _08020164\n\ + .align 2, 0\n\ +_08020150: .4byte gSaveBlock1 + 0x3688\n\ +_08020154: .4byte gPlayerParty\n\ +_08020158: .4byte gBitTable\n\ +_0802015C:\n\ + bl ItemId_GetHoldEffect\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_08020164:\n\ + cmp r4, 0x19\n\ + bne _0802016A\n\ + adds r6, 0x1\n\ +_0802016A:\n\ + adds r7, 0x1\n\ + cmp r7, 0x5\n\ + ble _08020104\n\ + ldr r3, _080201D0 @ =gBaseStats\n\ + ldr r2, _080201D4 @ =gBattleMons\n\ + ldr r0, _080201D8 @ =gBank1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + adds r1, r2\n\ + ldrh r2, [r1]\n\ + lsls r0, r2, 3\n\ + subs r0, r2\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldrb r2, [r0, 0x9]\n\ + adds r1, 0x2A\n\ + ldrb r0, [r1]\n\ + muls r0, r2\n\ + movs r1, 0x7\n\ + bl __divsi3\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r6, 0\n\ + beq _080201E0\n\ + lsrs r4, r0, 17\n\ + adds r0, r4, 0\n\ + adds r1, r5, 0\n\ + bl __divsi3\n\ + mov r1, r10\n\ + strh r0, [r1]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bne _080201B6\n\ + movs r0, 0x1\n\ + strh r0, [r1]\n\ +_080201B6:\n\ + ldr r5, _080201DC @ =gExpShareExp\n\ + adds r0, r4, 0\n\ + adds r1, r6, 0\n\ + bl __divsi3\n\ + strh r0, [r5]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bne _080201FA\n\ + movs r0, 0x1\n\ + strh r0, [r5]\n\ + b _080201FA\n\ + .align 2, 0\n\ +_080201D0: .4byte gBaseStats\n\ +_080201D4: .4byte gBattleMons\n\ +_080201D8: .4byte gBank1\n\ +_080201DC: .4byte gExpShareExp\n\ +_080201E0:\n\ + adds r0, r1, 0\n\ + adds r1, r5, 0\n\ + bl __divsi3\n\ + mov r2, r10\n\ + strh r0, [r2]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bne _080201F6\n\ + movs r0, 0x1\n\ + strh r0, [r2]\n\ +_080201F6:\n\ + ldr r0, _08020248 @ =gExpShareExp\n\ + strh r6, [r0]\n\ +_080201FA:\n\ + ldr r1, _0802024C @ =0x02000000\n\ + ldr r3, _08020250 @ =0x0001600f\n\ + adds r2, r1, r3\n\ + ldrb r0, [r2]\n\ + adds r0, 0x1\n\ + movs r3, 0\n\ + strb r0, [r2]\n\ + ldr r2, _08020254 @ =0x00016018\n\ + adds r0, r1, r2\n\ + strb r3, [r0]\n\ + ldr r3, _08020258 @ =0x0001605f\n\ + adds r1, r3\n\ + mov r0, r8\n\ + strb r0, [r1]\n\ +_08020216:\n\ + ldr r0, _0802025C @ =gBattleExecBuffer\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _08020220\n\ + b _08020996\n\ +_08020220:\n\ + ldr r0, _0802024C @ =0x02000000\n\ + ldr r1, _08020254 @ =0x00016018\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08020260 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xAF\n\ + bne _0802026C\n\ + ldr r0, _08020264 @ =gSaveBlock1\n\ + ldr r2, _08020268 @ =0x00003688\n\ + adds r0, r2\n\ + ldrb r4, [r0]\n\ + b _08020274\n\ + .align 2, 0\n\ +_08020248: .4byte gExpShareExp\n\ +_0802024C: .4byte 0x02000000\n\ +_08020250: .4byte 0x0001600f\n\ +_08020254: .4byte 0x00016018\n\ +_08020258: .4byte 0x0001605f\n\ +_0802025C: .4byte gBattleExecBuffer\n\ +_08020260: .4byte gPlayerParty\n\ +_08020264: .4byte gSaveBlock1\n\ +_08020268: .4byte 0x00003688\n\ +_0802026C:\n\ + bl ItemId_GetHoldEffect\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_08020274:\n\ + ldr r5, _08020294 @ =0x02000000\n\ + cmp r4, 0x19\n\ + beq _080202A0\n\ + ldr r3, _08020298 @ =0x0001605f\n\ + adds r1, r5, r3\n\ + ldrb r0, [r1]\n\ + movs r2, 0x1\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + bne _080202A0\n\ + lsrs r0, 1\n\ + strb r0, [r1]\n\ + ldr r0, _0802029C @ =0x0001600f\n\ + adds r1, r5, r0\n\ + b _080202C8\n\ + .align 2, 0\n\ +_08020294: .4byte 0x02000000\n\ +_08020298: .4byte 0x0001605f\n\ +_0802029C: .4byte 0x0001600f\n\ +_080202A0:\n\ + ldr r1, _080202D4 @ =0x00016018\n\ + adds r0, r5, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _080202D8 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x64\n\ + bne _080202E8\n\ + ldr r2, _080202DC @ =0x0001605f\n\ + adds r1, r5, r2\n\ + ldrb r0, [r1]\n\ + lsrs r0, 1\n\ + movs r2, 0\n\ + strb r0, [r1]\n\ + ldr r3, _080202E0 @ =0x0001600f\n\ + adds r1, r5, r3\n\ +_080202C8:\n\ + movs r0, 0x5\n\ + strb r0, [r1]\n\ + ldr r0, _080202E4 @ =gBattleMoveDamage\n\ + str r2, [r0]\n\ + b _08020996\n\ + .align 2, 0\n\ +_080202D4: .4byte 0x00016018\n\ +_080202D8: .4byte gPlayerParty\n\ +_080202DC: .4byte 0x0001605f\n\ +_080202E0: .4byte 0x0001600f\n\ +_080202E4: .4byte gBattleMoveDamage\n\ +_080202E8:\n\ + ldr r0, _0802034C @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08020316\n\ + ldr r0, _08020350 @ =gBattleMons\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + beq _08020316\n\ + ldr r0, _08020354 @ =0x0001601b\n\ + adds r5, r0\n\ + ldrb r0, [r5]\n\ + cmp r0, 0\n\ + bne _08020316\n\ + bl BattleMusicStop\n\ + ldr r0, _08020358 @ =0x00000161\n\ + bl PlayBGM\n\ + ldrb r0, [r5]\n\ + adds r0, 0x1\n\ + strb r0, [r5]\n\ +_08020316:\n\ + ldr r5, _0802035C @ =0x02000000\n\ + ldr r1, _08020360 @ =0x00016018\n\ + adds r0, r5, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08020364 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _08020332\n\ + b _0802051E\n\ +_08020332:\n\ + ldr r2, _08020368 @ =0x0001605f\n\ + adds r0, r5, r2\n\ + ldrb r0, [r0]\n\ + movs r3, 0x1\n\ + ands r3, r0\n\ + cmp r3, 0\n\ + beq _08020370\n\ + ldr r1, _0802036C @ =gBattleMoveDamage\n\ + mov r3, r10\n\ + ldrh r0, [r3]\n\ + str r0, [r1]\n\ + mov r8, r1\n\ + b _08020376\n\ + .align 2, 0\n\ +_0802034C: .4byte gBattleTypeFlags\n\ +_08020350: .4byte gBattleMons\n\ +_08020354: .4byte 0x0001601b\n\ +_08020358: .4byte 0x00000161\n\ +_0802035C: .4byte 0x02000000\n\ +_08020360: .4byte 0x00016018\n\ +_08020364: .4byte gPlayerParty\n\ +_08020368: .4byte 0x0001605f\n\ +_0802036C: .4byte gBattleMoveDamage\n\ +_08020370:\n\ + ldr r0, _080203EC @ =gBattleMoveDamage\n\ + str r3, [r0]\n\ + mov r8, r0\n\ +_08020376:\n\ + cmp r4, 0x19\n\ + bne _08020386\n\ + ldr r0, _080203F0 @ =gExpShareExp\n\ + ldrh r1, [r0]\n\ + mov r2, r8\n\ + ldr r0, [r2]\n\ + adds r0, r1\n\ + str r0, [r2]\n\ +_08020386:\n\ + cmp r4, 0x28\n\ + bne _0802039C\n\ + mov r3, r8\n\ + ldr r1, [r3]\n\ + movs r0, 0x96\n\ + muls r0, r1\n\ + movs r1, 0x64\n\ + bl __divsi3\n\ + mov r1, r8\n\ + str r0, [r1]\n\ +_0802039C:\n\ + ldr r0, _080203F4 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080203B8\n\ + ldr r4, _080203EC @ =gBattleMoveDamage\n\ + ldr r1, [r4]\n\ + movs r0, 0x96\n\ + muls r0, r1\n\ + movs r1, 0x64\n\ + bl __divsi3\n\ + str r0, [r4]\n\ +_080203B8:\n\ + ldr r0, _080203F8 @ =0x02000000\n\ + ldr r2, _080203FC @ =0x00016018\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08020400 @ =gPlayerParty\n\ + adds r0, r1\n\ + bl IsTradedMon\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08020404\n\ + ldr r4, _080203EC @ =gBattleMoveDamage\n\ + ldr r1, [r4]\n\ + movs r0, 0x96\n\ + muls r0, r1\n\ + movs r1, 0x64\n\ + bl __divsi3\n\ + str r0, [r4]\n\ + movs r7, 0xA5\n\ + lsls r7, 1\n\ + mov r8, r4\n\ + b _0802040A\n\ + .align 2, 0\n\ +_080203EC: .4byte gBattleMoveDamage\n\ +_080203F0: .4byte gExpShareExp\n\ +_080203F4: .4byte gBattleTypeFlags\n\ +_080203F8: .4byte 0x02000000\n\ +_080203FC: .4byte 0x00016018\n\ +_08020400: .4byte gPlayerParty\n\ +_08020404:\n\ + ldr r7, _0802043C @ =0x00000149\n\ + ldr r3, _08020440 @ =gBattleMoveDamage\n\ + mov r8, r3\n\ +_0802040A:\n\ + ldr r0, _08020444 @ =gBattleTypeFlags\n\ + ldrh r0, [r0]\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _08020488\n\ + ldr r1, _08020448 @ =gBattlePartyID\n\ + ldr r0, _0802044C @ =0x02000000\n\ + ldr r3, _08020450 @ =0x00016018\n\ + adds r2, r0, r3\n\ + ldrh r1, [r1, 0x4]\n\ + adds r5, r0, 0\n\ + ldr r4, _08020454 @ =gBitTable\n\ + ldr r3, _08020458 @ =gAbsentBankFlags\n\ + ldrb r2, [r2]\n\ + cmp r1, r2\n\ + bne _08020460\n\ + ldrb r1, [r3]\n\ + ldr r0, [r4, 0x8]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08020460\n\ + ldr r0, _0802045C @ =0x000160a2\n\ + adds r1, r5, r0\n\ + b _0802047C\n\ + .align 2, 0\n\ +_0802043C: .4byte 0x00000149\n\ +_08020440: .4byte gBattleMoveDamage\n\ +_08020444: .4byte gBattleTypeFlags\n\ +_08020448: .4byte gBattlePartyID\n\ +_0802044C: .4byte 0x02000000\n\ +_08020450: .4byte 0x00016018\n\ +_08020454: .4byte gBitTable\n\ +_08020458: .4byte gAbsentBankFlags\n\ +_0802045C: .4byte 0x000160a2\n\ +_08020460:\n\ + ldrb r2, [r3]\n\ + ldr r0, [r4]\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + bne _08020478\n\ + ldr r1, _08020474 @ =0x000160a2\n\ + adds r0, r5, r1\n\ + strb r2, [r0]\n\ + b _08020490\n\ + .align 2, 0\n\ +_08020474: .4byte 0x000160a2\n\ +_08020478:\n\ + ldr r2, _08020484 @ =0x000160a2\n\ + adds r1, r5, r2\n\ +_0802047C:\n\ + movs r0, 0x2\n\ + strb r0, [r1]\n\ + b _08020490\n\ + .align 2, 0\n\ +_08020484: .4byte 0x000160a2\n\ +_08020488:\n\ + ldr r0, _08020530 @ =0x02000000\n\ + ldr r3, _08020534 @ =0x000160a2\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ +_08020490:\n\ + ldr r1, _08020538 @ =gBattleTextBuff1\n\ + movs r3, 0\n\ + movs r2, 0xFD\n\ + strb r2, [r1]\n\ + movs r5, 0x4\n\ + strb r5, [r1, 0x1]\n\ + ldr r4, _08020530 @ =0x02000000\n\ + ldr r0, _08020534 @ =0x000160a2\n\ + adds r6, r4, r0\n\ + ldrb r0, [r6]\n\ + strb r0, [r1, 0x2]\n\ + ldr r0, _0802053C @ =0x00016018\n\ + adds r4, r0\n\ + ldrb r0, [r4]\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _08020540 @ =gBattleTextBuff2\n\ + strb r2, [r1]\n\ + strb r3, [r1, 0x1]\n\ + strb r7, [r1, 0x2]\n\ + movs r3, 0xFF\n\ + lsls r3, 8\n\ + ands r7, r3\n\ + asrs r0, r7, 8\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _08020544 @ =gBattleTextBuff3\n\ + strb r2, [r1]\n\ + movs r0, 0x1\n\ + strb r0, [r1, 0x1]\n\ + strb r5, [r1, 0x2]\n\ + movs r0, 0x5\n\ + strb r0, [r1, 0x3]\n\ + mov r0, r8\n\ + ldr r2, [r0]\n\ + strb r2, [r1, 0x4]\n\ + adds r0, r2, 0\n\ + ands r0, r3\n\ + asrs r0, 8\n\ + strb r0, [r1, 0x5]\n\ + movs r0, 0xFF\n\ + lsls r0, 16\n\ + ands r0, r2\n\ + asrs r0, 16\n\ + strb r0, [r1, 0x6]\n\ + lsrs r2, 24\n\ + strb r2, [r1, 0x7]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r1, 0x8]\n\ + ldrb r1, [r6]\n\ + movs r0, 0xD\n\ + bl PrepareStringBattle\n\ + ldrb r1, [r4]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08020548 @ =gPlayerParty\n\ + adds r0, r1\n\ + ldr r3, _0802054C @ =gBattleMons\n\ + ldr r1, _08020550 @ =gBank1\n\ + ldrb r2, [r1]\n\ + movs r1, 0x58\n\ + muls r1, r2\n\ + adds r1, r3\n\ + ldrh r1, [r1]\n\ + bl MonGainEVs\n\ +_0802051E:\n\ + ldr r1, _08020530 @ =0x02000000\n\ + ldr r3, _08020554 @ =0x0001605f\n\ + adds r2, r1, r3\n\ + ldrb r0, [r2]\n\ + lsrs r0, 1\n\ + strb r0, [r2]\n\ + ldr r0, _08020558 @ =0x0001600f\n\ + adds r1, r0\n\ + b _08020618\n\ + .align 2, 0\n\ +_08020530: .4byte 0x02000000\n\ +_08020534: .4byte 0x000160a2\n\ +_08020538: .4byte gBattleTextBuff1\n\ +_0802053C: .4byte 0x00016018\n\ +_08020540: .4byte gBattleTextBuff2\n\ +_08020544: .4byte gBattleTextBuff3\n\ +_08020548: .4byte gPlayerParty\n\ +_0802054C: .4byte gBattleMons\n\ +_08020550: .4byte gBank1\n\ +_08020554: .4byte 0x0001605f\n\ +_08020558: .4byte 0x0001600f\n\ +_0802055C:\n\ + ldr r0, _08020620 @ =gBattleExecBuffer\n\ + ldr r2, [r0]\n\ + cmp r2, 0\n\ + beq _08020566\n\ + b _08020996\n\ +_08020566:\n\ + ldr r1, _08020624 @ =gBattleBufferB\n\ + ldr r4, _08020628 @ =0x02000000\n\ + ldr r3, _0802062C @ =0x000160a2\n\ + adds r3, r4\n\ + mov r8, r3\n\ + ldrb r0, [r3]\n\ + lsls r0, 9\n\ + adds r0, r1\n\ + strb r2, [r0]\n\ + ldr r0, _08020630 @ =0x00016018\n\ + adds r7, r4, r0\n\ + ldrb r0, [r7]\n\ + movs r6, 0x64\n\ + muls r0, r6\n\ + ldr r5, _08020634 @ =gPlayerParty\n\ + adds r0, r5\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08020612\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x64\n\ + beq _08020612\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3A\n\ + bl GetMonData\n\ + ldr r1, _08020638 @ =0x00017180\n\ + adds r4, r1\n\ + strh r0, [r4]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3B\n\ + bl GetMonData\n\ + strh r0, [r4, 0x2]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3C\n\ + bl GetMonData\n\ + strh r0, [r4, 0x4]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + strh r0, [r4, 0x6]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3E\n\ + bl GetMonData\n\ + strh r0, [r4, 0x8]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3F\n\ + bl GetMonData\n\ + strh r0, [r4, 0xA]\n\ + ldr r4, _0802063C @ =gActiveBank\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + strb r0, [r4]\n\ + ldrb r1, [r7]\n\ + ldr r0, _08020640 @ =gBattleMoveDamage\n\ + ldrh r2, [r0]\n\ + movs r0, 0\n\ + bl EmitExpBarUpdate\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08020612:\n\ + ldr r1, _08020628 @ =0x02000000\n\ + ldr r3, _08020644 @ =0x0001600f\n\ + adds r1, r3\n\ +_08020618:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020620: .4byte gBattleExecBuffer\n\ +_08020624: .4byte gBattleBufferB\n\ +_08020628: .4byte 0x02000000\n\ +_0802062C: .4byte 0x000160a2\n\ +_08020630: .4byte 0x00016018\n\ +_08020634: .4byte gPlayerParty\n\ +_08020638: .4byte 0x00017180\n\ +_0802063C: .4byte gActiveBank\n\ +_08020640: .4byte gBattleMoveDamage\n\ +_08020644: .4byte 0x0001600f\n\ +_08020648:\n\ + ldr r0, _080208AC @ =gBattleExecBuffer\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _08020652\n\ + b _08020996\n\ +_08020652:\n\ + ldr r1, _080208B0 @ =gActiveBank\n\ + ldr r4, _080208B4 @ =0x02000000\n\ + ldr r2, _080208B8 @ =0x000160a2\n\ + adds r0, r4, r2\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldr r2, _080208BC @ =gBattleBufferB\n\ + ldrb r3, [r1]\n\ + lsls r1, r3, 9\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x21\n\ + beq _0802066E\n\ + b _080208F0\n\ +_0802066E:\n\ + adds r0, r2, 0x1\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xB\n\ + beq _0802067A\n\ + b _080208F0\n\ +_0802067A:\n\ + ldr r0, _080208C0 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080206A8\n\ + ldr r1, _080208C4 @ =gBattlePartyID\n\ + lsls r0, r3, 1\n\ + adds r2, r0, r1\n\ + ldr r0, _080208C8 @ =0x00016018\n\ + adds r1, r4, r0\n\ + ldrh r0, [r2]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bne _080206A8\n\ + adds r1, r0, 0\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _080208CC @ =gPlayerParty\n\ + adds r0, r1\n\ + adds r1, r3, 0\n\ + bl sub_80324F8\n\ +_080206A8:\n\ + ldr r1, _080208D0 @ =gBattleTextBuff1\n\ + movs r2, 0xFD\n\ + strb r2, [r1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x1]\n\ + ldr r5, _080208B0 @ =gActiveBank\n\ + ldrb r0, [r5]\n\ + strb r0, [r1, 0x2]\n\ + ldr r0, _080208B4 @ =0x02000000\n\ + ldr r3, _080208C8 @ =0x00016018\n\ + adds r6, r0, r3\n\ + ldrb r0, [r6]\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r4, _080208D4 @ =gBattleTextBuff2\n\ + strb r2, [r4]\n\ + movs r0, 0x1\n\ + strb r0, [r4, 0x1]\n\ + strb r0, [r4, 0x2]\n\ + movs r0, 0x3\n\ + strb r0, [r4, 0x3]\n\ + ldrb r0, [r6]\n\ + movs r1, 0x64\n\ + mov r8, r1\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + ldr r7, _080208CC @ =gPlayerParty\n\ + adds r0, r7\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + strb r0, [r4, 0x4]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r4, 0x5]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r2, _080208D8 @ =gLeveledUpInBattle\n\ + ldr r1, _080208DC @ =gBitTable\n\ + ldrb r0, [r6]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r1, _080208E0 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080208E4 @ =BattleScript_LevelUp\n\ + str r0, [r1]\n\ + ldr r4, _080208E8 @ =gBattleMoveDamage\n\ + ldr r2, _080208BC @ =gBattleBufferB\n\ + ldrb r1, [r5]\n\ + lsls r1, 9\n\ + adds r0, r2, 0x2\n\ + adds r0, r1, r0\n\ + ldrb r3, [r0]\n\ + adds r2, 0x3\n\ + adds r1, r2\n\ + ldrb r0, [r1]\n\ + lsls r0, 8\n\ + orrs r3, r0\n\ + str r3, [r4]\n\ + ldrb r0, [r6]\n\ + mov r3, r8\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r0, r7\n\ + movs r1, 0\n\ + bl AdjustFriendship\n\ + ldr r0, _080208C4 @ =gBattlePartyID\n\ + ldrb r1, [r6]\n\ + ldrh r0, [r0]\n\ + cmp r0, r1\n\ + bne _080207EC\n\ + ldr r4, _080208EC @ =gBattleMons\n\ + ldrh r0, [r4, 0x28]\n\ + cmp r0, 0\n\ + beq _080207EC\n\ + mov r0, r8\n\ + muls r0, r1\n\ + adds r0, r7\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + adds r1, r4, 0\n\ + adds r1, 0x2A\n\ + strb r0, [r1]\n\ + ldrb r0, [r6]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, r7\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + strh r0, [r4, 0x28]\n\ + ldrb r0, [r6]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r0, r7\n\ + movs r1, 0x3A\n\ + bl GetMonData\n\ + strh r0, [r4, 0x2C]\n\ + ldrb r0, [r6]\n\ + mov r3, r8\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r0, r7\n\ + movs r1, 0x3B\n\ + bl GetMonData\n\ + strh r0, [r4, 0x2]\n\ + ldrb r0, [r6]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, r7\n\ + movs r1, 0x3C\n\ + bl GetMonData\n\ + strh r0, [r4, 0x4]\n\ + ldrb r0, [r6]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r0, r7\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + strh r0, [r4, 0x6]\n\ + ldrb r0, [r6]\n\ + mov r3, r8\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r0, r7\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + strh r0, [r4, 0x6]\n\ + ldrb r0, [r6]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, r7\n\ + movs r1, 0x3E\n\ + bl GetMonData\n\ + strh r0, [r4, 0x8]\n\ + ldrb r0, [r6]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r0, r7\n\ + movs r1, 0x3F\n\ + bl GetMonData\n\ + strh r0, [r4, 0xA]\n\ +_080207EC:\n\ + ldr r0, _080208C4 @ =gBattlePartyID\n\ + ldr r1, _080208B4 @ =0x02000000\n\ + ldr r3, _080208C8 @ =0x00016018\n\ + adds r7, r1, r3\n\ + ldrb r2, [r7]\n\ + ldrh r0, [r0, 0x4]\n\ + cmp r0, r2\n\ + bne _080208F6\n\ + ldr r6, _080208EC @ =gBattleMons\n\ + movs r0, 0xD8\n\ + adds r0, r6\n\ + mov r8, r0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _080208F6\n\ + ldr r0, _080208C0 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080208F6\n\ + movs r5, 0x64\n\ + adds r0, r2, 0\n\ + muls r0, r5\n\ + ldr r4, _080208CC @ =gPlayerParty\n\ + adds r0, r4\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xDA\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3A\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xDC\n\ + strh r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3B\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xB2\n\ + strh r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3C\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xB4\n\ + strh r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + movs r2, 0xB6\n\ + adds r2, r6\n\ + mov r8, r2\n\ + strh r0, [r2]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + mov r3, r8\n\ + strh r0, [r3]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3E\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xB8\n\ + strh r0, [r1]\n\ + b _080208F6\n\ + .align 2, 0\n\ +_080208AC: .4byte gBattleExecBuffer\n\ +_080208B0: .4byte gActiveBank\n\ +_080208B4: .4byte 0x02000000\n\ +_080208B8: .4byte 0x000160a2\n\ +_080208BC: .4byte gBattleBufferB\n\ +_080208C0: .4byte gBattleTypeFlags\n\ +_080208C4: .4byte gBattlePartyID\n\ +_080208C8: .4byte 0x00016018\n\ +_080208CC: .4byte gPlayerParty\n\ +_080208D0: .4byte gBattleTextBuff1\n\ +_080208D4: .4byte gBattleTextBuff2\n\ +_080208D8: .4byte gLeveledUpInBattle\n\ +_080208DC: .4byte gBitTable\n\ +_080208E0: .4byte gBattlescriptCurrInstr\n\ +_080208E4: .4byte BattleScript_LevelUp\n\ +_080208E8: .4byte gBattleMoveDamage\n\ +_080208EC: .4byte gBattleMons\n\ +_080208F0:\n\ + ldr r1, _08020904 @ =gBattleMoveDamage\n\ + movs r0, 0\n\ + str r0, [r1]\n\ +_080208F6:\n\ + ldr r0, _08020908 @ =0x02000000\n\ + ldr r1, _0802090C @ =0x0001600f\n\ + adds r0, r1\n\ + movs r1, 0x5\n\ + strb r1, [r0]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020904: .4byte gBattleMoveDamage\n\ +_08020908: .4byte 0x02000000\n\ +_0802090C: .4byte 0x0001600f\n\ +_08020910:\n\ + ldr r0, _08020924 @ =gBattleMoveDamage\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _08020930\n\ + ldr r0, _08020928 @ =0x02000000\n\ + ldr r2, _0802092C @ =0x0001600f\n\ + adds r0, r2\n\ + movs r1, 0x3\n\ + strb r1, [r0]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020924: .4byte gBattleMoveDamage\n\ +_08020928: .4byte 0x02000000\n\ +_0802092C: .4byte 0x0001600f\n\ +_08020930:\n\ + ldr r2, _08020950 @ =0x02000000\n\ + ldr r3, _08020954 @ =0x00016018\n\ + adds r1, r2, r3\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x5\n\ + bhi _0802095C\n\ + ldr r0, _08020958 @ =0x0001600f\n\ + adds r1, r2, r0\n\ + movs r0, 0x2\n\ + strb r0, [r1]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020950: .4byte 0x02000000\n\ +_08020954: .4byte 0x00016018\n\ +_08020958: .4byte 0x0001600f\n\ +_0802095C:\n\ + ldr r3, _08020968 @ =0x0001600f\n\ + adds r1, r2, r3\n\ + movs r0, 0x6\n\ + strb r0, [r1]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020968: .4byte 0x0001600f\n\ +_0802096C:\n\ + ldr r0, _080209A4 @ =gBattleExecBuffer\n\ + ldr r5, [r0]\n\ + cmp r5, 0\n\ + bne _08020996\n\ + ldr r4, _080209A8 @ =gBattleMons\n\ + ldr r2, _080209AC @ =gBank1\n\ + ldrb r0, [r2]\n\ + movs r1, 0x58\n\ + muls r0, r1\n\ + adds r0, r4\n\ + movs r3, 0\n\ + strh r5, [r0, 0x2E]\n\ + ldrb r0, [r2]\n\ + muls r0, r1\n\ + adds r0, r4\n\ + adds r0, 0x20\n\ + strb r3, [r0]\n\ + ldr r1, _080209B0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x2\n\ + str r0, [r1]\n\ +_08020996:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080209A4: .4byte gBattleExecBuffer\n\ +_080209A8: .4byte gBattleMons\n\ +_080209AC: .4byte gBank1\n\ +_080209B0: .4byte gBattlescriptCurrInstr\n\ + .syntax divided\n"); +} + +#endif // NONMATCHING + +#ifdef NONMATCHING +static void atk24(void) +{ + u16 HP_count = 0; + int i; + if (gBattleExecBuffer) {return;} + + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP); + } + + if (HP_count == 0) + gBattleOutcome |= BATTLE_LOST; + + for (HP_count = 0, i = 0; i < 6; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG)) + HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP); + } + + if (!HP_count) + gBattleOutcome |= BATTLE_WON; + + if (!gBattleOutcome && (gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + register int found1 asm("r2"); + register int found2 asm("r4"); + + //I can't for the love of god decompile that part + + for (found1 = 0, i = 0; i < gNoOfAllBanks; i += 2) + { + if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40) + found1++; + } + + for (found2 = 0, i = 1; i < gNoOfAllBanks; i += 2) + { + if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40) + found2++; + } + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (found2 + found1 > 1) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + } + else + { + if (found2 != 0 && found1 != 0) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + } + } + else + gBattlescriptCurrInstr += 5; + +} +#else +__attribute__((naked)) +static void atk24(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + movs r6, 0\n\ + ldr r0, _08020AF0 @ =gBattleExecBuffer\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _080209C6\n\ + b _08020B46\n\ +_080209C6:\n\ + movs r5, 0\n\ +_080209C8:\n\ + movs r0, 0x64\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, _08020AF4 @ =gPlayerParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _080209F8\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _080209F8\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + adds r0, r6, r0\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ +_080209F8:\n\ + adds r5, 0x1\n\ + cmp r5, 0x5\n\ + ble _080209C8\n\ + cmp r6, 0\n\ + bne _08020A0C\n\ + ldr r0, _08020AF8 @ =gBattleOutcome\n\ + ldrb r1, [r0]\n\ + movs r2, 0x2\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_08020A0C:\n\ + movs r6, 0\n\ + movs r5, 0\n\ +_08020A10:\n\ + movs r0, 0x64\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, _08020AFC @ =gEnemyParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08020A40\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _08020A40\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + adds r0, r6, r0\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ +_08020A40:\n\ + adds r5, 0x1\n\ + cmp r5, 0x5\n\ + ble _08020A10\n\ + ldr r2, _08020AF8 @ =gBattleOutcome\n\ + cmp r6, 0\n\ + bne _08020A54\n\ + ldrb r0, [r2]\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ +_08020A54:\n\ + ldrb r0, [r2]\n\ + cmp r0, 0\n\ + bne _08020B3E\n\ + ldr r2, _08020B00 @ =gBattleTypeFlags\n\ + ldrh r1, [r2]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + mov r8, r2\n\ + cmp r0, 0\n\ + beq _08020B3E\n\ + movs r2, 0\n\ + movs r5, 0\n\ + ldr r0, _08020B04 @ =gNoOfAllBanks\n\ + ldrb r3, [r0]\n\ + mov r12, r0\n\ + ldr r7, _08020B08 @ =gBattlescriptCurrInstr\n\ + cmp r2, r3\n\ + bge _08020AA0\n\ + ldr r0, _08020B0C @ =gHitMarker\n\ + movs r1, 0x80\n\ + lsls r1, 21\n\ + ldr r6, [r0]\n\ + adds r4, r3, 0\n\ + ldr r3, _08020B10 @ =gSpecialStatuses\n\ +_08020A84:\n\ + adds r0, r1, 0\n\ + lsls r0, r5\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08020A98\n\ + ldrb r0, [r3]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08020A98\n\ + adds r2, 0x1\n\ +_08020A98:\n\ + adds r3, 0x28\n\ + adds r5, 0x2\n\ + cmp r5, r4\n\ + blt _08020A84\n\ +_08020AA0:\n\ + movs r4, 0\n\ + movs r5, 0x1\n\ + mov r0, r12\n\ + ldrb r3, [r0]\n\ + cmp r5, r3\n\ + bge _08020ADA\n\ + ldr r0, _08020B0C @ =gHitMarker\n\ + movs r1, 0x80\n\ + lsls r1, 21\n\ + mov r12, r1\n\ + ldr r1, [r0]\n\ + ldr r0, _08020B10 @ =gSpecialStatuses\n\ + adds r6, r3, 0\n\ + adds r3, r0, 0\n\ + adds r3, 0x14\n\ +_08020ABE:\n\ + mov r0, r12\n\ + lsls r0, r5\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08020AD2\n\ + ldrb r0, [r3]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08020AD2\n\ + adds r4, 0x1\n\ +_08020AD2:\n\ + adds r3, 0x28\n\ + adds r5, 0x2\n\ + cmp r5, r6\n\ + blt _08020ABE\n\ +_08020ADA:\n\ + mov r0, r8\n\ + ldrh r1, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08020B14\n\ + adds r0, r4, r2\n\ + cmp r0, 0x1\n\ + bgt _08020B1C\n\ + b _08020B36\n\ + .align 2, 0\n\ +_08020AF0: .4byte gBattleExecBuffer\n\ +_08020AF4: .4byte gPlayerParty\n\ +_08020AF8: .4byte gBattleOutcome\n\ +_08020AFC: .4byte gEnemyParty\n\ +_08020B00: .4byte gBattleTypeFlags\n\ +_08020B04: .4byte gNoOfAllBanks\n\ +_08020B08: .4byte gBattlescriptCurrInstr\n\ +_08020B0C: .4byte gHitMarker\n\ +_08020B10: .4byte gSpecialStatuses\n\ +_08020B14:\n\ + cmp r4, 0\n\ + beq _08020B36\n\ + cmp r2, 0\n\ + beq _08020B36\n\ +_08020B1C:\n\ + ldr r2, [r7]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + adds r1, r0\n\ + str r1, [r7]\n\ + b _08020B46\n\ +_08020B36:\n\ + ldr r0, [r7]\n\ + adds r0, 0x5\n\ + str r0, [r7]\n\ + b _08020B46\n\ +_08020B3E:\n\ + ldr r1, _08020B50 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ +_08020B46:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08020B50: .4byte gBattlescriptCurrInstr\n\ + .syntax divided\n"); +} +#endif + +static void MoveValuesCleanUp(void) +{ + gBattleMoveFlags = 0; + BATTLE_STRUCT->dmgMultiplier = 1; + gCritMultiplier = 1; + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattleCommunication[6] = 0; + gHitMarker &= ~(HITMARKER_DESTINYBOND); + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); +} + +static void atk25_move_values_cleanup(void) +{ + MoveValuesCleanUp(); + gBattlescriptCurrInstr += 1; +} + +static void atk26_set_multihit(void) +{ + gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr += 2; +} + +static void atk27_decrement_multihit(void) +{ + if (--gMultiHitCounter == 0) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atk28_goto(void) +{ + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atk29_jumpifbyte(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u8* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u8 value = BSScriptRead8(gBattlescriptCurrInstr + 6); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr += 11; + switch (caseID) + { + case CMP_EQUAL: + if (*ptr == value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NOT_EQUAL: + if (*ptr != value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_GREATER_THAN: + if (*ptr > value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_LESS_THAN: + if (*ptr < value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_COMMON_BITS: + if (*ptr & value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NO_COMMON_BITS: + if (!(*ptr & value)) + gBattlescriptCurrInstr = jump_loc; + break; + } +} + +static void atk2A_jumpifhalfword(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u16* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 6); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 8); + gBattlescriptCurrInstr += 12; + switch (caseID) + { + case CMP_EQUAL: + if (*ptr == value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NOT_EQUAL: + if (*ptr != value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_GREATER_THAN: + if (*ptr > value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_LESS_THAN: + if (*ptr < value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_COMMON_BITS: + if (*ptr & value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NO_COMMON_BITS: + if (!(*ptr & value)) + gBattlescriptCurrInstr = jump_loc; + break; + } +} + +static void atk2B_jumpifword(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u32* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u32 value = BSScriptRead32(gBattlescriptCurrInstr + 6); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + gBattlescriptCurrInstr += 14; + switch (caseID) + { + case CMP_EQUAL: + if (*ptr == value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NOT_EQUAL: + if (*ptr != value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_GREATER_THAN: + if (*ptr > value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_LESS_THAN: + if (*ptr < value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_COMMON_BITS: + if (*ptr & value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NO_COMMON_BITS: + if (!(*ptr & value)) + gBattlescriptCurrInstr = jump_loc; + break; + } +} + +static void atk2C_jumpifarrayequal(void) +{ + //Mem1, Mem2, Size, Jump Loc + u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + + u8 i; + for (i = 0; i < size; i++) + { + if (*mem1 != *mem2) + { + gBattlescriptCurrInstr += 14; + break; + } + mem1++, mem2++; + } + + if (i == size) + gBattlescriptCurrInstr = jump_loc; +} + +static void atk2D_jumpifarraynotequal(void) +{ + //Mem1, Mem2, Size, Jump Loc + u8 equal_bytes = 0; + u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + + u8 i; + for (i = 0; i < size; i++) + { + if (*mem1 == *mem2) + { + equal_bytes++; + } + mem1++, mem2++; + } + + if (equal_bytes != size) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 14; +} + +static void atk2E_setbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem = BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +static void atk2F_addbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem += BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +static void atk30_subbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem -= BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +static void atk31_copyarray(void) +{ + u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + s32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + + s32 i; + for (i = 0; i < size; i++) + { + mem1[i] = mem2[i]; + } + + gBattlescriptCurrInstr += 10; +} + +static void atk32_copyarray_withindex(void) +{ + u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + u8* index = BS2ScriptReadPtr(gBattlescriptCurrInstr + 9); + s32 size = BSScriptRead8(gBattlescriptCurrInstr + 13); + + s32 i; + for (i = 0; i < size; i++) + { + mem1[i] = mem2[i + *index]; + } + + gBattlescriptCurrInstr += 14; +} + +static void atk33_orbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem |= BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +static void atk34_orhalfword(void) +{ + u16* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + + *mem |= val; + gBattlescriptCurrInstr += 7; +} + +static void atk35_orword(void) +{ + u32* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5); + + *mem |= val; + gBattlescriptCurrInstr += 9; +} + +static void atk36_bicbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem &= ~(BSScriptRead8(gBattlescriptCurrInstr + 5)); + gBattlescriptCurrInstr += 6; +} + +static void atk37_bichalfword(void) +{ + u16* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + + *mem &= ~val; + gBattlescriptCurrInstr += 7; +} + +static void atk38_bicword(void) +{ + u32* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5); + + *mem &= ~val; + gBattlescriptCurrInstr += 9; +} + +static void atk39_pause(void) +{ + if (gBattleExecBuffer == 0) + { + u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= value) + { + gPauseCounterBattle = 0; + gBattlescriptCurrInstr += 3; + } + } +} + +static void atk3A_waitstate(void) +{ + if (gBattleExecBuffer == 0) + gBattlescriptCurrInstr++; +} + +static void atk3B_healthbar_update(void) +{ + if (!BSScriptRead8(gBattlescriptCurrInstr + 1)) + gActiveBank = gBankTarget; + else + gActiveBank = gBankAttacker; + + EmitHealthBarUpdate(0, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk3C_return(void) +{ + b_movescr_stack_pop_cursor(); +} + +static void atk3D_end(void) +{ + gBattleMoveFlags = 0; + gActiveBank = 0; + gFightStateTracker = 0xB; +} + +static void atk3E_end2(void) +{ + //not much difference between this and 3D. It's more apparent in Emerald + gActiveBank = 0; + gFightStateTracker = 0xB; +} + +static void atk3F_end3(void) //pops the main function stack +{ + b_movescr_stack_pop_cursor(); + if (B_FUNCTION_STACK->size) + B_FUNCTION_STACK->size--; + gBattleMainFunc = B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size]; +} + +static void atk41_call(void) +{ + b_movescr_stack_push(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atk42_jumpiftype2(void) //u8 bank, u8 type, *ptr +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type1 || BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type2) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; +} + +static void atk43_jumpifabilitypresent(void) +{ + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, BSScriptRead8(gBattlescriptCurrInstr + 1), 0, 0)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +static void atk44(void) +{ + unk_2000000[gBankAttacker + 0x16060] = 1; +} + +#ifdef NONMATCHING + +static void atk45_playanimation(void) +{ + #define ANIMATION_ID BSScriptRead8(gBattlescriptCurrInstr + 2) + #define ARGUMENT (u16*) BS2ScriptReadPtr(gBattlescriptCurrInstr + 3) + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if ( ANIMATION_ID == 1 || ANIMATION_ID == 0x11 || ANIMATION_ID == 2) { + EmitBattleAnimation(0, ANIMATION_ID, *argument); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 7; + } else if (gHitMarker & HITMARKER_NO_ANIMATIONS) { + b_movescr_stack_push(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = BattleScript_Pausex20; + } else { + if (((ANIMATION_ID - 10) > 3 && gStatuses3[gActiveBank] & (STATUS3_SEMI_INVULNERABLE))) { + gBattlescriptCurrInstr += 7; + } else { + EmitBattleAnimation(0, ANIMATION_ID, *argument); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 7; + } + } +} + +#else +__attribute__((naked)) +static void atk45_playanimation(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r5, _08021444 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r5]\n\ + ldrb r0, [r0, 0x1]\n\ + bl GetBattleBank\n\ + ldr r6, _08021448 @ =gActiveBank\n\ + strb r0, [r6]\n\ + ldr r2, [r5]\n\ + ldrb r1, [r2, 0x3]\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x5]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x6]\n\ + lsls r0, 24\n\ + adds r3, r1, r0\n\ + ldrb r4, [r2, 0x2]\n\ + adds r0, r4, 0\n\ + cmp r0, 0x1\n\ + beq _08021426\n\ + cmp r0, 0x11\n\ + beq _08021426\n\ + cmp r0, 0x2\n\ + bne _0802144C\n\ +_08021426:\n\ + ldr r4, _08021444 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + ldrb r1, [r0, 0x2]\n\ + ldrh r2, [r3]\n\ + movs r0, 0\n\ + bl EmitBattleAnimation\n\ + ldr r0, _08021448 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, [r4]\n\ + adds r0, 0x7\n\ + str r0, [r4]\n\ + b _080214AE\n\ + .align 2, 0\n\ +_08021444: .4byte gBattlescriptCurrInstr\n\ +_08021448: .4byte gActiveBank\n\ +_0802144C:\n\ + ldr r0, _08021464 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802146C\n\ + adds r0, r2, 0x7\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08021468 @ =BattleScript_Pausex20\n\ + b _080214AC\n\ + .align 2, 0\n\ +_08021464: .4byte gHitMarker\n\ +_08021468: .4byte BattleScript_Pausex20\n\ +_0802146C:\n\ + adds r0, r4, 0\n\ + subs r0, 0xA\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x3\n\ + bls _08021498\n\ + ldr r1, _08021490 @ =gStatuses3\n\ + ldrb r0, [r6]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _08021494 @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021498\n\ + adds r0, r2, 0x7\n\ + b _080214AC\n\ + .align 2, 0\n\ +_08021490: .4byte gStatuses3\n\ +_08021494: .4byte 0x000400c0\n\ +_08021498:\n\ + ldrb r1, [r2, 0x2]\n\ + ldrh r2, [r3]\n\ + movs r0, 0\n\ + bl EmitBattleAnimation\n\ + ldrb r0, [r6]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, [r5]\n\ + adds r0, 0x7\n\ +_080214AC:\n\ + str r0, [r5]\n\ +_080214AE:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided"); +} +#endif // NONMATCHING + +#ifdef NONMATCHING +static void atk46_playanimation2(void) +{ + u8 arg1; + u8* arg2; + u16* arg3; + u32 something; + + arg1 = BSScriptRead8(gBattlescriptCurrInstr + 1); + gActiveBank = GetBattleBank(arg1); + arg2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + arg3 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + + if (*arg2 == 1 || *arg2 == 0x11 || *arg2 == 2) + { + EmitBattleAnimation(0, *arg2, *arg3); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 10; + return; + } + if ((gHitMarker & 0x80)) + { + something = (u32)(gBattlescriptCurrInstr + 10); + } + else + { + u8 yeah = *arg2 - 10; + if (yeah < 4 || (gStatuses3[gActiveBank] & 0x000400C0) == 0) + { + EmitBattleAnimation(0, *arg2, *arg3); + MarkBufferBankForExecution(gActiveBank); + } + something = (u32)(gBattlescriptCurrInstr + 10); + } + gBattlescriptCurrInstr = (u8*)something; +} +#else +__attribute__((naked)) +static void atk46_playanimation2(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + ldr r6, _0802151C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r6]\n\ + ldrb r0, [r0, 0x1]\n\ + bl GetBattleBank\n\ + ldr r7, _08021520 @ =gActiveBank\n\ + strb r0, [r7]\n\ + ldr r2, [r6]\n\ + ldrb r1, [r2, 0x2]\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x5]\n\ + lsls r0, 24\n\ + adds r3, r1, r0\n\ + ldrb r1, [r2, 0x6]\n\ + ldrb r0, [r2, 0x7]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x8]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x9]\n\ + lsls r0, 24\n\ + adds r4, r1, r0\n\ + ldrb r5, [r3]\n\ + adds r0, r5, 0\n\ + cmp r0, 0x1\n\ + beq _080214FE\n\ + cmp r0, 0x11\n\ + beq _080214FE\n\ + cmp r0, 0x2\n\ + bne _08021524\n\ +_080214FE:\n\ + ldrb r1, [r3]\n\ + ldrh r2, [r4]\n\ + movs r0, 0\n\ + bl EmitBattleAnimation\n\ + ldr r0, _08021520 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ + ldr r1, _0802151C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0xA\n\ + str r0, [r1]\n\ + b _0802157A\n\ + .align 2, 0\n\ +_0802151C: .4byte gBattlescriptCurrInstr\n\ +_08021520: .4byte gActiveBank\n\ +_08021524:\n\ + ldr r0, _08021534 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021538\n\ + adds r0, r2, 0\n\ + b _08021576\n\ + .align 2, 0\n\ +_08021534: .4byte gHitMarker\n\ +_08021538:\n\ + adds r0, r5, 0\n\ + subs r0, 0xA\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x3\n\ + bls _08021564\n\ + ldr r1, _0802155C @ =gStatuses3\n\ + ldrb r0, [r7]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _08021560 @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021564\n\ + adds r0, r2, 0\n\ + b _08021576\n\ + .align 2, 0\n\ +_0802155C: .4byte gStatuses3\n\ +_08021560: .4byte 0x000400c0\n\ +_08021564:\n\ + ldrb r1, [r3]\n\ + ldrh r2, [r4]\n\ + movs r0, 0\n\ + bl EmitBattleAnimation\n\ + ldrb r0, [r7]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, [r6]\n\ +_08021576:\n\ + adds r0, 0xA\n\ + str r0, [r6]\n\ +_0802157A:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided "); +} +#endif // NONMATCHING + +static void atk47_setgraphicalstatchangevalues(void) +{ + u8 to_add = 0; + switch (BATTLE_STRUCT->statChanger & 0xF0) + { + case 0x10: //+1 + to_add = 0xF; + break; + case 0x20: //+2 + to_add = 0x27; + break; + case 0x90: //-1 + to_add = 0x16; + break; + case 0xA0: //-2 + to_add = 0x2E; + break; + } + BATTLE_STRUCT->animArg1 = (BATTLE_STRUCT->statChanger & 0xF) + to_add - 1; + BATTLE_STRUCT->animArg2 = 0; + gBattlescriptCurrInstr++; +} + +#ifdef NONMATCHING +static void atk48_playstatchangeanimation(void) +{ + int curr_stat = 0; + u16 stat_animID = 0; + int changeable_stats = 0; + u32 stats_to_check; + u8 arg3; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + stats_to_check = BSScriptRead8(gBattlescriptCurrInstr + 2); + arg3 = BSScriptRead8(gBattlescriptCurrInstr + 3); + if (arg3 & 1) + { + u16 r1 = 0x15; + if (arg3 & 0x2) + r1 = 0x2D; + while (stats_to_check != 0) + { + if (!(stats_to_check & 1)) + continue; + if (!(BSScriptRead8(gBattlescriptCurrInstr + 3))) + { + u8 ability; + if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer) + continue; + ability = gBattleMons[gActiveBank].ability; + if (ability == ABILITY_CLEAR_BODY || ability == ABILITY_WHITE_SMOKE || (ability == ABILITY_KEEN_EYE && curr_stat == 6) || (ability == ABILITY_HYPER_CUTTER && curr_stat == 1)) + continue; + } + if (gBattleMons[gActiveBank].statStages[curr_stat] > 0) + { + stat_animID = r1; + changeable_stats++; + } + + stats_to_check >>= 1; + r1 += 1; + curr_stat++; + } + if (changeable_stats > 1 && BSScriptRead8(gBattlescriptCurrInstr + 3) & 2) + stat_animID = 0x39; + else + stat_animID = 0x3A; + } + else + { + u16 r1 = 0x15; + if (arg3 & 0x2) + r1 = 0x2D; + while (stats_to_check != 0) + { + if (!(stats_to_check & 1)) + continue; + if (gBattleMons[gActiveBank].statStages[curr_stat] < 0xB) + { + stat_animID = r1; + changeable_stats++; + } + + stats_to_check >>= 1; + r1 += 1; + curr_stat++; + } + if (changeable_stats > 1 && BSScriptRead8(gBattlescriptCurrInstr + 3) & 2) + stat_animID = 0x37; + else + stat_animID = 0x38; + } + if ((BSScriptRead8(gBattlescriptCurrInstr + 3) & 2 && changeable_stats <= 1) + || changeable_stats == 0 || BATTLE_STRUCT->filler2[0] != 0) + gBattlescriptCurrInstr += 4; + else + { + EmitBattleAnimation(0, 1, stat_animID); + MarkBufferBankForExecution(gActiveBank); + if ((BSScriptRead8(gBattlescriptCurrInstr + 3) & 4) && changeable_stats > 1) + BATTLE_STRUCT->filler2[0] = 1; + gBattlescriptCurrInstr += 4; + } +} + +#else +__attribute__((naked)) +static void atk48_playstatchangeanimation(void) +{ + asm(".syntax unified\n\ +push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + movs r7, 0\n\ + movs r0, 0\n\ + mov r8, r0\n\ + movs r3, 0\n\ + ldr r5, _08021670 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r5]\n\ + ldrb r0, [r0, 0x1]\n\ + str r3, [sp]\n\ + bl GetBattleBank\n\ + ldr r2, _08021674 @ =gActiveBank\n\ + strb r0, [r2]\n\ + ldr r0, [r5]\n\ + ldrb r4, [r0, 0x2]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + beq _08021710\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x15\n\ + cmp r0, 0\n\ + beq _0802163C\n\ + movs r1, 0x2D\n\ +_0802163C:\n\ + cmp r4, 0\n\ + beq _080216E4\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ + ldr r0, _08021678 @ =gUnknown_02024A98\n\ + mov r9, r0\n\ + lsls r5, r1, 16\n\ +_0802164A:\n\ + adds r0, r4, 0\n\ + mov r1, r10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080216D6\n\ + ldr r0, _08021670 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802167C\n\ + ldr r0, _08021674 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r7, r0\n\ + b _080216C4\n\ + .align 2, 0\n\ +_08021670: .4byte gBattlescriptCurrInstr\n\ +_08021674: .4byte gActiveBank\n\ +_08021678: .4byte gUnknown_02024A98\n\ +_0802167C:\n\ + ldr r6, _08021700 @ =gActiveBank\n\ + ldrb r0, [r6]\n\ + str r3, [sp]\n\ + bl GetBankIdentity\n\ + mov r1, r10\n\ + ands r1, r0\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, _08021704 @ =gSideTimer\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + bne _080216D6\n\ + ldr r0, _08021708 @ =gBattleMons\n\ + ldrb r2, [r6]\n\ + movs r1, 0x58\n\ + muls r2, r1\n\ + adds r0, r2, r0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1D\n\ + beq _080216D6\n\ + cmp r0, 0x49\n\ + beq _080216D6\n\ + cmp r0, 0x33\n\ + bne _080216BA\n\ + cmp r7, 0x6\n\ + beq _080216D6\n\ +_080216BA:\n\ + cmp r0, 0x34\n\ + bne _080216C2\n\ + cmp r7, 0x1\n\ + beq _080216D6\n\ +_080216C2:\n\ + adds r0, r7, r2\n\ +_080216C4:\n\ + add r0, r9\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0\n\ + ble _080216D6\n\ + lsrs r0, r5, 16\n\ + mov r8, r0\n\ + adds r3, 0x1\n\ +_080216D6:\n\ + lsrs r4, 1\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + adds r5, r1\n\ + adds r7, 0x1\n\ + cmp r4, 0\n\ + bne _0802164A\n\ +_080216E4:\n\ + ldr r0, _0802170C @ =gBattlescriptCurrInstr\n\ + mov r9, r0\n\ + cmp r3, 0x1\n\ + ble _08021772\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x39\n\ + mov r8, r1\n\ + cmp r0, 0\n\ + beq _08021772\n\ + movs r0, 0x3A\n\ + b _08021770\n\ + .align 2, 0\n\ +_08021700: .4byte gActiveBank\n\ +_08021704: .4byte gSideTimer\n\ +_08021708: .4byte gBattleMons\n\ +_0802170C: .4byte gBattlescriptCurrInstr\n\ +_08021710:\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0xE\n\ + cmp r0, 0\n\ + beq _0802171C\n\ + movs r1, 0x26\n\ +_0802171C:\n\ + mov r9, r5\n\ + cmp r4, 0\n\ + beq _08021758\n\ + ldr r6, _0802178C @ =gUnknown_02024A98\n\ + adds r5, r2, 0\n\ + lsls r2, r1, 16\n\ +_08021728:\n\ + movs r0, 0x1\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _0802174A\n\ + ldrb r1, [r5]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r7, r0\n\ + adds r0, r6\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0xB\n\ + bgt _0802174A\n\ + lsrs r1, r2, 16\n\ + mov r8, r1\n\ + adds r3, 0x1\n\ +_0802174A:\n\ + lsrs r4, 1\n\ + movs r0, 0x80\n\ + lsls r0, 9\n\ + adds r2, r0\n\ + adds r7, 0x1\n\ + cmp r4, 0\n\ + bne _08021728\n\ +_08021758:\n\ + cmp r3, 0x1\n\ + ble _08021772\n\ + mov r1, r9\n\ + ldr r0, [r1]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x37\n\ + mov r8, r1\n\ + cmp r0, 0\n\ + beq _08021772\n\ + movs r0, 0x38\n\ +_08021770:\n\ + mov r8, r0\n\ +_08021772:\n\ + mov r1, r9\n\ + ldr r2, [r1]\n\ + ldrb r1, [r2, 0x3]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021790\n\ + cmp r3, 0x1\n\ + bgt _08021790\n\ + adds r0, r2, 0x4\n\ + mov r1, r9\n\ + b _080217E6\n\ + .align 2, 0\n\ +_0802178C: .4byte gUnknown_02024A98\n\ +_08021790:\n\ + cmp r3, 0\n\ + beq _080217E0\n\ + ldr r0, _080217D0 @ =0x02000000\n\ + ldr r1, _080217D4 @ =0x000160dc\n\ + adds r4, r0, r1\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _080217E0\n\ + movs r0, 0\n\ + movs r1, 0x1\n\ + mov r2, r8\n\ + str r3, [sp]\n\ + bl EmitBattleAnimation\n\ + ldr r0, _080217D8 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _080217DC @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + beq _080217CC\n\ + cmp r3, 0x1\n\ + ble _080217CC\n\ + movs r0, 0x1\n\ + strb r0, [r4]\n\ +_080217CC:\n\ + ldr r1, _080217DC @ =gBattlescriptCurrInstr\n\ + b _080217E2\n\ + .align 2, 0\n\ +_080217D0: .4byte 0x02000000\n\ +_080217D4: .4byte 0x000160dc\n\ +_080217D8: .4byte gActiveBank\n\ +_080217DC: .4byte gBattlescriptCurrInstr\n\ +_080217E0:\n\ + mov r1, r9\n\ +_080217E2:\n\ + ldr r0, [r1]\n\ + adds r0, 0x4\n\ +_080217E6:\n\ + str r0, [r1]\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +#ifdef NONMATCHING +static void atk49_moveendturn(void) +{ + int i; + int effect = 0; + u16 last_move = 0, *choiced_move_atk; + int arg1, arg2, hold_effect_atk, move_type; + if (gLastUsedMove != 0xFFFF) + last_move = gLastUsedMove; + + arg1 = BSScriptRead8(gBattlescriptCurrInstr + 1); + arg2 = BSScriptRead8(gBattlescriptCurrInstr + 2); + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + hold_effect_atk = gEnigmaBerries[gBankAttacker].holdEffect; + else + hold_effect_atk = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + + choiced_move_atk = (u16*)(gBankAttacker * 0x020160e8); + if (BATTLE_STRUCT->dynamicMoveType) + move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + move_type = gBattleMoves[gCurrentMove].type; + + do + { + switch (BATTLE_STRUCT->cmd49StateTracker) + { + case 0: //rage check + if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE + && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget) + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && TARGET_TURN_DAMAGED + && gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB) + { + gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = gUnknown_081D9132; + effect = 1; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 1: //defrosting check + if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE + && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget + && gSpecialStatuses[gBankTarget].moveturnLostHP + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && move_type == TYPE_FIRE) + { + gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE); + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + MarkBufferBankForExecution(gActiveBank); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = gUnknown_081D955D; + effect = 1; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 2: //target synchronize + if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0)) + effect = 1; + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 3: //contact abilities + if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0)) + effect = 1; + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 4: //status immunities + if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0)) + effect = 1; //it loops through 4 banks, so we increment after its done with all banks + else + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 5: //attacker synchronize + if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0)) + effect = 1; + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 6: //update choice band move + if (gHitMarker & HITMARKER_OBEYS && hold_effect_atk == HOLD_EFFECT_CHOICE_BAND + && gLastUsedMove != MOVE_STRUGGLE && (*choiced_move_atk == 0 || *choiced_move_atk == 0xFFF) + && gLastUsedMove != MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + *choiced_move_atk = gLastUsedMove; + for (i = 0; i < 4 && gBattleMons[gBankAttacker].moves[i] != *choiced_move_atk; i++){} + if (i == 4) + *choiced_move_atk = 0; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 7: //changed held items + for (i = 0; i < gNoOfAllBanks; i++) + { + #define CHANGED_ITEM (((*u16)(0x020160f0))) + if (CHANGED_ITEM(i)) + gBattleMons[i].item = CHANGED_ITEM(i); + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 8: //make sprite invisible + if (gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER) + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + gActiveBank = gBankAttacker; + EmitSpriteInvisibility(0, 1); + MarkBufferBankForExecution(gActiveBank); + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + //sub_8015660 CheckIfMoveFailed + case 9: //semi-invlurneable attacker make visible + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + || sub_8015660(gBankAttacker)) + { + gActiveBank = gBankAttacker; + EmitSpriteInvisibility(0, 0); + MarkBufferBankForExecution(gActiveBank); + gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER); + gSpecialStatuses[gBankAttacker].restored_bank_sprite = 1; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 10: //semi-invlurneable target make visible + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + || sub_8015660(gBankTarget)) + { + gActiveBank = gBankTarget; + EmitSpriteInvisibility(0, 0); + MarkBufferBankForExecution(gActiveBank); + gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER); + gSpecialStatuses[gBankTarget].restored_bank_sprite = 1; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 11: // + } + + } while (effect == 0) +} +#else +__attribute__((naked)) +static void atk49_moveendturn(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x18\n\ + movs r0, 0\n\ + mov r10, r0\n\ + ldr r0, _08021834 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x1]\n\ + str r1, [sp, 0x10]\n\ + ldrb r0, [r0, 0x2]\n\ + str r0, [sp, 0x14]\n\ + ldr r1, _08021838 @ =gBattleMons\n\ + ldr r0, _0802183C @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r1, r0, r1\n\ + ldrh r0, [r1, 0x2E]\n\ + cmp r0, 0xAF\n\ + bne _08021844\n\ + ldr r1, _08021840 @ =gEnigmaBerries\n\ + lsls r0, r2, 3\n\ + subs r0, r2\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x7]\n\ + b _0802184E\n\ + .align 2, 0\n\ +_08021834: .4byte gBattlescriptCurrInstr\n\ +_08021838: .4byte gBattleMons\n\ +_0802183C: .4byte gBankAttacker\n\ +_08021840: .4byte gEnigmaBerries\n\ +_08021844:\n\ + ldrh r0, [r1, 0x2E]\n\ + bl ItemId_GetHoldEffect\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ +_0802184E:\n\ + str r0, [sp, 0x8]\n\ + ldr r0, _0802186C @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + lsls r1, 1\n\ + ldr r0, _08021870 @ =0x020160e8\n\ + adds r1, r0\n\ + str r1, [sp, 0xC]\n\ + subs r0, 0xCC\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080218C0\n\ + movs r2, 0x3F\n\ + ands r2, r0\n\ + str r2, [sp, 0x4]\n\ + b _080218D2\n\ + .align 2, 0\n\ +_0802186C: .4byte gBankAttacker\n\ +_08021870: .4byte 0x020160e8\n\ +_08021874:\n\ + strb r2, [r7]\n\ + ldr r0, [r5]\n\ + orrs r0, r6\n\ + str r0, [r5]\n\ + ldr r0, _080218AC @ =0x02000000\n\ + ldr r3, _080218B0 @ =0x0001600c\n\ + adds r0, r3\n\ + strb r4, [r0]\n\ + bl MoveValuesCleanUp\n\ + ldr r2, _080218B4 @ =gBattleScriptsEffectsTable\n\ + mov r4, r8\n\ + ldrh r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + add r0, r9\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + bl b_movescr_stack_push\n\ + ldr r1, _080218B8 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080218BC @ =gUnknown_081D9B2D\n\ + bl _0802229C\n\ + .align 2, 0\n\ +_080218AC: .4byte 0x02000000\n\ +_080218B0: .4byte 0x0001600c\n\ +_080218B4: .4byte gBattleScriptsEffectsTable\n\ +_080218B8: .4byte gBattlescriptCurrInstr\n\ +_080218BC: .4byte gUnknown_081D9B2D\n\ +_080218C0:\n\ + ldr r2, _080218D8 @ =gBattleMoves\n\ + ldr r0, _080218DC @ =gCurrentMove\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0, 0x2]\n\ + str r0, [sp, 0x4]\n\ +_080218D2:\n\ + ldr r5, _080218E0 @ =0x02000000\n\ + mov r12, r5\n\ + b _080218EE\n\ + .align 2, 0\n\ +_080218D8: .4byte gBattleMoves\n\ +_080218DC: .4byte gCurrentMove\n\ +_080218E0: .4byte 0x02000000\n\ +_080218E4:\n\ + mov r0, r10\n\ + cmp r0, 0\n\ + beq _080218EE\n\ + bl _08022286\n\ +_080218EE:\n\ + ldr r0, _08021908 @ =0x0001600c\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + bls _080218FC\n\ + bl _0802224E\n\ +_080218FC:\n\ + lsls r0, 2\n\ + ldr r1, _0802190C @ =_08021910\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08021908: .4byte 0x0001600c\n\ +_0802190C: .4byte _08021910\n\ + .align 2, 0\n\ +_08021910:\n\ + .4byte _08021958\n\ + .4byte _08021A34\n\ + .4byte _08021AF0\n\ + .4byte _08021B20\n\ + .4byte _08021B44\n\ + .4byte _08021B78\n\ + .4byte _08021B9C\n\ + .4byte _08021C40\n\ + .4byte _08021C78\n\ + .4byte _08021CA8\n\ + .4byte _08021CCC\n\ + .4byte _08021D18\n\ + .4byte _08021DAC\n\ + .4byte _08021E30\n\ + .4byte _08021E70\n\ + .4byte _08022068\n\ + .4byte _080221C0\n\ + .4byte _0802224E\n\ +_08021958:\n\ + ldr r5, _08021A08 @ =gBattleMons\n\ + ldr r2, _08021A0C @ =gBankTarget\n\ + ldrb r4, [r2]\n\ + movs r6, 0x58\n\ + adds r3, r4, 0\n\ + muls r3, r6\n\ + adds r0, r5, 0\n\ + adds r0, 0x50\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 16\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _080219FE\n\ + adds r0, r3, r5\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + beq _080219FE\n\ + ldr r0, _08021A10 @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + cmp r1, r4\n\ + beq _080219FE\n\ + adds r0, r1, 0\n\ + bl GetBankSide\n\ + adds r4, r0, 0\n\ + ldr r1, _08021A0C @ =gBankTarget\n\ + ldrb r0, [r1]\n\ + bl GetBankSide\n\ + lsls r4, 24\n\ + lsls r0, 24\n\ + cmp r4, r0\n\ + beq _080219FE\n\ + ldr r0, _08021A14 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080219FE\n\ + ldr r2, _08021A18 @ =gProtectStructs\n\ + ldr r4, _08021A0C @ =gBankTarget\n\ + ldrb r3, [r4]\n\ + lsls r1, r3, 4\n\ + adds r0, r2, 0x4\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _080219C8\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _080219FE\n\ +_080219C8:\n\ + ldr r2, _08021A1C @ =gBattleMoves\n\ + ldr r0, _08021A20 @ =gCurrentMove\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0, 0x1]\n\ + cmp r0, 0\n\ + beq _080219FE\n\ + adds r0, r3, 0\n\ + muls r0, r6\n\ + adds r1, r0, r5\n\ + ldrb r2, [r1, 0x19]\n\ + movs r0, 0x19\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0xB\n\ + bgt _080219FE\n\ + adds r0, r2, 0x1\n\ + strb r0, [r1, 0x19]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08021A24 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08021A28 @ =gUnknown_081D9132\n\ + str r0, [r1]\n\ + movs r5, 0x1\n\ + mov r10, r5\n\ +_080219FE:\n\ + ldr r2, _08021A2C @ =0x02000000\n\ + ldr r0, _08021A30 @ =0x0001600c\n\ + adds r1, r2, r0\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021A08: .4byte gBattleMons\n\ +_08021A0C: .4byte gBankTarget\n\ +_08021A10: .4byte gBankAttacker\n\ +_08021A14: .4byte gBattleMoveFlags\n\ +_08021A18: .4byte gProtectStructs\n\ +_08021A1C: .4byte gBattleMoves\n\ +_08021A20: .4byte gCurrentMove\n\ +_08021A24: .4byte gBattlescriptCurrInstr\n\ +_08021A28: .4byte gUnknown_081D9132\n\ +_08021A2C: .4byte 0x02000000\n\ +_08021A30: .4byte 0x0001600c\n\ +_08021A34:\n\ + ldr r2, _08021AD0 @ =gBattleMons\n\ + ldr r1, _08021AD4 @ =gBankTarget\n\ + ldrb r4, [r1]\n\ + movs r3, 0x58\n\ + mov r12, r3\n\ + mov r3, r12\n\ + muls r3, r4\n\ + adds r7, r2, 0\n\ + adds r7, 0x4C\n\ + adds r6, r3, r7\n\ + ldr r5, [r6]\n\ + movs r0, 0x20\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _08021A54\n\ + b _08021DFA\n\ +_08021A54:\n\ + adds r0, r3, r2\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08021A5E\n\ + b _08021DFA\n\ +_08021A5E:\n\ + ldr r0, _08021AD8 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + cmp r0, r4\n\ + bne _08021A68\n\ + b _08021DFA\n\ +_08021A68:\n\ + ldr r0, _08021ADC @ =gSpecialStatuses\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 2\n\ + adds r0, 0xC\n\ + adds r1, r0\n\ + ldr r0, [r1]\n\ + cmp r0, 0\n\ + bne _08021A7C\n\ + b _08021DFA\n\ +_08021A7C:\n\ + ldr r0, _08021AE0 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021A8A\n\ + b _08021DFA\n\ +_08021A8A:\n\ + ldr r4, [sp, 0x4]\n\ + cmp r4, 0xA\n\ + beq _08021A92\n\ + b _08021DFA\n\ +_08021A92:\n\ + movs r0, 0x21\n\ + negs r0, r0\n\ + ands r5, r0\n\ + str r5, [r6]\n\ + ldr r4, _08021AE4 @ =gActiveBank\n\ + ldr r5, _08021AD4 @ =gBankTarget\n\ + ldrb r0, [r5]\n\ + strb r0, [r4]\n\ + ldrb r0, [r5]\n\ + mov r1, r12\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, r7\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08021AE8 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08021AEC @ =gUnknown_081D955D\n\ + str r0, [r1]\n\ + movs r2, 0x1\n\ + mov r10, r2\n\ + b _08021DFA\n\ + .align 2, 0\n\ +_08021AD0: .4byte gBattleMons\n\ +_08021AD4: .4byte gBankTarget\n\ +_08021AD8: .4byte gBankAttacker\n\ +_08021ADC: .4byte gSpecialStatuses\n\ +_08021AE0: .4byte gBattleMoveFlags\n\ +_08021AE4: .4byte gActiveBank\n\ +_08021AE8: .4byte gBattlescriptCurrInstr\n\ +_08021AEC: .4byte gUnknown_081D955D\n\ +_08021AF0:\n\ + ldr r0, _08021B14 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x7\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021B0C\n\ + movs r4, 0x1\n\ + mov r10, r4\n\ +_08021B0C:\n\ + ldr r2, _08021B18 @ =0x02000000\n\ + ldr r5, _08021B1C @ =0x0001600c\n\ + adds r1, r2, r5\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021B14: .4byte gBankTarget\n\ +_08021B18: .4byte 0x02000000\n\ +_08021B1C: .4byte 0x0001600c\n\ +_08021B20:\n\ + ldr r0, _08021B40 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x4\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08021B3A\n\ + b _08021DFA\n\ +_08021B3A:\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ + b _08021DFA\n\ + .align 2, 0\n\ +_08021B40: .4byte gBankTarget\n\ +_08021B44:\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x5\n\ + movs r1, 0\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021B68\n\ + movs r4, 0x1\n\ + mov r10, r4\n\ + ldr r5, _08021B64 @ =0x02000000\n\ + mov r12, r5\n\ + b _0802224E\n\ + .align 2, 0\n\ +_08021B64: .4byte 0x02000000\n\ +_08021B68:\n\ + ldr r2, _08021B70 @ =0x02000000\n\ + ldr r0, _08021B74 @ =0x0001600c\n\ + adds r1, r2, r0\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021B70: .4byte 0x02000000\n\ +_08021B74: .4byte 0x0001600c\n\ +_08021B78:\n\ + ldr r0, _08021B98 @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x8\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08021B92\n\ + b _08021DFA\n\ +_08021B92:\n\ + movs r1, 0x1\n\ + mov r10, r1\n\ + b _08021DFA\n\ + .align 2, 0\n\ +_08021B98: .4byte gBankAttacker\n\ +_08021B9C:\n\ + ldr r0, _08021C28 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021BE0\n\ + ldr r4, [sp, 0x8]\n\ + cmp r4, 0x1D\n\ + bne _08021BE0\n\ + ldr r0, _08021C2C @ =gUnknown_02024BE8\n\ + ldrh r2, [r0]\n\ + adds r7, r0, 0\n\ + cmp r2, 0xA5\n\ + beq _08021BE0\n\ + ldr r5, [sp, 0xC]\n\ + ldrh r1, [r5]\n\ + cmp r1, 0\n\ + beq _08021BC8\n\ + ldr r0, _08021C30 @ =0x0000ffff\n\ + cmp r1, r0\n\ + bne _08021BE0\n\ +_08021BC8:\n\ + cmp r2, 0xE2\n\ + bne _08021BDA\n\ + ldr r0, _08021C34 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021BDA\n\ + b _08022244\n\ +_08021BDA:\n\ + ldrh r0, [r7]\n\ + ldr r1, [sp, 0xC]\n\ + strh r0, [r1]\n\ +_08021BE0:\n\ + movs r4, 0\n\ + ldr r2, _08021C38 @ =gBattleMons\n\ + ldr r3, _08021C3C @ =gBankAttacker\n\ + ldrb r1, [r3]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r2, 0xC\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + ldr r5, [sp, 0xC]\n\ + ldrh r1, [r5]\n\ + mov r9, r3\n\ + cmp r0, r1\n\ + beq _08021C18\n\ + mov r6, r9\n\ + movs r3, 0x58\n\ + adds r5, r1, 0\n\ +_08021C02:\n\ + adds r4, 0x1\n\ + cmp r4, 0x3\n\ + bgt _08021C18\n\ + lsls r0, r4, 1\n\ + ldrb r1, [r6]\n\ + muls r1, r3\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + cmp r0, r5\n\ + bne _08021C02\n\ +_08021C18:\n\ + cmp r4, 0x4\n\ + beq _08021C1E\n\ + b _08022244\n\ +_08021C1E:\n\ + movs r0, 0\n\ + ldr r1, [sp, 0xC]\n\ +_08021C22:\n\ + strh r0, [r1]\n\ + b _08022244\n\ + .align 2, 0\n\ +_08021C28: .4byte gHitMarker\n\ +_08021C2C: .4byte gUnknown_02024BE8\n\ +_08021C30: .4byte 0x0000ffff\n\ +_08021C34: .4byte gBattleMoveFlags\n\ +_08021C38: .4byte gBattleMons\n\ +_08021C3C: .4byte gBankAttacker\n\ +_08021C40:\n\ + movs r4, 0\n\ + ldr r0, _08021C6C @ =gNoOfAllBanks\n\ + ldrb r2, [r0]\n\ + cmp r4, r2\n\ + blt _08021C4C\n\ + b _08022244\n\ +_08021C4C:\n\ + movs r5, 0\n\ + ldr r2, _08021C70 @ =0x020160f0\n\ + ldr r3, _08021C74 @ =gBattleMons\n\ +_08021C52:\n\ + ldrh r1, [r2]\n\ + cmp r1, 0\n\ + beq _08021C5C\n\ + strh r1, [r3, 0x2E]\n\ + strh r5, [r2]\n\ +_08021C5C:\n\ + adds r2, 0x2\n\ + adds r3, 0x58\n\ + adds r4, 0x1\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + blt _08021C52\n\ + b _08022244\n\ + .align 2, 0\n\ +_08021C6C: .4byte gNoOfAllBanks\n\ +_08021C70: .4byte 0x020160f0\n\ +_08021C74: .4byte gBattleMons\n\ +_08021C78:\n\ + movs r0, 0x3\n\ + movs r1, 0\n\ + movs r2, 0\n\ + bl ItemBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021C98\n\ + movs r2, 0x1\n\ + mov r10, r2\n\ + ldr r3, _08021C94 @ =0x02000000\n\ + mov r12, r3\n\ + b _0802224E\n\ + .align 2, 0\n\ +_08021C94: .4byte 0x02000000\n\ +_08021C98:\n\ + ldr r2, _08021CA0 @ =0x02000000\n\ + ldr r4, _08021CA4 @ =0x0001600c\n\ + adds r1, r2, r4\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021CA0: .4byte 0x02000000\n\ +_08021CA4: .4byte 0x0001600c\n\ +_08021CA8:\n\ + movs r0, 0x4\n\ + movs r1, 0\n\ + movs r2, 0\n\ + bl ItemBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021CBC\n\ + movs r5, 0x1\n\ + mov r10, r5\n\ +_08021CBC:\n\ + ldr r2, _08021CC4 @ =0x02000000\n\ + ldr r0, _08021CC8 @ =0x0001600c\n\ + adds r1, r2, r0\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021CC4: .4byte 0x02000000\n\ +_08021CC8: .4byte 0x0001600c\n\ +_08021CCC:\n\ + ldr r1, _08021D04 @ =gStatuses3\n\ + ldr r0, _08021D08 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _08021D0C @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021CE2\n\ + b _08021DFA\n\ +_08021CE2:\n\ + ldr r0, _08021D10 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021CF0\n\ + b _08021DFA\n\ +_08021CF0:\n\ + ldr r4, _08021D14 @ =gActiveBank\n\ + strb r2, [r4]\n\ + movs r0, 0\n\ + movs r1, 0x1\n\ + bl EmitSpriteInvisibility\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08021DFA\n\ + .align 2, 0\n\ +_08021D04: .4byte gStatuses3\n\ +_08021D08: .4byte gBankAttacker\n\ +_08021D0C: .4byte 0x000400c0\n\ +_08021D10: .4byte gHitMarker\n\ +_08021D14: .4byte gActiveBank\n\ +_08021D18:\n\ + ldr r0, _08021D88 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021D44\n\ + ldr r1, _08021D8C @ =gStatuses3\n\ + ldr r0, _08021D90 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _08021D94 @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021D44\n\ + adds r0, r2, 0\n\ + bl sub_8015660\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021D7E\n\ +_08021D44:\n\ + ldr r4, _08021D98 @ =gActiveBank\n\ + ldr r5, _08021D90 @ =gBankAttacker\n\ + ldrb r0, [r5]\n\ + strb r0, [r4]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl EmitSpriteInvisibility\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _08021D8C @ =gStatuses3\n\ + ldrb r2, [r5]\n\ + lsls r2, 2\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + ldr r1, _08021D9C @ =0xfffbff3f\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _08021DA0 @ =gSpecialStatuses\n\ + ldrb r1, [r5]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r2, 0x4\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_08021D7E:\n\ + ldr r2, _08021DA4 @ =0x02000000\n\ + ldr r4, _08021DA8 @ =0x0001600c\n\ + adds r1, r2, r4\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021D88: .4byte gBattleMoveFlags\n\ +_08021D8C: .4byte gStatuses3\n\ +_08021D90: .4byte gBankAttacker\n\ +_08021D94: .4byte 0x000400c0\n\ +_08021D98: .4byte gActiveBank\n\ +_08021D9C: .4byte 0xfffbff3f\n\ +_08021DA0: .4byte gSpecialStatuses\n\ +_08021DA4: .4byte 0x02000000\n\ +_08021DA8: .4byte 0x0001600c\n\ +_08021DAC:\n\ + ldr r2, _08021E0C @ =gSpecialStatuses\n\ + ldr r1, _08021E10 @ =gBankTarget\n\ + ldrb r3, [r1]\n\ + lsls r4, r3, 2\n\ + adds r0, r4, r3\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 29\n\ + cmp r0, 0\n\ + blt _08021DFA\n\ + ldr r0, _08021E14 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r3, r0\n\ + bcs _08021DFA\n\ + ldr r5, _08021E18 @ =gStatuses3\n\ + adds r0, r4, r5\n\ + ldr r0, [r0]\n\ + ldr r1, _08021E1C @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021DFA\n\ + ldr r4, _08021E20 @ =gActiveBank\n\ + strb r3, [r4]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl EmitSpriteInvisibility\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _08021E10 @ =gBankTarget\n\ + ldrb r2, [r0]\n\ + lsls r2, 2\n\ + adds r2, r5\n\ + ldr r0, [r2]\n\ + ldr r1, _08021E24 @ =0xfffbff3f\n\ + ands r0, r1\n\ + str r0, [r2]\n\ +_08021DFA:\n\ + ldr r2, _08021E28 @ =0x02000000\n\ + ldr r3, _08021E2C @ =0x0001600c\n\ + adds r1, r2, r3\n\ +_08021E00:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + mov r12, r2\n\ + b _0802224E\n\ + .align 2, 0\n\ +_08021E0C: .4byte gSpecialStatuses\n\ +_08021E10: .4byte gBankTarget\n\ +_08021E14: .4byte gNoOfAllBanks\n\ +_08021E18: .4byte gStatuses3\n\ +_08021E1C: .4byte 0x000400c0\n\ +_08021E20: .4byte gActiveBank\n\ +_08021E24: .4byte 0xfffbff3f\n\ +_08021E28: .4byte 0x02000000\n\ +_08021E2C: .4byte 0x0001600c\n\ +_08021E30:\n\ + movs r4, 0\n\ + ldr r0, _08021E60 @ =gNoOfAllBanks\n\ + ldrb r5, [r0]\n\ + cmp r4, r5\n\ + blt _08021E3C\n\ + b _08022244\n\ +_08021E3C:\n\ + ldr r2, _08021E64 @ =gDisableStructs\n\ + ldr r5, _08021E68 @ =0xfeffffff\n\ + adds r3, r0, 0\n\ + ldr r1, _08021E6C @ =gUnknown_02024AD0\n\ +_08021E44:\n\ + ldrb r0, [r2, 0xA]\n\ + cmp r0, 0\n\ + bne _08021E50\n\ + ldr r0, [r1]\n\ + ands r0, r5\n\ + str r0, [r1]\n\ +_08021E50:\n\ + adds r2, 0x1C\n\ + adds r1, 0x58\n\ + adds r4, 0x1\n\ + ldrb r0, [r3]\n\ + cmp r4, r0\n\ + blt _08021E44\n\ + b _08022244\n\ + .align 2, 0\n\ +_08021E60: .4byte gNoOfAllBanks\n\ +_08021E64: .4byte gDisableStructs\n\ +_08021E68: .4byte 0xfeffffff\n\ +_08021E6C: .4byte gUnknown_02024AD0\n\ +_08021E70:\n\ + ldr r1, _08021F2C @ =gHitMarker\n\ + ldr r3, [r1]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + ands r0, r3\n\ + ldr r2, _08021F30 @ =gBankAttacker\n\ + mov r9, r2\n\ + adds r5, r1, 0\n\ + cmp r0, 0\n\ + beq _08021E9A\n\ + ldr r0, _08021F34 @ =gActiveBank\n\ + ldrb r2, [r2]\n\ + strb r2, [r0]\n\ + ldr r1, _08021F38 @ =gBankTarget\n\ + ldrb r0, [r1]\n\ + mov r4, r9\n\ + strb r0, [r4]\n\ + strb r2, [r1]\n\ + ldr r0, _08021F3C @ =0xffffefff\n\ + ands r3, r0\n\ + str r3, [r5]\n\ +_08021E9A:\n\ + ldr r1, _08021F40 @ =gBattleMoves\n\ + ldr r2, _08021F44 @ =gUnknown_02024BE8\n\ + ldrh r3, [r2]\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + mov r8, r1\n\ + adds r7, r2, 0\n\ + cmp r0, 0x7F\n\ + bne _08021EBE\n\ + ldr r0, _08021F48 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021ECA\n\ +_08021EBE:\n\ + ldr r1, _08021F4C @ =gUnknown_02024C2C\n\ + mov r2, r9\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + strh r3, [r0]\n\ +_08021ECA:\n\ + ldr r0, _08021F50 @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r2, _08021F54 @ =gBitTable\n\ + mov r3, r9\n\ + ldrb r4, [r3]\n\ + lsls r0, r4, 2\n\ + adds r0, r2\n\ + ldr r3, [r0]\n\ + ands r1, r3\n\ + adds r6, r2, 0\n\ + cmp r1, 0\n\ + beq _08021EE4\n\ + b _08022244\n\ +_08021EE4:\n\ + ldr r0, _08021F58 @ =0x000160a6\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08021EF2\n\ + b _08022244\n\ +_08021EF2:\n\ + ldrh r2, [r7]\n\ + lsls r0, r2, 1\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + add r0, r8\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x7F\n\ + bne _08021F04\n\ + b _08022244\n\ +_08021F04:\n\ + ldr r0, [r5]\n\ + movs r1, 0x80\n\ + lsls r1, 18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021F68\n\ + ldr r1, _08021F5C @ =gLastUsedMove\n\ + lsls r0, r4, 1\n\ + adds r0, r1\n\ + strh r2, [r0]\n\ + ldr r0, _08021F60 @ =gUnknown_02024C4C\n\ + mov r4, r9\n\ + ldrb r1, [r4]\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + ldr r0, _08021F64 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + strh r0, [r1]\n\ + b _08021F82\n\ + .align 2, 0\n\ +_08021F2C: .4byte gHitMarker\n\ +_08021F30: .4byte gBankAttacker\n\ +_08021F34: .4byte gActiveBank\n\ +_08021F38: .4byte gBankTarget\n\ +_08021F3C: .4byte 0xffffefff\n\ +_08021F40: .4byte gBattleMoves\n\ +_08021F44: .4byte gUnknown_02024BE8\n\ +_08021F48: .4byte gBattleMoveFlags\n\ +_08021F4C: .4byte gUnknown_02024C2C\n\ +_08021F50: .4byte gAbsentBankFlags\n\ +_08021F54: .4byte gBitTable\n\ +_08021F58: .4byte 0x000160a6\n\ +_08021F5C: .4byte gLastUsedMove\n\ +_08021F60: .4byte gUnknown_02024C4C\n\ +_08021F64: .4byte gCurrentMove\n\ +_08021F68:\n\ + ldr r1, _08021FD0 @ =gLastUsedMove\n\ + lsls r0, r4, 1\n\ + adds r0, r1\n\ + ldr r1, _08021FD4 @ =0x0000ffff\n\ + strh r1, [r0]\n\ + ldr r1, _08021FD8 @ =gUnknown_02024C4C\n\ + mov r2, r9\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + strh r1, [r0]\n\ +_08021F82:\n\ + ldr r2, _08021FDC @ =gBankTarget\n\ + ldrb r3, [r2]\n\ + lsls r0, r3, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + lsls r0, 28\n\ + ldr r1, [r5]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08021FA0\n\ + ldr r0, _08021FE0 @ =gUnknown_02024C5C\n\ + adds r0, r3, r0\n\ + mov r3, r9\n\ + ldrb r1, [r3]\n\ + strb r1, [r0]\n\ +_08021FA0:\n\ + ldr r0, [r5]\n\ + movs r1, 0x80\n\ + lsls r1, 18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802204C\n\ + ldr r0, _08021FE4 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0802204C\n\ + ldrh r2, [r7]\n\ + ldr r0, _08021FD4 @ =0x0000ffff\n\ + cmp r2, r0\n\ + bne _08021FEC\n\ + ldr r1, _08021FE8 @ =gMoveHitWith\n\ + ldr r4, _08021FDC @ =gBankTarget\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + strh r2, [r0]\n\ + b _08022244\n\ + .align 2, 0\n\ +_08021FD0: .4byte gLastUsedMove\n\ +_08021FD4: .4byte 0x0000ffff\n\ +_08021FD8: .4byte gUnknown_02024C4C\n\ +_08021FDC: .4byte gBankTarget\n\ +_08021FE0: .4byte gUnknown_02024C5C\n\ +_08021FE4: .4byte gBattleMoveFlags\n\ +_08021FE8: .4byte gMoveHitWith\n\ +_08021FEC:\n\ + ldr r0, _08022014 @ =gMoveHitWith\n\ + ldr r5, _08022018 @ =gBankTarget\n\ + ldrb r1, [r5]\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + ldr r4, _0802201C @ =gCurrentMove\n\ + ldrh r0, [r4]\n\ + strh r0, [r1]\n\ + ldr r0, _08022020 @ =0x0001601c\n\ + add r0, r12\n\ + ldrb r3, [r0]\n\ + cmp r3, 0\n\ + beq _08022028\n\ + ldr r0, _08022024 @ =gUnknown_02024C44\n\ + ldrb r1, [r5]\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + movs r0, 0x3F\n\ + ands r0, r3\n\ + b _08021C22\n\ + .align 2, 0\n\ +_08022014: .4byte gMoveHitWith\n\ +_08022018: .4byte gBankTarget\n\ +_0802201C: .4byte gCurrentMove\n\ +_08022020: .4byte 0x0001601c\n\ +_08022024: .4byte gUnknown_02024C44\n\ +_08022028:\n\ + ldr r0, _08022044 @ =gUnknown_02024C44\n\ + ldr r1, _08022048 @ =gBankTarget\n\ + ldrb r2, [r1]\n\ + lsls r2, 1\n\ + adds r2, r0\n\ + ldrh r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + add r0, r8\n\ + ldrb r0, [r0, 0x2]\n\ + strh r0, [r2]\n\ + b _08022244\n\ + .align 2, 0\n\ +_08022044: .4byte gUnknown_02024C44\n\ +_08022048: .4byte gBankTarget\n\ +_0802204C:\n\ + ldr r0, _0802205C @ =gMoveHitWith\n\ + ldr r2, _08022060 @ =gBankTarget\n\ + ldrb r1, [r2]\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + ldr r0, _08022064 @ =0x0000ffff\n\ + b _08021C22\n\ + .align 2, 0\n\ +_0802205C: .4byte gMoveHitWith\n\ +_08022060: .4byte gBankTarget\n\ +_08022064: .4byte 0x0000ffff\n\ +_08022068:\n\ + ldr r0, _0802212C @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r6, _08022130 @ =gBitTable\n\ + ldr r2, _08022134 @ =gBankAttacker\n\ + ldrb r5, [r2]\n\ + lsls r0, r5, 2\n\ + adds r0, r6\n\ + ldr r4, [r0]\n\ + ands r1, r4\n\ + mov r9, r2\n\ + cmp r1, 0\n\ + beq _08022082\n\ + b _08022244\n\ +_08022082:\n\ + ldr r0, _08022138 @ =0x000160a6\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _08022090\n\ + b _08022244\n\ +_08022090:\n\ + ldr r1, _0802213C @ =gBattleMoves\n\ + ldr r4, _08022140 @ =gUnknown_02024BE8\n\ + ldrh r3, [r4]\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802215C\n\ + ldr r0, _08022144 @ =gHitMarker\n\ + ldr r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802215C\n\ + ldr r2, _08022148 @ =gBankTarget\n\ + ldrb r0, [r2]\n\ + cmp r5, r0\n\ + bne _080220C0\n\ + b _08022244\n\ +_080220C0:\n\ + adds r2, r0, 0\n\ + lsls r0, r2, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + lsls r0, 28\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0802215C\n\ + ldr r0, _0802214C @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0802215C\n\ + lsls r0, r2, 1\n\ + ldr r5, _08022150 @ =0x000160ac\n\ + adds r0, r5\n\ + add r0, r12\n\ + strb r3, [r0]\n\ + ldr r0, _08022148 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r1, 1\n\ + ldr r2, _08022154 @ =0x000160ad\n\ + adds r1, r2\n\ + add r1, r12\n\ + ldrh r0, [r4]\n\ + lsrs r0, 8\n\ + strb r0, [r1]\n\ + ldr r3, _08022148 @ =gBankTarget\n\ + ldrb r2, [r3]\n\ + lsls r2, 2\n\ + mov r5, r9\n\ + ldrb r0, [r5]\n\ + lsrs r0, 1\n\ + lsls r0, 1\n\ + ldr r1, _08022158 @ =0x00016100\n\ + adds r0, r1\n\ + adds r2, r0\n\ + add r2, r12\n\ + ldrh r0, [r4]\n\ + strb r0, [r2]\n\ + ldrb r2, [r3]\n\ + lsls r2, 2\n\ + ldrb r0, [r5]\n\ + lsrs r0, 1\n\ + lsls r0, 1\n\ + adds r1, 0x1\n\ + adds r0, r1\n\ + adds r2, r0\n\ + add r2, r12\n\ + ldrh r0, [r4]\n\ + lsrs r0, 8\n\ + strb r0, [r2]\n\ + b _08022244\n\ + .align 2, 0\n\ +_0802212C: .4byte gAbsentBankFlags\n\ +_08022130: .4byte gBitTable\n\ +_08022134: .4byte gBankAttacker\n\ +_08022138: .4byte 0x000160a6\n\ +_0802213C: .4byte gBattleMoves\n\ +_08022140: .4byte gUnknown_02024BE8\n\ +_08022144: .4byte gHitMarker\n\ +_08022148: .4byte gBankTarget\n\ +_0802214C: .4byte gBattleMoveFlags\n\ +_08022150: .4byte 0x000160ac\n\ +_08022154: .4byte 0x000160ad\n\ +_08022158: .4byte 0x00016100\n\ +_0802215C:\n\ + mov r1, r9\n\ + ldrb r0, [r1]\n\ + ldr r2, _080221B4 @ =gBankTarget\n\ + ldrb r2, [r2]\n\ + cmp r0, r2\n\ + beq _08022244\n\ + ldr r3, _080221B4 @ =gBankTarget\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + ldr r4, _080221B8 @ =0x000160ac\n\ + adds r0, r4\n\ + add r0, r12\n\ + movs r3, 0\n\ + strb r3, [r0]\n\ + ldr r5, _080221B4 @ =gBankTarget\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + ldr r1, _080221BC @ =0x000160ad\n\ + adds r0, r1\n\ + add r0, r12\n\ + strb r3, [r0]\n\ + ldrb r2, [r5]\n\ + lsls r2, 2\n\ + mov r4, r9\n\ + ldrb r0, [r4]\n\ + lsrs r0, 1\n\ + lsls r0, 1\n\ + adds r1, 0x53\n\ + adds r0, r1\n\ + adds r2, r0\n\ + add r2, r12\n\ + strb r3, [r2]\n\ + ldrb r2, [r5]\n\ + lsls r2, 2\n\ + ldrb r0, [r4]\n\ + lsrs r0, 1\n\ + lsls r0, 1\n\ + adds r1, 0x1\n\ + adds r0, r1\n\ + adds r2, r0\n\ + add r2, r12\n\ + strb r3, [r2]\n\ + b _08022244\n\ + .align 2, 0\n\ +_080221B4: .4byte gBankTarget\n\ +_080221B8: .4byte 0x000160ac\n\ +_080221BC: .4byte 0x000160ad\n\ +_080221C0:\n\ + ldr r5, _080222B0 @ =gHitMarker\n\ + ldr r2, [r5]\n\ + movs r0, 0x80\n\ + lsls r0, 12\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _08022244\n\ + ldr r0, _080222B4 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08022244\n\ + ldr r1, _080222B8 @ =gProtectStructs\n\ + ldr r0, _080222BC @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x1]\n\ + lsls r0, 29\n\ + cmp r0, 0\n\ + blt _08022244\n\ + ldr r0, _080222C0 @ =gBattleMoves\n\ + mov r9, r0\n\ + ldr r1, _080222C4 @ =gCurrentMove\n\ + mov r8, r1\n\ + ldrh r0, [r1]\n\ + lsls r1, r0, 1\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + add r1, r9\n\ + ldrb r0, [r1, 0x6]\n\ + cmp r0, 0x8\n\ + bne _08022244\n\ + movs r6, 0x80\n\ + lsls r6, 2\n\ + adds r4, r6, 0\n\ + ands r4, r2\n\ + cmp r4, 0\n\ + bne _08022244\n\ + ldr r7, _080222C8 @ =gBankTarget\n\ + ldrb r0, [r7]\n\ + bl GetBankIdentity\n\ + movs r1, 0x2\n\ + eors r0, r1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl GetBankByPlayerAI\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + ldr r1, _080222CC @ =gBattleMons\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + beq _0802223A\n\ + bl _08021874\n\ +_0802223A:\n\ + ldr r0, [r5]\n\ + orrs r0, r6\n\ + str r0, [r5]\n\ + ldr r2, _080222D0 @ =0x02000000\n\ + mov r12, r2\n\ +_08022244:\n\ + ldr r1, _080222D4 @ =0x0001600c\n\ + add r1, r12\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ +_0802224E:\n\ + ldr r3, [sp, 0x10]\n\ + cmp r3, 0x1\n\ + bne _08022262\n\ + mov r4, r10\n\ + cmp r4, 0\n\ + bne _08022262\n\ + ldr r1, _080222D4 @ =0x0001600c\n\ + add r1, r12\n\ + movs r0, 0x11\n\ + strb r0, [r1]\n\ +_08022262:\n\ + ldr r5, [sp, 0x10]\n\ + cmp r5, 0x2\n\ + bne _08022278\n\ + ldr r1, _080222D4 @ =0x0001600c\n\ + add r1, r12\n\ + ldr r0, [sp, 0x14]\n\ + ldrb r2, [r1]\n\ + cmp r0, r2\n\ + bne _08022278\n\ + movs r0, 0x11\n\ + strb r0, [r1]\n\ +_08022278:\n\ + ldr r0, _080222D4 @ =0x0001600c\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + beq _08022286\n\ + bl _080218E4\n\ +_08022286:\n\ + ldr r0, _080222D4 @ =0x0001600c\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + bne _0802229E\n\ + mov r3, r10\n\ + cmp r3, 0\n\ + bne _0802229E\n\ + ldr r1, _080222D8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x3\n\ +_0802229C:\n\ + str r0, [r1]\n\ +_0802229E:\n\ + add sp, 0x18\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080222B0: .4byte gHitMarker\n\ +_080222B4: .4byte gBattleTypeFlags\n\ +_080222B8: .4byte gProtectStructs\n\ +_080222BC: .4byte gBankAttacker\n\ +_080222C0: .4byte gBattleMoves\n\ +_080222C4: .4byte gCurrentMove\n\ +_080222C8: .4byte gBankTarget\n\ +_080222CC: .4byte gBattleMons\n\ +_080222D0: .4byte 0x02000000\n\ +_080222D4: .4byte 0x0001600c\n\ +_080222D8: .4byte gBattlescriptCurrInstr\n\ + .syntax divided" + ); +} +#endif // NONMATCHING + +static void atk4A_typecalc2(void) +{ + u8 flags = 0; + int i = 0; + u8 move_type = gBattleMoves[gCurrentMove].type; + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + gMoveHitWith[gBankTarget] = 0; + gBattleCommunication[6] = move_type; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) {break;} + else {i += 3; continue;} + } + + if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + { + if (gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + break; + } + if (gTypeEffectiveness[i + 2] == 5) + flags |= MOVESTATUS_NOTVERYEFFECTIVE; + if (gTypeEffectiveness[i + 2] == 20) + flags |= MOVESTATUS_SUPEREFFECTIVE; + } + //check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2) + { + if (gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + break; + } + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 5) + flags |= MOVESTATUS_NOTVERYEFFECTIVE; + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 20) + flags |= MOVESTATUS_SUPEREFFECTIVE; + } + } + i += 3; + } + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_NOEFFECT) && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 && + (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) && + gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleMoveFlags |= MOVESTATUS_MISSED; + gMoveHitWith[gBankTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + gProtectStructs[gBankAttacker].notEffective = 1; + + gBattlescriptCurrInstr++; +} + +static void atk4B_return_atk_to_ball(void) +{ + gActiveBank = gBankAttacker; + if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) + { + EmitReturnPokeToBall(0, 0); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr++; +} + +static void atk4C_copy_poke_data(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + gBattlePartyID[gActiveBank] = unk_2000000[0x16068 + gActiveBank]; + + EmitGetAttributes(0, 0, gBitTable[gBattlePartyID[gActiveBank]]); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static inline u8 get_knocked_off_byte(u8 bank) +{ + register u32 side asm("r2") = GetBankSide(bank); + register struct WishFutureKnock* dummy = &gWishFutureKnock; + register u8* aa = ((u8*)((u8*)(dummy))); + register u8* bb = aa + 0x29; + register u8* cc asm("r0") = side + bb; + return *cc; +} + +static void atk4D_switch_data_update(void) +{ + struct BattlePokemon OldData; + int i; + u8 *monData; + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + OldData = gBattleMons[gActiveBank]; + monData = (u8*)(&gBattleMons[gActiveBank]); + for (i = 0; i < sizeof(struct BattlePokemon); i++) + { + monData[i] = gBattleBufferB[gActiveBank][4 + i]; + } + + gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1; + gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2; + gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility); + //check knocked off item + if (get_knocked_off_byte(gActiveBank) & gBitTable[gBattlePartyID[gActiveBank]]) + { + gBattleMons[gActiveBank].item = 0; + } + + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) + { + for (i = 0; i < 8; i++) + { + gBattleMons[gActiveBank].statStages[i] = OldData.statStages[i]; + } + gBattleMons[gActiveBank].status2 = OldData.status2; + } + SwitchInClearStructs(); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 7; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; + gBattleTextBuff1[4] = EOS; + + gBattlescriptCurrInstr += 2; +} + +static void atk4E_switchin_anim(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER))) + { + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + } + gAbsentBankFlags &= ~(gBitTable[gActiveBank]); + EmitSendOutPoke(0, gBattlePartyID[gActiveBank], BSScriptRead8(gBattlescriptCurrInstr + 2)); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 3; +} + +static void atk4F_jump_if_cannot_switch(void) +{ + int val, to_cmp; + register struct Pokemon *party; + u8 r7; + //0x80 byte is used as a way of telling the function whether to not check status2/status3 + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1) & 0x7F); + if (!(BSScriptRead8(gBattlescriptCurrInstr + 1) & 0x80) + && ((gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + || (gStatuses3[gActiveBank] & STATUS3_ROOTED))) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + return; + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankSide(gActiveBank) == 1) + party = gEnemyParty; + else + party = gPlayerParty; + val = 0; + if (sub_803FBFC(sub_803FC34(gActiveBank)) == 1) + val = 3; + for (to_cmp = val + 3; val < to_cmp; val++) + { + if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[val], MON_DATA_IS_EGG) + && GetMonData(&party[val], MON_DATA_HP) != 0 + && gBattlePartyID[gActiveBank] != val) + break; + } + if (val == to_cmp) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } + else + { + if (GetBankSide(gActiveBank) == 1) + { + r7 = GetBankByPlayerAI(1); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + to_cmp = GetBankByPlayerAI(3); + else + to_cmp = r7; + party = gEnemyParty; + } + else + { + r7 = GetBankByPlayerAI(0); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + to_cmp = GetBankByPlayerAI(2); + else + to_cmp = r7; + party = gPlayerParty; + } + for (val = 0; val < 6; val++) + { + if (GetMonData(&party[val], MON_DATA_HP) != 0 + && GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[val], MON_DATA_IS_EGG) + && val != gBattlePartyID[r7] && val != gBattlePartyID[to_cmp]) + break; + } + if (val == 6) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } +} + +void sub_8022A3C(u8 unkown) +{ + //BATTLE_STRUCT->unk16064[gActiveBank] = gBattlePartyID[gActiveBank]; + ewram[gActiveBank + 0x16064] = gBattlePartyID[gActiveBank]; + EmitChoosePokemon(0, 1, unkown, 0, BATTLE_STRUCT->unk1606C[gActiveBank]); + MarkBufferBankForExecution(gActiveBank); +} + +/* +static void atk50_openpartyscreen(void) +{ + int i = 0; + int r9 = 0; + u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5) + { + if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE) + { + for (gActiveBank = i; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) + { + EmitLinkStandbyMsg(0, 2); + MarkBufferBankForExecution(gActiveBank); + } + else if (sub_8018018(gActiveBank, 6, 6) == 0 + && !gSpecialStatuses[gActiveBank].flag40) + { + sub_8022A3C(6); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + else + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= (~HITMARKER_FAINTED(gActiveBank)); + EmitLinkStandbyMsg(0, 2); + MarkBufferBankForExecution(gActiveBank); + } + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (!(gHitMarker >> 0x1C & gBitTable[0])) + { + + } + else if (sub_8018018(gActiveBank, 6, 6) == 0 + && !gSpecialStatuses[gActiveBank].flag40) + { + + } + else + { + + } + } + } +} +*/ + +__attribute__((naked)) +static void atk50_openpartyscreen(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x4\n\ + movs r7, 0\n\ + movs r0, 0\n\ + mov r9, r0\n\ + ldr r6, _08022B44 @ =gBattlescriptCurrInstr\n\ + ldr r1, [r6]\n\ + ldrb r2, [r1, 0x2]\n\ + ldrb r0, [r1, 0x3]\n\ + lsls r0, 8\n\ + orrs r2, r0\n\ + ldrb r0, [r1, 0x4]\n\ + lsls r0, 16\n\ + orrs r2, r0\n\ + ldrb r0, [r1, 0x5]\n\ + lsls r0, 24\n\ + orrs r2, r0\n\ + mov r8, r2\n\ + ldrb r2, [r1, 0x1]\n\ + adds r0, r2, 0\n\ + mov r12, r6\n\ + cmp r0, 0x5\n\ + beq _08022ACE\n\ + b _08022F74\n\ +_08022ACE:\n\ + ldr r0, _08022B48 @ =gBattleTypeFlags\n\ + ldrh r0, [r0]\n\ + movs r1, 0x41\n\ + ands r1, r0\n\ + cmp r1, 0x1\n\ + beq _08022BBC\n\ + ldr r1, _08022B4C @ =gActiveBank\n\ + strb r7, [r1]\n\ + ldr r0, _08022B50 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r7, r0\n\ + bcc _08022AE8\n\ + b _08022F62\n\ +_08022AE8:\n\ + ldr r7, _08022B54 @ =gHitMarker\n\ + ldr r6, _08022B58 @ =gBitTable\n\ + adds r4, r1, 0\n\ + ldr r0, _08022B5C @ =gAbsentBankFlags\n\ + mov r8, r0\n\ +_08022AF2:\n\ + ldrb r2, [r4]\n\ + lsls r0, r2, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r7]\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08022B94\n\ + adds r0, r2, 0\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022B60\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r7]\n\ + bics r0, r1\n\ + str r0, [r7]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022BA2\n\ + .align 2, 0\n\ +_08022B44: .4byte gBattlescriptCurrInstr\n\ +_08022B48: .4byte gBattleTypeFlags\n\ +_08022B4C: .4byte gActiveBank\n\ +_08022B50: .4byte gNoOfAllBanks\n\ +_08022B54: .4byte gHitMarker\n\ +_08022B58: .4byte gBitTable\n\ +_08022B5C: .4byte gAbsentBankFlags\n\ +_08022B60:\n\ + ldr r5, _08022B90 @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022BA2\n\ + movs r0, 0x6\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022BA2\n\ + .align 2, 0\n\ +_08022B90: .4byte gSpecialStatuses\n\ +_08022B94:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08022BA2:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + ldr r1, _08022BB8 @ =gNoOfAllBanks\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08022AF2\n\ + b _08022F62\n\ + .align 2, 0\n\ +_08022BB8: .4byte gNoOfAllBanks\n\ +_08022BBC:\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08022BC4\n\ + b _08022F62\n\ +_08022BC4:\n\ + ldr r0, _08022C1C @ =gHitMarker\n\ + mov r8, r0\n\ + ldr r0, [r0]\n\ + lsrs r5, r0, 28\n\ + ldr r6, _08022C20 @ =gBitTable\n\ + ldr r0, [r6]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08022C7E\n\ + ldr r4, _08022C24 @ =gActiveBank\n\ + strb r7, [r4]\n\ + movs r0, 0\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022C2C\n\ + ldr r2, _08022C28 @ =gAbsentBankFlags\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + mov r2, r8\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022C7E\n\ + .align 2, 0\n\ +_08022C1C: .4byte gHitMarker\n\ +_08022C20: .4byte gBitTable\n\ +_08022C24: .4byte gActiveBank\n\ +_08022C28: .4byte gAbsentBankFlags\n\ +_08022C2C:\n\ + ldr r6, _08022C60 @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r6\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022C6C\n\ + ldr r0, _08022C64 @ =0x02000000\n\ + ldr r1, _08022C68 @ =0x0001606a\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022C7E\n\ + .align 2, 0\n\ +_08022C60: .4byte gSpecialStatuses\n\ +_08022C64: .4byte 0x02000000\n\ +_08022C68: .4byte 0x0001606a\n\ +_08022C6C:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + movs r2, 0x1\n\ + mov r9, r2\n\ +_08022C7E:\n\ + ldr r6, _08022CD8 @ =gBitTable\n\ + ldr r0, [r6, 0x8]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08022D40\n\ + ldr r0, [r6]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _08022D40\n\ + ldr r4, _08022CDC @ =gActiveBank\n\ + movs r0, 0x2\n\ + strb r0, [r4]\n\ + movs r0, 0x2\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022CE8\n\ + ldr r2, _08022CE0 @ =gAbsentBankFlags\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r2, _08022CE4 @ =gHitMarker\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022D40\n\ + .align 2, 0\n\ +_08022CD8: .4byte gBitTable\n\ +_08022CDC: .4byte gActiveBank\n\ +_08022CE0: .4byte gAbsentBankFlags\n\ +_08022CE4: .4byte gHitMarker\n\ +_08022CE8:\n\ + ldr r6, _08022D1C @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r6\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022D28\n\ + ldr r0, _08022D20 @ =0x02000000\n\ + ldr r1, _08022D24 @ =0x00016068\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022D40\n\ + .align 2, 0\n\ +_08022D1C: .4byte gSpecialStatuses\n\ +_08022D20: .4byte 0x02000000\n\ +_08022D24: .4byte 0x00016068\n\ +_08022D28:\n\ + movs r0, 0x1\n\ + mov r2, r9\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _08022D40\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08022D40:\n\ + ldr r6, _08022D90 @ =gBitTable\n\ + ldr r0, [r6, 0x4]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08022DF6\n\ + ldr r4, _08022D94 @ =gActiveBank\n\ + movs r0, 0x1\n\ + strb r0, [r4]\n\ + movs r0, 0x1\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022DA0\n\ + ldr r2, _08022D98 @ =gAbsentBankFlags\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r2, _08022D9C @ =gHitMarker\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022DF6\n\ + .align 2, 0\n\ +_08022D90: .4byte gBitTable\n\ +_08022D94: .4byte gActiveBank\n\ +_08022D98: .4byte gAbsentBankFlags\n\ +_08022D9C: .4byte gHitMarker\n\ +_08022DA0:\n\ + ldr r6, _08022DD4 @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r6\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022DE0\n\ + ldr r0, _08022DD8 @ =0x02000000\n\ + ldr r1, _08022DDC @ =0x0001606b\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022DF6\n\ + .align 2, 0\n\ +_08022DD4: .4byte gSpecialStatuses\n\ +_08022DD8: .4byte 0x02000000\n\ +_08022DDC: .4byte 0x0001606b\n\ +_08022DE0:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + movs r0, 0x2\n\ + mov r2, r9\n\ + orrs r2, r0\n\ + mov r9, r2\n\ +_08022DF6:\n\ + ldr r6, _08022E50 @ =gBitTable\n\ + ldr r0, [r6, 0xC]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08022EB8\n\ + ldr r0, [r6, 0x4]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _08022EB8\n\ + ldr r4, _08022E54 @ =gActiveBank\n\ + movs r0, 0x3\n\ + strb r0, [r4]\n\ + movs r0, 0x3\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022E60\n\ + ldr r2, _08022E58 @ =gAbsentBankFlags\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r2, _08022E5C @ =gHitMarker\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022EB8\n\ + .align 2, 0\n\ +_08022E50: .4byte gBitTable\n\ +_08022E54: .4byte gActiveBank\n\ +_08022E58: .4byte gAbsentBankFlags\n\ +_08022E5C: .4byte gHitMarker\n\ +_08022E60:\n\ + ldr r6, _08022E94 @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r6\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022EA0\n\ + ldr r0, _08022E98 @ =0x02000000\n\ + ldr r1, _08022E9C @ =0x00016069\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022EB8\n\ + .align 2, 0\n\ +_08022E94: .4byte gSpecialStatuses\n\ +_08022E98: .4byte 0x02000000\n\ +_08022E9C: .4byte 0x00016069\n\ +_08022EA0:\n\ + movs r0, 0x2\n\ + mov r2, r9\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + bne _08022EB8\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08022EB8:\n\ + ldr r1, _08022EE8 @ =gSpecialStatuses\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022F0C\n\ + adds r0, r1, 0\n\ + adds r0, 0x28\n\ + ldrb r0, [r0]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022F0C\n\ + cmp r5, 0\n\ + beq _08022F0C\n\ + ldr r0, _08022EEC @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r0, _08022EF0 @ =gBitTable\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _08022EF8\n\ + ldr r1, _08022EF4 @ =gActiveBank\n\ + movs r0, 0x2\n\ + strb r0, [r1]\n\ + b _08022EFC\n\ + .align 2, 0\n\ +_08022EE8: .4byte gSpecialStatuses\n\ +_08022EEC: .4byte gAbsentBankFlags\n\ +_08022EF0: .4byte gBitTable\n\ +_08022EF4: .4byte gActiveBank\n\ +_08022EF8:\n\ + ldr r0, _08022F3C @ =gActiveBank\n\ + strb r1, [r0]\n\ +_08022EFC:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldr r0, _08022F3C @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ +_08022F0C:\n\ + ldr r1, _08022F40 @ =gSpecialStatuses\n\ + ldrb r0, [r1, 0x14]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022F62\n\ + adds r0, r1, 0\n\ + adds r0, 0x3C\n\ + ldrb r0, [r0]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022F62\n\ + cmp r5, 0\n\ + beq _08022F62\n\ + ldr r0, _08022F44 @ =gAbsentBankFlags\n\ + ldrb r0, [r0]\n\ + ldr r1, _08022F48 @ =gBitTable\n\ + ldr r1, [r1, 0x4]\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08022F4C\n\ + ldr r1, _08022F3C @ =gActiveBank\n\ + movs r0, 0x3\n\ + b _08022F50\n\ + .align 2, 0\n\ +_08022F3C: .4byte gActiveBank\n\ +_08022F40: .4byte gSpecialStatuses\n\ +_08022F44: .4byte gAbsentBankFlags\n\ +_08022F48: .4byte gBitTable\n\ +_08022F4C:\n\ + ldr r1, _08022F6C @ =gActiveBank\n\ + movs r0, 0x1\n\ +_08022F50:\n\ + strb r0, [r1]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldr r0, _08022F6C @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ +_08022F62:\n\ + ldr r1, _08022F70 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x6\n\ + str r0, [r1]\n\ + b _08023302\n\ + .align 2, 0\n\ +_08022F6C: .4byte gActiveBank\n\ +_08022F70: .4byte gBattlescriptCurrInstr\n\ +_08022F74:\n\ + cmp r0, 0x6\n\ + beq _08022F7A\n\ + b _08023170\n\ +_08022F7A:\n\ + ldr r0, _08022FF0 @ =gBattleTypeFlags\n\ + ldrh r2, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08022F88\n\ + b _0802310C\n\ +_08022F88:\n\ + movs r0, 0x1\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _08022F92\n\ + b _0802310C\n\ +_08022F92:\n\ + ldr r7, _08022FF4 @ =gHitMarker\n\ + ldr r0, [r7]\n\ + lsrs r5, r0, 28\n\ + ldr r4, _08022FF8 @ =gBitTable\n\ + ldr r0, [r4, 0x8]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _0802303A\n\ + ldr r0, [r4]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _0802303A\n\ + ldr r6, _08022FFC @ =gActiveBank\n\ + movs r0, 0x2\n\ + strb r0, [r6]\n\ + ldr r0, _08023000 @ =gBattleBufferB\n\ + ldrb r1, [r0, 0x1]\n\ + movs r0, 0x2\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08023008\n\ + ldr r2, _08023004 @ =gAbsentBankFlags\n\ + ldrb r0, [r6]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r0, [r6]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r7]\n\ + bics r0, r1\n\ + str r0, [r7]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r6]\n\ + bl MarkBufferBankForExecution\n\ + b _0802303A\n\ + .align 2, 0\n\ +_08022FF0: .4byte gBattleTypeFlags\n\ +_08022FF4: .4byte gHitMarker\n\ +_08022FF8: .4byte gBitTable\n\ +_08022FFC: .4byte gActiveBank\n\ +_08023000: .4byte gBattleBufferB\n\ +_08023004: .4byte gAbsentBankFlags\n\ +_08023008:\n\ + ldr r4, _08023098 @ =gSpecialStatuses\n\ + ldrb r0, [r6]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r4\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _0802303A\n\ + ldr r0, _0802309C @ =0x02000000\n\ + ldr r1, _080230A0 @ =0x00016068\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r6]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_0802303A:\n\ + ldr r4, _080230A4 @ =gBitTable\n\ + ldr r0, [r4, 0xC]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _080230EE\n\ + ldr r0, [r4, 0x4]\n\ + ands r5, r0\n\ + cmp r5, 0\n\ + beq _080230EE\n\ + ldr r5, _080230A8 @ =gActiveBank\n\ + movs r0, 0x3\n\ + strb r0, [r5]\n\ + ldr r0, _080230AC @ =gBattleBufferB\n\ + ldr r2, _080230B0 @ =0x00000201\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r0, 0x3\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080230BC\n\ + ldr r2, _080230B4 @ =gAbsentBankFlags\n\ + ldrb r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r2, _080230B8 @ =gHitMarker\n\ + ldrb r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r5]\n\ + bl MarkBufferBankForExecution\n\ + b _080230EE\n\ + .align 2, 0\n\ +_08023098: .4byte gSpecialStatuses\n\ +_0802309C: .4byte 0x02000000\n\ +_080230A0: .4byte 0x00016068\n\ +_080230A4: .4byte gBitTable\n\ +_080230A8: .4byte gActiveBank\n\ +_080230AC: .4byte gBattleBufferB\n\ +_080230B0: .4byte 0x00000201\n\ +_080230B4: .4byte gAbsentBankFlags\n\ +_080230B8: .4byte gHitMarker\n\ +_080230BC:\n\ + ldr r4, _080230FC @ =gSpecialStatuses\n\ + ldrb r0, [r5]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r4\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _080230EE\n\ + ldr r0, _08023100 @ =0x02000000\n\ + ldr r1, _08023104 @ =0x00016069\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r5]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_080230EE:\n\ + ldr r1, _08023108 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x6\n\ + str r0, [r1]\n\ + mov r12, r1\n\ + b _08023110\n\ + .align 2, 0\n\ +_080230FC: .4byte gSpecialStatuses\n\ +_08023100: .4byte 0x02000000\n\ +_08023104: .4byte 0x00016069\n\ +_08023108: .4byte gBattlescriptCurrInstr\n\ +_0802310C:\n\ + adds r0, r1, 0x6\n\ + str r0, [r6]\n\ +_08023110:\n\ + ldr r0, _08023160 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + lsrs r5, r0, 28\n\ + ldr r1, _08023164 @ =gBank1\n\ + movs r0, 0\n\ + strb r0, [r1]\n\ + ldr r4, _08023168 @ =gBitTable\n\ + ldr r2, [r4]\n\ + ands r2, r5\n\ + ldr r6, _0802316C @ =gNoOfAllBanks\n\ + cmp r2, 0\n\ + bne _0802314C\n\ + adds r7, r6, 0\n\ + ldrb r0, [r6]\n\ + cmp r2, r0\n\ + bcs _0802314C\n\ + adds r3, r1, 0\n\ +_08023132:\n\ + ldrb r0, [r3]\n\ + adds r0, 0x1\n\ + strb r0, [r3]\n\ + ldrb r2, [r3]\n\ + lsls r0, r2, 2\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _0802314C\n\ + ldrb r0, [r7]\n\ + cmp r2, r0\n\ + bcc _08023132\n\ +_0802314C:\n\ + ldrb r0, [r1]\n\ + ldrb r6, [r6]\n\ + cmp r0, r6\n\ + beq _08023156\n\ + b _08023302\n\ +_08023156:\n\ + mov r1, r8\n\ + mov r2, r12\n\ + str r1, [r2]\n\ + b _08023302\n\ + .align 2, 0\n\ +_08023160: .4byte gHitMarker\n\ +_08023164: .4byte gBank1\n\ +_08023168: .4byte gBitTable\n\ +_0802316C: .4byte gNoOfAllBanks\n\ +_08023170:\n\ + movs r0, 0x80\n\ + ands r0, r2\n\ + movs r5, 0x1\n\ + cmp r0, 0\n\ + beq _0802317C\n\ + movs r5, 0\n\ +_0802317C:\n\ + movs r0, 0x7F\n\ + ands r0, r2\n\ + bl GetBattleBank\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r1, _080231A4 @ =gSpecialStatuses\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + bge _080231A8\n\ + ldr r0, [r6]\n\ + adds r0, 0x6\n\ + str r0, [r6]\n\ + b _08023302\n\ + .align 2, 0\n\ +_080231A4: .4byte gSpecialStatuses\n\ +_080231A8:\n\ + adds r0, r7, 0\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080231F8\n\ + ldr r2, _080231E8 @ =gActiveBank\n\ + strb r7, [r2]\n\ + ldr r3, _080231EC @ =gAbsentBankFlags\n\ + ldr r4, _080231F0 @ =gBitTable\n\ + ldrb r0, [r2]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ldrb r1, [r3]\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + ldr r3, _080231F4 @ =gHitMarker\n\ + ldrb r0, [r2]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r3]\n\ + bics r0, r1\n\ + str r0, [r3]\n\ + mov r0, r8\n\ + str r0, [r6]\n\ + b _08023302\n\ + .align 2, 0\n\ +_080231E8: .4byte gActiveBank\n\ +_080231EC: .4byte gAbsentBankFlags\n\ +_080231F0: .4byte gBitTable\n\ +_080231F4: .4byte gHitMarker\n\ +_080231F8:\n\ + ldr r4, _080232A0 @ =gActiveBank\n\ + strb r7, [r4]\n\ + ldr r3, _080232A4 @ =0x02000000\n\ + ldrb r0, [r4]\n\ + ldr r2, _080232A8 @ =0x00016064\n\ + adds r1, r0, r2\n\ + adds r1, r3\n\ + ldr r2, _080232AC @ =gBattlePartyID\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r1, [r4]\n\ + movs r0, 0x2\n\ + eors r0, r1\n\ + ldr r1, _080232B0 @ =0x00016068\n\ + adds r0, r1\n\ + adds r0, r3\n\ + ldrb r2, [r0]\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + ldr r1, _080232B4 @ =0x0001606c\n\ + adds r3, r1\n\ + adds r0, r3\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + adds r1, r5, 0\n\ + movs r3, 0\n\ + bl EmitChoosePokemon\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, [r6]\n\ + adds r0, 0x6\n\ + str r0, [r6]\n\ + ldrb r0, [r4]\n\ + bl GetBankIdentity\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0802325A\n\ + ldr r1, _080232B8 @ =gBattleResults\n\ + ldrb r0, [r1, 0x2]\n\ + cmp r0, 0xFE\n\ + bhi _0802325A\n\ + adds r0, 0x1\n\ + strb r0, [r1, 0x2]\n\ +_0802325A:\n\ + ldr r0, _080232BC @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080232C4\n\ + ldr r1, _080232A0 @ =gActiveBank\n\ + movs r0, 0\n\ + strb r0, [r1]\n\ + ldr r0, _080232C0 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08023302\n\ + adds r4, r1, 0\n\ +_08023276:\n\ + ldrb r0, [r4]\n\ + cmp r0, r7\n\ + beq _0802328A\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_0802328A:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + ldr r1, _080232C0 @ =gNoOfAllBanks\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08023276\n\ + b _08023302\n\ + .align 2, 0\n\ +_080232A0: .4byte gActiveBank\n\ +_080232A4: .4byte 0x02000000\n\ +_080232A8: .4byte 0x00016064\n\ +_080232AC: .4byte gBattlePartyID\n\ +_080232B0: .4byte 0x00016068\n\ +_080232B4: .4byte 0x0001606c\n\ +_080232B8: .4byte gBattleResults\n\ +_080232BC: .4byte gBattleTypeFlags\n\ +_080232C0: .4byte gNoOfAllBanks\n\ +_080232C4:\n\ + adds r0, r7, 0\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + eors r0, r1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl GetBankByPlayerAI\n\ + ldr r4, _08023310 @ =gActiveBank\n\ + strb r0, [r4]\n\ + ldr r0, _08023314 @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r2, _08023318 @ =gBitTable\n\ + ldrb r3, [r4]\n\ + lsls r0, r3, 2\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _080232F4\n\ + movs r0, 0x2\n\ + eors r3, r0\n\ + strb r3, [r4]\n\ +_080232F4:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08023302:\n\ + add sp, 0x4\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08023310: .4byte gActiveBank\n\ +_08023314: .4byte gAbsentBankFlags\n\ +_08023318: .4byte gBitTable\n\ + .syntax divided"); +} + +static void atk51_switch_handle_order(void) +{ + int i; + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + { + case 0: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleBufferB[i][0] == 0x22) + ewram[i + 0x16068] = gBattleBufferB[i][1]; + } + break; + case 1: + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + sub_8012258(gActiveBank); + break; + case 2: + gBattleCommunication[0] = gBattleBufferB[gActiveBank][1]; + ewram[gActiveBank + 0x16068] = gBattleBufferB[gActiveBank][1]; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + + ewram[(gActiveBank) * 3 + (0x1606C + 0)] &= 0xF; + ewram[(gActiveBank) * 3 + (0x1606C + 0)] |= (gBattleBufferB[gActiveBank][2] & 0xF0); + ewram[(gActiveBank) * 3 + (0x1606C + 1)] = gBattleBufferB[gActiveBank][3]; + + ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 0)] &= (0xF0); + ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 0)] |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4; + ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 2)] = gBattleBufferB[gActiveBank][3]; + } + else + sub_8012258(gActiveBank); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 6; + gBattleTextBuff1[2] = gBattleMons[gBankAttacker].species; + gBattleTextBuff1[3] = gBattleMons[gBankAttacker].species >> 8; + gBattleTextBuff1[4] = 0xFF; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 7; + gBattleTextBuff2[2] = gActiveBank; + gBattleTextBuff2[3] = gBattleBufferB[gActiveBank][1]; + gBattleTextBuff2[4] = 0xFF; + break; + } + gBattlescriptCurrInstr += 3; +} + +static void atk52_switch_in_effects(void) +{ + int i; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + sub_80157C4(gActiveBank); + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + gSpecialStatuses[gActiveBank].flag40 = 0; + + if (!(gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES) + && gBattleMons[gActiveBank].type1 != TYPE_FLYING && gBattleMons[gActiveBank].type2 != TYPE_FLYING && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE) + { + u8 spikesDmg; + + gSideAffecting[GetBankSide(gActiveBank)] |= SIDE_STATUS_SPIKES_DAMAGED; + + spikesDmg = (5 - gSideTimer[GetBankSide(gActiveBank)].spikesAmount) * 2; + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + BATTLE_STRUCT->scriptingActive = gActiveBank; + b_movescr_stack_push_cursor(); + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + gBattlescriptCurrInstr = gUnknown_081D919F; + else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1) + gBattlescriptCurrInstr = gUnknown_081D9171; + else + gBattlescriptCurrInstr = gUnknown_081D91CD; + } + else + { + if (gBattleMons[gActiveBank].ability == ABILITY_TRUANT) + { + gDisableStructs[gActiveBank].truantCounter = 1; + } + + if (AbilityBattleEffects(0, gActiveBank, 0, 0, 0) == 0 && ItemBattleEffects(0, gActiveBank, 0) == 0) + { + gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == gActiveBank) + gUnknown_02024A76[i] = 0xC; + } + + for (i = 0; i < gNoOfAllBanks; i++) + { + *(HP_ON_SWITCHOUT + GetBankSide(i)) = gBattleMons[i].hp; + } + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5) + { + u32 hitmark = gHitMarker >> 0x1C; + gBank1++; + while (1) + { + if (hitmark & gBitTable[gBank1] && !(gAbsentBankFlags & gBitTable[gBank1])) + break; + if (gBank1 >= gNoOfAllBanks) + break; + gBank1++; + } + } + gBattlescriptCurrInstr += 2; + } + } +} + +static void atk53_trainer_slide(void) +{ + if (!BSScriptRead8(gBattlescriptCurrInstr + 1)) + gActiveBank = GetBankByPlayerAI(0); + else + gActiveBank = GetBankByPlayerAI(1); + + EmitTrainerSlide(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk54_effectiveness_sound(void) +{ + gActiveBank = gBankAttacker; + EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 3; +} + +static void atk55_play_sound(void) +{ + gActiveBank = gBankAttacker; + Emitcmd44(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 3; +} + +static void atk56_fainting_cry(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitFaintingCry(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk57(void) +{ + gActiveBank = GetBankByPlayerAI(0); + Emitcmd55(0, gBattleOutcome); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 1; +} + +static void atk58_return_to_ball(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitReturnPokeToBall(0, 1); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +void atk59_learnmove_inbattle(void) +{ + u8* loc1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* loc2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); + + u16 ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], BSScriptRead8(gBattlescriptCurrInstr + 9)); + while (ret == 0xFFFE) + ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0); + + if (ret == 0) + { + gBattlescriptCurrInstr = loc2; + } + else if (ret == 0xFFFF) + { + gBattlescriptCurrInstr += 10; + } + else + { + gActiveBank = GetBankByPlayerAI(0); + if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if + { + gActiveBank = GetBankByPlayerAI(2); + if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); + } + gBattlescriptCurrInstr = loc1; + } +} + +void sub_8023A80(void) +{ + sub_802BBD4(0x18, 8, 0x1D, 0xD, 0); + InitWindow(&gUnknown_03004210, gUnknown_08400D7A, 0x100, 0x19, 0x9); + sub_8002F44(&gUnknown_03004210); + sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); +} + +void sub_8023AD8(void) +{ + sub_802BBD4(0x18, 8, 0x1D, 0xD, 1); + DestroyMenuCursor(); +} + +static void atk5A(void) +{ + gActiveBank = 0; + switch (BATTLE_STRUCT->atk5A_StateTracker) + { + case 0: + sub_8023A80(); + BATTLE_STRUCT->atk5A_StateTracker++; + gBattleCommunication[1] = 0; + sub_802BC6C(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[1] == 0) + { + sub_8023AD8(); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + BATTLE_STRUCT->atk5A_StateTracker++; + return; + } + goto state_tracker_4; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + state_tracker_4: + BATTLE_STRUCT->atk5A_StateTracker = 4; + } + break; + case 2: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + BATTLE_STRUCT->atk5A_StateTracker++; + } + break; + case 3: + if (!gPaletteFade.active && gMain.callback2 == sub_800F808) + { + u8 move_pos = sub_809FA30(); + if (move_pos == 4) + { + BATTLE_STRUCT->atk5A_StateTracker = 4; + } + else + { + u16 move = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MOVE1 + move_pos); + if (IsHMMove2(move)) + { + PrepareStringBattle(0x13F, gActiveBank); + BATTLE_STRUCT->atk5A_StateTracker = 5; + } + else + { + u8 *ptr; + + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + ptr = gBattleTextBuff2; + { + ptr[0] = 0xFD; + ptr[1] = 2; + ptr[2] = move; + ptr[3] = ((move & 0xFF00) >> 8); + ptr += 4; + } + ptr[0] = 0xFF; + RemoveMonPPBonus(&gPlayerParty[BATTLE_STRUCT->expGetterID], move_pos); + SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], gMoveToLearn, move_pos); + if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[0].unk18_b & gBitTable[move_pos])) + { + RemoveBattleMonPPBonus(&gBattleMons[0], move_pos); + SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos); + } + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[2].unk18_b & gBitTable[move_pos])) + { + RemoveBattleMonPPBonus(&gBattleMons[2], move_pos); + SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, move_pos); + } + } + } + } + break; + case 4: + sub_8023AD8(); + gBattlescriptCurrInstr += 5; + break; + case 5: + if (gBattleExecBuffer == 0) + { + BATTLE_STRUCT->atk5A_StateTracker = 2; + } + break; + } +} + +static void atk5B_80256E0(void) +{ + switch (BATTLE_STRUCT->atk5A_StateTracker) + { + case 0: + sub_8023A80(); + BATTLE_STRUCT->atk5A_StateTracker++; + gBattleCommunication[1] = 0; + sub_802BC6C(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[1] != 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + sub_8023AD8(); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + sub_8023AD8(); + } + } +} + +static void atk5C_hitanimation(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + gBattlescriptCurrInstr += 2; + else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBank].substituteHP == 0) + { + EmitHitAnimation(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } + else + gBattlescriptCurrInstr += 2; +} + +#define MONEY_UNKNOWN ((*(u8*)(0x02017000 + 0x94))) + +#ifdef NONMATCHING +static void atk5D_getmoneyreward(void) +{ + int i = 0; + u8 r5 = 0; + u32 money_to_give; + if (gTrainerBattleOpponent == 0x400) + { + money_to_give = 2 * BATTLE_STRUCT->moneyMultiplier * MONEY_UNKNOWN; + } + else + { + switch(gTrainers[gTrainerBattleOpponent].partyFlags) + { + case 0: + { + const struct PokeTrainerData1 *data = &gTrainers[gTrainerBattleOpponent].party->noItemNoMoves; + r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl; + } + break; + case 2: + { + const struct PokeTrainerData2 *data = &gTrainers[gTrainerBattleOpponent].party->itemNoMoves; + r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl; + } + break; + case 1: + case 3: + { + const struct PokeTrainerData3 *data = &gTrainers[gTrainerBattleOpponent].party->itemMoves; + r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl; + } + break; + } + for (; gTrainerMoney[i * 4] != 0xFF && gTrainerMoney[i * 4 + 1] != gTrainers[gTrainerBattleOpponent].trainerClass ; i++) {} + + money_to_give = (r5 << 2) * BATTLE_STRUCT->moneyMultiplier; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + money_to_give = 2 * gTrainerMoney[i * 4 + 1] * money_to_give; + else + money_to_give = 1 * gTrainerMoney[i * 4 + 1] * money_to_give; + } + + AddMoney(&gSaveBlock1.money, money_to_give); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 4; + gBattleTextBuff1[3] = 5; + gBattleTextBuff1[4] = BYTE0(money_to_give); + gBattleTextBuff1[5] = BYTE1(money_to_give); + gBattleTextBuff1[6] = BYTE2(money_to_give); + gBattleTextBuff1[7] = BYTE3(money_to_give); + gBattleTextBuff1[8] = 0xFF; + + gBattlescriptCurrInstr += 1; +} +#else +__attribute__((naked)) +static void atk5D_getmoneyreward(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + movs r6, 0\n\ + movs r5, 0\n\ + ldr r0, _08024048 @ =gTrainerBattleOpponent\n\ + ldrh r2, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 3\n\ + cmp r2, r1\n\ + bne _08024058\n\ + ldr r0, _0802404C @ =0x02017000\n\ + adds r1, r0, 0\n\ + adds r1, 0x94\n\ + ldrb r2, [r1]\n\ + ldr r1, _08024050 @ =0xfffff056\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r4, r2, 0\n\ + muls r4, r0\n\ + ldr r0, _08024054 @ =gSaveBlock1 + 0x490\n\ + mov r8, r0\n\ + b _08024140\n\ + .align 2, 0\n\ +_08024048: .4byte gTrainerBattleOpponent\n\ +_0802404C: .4byte 0x02017000\n\ +_08024050: .4byte 0xfffff056\n\ +_08024054: .4byte gSaveBlock1 + 0x490\n\ +_08024058:\n\ + ldr r2, _08024074 @ =gTrainers\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r3, r0, 3\n\ + adds r4, r3, r2\n\ + ldrb r1, [r4]\n\ + cmp r1, 0x1\n\ + beq _080240AE\n\ + cmp r1, 0x1\n\ + bgt _08024078\n\ + cmp r1, 0\n\ + beq _08024082\n\ + b _080240C4\n\ + .align 2, 0\n\ +_08024074: .4byte gTrainers\n\ +_08024078:\n\ + cmp r1, 0x2\n\ + beq _08024098\n\ + cmp r1, 0x3\n\ + beq _080240AE\n\ + b _080240C4\n\ +_08024082:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + subs r0, 0x8\n\ + b _080240C2\n\ +_08024098:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + subs r0, 0x8\n\ + b _080240C2\n\ +_080240AE:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + subs r0, 0x10\n\ +_080240C2:\n\ + ldrb r5, [r0, 0x2]\n\ +_080240C4:\n\ + ldr r0, _08024120 @ =gTrainerMoney\n\ + lsls r1, r6, 2\n\ + adds r3, r1, r0\n\ + ldrb r1, [r3]\n\ + mov r12, r0\n\ + lsls r4, r5, 2\n\ + ldr r5, _08024124 @ =0x02000000\n\ + ldr r7, _08024128 @ =gBattleTypeFlags\n\ + ldr r0, _0802412C @ =gSaveBlock1 + 0x490\n\ + mov r8, r0\n\ + cmp r1, 0xFF\n\ + beq _080240FE\n\ + ldr r2, _08024130 @ =gTrainers\n\ + ldr r0, _08024134 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r2\n\ + ldrb r2, [r0, 0x1]\n\ + adds r1, r3, 0\n\ +_080240EE:\n\ + ldrb r0, [r1]\n\ + cmp r0, r2\n\ + beq _080240FE\n\ + adds r1, 0x4\n\ + adds r6, 0x1\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xFF\n\ + bne _080240EE\n\ +_080240FE:\n\ + ldr r1, _08024138 @ =0x00016056\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0\n\ + muls r3, r0\n\ + lsls r0, r6, 2\n\ + add r0, r12\n\ + ldrb r2, [r0, 0x1]\n\ + ldrh r1, [r7]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802413C\n\ + lsls r0, r2, 1\n\ + adds r4, r3, 0\n\ + muls r4, r0\n\ + b _08024140\n\ + .align 2, 0\n\ +_08024120: .4byte gTrainerMoney\n\ +_08024124: .4byte 0x02000000\n\ +_08024128: .4byte gBattleTypeFlags\n\ +_0802412C: .4byte gSaveBlock1 + 0x490\n\ +_08024130: .4byte gTrainers\n\ +_08024134: .4byte gTrainerBattleOpponent\n\ +_08024138: .4byte 0x00016056\n\ +_0802413C:\n\ + adds r4, r3, 0\n\ + muls r4, r2\n\ +_08024140:\n\ + mov r0, r8\n\ + adds r1, r4, 0\n\ + bl AddMoney\n\ + ldr r1, _0802418C @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x1\n\ + strb r0, [r1, 0x1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x2]\n\ + movs r0, 0x5\n\ + strb r0, [r1, 0x3]\n\ + strb r4, [r1, 0x4]\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r4\n\ + lsrs r0, 8\n\ + strb r0, [r1, 0x5]\n\ + movs r0, 0xFF\n\ + lsls r0, 16\n\ + ands r0, r4\n\ + lsrs r0, 16\n\ + strb r0, [r1, 0x6]\n\ + lsrs r0, r4, 24\n\ + strb r0, [r1, 0x7]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x8]\n\ + ldr r1, _08024190 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802418C: .4byte gBattleTextBuff1\n\ +_08024190: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} +#endif //NONMATCHING + +static void atk5E_8025A70(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + switch (gBattleCommunication[0]) + { + case 0: + EmitGetAttributes(0, REQUEST_ALL_BATTLE, 0); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[0]++; + break; + case 1: + if (gBattleExecBuffer == 0) + { + int i; + struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBank][4]; + for (i = 0; i < 4; i++) + { + gBattleMons[gActiveBank].moves[i] = bufferPoke->moves[i]; + gBattleMons[gActiveBank].pp[i] = bufferPoke->pp[i]; + } + gBattlescriptCurrInstr += 2; + } + break; + } +} + +static void atk5F_8025B24(void) +{ + gActiveBank = gBankAttacker; + gBankAttacker = gBankTarget; + gBankTarget = gActiveBank; + //what is xor... + if (gHitMarker & HITMARKER_PURSUIT_TRAP) + gHitMarker &= ~(HITMARKER_PURSUIT_TRAP); + else + gHitMarker |= HITMARKER_PURSUIT_TRAP; + gBattlescriptCurrInstr++; +} + +static void atk60_increment_gamestat(void) +{ + if (GetBankSide(gBankAttacker) == 0) + { + IncrementGameStat(BSScriptRead8(gBattlescriptCurrInstr + 1)); + } + gBattlescriptCurrInstr += 2; +} + +struct hp_status +{ + u16 hp; + u32 status; +}; + +static void atk61_8025BA4(void) +{ + int i; + struct Pokemon* party; + struct hp_status hpStatus[6]; + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (GetBankSide(gActiveBank) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES2) == 0 || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = 0xFFFF; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&party[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&party[i], MON_DATA_STATUS); + } + } + Emitcmd48(0, (u8*)(hpStatus), 1); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk62_08025C6C(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + Emitcmd49(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk63_jumptorandomattack(void) +{ + if (BSScriptRead8(gBattlescriptCurrInstr + 1)) + gCurrentMove = gRandomMove; + else + gUnknown_02024BE8 = gCurrentMove = gRandomMove; + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; +} + +static void atk64_statusanimation(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, 0, gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 2; + } +} + +static void atk65_status2animation(void) +{ + if (gBattleExecBuffer == 0) + { + u32 possible_to_anim; + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + possible_to_anim = BSScriptRead32(gBattlescriptCurrInstr + 2); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, 1, gBattleMons[gActiveBank].status2 & possible_to_anim); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 6; + } +} + +static void atk66_chosenstatusanimation(void) +{ + if (gBattleExecBuffer == 0) + { + u32 status; + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + status = BSScriptRead32(gBattlescriptCurrInstr + 3); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, BSScriptRead8(gBattlescriptCurrInstr + 2), status); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 7; + } +} + +static void atk67_8025ECC(void) +{ + switch (gBattleCommunication[0]) + { + case 0: + sub_8023A80(); + gBattleCommunication[0]++; + gBattleCommunication[1] = 0; + sub_802BC6C(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 1; + sub_802BC6C(); + } + if (gMain.newKeys & B_BUTTON) + { + gBattleCommunication[1] = 1; + PlaySE(SE_SELECT); + sub_8023AD8(); + gBattlescriptCurrInstr++; + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8023AD8(); + gBattlescriptCurrInstr++; + } + break; + } +} + +static void atk68_80246A0(void) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + gUnknown_02024A76[i] = 0xC; + } + gBattlescriptCurrInstr++; +} + +static void atk69_dmg_adjustment2(void) //literally a copy of atk07 except theres no rand dmg modifier... +{ + u8 hold_effect, quality; + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemBattle(gBankTarget, hold_effect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured + && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + goto END; + } + if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} + +void atk6A_removeitem(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + #define USED_HELD_ITEMS(bank) (*(u16 *)&ewram[0x160CC + 2 * (bank)]) + USED_HELD_ITEMS(gActiveBank) = gBattleMons[gActiveBank].item; + + gBattleMons[gActiveBank].item = 0; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk6B_atknameinbuff1(void) +{ + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 7; + gBattleTextBuff1[2] = gBankAttacker; + gBattleTextBuff1[3] = gBattlePartyID[gBankAttacker]; + gBattleTextBuff1[4] = 0xFF; + gBattlescriptCurrInstr++; +} + +#ifdef NONMATCHING +static void atk6C_lvlbox_display(void) +{ + u8 r1 = 0; + u8 r7 = 0; + switch (BATTLE_STRUCT->atk6C_statetracker) + { + case 0: + sub_802BBD4(0xB, 0, 0x1D, 0x7, r1); + StringCopy(gStringVar4, gUnknown_08400D9F); + + } +} + +#else +__attribute__((naked)) +static void atk6C_lvlbox_display(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + movs r1, 0\n\ + movs r7, 0\n\ + ldr r0, _08024928 @ =0x02000000\n\ + mov r10, r0\n\ + ldr r4, _0802492C @ =0x0001609c\n\ + add r4, r10\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x1\n\ + bne _0802491C\n\ + b _08024AF4\n\ +_0802491C:\n\ + cmp r0, 0x1\n\ + bgt _08024930\n\ + cmp r0, 0\n\ + beq _0802493E\n\ + b _08024C38\n\ + .align 2, 0\n\ +_08024928: .4byte 0x02000000\n\ +_0802492C: .4byte 0x0001609c\n\ +_08024930:\n\ + cmp r0, 0x2\n\ + bne _08024936\n\ + b _08024C04\n\ +_08024936:\n\ + cmp r0, 0x3\n\ + bne _0802493C\n\ + b _08024C30\n\ +_0802493C:\n\ + b _08024C38\n\ +_0802493E:\n\ + str r1, [sp]\n\ + movs r0, 0xB\n\ + movs r1, 0\n\ + movs r2, 0x1D\n\ + movs r3, 0x7\n\ + bl sub_802BBD4\n\ + ldr r0, _0802499C @ =gStringVar4\n\ + ldr r1, _080249A0 @ =gUnknown_08400D9F\n\ + bl StringCopy\n\ + adds r5, r0, 0\n\ + movs r1, 0\n\ + mov r8, r1\n\ +_0802495A:\n\ + movs r2, 0\n\ + mov r9, r2\n\ + ldr r0, _080249A4 @ =gUnknown_0840165C\n\ + mov r1, r8\n\ + lsls r4, r1, 2\n\ + adds r0, r4, r0\n\ + ldr r1, [r0]\n\ + adds r0, r5, 0\n\ + bl StringAppend\n\ + adds r5, r0, 0\n\ + ldr r0, _080249A8 @ =0x02000000\n\ + ldr r2, _080249AC @ =0x00016018\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _080249B0 @ =gPlayerParty\n\ + adds r0, r1\n\ + ldr r1, _080249B4 @ =gLevelUpStatBoxStats\n\ + add r1, r8\n\ + ldrb r1, [r1]\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + mov r0, r8\n\ + cmp r0, 0x5\n\ + bhi _08024A1A\n\ + ldr r0, _080249B8 @ =_080249BC\n\ + adds r0, r4, r0\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0802499C: .4byte gStringVar4\n\ +_080249A0: .4byte gUnknown_08400D9F\n\ +_080249A4: .4byte gUnknown_0840165C\n\ +_080249A8: .4byte 0x02000000\n\ +_080249AC: .4byte 0x00016018\n\ +_080249B0: .4byte gPlayerParty\n\ +_080249B4: .4byte gLevelUpStatBoxStats\n\ +_080249B8: .4byte _080249BC\n\ + .align 2, 0\n\ +_080249BC:\n\ + .4byte _080249D4\n\ + .4byte _080249E0\n\ + .4byte _080249EC\n\ + .4byte _080249F8\n\ + .4byte _08024A04\n\ + .4byte _08024A10\n\ +_080249D4:\n\ + ldr r0, _080249DC @ =0x02017180\n\ + ldrh r0, [r0]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_080249DC: .4byte 0x02017180\n\ +_080249E0:\n\ + ldr r0, _080249E8 @ =0x02017180\n\ + ldrh r0, [r0, 0x8]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_080249E8: .4byte 0x02017180\n\ +_080249EC:\n\ + ldr r0, _080249F4 @ =0x02017180\n\ + ldrh r0, [r0, 0x2]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_080249F4: .4byte 0x02017180\n\ +_080249F8:\n\ + ldr r0, _08024A00 @ =0x02017180\n\ + ldrh r0, [r0, 0xA]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_08024A00: .4byte 0x02017180\n\ +_08024A04:\n\ + ldr r0, _08024A0C @ =0x02017180\n\ + ldrh r0, [r0, 0x4]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_08024A0C: .4byte 0x02017180\n\ +_08024A10:\n\ + ldr r0, _08024A54 @ =0x02017180\n\ + ldrh r0, [r0, 0x6]\n\ +_08024A14:\n\ + subs r0, r1, r0\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ +_08024A1A:\n\ + lsls r0, r7, 16\n\ + asrs r0, 16\n\ + cmp r0, 0\n\ + bge _08024A2C\n\ + negs r0, r0\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + movs r1, 0x1\n\ + add r9, r1\n\ +_08024A2C:\n\ + movs r0, 0xFC\n\ + strb r0, [r5]\n\ + movs r0, 0x13\n\ + strb r0, [r5, 0x1]\n\ + movs r1, 0x1\n\ + mov r2, r8\n\ + ands r1, r2\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + adds r0, 0x5\n\ + lsls r0, 3\n\ + adds r0, 0x6\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + mov r0, r9\n\ + cmp r0, 0\n\ + beq _08024A5C\n\ + ldr r1, _08024A58 @ =gUnknown_08400DAC\n\ + b _08024A5E\n\ + .align 2, 0\n\ +_08024A54: .4byte 0x02017180\n\ +_08024A58: .4byte gUnknown_08400DAC\n\ +_08024A5C:\n\ + ldr r1, _08024AA4 @ =gUnknown_08400DAA\n\ +_08024A5E:\n\ + adds r0, r5, 0\n\ + bl StringCopy\n\ + adds r5, r0, 0\n\ + movs r6, 0xFC\n\ + strb r6, [r5]\n\ + movs r4, 0x14\n\ + strb r4, [r5, 0x1]\n\ + movs r0, 0x6\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + lsls r1, r7, 16\n\ + asrs r1, 16\n\ + adds r0, r5, 0\n\ + movs r2, 0x1\n\ + movs r3, 0x2\n\ + bl ConvertIntToDecimalStringN\n\ + adds r5, r0, 0\n\ + strb r6, [r5]\n\ + strb r4, [r5, 0x1]\n\ + movs r0, 0\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + movs r0, 0x1\n\ + mov r1, r8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08024AA8\n\ + movs r0, 0xFE\n\ + strb r0, [r5]\n\ + movs r0, 0xFF\n\ + strb r0, [r5, 0x1]\n\ + adds r5, 0x1\n\ + b _08024AB8\n\ + .align 2, 0\n\ +_08024AA4: .4byte gUnknown_08400DAA\n\ +_08024AA8:\n\ + strb r6, [r5]\n\ + movs r0, 0x11\n\ + strb r0, [r5, 0x1]\n\ + movs r0, 0x8\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + movs r0, 0xFF\n\ + strb r0, [r5]\n\ +_08024AB8:\n\ + movs r2, 0x1\n\ + add r8, r2\n\ + mov r0, r8\n\ + cmp r0, 0x5\n\ + bgt _08024AC4\n\ + b _0802495A\n\ +_08024AC4:\n\ + ldr r4, _08024AE4 @ =gUnknown_03004210\n\ + ldr r1, _08024AE8 @ =gStringVar4\n\ + adds r2, 0xFF\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + adds r0, r4, 0\n\ + movs r3, 0xC\n\ + bl InitWindow\n\ + adds r0, r4, 0\n\ + bl sub_8002F44\n\ + ldr r1, _08024AEC @ =0x02000000\n\ + ldr r2, _08024AF0 @ =0x0001609c\n\ + adds r1, r2\n\ + b _08024BEA\n\ + .align 2, 0\n\ +_08024AE4: .4byte gUnknown_03004210\n\ +_08024AE8: .4byte gStringVar4\n\ +_08024AEC: .4byte 0x02000000\n\ +_08024AF0: .4byte 0x0001609c\n\ +_08024AF4:\n\ + ldr r0, _08024B94 @ =gMain\n\ + ldrh r0, [r0, 0x2E]\n\ + cmp r0, 0\n\ + bne _08024AFE\n\ + b _08024C38\n\ +_08024AFE:\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + ldr r0, _08024B98 @ =gStringVar4\n\ + ldr r1, _08024B9C @ =gUnknown_08400D9F\n\ + bl StringCopy\n\ + adds r5, r0, 0\n\ + movs r0, 0\n\ + mov r8, r0\n\ + mov r9, r0\n\ + movs r6, 0xFC\n\ + movs r7, 0x14\n\ + ldr r1, _08024BA0 @ =0x00016018\n\ + add r10, r1\n\ +_08024B1C:\n\ + ldr r1, _08024BA4 @ =gUnknown_0840165C\n\ + mov r2, r8\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ + adds r0, r5, 0\n\ + bl StringAppend\n\ + adds r5, r0, 0\n\ + mov r0, r10\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08024BA8 @ =gPlayerParty\n\ + adds r0, r1\n\ + ldr r1, _08024BAC @ =gLevelUpStatBoxStats\n\ + add r1, r8\n\ + ldrb r1, [r1]\n\ + bl GetMonData\n\ + adds r1, r0, 0\n\ + strb r6, [r5]\n\ + movs r0, 0x13\n\ + strb r0, [r5, 0x1]\n\ + movs r4, 0x1\n\ + mov r2, r8\n\ + ands r4, r2\n\ + lsls r0, r4, 3\n\ + adds r0, r4\n\ + adds r0, 0x5\n\ + lsls r0, 3\n\ + adds r0, 0x6\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + strb r6, [r5]\n\ + strb r7, [r5, 0x1]\n\ + movs r0, 0x6\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + adds r0, r5, 0\n\ + movs r2, 0x1\n\ + movs r3, 0x3\n\ + bl ConvertIntToDecimalStringN\n\ + adds r5, r0, 0\n\ + strb r6, [r5]\n\ + strb r7, [r5, 0x1]\n\ + mov r0, r9\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + cmp r4, 0\n\ + beq _08024BB0\n\ + movs r0, 0xFE\n\ + strb r0, [r5]\n\ + movs r0, 0xFF\n\ + strb r0, [r5, 0x1]\n\ + adds r5, 0x1\n\ + b _08024BC0\n\ + .align 2, 0\n\ +_08024B94: .4byte gMain\n\ +_08024B98: .4byte gStringVar4\n\ +_08024B9C: .4byte gUnknown_08400D9F\n\ +_08024BA0: .4byte 0x00016018\n\ +_08024BA4: .4byte gUnknown_0840165C\n\ +_08024BA8: .4byte gPlayerParty\n\ +_08024BAC: .4byte gLevelUpStatBoxStats\n\ +_08024BB0:\n\ + strb r6, [r5]\n\ + movs r0, 0x11\n\ + strb r0, [r5, 0x1]\n\ + movs r0, 0x8\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + movs r0, 0xFF\n\ + strb r0, [r5]\n\ +_08024BC0:\n\ + movs r1, 0x1\n\ + add r8, r1\n\ + mov r2, r8\n\ + cmp r2, 0x5\n\ + ble _08024B1C\n\ + ldr r4, _08024BF4 @ =gUnknown_03004210\n\ + ldr r1, _08024BF8 @ =gStringVar4\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + adds r0, r4, 0\n\ + movs r3, 0xC\n\ + bl InitWindow\n\ + adds r0, r4, 0\n\ + bl sub_8002F44\n\ + ldr r1, _08024BFC @ =0x02000000\n\ + ldr r0, _08024C00 @ =0x0001609c\n\ + adds r1, r0\n\ +_08024BEA:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + b _08024C38\n\ + .align 2, 0\n\ +_08024BF4: .4byte gUnknown_03004210\n\ +_08024BF8: .4byte gStringVar4\n\ +_08024BFC: .4byte 0x02000000\n\ +_08024C00: .4byte 0x0001609c\n\ +_08024C04:\n\ + ldr r0, _08024C2C @ =gMain\n\ + ldrh r0, [r0, 0x2E]\n\ + cmp r0, 0\n\ + beq _08024C38\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + movs r0, 0xB\n\ + movs r1, 0\n\ + movs r2, 0x1D\n\ + movs r3, 0x7\n\ + bl sub_802BBD4\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + b _08024C38\n\ + .align 2, 0\n\ +_08024C2C: .4byte gMain\n\ +_08024C30:\n\ + ldr r1, _08024C48 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ +_08024C38:\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08024C48: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} + +#endif + +static void atk6D_set_sentpokes_values(void) +{ + sub_80156DC(); + gBattlescriptCurrInstr++; +} + +static void atk6E_set_atk_to_player0(void) +{ + gBankAttacker = GetBankByPlayerAI(0); + gBattlescriptCurrInstr++; +} + +static void atk6F_set_visible(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitSpriteInvisibility(0, 0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk70_record_ability(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + gBattlescriptCurrInstr += 1; //buggy, should be += 2, one byte for command, one byte for argument... +} + +void sub_8024CEC(void) +{ + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 2; + gBattleTextBuff2[2] = (gMoveToLearn); + gBattleTextBuff2[3] = uBYTE1_16(gMoveToLearn); + gBattleTextBuff2[4] = 0xFF; +} + +static void atk71_buffer_move_to_learn(void) +{ + sub_8024CEC(); + gBattlescriptCurrInstr++; +} + +static void atk72_jump_if_can_run_frombattle(void) +{ + if (sub_8014AB8(gBank1)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +static void atk73_hp_thresholds(void) +{ + u8 opposing_bank; + s32 result; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + opposing_bank = gActiveBank ^ 1; + + result = gBattleMons[opposing_bank].hp * 100 / gBattleMons[opposing_bank].maxHP; + if (result == 0) + result = 1; + + if (result > 69 || !gBattleMons[opposing_bank].hp) + BATTLE_STRUCT->hpScale = 0; + else if (result > 39) + BATTLE_STRUCT->hpScale = 1; + else if (result > 9) + BATTLE_STRUCT->hpScale = 2; + else + BATTLE_STRUCT->hpScale = 3; + } + + gBattlescriptCurrInstr += 2; +} + +static void atk74_hp_thresholds2(void) +{ + u8 opposing_bank; + u8 hp_switchout; + s32 result; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + opposing_bank = gActiveBank ^ 1; + hp_switchout = ewram[2 * GetBankSide(opposing_bank) + 0x160bc]; //BATTLE_STRUCT->HP_OnSwitchout[GetBankSide(opposing_bank)]; + result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout; + + if (gBattleMons[opposing_bank].hp >= hp_switchout) + BATTLE_STRUCT->hpScale = 0; + else if (result <= 29) + BATTLE_STRUCT->hpScale = 1; + else if (result <= 69) + BATTLE_STRUCT->hpScale = 2; + else + BATTLE_STRUCT->hpScale = 3; + } + + gBattlescriptCurrInstr += 2; +} + +static void atk75_8026A58(void) +{ + gBankInMenu = gBankAttacker; + sub_803E1B0(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1); + gBattlescriptCurrInstr += 1; +} + +static void atk76_various(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + { + case 0: + CancelMultiTurnMoves(gActiveBank); + break; + case 1: + { + u8 side; + gBankAttacker = gBankTarget; + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) + gBankTarget = gSideTimer[side].followmeTarget; + else + gBankTarget = gActiveBank; + } + break; + case 2: + gBattleCommunication[0] = CanRunFromBattle(); + break; + case 3: + gBankTarget = GetMoveTarget(gCurrentMove, 0); + break; + case 4: + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + gBattleCommunication[0] = 1; + else + gBattleCommunication[0] = 0; + break; + case 5: + gSpecialStatuses[gActiveBank].intimidatedPoke = 0; + gSpecialStatuses[gActiveBank].traced = 0; + break; + case 6: + { + int i; + u16* choiced_move; + if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID) + goto ACTIVE_0; + if (gBattlePartyID[2] != BATTLE_STRUCT->expGetterID) + break; + if (gBattlePartyID[0] == gBattlePartyID[2]) + { + ACTIVE_0: + gActiveBank = 0; + } + else + gActiveBank = 2; + + choiced_move = (u16*)(&ewram[gActiveBank * 2 + 0x160e8]); + for (i = 0; i < 4; i++) + { + if (gBattleMons[gActiveBank].moves[i] == *choiced_move) + break; + } + if (i == 4) + *choiced_move = 0; + } + break; + } + + gBattlescriptCurrInstr += 3; +} + +static void atk77_setprotect(void) //protect and endure +{ + bool8 not_last_turn = 1; + u16 last_move = gUnknown_02024C4C[gBankAttacker]; + + if (last_move != MOVE_PROTECT && last_move != MOVE_DETECT && last_move != MOVE_ENDURE) + gDisableStructs[gBankAttacker].protectUses = 0; + if (gCurrentMoveTurn == (gNoOfAllBanks - 1)) + not_last_turn = 0; + + if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] > Random() && not_last_turn) + { + if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT) + { + gProtectStructs[gBankAttacker].protected = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE) //what is else if + { + gProtectStructs[gBankAttacker].endured = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + gDisableStructs[gBankAttacker].protectUses++; + } + else + { + gDisableStructs[gBankAttacker].protectUses = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattleMoveFlags |= MOVESTATUS_MISSED; + } + + gBattlescriptCurrInstr++; +} + +static void atk78_faintifabilitynotdamp(void) +{ + if (gBattleExecBuffer) + return; + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBattleMons[gBankTarget].ability == ABILITY_DAMP) + break; + } + + if (gBankTarget == gNoOfAllBanks) + { + gActiveBank = gBankAttacker; + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + EmitHealthBarUpdate(0, 0x7FFF); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr++; + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + } + else + { + gLastUsedAbility = ABILITY_DAMP; + RecordAbilityBattle(gBankTarget, gBattleMons[gBankTarget].ability); + gBattlescriptCurrInstr = gUnknown_081D9834; + } +} + +static void atk79_setatkhptozero(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = gBankAttacker; + gBattleMons[gActiveBank].hp = 0; + EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr++; +} + +static void atk7A_jumpwhiletargetvalid(void) //used by intimidate to loop through all targets +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + for (gBankTarget++; ; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + + if (gBankTarget >= gNoOfAllBanks) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = jump_loc; + } + else + gBattlescriptCurrInstr += 5; +} + +static void atk7B_healhalfHP_if_possible(void) +{ + u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (BSScriptRead8(gBattlescriptCurrInstr + 5) == 1) + gBankTarget = gBankAttacker; + + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + gBattlescriptCurrInstr = fail_loc; + else + gBattlescriptCurrInstr += 6; +} + +static void atk7C_8025508(void) +{ + u16 r7 = ewram[gBankAttacker * 2 + 0x160ac] | (ewram[gBankAttacker * 2 + 0x160ad] << 8); + u16 r6 = ewram[gBankAttacker * 4 + 0x16100] | (ewram[gBankAttacker * 4 + 0x16101] << 8); + u16 r5 = ewram[gBankAttacker * 4 + 0x16102] | (ewram[gBankAttacker * 4 + 0x16103] << 8); + + if (r7 !=0 && r7 != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = r7; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + } + else if (r6 != 0 && r5 != 0 && r6 != 0xFFFF && r5 != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + if (Random() & 1) + gCurrentMove = r6; + else + gCurrentMove = r5; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + } + else if (r6 != 0 && r6 != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = r6; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + } + else if (r5 != 0 && r5 != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = r5; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr++; + } +} + +static void atk7D_set_rain(void) +{ + if (gBattleWeather & WEATHER_RAIN_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_RAIN_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +static void atk7E_setreflect(void) +{ + if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_REFLECT) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_REFLECT; + gSideTimer[GetBankIdentity(gBankAttacker) & 1].reflectTimer = 5; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + gBattlescriptCurrInstr++; +} + +static void atk7F_setseeded(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else if (gBattleMons[gBankTarget].type1 == TYPE_GRASS || gBattleMons[gBankTarget].type2 == TYPE_GRASS) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gStatuses3[gBankTarget] |= gBankAttacker; + gStatuses3[gBankTarget] |= STATUS3_LEECHSEED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + + gBattlescriptCurrInstr++; +} + +static void atk80_manipulatedamage(void) +{ + switch (BSScriptRead8(gBattlescriptCurrInstr + 1)) + { + case 0: + gBattleMoveDamage *= -1; + break; + case 1: + gBattleMoveDamage /= 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[gBankTarget].maxHP / 2) < gBattleMoveDamage) + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + break; + case 2: + gBattleMoveDamage *= 2; + break; + } + + gBattlescriptCurrInstr += 2; +} + +static void atk81_setrest(void) +{ + u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + gActiveBank = gBankTarget = gBankAttacker; + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1); + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + gBattlescriptCurrInstr = fail_loc; + else + { + if (gBattleMons[gBankTarget].status1 & ((u8)(~STATUS_SLEEP))) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + + gBattleMons[gBankTarget].status1 = 3; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + } +} + +static void atk82_jumpifnotfirstturn(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (gDisableStructs[gBankAttacker].isFirstTurn) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = jump_loc; +} + +static void atk83_nop(void) +{ + gBattlescriptCurrInstr++; +} + +bool8 UproarWakeUpCheck(u8 bank) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF) //wtf gamefreak, you should check this only once, not every time in a loop... + continue; + BATTLE_STRUCT->scriptingActive = i; + if (gBankTarget == 0xFF) + gBankTarget = i; + else if (gBankTarget == i) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + break; + } + if (i == gNoOfAllBanks) + return 0; + else + return 1; +} + +static void atk84_jump_if_cant_sleep(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + if (UproarWakeUpCheck(gBankTarget)) + gBattlescriptCurrInstr = jump_loc; + else if (gBattleMons[gBankTarget].ability == ABILITY_INSOMNIA || gBattleMons[gBankTarget].ability == ABILITY_VITAL_SPIRIT) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattlescriptCurrInstr = jump_loc; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +static void atk85_stockpile(void) +{ + if (gDisableStructs[gBankAttacker].stockpileCounter == 3) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gDisableStructs[gBankAttacker].stockpileCounter++; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 1; + gBattleTextBuff1[3] = 1; + gBattleTextBuff1[4] = gDisableStructs[gBankAttacker].stockpileCounter; + gBattleTextBuff1[5] = 0xFF; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +static void atk86_stockpiletobasedamage(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + if (gDisableStructs[gBankAttacker].stockpileCounter == 0) + { + gBattlescriptCurrInstr = jump_loc; + } + else + { + if (gBattleCommunication[6] != 1) + { + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0, + 0, gBankAttacker, gBankTarget) + * gDisableStructs[gBankAttacker].stockpileCounter; + BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter; + + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + } + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr += 5; + } +} + +static void atk87_stockpiletohpheal(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + if (gDisableStructs[gBankAttacker].stockpileCounter == 0) + { + gBattlescriptCurrInstr = jump_loc; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else if (gBattleMons[gBankAttacker].maxHP == gBattleMons[gBankAttacker].hp) + { + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr = jump_loc; + gBankTarget = gBankAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / (1 << (3 - gDisableStructs[gBankAttacker].stockpileCounter)); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter; + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr += 5; + gBankTarget = gBankAttacker; + } +} + +static void atk88_negativedamage(void) +{ + gBattleMoveDamage = -(gHP_dealt / 2); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = -1; + gBattlescriptCurrInstr++; +} + +#ifdef NONMATCHING +u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) +{ + u8 r9 = 0; + u8 r10 = 0; + u8 index; + if (flags & 0x40) + gActiveBank = gBankAttacker; + else + gActiveBank = gBankTarget; + flags &= ~(0x40); + if (flags & 0x80) + r9++; + flags &= ~(0x80); + if (flags & 0x20) + r10++; + flags &= ~(0x20); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = stat; + gBattleTextBuff1[3] = 0xFF; + + if ((statchanger << 0x18) < 0) //stat decrease + { + if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer && !r9 && gCurrentMove != MOVE_CURSE) + { + if (flags == 1) + { + if (gSpecialStatuses[gActiveBank].statloweringflag) + gBattlescriptCurrInstr = bs_ptr; + else + { + b_movescr_stack_push(bs_ptr); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattlescriptCurrInstr = BattleScript_MistProtected; + gSpecialStatuses[gActiveBank].statloweringflag = 1; + } + } + return 1; + } + else if (gCurrentMove != MOVE_CURSE && r10 != 1 && JumpIfMoveAffectedByProtect(0)) + { + gBattlescriptCurrInstr = BattleScript_ButItFailed; + return 1; + } + else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE) && !r9 && gCurrentMove != MOVE_CURSE) + { + if (flags == 1) + { + if (gSpecialStatuses[gActiveBank].statloweringflag) + gBattlescriptCurrInstr = bs_ptr; + else + { + b_movescr_stack_push(bs_ptr); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + gSpecialStatuses[gActiveBank].statloweringflag = 1; + } + } + return 1; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && !r9 && stat == STAT_STAGE_ACC) + { + if (flags == 1) + { + b_movescr_stack_push(bs_ptr); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + } + return 1; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && !r9 && stat == STAT_STAGE_ATK) + { + if (flags == 1) + { + b_movescr_stack_push(bs_ptr); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + } + return 1; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0) + return 1; + else //decrease + { + statchanger = -((statchanger >> 4) & (7)); + gBattleTextBuff2[0] = 0xFD; + index = 1; + if (statchanger == -2) + { + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD3; //harshly + gBattleTextBuff2[3] = 0x0; + index = 4; + } + gBattleTextBuff2[index] = 0; + index++; + gBattleTextBuff2[index] = 0xD4; //fell + index++; + gBattleTextBuff2[index] = 0; + index++; + gBattleTextBuff2[index] = 0xFF; + + if (gBattleMons[gActiveBank].statStages[stat] == 0) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + u8 stringID = 0; + if (gBankTarget == gActiveBank) + stringID = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = stringID; + } + } + } + else //stat increase + { + statchanger = (statchanger >> 4) & (7); + gBattleTextBuff2[0] = 0xFD; + index = 1; + if (statchanger == 2) + { + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD1; //sharply + gBattleTextBuff2[3] = 0x0; + index = 4; + } + gBattleTextBuff2[index] = 0; + index++; + gBattleTextBuff2[index] = 0xD2; //rose + index++; + gBattleTextBuff2[index] = 0; + index++; + gBattleTextBuff2[index] = 0xFF; + + if (gBattleMons[gActiveBank].statStages[stat] == 0xC) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + u8 stringID = 0; + if (gBankTarget == gActiveBank) + stringID = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = stringID; + } + } + + gBattleMons[gActiveBank].statStages[stat] += statchanger; + if (gBattleMons[gActiveBank].statStages[stat] < 0) + gBattleMons[gActiveBank].statStages[stat] = 0; + if (gBattleMons[gActiveBank].statStages[stat] > 0xC) + gBattleMons[gActiveBank].statStages[stat] = 0xC; + + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2) + { + if (flags & 1) + gBattleMoveFlags |= MOVESTATUS_MISSED; + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & 1)) //what the actual fuck gamefreak... + return 1; + } + return 0; +} + +#else +__attribute__((naked)) +u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + mov r8, r3\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + lsls r1, 24\n\ + lsrs r7, r1, 24\n\ + lsls r2, 24\n\ + lsrs r5, r2, 24\n\ + movs r0, 0\n\ + mov r9, r0\n\ + mov r10, r0\n\ + movs r0, 0x40\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08025E54\n\ + ldr r0, _08025E4C @ =gActiveBank\n\ + ldr r1, _08025E50 @ =gBankAttacker\n\ + b _08025E58\n\ + .align 2, 0\n\ +_08025E4C: .4byte gActiveBank\n\ +_08025E50: .4byte gBankAttacker\n\ +_08025E54:\n\ + ldr r0, _08025EF8 @ =gActiveBank\n\ + ldr r1, _08025EFC @ =gBankTarget\n\ +_08025E58:\n\ + ldrb r1, [r1]\n\ + strb r1, [r0]\n\ + movs r0, 0xBF\n\ + ands r5, r0\n\ + movs r0, 0x80\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08025E72\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08025E72:\n\ + movs r0, 0x7F\n\ + ands r5, r0\n\ + movs r0, 0x20\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08025E88\n\ + mov r0, r10\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ +_08025E88:\n\ + movs r0, 0xDF\n\ + ands r5, r0\n\ + ldr r1, _08025F00 @ =gBattleTextBuff1\n\ + movs r4, 0\n\ + movs r2, 0xFD\n\ + strb r2, [r1]\n\ + movs r0, 0x5\n\ + strb r0, [r1, 0x1]\n\ + strb r7, [r1, 0x2]\n\ + movs r3, 0x1\n\ + negs r3, r3\n\ + mov r12, r3\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + lsls r0, r6, 24\n\ + cmp r0, 0\n\ + blt _08025EAC\n\ + b _080261B0\n\ +_08025EAC:\n\ + ldr r4, _08025F04 @ =gSideTimer\n\ + ldr r1, _08025EF8 @ =gActiveBank\n\ + ldrb r0, [r1]\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r0, [r0, 0x2]\n\ + cmp r0, 0\n\ + beq _08025F54\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + bne _08025F54\n\ + ldr r0, _08025F08 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + cmp r0, 0xAE\n\ + beq _08025F84\n\ + cmp r5, 0x1\n\ + bne _08025F74\n\ + ldr r4, _08025F0C @ =gSpecialStatuses\n\ + ldr r3, _08025EF8 @ =gActiveBank\n\ + ldrb r0, [r3]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r4\n\ + ldrb r0, [r1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08025F14\n\ + ldr r0, _08025F10 @ =gBattlescriptCurrInstr\n\ + mov r4, r8\n\ + str r4, [r0]\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08025EF8: .4byte gActiveBank\n\ +_08025EFC: .4byte gBankTarget\n\ +_08025F00: .4byte gBattleTextBuff1\n\ +_08025F04: .4byte gSideTimer\n\ +_08025F08: .4byte gCurrentMove\n\ +_08025F0C: .4byte gSpecialStatuses\n\ +_08025F10: .4byte gBattlescriptCurrInstr\n\ +_08025F14:\n\ + mov r0, r8\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08025F40 @ =0x02000000\n\ + ldr r6, _08025F44 @ =gActiveBank\n\ + ldrb r1, [r6]\n\ + ldr r2, _08025F48 @ =0x00016003\n\ + adds r0, r2\n\ + strb r1, [r0]\n\ + ldr r1, _08025F4C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08025F50 @ =BattleScript_MistProtected\n\ + str r0, [r1]\n\ + ldrb r1, [r6]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r1, [r0]\n\ + movs r2, 0x1\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08025F40: .4byte 0x02000000\n\ +_08025F44: .4byte gActiveBank\n\ +_08025F48: .4byte 0x00016003\n\ +_08025F4C: .4byte gBattlescriptCurrInstr\n\ +_08025F50: .4byte BattleScript_MistProtected\n\ +_08025F54:\n\ + ldr r0, _08025F78 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + cmp r0, 0xAE\n\ + beq _08025F84\n\ + mov r3, r10\n\ + cmp r3, 0x1\n\ + beq _08025F84\n\ + movs r0, 0\n\ + bl JumpIfMoveAffectedByProtect\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08025F84\n\ + ldr r1, _08025F7C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08025F80 @ =BattleScript_ButItFailed\n\ + str r0, [r1]\n\ +_08025F74:\n\ + movs r0, 0x1\n\ + b _080262A4\n\ + .align 2, 0\n\ +_08025F78: .4byte gCurrentMove\n\ +_08025F7C: .4byte gBattlescriptCurrInstr\n\ +_08025F80: .4byte BattleScript_ButItFailed\n\ +_08025F84:\n\ + ldr r2, _08025FCC @ =gBattleMons\n\ + ldr r1, _08025FD0 @ =gActiveBank\n\ + ldrb r3, [r1]\n\ + movs r4, 0x58\n\ + adds r0, r3, 0\n\ + muls r0, r4\n\ + adds r0, r2\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + mov r10, r2\n\ + cmp r0, 0x1D\n\ + beq _08025FA0\n\ + cmp r0, 0x49\n\ + bne _08026040\n\ +_08025FA0:\n\ + mov r0, r9\n\ + cmp r0, 0\n\ + bne _08026040\n\ + ldr r0, _08025FD4 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + cmp r0, 0xAE\n\ + beq _08026040\n\ + cmp r5, 0x1\n\ + bne _08025F74\n\ + ldr r4, _08025FD8 @ =gSpecialStatuses\n\ + lsls r0, r3, 2\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r0, [r0]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08025FE0\n\ + ldr r0, _08025FDC @ =gBattlescriptCurrInstr\n\ + mov r1, r8\n\ + str r1, [r0]\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08025FCC: .4byte gBattleMons\n\ +_08025FD0: .4byte gActiveBank\n\ +_08025FD4: .4byte gCurrentMove\n\ +_08025FD8: .4byte gSpecialStatuses\n\ +_08025FDC: .4byte gBattlescriptCurrInstr\n\ +_08025FE0:\n\ + mov r0, r8\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08026028 @ =0x02000000\n\ + ldr r2, _0802602C @ =gActiveBank\n\ + ldrb r1, [r2]\n\ + ldr r3, _08026030 @ =0x00016003\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ + ldr r1, _08026034 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08026038 @ =BattleScript_AbilityNoStatLoss\n\ + str r0, [r1]\n\ + ldr r1, _0802603C @ =gLastUsedAbility\n\ + ldrb r0, [r2]\n\ + movs r6, 0x58\n\ + muls r0, r6\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r2]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + ldr r0, _0802602C @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r1, [r0]\n\ + movs r2, 0x1\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08026028: .4byte 0x02000000\n\ +_0802602C: .4byte gActiveBank\n\ +_08026030: .4byte 0x00016003\n\ +_08026034: .4byte gBattlescriptCurrInstr\n\ +_08026038: .4byte BattleScript_AbilityNoStatLoss\n\ +_0802603C: .4byte gLastUsedAbility\n\ +_08026040:\n\ + ldr r1, _08026090 @ =gActiveBank\n\ + ldrb r0, [r1]\n\ + movs r4, 0x58\n\ + muls r0, r4\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x33\n\ + bne _080260A8\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + bne _080260A8\n\ + cmp r7, 0x6\n\ + bne _080260A8\n\ + cmp r5, 0x1\n\ + bne _08025F74\n\ + mov r0, r8\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08026094 @ =0x02000000\n\ + ldr r3, _08026090 @ =gActiveBank\n\ + ldrb r1, [r3]\n\ + ldr r6, _08026098 @ =0x00016003\n\ + adds r0, r6\n\ + strb r1, [r0]\n\ + ldr r1, _0802609C @ =gBattlescriptCurrInstr\n\ + ldr r0, _080260A0 @ =BattleScript_AbilityNoSpecificStatLoss\n\ + str r0, [r1]\n\ + ldr r1, _080260A4 @ =gLastUsedAbility\n\ + ldrb r0, [r3]\n\ + muls r0, r4\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08026090: .4byte gActiveBank\n\ +_08026094: .4byte 0x02000000\n\ +_08026098: .4byte 0x00016003\n\ +_0802609C: .4byte gBattlescriptCurrInstr\n\ +_080260A0: .4byte BattleScript_AbilityNoSpecificStatLoss\n\ +_080260A4: .4byte gLastUsedAbility\n\ +_080260A8:\n\ + ldr r1, _080260FC @ =gActiveBank\n\ + ldrb r0, [r1]\n\ + movs r4, 0x58\n\ + muls r0, r4\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x34\n\ + bne _08026114\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + bne _08026114\n\ + cmp r7, 0x1\n\ + bne _08026114\n\ + cmp r5, 0x1\n\ + beq _080260CA\n\ + b _08025F74\n\ +_080260CA:\n\ + mov r0, r8\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08026100 @ =0x02000000\n\ + ldr r3, _080260FC @ =gActiveBank\n\ + ldrb r1, [r3]\n\ + ldr r6, _08026104 @ =0x00016003\n\ + adds r0, r6\n\ + strb r1, [r0]\n\ + ldr r1, _08026108 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0802610C @ =BattleScript_AbilityNoSpecificStatLoss\n\ + str r0, [r1]\n\ + ldr r1, _08026110 @ =gLastUsedAbility\n\ + ldrb r0, [r3]\n\ + muls r0, r4\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + b _08025F74\n\ + .align 2, 0\n\ +_080260FC: .4byte gActiveBank\n\ +_08026100: .4byte 0x02000000\n\ +_08026104: .4byte 0x00016003\n\ +_08026108: .4byte gBattlescriptCurrInstr\n\ +_0802610C: .4byte BattleScript_AbilityNoSpecificStatLoss\n\ +_08026110: .4byte gLastUsedAbility\n\ +_08026114:\n\ + ldr r0, _080261A0 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x13\n\ + bne _0802612C\n\ + cmp r5, 0\n\ + bne _0802612C\n\ + b _08025F74\n\ +_0802612C:\n\ + lsls r0, r6, 24\n\ + asrs r0, 28\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + negs r0, r0\n\ + lsls r0, 24\n\ + ldr r3, _080261A4 @ =gBattleTextBuff2\n\ + movs r4, 0\n\ + movs r1, 0xFD\n\ + strb r1, [r3]\n\ + movs r2, 0x1\n\ + lsrs r6, r0, 24\n\ + asrs r0, 24\n\ + subs r1, 0xFF\n\ + cmp r0, r1\n\ + bne _08026156\n\ + strb r4, [r3, 0x1]\n\ + movs r0, 0xD3\n\ + strb r0, [r3, 0x2]\n\ + strb r4, [r3, 0x3]\n\ + movs r2, 0x4\n\ +_08026156:\n\ + adds r0, r2, r3\n\ + strb r4, [r0]\n\ + adds r2, 0x1\n\ + adds r1, r2, r3\n\ + movs r0, 0xD4\n\ + strb r0, [r1]\n\ + adds r2, 0x1\n\ + adds r0, r2, r3\n\ + strb r4, [r0]\n\ + adds r2, 0x1\n\ + adds r1, r2, r3\n\ + movs r0, 0xFF\n\ + strb r0, [r1]\n\ + ldr r1, _080261A0 @ =gActiveBank\n\ + ldrb r2, [r1]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r7, r0\n\ + mov r1, r10\n\ + adds r1, 0x18\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0\n\ + beq _08026206\n\ + movs r1, 0\n\ + ldr r0, _080261A8 @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + ldr r3, _080261AC @ =gBattleCommunication\n\ + mov r8, r3\n\ + cmp r0, r2\n\ + bne _0802619A\n\ + movs r1, 0x1\n\ +_0802619A:\n\ + mov r4, r8\n\ + strb r1, [r4, 0x5]\n\ + b _08026234\n\ + .align 2, 0\n\ +_080261A0: .4byte gActiveBank\n\ +_080261A4: .4byte gBattleTextBuff2\n\ +_080261A8: .4byte gBankTarget\n\ +_080261AC: .4byte gBattleCommunication\n\ +_080261B0:\n\ + asrs r6, r0, 28\n\ + movs r0, 0x7\n\ + ands r6, r0\n\ + ldr r3, _08026210 @ =gBattleTextBuff2\n\ + strb r2, [r3]\n\ + movs r2, 0x1\n\ + cmp r6, 0x2\n\ + bne _080261CA\n\ + strb r4, [r3, 0x1]\n\ + movs r0, 0xD1\n\ + strb r0, [r3, 0x2]\n\ + strb r4, [r3, 0x3]\n\ + movs r2, 0x4\n\ +_080261CA:\n\ + adds r0, r2, r3\n\ + strb r4, [r0]\n\ + adds r2, 0x1\n\ + adds r1, r2, r3\n\ + movs r0, 0xD2\n\ + strb r0, [r1]\n\ + adds r2, 0x1\n\ + adds r0, r2, r3\n\ + strb r4, [r0]\n\ + adds r2, 0x1\n\ + adds r1, r2, r3\n\ + ldrb r0, [r1]\n\ + mov r2, r12\n\ + orrs r0, r2\n\ + strb r0, [r1]\n\ + ldr r2, _08026214 @ =gBattleMons\n\ + ldr r4, _08026218 @ =gActiveBank\n\ + ldrb r3, [r4]\n\ + movs r0, 0x58\n\ + muls r0, r3\n\ + adds r0, r7, r0\n\ + adds r1, r2, 0\n\ + adds r1, 0x18\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + mov r10, r2\n\ + cmp r0, 0xC\n\ + bne _08026220\n\ +_08026206:\n\ + ldr r1, _0802621C @ =gBattleCommunication\n\ + movs r0, 0x2\n\ + strb r0, [r1, 0x5]\n\ + mov r8, r1\n\ + b _08026234\n\ + .align 2, 0\n\ +_08026210: .4byte gBattleTextBuff2\n\ +_08026214: .4byte gBattleMons\n\ +_08026218: .4byte gActiveBank\n\ +_0802621C: .4byte gBattleCommunication\n\ +_08026220:\n\ + movs r1, 0\n\ + ldr r0, _080262B4 @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + ldr r2, _080262B8 @ =gBattleCommunication\n\ + mov r8, r2\n\ + cmp r0, r3\n\ + bne _08026230\n\ + movs r1, 0x1\n\ +_08026230:\n\ + mov r3, r8\n\ + strb r1, [r3, 0x5]\n\ +_08026234:\n\ + ldr r2, _080262BC @ =gActiveBank\n\ + ldrb r0, [r2]\n\ + movs r4, 0x58\n\ + adds r1, r0, 0\n\ + muls r1, r4\n\ + adds r1, r7, r1\n\ + mov r3, r10\n\ + adds r3, 0x18\n\ + adds r1, r3\n\ + lsls r0, r6, 24\n\ + asrs r0, 24\n\ + ldrb r6, [r1]\n\ + adds r0, r6\n\ + strb r0, [r1]\n\ + ldrb r0, [r2]\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + adds r1, r0, r3\n\ + movs r0, 0\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0\n\ + bge _08026264\n\ + movs r0, 0\n\ + strb r0, [r1]\n\ +_08026264:\n\ + ldr r1, _080262BC @ =gActiveBank\n\ + ldrb r0, [r1]\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + adds r1, r0, r3\n\ + movs r0, 0\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0xC\n\ + ble _0802627A\n\ + movs r0, 0xC\n\ + strb r0, [r1]\n\ +_0802627A:\n\ + mov r2, r8\n\ + ldrb r0, [r2, 0x5]\n\ + cmp r0, 0x2\n\ + bne _080262A2\n\ + movs r3, 0x1\n\ + ands r3, r5\n\ + cmp r3, 0\n\ + beq _08026294\n\ + ldr r0, _080262C0 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r2, 0x1\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_08026294:\n\ + mov r4, r8\n\ + ldrb r0, [r4, 0x5]\n\ + cmp r0, 0x2\n\ + bne _080262A2\n\ + cmp r3, 0\n\ + bne _080262A2\n\ + b _08025F74\n\ +_080262A2:\n\ + movs r0, 0\n\ +_080262A4:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080262B4: .4byte gBankTarget\n\ +_080262B8: .4byte gBattleCommunication\n\ +_080262BC: .4byte gActiveBank\n\ +_080262C0: .4byte gBattleMoveFlags\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atk89_statbuffchange(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + if (ChangeStatBuffs(BATTLE_STRUCT->statChanger & 0xF0, BATTLE_STRUCT->statChanger & 0xF, BSScriptRead8(gBattlescriptCurrInstr + 1), jump_loc) == 0) + gBattlescriptCurrInstr += 6; +} + +static void atk8A_normalisebuffs(void) //haze +{ + int i, j; + for (i = 0; i < gNoOfAllBanks; i++) + { + for (j = 0; j < 8; j++) + { + gBattleMons[i].statStages[j] = 6; + } + } + gBattlescriptCurrInstr++; +} + +static void atk8B_setbide(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gBankAttacker] = gCurrentMove; + gTakenDmg[gBankAttacker] = 0; + gBattleMons[gBankAttacker].status2 |= (STATUS2_BIDE - 0x100); //2 turns + gBattlescriptCurrInstr++; +} + +static void atk8C_confuseifrepeatingattackends(void) +{ + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_LOCK_CONFUSE)) + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x75; + gBattlescriptCurrInstr++; +} + +static void atk8D_setmultihit_counter(void) +{ + if (BSScriptRead8(gBattlescriptCurrInstr + 1)) + gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1); + else + { + gMultiHitCounter = Random() & 3; + if (gMultiHitCounter > 1) + gMultiHitCounter = (Random() & 3) + 2; + else + gMultiHitCounter += 2; + } + gBattlescriptCurrInstr += 2; +} + +static void atk8E_prepare_multihit(void) +{ + ewram[0x160e0] = 0xFD; + ewram[0x160e1] = 1; + ewram[0x160e2] = 1; + ewram[0x160e3] = 1; + ewram[0x160e4] = 0; + ewram[0x160e5] = 0xFF; + gBattlescriptCurrInstr++; +} + +static bool8 sub_80264C0(void) +{ + if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level) + { + ewram[gBankTarget + 0x16064] = gBattlePartyID[gBankTarget]; + } + else + { + u16 random = Random() & 0xFF; + if ((u32)((random * (gBattleMons[gBankAttacker].level + gBattleMons[gBankTarget].level) >> 8) + 1) <= (gBattleMons[gBankTarget].level / 4)) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + return 0; + } + ewram[gBankTarget + 0x16064] = gBattlePartyID[gBankTarget]; + } + gBattlescriptCurrInstr = gUnknown_081D90FC; + return 1; +} + +static void atk8F_forcerandomswitch(void) +{ + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)) + { + u8 i; + struct Pokemon* party; + u8 valid; + u8 val; + if (!GetBankSide(gBankTarget)) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + valid = 0; + val = 0; + if (sub_803FBFC(sub_803FC34(gBankTarget)) == 1) + val = 3; + for (i = val; i < val + 3; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) != 0) + valid++; + } + } + else + { + valid = 0; + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) != 0) + valid++; + } + } + + if ((valid < 2 && (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE) + || (valid < 3 && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else if (sub_80264C0()) + { +#define MON_CAN_BATTLE(mon) (((GetMonData(mon, MON_DATA_SPECIES) && GetMonData(mon, MON_DATA_IS_EGG) != 1 && GetMonData(mon, MON_DATA_HP)))) + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + do + { + val = Random() % 3; + if (sub_803FBFC(sub_803FC34(gBankTarget)) == 1) + i = val + 3; + else + i = val; + } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i])); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + do + { + i = Random() % 6; + } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i])); + } + else + { + do + { + i = Random() % 6; + } while (i == gBattlePartyID[gBankTarget] || !MON_CAN_BATTLE(&party[i])); + } + } + ewram[gBankTarget + 0x16068] = i; + if (!IsLinkDoubleBattle()) + sub_8012258(gBankTarget); + sub_8094B6C(gBankTarget, i, 0); + sub_8094B6C(gBankTarget ^ 2, i, 1); +#undef MON_CAN_BATTLE + } + } + else + { + sub_80264C0(); + } +} + +static void atk90_conversion_type_change(void) +{ + //randomly changes user's type to one of its moves' type + u8 valid_moves = 0; + u8 checked_move; + u8 move_type; + while (valid_moves < 4) + { + if (gBattleMons[gBankAttacker].moves[valid_moves] == 0) + break; + valid_moves++; + } + + for (checked_move = 0; checked_move < valid_moves; checked_move++) + { + move_type = gBattleMoves[gBattleMons[gBankAttacker].moves[checked_move]].type; + if (move_type == TYPE_MYSTERY) + { + if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST) + move_type = TYPE_GHOST; + else + move_type = TYPE_NORMAL; + } + if (move_type != gBattleMons[gBankAttacker].type1 && move_type != gBattleMons[gBankAttacker].type2) + break; + } + + if (checked_move == valid_moves) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + do + { + + while ((checked_move = Random() & 3) >= valid_moves); + + move_type = gBattleMoves[gBattleMons[gBankAttacker].moves[checked_move]].type; + if (move_type == TYPE_MYSTERY) + { + if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST) + move_type = TYPE_GHOST; + else + move_type = TYPE_NORMAL; + } + } while (move_type == gBattleMons[gBankAttacker].type1 || move_type == gBattleMons[gBankAttacker].type2); + + gBattleMons[gBankAttacker].type1 = move_type; + gBattleMons[gBankAttacker].type2 = move_type; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = move_type; + gBattleTextBuff1[3] = 0xFF; + + gBattlescriptCurrInstr += 5; + } +} + +static void atk91_givepaydaymoney(void) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney) + { + AddMoney(&gSaveBlock1.money, gPaydayMoney * BATTLE_STRUCT->moneyMultiplier); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 2; + gBattleTextBuff1[3] = 5; + gBattleTextBuff1[4] = gPaydayMoney; + gBattleTextBuff1[5] = uBYTE1_16(gPaydayMoney); + gBattleTextBuff1[6] = 0xFF; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gUnknown_081D95DB; + } + else + gBattlescriptCurrInstr++; +} + +static void atk92_setlightscreen(void) +{ + if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN; + gSideTimer[GetBankIdentity(gBankAttacker) & 1].lightscreenTimer = 5; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + } + gBattlescriptCurrInstr++; +} + +#ifdef NOTMATCHING +static void atk93_ko_move(void) +{ + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemBattle(gBankTarget, hold_effect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_STURDY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gLastUsedAbility = ABILITY_STURDY; + gBattlescriptCurrInstr = x; + RecordAbilityBattle(gBankTarget, ABILITY_STURDY); + return; + } + + if (!(gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS)) + { + u16 to_cmp = gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level + gBattleMoves[gCurrentMove].accuracy; + if (Random() % 0x64 + 1 < to_cmp || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level) + { + goto MOVESTATUS_MISSED_LABEL; + } + } + else + { + if (gDisableStructs[gBankTarget].bankWithSureHit != gBankAttacker || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level) + { + + } + } + +MOVESTATUS_MISSED_LABEL: + gBattleTypeFlags |= MOVESTATUS_MISSED; + if (gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#else +__attribute((naked)) +static void atk93_ko_move(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r7, _08026BA8 @ =gBattleMons\n\ + ldr r6, _08026BAC @ =gBankTarget\n\ + ldrb r2, [r6]\n\ + movs r5, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r5\n\ + adds r1, r0, r7\n\ + ldrh r0, [r1, 0x2E]\n\ + cmp r0, 0xAF\n\ + bne _08026BB4\n\ + ldr r1, _08026BB0 @ =gEnigmaBerries\n\ + lsls r0, r2, 3\n\ + subs r0, r2\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x7]\n\ + ldrb r6, [r0, 0x1A]\n\ + b _08026BCE\n\ + .align 2, 0\n\ +_08026BA8: .4byte gBattleMons\n\ +_08026BAC: .4byte gBankTarget\n\ +_08026BB0: .4byte gEnigmaBerries\n\ +_08026BB4:\n\ + ldrh r0, [r1, 0x2E]\n\ + bl ItemId_GetHoldEffect\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldrb r0, [r6]\n\ + muls r0, r5\n\ + adds r0, r7\n\ + ldrh r0, [r0, 0x2E]\n\ + bl ItemId_GetHoldEffectParam\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ +_08026BCE:\n\ + ldr r1, _08026C4C @ =gStringBank\n\ + ldr r5, _08026C50 @ =gBankTarget\n\ + ldrb r0, [r5]\n\ + strb r0, [r1]\n\ + cmp r4, 0x27\n\ + bne _08026C0C\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x64\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, r6\n\ + bcs _08026C0C\n\ + ldrb r0, [r5]\n\ + movs r1, 0x27\n\ + bl RecordItemBattle\n\ + ldr r2, _08026C54 @ =gSpecialStatuses\n\ + ldrb r1, [r5]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r2, 0x80\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_08026C0C:\n\ + ldr r0, _08026C58 @ =gBattleMons\n\ + mov r8, r0\n\ + ldr r1, _08026C50 @ =gBankTarget\n\ + ldrb r2, [r1]\n\ + movs r6, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r6\n\ + mov r3, r8\n\ + adds r5, r0, r3\n\ + adds r0, r5, 0\n\ + adds r0, 0x20\n\ + ldrb r3, [r0]\n\ + mov r10, r8\n\ + cmp r3, 0x5\n\ + bne _08026C6C\n\ + ldr r2, _08026C5C @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r0, _08026C60 @ =gLastUsedAbility\n\ + strb r3, [r0]\n\ + ldr r1, _08026C64 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08026C68 @ =gUnknown_081D9826\n\ + str r0, [r1]\n\ + ldr r1, _08026C50 @ =gBankTarget\n\ + ldrb r0, [r1]\n\ + movs r1, 0x5\n\ + bl RecordAbilityBattle\n\ + b _08026E40\n\ + .align 2, 0\n\ +_08026C4C: .4byte gStringBank\n\ +_08026C50: .4byte gBankTarget\n\ +_08026C54: .4byte gSpecialStatuses\n\ +_08026C58: .4byte gBattleMons\n\ +_08026C5C: .4byte gBattleMoveFlags\n\ +_08026C60: .4byte gLastUsedAbility\n\ +_08026C64: .4byte gBattlescriptCurrInstr\n\ +_08026C68: .4byte gUnknown_081D9826\n\ +_08026C6C:\n\ + ldr r1, _08026CE0 @ =gStatuses3\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08026CF4\n\ + ldr r1, _08026CE4 @ =gBattleMoves\n\ + ldr r0, _08026CE8 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + lsls r2, r0, 1\n\ + adds r2, r0\n\ + lsls r2, 2\n\ + adds r2, r1\n\ + ldr r7, _08026CEC @ =gBankAttacker\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + add r0, r10\n\ + adds r0, 0x2A\n\ + ldrb r0, [r0]\n\ + adds r1, r5, 0\n\ + adds r1, 0x2A\n\ + ldrb r1, [r1]\n\ + subs r0, r1\n\ + ldrb r2, [r2, 0x3]\n\ + adds r0, r2\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x64\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r0, 0x1\n\ + cmp r0, r4\n\ + bge _08026CDC\n\ + ldrb r0, [r7]\n\ + adds r1, r0, 0\n\ + muls r1, r6\n\ + add r1, r10\n\ + adds r1, 0x2A\n\ + ldr r2, _08026CF0 @ =gBankTarget\n\ + ldrb r0, [r2]\n\ + muls r0, r6\n\ + add r0, r10\n\ + adds r0, 0x2A\n\ + ldrb r1, [r1]\n\ + movs r4, 0x1\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bcs _08026D20\n\ +_08026CDC:\n\ + mov r10, r8\n\ + b _08026DE0\n\ + .align 2, 0\n\ +_08026CE0: .4byte gStatuses3\n\ +_08026CE4: .4byte gBattleMoves\n\ +_08026CE8: .4byte gCurrentMove\n\ +_08026CEC: .4byte gBankAttacker\n\ +_08026CF0: .4byte gBankTarget\n\ +_08026CF4:\n\ + ldr r0, _08026D4C @ =gDisableStructs\n\ + lsls r1, r2, 3\n\ + subs r1, r2\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldr r2, _08026D50 @ =gBankAttacker\n\ + ldrb r0, [r1, 0x15]\n\ + movs r4, 0\n\ + ldrb r3, [r2]\n\ + cmp r0, r3\n\ + bne _08026D20\n\ + ldrb r0, [r2]\n\ + muls r0, r6\n\ + add r0, r10\n\ + adds r0, 0x2A\n\ + adds r1, r5, 0\n\ + adds r1, 0x2A\n\ + ldrb r0, [r0]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08026D20\n\ + movs r4, 0x1\n\ +_08026D20:\n\ + cmp r4, 0\n\ + beq _08026DE0\n\ + ldr r0, _08026D54 @ =gProtectStructs\n\ + ldr r1, _08026D58 @ =gBankTarget\n\ + ldrb r2, [r1]\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + lsls r0, 30\n\ + cmp r0, 0\n\ + bge _08026D64\n\ + ldr r1, _08026D5C @ =gBattleMoveDamage\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + add r0, r10\n\ + ldrh r0, [r0, 0x28]\n\ + subs r0, 0x1\n\ + str r0, [r1]\n\ + ldr r2, _08026D60 @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x40\n\ + b _08026DC6\n\ + .align 2, 0\n\ +_08026D4C: .4byte gDisableStructs\n\ +_08026D50: .4byte gBankAttacker\n\ +_08026D54: .4byte gProtectStructs\n\ +_08026D58: .4byte gBankTarget\n\ +_08026D5C: .4byte gBattleMoveDamage\n\ +_08026D60: .4byte gBattleMoveFlags\n\ +_08026D64:\n\ + ldr r0, _08026DA0 @ =gSpecialStatuses\n\ + lsls r1, r2, 2\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + lsrs r0, 7\n\ + cmp r0, 0\n\ + beq _08026DB4\n\ + ldr r1, _08026DA4 @ =gBattleMoveDamage\n\ + movs r3, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r3\n\ + add r0, r10\n\ + ldrh r0, [r0, 0x28]\n\ + subs r0, 0x1\n\ + str r0, [r1]\n\ + ldr r2, _08026DA8 @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x80\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r1, _08026DAC @ =gLastUsedItem\n\ + ldr r2, _08026DB0 @ =gBankTarget\n\ + ldrb r0, [r2]\n\ + muls r0, r3\n\ + add r0, r10\n\ + ldrh r0, [r0, 0x2E]\n\ + strh r0, [r1]\n\ + b _08026DCA\n\ + .align 2, 0\n\ +_08026DA0: .4byte gSpecialStatuses\n\ +_08026DA4: .4byte gBattleMoveDamage\n\ +_08026DA8: .4byte gBattleMoveFlags\n\ +_08026DAC: .4byte gLastUsedItem\n\ +_08026DB0: .4byte gBankTarget\n\ +_08026DB4:\n\ + ldr r1, _08026DD4 @ =gBattleMoveDamage\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + add r0, r10\n\ + ldrh r0, [r0, 0x28]\n\ + str r0, [r1]\n\ + ldr r2, _08026DD8 @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x10\n\ +_08026DC6:\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ +_08026DCA:\n\ + ldr r1, _08026DDC @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + b _08026E40\n\ + .align 2, 0\n\ +_08026DD4: .4byte gBattleMoveDamage\n\ +_08026DD8: .4byte gBattleMoveFlags\n\ +_08026DDC: .4byte gBattlescriptCurrInstr\n\ +_08026DE0:\n\ + ldr r2, _08026E10 @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r0, _08026E14 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + movs r2, 0x58\n\ + adds r1, r0, 0\n\ + muls r1, r2\n\ + add r1, r10\n\ + adds r1, 0x2A\n\ + ldr r3, _08026E18 @ =gBankTarget\n\ + ldrb r0, [r3]\n\ + muls r0, r2\n\ + add r0, r10\n\ + adds r0, 0x2A\n\ + ldrb r1, [r1]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bcc _08026E20\n\ + ldr r1, _08026E1C @ =gBattleCommunication\n\ + movs r0, 0\n\ + b _08026E24\n\ + .align 2, 0\n\ +_08026E10: .4byte gBattleMoveFlags\n\ +_08026E14: .4byte gBankAttacker\n\ +_08026E18: .4byte gBankTarget\n\ +_08026E1C: .4byte gBattleCommunication\n\ +_08026E20:\n\ + ldr r1, _08026E50 @ =gBattleCommunication\n\ + movs r0, 0x1\n\ +_08026E24:\n\ + strb r0, [r1, 0x5]\n\ + ldr r3, _08026E54 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ +_08026E40:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08026E50: .4byte gBattleCommunication\n\ +_08026E54: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} +#endif // NOTMATCHING + +static void atk94_gethalfcurrentenemyhp(void) //super fang +{ + gBattleMoveDamage = gBattleMons[gBankTarget].hp / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattlescriptCurrInstr++; +} + +static void atk95_setsandstorm(void) +{ + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_SANDSTORM_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +static void atk96_weatherdamage(void) +{ + if (WEATHER_HAS_EFFECT) + { + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + if (gBattleMons[gBankAttacker].type1 != TYPE_ROCK && gBattleMons[gBankAttacker].type1 != TYPE_STEEL && gBattleMons[gBankAttacker].type1 != TYPE_GROUND + && gBattleMons[gBankAttacker].type2 != TYPE_ROCK && gBattleMons[gBankAttacker].type2 != TYPE_STEEL && gBattleMons[gBankAttacker].type2 != TYPE_GROUND + && gBattleMons[gBankAttacker].ability != ABILITY_SAND_VEIL && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else + { + gBattleMoveDamage = 0; + } + } + if (gBattleWeather & WEATHER_HAIL) + { + if (gBattleMons[gBankAttacker].type1 != TYPE_ICE && gBattleMons[gBankAttacker].type2 != TYPE_ICE && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else + { + gBattleMoveDamage = 0; + } + } + } + else + gBattleMoveDamage = 0; + + if (gAbsentBankFlags & gBitTable[gBankAttacker]) + gBattleMoveDamage = 0; + + gBattlescriptCurrInstr++; +} + +static void atk97_try_infatuation(void) +{ + struct Pokemon *attacker, *target; + u16 atk_species, def_species; + u32 atk_pid, def_pid; + if (!GetBankSide(gBankAttacker)) + attacker = &gPlayerParty[gBattlePartyID[gBankAttacker]]; + else + attacker = &gEnemyParty[gBattlePartyID[gBankAttacker]]; + + if (!GetBankSide(gBankTarget)) + target = &gPlayerParty[gBattlePartyID[gBankTarget]]; + else + target = &gEnemyParty[gBattlePartyID[gBankTarget]]; + + atk_species = GetMonData(attacker, MON_DATA_SPECIES); + atk_pid = GetMonData(attacker, MON_DATA_PERSONALITY); + + def_species = GetMonData(target, MON_DATA_SPECIES); + def_pid = GetMonData(target, MON_DATA_PERSONALITY); + + if (gBattleMons[gBankTarget].ability == ABILITY_OBLIVIOUS) + { + gBattlescriptCurrInstr = BattleScript_ObliviousPreventsAttraction; + gLastUsedAbility = ABILITY_OBLIVIOUS; + RecordAbilityBattle(gBankTarget, ABILITY_OBLIVIOUS); + } + else + { + if (GetGenderFromSpeciesAndPersonality(atk_species, atk_pid) == GetGenderFromSpeciesAndPersonality(def_species, def_pid) + || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE || gBattleMons[gBankTarget].status2 & STATUS2_INFATUATION || GetGenderFromSpeciesAndPersonality(atk_species, atk_pid) == 0xFF + || GetGenderFromSpeciesAndPersonality(def_species, def_pid) == 0xFF) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBankTarget].status2 |= (gBitTable[gBankAttacker] << 16); + gBattlescriptCurrInstr += 5; + } + } +} + +static void atk98_status_icon_update(void) +{ + if (gBattleExecBuffer) + return; + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) != 4) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } + else + { + gActiveBank = gBankAttacker; + if (!(gAbsentBankFlags & gBitTable[gActiveBank])) + { + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + } + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (!(gAbsentBankFlags & gBitTable[gActiveBank])) + { + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + } + } + gBattlescriptCurrInstr += 2; + } +} + +static void atk99_setmist(void) +{ + if (gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer = 5; + gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_MIST; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +static void atk9A_set_focusenergy(void) +{ + if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMons[gBankAttacker].status2 |= STATUS2_FOCUS_ENERGY; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +static void atk9B_transformdataexecution(void) +{ + gUnknown_02024BE8 = 0xFFFF; + gBattlescriptCurrInstr++; + if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + u32 i; s32 j; + u8 *atk_data, *def_data; + gBattleMons[gBankAttacker].status2 |= STATUS2_TRANSFORMED; + gDisableStructs[gBankAttacker].disabledMove = 0; + gDisableStructs[gBankAttacker].disableTimer1 = 0; + gDisableStructs[gBankAttacker].unk0 = gBattleMons[gBankTarget].personality; + gDisableStructs[gBankAttacker].unk18_b = 0; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 6; + gBattleTextBuff1[2] = (gBattleMons[gBankTarget].species); + gBattleTextBuff1[3] = uBYTE1_16(gBattleMons[gBankTarget].species); + gBattleTextBuff1[4] = 0xFF; + + atk_data = (u8*)(&gBattleMons[gBankAttacker]); + def_data = (u8*)(&gBattleMons[gBankTarget]); + + for (i = 0; i < 0x24; i++) + atk_data[i] = def_data[i]; + + for (j = 0; j < 4; j++) + { + if (gBattleMoves[gBattleMons[gBankAttacker].moves[j]].pp < 5) + gBattleMons[gBankAttacker].pp[j] = gBattleMoves[gBattleMons[gBankAttacker].moves[j]].pp; + else + gBattleMons[gBankAttacker].pp[j] = 5; + } + + gActiveBank = gBankAttacker; + EmitResetActionMoveSelection(0, 2); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } +} + +static void atk9C_set_substitute(void) +{ + u32 hp = gBattleMons[gBankAttacker].maxHP / 4; + if (gBattleMons[gBankAttacker].maxHP / 4 == 0) + hp = 1; + if (gBattleMons[gBankAttacker].hp <= hp) + { + gBattleMoveDamage = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMons[gBankAttacker].status2 |= STATUS2_SUBSTITUTE; + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED); + gDisableStructs[gBankAttacker].substituteHP = gBattleMoveDamage; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE; + } + gBattlescriptCurrInstr++; +} + +static bool8 IsMoveUncopyable(u16 move) +{ + int i; + for (i = 0; sUnknown_081FACFE[i] != 0xFFFE && sUnknown_081FACFE[i] != move; i++) {} + return (sUnknown_081FACFE[i] != 0xFFFE); +} + +static void atk9D_copyattack(void) +{ + gUnknown_02024BE8 = 0xFFFF; + if (IsMoveUncopyable(gLastUsedMove[gBankTarget]) || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED + || gLastUsedMove[gBankTarget] == 0 || gLastUsedMove[gBankTarget] == 0xFFFF) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + int i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMove[gBankTarget]) + break; + } + if (i == 4) + { + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMove[gBankTarget]; + if (gBattleMoves[gLastUsedMove[gBankTarget]].pp < 5) + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMove[gBankTarget]].pp; + else + gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gLastUsedMove[gBankTarget]; + gBattleTextBuff1[3] = uBYTE1_16(gLastUsedMove[gBankTarget]); + gBattleTextBuff1[4] = 0xFF; + + gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos]; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +#ifdef NONMATCHING +static void atk9E_metronome(void) +{ + // sUnknown_081FACFE + int i; + do + { + while ((gCurrentMove = (Random() & 0x1FF) + 1) > 0x162); + for (i = 0; sUnknown_081FACFE[i] != gCurrentMove && sUnknown_081FACFE[i] != 0xFFFF; i++); + } while (sUnknown_081FACFE[i] != 0xFFFF); + + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + gBankTarget = GetMoveTarget(gCurrentMove, 0); +} + +#else +__attribute__((naked)) +static void atk9E_metronome(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + ldr r7, _08027938 @ =gCurrentMove\n\ + movs r6, 0xB1\n\ + lsls r6, 1\n\ + ldr r5, _0802793C @ =sUnknown_081FACFE\n\ + ldr r0, _08027940 @ =gBattlescriptCurrInstr\n\ + mov r8, r0\n\ +_080278CA:\n\ + bl Random\n\ + ldr r2, _08027944 @ =0x000001ff\n\ + adds r1, r2, 0\n\ + ands r0, r1\n\ + adds r0, 0x1\n\ + strh r0, [r7]\n\ + cmp r0, r6\n\ + bhi _080278CA\n\ + movs r0, 0x3\n\ +_080278DE:\n\ + subs r0, 0x1\n\ + cmp r0, 0\n\ + bge _080278DE\n\ + ldr r4, _08027938 @ =gCurrentMove\n\ + ldrh r2, [r4]\n\ + ldr r3, _08027948 @ =0x0000ffff\n\ + subs r0, r5, 0x2\n\ +_080278EC:\n\ + adds r0, 0x2\n\ + ldrh r1, [r0]\n\ + cmp r1, r2\n\ + beq _080278F8\n\ + cmp r1, r3\n\ + bne _080278EC\n\ +_080278F8:\n\ + ldr r0, _08027948 @ =0x0000ffff\n\ + cmp r1, r0\n\ + bne _080278CA\n\ + ldr r2, _0802794C @ =gHitMarker\n\ + ldr r0, [r2]\n\ + ldr r1, _08027950 @ =0xfffffbff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r3, _08027954 @ =gBattleScriptsEffectsTable\n\ + ldr r2, _08027958 @ =gBattleMoves\n\ + ldrh r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + ldrh r0, [r4]\n\ + movs r1, 0\n\ + bl GetMoveTarget\n\ + ldr r1, _0802795C @ =gBankTarget\n\ + strb r0, [r1]\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08027938: .4byte gCurrentMove\n\ +_0802793C: .4byte sUnknown_081FACFE\n\ +_08027940: .4byte gBattlescriptCurrInstr\n\ +_08027944: .4byte 0x000001ff\n\ +_08027948: .4byte 0x0000ffff\n\ +_0802794C: .4byte gHitMarker\n\ +_08027950: .4byte 0xfffffbff\n\ +_08027954: .4byte gBattleScriptsEffectsTable\n\ +_08027958: .4byte gBattleMoves\n\ +_0802795C: .4byte gBankTarget\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atk9F_dmgtolevel(void) +{ + gBattleMoveDamage = gBattleMons[gBankAttacker].level; + gBattlescriptCurrInstr++; +} + +static void atkA0_psywavedamageeffect(void) +{ + s32 rand_dmg; + while ((rand_dmg = (Random() & 0xF)) > 0xA); + rand_dmg *= 10; + gBattleMoveDamage = gBattleMons[gBankAttacker].level * (rand_dmg + 50) / 100; + gBattlescriptCurrInstr++; +} + +static void atkA1_counterdamagecalculator(void) +{ + u8 atk_side = GetBankSide(gBankAttacker); + u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].physicalBank); + if (gProtectStructs[gBankAttacker].physicalDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp) + { + gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2; + if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp) + gBankTarget = gSideTimer[def_side].followmeTarget; + else + gBankTarget = gProtectStructs[gBankAttacker].physicalBank; + gBattlescriptCurrInstr += 5; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkA2_mirrorcoatdamagecalculator(void) //a copy of atkA1 with the physical -> special field changes +{ + u8 atk_side = GetBankSide(gBankAttacker); + u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].specialBank); + if (gProtectStructs[gBankAttacker].specialDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp) + { + gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2; + if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp) + gBankTarget = gSideTimer[def_side].followmeTarget; + else + gBankTarget = gProtectStructs[gBankAttacker].specialBank; + gBattlescriptCurrInstr += 5; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkA3_disablelastusedattack(void) +{ + int i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankTarget].moves[i] == gLastUsedMove[gBankTarget]) + break; + } + if (gDisableStructs[gBankTarget].disabledMove == 0 && i != 4 && gBattleMons[gBankTarget].pp[i] != 0) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gBattleMons[gBankTarget].moves[i]; + gBattleTextBuff1[3] = uBYTE1_16(gBattleMons[gBankTarget].moves[i]); + gBattleTextBuff1[4] = 0xFF; + + gDisableStructs[gBankTarget].disabledMove = gBattleMons[gBankTarget].moves[i]; + gDisableStructs[gBankTarget].disableTimer1 = (Random() & 3) + 2; + gDisableStructs[gBankTarget].disableTimer2 = gDisableStructs[gBankTarget].disableTimer1; //that's interesting + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkA4_setencore(void) +{ + int i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankTarget].moves[i] == gLastUsedMove[gBankTarget]) + break; + } + if (gLastUsedMove[gBankTarget] == MOVE_STRUGGLE || gLastUsedMove[gBankTarget] == MOVE_ENCORE || gLastUsedMove[gBankTarget] == MOVE_MIRROR_MOVE) + i = 4; + if (gDisableStructs[gBankTarget].encoredMove == 0 && i != 4 && gBattleMons[gBankTarget].pp[i] != 0) + { + gDisableStructs[gBankTarget].encoredMove = gBattleMons[gBankTarget].moves[i]; + gDisableStructs[gBankTarget].encoredMovePos = i; + gDisableStructs[gBankTarget].encoreTimer1 = (Random() & 3) + 3; + gDisableStructs[gBankTarget].encoreTimer2 = gDisableStructs[gBankTarget].encoreTimer1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkA5_painsplitdmgcalc(void) +{ + if (!(gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)) + { + s32 hp_diff = (gBattleMons[gBankAttacker].hp + gBattleMons[gBankTarget].hp) / 2; + s32 to_store = gBattleMoveDamage = gBattleMons[gBankTarget].hp - hp_diff; + BATTLE_STRUCT->unk16014 = sBYTE0_32(to_store); + BATTLE_STRUCT->unk16015 = sBYTE1_32(to_store); + BATTLE_STRUCT->unk16016 = sBYTE2_32(to_store); + BATTLE_STRUCT->unk16017 = sBYTE3_32(to_store); + + gBattleMoveDamage = gBattleMons[gBankAttacker].hp - hp_diff; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; + + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#ifdef NONMATCHING +static void atkA6_settypetorandomresistance(void) +{ + if (gMoveHitWith[gBankAttacker] == 0 || gMoveHitWith[gBankAttacker] == 0xFFFF || (IsTwoTurnsMove(gMoveHitWith[gBankAttacker]) && !gProtectStructs[gBankAttacker].physicalDmg && !gProtectStructs[gBankAttacker].specialDmg)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + int type = 0, rands = 0; + do + { + while (((type = (Random() & 0x7F)) > 0x70)); + type *= 3; + if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + { + gBattleMons[gBankAttacker].type1 = type; + gBattleMons[gBankAttacker].type2 = type; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = type; + gBattleTextBuff1[3] = 0xFF; + gBattlescriptCurrInstr += 5; + return; + } + rands++; + } while (rands <= 999); + + type = 0, rands = 0; + do + { + if (gTypeEffectiveness[type] == 0xFE || gTypeEffectiveness[type] != 0xFF) + { + if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + { + gBattleMons[gBankAttacker].type1 = gTypeEffectiveness[rands + 1]; + gBattleMons[gBankAttacker].type2 = gTypeEffectiveness[rands + 1]; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = gTypeEffectiveness[rands + 1]; + gBattleTextBuff1[3] = 0xFF; + gBattlescriptCurrInstr += 5; + return; + } + } + type += 3, rands += 3; + } while (rands < 336); + + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +#else +__attribute__((naked)) +static void atkA6_settypetorandomresistance(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r1, _08027FA8 @ =gMoveHitWith\n\ + ldr r4, _08027FAC @ =gBankAttacker\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r2, r0, r1\n\ + ldrh r1, [r2]\n\ + cmp r1, 0\n\ + beq _08027F8C\n\ + ldr r0, _08027FB0 @ =0x0000ffff\n\ + cmp r1, r0\n\ + beq _08027F8C\n\ + ldrh r0, [r2]\n\ + bl IsTwoTurnsMove\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08028024\n\ + ldr r2, _08027FB4 @ =gProtectStructs\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 4\n\ + adds r0, r2, 0x4\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08028024\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08028024\n\ +_08027F8C:\n\ + ldr r3, _08027FB8 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ + b _08028110\n\ + .align 2, 0\n\ +_08027FA8: .4byte gMoveHitWith\n\ +_08027FAC: .4byte gBankAttacker\n\ +_08027FB0: .4byte 0x0000ffff\n\ +_08027FB4: .4byte gProtectStructs\n\ +_08027FB8: .4byte gBattlescriptCurrInstr\n\ +_08027FBC:\n\ + mov r0, r12\n\ + strb r5, [r0]\n\ + mov r1, r10\n\ + ldrb r0, [r1]\n\ + muls r0, r2\n\ + adds r0, r7\n\ + adds r0, 0x22\n\ + strb r5, [r0]\n\ + ldr r1, _08027FE0 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x1]\n\ + strb r5, [r1, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + ldr r1, _08027FE4 @ =gBattlescriptCurrInstr\n\ + b _08028012\n\ + .align 2, 0\n\ +_08027FE0: .4byte gBattleTextBuff1\n\ +_08027FE4: .4byte gBattlescriptCurrInstr\n\ +_08027FE8:\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + adds r0, r3\n\ + ldrb r2, [r0]\n\ + strb r2, [r4]\n\ + mov r4, r10\n\ + ldrb r0, [r4]\n\ + muls r0, r6\n\ + ldr r7, _0802801C @ =gBattleMons\n\ + adds r0, r7\n\ + adds r0, 0x22\n\ + strb r2, [r0]\n\ + ldr r1, _08028020 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x1]\n\ + strb r2, [r1, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + mov r1, r12\n\ +_08028012:\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + b _08028110\n\ + .align 2, 0\n\ +_0802801C: .4byte gBattleMons\n\ +_08028020: .4byte gBattleTextBuff1\n\ +_08028024:\n\ + movs r4, 0\n\ + mov r8, r4\n\ + movs r7, 0x7F\n\ + mov r9, r7\n\ +_0802802C:\n\ + bl Random\n\ + mov r4, r9\n\ + ands r4, r0\n\ + cmp r4, 0x70\n\ + bhi _0802802C\n\ + lsls r0, r4, 1\n\ + adds r4, r0, r4\n\ + ldr r6, _08028120 @ =gTypeEffectiveness\n\ + adds r3, r4, r6\n\ + ldr r1, _08028124 @ =gUnknown_02024C44\n\ + ldr r2, _08028128 @ =gBankAttacker\n\ + ldrb r5, [r2]\n\ + lsls r0, r5, 1\n\ + adds r0, r1\n\ + ldrb r1, [r3]\n\ + mov r10, r2\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bne _08028088\n\ + adds r0, r4, 0x2\n\ + adds r0, r6\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x5\n\ + bhi _08028088\n\ + ldr r7, _0802812C @ =gBattleMons\n\ + movs r2, 0x58\n\ + adds r0, r5, 0\n\ + muls r0, r2\n\ + adds r3, r0, r7\n\ + movs r0, 0x21\n\ + adds r0, r3\n\ + mov r12, r0\n\ + adds r0, r4, 0x1\n\ + adds r0, r6\n\ + ldrb r5, [r0]\n\ + mov r1, r12\n\ + ldrb r0, [r1]\n\ + adds r1, r5, 0\n\ + cmp r0, r1\n\ + beq _08028088\n\ + adds r0, r3, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, r1\n\ + bne _08027FBC\n\ +_08028088:\n\ + movs r7, 0x1\n\ + add r8, r7\n\ + ldr r0, _08028130 @ =0x000003e7\n\ + cmp r8, r0\n\ + ble _0802802C\n\ + movs r0, 0\n\ + mov r8, r0\n\ + ldr r1, _08028134 @ =gBattlescriptCurrInstr\n\ + mov r12, r1\n\ + ldr r3, _08028120 @ =gTypeEffectiveness\n\ + adds r0, r4, 0x1\n\ + adds r0, r3\n\ + mov r9, r0\n\ + adds r5, r3, 0\n\ +_080280A4:\n\ + ldrb r1, [r5]\n\ + cmp r1, 0xFF\n\ + bgt _080280AE\n\ + cmp r1, 0xFE\n\ + bge _080280E8\n\ +_080280AE:\n\ + mov r4, r10\n\ + ldrb r2, [r4]\n\ + lsls r0, r2, 1\n\ + ldr r7, _08028124 @ =gUnknown_02024C44\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bne _080280E8\n\ + ldrb r0, [r5, 0x2]\n\ + cmp r0, 0x5\n\ + bhi _080280E8\n\ + movs r6, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r6\n\ + ldr r1, _0802812C @ =gBattleMons\n\ + adds r2, r0, r1\n\ + adds r4, r2, 0\n\ + adds r4, 0x21\n\ + ldrb r0, [r4]\n\ + mov r7, r9\n\ + ldrb r1, [r7]\n\ + cmp r0, r1\n\ + beq _080280E8\n\ + adds r0, r2, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, r1\n\ + beq _080280E8\n\ + b _08027FE8\n\ +_080280E8:\n\ + adds r5, 0x3\n\ + movs r0, 0x3\n\ + add r8, r0\n\ + ldr r0, _08028138 @ =0x0000014f\n\ + cmp r8, r0\n\ + bls _080280A4\n\ + mov r1, r12\n\ + ldr r2, [r1]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + mov r4, r12\n\ + str r1, [r4]\n\ +_08028110:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08028120: .4byte gTypeEffectiveness\n\ +_08028124: .4byte gUnknown_02024C44\n\ +_08028128: .4byte gBankAttacker\n\ +_0802812C: .4byte gBattleMons\n\ +_08028130: .4byte 0x000003e7\n\ +_08028134: .4byte gBattlescriptCurrInstr\n\ +_08028138: .4byte 0x0000014f\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atkA7_setalwayshitflag(void) +{ + gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS); + gStatuses3[gBankTarget] |= 0x10; + gDisableStructs[gBankTarget].bankWithSureHit = gBankAttacker; + gBattlescriptCurrInstr++; +} + +struct move_pp +{ + u16 move[4]; + u8 pp[4]; + u8 ppBonuses; +}; + +static void atkA8_copymovepermanently(void) +{ + gUnknown_02024BE8 = 0xFFFF; + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) && gUnknown_02024C2C[gBankTarget] != MOVE_STRUGGLE && gUnknown_02024C2C[gBankTarget] != 0 && gUnknown_02024C2C[gBankTarget] != 0xFFFF && gUnknown_02024C2C[gBankTarget] != MOVE_SKETCH) + { + int i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH) + continue; + if (gBattleMons[gBankAttacker].moves[i] == gUnknown_02024C2C[gBankTarget]) + break; + } + if (i != 4) //sketch fail + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else //sketch worked + { + struct move_pp moves_data; + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknown_02024C2C[gBankTarget]; + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknown_02024C2C[gBankTarget]].pp; + gActiveBank = gBankAttacker; + for (i = 0; i < 4; i++) + { + moves_data.move[i] = gBattleMons[gBankAttacker].moves[i]; + moves_data.pp[i] = gBattleMons[gBankAttacker].pp[i]; + } + moves_data.ppBonuses = gBattleMons[gBankAttacker].ppBonuses; + EmitSetAttributes(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct move_pp), &moves_data); + MarkBufferBankForExecution(gActiveBank); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gUnknown_02024C2C[gBankTarget]; + gBattleTextBuff1[3] = gUnknown_02024C2C[gBankTarget] >> 8; + gBattleTextBuff1[4] = 0xFF; + gBattlescriptCurrInstr += 5; + } + } + else //sketch fail + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static bool8 IsTwoTurnsMove(u16 move) +{ + u8 effect = gBattleMoves[move].effect; + if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE) + return 1; + else + return 0; +} + +static bool8 IsMoveUnchoosable(u16 move) +{ + if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME) + return 1; + else + return 0; +} + +static u8 AttacksThisTurn(u8 bank, u16 move) //Note: returns 1 if it's a charging turn, otherwise 2 +{ + //first argument is unused + u8 effect; + if (gBattleMoves[move].effect == EFFECT_SOLARBEAM && (gBattleWeather & WEATHER_SUN_ANY)) + return 2; + effect = gBattleMoves[move].effect; + if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE) + { + if ((gHitMarker & HITMARKER_x8000000)) + return 1; + } + return 2; +} + +static void atkA9_sleeptalk_choose_move(void) +{ + u8 unusable_moves = 0; + int i; + + for (i = 0; i < 4; i++) + { + if (IsMoveUnchoosable(gBattleMons[gBankAttacker].moves[i]) || gBattleMons[gBankAttacker].moves[i] == MOVE_FOCUS_PUNCH + || gBattleMons[gBankAttacker].moves[i] == MOVE_UPROAR || IsTwoTurnsMove(gBattleMons[gBankAttacker].moves[i])) + unusable_moves |= gBitTable[i]; + } + unusable_moves = CheckMoveLimitations(gBankAttacker, unusable_moves, 0xFD); + if (unusable_moves == 0xF) //all 4 moves cannot be chosen + gBattlescriptCurrInstr += 5; + else //at least one move can be chosen + { + u32 random_pos; + do + { + random_pos = Random() & 3; + } while ((gBitTable[random_pos] & unusable_moves)); + + gRandomMove = gBattleMons[gBankAttacker].moves[random_pos]; + gCurrMovePos = random_pos; + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBankTarget = GetMoveTarget(gRandomMove, 0); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkAA_set_destinybond(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND; + gBattlescriptCurrInstr++; +} + +static void DestinyBondFlagUpdate(void) +{ + u8 atk_side = GetBankSide(gBankAttacker); + u8 def_side = GetBankSide(gBankTarget); + if (gBattleMons[gBankTarget].status2 & STATUS2_DESTINY_BOND && atk_side != def_side && !(gHitMarker & HITMARKER_GRUDGE)) + gHitMarker |= HITMARKER_DESTINYBOND; +} + +static void atkAB_DestinyBondFlagUpdate(void) +{ + DestinyBondFlagUpdate(); + gBattlescriptCurrInstr++; +} + +static void atkAC_remaininghptopower(void) +{ + s32 hp_fraction = GetScaledHPFraction(gBattleMons[gBankAttacker].hp, gBattleMons[gBankAttacker].maxHP, 48); + int i; + for (i = 0; i < 12; i += 2) + { + if (hp_fraction <= sUnknown_081FAD26[i]) + break; + } + gDynamicBasePower = sUnknown_081FAD26[i + 1]; + gBattlescriptCurrInstr++; +} + +static void atkAD_spite_ppreduce(void) +{ + if (gLastUsedMove[gBankTarget] != 0 && gLastUsedMove[gBankTarget] != 0xFFFF && !(gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)) + { + int i; + for (i = 0; i < 4; i++) + { + if (gLastUsedMove[gBankTarget] == gBattleMons[gBankTarget].moves[i]) + break; + } + if (i != 4 && gBattleMons[gBankTarget].pp[i] > 1) + { + s32 lost_pp = (Random() & 3) + 2; + if (gBattleMons[gBankTarget].pp[i] < lost_pp) + lost_pp = gBattleMons[gBankTarget].pp[i]; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gLastUsedMove[gBankTarget]; + gBattleTextBuff1[3] = gLastUsedMove[gBankTarget] >> 8; + gBattleTextBuff1[4] = 0xFF; + ConvertIntToDecimalStringN(gBattleTextBuff2, lost_pp, 0, 1); + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 1; + gBattleTextBuff2[2] = 1; + gBattleTextBuff2[3] = 1; + gBattleTextBuff2[4] = lost_pp; + gBattleTextBuff2[5] = 0xFF; + + gBattleMons[gBankTarget].pp[i] -= lost_pp; + gActiveBank = gBankTarget; + if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i]) + && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + { + EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 5; + if (gBattleMons[gBankTarget].pp[i] == 0) + CancelMultiTurnMoves(gBankTarget); + return; + } + } + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkAE_heal_party_status(void) +{ + register u32 zero2 asm("r4") = 0; + u32 zero = zero2; + u8 to_heal = 0; + if (gCurrentMove == MOVE_HEAL_BELL) + { + struct Pokemon* party; + int i; + + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (GetBankSide(gBankAttacker) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gBankAttacker].status1 = 0; + } + else + { + RecordAbilityBattle(gBankAttacker, gBattleMons[gBankAttacker].ability); + gBattleCommunication[MULTISTRING_CHOOSER] |= 1; + } + + gActiveBank = BATTLE_STRUCT->scriptingActive = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) + { + if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gActiveBank].status1 = 0; + } + else + { + RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability); + gBattleCommunication[MULTISTRING_CHOOSER] |= 2; + } + } + + for (i = 0; i < 6; i++) + { + u16 species = GetMonData(&party[i], MON_DATA_SPECIES2); + u8 abilityBit = GetMonData(&party[i], MON_DATA_ALT_ABILITY); + if (species != 0 && species != SPECIES_EGG) + { + u8 ability; + if (gBattlePartyID[gBankAttacker] == i) + ability = gBattleMons[gBankAttacker].ability; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[gActiveBank] == i && !(gAbsentBankFlags & gBitTable[gActiveBank])) + ability = gBattleMons[gActiveBank].ability; + else + ability = GetAbilityBySpecies(species, abilityBit); + if (ability != ABILITY_SOUNDPROOF) + to_heal |= (1 << i); + } + } + } + else //Aromatherapy + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + to_heal = 0x3F; + gBattleMons[gBankAttacker].status1 = zero2; + + gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) + gBattleMons[gActiveBank].status1 = 0; + + } + //missing check? + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, to_heal, 4, &zero); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr++; +} + +static void atkAF_cursetarget(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_CURSED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBankTarget].status2 |= STATUS2_CURSED; + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattlescriptCurrInstr += 5; + } +} + +static void atkB0_set_spikes(void) +{ + u8 side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].spikesAmount == 3) + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gSideAffecting[side] |= SIDE_STATUS_SPIKES; + gSideTimer[side].spikesAmount++; + gBattlescriptCurrInstr += 5; + } +} + +static void atkB1_set_foresight(void) +{ + gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT; + gBattlescriptCurrInstr++; +} + +static void atkB2_setperishsong(void) +{ + int not_affected_pokes = 0, i; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_PERISH_SONG || gBattleMons[i].ability == ABILITY_SOUNDPROOF) + not_affected_pokes++; + else + { + gStatuses3[i] |= STATUS3_PERISH_SONG; + gDisableStructs[i].perishSong1 = 3; + gDisableStructs[i].perishSong2 = 3; + } + } + + sub_80153D0(gBankAttacker); + if (not_affected_pokes == gNoOfAllBanks) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +static void atkB3_rolloutdamagecalculation(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_1D6F74; + } + else + { + int i; + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) //first hit + { + gDisableStructs[gBankAttacker].rolloutTimer1 = 5; + gDisableStructs[gBankAttacker].rolloutTimer2 = 5; + gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gBankAttacker] = gCurrentMove; + } + if (--gDisableStructs[gBankAttacker].rolloutTimer1 == 0) + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); + + gDynamicBasePower = gBattleMoves[gCurrentMove].power; + for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutTimer1); i++) + gDynamicBasePower *= 2; + + if (gBattleMons[gBankAttacker].status2 & STATUS2_DEFENSE_CURL) + gDynamicBasePower *= 2; + + gBattlescriptCurrInstr++; + } +} + +static void atkB4_jumpifconfusedandstatmaxed(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_CONFUSION && gBattleMons[gBankTarget].statStages[BSScriptRead8(gBattlescriptCurrInstr + 1)] == 0xC) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +static void atkB5_furycuttercalc(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + gDisableStructs[gBankAttacker].furyCutterCounter = 0; + gBattlescriptCurrInstr = BattleScript_1D6F74; + } + else + { + int i; + + if (gDisableStructs[gBankAttacker].furyCutterCounter != 5) + gDisableStructs[gBankAttacker].furyCutterCounter++; + + gDynamicBasePower = gBattleMoves[gCurrentMove].power; + for (i = 1; i < gDisableStructs[gBankAttacker].furyCutterCounter; i++) + gDynamicBasePower *= 2; + + gBattlescriptCurrInstr++; + } +} + +static void atkB6_happinesstodamagecalculation(void) +{ + if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN) + gDynamicBasePower = 10 * (gBattleMons[gBankAttacker].friendship) / 25; + else //EFFECT_FRUSTRATION + gDynamicBasePower = 10 * (255 - gBattleMons[gBankAttacker].friendship) / 25; + gBattlescriptCurrInstr++; +} + +static void atkB7_presentdamagecalculation(void) +{ + s32 rand = Random() & 0xFF; + if (rand < 102) + gDynamicBasePower = 40; + else if (rand < 178) + gDynamicBasePower = 80; + else if (rand < 204) + gDynamicBasePower = 120; + else + { + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + if (rand < 204) + gBattlescriptCurrInstr = BattleScript_1D6F44; + else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp) + gBattlescriptCurrInstr = BattleScript_1D83B5; + else + { + //gBattleMoveFlags &= ~(MOVESTATUS_NOTAFFECTED); only in Emerald + gBattlescriptCurrInstr = BattleScript_1D839B; + } +} + +static void atkB8_set_safeguard(void) +{ + if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_SAFEGUARD) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_SAFEGUARD; + gSideTimer[GetBankIdentity(gBankAttacker) & 1].safeguardTimer = 5; + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + gBattlescriptCurrInstr++; +} + +static void atkB9_magnitudedamagecalculation(void) +{ + s32 magnitude = Random() % 100; + if (magnitude < 5) + { + gDynamicBasePower = 10; + magnitude = 4; + } + else if (magnitude < 15) + { + gDynamicBasePower = 30; + magnitude = 5; + } + else if (magnitude < 35) + { + gDynamicBasePower = 50; + magnitude = 6; + } + else if (magnitude < 65) + { + gDynamicBasePower = 70; + magnitude = 7; + } + else if (magnitude < 85) + { + gDynamicBasePower = 90; + magnitude = 8; + } + else if (magnitude < 95) + { + gDynamicBasePower = 110; + magnitude = 9; + } + else + { + gDynamicBasePower = 150; + magnitude = 10; + } + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 1; + gBattleTextBuff1[3] = 2; + gBattleTextBuff1[4] = magnitude; + gBattleTextBuff1[5] = 0xFF; + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) //a valid target was found + break; + } + gBattlescriptCurrInstr++; +} + +static void atkBA_jumpifnopursuitswitchdmg(void) +{ + if (gMultiHitCounter == 1) + { + if (GetBankSide(gBankAttacker) == 0) + gBankTarget = GetBankByPlayerAI(1); + else + gBankTarget = GetBankByPlayerAI(0); + } + else + { + if (GetBankSide(gBankAttacker) == 0) + gBankTarget = GetBankByPlayerAI(3); + else + gBankTarget = GetBankByPlayerAI(2); + } + + if (gActionForBanks[gBankTarget] == 0 && gBankAttacker == ewram[gBankTarget + 0x16010] && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + && gBattleMons[gBankAttacker].hp && !gDisableStructs[gBankTarget].truantCounter && gChosenMovesByBanks[gBankTarget] == MOVE_PURSUIT) + { + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == gBankTarget) + gUnknown_02024A76[i] = 11; + } + gCurrentMove = MOVE_PURSUIT; + gBattlescriptCurrInstr += 5; + BATTLE_STRUCT->animTurn = 1; + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkBB_setsunny(void) +{ + if (gBattleWeather & WEATHER_SUN_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_SUN_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +static void atkBC_maxattackhalvehp(void) //belly drum +{ + u32 half_hp = gBattleMons[gBankAttacker].maxHP / 2; + if (!(gBattleMons[gBankAttacker].maxHP / 2)) + half_hp = 1; + + if (gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] < 12 && gBattleMons[gBankAttacker].hp > half_hp) + { + gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] = 12; + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkBD_copyfoestats(void) //psych up +{ + int i; + for (i = 0; i < 8; i++) + { + gBattleMons[gBankAttacker].statStages[i] = gBattleMons[gBankTarget].statStages[i]; + } + gBattlescriptCurrInstr += 5; //why not 1? possible unused fail possibility? +} + +static void atkBE_breakfree(void) //rapid spin +{ + if (gBattleMons[gBankAttacker].status2 & STATUS2_WRAPPED) + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED); + gBankTarget = ewram[gBankAttacker + 0x16020]; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = ewram[gBankAttacker * 2 + 0x16004]; + gBattleTextBuff1[3] = ewram[gBankAttacker * 2 + 0x16005]; + gBattleTextBuff1[4] = 0xFF; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_WrapFree; + } + else if (gStatuses3[gBankAttacker] & STATUS3_LEECHSEED) + { + gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED); + gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED_BANK); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_LeechSeedFree; + } + else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES) + { + gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES); + gSideTimer[GetBankSide(gBankAttacker)].spikesAmount = 0; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SpikesFree; + } + else + gBattlescriptCurrInstr++; +} + +static void atkBF_set_defense_curl(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL; + gBattlescriptCurrInstr++; +} + +static void atkC0_recoverbasedonsunlight(void) +{ + gBankTarget = gBankAttacker; + if (gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP) + { + if (!gBattleWeather || !WEATHER_HAS_EFFECT) + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + else if (gBattleWeather & WEATHER_SUN_ANY) + gBattleMoveDamage = 20 * gBattleMons[gBankAttacker].maxHP / 30; + else //not sunny weather + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +__attribute__((naked)) +static void atkC1_hidden_power(void) +{ + asm(".syntax unified\n\ +push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r2, _08029894 @ =gBattleMons\n\ + ldr r0, _08029898 @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r4, r1, 0\n\ + muls r4, r0\n\ + adds r4, r2\n\ + ldrb r0, [r4, 0x14]\n\ + mov r10, r0\n\ + mov r7, r10\n\ + lsls r7, 27\n\ + adds r0, r7, 0\n\ + lsrs r0, 27\n\ + mov r10, r0\n\ + movs r1, 0x2\n\ + mov r2, r10\n\ + ands r2, r1\n\ + asrs r2, 1\n\ + ldrh r7, [r4, 0x14]\n\ + mov r9, r7\n\ + mov r0, r9\n\ + lsls r0, 22\n\ + mov r9, r0\n\ + lsrs r3, r0, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + orrs r2, r0\n\ + ldrb r7, [r4, 0x15]\n\ + mov r8, r7\n\ + mov r0, r8\n\ + lsls r0, 25\n\ + mov r8, r0\n\ + lsrs r3, r0, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 1\n\ + orrs r2, r0\n\ + ldr r6, [r4, 0x14]\n\ + lsls r6, 12\n\ + lsrs r3, r6, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 2\n\ + orrs r2, r0\n\ + ldrh r5, [r4, 0x16]\n\ + lsls r5, 23\n\ + lsrs r3, r5, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 3\n\ + orrs r2, r0\n\ + ldrb r3, [r4, 0x17]\n\ + lsls r3, 26\n\ + lsrs r0, r3, 27\n\ + ands r1, r0\n\ + lsls r1, 4\n\ + orrs r2, r1\n\ + movs r1, 0x1\n\ + adds r4, r1, 0\n\ + mov r7, r10\n\ + ands r4, r7\n\ + mov r0, r9\n\ + lsrs r0, 27\n\ + mov r9, r0\n\ + adds r0, r1, 0\n\ + mov r7, r9\n\ + ands r0, r7\n\ + lsls r0, 1\n\ + orrs r4, r0\n\ + mov r0, r8\n\ + lsrs r0, 27\n\ + mov r8, r0\n\ + adds r0, r1, 0\n\ + mov r7, r8\n\ + ands r0, r7\n\ + lsls r0, 2\n\ + orrs r4, r0\n\ + lsrs r6, 27\n\ + adds r0, r1, 0\n\ + ands r0, r6\n\ + lsls r0, 3\n\ + orrs r4, r0\n\ + lsrs r5, 27\n\ + adds r0, r1, 0\n\ + ands r0, r5\n\ + lsls r0, 4\n\ + orrs r4, r0\n\ + lsrs r3, 27\n\ + ands r1, r3\n\ + lsls r1, 5\n\ + orrs r4, r1\n\ + ldr r5, _0802989C @ =gDynamicBasePower\n\ + lsls r0, r2, 2\n\ + adds r0, r2\n\ + lsls r0, 3\n\ + movs r1, 0x3F\n\ + bl __divsi3\n\ + adds r0, 0x1E\n\ + strh r0, [r5]\n\ + ldr r5, _080298A0 @ =0x02000000\n\ + lsls r0, r4, 4\n\ + subs r0, r4\n\ + movs r1, 0x3F\n\ + bl __divsi3\n\ + adds r1, r0, 0x1\n\ + ldr r0, _080298A4 @ =0x0001601c\n\ + adds r5, r0\n\ + strb r1, [r5]\n\ + lsls r0, r1, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x8\n\ + bls _08029876\n\ + adds r0, r1, 0x1\n\ + strb r0, [r5]\n\ +_08029876:\n\ + ldrb r0, [r5]\n\ + movs r1, 0xC0\n\ + orrs r0, r1\n\ + strb r0, [r5]\n\ + ldr r1, _080298A8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08029894: .4byte gBattleMons\n\ +_08029898: .4byte gBankAttacker\n\ +_0802989C: .4byte gDynamicBasePower\n\ +_080298A0: .4byte 0x02000000\n\ +_080298A4: .4byte 0x0001601c\n\ +_080298A8: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} + +static void atkC2_selectnexttarget(void) +{ + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + gBattlescriptCurrInstr++; +} + +static void atkC3_setfutureattack(void) +{ + if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gWishFutureKnock.futureSightMove[gBankTarget] = gCurrentMove; + gWishFutureKnock.futureSightAttacker[gBankTarget] = gBankAttacker; + gWishFutureKnock.futureSightCounter[gBankTarget] = 3; + gWishFutureKnock.futureSightDmg[gBankTarget] = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0, + 0, gBankAttacker, gBankTarget); + + if (gProtectStructs[gBankAttacker].helpingHand) + gWishFutureKnock.futureSightDmg[gBankTarget] = gWishFutureKnock.futureSightDmg[gBankTarget] * 15 / 10; + + if (gCurrentMove == MOVE_DOOM_DESIRE) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + + gBattlescriptCurrInstr += 5; + } +} + +#ifdef NONMATCHING +static void atkC4_beat_up(void) +{ + register struct Pokemon* party asm("r7"); + if (GetBankSide(gBankAttacker) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleMons[gBankTarget].hp == 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + while (gBattleCommunication[0] < 6) + { + if (GetMonData(&party[gBattleCommunication[0]], MON_DATA_HP) && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) + && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) != SPECIES_EGG && !GetMonData(&party[gBattleCommunication[0]], MON_DATA_STATUS)) + break; + gBattleCommunication[0]++; + } + if (gBattleCommunication[0] < 6) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gBankAttacker; + gBattleTextBuff1[3] = gBattleCommunication[0]; + gBattleTextBuff1[4] = 0xFF; + gBattlescriptCurrInstr += 9; + + gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack; + gBattleMoveDamage *= gBattleMoves[gCurrentMove].power; + gBattleMoveDamage *= (GetMonData(&party[gBattleCommunication[0]], MON_DATA_LEVEL) * 2 / 5 + 2); + gBattleMoveDamage /= gBaseStats[gBattleMons[gBankTarget].species].baseDefense; + gBattleMoveDamage = (gBattleMoveDamage / 50) + 2; + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + + gBattleCommunication[0]++; + } + else if (gBattleCommunication[0] != 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 5); + } +} +#else +__attribute__((naked)) +static void atkC4_beat_up(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + ldr r0, _08029A8C @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + ldr r7, _08029A90 @ =gEnemyParty\n\ + cmp r0, 0\n\ + bne _08029A62\n\ + ldr r7, _08029A94 @ =gPlayerParty\n\ +_08029A62:\n\ + ldr r2, _08029A98 @ =gBattleMons\n\ + ldr r0, _08029A9C @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r2\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08029AA4\n\ + ldr r3, _08029AA0 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + b _08029C40\n\ + .align 2, 0\n\ +_08029A8C: .4byte gBankAttacker\n\ +_08029A90: .4byte gEnemyParty\n\ +_08029A94: .4byte gPlayerParty\n\ +_08029A98: .4byte gBattleMons\n\ +_08029A9C: .4byte gBankTarget\n\ +_08029AA0: .4byte gBattlescriptCurrInstr\n\ +_08029AA4:\n\ + ldr r6, _08029BE0 @ =gBattleCommunication\n\ + ldrb r0, [r6]\n\ + mov r8, r0\n\ + cmp r0, 0x5\n\ + bls _08029AB0\n\ + b _08029C0C\n\ +_08029AB0:\n\ + adds r4, r6, 0\n\ + movs r5, 0x64\n\ +_08029AB4:\n\ + ldrb r0, [r4]\n\ + muls r0, r5\n\ + adds r0, r7, r0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08029AF8\n\ + ldrb r0, [r6]\n\ + muls r0, r5\n\ + adds r0, r7, r0\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08029AF8\n\ + ldrb r0, [r4]\n\ + muls r0, r5\n\ + adds r0, r7, r0\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + movs r1, 0xCE\n\ + lsls r1, 1\n\ + cmp r0, r1\n\ + beq _08029AF8\n\ + ldrb r0, [r4]\n\ + muls r0, r5\n\ + adds r0, r7, r0\n\ + movs r1, 0x37\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08029B08\n\ +_08029AF8:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, r4, 0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x5\n\ + bls _08029AB4\n\ +_08029B08:\n\ + ldr r1, _08029BE0 @ =gBattleCommunication\n\ + mov r9, r1\n\ + ldrb r2, [r1]\n\ + cmp r2, 0x5\n\ + bhi _08029C0C\n\ + ldr r1, _08029BE4 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x1]\n\ + ldr r6, _08029BE8 @ =gBankAttacker\n\ + ldrb r0, [r6]\n\ + strb r0, [r1, 0x2]\n\ + strb r2, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _08029BEC @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x9\n\ + str r0, [r1]\n\ + ldr r2, _08029BF0 @ =gBattleMoveDamage\n\ + mov r8, r2\n\ + ldr r5, _08029BF4 @ =gBaseStats\n\ + mov r1, r9\n\ + ldrb r0, [r1]\n\ + movs r4, 0x64\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + ldrb r3, [r1, 0x1]\n\ + mov r2, r8\n\ + str r3, [r2]\n\ + ldr r2, _08029BF8 @ =gBattleMoves\n\ + ldr r0, _08029BFC @ =gCurrentMove\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0, 0x1]\n\ + muls r0, r3\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + mov r2, r9\n\ + ldrb r0, [r2]\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + lsls r0, 1\n\ + movs r1, 0x5\n\ + bl __udivsi3\n\ + adds r0, 0x2\n\ + mov r2, r8\n\ + ldr r1, [r2]\n\ + muls r0, r1\n\ + str r0, [r2]\n\ + ldr r3, _08029C00 @ =gBattleMons\n\ + ldr r1, _08029C04 @ =gBankTarget\n\ + ldrb r2, [r1]\n\ + movs r1, 0x58\n\ + muls r1, r2\n\ + adds r1, r3\n\ + ldrh r2, [r1]\n\ + lsls r1, r2, 3\n\ + subs r1, r2\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + ldrb r1, [r1, 0x2]\n\ + bl __divsi3\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + movs r1, 0x32\n\ + bl __divsi3\n\ + adds r2, r0, 0x2\n\ + mov r0, r8\n\ + str r2, [r0]\n\ + ldr r1, _08029C08 @ =gProtectStructs\n\ + ldrb r0, [r6]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08029BD4\n\ + lsls r0, r2, 4\n\ + subs r0, r2\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + mov r1, r8\n\ + str r0, [r1]\n\ +_08029BD4:\n\ + mov r2, r9\n\ + ldrb r0, [r2]\n\ + adds r0, 0x1\n\ + strb r0, [r2]\n\ + b _08029C46\n\ + .align 2, 0\n\ +_08029BE0: .4byte gBattleCommunication\n\ +_08029BE4: .4byte gBattleTextBuff1\n\ +_08029BE8: .4byte gBankAttacker\n\ +_08029BEC: .4byte gBattlescriptCurrInstr\n\ +_08029BF0: .4byte gBattleMoveDamage\n\ +_08029BF4: .4byte gBaseStats\n\ +_08029BF8: .4byte gBattleMoves\n\ +_08029BFC: .4byte gCurrentMove\n\ +_08029C00: .4byte gBattleMons\n\ +_08029C04: .4byte gBankTarget\n\ +_08029C08: .4byte gProtectStructs\n\ +_08029C0C:\n\ + mov r0, r8\n\ + cmp r0, 0\n\ + beq _08029C2C\n\ + ldr r3, _08029C28 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + b _08029C40\n\ + .align 2, 0\n\ +_08029C28: .4byte gBattlescriptCurrInstr\n\ +_08029C2C:\n\ + ldr r3, _08029C54 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x5]\n\ + ldrb r0, [r2, 0x6]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x7]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x8]\n\ +_08029C40:\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ +_08029C46:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08029C54: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atkC5_hidepreattack(void) +{ + switch (gCurrentMove) + { + case MOVE_FLY: + case MOVE_BOUNCE: + gStatuses3[gBankAttacker] |= STATUS3_ON_AIR; + break; + case MOVE_DIG: + gStatuses3[gBankAttacker] |= STATUS3_UNDERGROUND; + break; + case MOVE_DIVE: + gStatuses3[gBankAttacker] |= STATUS3_UNDERWATER; + break; + } + gBattlescriptCurrInstr++; +} + +static void atkC6_unhidepostattack(void) +{ + switch (gCurrentMove) + { + case MOVE_FLY: + case MOVE_BOUNCE: + gStatuses3[gBankAttacker] &= ~STATUS3_ON_AIR; + break; + case MOVE_DIG: + gStatuses3[gBankAttacker] &= ~STATUS3_UNDERGROUND; + break; + case MOVE_DIVE: + gStatuses3[gBankAttacker] &= ~STATUS3_UNDERWATER; + break; + } + gBattlescriptCurrInstr++; +} + +static void atkC7_setminimize(void) +{ + if (gHitMarker & HITMARKER_OBEYS) + gStatuses3[gBankAttacker] |= STATUS3_MINIMIZED; + gBattlescriptCurrInstr++; +} + +static void atkC8_sethail(void) +{ + if (gBattleWeather & WEATHER_HAIL) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_HAIL; + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +static void atkC9_jumpifattackandspecialattackcannotfall(void) //memento +{ + if (gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] == 0 + && gBattleMons[gBankTarget].statStages[STAT_STAGE_SPATK] == 0 + && gBattleCommunication[6] != 1) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gActiveBank = gBankAttacker; + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + EmitHealthBarUpdate(0, 0x7FFF); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + } +} + +static void atkCA_setforcedtarget(void) //follow me +{ + gSideTimer[GetBankSide(gBankAttacker)].followmeTimer = 1; + gSideTimer[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker; + gBattlescriptCurrInstr++; +} + +static void atkCB_setcharge(void) +{ + gStatuses3[gBankAttacker] |= STATUS3_CHARGED_UP; + gDisableStructs[gBankAttacker].chargeTimer1 = 2; + gDisableStructs[gBankAttacker].chargeTimer2 = 2; + gBattlescriptCurrInstr++; +} + +static void atkCC_callterrainattack(void) //nature power +{ + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = sNaturePowerMoves[gBattleTerrain]; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + b_movescr_stack_push(gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]); + gBattlescriptCurrInstr++; +} + +static void atkCD_cureifburnedparalysedorpoisoned(void) //refresh +{ + if (gBattleMons[gBankAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) + { + gBattleMons[gBankAttacker].status1 = 0; + gBattlescriptCurrInstr += 5; + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkCE_settorment(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_TORMENT) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gBattleMons[gBankTarget].status2 |= STATUS2_TORMENT; + gBattlescriptCurrInstr += 5; + } +} + +static void atkCF_jumpifnodamage(void) +{ + if (gProtectStructs[gBankAttacker].physicalDmg || gProtectStructs[gBankAttacker].specialDmg) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkD0_settaunt(void) +{ + if (gDisableStructs[gBankTarget].tauntTimer1 == 0) + { + gDisableStructs[gBankTarget].tauntTimer1 = 2; + gDisableStructs[gBankTarget].tauntTimer2 = 2; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkD1_set_helpinghand(void) +{ + gBankTarget = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gBankTarget]) + && !gProtectStructs[gBankAttacker].helpingHand && !gProtectStructs[gBankTarget].helpingHand) + { + gProtectStructs[gBankTarget].helpingHand = 1; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#ifdef NONMATCHING +static void atkD2_swap_items(void) +{ + if ((GetBankSide(gBankAttacker) != 1 || gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER) || gTrainerBattleOpponent == 0x400)) + { + u8 side = GetBankSide(gBankAttacker); + if (gBattleTypeFlags) + } + + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#else +__attribute__((naked)) +static void atkD2_swap_items(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r0, _0802A30C @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _0802A24C\n\ + ldr r0, _0802A310 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _0802A314 @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0802A24C\n\ + ldr r0, _0802A318 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r1, r0\n\ + bne _0802A2EE\n\ +_0802A24C:\n\ + ldr r4, _0802A30C @ =gBankAttacker\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + ldr r0, _0802A310 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _0802A314 @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0802A290\n\ + ldr r0, _0802A318 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r1, r0\n\ + beq _0802A290\n\ + ldr r0, _0802A31C @ =gWishFutureKnock\n\ + adds r0, 0x29\n\ + adds r0, r2, r0\n\ + ldrb r1, [r0]\n\ + ldr r3, _0802A320 @ =gBitTable\n\ + ldr r2, _0802A324 @ =gBattlePartyID\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0802A2EE\n\ +_0802A290:\n\ + ldr r0, _0802A328 @ =gBattleMons\n\ + mov r9, r0\n\ + ldr r1, _0802A30C @ =gBankAttacker\n\ + ldrb r4, [r1]\n\ + movs r2, 0x58\n\ + mov r8, r2\n\ + mov r0, r8\n\ + muls r0, r4\n\ + mov r3, r9\n\ + adds r5, r0, r3\n\ + ldrh r3, [r5, 0x2E]\n\ + adds r1, r3, 0\n\ + cmp r1, 0\n\ + bne _0802A2BE\n\ + ldr r0, _0802A32C @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + add r0, r9\n\ + ldrh r0, [r0, 0x2E]\n\ + cmp r0, 0\n\ + beq _0802A2EE\n\ +_0802A2BE:\n\ + cmp r1, 0xAF\n\ + beq _0802A2EE\n\ + ldr r7, _0802A32C @ =gBankTarget\n\ + ldrb r0, [r7]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + mov r1, r9\n\ + adds r2, r0, r1\n\ + ldrh r1, [r2, 0x2E]\n\ + cmp r1, 0xAF\n\ + beq _0802A2EE\n\ + adds r0, r3, 0\n\ + subs r0, 0x79\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xB\n\ + bls _0802A2EE\n\ + adds r0, r1, 0\n\ + subs r0, 0x79\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xB\n\ + bhi _0802A334\n\ +_0802A2EE:\n\ + ldr r3, _0802A330 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ + b _0802A49A\n\ + .align 2, 0\n\ +_0802A30C: .4byte gBankAttacker\n\ +_0802A310: .4byte gBattleTypeFlags\n\ +_0802A314: .4byte 0x00000902\n\ +_0802A318: .4byte gTrainerBattleOpponent\n\ +_0802A31C: .4byte gWishFutureKnock\n\ +_0802A320: .4byte gBitTable\n\ +_0802A324: .4byte gBattlePartyID\n\ +_0802A328: .4byte gBattleMons\n\ +_0802A32C: .4byte gBankTarget\n\ +_0802A330: .4byte gBattlescriptCurrInstr\n\ +_0802A334:\n\ + adds r0, r2, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3C\n\ + bne _0802A36C\n\ + ldr r1, _0802A360 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0802A364 @ =BattleScript_NoItemSteal\n\ + str r0, [r1]\n\ + ldr r1, _0802A368 @ =gLastUsedAbility\n\ + ldrb r0, [r7]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + b _0802A49A\n\ + .align 2, 0\n\ +_0802A360: .4byte gBattlescriptCurrInstr\n\ +_0802A364: .4byte BattleScript_NoItemSteal\n\ +_0802A368: .4byte gLastUsedAbility\n\ +_0802A36C:\n\ + lsls r0, r4, 1\n\ + ldr r4, _0802A458 @ =0x020160f0\n\ + adds r6, r0, r4\n\ + ldrh r5, [r5, 0x2E]\n\ + mov r10, r5\n\ + strh r1, [r6]\n\ + ldr r3, _0802A45C @ =gBankAttacker\n\ + ldrb r0, [r3]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + add r0, r9\n\ + movs r1, 0\n\ + strh r1, [r0, 0x2E]\n\ + ldrb r0, [r7]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + add r0, r9\n\ + mov r3, r10\n\ + strh r3, [r0, 0x2E]\n\ + ldr r5, _0802A460 @ =gActiveBank\n\ + ldr r1, _0802A45C @ =gBankAttacker\n\ + ldrb r0, [r1]\n\ + strb r0, [r5]\n\ + str r6, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0x2\n\ + bl EmitSetAttributes\n\ + ldr r2, _0802A45C @ =gBankAttacker\n\ + ldrb r0, [r2]\n\ + bl MarkBufferBankForExecution\n\ + ldrb r0, [r7]\n\ + strb r0, [r5]\n\ + ldrb r0, [r7]\n\ + mov r3, r8\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + mov r1, r9\n\ + adds r1, 0x2E\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0x2\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r7]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _0802A464 @ =0xfffe9f10\n\ + adds r4, r0\n\ + ldrb r0, [r7]\n\ + lsls r0, 1\n\ + ldr r2, _0802A468 @ =0x000160e8\n\ + adds r0, r2\n\ + adds r0, r4\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + ldrb r0, [r7]\n\ + lsls r0, 1\n\ + ldr r1, _0802A46C @ =0x000160e9\n\ + adds r0, r1\n\ + adds r0, r4\n\ + movs r3, 0\n\ + strb r3, [r0]\n\ + ldr r3, _0802A45C @ =gBankAttacker\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + adds r0, r4\n\ + movs r2, 0\n\ + strb r2, [r0]\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + adds r0, r4\n\ + strb r2, [r0]\n\ + ldr r1, _0802A470 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + ldr r1, _0802A474 @ =gBattleTextBuff1\n\ + movs r3, 0xFD\n\ + strb r3, [r1]\n\ + movs r2, 0xA\n\ + strb r2, [r1, 0x1]\n\ + ldrh r0, [r6]\n\ + strb r0, [r1, 0x2]\n\ + ldrh r0, [r6]\n\ + lsrs r0, 8\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _0802A478 @ =gBattleTextBuff2\n\ + strb r3, [r1]\n\ + strb r2, [r1, 0x1]\n\ + mov r3, r10\n\ + strb r3, [r1, 0x2]\n\ + mov r2, r10\n\ + lsrs r0, r2, 8\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r1, 0x4]\n\ + cmp r2, 0\n\ + beq _0802A480\n\ + ldrh r0, [r6]\n\ + cmp r0, 0\n\ + beq _0802A494\n\ + ldr r1, _0802A47C @ =gBattleCommunication\n\ + movs r0, 0x2\n\ + b _0802A498\n\ + .align 2, 0\n\ +_0802A458: .4byte 0x020160f0\n\ +_0802A45C: .4byte gBankAttacker\n\ +_0802A460: .4byte gActiveBank\n\ +_0802A464: .4byte 0xfffe9f10\n\ +_0802A468: .4byte 0x000160e8\n\ +_0802A46C: .4byte 0x000160e9\n\ +_0802A470: .4byte gBattlescriptCurrInstr\n\ +_0802A474: .4byte gBattleTextBuff1\n\ +_0802A478: .4byte gBattleTextBuff2\n\ +_0802A47C: .4byte gBattleCommunication\n\ +_0802A480:\n\ + ldrh r0, [r6]\n\ + cmp r0, 0\n\ + beq _0802A494\n\ + ldr r0, _0802A490 @ =gBattleCommunication\n\ + movs r3, 0\n\ + strb r3, [r0, 0x5]\n\ + b _0802A49A\n\ + .align 2, 0\n\ +_0802A490: .4byte gBattleCommunication\n\ +_0802A494:\n\ + ldr r1, _0802A4AC @ =gBattleCommunication\n\ + movs r0, 0x1\n\ +_0802A498:\n\ + strb r0, [r1, 0x5]\n\ +_0802A49A:\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802A4AC: .4byte gBattleCommunication\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atkD3_copy_ability(void) //role play +{ + if (gBattleMons[gBankTarget].ability != 0 && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD) + { + gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability; + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkD4_wish_effect(void) +{ + switch (BSScriptRead8(gBattlescriptCurrInstr + 1)) + { + case 0: //use wish + if (gWishFutureKnock.wishCounter[gBankAttacker] == 0) + { + gWishFutureKnock.wishCounter[gBankAttacker] = 2; + gWishFutureKnock.wishUserID[gBankAttacker] = gBattlePartyID[gBankAttacker]; + gBattlescriptCurrInstr += 6; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + break; + case 1: //heal effect + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gBankTarget; + gBattleTextBuff1[3] = gWishFutureKnock.wishUserID[gBankTarget]; + gBattleTextBuff1[4] = 0xFF; + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + break; + } +} + +static void atkD5_setroots(void) //ingrain +{ + if (gStatuses3[gBankAttacker] & STATUS3_ROOTED) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gStatuses3[gBankAttacker] |= STATUS3_ROOTED; + gBattlescriptCurrInstr += 5; + } +} + +static void atkD6_doubledamagedealtifdamaged(void) +{ + if ((gProtectStructs[gBankAttacker].physicalDmg && gProtectStructs[gBankAttacker].physicalBank == gBankTarget) + || (gProtectStructs[gBankAttacker].specialDmg && gProtectStructs[gBankAttacker].specialBank == gBankTarget)) + BATTLE_STRUCT->dmgMultiplier = 2; + gBattlescriptCurrInstr++; +} + +static void atkD7_setyawn(void) +{ + if (gStatuses3[gBankTarget] & STATUS3_YAWN || (u8) gBattleMons[gBankTarget].status1) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gStatuses3[gBankTarget] |= 0x1000; + gBattlescriptCurrInstr += 5; + } +} + +static void atkD8_setdamagetohealthdifference(void) +{ + if (gBattleMons[gBankTarget].hp <= gBattleMons[gBankAttacker].hp) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMoveDamage = gBattleMons[gBankTarget].hp - gBattleMons[gBankAttacker].hp; + gBattlescriptCurrInstr += 5; + } +} + +static void atkD9_scaledamagebyhealthratio(void) +{ + if (gDynamicBasePower == 0) + { + u8 power = gBattleMoves[gCurrentMove].power; + gDynamicBasePower = gBattleMons[gBankAttacker].hp * power / gBattleMons[gBankAttacker].maxHP; + if (gDynamicBasePower == 0) + gDynamicBasePower = 1; + } + gBattlescriptCurrInstr++; +} + +static void atkDA_abilityswap(void) +{ + if ((gBattleMons[gBankAttacker].ability == 0 && gBattleMons[gBankTarget].ability == 0) + || gBattleMons[gBankAttacker].ability == ABILITY_WONDER_GUARD || gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD + || gBattleMoveFlags & MOVESTATUS_NOEFFECT) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + u8 atk_ability = gBattleMons[gBankAttacker].ability; + gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability; + gBattleMons[gBankTarget].ability = atk_ability; + gBattlescriptCurrInstr += 5; + } +} + +static void atkDB_imprisoneffect(void) +{ + u8 r8 = 0; + if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISIONED)) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + u8 bank; + sub_801529C(gBankAttacker); + for (bank = 0; bank < gNoOfAllBanks; bank++) + { + if (r8 != GetBankSide(bank)) + { + int j; + for (j = 0; j < 4; j++) + { + int k; + for (k = 0; k < 4; k++) + { + if (gBattleMons[gBankAttacker].moves[j] == gBattleMons[bank].moves[k] && gBattleMons[gBankAttacker].moves[j]) + break; + } + if (k != 4) + break; + } + if (j != 4) + { + gStatuses3[gBankAttacker] |= STATUS3_IMPRISIONED; + gBattlescriptCurrInstr += 5; + break; + } + } + } + if (bank == gNoOfAllBanks) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkDC_setgrudge(void) +{ + if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gStatuses3[gBankAttacker] |= STATUS3_GRUDGE; + gBattlescriptCurrInstr += 5; + } +} + +static void atkDD_weightdamagecalculation(void) +{ + int i; + for (i = 0; sWeightDamage[i] != 0xFFFF; i += 2) + { + if (sWeightDamage[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + break; + } + if (sWeightDamage[i] != 0xFFFF) + gDynamicBasePower = sWeightDamage[i + 1]; + else + gDynamicBasePower = 120; + gBattlescriptCurrInstr++; +} + +#ifdef NONMATCHING +static void atkDE_asistattackselect(void) +{ + u32 chooseable_moves_no = 0; + struct Pokemon* party; + int i, j; + u16* chooseable_moves; + if (GetBankIdentity(gBankAttacker) & 1) + party = gEnemyParty; + else + party = gPlayerParty; + + for (i = 0; i < 6; i++) + { + if (i == gBattlePartyID[gBankAttacker]) + break; + if (!GetMonData(&party[i], MON_DATA_SPECIES2) || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + break; + chooseable_moves = &BATTLE_STRUCT->assistMove[chooseable_moves_no]; + for (j = 0; j < 4; j++) + { + int k; + u16 move = GetMonData(&party[i], MON_DATA_MOVE1 + i); + if (IsMoveUnchoosable(move)) + break; + //sUnknown_081FACFE[k] + for (k = 0; ;k++) + { + if (sUnknown_081FACFE[k] == 0xFFFF) + { + if (move) + { + *chooseable_moves = move; + chooseable_moves++; + chooseable_moves_no++; + } + break; + } + if (sUnknown_081FACFE[k] == move) + break; + } + } + } + if (chooseable_moves_no) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gRandomMove = BATTLE_STRUCT->assistMove[Random() % chooseable_moves_no]; + gBankTarget = GetMoveTarget(gRandomMove, 0); + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#else +__attribute__((naked)) +static void atkDE_asistattackselect(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + movs r0, 0\n\ + mov r10, r0\n\ + ldr r0, _0802AB9C @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + ldr r0, _0802ABA0 @ =gPlayerParty\n\ + str r0, [sp]\n\ + cmp r1, 0\n\ + beq _0802AAAC\n\ + ldr r1, _0802ABA4 @ =gEnemyParty\n\ + str r1, [sp]\n\ +_0802AAAC:\n\ + movs r2, 0\n\ +_0802AAAE:\n\ + ldr r1, _0802ABA8 @ =gBattlePartyID\n\ + ldr r0, _0802AB9C @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + adds r1, r2, 0x1\n\ + str r1, [sp, 0x4]\n\ + ldrh r0, [r0]\n\ + cmp r2, r0\n\ + beq _0802AB54\n\ + movs r0, 0x64\n\ + adds r6, r2, 0\n\ + muls r6, r0\n\ + ldr r0, [sp]\n\ + adds r4, r0, r6\n\ + adds r0, r4, 0\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0802AB54\n\ + adds r0, r4, 0\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + movs r1, 0xCE\n\ + lsls r1, 1\n\ + cmp r0, r1\n\ + beq _0802AB54\n\ + movs r5, 0\n\ + ldr r1, _0802ABAC @ =0x0000ffff\n\ + mov r8, r1\n\ + mov r9, r6\n\ + mov r1, r10\n\ + lsls r0, r1, 1\n\ + ldr r1, _0802ABB0 @ =0x02016024\n\ + adds r6, r0, r1\n\ +_0802AAF8:\n\ + movs r7, 0\n\ + adds r1, r5, 0\n\ + adds r1, 0xD\n\ + ldr r0, [sp]\n\ + add r0, r9\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + adds r0, r4, 0\n\ + bl IsMoveUnchoosable\n\ + lsls r0, 24\n\ + adds r1, r5, 0x1\n\ + cmp r0, 0\n\ + bne _0802AB4E\n\ + ldr r0, _0802ABB4 @ =sUnknown_081FACFE\n\ + ldrh r2, [r0]\n\ + adds r3, r0, 0\n\ + cmp r2, r8\n\ + beq _0802AB42\n\ + cmp r4, r2\n\ + beq _0802AB38\n\ + ldr r5, _0802ABAC @ =0x0000ffff\n\ + adds r2, r3, 0\n\ +_0802AB2A:\n\ + adds r2, 0x2\n\ + adds r7, 0x1\n\ + ldrh r0, [r2]\n\ + cmp r0, r5\n\ + beq _0802AB42\n\ + cmp r4, r0\n\ + bne _0802AB2A\n\ +_0802AB38:\n\ + lsls r0, r7, 1\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + cmp r0, r8\n\ + bne _0802AB4E\n\ +_0802AB42:\n\ + cmp r4, 0\n\ + beq _0802AB4E\n\ + strh r4, [r6]\n\ + adds r6, 0x2\n\ + movs r0, 0x1\n\ + add r10, r0\n\ +_0802AB4E:\n\ + adds r5, r1, 0\n\ + cmp r5, 0x3\n\ + ble _0802AAF8\n\ +_0802AB54:\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, 0x5\n\ + ble _0802AAAE\n\ + mov r1, r10\n\ + cmp r1, 0\n\ + beq _0802ABCC\n\ + ldr r2, _0802ABB8 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + ldr r1, _0802ABBC @ =0xfffffbff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r4, _0802ABC0 @ =gRandomMove\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + mov r0, r10\n\ + muls r0, r1\n\ + asrs r0, 8\n\ + lsls r0, 1\n\ + ldr r1, _0802ABB0 @ =0x02016024\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + strh r0, [r4]\n\ + ldrh r0, [r4]\n\ + movs r1, 0\n\ + bl GetMoveTarget\n\ + ldr r1, _0802ABC4 @ =gBankTarget\n\ + strb r0, [r1]\n\ + ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + b _0802ABE6\n\ + .align 2, 0\n\ +_0802AB9C: .4byte gBankAttacker\n\ +_0802ABA0: .4byte gPlayerParty\n\ +_0802ABA4: .4byte gEnemyParty\n\ +_0802ABA8: .4byte gBattlePartyID\n\ +_0802ABAC: .4byte 0x0000ffff\n\ +_0802ABB0: .4byte 0x02016024\n\ +_0802ABB4: .4byte sUnknown_081FACFE\n\ +_0802ABB8: .4byte gHitMarker\n\ +_0802ABBC: .4byte 0xfffffbff\n\ +_0802ABC0: .4byte gRandomMove\n\ +_0802ABC4: .4byte gBankTarget\n\ +_0802ABC8: .4byte gBattlescriptCurrInstr\n\ +_0802ABCC:\n\ + ldr r3, _0802ABF8 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ +_0802ABE6:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802ABF8: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +static void atkDF_setmagiccoat(void) +{ + gBankTarget = gBankAttacker; + gSpecialStatuses[gBankAttacker].flag20 = 1; + if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gProtectStructs[gBankAttacker].bounceMove = 1; + gBattlescriptCurrInstr += 5; + } +} + +static void atkE0_setstealstatchange(void) +{ + gSpecialStatuses[gBankAttacker].flag20 = 1; + if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gProtectStructs[gBankAttacker].stealMove = 1; + gBattlescriptCurrInstr += 5; + } +} + +static void atkE1_intimidate_string_loader(void) +{ + u8 side; + + BATTLE_STRUCT->scriptingActive = ewram[0x160dd]; + side = GetBankSide(BATTLE_STRUCT->scriptingActive); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 9; + gBattleTextBuff1[2] = gBattleMons[BATTLE_STRUCT->scriptingActive].ability; + gBattleTextBuff1[3] = 0xFF; + + for (;gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (GetBankSide(gBankTarget) == side) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + + if (gBankTarget >= gNoOfAllBanks) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +static void atkE2_switchout_abilities(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + switch (gBattleMons[gActiveBank].ability) + { + case ABILITY_NATURAL_CURE: + gBattleMons[gActiveBank].status1 = 0; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, gBitTable[ewram[gActiveBank + 0x16064]], 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + gBattlescriptCurrInstr += 2; +} + +static void atkE3_jumpiffainted(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[gActiveBank].hp == 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +static void atkE4_getsecretpowereffect(void) +{ + switch (gBattleTerrain) + { + case BATTLE_TERRAIN_GRASS: + gBattleCommunication[MOVE_EFFECT_BYTE] = 2; + break; + case BATTLE_TERRAIN_LONG_GRASS: + gBattleCommunication[MOVE_EFFECT_BYTE] = 1; + break; + case BATTLE_TERRAIN_SAND: + gBattleCommunication[MOVE_EFFECT_BYTE] = 27; + break; + case BATTLE_TERRAIN_UNDERWATER: + gBattleCommunication[MOVE_EFFECT_BYTE] = 23; + break; + case BATTLE_TERRAIN_WATER: + gBattleCommunication[MOVE_EFFECT_BYTE] = 22; + break; + case BATTLE_TERRAIN_POND: + gBattleCommunication[MOVE_EFFECT_BYTE] = 24; + break; + case BATTLE_TERRAIN_MOUNTAIN: + gBattleCommunication[MOVE_EFFECT_BYTE] = 7; + break; + case BATTLE_TERRAIN_CAVE: + gBattleCommunication[MOVE_EFFECT_BYTE] = 8; + break; + default: + gBattleCommunication[MOVE_EFFECT_BYTE] = 5; + break; + } + gBattlescriptCurrInstr++; +} + +static void atkE5_pickup(void) +{ + int i; + for (i = 0; i < 6; i++) + { + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + u16 held_item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + u8 ability; + if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY)) + ability = gBaseStats[species].ability2; + else + ability = gBaseStats[species].ability1; + + if (ability == ABILITY_PICKUP && species != 0 && species != SPECIES_EGG && held_item == 0 && (Random() % 10) == 0) + { + s32 chance = Random() % 100; + s32 j; + for (j = 0; j < 18; j += 2) + { + if (sPickupItems[j + 1] > chance) + break; + } + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, (const void*) &sPickupItems[j]); + } + } + gBattlescriptCurrInstr++; +} + +static void atkE6_castform_change_animation(void) +{ + gActiveBank = BATTLE_STRUCT->scriptingActive; + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) + BATTLE_STRUCT->castformToChangeInto |= 0x80; + EmitBattleAnimation(0, 0, BATTLE_STRUCT->castformToChangeInto); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr++; +} + +static void atkE7_castform_data_change(void) +{ + u8 form; + gBattlescriptCurrInstr++; + form = CastformDataTypeChange(BATTLE_STRUCT->scriptingActive); + if (form) + { + b_push_move_exec(BattleScript_CastformChange); + BATTLE_STRUCT->castformToChangeInto = form - 1; + } +} + +static void atkE8_settypebasedhalvers(void) //water/mud sport +{ + bool8 worked = FALSE; + if (gBattleMoves[gCurrentMove].effect == EFFECT_MUD_SPORT) + { + if (!(gStatuses3[gBankAttacker] & STATUS3_MUDSPORT)) + { + gStatuses3[gBankAttacker] |= STATUS3_MUDSPORT; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + worked = TRUE; + } + } + else //water sport + { + if (!(gStatuses3[gBankAttacker] & STATUS3_WATERSPORT)) + { + gStatuses3[gBankAttacker] |= STATUS3_WATERSPORT; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + worked = TRUE; + } + } + if (worked) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkE9_setweatherballtype(void) +{ + if (WEATHER_HAS_EFFECT) + { + if ((u8)(gBattleWeather)) + BATTLE_STRUCT->dmgMultiplier = 2; + if (gBattleWeather & WEATHER_RAIN_ANY) + BATTLE_STRUCT->dynamicMoveType = TYPE_WATER | 0x80; + else if (gBattleWeather & WEATHER_SANDSTORM_ANY) + BATTLE_STRUCT->dynamicMoveType = TYPE_ROCK | 0x80; + else if (gBattleWeather & WEATHER_SUN_ANY) + BATTLE_STRUCT->dynamicMoveType = TYPE_FIRE | 0x80; + else if (gBattleWeather & WEATHER_HAIL) + BATTLE_STRUCT->dynamicMoveType = TYPE_ICE | 0x80; + else + BATTLE_STRUCT->dynamicMoveType = TYPE_NORMAL | 0x80; + } + gBattlescriptCurrInstr++; +} + +static void atkEA_recycleitem(void) +{ + u16* used_item; + gActiveBank = gBankAttacker; + used_item = USED_HELD_ITEM(gActiveBank); + if (*used_item && gBattleMons[gActiveBank].item == 0) + { + gLastUsedItem = *used_item; + *used_item = 0; + gBattleMons[gActiveBank].item = gLastUsedItem; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkEB_settypetoterrain(void) +{ + if (gBattleMons[gBankAttacker].type1 != sTerrainToType[gBattleTerrain] && gBattleMons[gBankAttacker].type2 != sTerrainToType[gBattleTerrain]) + { + gBattleMons[gBankAttacker].type1 = sTerrainToType[gBattleTerrain]; + gBattleMons[gBankAttacker].type2 = sTerrainToType[gBattleTerrain]; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = sTerrainToType[gBattleTerrain]; + gBattleTextBuff1[3] = 0xFF; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkEC_pursuit_sth(void) +{ + gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT) + { + gUnknown_02024A76[gActiveBank] = 11; + gCurrentMove = MOVE_PURSUIT; + gBattlescriptCurrInstr += 5; + BATTLE_STRUCT->animTurn = 1; + BATTLE_STRUCT->unk160A7 = gBankAttacker; + gBankAttacker = gActiveBank; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkED_802B4B4(void) +{ + gEffectBank = gBankAttacker; + if (gBankAttacker == gBankTarget) + gBankAttacker = gBankTarget = BATTLE_STRUCT->scriptingActive; + else + gBankTarget = BATTLE_STRUCT->scriptingActive; + BATTLE_STRUCT->scriptingActive = gEffectBank; + gBattlescriptCurrInstr++; +} + +static void atkEE_removelightscreenreflect(void) //brick break +{ + u8 side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].reflectTimer || gSideTimer[side].lightscreenTimer) + { + gSideAffecting[side] &= ~(SIDE_STATUS_REFLECT); + gSideAffecting[side] &= ~(SIDE_STATUS_LIGHTSCREEN); + gSideTimer[side].reflectTimer = 0; + gSideTimer[side].lightscreenTimer = 0; + BATTLE_STRUCT->animTurn = 1; + BATTLE_STRUCT->animTargetsHit = 1; + } + else + { + BATTLE_STRUCT->animTurn = 0; + BATTLE_STRUCT->animTargetsHit = 0; + } + gBattlescriptCurrInstr++; +} + +void atkEF_pokeball_catch_calculation(void) +{ + u8 ball_multiplier = 0; + if (gBattleExecBuffer) + return; + + gActiveBank = gBankAttacker; + gBankTarget = gBankAttacker ^ 1; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + EmitBallThrow(0, 5); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_TrainerBallBlock; + } + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + { + EmitBallThrow(0, 4); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_WallyBallThrow; + } + else + { + u32 odds; + u8 catch_rate; + if (gLastUsedItem == ITEM_SAFARI_BALL) + catch_rate = BATTLE_STRUCT->unk16089 * 1275 / 100; //correct the name to safariFleeRate + else + catch_rate = gBaseStats[gBattleMons[gBankTarget].species].catchRate; + if (gLastUsedItem > 5) + { + switch (gLastUsedItem) + { + case ITEM_NET_BALL: + if (gBattleMons[gBankTarget].type1 == TYPE_WATER || gBattleMons[gBankTarget].type2 == TYPE_WATER || gBattleMons[gBankTarget].type1 == TYPE_BUG || gBattleMons[gBankTarget].type2 == TYPE_BUG) + ball_multiplier = 30; + else + ball_multiplier = 10; + break; + case ITEM_DIVE_BALL: + if (Overworld_GetMapTypeOfSaveblockLocation() == 5) + ball_multiplier = 35; + else + ball_multiplier = 10; + break; + case ITEM_NEST_BALL: + if (gBattleMons[gBankTarget].level <= 39) + { + ball_multiplier = 40 - gBattleMons[gBankTarget].level; + if (ball_multiplier <= 9) + ball_multiplier = 10; + } + else + ball_multiplier = 10; + break; + case ITEM_REPEAT_BALL: + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + ball_multiplier = 30; + else + ball_multiplier = 10; + break; + case ITEM_TIMER_BALL: + ball_multiplier = gBattleResults.battleTurnCounter + 10; + if (ball_multiplier > 40) + ball_multiplier = 40; + break; + case ITEM_LUXURY_BALL: + case ITEM_PREMIER_BALL: + ball_multiplier = 10; + break; + } + } + else + ball_multiplier = sBallCatchBonuses[gLastUsedItem - 2]; + + odds = (catch_rate * ball_multiplier / 10) * (gBattleMons[gBankTarget].maxHP * 3 - gBattleMons[gBankTarget].hp * 2) / (3 * gBattleMons[gBankTarget].maxHP); + if (gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + odds *= 2; + if (gBattleMons[gBankTarget].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS /*| STATUS_TOXIC_POISON */)) //nice one gf + odds = (odds * 15) / 10; + + if (gLastUsedItem != ITEM_SAFARI_BALL) + { + if (gLastUsedItem == ITEM_MASTER_BALL) + { + gBattleResults.unk5_1 = 1; + } + else + { + if (gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF) + gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL]++; + } + } + if (odds > 254) //poke caught + { + EmitBallThrow(0, 4); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; + SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem); + if (CalculatePlayerPartyCount() == 6) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else //poke may be caught, calculate shakes + { + u8 shakes; + odds = Sqrt(Sqrt(16711680 / odds)); + odds = 1048560 / odds; + for (shakes = 0; shakes < 4 && Random() < odds; shakes++) {} + if (gLastUsedItem == ITEM_MASTER_BALL) + shakes = 4; //why calculate the shakes before that check? + EmitBallThrow(0, shakes); + MarkBufferBankForExecution(gActiveBank); + if (shakes == 4) //poke caught, copy of the code above + { + gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; + SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem); + if (CalculatePlayerPartyCount() == 6) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else //rip + { + gBattleCommunication[MULTISTRING_CHOOSER] = shakes; + gBattlescriptCurrInstr = BattleScript_ShakeBallThrow; + } + } + } +} + +static void atkF0_copy_caught_poke(void) +{ + GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]); + gBattleResults.caughtPoke = gBattleMons[gBankAttacker ^ 1].species; + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleResults.caughtNick); + gBattlescriptCurrInstr++; +} + +static void atkF1_setpoke_as_caught(void) +{ + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 3); + if (gBattleMons[gBankTarget].species == SPECIES_UNOWN) + gSaveBlock2.pokedex.unownPersonality = gBattleMons[gBankTarget].personality; + if (gBattleMons[gBankTarget].species == SPECIES_SPINDA) //else if + gSaveBlock2.pokedex.spindaPersonality = gBattleMons[gBankTarget].personality; + gBattlescriptCurrInstr += 5; + } +} + +extern const u32 gBattleTerrainTiles_Building[]; +extern const u32 gBattleTerrainTilemap_Building[]; +extern const u32 gBattleTerrainPalette_BattleTower[]; + +static void atkF2_display_dex_info(void) +{ + switch (gBattleCommunication[0]) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBattleCommunication[0]++; + break; + case 1: + if (!gPaletteFade.active) + { + gBattleCommunication[1] = sub_809070C(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), gBattleMons[gBankTarget].otId, gBattleMons[gBankTarget].personality); + gBattleCommunication[0]++; + } + break; + case 2: + if (!gPaletteFade.active && gMain.callback2 == sub_800F808 && !gTasks[gBattleCommunication[1]].isActive) + { + LZDecompressVram(gBattleTerrainTiles_Building, (void*)(0x06008000)); + LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000)); + LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); + REG_BG3CNT = 0x5a0b; + gUnknown_030041B0 = 0x100; + BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0); + gBattleCommunication[0]++; + } + break; + case 3: + if (!gPaletteFade.active) + gBattlescriptCurrInstr++; + break; + } +} + +__attribute__((naked)) +void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r4, [sp, 0x20]\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r12, r1\n\ + lsls r2, 24\n\ + lsrs r5, r2, 24\n\ + lsls r3, 24\n\ + lsrs r7, r3, 24\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + mov r8, r4\n\ + mov r2, r12\n\ + cmp r2, r7\n\ + bgt _0802BC5A\n\ + lsls r1, r6, 1\n\ + ldr r0, _0802BC20 @ =0x0600c000\n\ + adds r1, r0\n\ + mov r9, r1\n\ +_0802BC06:\n\ + adds r1, r6, 0\n\ + adds r0, r2, 0x1\n\ + mov r10, r0\n\ + cmp r1, r5\n\ + bgt _0802BC54\n\ + lsls r0, r2, 6\n\ + mov r4, r9\n\ + adds r3, r4, r0\n\ +_0802BC16:\n\ + cmp r2, r12\n\ + bne _0802BC28\n\ + ldr r0, _0802BC24 @ =0x00001022\n\ + b _0802BC36\n\ + .align 2, 0\n\ +_0802BC20: .4byte 0x0600c000\n\ +_0802BC24: .4byte 0x00001022\n\ +_0802BC28:\n\ + cmp r2, r7\n\ + bne _0802BC34\n\ + ldr r0, _0802BC30 @ =0x00001028\n\ + b _0802BC36\n\ + .align 2, 0\n\ +_0802BC30: .4byte 0x00001028\n\ +_0802BC34:\n\ + ldr r0, _0802BC68 @ =0x00001025\n\ +_0802BC36:\n\ + cmp r1, r6\n\ + beq _0802BC42\n\ + adds r0, 0x1\n\ + cmp r1, r5\n\ + bne _0802BC42\n\ + adds r0, 0x1\n\ +_0802BC42:\n\ + mov r4, r8\n\ + cmp r4, 0\n\ + beq _0802BC4A\n\ + movs r0, 0\n\ +_0802BC4A:\n\ + strh r0, [r3]\n\ + adds r3, 0x2\n\ + adds r1, 0x1\n\ + cmp r1, r5\n\ + ble _0802BC16\n\ +_0802BC54:\n\ + mov r2, r10\n\ + cmp r2, r7\n\ + ble _0802BC06\n\ +_0802BC5A:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802BC68: .4byte 0x00001025\n\ + .syntax divided"); +} + +void sub_802BC6C(void) +{ + sub_814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be? +} + +void nullsub_6(void) +{ + return; +} + +static void atkF3_nickname_caught_poke(void) +{ + switch (gBattleCommunication[0]) + { + case 0: + sub_8023A80(); + gBattleCommunication[0]++; + gBattleCommunication[1] = 0; + sub_802BC6C(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[1] == 0) + { + gBattleCommunication[0]++; + BeginFastPaletteFade(3); + } + else + gBattleCommunication[0] = 4; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattleCommunication[0] = 4; + } + break; + case 2: + if (!gPaletteFade.active) + { + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick); + DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), sub_800F808); + gBattleCommunication[0]++; + } + break; + case 3: + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active ) + { + SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + break; + case 4: + if (CalculatePlayerPartyCount() == 6) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + break; + } +} + +static void atkF4_802BEF0(void) +{ + gBattleMons[gBankAttacker].hp -= gBattleMoveDamage; + gBattlescriptCurrInstr++; +} + +static void atkF5_removeattackerstatus1(void) +{ + gBattleMons[gBankAttacker].status1 = 0; + gBattlescriptCurrInstr++; +} + +static void atkF6_802BF48(void) +{ + gFightStateTracker = 0xC; +} + +static void atkF7_802BF54(void) +{ + gFightStateTracker = 0xC; + gCurrentMoveTurn = gNoOfAllBanks; +} diff --git a/src/battle_7.c b/src/battle/battle_7.c index a93237608..ad96510cf 100644 --- a/src/battle_7.c +++ b/src/battle/battle_7.c @@ -31,7 +31,6 @@ struct Struct2019348 extern u8 gBattleBufferA[][0x200]; extern u8 gActiveBank; -extern u32 gBattleExecBuffer; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[]; extern u8 gBanksBySide[]; @@ -49,8 +48,8 @@ extern struct MusicPlayerInfo gMPlay_BGM; extern u32 gBitTable[]; extern u16 gBattleTypeFlags; extern u8 gBattleMonForms[]; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; extern void (*gAnimScriptCallback)(void); extern u8 gAnimScriptActive; extern const u8 *const gBattleAnims_Unknown1[]; @@ -63,7 +62,6 @@ extern const u8 gSubstituteDollGfx[]; extern const u8 gSubstituteDollPal[]; extern const struct CompressedSpriteSheet gUnknown_081FAF24; extern const struct SpriteTemplate gSpriteTemplate_81FAF34; -extern void (*const gOpponentBufferCommands[])(void); extern const struct CompressedSpriteSheet gUnknown_0820A47C; extern const struct CompressedSpriteSheet gUnknown_0820A484; extern const struct CompressedSpriteSheet gUnknown_0820A48C[]; @@ -80,7 +78,7 @@ extern void sub_80440EC(); extern void sub_804777C(); extern void sub_8141828(); extern u8 sub_8077ABC(); -extern u8 sub_8078874(u8); +extern u8 AnimBankSpriteExists(u8); extern u8 sub_8077F68(u8); extern u8 sub_8077F7C(u8); extern void sub_8094958(void); @@ -96,9 +94,6 @@ void sub_80324E0(u8 a); void sub_80327CC(void); void sub_8032978(struct Sprite *); void sub_80328A4(struct Sprite *); -void OpponentBufferRunCommand(void); -void sub_80332D0(void); -void OpponentBufferExecCompleted(void); void sub_80312F0(struct Sprite *sprite) { @@ -182,16 +177,16 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e) gBattleMonForms[a] = e & 0x7F; return TRUE; } - if (ewram17800[a].unk0_2 && sub_803163C(d) == 0) + if (ewram17800[a].substituteSprite && sub_803163C(d) == 0) return TRUE; - if (ewram17800[a].unk0_2 && d == 2 && gSprites[gObjectBankIDs[a]].invisible) + if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible) { refresh_graphics_maybe(a, 1, gObjectBankIDs[a]); sub_80324E0(a); return TRUE; } - gBattleAnimPlayerMonIndex = b; - gBattleAnimEnemyMonIndex = c; + gBattleAnimBankAttacker = b; + gBattleAnimBankTarget = c; ewram17840.unk0 = e; DoMoveAnim(gBattleAnims_Unknown1, d, 0); taskId = CreateTask(sub_80315E8, 10); @@ -230,8 +225,8 @@ void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d) { u8 taskId; - gBattleAnimPlayerMonIndex = b; - gBattleAnimEnemyMonIndex = c; + gBattleAnimBankAttacker = b; + gBattleAnimBankTarget = c; DoMoveAnim(gBattleAnims_Unknown2, d, 0); taskId = CreateTask(sub_80316CC, 10); gTasks[taskId].data[0] = a; @@ -273,7 +268,7 @@ bool8 mplay_80342A4(u8 a) return TRUE; } -void sub_8031794(struct Pokemon *pkmn, u8 b) +void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b) { u32 personalityValue; u16 species; @@ -284,14 +279,14 @@ void sub_8031794(struct Pokemon *pkmn, u8 b) const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); - if (ewram17800[b].unk2 == 0) + if (ewram17800[b].transformedSpecies == 0) { species = GetMonData(pkmn, MON_DATA_SPECIES); r7 = personalityValue; } else { - species = ewram17800[b].unk2; + species = ewram17800[b].transformedSpecies; r7 = gPID_perBank[b]; } otId = GetMonData(pkmn, MON_DATA_OT_ID); @@ -305,27 +300,27 @@ void sub_8031794(struct Pokemon *pkmn, u8 b) species, r7); paletteOffset = 0x100 + b * 16; - if (ewram17800[b].unk2 == 0) - lzPaletteData = pokemon_get_pal(pkmn); + if (ewram17800[b].transformedSpecies == 0) + lzPaletteData = GetMonSpritePal(pkmn); else - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); LoadPalette(ewram, 0x80 + b * 16, 0x20); if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + b * 16; - sub_800D238(lzPaletteData, ewram + 0x16400); + LZDecompressWram(lzPaletteData, ewram + 0x16400); LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); } - if (ewram17800[b].unk2 != 0) + if (ewram17800[b].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); } } -void sub_80318FC(struct Pokemon *pkmn, u8 b) +void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b) { u32 personalityValue; u16 species; @@ -336,14 +331,14 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); - if (ewram17800[b].unk2 == 0) + if (ewram17800[b].transformedSpecies == 0) { species = GetMonData(pkmn, MON_DATA_SPECIES); r7 = personalityValue; } else { - species = ewram17800[b].unk2; + species = ewram17800[b].transformedSpecies; r7 = gPID_perBank[b]; } otId = GetMonData(pkmn, MON_DATA_OT_ID); @@ -357,20 +352,20 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) species, r7); paletteOffset = 0x100 + b * 16; - if (ewram17800[b].unk2 == 0) - lzPaletteData = pokemon_get_pal(pkmn); + if (ewram17800[b].transformedSpecies == 0) + lzPaletteData = GetMonSpritePal(pkmn); else - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); LoadPalette(ewram, 0x80 + b * 16, 0x20); if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + b * 16; - sub_800D238(lzPaletteData, ewram + 0x16400); + LZDecompressWram(lzPaletteData, ewram + 0x16400); LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); } - if (ewram17800[b].unk2 != 0) + if (ewram17800[b].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); @@ -405,7 +400,7 @@ void sub_8031A6C(u16 a, u8 b) LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]); } -void sub_8031AF4(u16 a, u8 b) +void LoadPlayerTrainerBankSprite(u16 a, u8 b) { u8 status; @@ -511,7 +506,7 @@ bool8 sub_8031C30(u8 a) void load_gfxc_health_bar(void) { - sub_800D238(gUnknown_08D09C48, (void *)0x02000000); + LZDecompressWram(gUnknown_08D09C48, (void *)0x02000000); } u8 battle_load_something(u8 *pState, u8 *b) @@ -607,12 +602,12 @@ void sub_8031F24(void) s32 i; for (i = 0; i < gNoOfAllBanks; i++) - ewram17800[i].unk0_0 = gSprites[gObjectBankIDs[i]].invisible; + ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible; } void sub_8031F88(u8 a) { - ewram17800[a].unk0_0 = gSprites[gObjectBankIDs[a]].invisible; + ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible; } void sub_8031FC4(u8 a, u8 b, bool8 c) @@ -630,7 +625,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) paletteOffset = 0x100 + a * 16; LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32); gBattleMonForms[a] = ewram17840.unk0; - if (ewram17800[a].unk2 != 0) + if (ewram17800[a].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); @@ -695,21 +690,21 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32); DmaCopy32(3, src, dst, 0x800); paletteOffset = 0x100 + a * 16; - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 32); if (species == SPECIES_CASTFORM) { u16 *paletteSrc = (u16 *)(ewram + 0x16400); - sub_800D238(lzPaletteData, paletteSrc); + LZDecompressWram(lzPaletteData, paletteSrc); LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32); } BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); if (!IsContest()) { - ewram17800[a].unk2 = species; + ewram17800[a].transformedSpecies = species; gBattleMonForms[a] = gBattleMonForms[b]; } gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a); @@ -717,7 +712,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) } } -void sub_8032350(u8 a, u8 b) +void BattleLoadSubstituteSprite(u8 a, u8 b) { u8 r4; u16 foo; @@ -750,16 +745,16 @@ void sub_8032350(u8 a, u8 b) if (!IsContest()) { if (GetBankSide(a) != 0) - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); else - sub_80318FC(&gPlayerParty[gBattlePartyID[a]], a); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a); } } } void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) { - sub_8032350(a, b); + BattleLoadSubstituteSprite(a, b); StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]); if (b == 0) gSprites[spriteId].pos1.y = sub_8077F7C(a); @@ -770,12 +765,12 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) void sub_80324BC(u8 a, u16 b) { if (b == 0xA4) - ewram17800[a].unk0_2 = 1; + ewram17800[a].substituteSprite = 1; } void sub_80324E0(u8 a) { - ewram17800[a].unk0_2 = 0; + ewram17800[a].substituteSprite = 0; } void sub_80324F8(struct Pokemon *pkmn, u8 b) @@ -808,7 +803,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b) } } -void sub_80325B8(void) +void BattleMusicStop(void) { u8 r4 = GetBankByPlayerAI(0); @@ -851,7 +846,7 @@ void sub_80326EC(u8 a) for (i = 0; i < gNoOfAllBanks; i++) { - if (sub_8078874(i) != 0) + if (AnimBankSpriteExists(i) != 0) { gSprites[gObjectBankIDs[i]].oam.affineMode = a; if (a == 0) @@ -889,16 +884,16 @@ void sub_80328A4(struct Sprite *sprite) u8 r4 = sprite->data0; struct Sprite *r7 = &gSprites[gObjectBankIDs[r4]]; - if (!r7->inUse || sub_8078874(r4) == 0) + if (!r7->inUse || AnimBankSpriteExists(r4) == 0) { sprite->callback = sub_8032978; return; } if (gAnimScriptActive || r7->invisible) invisible = TRUE; - else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0) + else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0) invisible = TRUE; - if (ewram17800[r4].unk0_2) + if (ewram17800[r4].substituteSprite) invisible = TRUE; sprite->pos1.x = r7->pos1.x; sprite->pos2.x = r7->pos2.x; @@ -914,8 +909,8 @@ void sub_8032984(u8 a, u16 b) { if (GetBankSide(a) != 0) { - if (ewram17800[a].unk2 != 0) - b = ewram17800[a].unk2; + if (ewram17800[a].transformedSpecies != 0) + b = ewram17800[a].transformedSpecies; if (gEnemyMonElevation[b] != 0) gSprites[ewram17810[a].unk7].callback = sub_80328A4; else @@ -953,283 +948,8 @@ void sub_8032A38(void) void sub_8032AA8(u8 a, u8 b) { - ewram17800[a].unk2 = 0; + ewram17800[a].transformedSpecies = 0; gBattleMonForms[a] = 0; if (b == 0) sub_80324E0(a); } - -void nullsub_45(void) -{ -} - -void SetBankFuncToOpponentBufferRunCommand(void) -{ - gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand; -} - -void OpponentBufferRunCommand(void) -{ - if (gBattleExecBuffer & gBitTable[gActiveBank]) - { - if (gBattleBufferA[gActiveBank][0] <= 0x38) - gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]](); - else - OpponentBufferExecCompleted(); - } -} - -void sub_8032B4C(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) - OpponentBufferExecCompleted(); -} - -// Duplicate of sub_8032B4C -void sub_8032B84(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) - OpponentBufferExecCompleted(); -} - -void sub_8032BBC(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) - { - sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam); - gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5; - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); - OpponentBufferExecCompleted(); - } -} - -void sub_8032C4C(void) -{ - if ((--ewram17810[gActiveBank].unk9) == 0xFF) - { - ewram17810[gActiveBank].unk9 = 0; - OpponentBufferExecCompleted(); - } -} - -void sub_8032C88(void) -{ - bool8 r6 = FALSE; - - if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) - { - if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) - r6 = TRUE; - } - else - { - if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy - && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) - r6 = TRUE; - } - if (IsCryPlayingOrClearCrySongs()) - r6 = FALSE; - - if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) - { - ewram17810[gActiveBank].unk0_7 = 0; - ewram17810[gActiveBank].unk1_0 = 0; - ewram17810[gActiveBank ^ 2].unk0_7 = 0; - ewram17810[gActiveBank ^ 2].unk1_0 = 0; - FreeSpriteTilesByTag(0x27F9); - FreeSpritePaletteByTag(0x27F9); - if (gBattleTypeFlags & BATTLE_TYPE_MULTI) - m4aMPlayContinue(&gMPlay_BGM); - else - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); - ewram17810[gActiveBank].unk9 = 3; - gBattleBankFunc[gActiveBank] = sub_8032C4C; - } -} - -void sub_8032E2C(void) -{ - if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) - sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); - if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) - sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]); - if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) - { - if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - { - DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); - sub_8045A5C( - gHealthboxIDs[gActiveBank ^ 2], - &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], - 0); - sub_804777C(gActiveBank ^ 2); - sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); - sub_8032984( - gActiveBank ^ 2, - GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES)); - } - DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); - sub_8045A5C( - gHealthboxIDs[gActiveBank], - &gEnemyParty[gBattlePartyID[gActiveBank]], - 0); - sub_804777C(gActiveBank); - sub_8043DFC(gHealthboxIDs[gActiveBank]); - sub_8032984( - gActiveBank, - GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); - - ewram17840.unk9_0 = 0; - gBattleBankFunc[gActiveBank] = sub_8032C88; - } -} - -void sub_8033018(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE - && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) - { - if (!ewram17810[gActiveBank].unk0_7) - { - sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); - return; - } - if (ewram17810[gActiveBank].unk1_0) - { - ewram17810[gActiveBank].unk0_7 = 0; - ewram17810[gActiveBank].unk1_0 = 0; - FreeSpriteTilesByTag(0x27F9); - FreeSpritePaletteByTag(0x27F9); - OpponentBufferExecCompleted(); - return; - } - } -} - -void sub_80330C8(void) -{ - s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); - - sub_8043DFC(gHealthboxIDs[gActiveBank]); - if (r4 != -1) - sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); - else - OpponentBufferExecCompleted(); -} - -void sub_803311C(void) -{ - if (!gSprites[gObjectBankIDs[gActiveBank]].inUse) - { - sub_8043DB0(gHealthboxIDs[gActiveBank]); - OpponentBufferExecCompleted(); - } -} - -void sub_8033160(void) -{ - if (!ewram17810[gActiveBank].unk0_6) - { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); - sub_8032A08(gActiveBank); - sub_8043DB0(gHealthboxIDs[gActiveBank]); - OpponentBufferExecCompleted(); - } -} - -void sub_80331D0(void) -{ - if (gUnknown_03004210.state == 0) - OpponentBufferExecCompleted(); -} - -void bx_blink_t7(void) -{ - u8 spriteId = gObjectBankIDs[gActiveBank]; - - if (gSprites[spriteId].data1 == 32) - { - gSprites[spriteId].data1 = 0; - gSprites[spriteId].invisible = FALSE; - gDoingBattleAnim = 0; - OpponentBufferExecCompleted(); - } - else - { - if (((u16)gSprites[spriteId].data1 % 4) == 0) - gSprites[spriteId].invisible ^= 1; - gSprites[spriteId].data1++; - } -} - -void sub_8033264(void) -{ - if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) - { - if (ewram17800[gActiveBank].unk0_2) - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); - gBattleBankFunc[gActiveBank] = sub_80332D0; - } -} - -void sub_80332D0(void) -{ - if (!ewram17810[gActiveBank].unk0_6) - { - CreateTask(c3_0802FDF4, 10); - OpponentBufferExecCompleted(); - } -} - -void sub_8033308(void) -{ - if (ewram17810[gActiveBank].unk1_0) - { - ewram17810[gActiveBank].unk0_7 = 0; - ewram17810[gActiveBank].unk1_0 = 0; - FreeSpriteTilesByTag(0x27F9); - FreeSpritePaletteByTag(0x27F9); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); - sub_8045A5C( - gHealthboxIDs[gActiveBank], - &gEnemyParty[gBattlePartyID[gActiveBank]], - 0); - sub_804777C(gActiveBank); - sub_8043DFC(gHealthboxIDs[gActiveBank]); - sub_8031F88(gActiveBank); - gBattleBankFunc[gActiveBank] = sub_8033264; - } -} - -void sub_80333D4(void) -{ - if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) - sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); - if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy - && !ewram17810[gActiveBank].unk0_3) - { - DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); - sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); - gBattleBankFunc[gActiveBank] = sub_8033308; - } -} - -void sub_8033494(void) -{ - if (!ewram17810[gActiveBank].unk0_4) - OpponentBufferExecCompleted(); -} - -void sub_80334C0(void) -{ - if (!ewram17810[gActiveBank].unk0_5) - OpponentBufferExecCompleted(); -} - -void OpponentBufferExecCompleted(void) -{ - gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand; - gBattleExecBuffer &= ~gBitTable[gActiveBank]; -} diff --git a/src/battle_ai.c b/src/battle/battle_ai.c index 6f91a104d..1869bbe36 100644 --- a/src/battle_ai.c +++ b/src/battle/battle_ai.c @@ -31,6 +31,14 @@ extern u8 gCritMultiplier; extern u16 gTrainerBattleOpponent; extern u8 *BattleAIs[]; +enum +{ + WEATHER_TYPE_SUN, + WEATHER_TYPE_RAIN, + WEATHER_TYPE_SANDSTORM, + WEATHER_TYPE_HAIL, +}; + /* gAIScriptPtr is a pointer to the next battle AI cmd command to read. when a command finishes processing, gAIScriptPtr is incremented by @@ -293,7 +301,7 @@ void BattleAI_SetupAIData(void) for (i = 0; i < MAX_MON_MOVES; i++) AI_THINKING_STRUCT->score[i] = 100; - r7 = sub_8015A98(gActiveBank, 0, 0xFF); + r7 = CheckMoveLimitations(gActiveBank, 0, 0xFF); // probably sets up the moves to consider and ignores non-valid moves such as NO_MOVE or glitch moves. for (i = 0; i < MAX_MON_MOVES; i++) @@ -896,7 +904,7 @@ static void BattleAICmd_if_user_cant_damage(void) static void BattleAICmd_get_turn_count(void) { - AI_THINKING_STRUCT->funcResult = gBattleResults.BattleTurnCounter; + AI_THINKING_STRUCT->funcResult = gBattleResults.battleTurnCounter; gAIScriptPtr += 1; } @@ -1265,7 +1273,7 @@ static void BattleAICmd_if_arg_not_equal(void) static void BattleAICmd_if_would_go_first(void) { - if (b_first_side(gBankAttacker, gBankTarget, 1) == gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, 1) == gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1273,7 +1281,7 @@ static void BattleAICmd_if_would_go_first(void) static void BattleAICmd_if_would_not_go_first(void) { - if (b_first_side(gBankAttacker, gBankTarget, 1) != gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, 1) != gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1412,8 +1420,8 @@ static void BattleAICmd_get_highest_possible_damage(void) s32 i; gDynamicBasePower = 0; - BATTLE_STRUCT->DynamicMoveType = 0; - BATTLE_STRUCT->DmgMultiplier = 1; + BATTLE_STRUCT->dynamicMoveType = 0; + BATTLE_STRUCT->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; AI_THINKING_STRUCT->funcResult = 0; @@ -1452,8 +1460,8 @@ static void BattleAICmd_if_damage_bonus(void) u8 damageVar; gDynamicBasePower = 0; - BATTLE_STRUCT->DynamicMoveType = 0; - BATTLE_STRUCT->DmgMultiplier = 1; + BATTLE_STRUCT->dynamicMoveType = 0; + BATTLE_STRUCT->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; @@ -1562,14 +1570,14 @@ static void BattleAICmd_if_status_not_in_party(void) static void BattleAICmd_get_weather(void) { - if (gBattleWeather & WEATHER_RAINY) - AI_THINKING_STRUCT->funcResult = WEATHER_RAIN; - if (gBattleWeather & WEATHER_SANDSTORMY) - AI_THINKING_STRUCT->funcResult = WEATHER_SANDSTORM; - if (gBattleWeather & WEATHER_SUNNY) - AI_THINKING_STRUCT->funcResult = WEATHER_SUN; - if (gBattleWeather & weather_hail) - AI_THINKING_STRUCT->funcResult = WEATHER_HAIL; + if (gBattleWeather & WEATHER_RAIN_ANY) + AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_RAIN; + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SANDSTORM; + if (gBattleWeather & WEATHER_SUN_ANY) + AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SUN; + if (gBattleWeather & WEATHER_HAIL) + AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_HAIL; gAIScriptPtr += 1; } @@ -1659,8 +1667,8 @@ static void BattleAICmd_if_can_faint(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->DynamicMoveType = 0; - BATTLE_STRUCT->DmgMultiplier = 1; + BATTLE_STRUCT->dynamicMoveType = 0; + BATTLE_STRUCT->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; @@ -1688,8 +1696,8 @@ static void BattleAICmd_if_cant_faint(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->DynamicMoveType = 0; - BATTLE_STRUCT->DmgMultiplier = 1; + BATTLE_STRUCT->dynamicMoveType = 0; + BATTLE_STRUCT->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; @@ -1843,7 +1851,7 @@ static void BattleAICmd_if_last_move_did_damage(void) if (gAIScriptPtr[2] == 0) { - if (gDisableStructs[index].DisabledMove == 0) + if (gDisableStructs[index].disabledMove == 0) { gAIScriptPtr += 7; return; @@ -1856,7 +1864,7 @@ static void BattleAICmd_if_last_move_did_damage(void) gAIScriptPtr += 7; return; } - else if (gDisableStructs[index].EncoredMove != 0) + else if (gDisableStructs[index].encoredMove != 0) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3); return; @@ -1869,7 +1877,7 @@ static void BattleAICmd_if_encored(void) switch (gAIScriptPtr[1]) { case 0: // _08109348 - if (gDisableStructs[gActiveBank].DisabledMove == AI_THINKING_STRUCT->moveConsidered) + if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); return; @@ -1877,7 +1885,7 @@ static void BattleAICmd_if_encored(void) gAIScriptPtr += 6; return; case 1: // _08109370 - if (gDisableStructs[gActiveBank].EncoredMove == AI_THINKING_STRUCT->moveConsidered) + if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); return; @@ -1954,7 +1962,7 @@ static void BattleAICmd_is_first_turn(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].IsFirstTurn; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].isFirstTurn; gAIScriptPtr += 2; } @@ -1968,7 +1976,7 @@ static void BattleAICmd_get_stockpile_count(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].StockpileCounter; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].stockpileCounter; gAIScriptPtr += 2; } @@ -2025,7 +2033,7 @@ static void BattleAICmd_get_protect_count(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].ProtectUses; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].protectUses; gAIScriptPtr += 2; } @@ -2104,7 +2112,7 @@ static void BattleAICmd_if_level_compare(void) static void BattleAICmd_if_taunted(void) { - if (gDisableStructs[gBankTarget].taunt != 0) + if (gDisableStructs[gBankTarget].tauntTimer1 != 0) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -2112,7 +2120,7 @@ static void BattleAICmd_if_taunted(void) static void BattleAICmd_if_not_taunted(void) { - if (gDisableStructs[gBankTarget].taunt == 0) + if (gDisableStructs[gBankTarget].tauntTimer1 == 0) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1); else gAIScriptPtr += 5; diff --git a/src/battle_anim.c b/src/battle/battle_anim.c index 6bd98099a..111d72813 100644 --- a/src/battle_anim.c +++ b/src/battle/battle_anim.c @@ -37,8 +37,8 @@ EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; EWRAM_DATA u8 gUnknown_0202F7C4 = 0; EWRAM_DATA u8 gUnknown_0202F7C5 = 0; EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused. -EWRAM_DATA u8 gBattleAnimPlayerMonIndex = 0; -EWRAM_DATA u8 gBattleAnimEnemyMonIndex = 0; +EWRAM_DATA u8 gBattleAnimBankAttacker = 0; +EWRAM_DATA u8 gBattleAnimBankTarget = 0; EWRAM_DATA u16 gUnknown_0202F7CA[4] = {0}; EWRAM_DATA u8 gUnknown_0202F7D2 = 0; extern u16 gUnknown_030041B4; @@ -201,15 +201,15 @@ void battle_anim_clear_some_data(void) gUnknown_0202F7C4 = 0; gUnknown_0202F7C5 = 0; gAnimMoveIndex = 0; - gBattleAnimPlayerMonIndex = 0; - gBattleAnimEnemyMonIndex = 0; + gBattleAnimBankAttacker = 0; + gBattleAnimBankTarget = 0; gUnknown_0202F7D2 = 0; } void ExecuteMoveAnim(u16 move) { - gBattleAnimPlayerMonIndex = gBankAttacker; - gBattleAnimEnemyMonIndex = gBankTarget; + gBattleAnimBankAttacker = gBankAttacker; + gBattleAnimBankTarget = gBankTarget; DoMoveAnim(gBattleAnims_Moves, move, 1); } @@ -396,7 +396,7 @@ static void ScriptCmd_sprite(void) r4 -= 0x40; else r4 = -r4; - _r0 = sub_8079E90(gBattleAnimEnemyMonIndex); + _r0 = sub_8079E90(gBattleAnimBankTarget); r1 = r4; } @@ -407,15 +407,15 @@ static void ScriptCmd_sprite(void) r4 -= 0x40; else r4 = -r4; - _r0 = sub_8079E90(gBattleAnimPlayerMonIndex); + _r0 = sub_8079E90(gBattleAnimBankAttacker); r1 = r4; } r6 = _r0 + r1; if ((s16)r6 < 3) r6 = 3; - r4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - r2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); + r4 = sub_8077ABC(gBattleAnimBankTarget, 2); + r2 = sub_8077ABC(gBattleAnimBankTarget, 3); CreateSpriteAndAnimate(r7, r4, r2, r6); gAnimVisualTaskCount++; } @@ -485,10 +485,10 @@ _08075B34:\n\ _08075B36:\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - ldr r0, _08075B40 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08075B40 @ =gBattleAnimBankTarget\n\ b _08075B56\n\ .align 2, 0\n\ -_08075B40: .4byte gBattleAnimEnemyMonIndex\n\ +_08075B40: .4byte gBattleAnimBankTarget\n\ _08075B44:\n\ cmp r4, 0x3F\n\ bls _08075B4E\n\ @@ -500,7 +500,7 @@ _08075B4E:\n\ _08075B50:\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - ldr r0, _08075BAC @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08075BAC @ =gBattleAnimBankAttacker\n\ _08075B56:\n\ ldrb r0, [r0]\n\ bl sub_8079E90\n\ @@ -517,7 +517,7 @@ _08075B56:\n\ bgt _08075B74\n\ movs r6, 0x3\n\ _08075B74:\n\ - ldr r5, _08075BB0 @ =gBattleAnimEnemyMonIndex\n\ + ldr r5, _08075BB0 @ =gBattleAnimBankTarget\n\ ldrb r0, [r5]\n\ movs r1, 0x2\n\ bl sub_8077ABC\n\ @@ -543,8 +543,8 @@ _08075B74:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_08075BAC: .4byte gBattleAnimPlayerMonIndex\n\ -_08075BB0: .4byte gBattleAnimEnemyMonIndex\n\ +_08075BAC: .4byte gBattleAnimBankAttacker\n\ +_08075BB0: .4byte gBattleAnimBankTarget\n\ _08075BB4: .4byte gAnimVisualTaskCount\n\ .syntax divided\n"); } @@ -686,10 +686,10 @@ static void ScriptCmd_monbg(void) else if (r6 == 1) r6 = 3; if (r6 == 0 || r6 == 2) - r5 = gBattleAnimPlayerMonIndex; + r5 = gBattleAnimBankAttacker; else - r5 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r5)) + r5 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r5)) { r0 = GetBankIdentity(r5); r0 += 0xFF; @@ -719,7 +719,7 @@ static void ScriptCmd_monbg(void) } r5 ^= 2; - if (r6 > 1 && b_side_obj__get_some_boolean(r5)) + if (r6 > 1 && IsAnimBankSpriteVisible(r5)) { r0 = GetBankIdentity(r5); r0 += 0xFF; @@ -751,20 +751,20 @@ static void ScriptCmd_monbg(void) } #ifdef NONMATCHING -bool8 b_side_obj__get_some_boolean(u8 a) +bool8 IsAnimBankSpriteVisible(u8 a) { - if (IsContest() != 0) + if (IsContest()) { - if (a == gBattleAnimPlayerMonIndex) + if (a == gBattleAnimBankAttacker) return TRUE; else return FALSE; } - if (sub_8078874(a) == 0) + if (!AnimBankSpriteExists(a)) return FALSE; - if (IsContest() != 0) + if (IsContest()) return TRUE; // this line wont ever be reached. - if ((EWRAM_17800[a].unk0 & 1) == 0) + if (!(EWRAM_17800[a].unk0 & 1)) return TRUE; if (gSprites[gObjectBankIDs[a]].invisible) return FALSE; @@ -772,7 +772,7 @@ bool8 b_side_obj__get_some_boolean(u8 a) } #else __attribute__((naked)) -bool8 b_side_obj__get_some_boolean(u8 a) +bool8 IsAnimBankSpriteVisible(u8 a) { asm(".syntax unified\n\ push {r4,r5,lr}\n\ @@ -783,16 +783,16 @@ bool8 b_side_obj__get_some_boolean(u8 a) lsls r0, 24\n\ cmp r0, 0\n\ beq _08075FDC\n\ - ldr r0, _08075FD8 @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08075FD8 @ =gBattleAnimBankAttacker\n\ ldrb r0, [r0]\n\ cmp r4, r0\n\ beq _0807601C\n\ b _0807602C\n\ .align 2, 0\n\ -_08075FD8: .4byte gBattleAnimPlayerMonIndex\n\ +_08075FD8: .4byte gBattleAnimBankAttacker\n\ _08075FDC:\n\ adds r0, r4, 0\n\ - bl sub_8078874\n\ + bl AnimBankSpriteExists\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _0807602C\n\ @@ -1096,9 +1096,9 @@ static void ScriptCmd_clearmonbg(void) else if (r4 == 1) r4 = 3; if (r4 == 0 || r4 == 2) - r5 = gBattleAnimPlayerMonIndex; + r5 = gBattleAnimBankAttacker; else - r5 = gBattleAnimEnemyMonIndex; + r5 = gBattleAnimBankTarget; if (gMonAnimTaskIdArray[0] != 0xFF) gSprites[gObjectBankIDs[r5]].invisible = FALSE; if (r4 > 1 && gMonAnimTaskIdArray[1] != 0xFF) @@ -1155,10 +1155,10 @@ static void ScriptCmd_monbg_22(void) else if (r5 == 1) r5 = 3; if (r5 == 0 || r5 == 2) - r4 = gBattleAnimPlayerMonIndex; + r4 = gBattleAnimBankAttacker; else - r4 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r4)) + r4 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r4)) { r0 = GetBankIdentity(r4); r0 += 0xFF; @@ -1170,7 +1170,7 @@ static void ScriptCmd_monbg_22(void) gSprites[gObjectBankIDs[r4]].invisible = FALSE; } r4 ^= 2; - if (r5 > 1 && b_side_obj__get_some_boolean(r4)) + if (r5 > 1 && IsAnimBankSpriteVisible(r4)) { r0 = GetBankIdentity(r4); r0 += 0xFF; @@ -1197,12 +1197,12 @@ static void ScriptCmd_clearmonbg_23(void) else if (r5 == 1) r5 = 3; if (r5 == 0 || r5 == 2) - r6 = gBattleAnimPlayerMonIndex; + r6 = gBattleAnimBankAttacker; else - r6 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r6)) + r6 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r6)) gSprites[gObjectBankIDs[r6]].invisible = FALSE; - if (r5 > 1 && b_side_obj__get_some_boolean(r6 ^ 2)) + if (r5 > 1 && IsAnimBankSpriteVisible(r6 ^ 2)) gSprites[gObjectBankIDs[r6 ^ 2]].invisible = FALSE; else r5 = 0; @@ -1228,9 +1228,9 @@ static void sub_80769A4(u8 taskId) r5 = 0; else r5 = 1; - if (b_side_obj__get_some_boolean(r4)) + if (IsAnimBankSpriteVisible(r4)) sub_8076464(r5); - if (gTasks[taskId].data[0] > 1 && b_side_obj__get_some_boolean(r4 ^ 2)) + if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(r4 ^ 2)) sub_8076464(r5 ^ 1); DestroyTask(taskId); } @@ -1371,7 +1371,7 @@ static void ScriptCmd_fadetobg_25(void) taskId = CreateTask(task_p5_load_battle_screen_elements, 5); if (IsContest() != 0) gTasks[taskId].data[0] = r6; - else if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) + else if (GetBankSide(gBattleAnimBankTarget) == 0) gTasks[taskId].data[0] = r7; else gTasks[taskId].data[0] = r8; @@ -1422,7 +1422,7 @@ static void sub_8076DB8(u16 a) void *dmaSrc; void *dmaDest; - sub_800D238(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); + LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); dmaSrc = IsContest() ? EWRAM_14800 : EWRAM_18000; dmaDest = (void *)(VRAM + 0xD000); @@ -1493,16 +1493,16 @@ static void ScriptCmd_changebg(void) /* s8 sub_8076F98(s8 a) { - if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) + if (!IsContest() && (EWRAM_17810[gBattleAnimBankAttacker].unk0 & 0x10)) { - a = GetBankSide(gBattleAnimPlayerMonIndex) ? 0xC0 : 0x3F; + a = GetBankSide(gBattleAnimBankAttacker) ? 0xC0 : 0x3F; } //_08076FDC else { if (IsContest()) { - if (gBattleAnimPlayerMonIndex == gBattleAnimEnemyMonIndex && gBattleAnimPlayerMonIndex == 2 + if (gBattleAnimBankAttacker == gBattleAnimBankTarget && gBattleAnimBankAttacker == 2 && a == 0x3F) { //jump to _0807707A @@ -1514,9 +1514,9 @@ s8 sub_8076F98(s8 a) //_08077004 else { - if (GetBankSide(gBattleAnimPlayerMonIndex) == 0) + if (GetBankSide(gBattleAnimBankAttacker) == 0) { - if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) + if (GetBankSide(gBattleAnimBankTarget) == 0) } //_08077042 else @@ -1540,7 +1540,7 @@ s8 sub_8076F98(s8 a) lsls r0, 24\n\ cmp r0, 0\n\ bne _08076FDC\n\ - ldr r0, _08076FD4 @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08076FD4 @ =gBattleAnimBankAttacker\n\ ldrb r2, [r0]\n\ lsls r0, r2, 1\n\ adds r0, r2\n\ @@ -1561,15 +1561,15 @@ s8 sub_8076F98(s8 a) movs r4, 0x3F\n\ b _0807706E\n\ .align 2, 0\n\ -_08076FD4: .4byte gBattleAnimPlayerMonIndex\n\ +_08076FD4: .4byte gBattleAnimBankAttacker\n\ _08076FD8: .4byte 0x02017810\n\ _08076FDC:\n\ bl IsContest\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _08077004\n\ - ldr r0, _08076FFC @ =gBattleAnimPlayerMonIndex\n\ - ldr r1, _08077000 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08076FFC @ =gBattleAnimBankAttacker\n\ + ldr r1, _08077000 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ ldrb r1, [r1]\n\ cmp r0, r1\n\ @@ -1580,16 +1580,16 @@ _08076FDC:\n\ beq _0807707A\n\ b _08077068\n\ .align 2, 0\n\ -_08076FFC: .4byte gBattleAnimPlayerMonIndex\n\ -_08077000: .4byte gBattleAnimEnemyMonIndex\n\ +_08076FFC: .4byte gBattleAnimBankAttacker\n\ +_08077000: .4byte gBattleAnimBankTarget\n\ _08077004:\n\ - ldr r0, _0807702C @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _0807702C @ =gBattleAnimBankAttacker\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ cmp r0, 0\n\ bne _08077042\n\ - ldr r0, _08077030 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08077030 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ @@ -1602,8 +1602,8 @@ _08077004:\n\ movs r4, 0xC0\n\ b _0807706E\n\ .align 2, 0\n\ -_0807702C: .4byte gBattleAnimPlayerMonIndex\n\ -_08077030: .4byte gBattleAnimEnemyMonIndex\n\ +_0807702C: .4byte gBattleAnimBankAttacker\n\ +_08077030: .4byte gBattleAnimBankTarget\n\ _08077034:\n\ movs r0, 0x40\n\ negs r0, r0\n\ @@ -1613,7 +1613,7 @@ _08077034:\n\ lsls r0, 24\n\ b _0807706C\n\ _08077042:\n\ - ldr r0, _08077064 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08077064 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ @@ -1629,7 +1629,7 @@ _08077042:\n\ movs r4, 0x3F\n\ b _0807706E\n\ .align 2, 0\n\ -_08077064: .4byte gBattleAnimEnemyMonIndex\n\ +_08077064: .4byte gBattleAnimBankTarget\n\ _08077068:\n\ lsls r0, r4, 24\n\ negs r0, r0\n\ @@ -1661,16 +1661,16 @@ _08077088:\n\ s8 sub_8077094(s8 a) { - if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) + if (!IsContest() && (EWRAM_17810[gBattleAnimBankAttacker].unk0 & 0x10)) { - if (GetBankSide(gBattleAnimPlayerMonIndex) != 0) + if (GetBankSide(gBattleAnimBankAttacker) != 0) a = 0x3F; else a = 0xC0; } else { - if (GetBankSide(gBattleAnimPlayerMonIndex) != 0 || IsContest() != 0) + if (GetBankSide(gBattleAnimBankAttacker) != 0 || IsContest() != 0) a = -a; } return a; @@ -2128,9 +2128,9 @@ static void ScriptCmd_monbgprio_28(void) r2 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (r2 != 0) - r0 = gBattleAnimEnemyMonIndex; + r0 = gBattleAnimBankTarget; else - r0 = gBattleAnimPlayerMonIndex; + r0 = gBattleAnimBankAttacker; r4 = GetBankIdentity(r0); if (!IsContest() && (r4 == 0 || r4 == 3)) { @@ -2157,12 +2157,12 @@ static void ScriptCmd_monbgprio_2A(void) r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; - if (GetBankSide(gBattleAnimPlayerMonIndex) != GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker) != GetBankSide(gBattleAnimBankTarget)) { if (r6 != 0) - r0 = gBattleAnimEnemyMonIndex; + r0 = gBattleAnimBankTarget; else - r0 = gBattleAnimPlayerMonIndex; + r0 = gBattleAnimBankAttacker; r4 = GetBankIdentity(r0); if (!IsContest() && (r4 == 0 || r4 == 3)) { @@ -2178,7 +2178,7 @@ static void ScriptCmd_invisible(void) u8 spriteId; r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); - spriteId = obj_id_for_side_relative_to_move(r0); + spriteId = GetAnimBankSpriteId(r0); if (spriteId != 0xFF) { gSprites[spriteId].invisible = TRUE; @@ -2192,7 +2192,7 @@ static void ScriptCmd_visible(void) u8 spriteId; r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); - spriteId = obj_id_for_side_relative_to_move(r0); + spriteId = GetAnimBankSpriteId(r0); if (spriteId != 0xFF) { gSprites[spriteId].invisible = FALSE; @@ -2209,17 +2209,17 @@ static void ScriptCmd_doublebattle_2D(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!IsContest() && IsDoubleBattle() - && GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) + && GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) { if (r7 == 0) { - r4 = GetBankIdentity_permutated(gBattleAnimPlayerMonIndex); - spriteId = obj_id_for_side_relative_to_move(0); + r4 = GetBankIdentity_permutated(gBattleAnimBankAttacker); + spriteId = GetAnimBankSpriteId(0); } else { - r4 = GetBankIdentity_permutated(gBattleAnimEnemyMonIndex); - spriteId = obj_id_for_side_relative_to_move(1); + r4 = GetBankIdentity_permutated(gBattleAnimBankTarget); + spriteId = GetAnimBankSpriteId(1); } if (spriteId != 0xFF) { @@ -2243,17 +2243,17 @@ static void ScriptCmd_doublebattle_2E(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!IsContest() && IsDoubleBattle() - && GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) + && GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) { if (r7 == 0) { - r4 = GetBankIdentity_permutated(gBattleAnimPlayerMonIndex); - spriteId = obj_id_for_side_relative_to_move(0); + r4 = GetBankIdentity_permutated(gBattleAnimBankAttacker); + spriteId = GetAnimBankSpriteId(0); } else { - r4 = GetBankIdentity_permutated(gBattleAnimEnemyMonIndex); - spriteId = obj_id_for_side_relative_to_move(1); + r4 = GetBankIdentity_permutated(gBattleAnimBankTarget); + spriteId = GetAnimBankSpriteId(1); } if (spriteId != 0xFF && r4 == 2) { diff --git a/src/battle/battle_anim_807B69C.c b/src/battle/battle_anim_807B69C.c new file mode 100644 index 000000000..bf3eb7ef1 --- /dev/null +++ b/src/battle/battle_anim_807B69C.c @@ -0,0 +1,353 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "blend_palette.h" +#include "decompress.h" +#include "palette.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" + +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern bool8 gAnimScriptActive; +extern void (*gAnimScriptCallback)(void); +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankTarget; +extern u8 gObjectBankIDs[]; +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const u8 *const gBattleAnims_StatusConditions[]; +extern const struct OamData gOamData_837E05C; +extern const struct OamData gOamData_837DF24; + +extern u8 sub_8077ABC(u8, u8); +extern void sub_80E32E0(u8); + + +static const struct Subsprite gSubspriteTable_83931B8[] = +{ + {.x = -16, .y = -16, .shape = ST_OAM_SQUARE, .size = 3, .tileOffset = 0, .priority = 2}, + {.x = -16, .y = 48, .shape = ST_OAM_H_RECTANGLE, .size = 3, .tileOffset = 64, .priority = 2}, + {.x = 48, .y = -16, .shape = ST_OAM_V_RECTANGLE, .size = 3, .tileOffset = 96, .priority = 2}, + {.x = 48, .y = 48, .shape = ST_OAM_SQUARE, .size = 2, .tileOffset = 128, .priority = 2}, +}; + +static const struct SubspriteTable gSubspriteTables_83931D8[] = +{ + {ARRAY_COUNT(gSubspriteTable_83931B8), gSubspriteTable_83931B8}, +}; + +static const struct SpriteTemplate gSpriteTemplate_83931E0 = +{ + .tileTag = 10010, + .paletteTag = 10010, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static void sub_807B870(struct Sprite *); +static const struct SpriteTemplate gSpriteTemplate_83931F8 = +{ + .tileTag = 10136, + .paletteTag = 10136, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807B870, +}; + +static void sub_807B7E0(u8); +static void sub_807B8A4(struct Sprite *); +static void sub_807B9D8(u8); +static void sub_807BA24(u8); +static void sub_807BAD4(u8); +static void sub_807BB24(u8); +static void sub_807BDAC(u8); + +u8 unref_sub_807B69C(u8 a, u8 b) +{ + u8 spriteId1 = gObjectBankIDs[a]; + u8 taskId = CreateTask(sub_807B7E0, 10); + u8 spriteId2; + u8 i; + + LoadCompressedObjectPic(&gBattleAnimPicTable[136]); + LoadCompressedObjectPalette(&gBattleAnimPaletteTable[136]); + gTasks[taskId].data[0] = a; + if (b != 0) + { + gTasks[taskId].data[1] = 0x1F; + for (i = 0; i < 10; i++) + { + spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y + 32, 0); + gSprites[spriteId2].data0 = i * 51; + gSprites[spriteId2].data1 = -256; + gSprites[spriteId2].invisible = TRUE; + if (i > 4) + gSprites[spriteId2].data6 = 21; + } + } + else + { + gTasks[taskId].data[1] = 0x7C00; + for (i = 0; i < 10; i++) + { + spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y - 32, 0); + gSprites[spriteId2].data0 = i * 51; + gSprites[spriteId2].data1 = 256; + gSprites[spriteId2].invisible = TRUE; + if (i > 4) + gSprites[spriteId2].data6 = 21; + } + } + gSprites[spriteId2].data7 = 1; + return taskId; +} + +static void sub_807B7E0(u8 taskId) +{ + if (gTasks[taskId].data[2] == 2) + { + gTasks[taskId].data[2] = 0; + BlendPalette(0x100 + gTasks[taskId].data[0] * 16, 16, gTasks[taskId].data[4], gTasks[taskId].data[1]); + if (gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] > 8) + gTasks[taskId].data[5] ^= 1; + } + else + { + u16 var = gTasks[taskId].data[4]; + + gTasks[taskId].data[4]--; + if (gTasks[taskId].data[4] < 0) + { + gTasks[taskId].data[4] = var; + gTasks[taskId].data[5] ^= 1; + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 2) + DestroyTask(taskId); + } + } + } + else + { + gTasks[taskId].data[2]++; + } +} + +static void sub_807B870(struct Sprite *sprite) +{ + if (sprite->data6 == 0) + { + sprite->invisible = FALSE; + sprite->callback = sub_807B8A4; + sub_807B8A4(sprite); + } + else + { + sprite->data6 --; + } +} + +static void sub_807B8A4(struct Sprite *sprite) +{ + sprite->pos2.x = Cos(sprite->data0, 32); + sprite->pos2.y = Sin(sprite->data0, 8); + if (sprite->data0 < 128) + sprite->subpriority = 29; + else + sprite->subpriority = 31; + sprite->data0 = (sprite->data0 + 8) & 0xFF; + sprite->data5 += sprite->data1; + sprite->pos2.y += sprite->data5 >> 8; + sprite->data2++; + if (sprite->data2 == 52) + { + if (sprite->data7 != 0) + DestroySpriteAndFreeResources(sprite); + else + DestroySprite(sprite); + } +} + +void sub_807B920(u8 taskId) +{ + s16 x = sub_8077ABC(gBattleAnimBankTarget, 2) - 32; + s16 y = sub_8077ABC(gBattleAnimBankTarget, 3) - 36; + u8 spriteId; + + if (IsContest()) + x -= 6; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 0x1000; + spriteId = CreateSprite(&gSpriteTemplate_83931E0, x, y, 4); + SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83931D8); + gTasks[taskId].data[15] = spriteId; + gTasks[taskId].func = sub_807B9D8; +} + +static void sub_807B9D8(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] == 10) + { + gTasks[taskId].func = sub_807BA24; + gTasks[taskId].data[1] = 0; + } + else + { + u8 var = gTasks[taskId].data[1]; + + REG_BLDALPHA = ((16 - var) << 8) | var; + } +} + +static void sub_807BA24(u8 taskId) +{ + u8 r2 = IndexOfSpritePaletteTag(0x271A); + + if (gTasks[taskId].data[1]++ > 13) + { + gTasks[taskId].data[2]++; + if (gTasks[taskId].data[2] == 3) + { + u16 temp; + + temp = gPlttBufferFaded[0x100 + r2 * 16 + 13]; + gPlttBufferFaded[0x100 + r2 * 16 + 13] = gPlttBufferFaded[0x100 + r2 * 16 + 14]; + gPlttBufferFaded[0x100 + r2 * 16 + 14] = gPlttBufferFaded[0x100 + r2 * 16 + 15]; + gPlttBufferFaded[0x100 + r2 * 16 + 15] = temp; + + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 3) + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] == 2) + { + gTasks[taskId].data[1] = 9; + gTasks[taskId].func = sub_807BAD4; + } + } + } + } +} + +static void sub_807BAD4(u8 taskId) +{ + gTasks[taskId].data[1]--; + if (gTasks[taskId].data[1] == -1) + { + gTasks[taskId].func = sub_807BB24; + gTasks[taskId].data[1] = 0; + } + else + { + u8 var = gTasks[taskId].data[1]; + + REG_BLDALPHA = ((16 - var) << 8) | var; + } +} + +static void sub_807BB24(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] == 37) + { + u8 spriteId = gTasks[taskId].data[15]; + + FreeSpriteOamMatrix(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); + } + else if (gTasks[taskId].data[1] == 39) + { + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimVisualTask(taskId); + } +} + +void sub_807BB88(u8 taskId) +{ + s16 r5; + s16 r2; + s16 r3 = 0; + + switch (ewram17840.unk0) + { + case 15: r5 = 0; r2 = 0; break; + case 16: r5 = 0; r2 = 1; break; + case 17: r5 = 0; r2 = 3; break; + case 18: r5 = 0; r2 = 5; break; + case 19: r5 = 0; r2 = 6; break; + case 20: r5 = 0; r2 = 2; break; + case 21: r5 = 0; r2 = 4; break; + case 22: r5 = 1; r2 = 0; break; + case 23: r5 = 1; r2 = 1; break; + case 24: r5 = 1; r2 = 3; break; + case 25: r5 = 1; r2 = 5; break; + case 26: r5 = 1; r2 = 6; break; + case 27: r5 = 1; r2 = 2; break; + case 28: r5 = 1; r2 = 4; break; + case 39: r5 = 0; r2 = 0; r3 = 1; break; + case 40: r5 = 0; r2 = 1; r3 = 1; break; + case 41: r5 = 0; r2 = 3; r3 = 1; break; + case 42: r5 = 0; r2 = 5; r3 = 1; break; + case 43: r5 = 0; r2 = 6; r3 = 1; break; + case 44: r5 = 0; r2 = 2; r3 = 1; break; + case 45: r5 = 0; r2 = 4; r3 = 1; break; + case 46: r5 = 1; r2 = 0; r3 = 1; break; + case 47: r5 = 1; r2 = 1; r3 = 1; break; + case 48: r5 = 1; r2 = 3; r3 = 1; break; + case 49: r5 = 1; r2 = 5; r3 = 1; break; + case 50: r5 = 1; r2 = 6; r3 = 1; break; + case 51: r5 = 1; r2 = 2; r3 = 1; break; + case 52: r5 = 1; r2 = 4; r3 = 1; break; + case 55: r5 = 0; r2 = 0xFF; r3 = 0; break; + case 56: r5 = 0; r2 = 0xFF; r3 = 1; break; + case 57: r5 = 1; r2 = 0xFF; r3 = 0; break; + case 58: r5 = 1; r2 = 0xFF; r3 = 1; break; + + default: + DestroyAnimVisualTask(taskId); + return; + } + + gBattleAnimArgs[0] = r5; + gBattleAnimArgs[1] = r2; + gBattleAnimArgs[2] = 0; + gBattleAnimArgs[3] = 0; + gBattleAnimArgs[4] = r3; + gTasks[taskId].func = sub_80E32E0; + sub_80E32E0(taskId); +} + +void move_anim_start_t2(u8 a, u8 b) +{ + u8 taskId; + + gBattleAnimBankAttacker = a; + gBattleAnimBankTarget = a; + DoMoveAnim(gBattleAnims_StatusConditions, b, 0); + taskId = CreateTask(sub_807BDAC, 10); + gTasks[taskId].data[0] = a; +} + +static void sub_807BDAC(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + ewram17810[gTasks[taskId].data[0]].unk0_4 = 0; + DestroyTask(taskId); + } +} diff --git a/src/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c index 31984977f..e0c79dc8e 100644 --- a/src/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -12,8 +12,8 @@ extern s16 gBattleAnimArgs[8]; extern u8 gObjectBankIDs[]; extern s32 gMoveDmgMoveAnim; extern u16 gMovePowerMoveAnim; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; static void sub_80A7EF0(u8 taskId); static void sub_80A808C(u8 taskId); @@ -34,7 +34,7 @@ static void sub_80A913C(u8 taskId); void sub_80A7E7C(u8 taskId) { u8 sprite; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -96,7 +96,7 @@ void sub_80A7FA0(u8 taskId) r6 = 0; if (gBattleAnimArgs[0] < 4) { - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -121,7 +121,7 @@ void sub_80A7FA0(u8 taskId) side = GetBankByPlayerAI(3); break; } - if (b_side_obj__get_some_boolean(side) == FALSE) + if (IsAnimBankSpriteVisible(side) == FALSE) { r6 = 1; } @@ -129,7 +129,7 @@ void sub_80A7FA0(u8 taskId) } else { - sprite = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + sprite = gObjectBankIDs[gBattleAnimBankAttacker]; } if (r6) { @@ -186,7 +186,7 @@ static void sub_80A808C(u8 taskId) void sub_80A8154(u8 taskId) { u8 sprite; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -244,7 +244,7 @@ static void sub_80A81D8(u8 taskId) void sub_80A8314(u8 taskId) { - u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); gSprites[sprite].pos2.x = gBattleAnimArgs[1]; TASK.data[0] = sprite; TASK.data[1] = gBattleAnimArgs[1]; @@ -286,7 +286,7 @@ void sub_80A8408(u8 taskId) u8 sprite; u8 v1; v1 = 1; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (gBattleAnimArgs[4] > 5) { gBattleAnimArgs[4] = 5; @@ -328,7 +328,7 @@ static void sub_80A8488(u8 taskId) void sub_80A8500(u8 taskId) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -338,7 +338,7 @@ void sub_80A8500(u8 taskId) void sub_80A8530(struct Sprite *sprite) { sprite->invisible = TRUE; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->data1 = -gBattleAnimArgs[1]; } @@ -348,9 +348,9 @@ void sub_80A8530(struct Sprite *sprite) } sprite->data0 = gBattleAnimArgs[0]; sprite->data2 = 0; - sprite->data3 = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + sprite->data3 = gObjectBankIDs[gBattleAnimBankAttacker]; sprite->data4 = gBattleAnimArgs[0]; - oamt_set_x3A_32(sprite, sub_80A85A4); + StoreSpriteCallbackInData6(sprite, sub_80A85A4); sprite->callback = sub_8078458; } @@ -359,20 +359,20 @@ static void sub_80A85A4(struct Sprite *sprite) sprite->data0 = sprite->data4; sprite->data1 = -sprite->data1; sprite->callback = sub_8078458; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80A85C8(struct Sprite *sprite) { u8 spriteId; sprite->invisible = TRUE; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sprite->data0 = gBattleAnimArgs[0]; sprite->data1 = 0; sprite->data2 = gBattleAnimArgs[1]; sprite->data3 = spriteId; sprite->data4 = gBattleAnimArgs[0]; - oamt_set_x3A_32(sprite, sub_80A8614); + StoreSpriteCallbackInData6(sprite, sub_80A8614); sprite->callback = sub_8078458; } @@ -381,7 +381,7 @@ void sub_80A8614(struct Sprite *sprite) sprite->data0 = sprite->data4; sprite->data2 = -sprite->data2; sprite->callback = sub_8078458; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80A8638(struct Sprite *sprite) @@ -390,11 +390,11 @@ void sub_80A8638(struct Sprite *sprite) int spriteId; if (!gBattleAnimArgs[0]) { - spriteId = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + spriteId = gObjectBankIDs[gBattleAnimBankAttacker]; } else { - spriteId = gObjectBankIDs[gBattleAnimEnemyMonIndex]; + spriteId = gObjectBankIDs[gBattleAnimBankTarget]; } sprite->data0 = gBattleAnimArgs[2]; sprite->data1 = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; @@ -457,11 +457,11 @@ void sub_80A8764(struct Sprite *sprite) u8 spriteId; if (!gBattleAnimArgs[0]) { - v1 = gBattleAnimPlayerMonIndex; + v1 = gBattleAnimBankAttacker; } else { - v1 = gBattleAnimEnemyMonIndex; + v1 = gBattleAnimBankTarget; } spriteId = gObjectBankIDs[v1]; if (GetBankSide(v1)) @@ -482,7 +482,7 @@ void sub_80A8764(struct Sprite *sprite) sprite->data4 = 0; sprite->data5 = spriteId; sprite->invisible = TRUE; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); sprite->callback = sub_80784A8; } @@ -493,11 +493,11 @@ void sub_80A8818(struct Sprite *sprite) sprite->invisible = TRUE; if (!gBattleAnimArgs[0]) { - v1 = gBattleAnimPlayerMonIndex; + v1 = gBattleAnimBankAttacker; } else { - v1 = gBattleAnimEnemyMonIndex; + v1 = gBattleAnimBankTarget; } spriteId = gObjectBankIDs[v1]; if (GetBankSide(v1)) @@ -520,11 +520,11 @@ void sub_80A8818(struct Sprite *sprite) sprite->data6 = gBattleAnimArgs[5]; if (!gBattleAnimArgs[5]) { - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } else { - oamt_set_x3A_32(sprite, sub_80A88F0); + StoreSpriteCallbackInData6(sprite, sub_80A88F0); } sprite->callback = sub_80784A8; } @@ -541,12 +541,12 @@ void sub_80A8920(u8 taskId) { s16 r7; r7 = 0x8000 / gBattleAnimArgs[3]; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[5] = -gBattleAnimArgs[5]; } - TASK.data[0] = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + TASK.data[0] = GetAnimBankSpriteId(gBattleAnimArgs[0]); TASK.data[1] = (gBattleAnimArgs[1] << 8) / gBattleAnimArgs[3]; TASK.data[2] = gBattleAnimArgs[2]; TASK.data[3] = gBattleAnimArgs[3]; @@ -600,30 +600,30 @@ void sub_80A8A80(u8 taskId) { case 0: case 1: - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); break; case 2: - if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) + if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { DestroyAnimVisualTask(taskId); return; } - spriteId = gObjectBankIDs[gBattleAnimPlayerMonIndex ^ 2]; + spriteId = gObjectBankIDs[gBattleAnimBankAttacker ^ 2]; break; case 3: - if (!b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) + if (!IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { DestroyAnimVisualTask(taskId); return; } - spriteId = gObjectBankIDs[gBattleAnimEnemyMonIndex ^ 2]; + spriteId = gObjectBankIDs[gBattleAnimBankTarget ^ 2]; break; default: DestroyAnimVisualTask(taskId); return; } TASK.data[0] = spriteId; - if (GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankTarget)) { TASK.data[1] = gBattleAnimArgs[1]; } @@ -648,11 +648,11 @@ static void sub_80A8B3C(u8 taskId) void sub_80A8B88(u8 taskId) { u8 spriteId; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[4]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]); TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; TASK.data[2] = gBattleAnimArgs[2]; @@ -660,11 +660,11 @@ void sub_80A8B88(u8 taskId) TASK.data[4] = spriteId; if (gBattleAnimArgs[4] == 0) { - TASK.data[5] = gBattleAnimPlayerMonIndex; + TASK.data[5] = gBattleAnimBankAttacker; } else { - TASK.data[5] = gBattleAnimEnemyMonIndex; + TASK.data[5] = gBattleAnimBankTarget; } TASK.data[12] = 1; TASK.func = sub_80A8C0C; @@ -714,7 +714,7 @@ static void sub_80A8C0C(u8 taskId) void sub_80A8D34(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[3]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]); sub_8078E70(spriteId, gBattleAnimArgs[4]); TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; @@ -754,7 +754,7 @@ static void sub_80A8D8C(u8 taskId) void sub_80A8E04(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sub_8078E70(spriteId, 0); TASK.data[1] = 0; TASK.data[2] = gBattleAnimArgs[0]; @@ -777,11 +777,11 @@ void sub_80A8E04(u8 taskId) { if (gBattleAnimArgs[2] == 0) { - TASK.data[7] = !GetBankSide(gBattleAnimPlayerMonIndex); + TASK.data[7] = !GetBankSide(gBattleAnimBankAttacker); } else { - TASK.data[7] = !GetBankSide(gBattleAnimEnemyMonIndex); + TASK.data[7] = !GetBankSide(gBattleAnimBankTarget); } } if (TASK.data[7]) @@ -798,20 +798,20 @@ void sub_80A8E04(u8 taskId) void sub_80A8EFC(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sub_8078E70(spriteId, 0); TASK.data[1] = 0; TASK.data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[2] == 0) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } } else { - if (GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankTarget)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -891,7 +891,7 @@ void sub_80A9058(u8 taskId) TASK.data[12] = 0; TASK.data[10] = gBattleAnimArgs[3]; TASK.data[11] = gBattleAnimArgs[4]; - TASK.data[7] = obj_id_for_side_relative_to_move(1); + TASK.data[7] = GetAnimBankSpriteId(1); TASK.data[8] = gSprites[TASK.data[7]].pos2.x; TASK.data[9] = gSprites[TASK.data[7]].pos2.y; TASK.data[0] = 0; diff --git a/src/battle/battle_anim_80CA710.c b/src/battle/battle_anim_80CA710.c new file mode 100644 index 000000000..65ccd7c21 --- /dev/null +++ b/src/battle/battle_anim_80CA710.c @@ -0,0 +1,18 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u32 filler_03000724; +IWRAM_DATA u16 gUnknown_03000728[4]; +IWRAM_DATA u16 gUnknown_03000730[6]; +IWRAM_DATA u32 filler_0300073c; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/battle_10.c b/src/battle/battle_controller_linkopponent.c index 0237bab4b..0b6c3b6a1 100644 --- a/src/battle_10.c +++ b/src/battle/battle_controller_linkopponent.c @@ -3,6 +3,8 @@ #include "battle_interface.h" #include "data2.h" #include "link.h" +#include "m4a.h" +#include "main.h" #include "palette.h" #include "rom_8077ABC.h" #include "rom3.h" @@ -48,11 +50,14 @@ extern struct Window gUnknown_03004210; extern u16 gUnknown_030042A0; extern u16 gUnknown_030042A4; extern u8 gUnknown_0300434C[]; +extern u32 gBattleExecBuffer; +extern MainCallback gPreBattleCallback1; +extern struct MusicPlayerInfo gMPlay_BGM; extern u8 sub_8077F68(); extern u8 sub_8079E90(); extern u8 GetBankIdentity(u8); -extern void sub_8031794(struct Pokemon *, u8); +extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8); extern void sub_8037A74(void); extern void sub_8032984(u8, u16); extern void sub_8037E30(void); @@ -66,7 +71,7 @@ extern void sub_8031A6C(u16, u8); extern void sub_80313A0(struct Sprite *); extern void sub_803757C(void); extern void oamt_add_pos2_onto_pos1(); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void sub_8078B34(struct Sprite *); extern void sub_80375B4(void); extern void sub_8010384(struct Sprite *); @@ -94,13 +99,19 @@ extern void nullsub_47(void); extern bool8 IsDoubleBattle(void); extern void sub_8037840(void); extern void sub_8031B74(); -extern u8 sub_8078874(); +extern u8 AnimBankSpriteExists(); extern u8 move_anim_start_t3(); extern void sub_8037FD8(void); extern void sub_8037F34(void); -extern void dp01_tbl4_exec_completed(void); +extern void LinkOpponentBufferExecCompleted(void); +extern void sub_8141828(); +extern void sub_804777C(); + +// this file's functions u32 dp01_getattr_by_ch1_for_player_pokemon__(u8, u8 *); +void sub_803752C(void); +void sub_8037D2C(void); void sub_8038900(u8); void sub_8039430(u8, u8); void sub_8039648(void); @@ -108,6 +119,454 @@ void sub_8039B64(void); void sub_803A2C4(u8); void sub_803A4E0(void); +void LinkOpponentHandleGetAttributes(void); +void LinkOpponentHandlecmd1(void); +void LinkOpponentHandleSetAttributes(void); +void LinkOpponentHandlecmd3(void); +void LinkOpponentHandleLoadPokeSprite(void); +void LinkOpponentHandleSendOutPoke(void); +void LinkOpponentHandleReturnPokeToBall(void); +void LinkOpponentHandleTrainerThrow(void); +void LinkOpponentHandleTrainerSlide(void); +void LinkOpponentHandleTrainerSlideBack(void); +void LinkOpponentHandlecmd10(void); +void LinkOpponentHandlecmd11(void); +void LinkOpponentHandlecmd12(void); +void LinkOpponentHandleBallThrow(void); +void LinkOpponentHandlePuase(void); +void LinkOpponentHandleMoveAnimation(void); +void LinkOpponentHandlePrintString(void); +void LinkOpponentHandlePrintStringPlayerOnly(void); +void LinkOpponentHandlecmd18(void); +void LinkOpponentHandlecmd19(void); +void LinkOpponentHandlecmd20(void); +void LinkOpponentHandleOpenBag(void); +void LinkOpponentHandlecmd22(void); +void LinkOpponentHandlecmd23(void); +void LinkOpponentHandleHealthBarUpdate(void); +void LinkOpponentHandleExpBarUpdate(void); +void LinkOpponentHandleStatusIconUpdate(void); +void LinkOpponentHandleStatusAnimation(void); +void LinkOpponentHandleStatusXor(void); +void LinkOpponentHandlecmd29(void); +void LinkOpponentHandleDMATransfer(void); +void LinkOpponentHandlecmd31(void); +void LinkOpponentHandlecmd32(void); +void LinkOpponentHandlecmd33(void); +void LinkOpponentHandlecmd34(void); +void LinkOpponentHandlecmd35(void); +void LinkOpponentHandlecmd36(void); +void LinkOpponentHandlecmd37(void); +void LinkOpponentHandlecmd38(void); +void LinkOpponentHandlecmd39(void); +void LinkOpponentHandlecmd40(void); +void LinkOpponentHandleHitAnimation(void); +void LinkOpponentHandlecmd42(void); +void LinkOpponentHandleEffectivenessSound(void); +void LinkOpponentHandlecmd44(void); +void LinkOpponentHandleFaintingCry(void); +void LinkOpponentHandleIntroSlide(void); +void LinkOpponentHandleTrainerBallThrow(void); +void LinkOpponentHandlecmd48(void); +void LinkOpponentHandlecmd49(void); +void LinkOpponentHandlecmd50(void); +void LinkOpponentHandleSpriteInvisibility(void); +void LinkOpponentHandleBattleAnimation(void); +void LinkOpponentHandleLinkStandbyMsg(void); +void LinkOpponentHandleResetActionMoveSelection(void); +void LinkOpponentHandlecmd55(void); +void LinkOpponentHandlecmd56(void); + +// const data + +typedef void (*BattleBufferCmd) (void); +const BattleBufferCmd gLinkOpponentBufferCommands[] = +{ + LinkOpponentHandleGetAttributes, + LinkOpponentHandlecmd1, + LinkOpponentHandleSetAttributes, + LinkOpponentHandlecmd3, + LinkOpponentHandleLoadPokeSprite, + LinkOpponentHandleSendOutPoke, + LinkOpponentHandleReturnPokeToBall, + LinkOpponentHandleTrainerThrow, + LinkOpponentHandleTrainerSlide, + LinkOpponentHandleTrainerSlideBack, + LinkOpponentHandlecmd10, + LinkOpponentHandlecmd11, + LinkOpponentHandlecmd12, + LinkOpponentHandleBallThrow, + LinkOpponentHandlePuase, + LinkOpponentHandleMoveAnimation, + LinkOpponentHandlePrintString, + LinkOpponentHandlePrintStringPlayerOnly, + LinkOpponentHandlecmd18, + LinkOpponentHandlecmd19, + LinkOpponentHandlecmd20, + LinkOpponentHandleOpenBag, + LinkOpponentHandlecmd22, + LinkOpponentHandlecmd23, + LinkOpponentHandleHealthBarUpdate, + LinkOpponentHandleExpBarUpdate, + LinkOpponentHandleStatusIconUpdate, + LinkOpponentHandleStatusAnimation, + LinkOpponentHandleStatusXor, + LinkOpponentHandlecmd29, + LinkOpponentHandleDMATransfer, + LinkOpponentHandlecmd31, + LinkOpponentHandlecmd32, + LinkOpponentHandlecmd33, + LinkOpponentHandlecmd34, + LinkOpponentHandlecmd35, + LinkOpponentHandlecmd36, + LinkOpponentHandlecmd37, + LinkOpponentHandlecmd38, + LinkOpponentHandlecmd39, + LinkOpponentHandlecmd40, + LinkOpponentHandleHitAnimation, + LinkOpponentHandlecmd42, + LinkOpponentHandleEffectivenessSound, + LinkOpponentHandlecmd44, + LinkOpponentHandleFaintingCry, + LinkOpponentHandleIntroSlide, + LinkOpponentHandleTrainerBallThrow, + LinkOpponentHandlecmd48, + LinkOpponentHandlecmd49, + LinkOpponentHandlecmd50, + LinkOpponentHandleSpriteInvisibility, + LinkOpponentHandleBattleAnimation, + LinkOpponentHandleLinkStandbyMsg, + LinkOpponentHandleResetActionMoveSelection, + LinkOpponentHandlecmd55, + LinkOpponentHandlecmd56 +}; + +// code + +void nullsub_47(void) +{ +} + +void SetBankFuncToLinkOpponentBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = sub_803752C; +} + +void sub_803752C(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] <= 0x38) + gLinkOpponentBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + LinkOpponentBufferExecCompleted(); + } +} + +void sub_803757C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + LinkOpponentBufferExecCompleted(); +} + +void sub_80375B4(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam); + gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5; + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037644(void) +{ + if ((--ewram17810[gActiveBank].unk9) == 0xFF) + { + ewram17810[gActiveBank].unk9 = 0; + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037680(void) +{ + bool8 r6 = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + else + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + r6 = FALSE; + + if (r6) + { + if (GetBankIdentity(gActiveBank) == 1) + { + if (!ewram17810[gActiveBank].unk1_0 || !ewram17810[gActiveBank ^ 2].unk1_0) + return; + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankIdentity(gActiveBank) == 1) + m4aMPlayContinue(&gMPlay_BGM); + } + else + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + } + ewram17810[gActiveBank].unk9 = 3; + gBattleBankFunc[gActiveBank] = sub_8037644; + } +} + +void sub_8037840(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]); + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 3) + { + if (++ewram17810[gActiveBank].unk9 == 1) + return; + ewram17810[gActiveBank].unk9 = 0; + } + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank ^ 2], + &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], + 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + sub_8032984( + gActiveBank ^ 2, + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES)); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gEnemyParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8032984( + gActiveBank, + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_8037680; + } +} + +void sub_8037A74(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE + && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + { + if (!ewram17810[gActiveBank].unk0_7) + { + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + return; + } + if (ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + LinkOpponentBufferExecCompleted(); + return; + } + } +} + +void sub_8037B24(void) +{ + s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + else + LinkOpponentBufferExecCompleted(); +} + +void sub_8037B78(void) +{ + if (!gSprites[gObjectBankIDs[gActiveBank]].inUse) + { + sub_8043DB0(gHealthboxIDs[gActiveBank]); + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037BBC(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8032A08(gActiveBank); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037C2C(void) +{ + if (gUnknown_03004210.state == 0) + LinkOpponentBufferExecCompleted(); +} + +void dp01t_0F_4_move_anim(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = 0; + LinkOpponentBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_8037CC0(void) +{ + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + gBattleBankFunc[gActiveBank] = sub_8037D2C; + } +} + +void sub_8037D2C(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + CreateTask(c3_0802FDF4, 10); + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037D64(void) +{ + if (ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gEnemyParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8031F88(gActiveBank); + gBattleBankFunc[gActiveBank] = sub_8037CC0; + } +} + +void sub_8037E30(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy + && !ewram17810[gActiveBank].unk0_3) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + gBattleBankFunc[gActiveBank] = sub_8037D64; + } +} + +void sub_8037EF0(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(c2_8011A1C); + } +} + +void sub_8037F34(void) +{ + if (!gPaletteFade.active) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + sub_800832C(); + gBattleBankFunc[gActiveBank] = sub_8037EF0; + } + else + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } + } +} + +void sub_8037FAC(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + LinkOpponentBufferExecCompleted(); +} + +void sub_8037FD8(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + LinkOpponentBufferExecCompleted(); +} + +void LinkOpponentBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = sub_803752C; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + void LinkOpponentHandleGetAttributes(void) { u8 buffer[0x100]; @@ -129,8 +588,8 @@ void LinkOpponentHandleGetAttributes(void) r4 >>= 1; } } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer); - dp01_tbl4_exec_completed(); + Emitcmd29(1, r6, buffer); + LinkOpponentBufferExecCompleted(); } u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) @@ -438,12 +897,12 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) return size; } -void sub_803889C(void) +void LinkOpponentHandlecmd1(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_80388A8(void) +void LinkOpponentHandleSetAttributes(void) { u8 i; u8 r4; @@ -462,7 +921,7 @@ void sub_80388A8(void) r4 >>= 1; } } - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } void sub_8038900(u8 a) @@ -681,7 +1140,7 @@ void sub_8038900(u8 a) } } -void sub_8039220(void) +void LinkOpponentHandlecmd3(void) { u8 *dst; u8 i; @@ -689,14 +1148,14 @@ void sub_8039220(void) dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) dst[i] = gBattleBufferA[gActiveBank][3 + i]; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039294(void) +void LinkOpponentHandleLoadPokeSprite(void) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -711,7 +1170,7 @@ void sub_8039294(void) gBattleBankFunc[gActiveBank] = sub_8037A74; } -void sub_80393E4(void) +void LinkOpponentHandleSendOutPoke(void) { gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; sub_8039430(gActiveBank, gBattleBufferA[gActiveBank][2]); @@ -726,7 +1185,7 @@ void sub_8039430(u8 a, u8 b) gBattlePartyID[a] = gBattleBufferA[a][1]; species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); gObjectBankIDs[a] = CreateSprite( &gUnknown_02024E8C, @@ -743,7 +1202,7 @@ void sub_8039430(u8 a, u8 b) gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFE); } -void sub_80395B4(void) +void LinkOpponentHandleReturnPokeToBall(void) { if (gBattleBufferA[gActiveBank][1] == 0) { @@ -756,7 +1215,7 @@ void sub_80395B4(void) DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); sub_8032A08(gActiveBank); sub_8043DB0(gHealthboxIDs[gActiveBank]); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } } @@ -765,7 +1224,7 @@ void sub_8039648(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -780,7 +1239,7 @@ void sub_8039648(void) } } -void sub_80396D0(void) +void LinkOpponentHandleTrainerThrow(void) { s16 xOffset; u32 gender; @@ -814,27 +1273,27 @@ void sub_80396D0(void) gBattleBankFunc[gActiveBank] = sub_803757C; } -void sub_80398A4(void) +void LinkOpponentHandleTrainerSlide(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_80398B0(void) +void LinkOpponentHandleTrainerSlideBack(void) { oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); gSprites[gObjectBankIDs[gActiveBank]].data0 = 35; gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_80375B4; } -void sub_803995C(void) +void LinkOpponentHandlecmd10(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -847,27 +1306,27 @@ void sub_803995C(void) } } -void sub_8039A00(void) +void LinkOpponentHandlecmd11(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039A0C(void) +void LinkOpponentHandlecmd12(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039A18(void) +void LinkOpponentHandleBallThrow(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039A24(void) +void LinkOpponentHandlePuase(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039A30(void) +void LinkOpponentHandleMoveAnimation(void) { if (!mplay_80342A4(gActiveBank)) { @@ -890,7 +1349,7 @@ void sub_8039A30(void) // Dead code. sub_8031720 always returns 0. if (sub_8031720(r0, gUnknown_0202F7C4) != 0) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } else { @@ -909,7 +1368,7 @@ void sub_8039B64(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -929,7 +1388,7 @@ void sub_8039B64(void) if (!gAnimScriptActive) { sub_80326EC(1); - if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; @@ -945,13 +1404,13 @@ void sub_8039B64(void) gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); ewram17810[gActiveBank].unk4 = 0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } break; } } -void sub_8039CC8(void) +void LinkOpponentHandlePrintString(void) { gUnknown_030042A4 = 0; gUnknown_030042A0 = 0; @@ -960,42 +1419,42 @@ void sub_8039CC8(void) gBattleBankFunc[gActiveBank] = sub_8037C2C; } -void sub_8039D2C(void) +void LinkOpponentHandlePrintStringPlayerOnly(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D38(void) +void LinkOpponentHandlecmd18(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D44(void) +void LinkOpponentHandlecmd19(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D50(void) +void LinkOpponentHandlecmd20(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D5C(void) +void LinkOpponentHandleOpenBag(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D68(void) +void LinkOpponentHandlecmd22(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D74(void) +void LinkOpponentHandlecmd23(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D80(void) +void LinkOpponentHandleHealthBarUpdate(void) { s16 r7; @@ -1017,12 +1476,12 @@ void sub_8039D80(void) gBattleBankFunc[gActiveBank] = sub_8037B24; } -void sub_8039E70(void) +void LinkOpponentHandleExpBarUpdate(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039E7C(void) +void LinkOpponentHandleStatusIconUpdate(void) { if (mplay_80342A4(gActiveBank) == 0) { @@ -1032,7 +1491,7 @@ void sub_8039E7C(void) } } -void sub_8039EF0(void) +void LinkOpponentHandleStatusAnimation(void) { if (mplay_80342A4(gActiveBank) == 0) { @@ -1046,80 +1505,80 @@ void sub_8039EF0(void) } } -void sub_8039F58(void) +void LinkOpponentHandleStatusXor(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F64(void) +void LinkOpponentHandlecmd29(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F70(void) +void LinkOpponentHandleDMATransfer(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F7C(void) +void LinkOpponentHandlecmd31(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F88(void) +void LinkOpponentHandlecmd32(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F94(void) +void LinkOpponentHandlecmd33(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FA0(void) +void LinkOpponentHandlecmd34(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FAC(void) +void LinkOpponentHandlecmd35(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FB8(void) +void LinkOpponentHandlecmd36(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FC4(void) +void LinkOpponentHandlecmd37(void) { gUnknown_020238C8.unk0_0 = 0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FE0(void) +void LinkOpponentHandlecmd38(void) { gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A018(void) +void LinkOpponentHandlecmd39(void) { gUnknown_020238C8.unk0_7 = 0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A030(void) +void LinkOpponentHandlecmd40(void) { gUnknown_020238C8.unk0_7 ^= 1; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void dp01t_29_4_blink(void) +void LinkOpponentHandleHitAnimation(void) { if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } else { @@ -1130,12 +1589,12 @@ void dp01t_29_4_blink(void) } } -void sub_803A0C8(void) +void LinkOpponentHandlecmd42(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A0D4(void) +void LinkOpponentHandleEffectivenessSound(void) { s8 pan; @@ -1144,31 +1603,31 @@ void sub_803A0D4(void) else pan = 63; PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A118(void) +void LinkOpponentHandlecmd44(void) { PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A148(void) +void LinkOpponentHandleFaintingCry(void) { PlayCry3( GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), 25, 5); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void dp01t_2E_4_battle_intro(void) +void LinkOpponentHandleIntroSlide(void) { sub_80E43C0(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A1B8(void) +void LinkOpponentHandleTrainerBallThrow(void) { u8 taskId; @@ -1177,7 +1636,7 @@ void sub_803A1B8(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8); taskId = CreateTask(sub_803A2C4, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -1219,11 +1678,11 @@ void sub_803A3A8(struct Sprite *sprite) DestroySprite(sprite); } -void sub_803A3DC(void) +void LinkOpponentHandlecmd48(void) { if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); return; } @@ -1256,33 +1715,33 @@ void sub_803A4E0(void) if (ewram17810[gActiveBank].unk5++ >= 93) { ewram17810[gActiveBank].unk5 = 0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } } -void sub_803A520(void) +void LinkOpponentHandlecmd49(void) { if (ewram17810[gActiveBank].unk0_0) gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A56C(void) +void LinkOpponentHandlecmd50(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A578(void) +void LinkOpponentHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank) != 0) + if (AnimBankSpriteExists(gActiveBank) != 0) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); } - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void bx_exec_buffer_A_ch0_tbl4(void) +void LinkOpponentHandleBattleAnimation(void) { if (mplay_80342A4(gActiveBank) == 0) { @@ -1290,23 +1749,23 @@ void bx_exec_buffer_A_ch0_tbl4(void) u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0) - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = sub_8037FD8; } } -void sub_803A640(void) +void LinkOpponentHandleLinkStandbyMsg(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A64C(void) +void LinkOpponentHandleResetActionMoveSelection(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A658(void) +void LinkOpponentHandlecmd55(void) { if (gBattleBufferA[gActiveBank][1] == 3) gBattleOutcome = gBattleBufferA[gActiveBank][1]; @@ -1314,10 +1773,10 @@ void sub_803A658(void) gBattleOutcome = gBattleBufferA[gActiveBank][1] ^ 3; FadeOutMapMusic(5); BeginFastPaletteFade(3); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); gBattleBankFunc[gActiveBank] = sub_8037F34; } -void nullsub_48(void) +void LinkOpponentHandlecmd56(void) { } diff --git a/src/battle_811DA74.c b/src/battle/battle_controller_linkpartner.c index 36a287efc..3e34b2e25 100644 --- a/src/battle_811DA74.c +++ b/src/battle/battle_controller_linkpartner.c @@ -64,10 +64,9 @@ extern u8 gUnknown_0300434C[]; extern u8 gBattleMonForms[]; extern u8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); -extern void (*const gLinkPartnerBufferCommands[])(void); extern u8 move_anim_start_t3(); -extern u8 sub_8078874(); +extern u8 AnimBankSpriteExists(); extern void sub_8044CA0(u8); extern void sub_8030E38(struct Sprite *); extern void sub_80E43C0(); @@ -83,16 +82,16 @@ extern void sub_80324BC(); extern u8 sub_8031720(); extern u8 mplay_80342A4(); extern void oamt_add_pos2_onto_pos1(); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void sub_8078B34(struct Sprite *); extern void sub_80105EC(struct Sprite *); extern s32 sub_803FC34(u16); -extern void sub_8031AF4(); +extern void LoadPlayerTrainerBankSprite(); extern void sub_80313A0(struct Sprite *); extern u8 sub_8046400(); extern void sub_80312F0(struct Sprite *); extern u8 CreateInvisibleSpriteWithCallback(); -extern void sub_80318FC(); +extern void BattleLoadPlayerMonSprite(); extern u8 sub_8077ABC(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); @@ -111,6 +110,8 @@ extern void sub_8031F88(); extern void sub_8141828(); extern void c2_8011A1C(void); +// this file's functions + void LinkPartnerBufferRunCommand(void); void sub_811E0A0(void); void LinkPartnerBufferExecCompleted(void); @@ -122,6 +123,127 @@ void sub_811FF30(void); void sub_812071C(u8); void sub_81208E0(void); +void LinkPartnerHandleGetAttributes(void); +void LinkPartnerHandlecmd1(void); +void LinkPartnerHandleSetAttributes(void); +void LinkPartnerHandlecmd3(void); +void LinkPartnerHandleLoadPokeSprite(void); +void LinkPartnerHandleSendOutPoke(void); +void LinkPartnerHandleReturnPokeToBall(void); +void LinkPartnerHandleTrainerThrow(void); +void LinkPartnerHandleTrainerSlide(void); +void LinkPartnerHandleTrainerSlideBack(void); +void LinkPartnerHandlecmd10(void); +void LinkPartnerHandlecmd11(void); +void LinkPartnerHandlecmd12(void); +void LinkPartnerHandleBallThrow(void); +void LinkPartnerHandlePuase(void); +void LinkPartnerHandleMoveAnimation(void); +void LinkPartnerHandlePrintString(void); +void LinkPartnerHandlePrintStringPlayerOnly(void); +void LinkPartnerHandlecmd18(void); +void LinkPartnerHandlecmd19(void); +void LinkPartnerHandlecmd20(void); +void LinkPartnerHandleOpenBag(void); +void LinkPartnerHandlecmd22(void); +void LinkPartnerHandlecmd23(void); +void LinkPartnerHandleHealthBarUpdate(void); +void LinkPartnerHandleExpBarUpdate(void); +void LinkPartnerHandleStatusIconUpdate(void); +void LinkPartnerHandleStatusAnimation(void); +void LinkPartnerHandleStatusXor(void); +void LinkPartnerHandlecmd29(void); +void LinkPartnerHandleDMATransfer(void); +void LinkPartnerHandlecmd31(void); +void LinkPartnerHandlecmd32(void); +void LinkPartnerHandlecmd33(void); +void LinkPartnerHandlecmd34(void); +void LinkPartnerHandlecmd35(void); +void LinkPartnerHandlecmd36(void); +void LinkPartnerHandlecmd37(void); +void LinkPartnerHandlecmd38(void); +void LinkPartnerHandlecmd39(void); +void LinkPartnerHandlecmd40(void); +void LinkPartnerHandleHitAnimation(void); +void LinkPartnerHandlecmd42(void); +void LinkPartnerHandleEffectivenessSound(void); +void LinkPartnerHandlecmd44(void); +void LinkPartnerHandleFaintingCry(void); +void LinkPartnerHandleIntroSlide(void); +void LinkPartnerHandleTrainerBallThrow(void); +void LinkPartnerHandlecmd48(void); +void LinkPartnerHandlecmd49(void); +void LinkPartnerHandlecmd50(void); +void LinkPartnerHandleSpriteInvisibility(void); +void LinkPartnerHandleBattleAnimation(void); +void LinkPartnerHandleLinkStandbyMsg(void); +void LinkPartnerHandleResetActionMoveSelection(void); +void LinkPartnerHandlecmd55(void); +void LinkPartnerHandlecmd56(void); + +// const data +typedef void (*BattleBufferCmd) (void); +static const BattleBufferCmd gLinkPartnerBufferCommands[] = +{ + LinkPartnerHandleGetAttributes, + LinkPartnerHandlecmd1, + LinkPartnerHandleSetAttributes, + LinkPartnerHandlecmd3, + LinkPartnerHandleLoadPokeSprite, + LinkPartnerHandleSendOutPoke, + LinkPartnerHandleReturnPokeToBall, + LinkPartnerHandleTrainerThrow, + LinkPartnerHandleTrainerSlide, + LinkPartnerHandleTrainerSlideBack, + LinkPartnerHandlecmd10, + LinkPartnerHandlecmd11, + LinkPartnerHandlecmd12, + LinkPartnerHandleBallThrow, + LinkPartnerHandlePuase, + LinkPartnerHandleMoveAnimation, + LinkPartnerHandlePrintString, + LinkPartnerHandlePrintStringPlayerOnly, + LinkPartnerHandlecmd18, + LinkPartnerHandlecmd19, + LinkPartnerHandlecmd20, + LinkPartnerHandleOpenBag, + LinkPartnerHandlecmd22, + LinkPartnerHandlecmd23, + LinkPartnerHandleHealthBarUpdate, + LinkPartnerHandleExpBarUpdate, + LinkPartnerHandleStatusIconUpdate, + LinkPartnerHandleStatusAnimation, + LinkPartnerHandleStatusXor, + LinkPartnerHandlecmd29, + LinkPartnerHandleDMATransfer, + LinkPartnerHandlecmd31, + LinkPartnerHandlecmd32, + LinkPartnerHandlecmd33, + LinkPartnerHandlecmd34, + LinkPartnerHandlecmd35, + LinkPartnerHandlecmd36, + LinkPartnerHandlecmd37, + LinkPartnerHandlecmd38, + LinkPartnerHandlecmd39, + LinkPartnerHandlecmd40, + LinkPartnerHandleHitAnimation, + LinkPartnerHandlecmd42, + LinkPartnerHandleEffectivenessSound, + LinkPartnerHandlecmd44, + LinkPartnerHandleFaintingCry, + LinkPartnerHandleIntroSlide, + LinkPartnerHandleTrainerBallThrow, + LinkPartnerHandlecmd48, + LinkPartnerHandlecmd49, + LinkPartnerHandlecmd50, + LinkPartnerHandleSpriteInvisibility, + LinkPartnerHandleBattleAnimation, + LinkPartnerHandleLinkStandbyMsg, + LinkPartnerHandleResetActionMoveSelection, + LinkPartnerHandlecmd55, + LinkPartnerHandlecmd56, +}; +// code starts here void nullsub_74(void) { @@ -298,7 +420,7 @@ void sub_811E034(void) { if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); gBattleBankFunc[gActiveBank] = sub_811E0A0; } @@ -379,7 +501,7 @@ void LinkPartnerBufferExecCompleted(void) if (gBattleTypeFlags & 2) { multiplayerId = GetMultiplayerId(); - dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId); + PrepareBufferDataTransferLink(2, 4, &multiplayerId); gBattleBufferA[gActiveBank][0] = 0x38; } else @@ -421,7 +543,7 @@ void LinkPartnerHandleGetAttributes(void) r4 >>= 1; } } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, unk); + Emitcmd29(1, r6, unk); LinkPartnerBufferExecCompleted(); } @@ -731,7 +853,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) return size; } -void sub_811EC04(void) +void LinkPartnerHandlecmd1(void) { LinkPartnerBufferExecCompleted(); } @@ -976,7 +1098,7 @@ void sub_811EC68(u8 a) sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } -void sub_811F664(void) +void LinkPartnerHandlecmd3(void) { u8 *dst; u8 i; @@ -987,9 +1109,9 @@ void sub_811F664(void) LinkPartnerBufferExecCompleted(); } -void sub_811F6D8(void) +void LinkPartnerHandleLoadPokeSprite(void) { - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C( GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), GetBankIdentity(gActiveBank)); @@ -1005,11 +1127,11 @@ void sub_811F6D8(void) gBattleBankFunc[gActiveBank] = sub_811DDE8; } -void sub_811F7F4(void) +void LinkPartnerHandleSendOutPoke(void) { sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattleBankFunc[gActiveBank] = sub_811E1BC; } @@ -1038,7 +1160,7 @@ void sub_811F864(u8 a, u8 b) gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFF); } -void sub_811F9D0(void) +void LinkPartnerHandleReturnPokeToBall(void) { if (gBattleBufferA[gActiveBank][1] == 0) { @@ -1059,7 +1181,7 @@ void sub_811FA5C(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -1074,7 +1196,7 @@ void sub_811FA5C(void) } } -void sub_811FAE4(void) +void LinkPartnerHandleTrainerThrow(void) { s16 xOffset; u32 gender; @@ -1092,7 +1214,7 @@ void sub_811FAE4(void) xOffset = 0; gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender; } - sub_8031AF4(gender, gActiveBank); + LoadPlayerTrainerBankSprite(gender, gActiveBank); GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -1105,27 +1227,27 @@ void sub_811FAE4(void) gBattleBankFunc[gActiveBank] = sub_811DAE4; } -void sub_811FC30(void) +void LinkPartnerHandleTrainerSlide(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FC3C(void) +void LinkPartnerHandleTrainerSlideBack(void) { oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); gSprites[gObjectBankIDs[gActiveBank]].data0 = 35; gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_811DB1C; } -void sub_811FCE8(void) +void LinkPartnerHandlecmd10(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -1141,27 +1263,27 @@ void sub_811FCE8(void) } } -void sub_811FDCC(void) +void LinkPartnerHandlecmd11(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FDD8(void) +void LinkPartnerHandlecmd12(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FDE4(void) +void LinkPartnerHandleBallThrow(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FDF0(void) +void LinkPartnerHandlePuase(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FDFC(void) +void LinkPartnerHandleMoveAnimation(void) { if (!mplay_80342A4(gActiveBank)) { @@ -1200,7 +1322,7 @@ void sub_811FF30(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -1220,7 +1342,7 @@ void sub_811FF30(void) if (!gAnimScriptActive) { sub_80326EC(1); - if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; @@ -1242,7 +1364,7 @@ void sub_811FF30(void) } } -void sub_8120094(void) +void LinkPartnerHandlePrintString(void) { gUnknown_030042A4 = 0; gUnknown_030042A0 = 0; @@ -1251,37 +1373,37 @@ void sub_8120094(void) gBattleBankFunc[gActiveBank] = sub_811DFA0; } -void sub_81200F8(void) +void LinkPartnerHandlePrintStringPlayerOnly(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120104(void) +void LinkPartnerHandlecmd18(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120110(void) +void LinkPartnerHandlecmd19(void) { LinkPartnerBufferExecCompleted(); } -void sub_812011C(void) +void LinkPartnerHandlecmd20(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120128(void) +void LinkPartnerHandleOpenBag(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120134(void) +void LinkPartnerHandlecmd22(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120140(void) +void LinkPartnerHandlecmd23(void) { LinkPartnerBufferExecCompleted(); } @@ -1337,70 +1459,70 @@ void LinkPartnerHandleStatusAnimation(void) } } -void sub_8120324(void) +void LinkPartnerHandleStatusXor(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120330(void) +void LinkPartnerHandlecmd29(void) { LinkPartnerBufferExecCompleted(); } -void sub_812033C(void) +void LinkPartnerHandleDMATransfer(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120348(void) +void LinkPartnerHandlecmd31(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120354(void) +void LinkPartnerHandlecmd32(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120360(void) +void LinkPartnerHandlecmd33(void) { LinkPartnerBufferExecCompleted(); } -void sub_812036C(void) +void LinkPartnerHandlecmd34(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120378(void) +void LinkPartnerHandlecmd35(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120384(void) +void LinkPartnerHandlecmd36(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120390(void) +void LinkPartnerHandlecmd37(void) { gUnknown_020238C8.unk0_0 = 0; LinkPartnerBufferExecCompleted(); } -void sub_81203AC(void) +void LinkPartnerHandlecmd38(void) { gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; LinkPartnerBufferExecCompleted(); } -void sub_81203E4(void) +void LinkPartnerHandlecmd39(void) { gUnknown_020238C8.unk0_7 = 0; LinkPartnerBufferExecCompleted(); } -void sub_81203FC(void) +void LinkPartnerHandlecmd40(void) { gUnknown_020238C8.unk0_7 ^= 1; LinkPartnerBufferExecCompleted(); @@ -1421,7 +1543,7 @@ void LinkPartnerHandleHitAnimation(void) } } -void sub_8120494(void) +void LinkPartnerHandlecmd42(void) { LinkPartnerBufferExecCompleted(); } @@ -1438,7 +1560,7 @@ void LinkPartnerHandleEffectivenessSound(void) LinkPartnerBufferExecCompleted(); } -void sub_81204E4(void) +void LinkPartnerHandlecmd44(void) { PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); LinkPartnerBufferExecCompleted(); @@ -1452,14 +1574,14 @@ void LinkPartnerHandleFaintingCry(void) LinkPartnerBufferExecCompleted(); } -void dp01t_2E_3_battle_intro(void) +void LinkPartnerHandleIntroSlide(void) { sub_80E43C0(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; LinkPartnerBufferExecCompleted(); } -void sub_8120588(void) +void LinkPartnerHandleTrainerBallThrow(void) { u8 r4; u8 taskId; @@ -1470,7 +1592,7 @@ void sub_8120588(void) gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); r4 = AllocSpritePalette(0xD6F9); LoadCompressedPalette( @@ -1508,7 +1630,7 @@ void sub_812071C(u8 taskId) sub_811F864(gActiveBank, 0); gActiveBank ^= 2; gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_811F864(gActiveBank, 0); gActiveBank ^= 2; } @@ -1517,7 +1639,7 @@ void sub_812071C(u8 taskId) DestroyTask(taskId); } -void dp01t_30_3_80EB11C(void) +void LinkPartnerHandlecmd48(void) { if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) { @@ -1546,21 +1668,21 @@ void sub_81208E0(void) } } -void sub_8120920(void) +void LinkPartnerHandlecmd49(void) { if (ewram17810[gActiveBank].unk0_0) gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; LinkPartnerBufferExecCompleted(); } -void sub_812096C(void) +void LinkPartnerHandlecmd50(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120978(void) +void LinkPartnerHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank) != 0) + if (AnimBankSpriteExists(gActiveBank) != 0) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); @@ -1568,7 +1690,7 @@ void sub_8120978(void) LinkPartnerBufferExecCompleted(); } -void sub_81209D8(void) +void LinkPartnerHandleBattleAnimation(void) { if (mplay_80342A4(gActiveBank) == 0) { @@ -1582,17 +1704,17 @@ void sub_81209D8(void) } } -void sub_8120A40(void) +void LinkPartnerHandleLinkStandbyMsg(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120A4C(void) +void LinkPartnerHandleResetActionMoveSelection(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120A58(void) +void LinkPartnerHandlecmd55(void) { gBattleOutcome = gBattleBufferA[gActiveBank][1]; FadeOutMapMusic(5); @@ -1601,6 +1723,6 @@ void sub_8120A58(void) gBattleBankFunc[gActiveBank] = sub_811E29C; } -void nullsub_75(void) +void LinkPartnerHandlecmd56(void) { } diff --git a/src/battle_8.c b/src/battle/battle_controller_opponent.c index 75f10c4b1..72b56b962 100644 --- a/src/battle_8.c +++ b/src/battle/battle_controller_opponent.c @@ -1,15 +1,19 @@ #include "global.h" #include "battle.h" -#include "battle_ai.h" #include "battle_interface.h" #include "data2.h" -#include "graphics.h" +#include "battle_811DA74.h" +#include "battle_anim_813F0F4.h" +#include "link.h" +#include "m4a.h" #include "main.h" +#include "palette.h" +#include "pokeball.h" #include "pokemon.h" -#include "rng.h" #include "rom3.h" -#include "songs.h" +#include "rom_8077ABC.h" #include "sound.h" +#include "songs.h" #include "sprite.h" #include "string_util.h" #include "task.h" @@ -53,12 +57,17 @@ extern bool8 gDoingBattleAnim; extern u16 gUnknown_02024DE8; extern u8 gUnknown_02024E68[]; extern MainCallback gPreBattleCallback1; +extern void (*const gOpponentBufferCommands[])(void); +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u32 gBattleExecBuffer; extern u8 sub_8077ABC(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); extern void sub_8033018(void); -extern void sub_8031794(); +extern void BattleLoadOpponentMonSprite(); extern u8 GetBankIdentity(u8); extern void sub_8032984(u8, u16); extern void sub_80333D4(void); @@ -76,7 +85,7 @@ extern void sub_8032B84(void); extern void sub_8078B34(struct Sprite *); extern void sub_8032BBC(void); extern void oamt_add_pos2_onto_pos1(); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void sub_803311C(void); extern void sub_8010384(struct Sprite *); extern bool8 mplay_80342A4(u8); @@ -104,11 +113,14 @@ extern void nullsub_45(void); extern void sub_8031B74(); extern bool8 IsDoubleBattle(void); extern void sub_8032E2C(void); -extern u8 sub_8078874(); +extern u8 AnimBankSpriteExists(); extern u8 move_anim_start_t3(); extern void sub_80334C0(void); -extern void OpponentBufferExecCompleted(void); +// this file's functions + +void OpponentBufferExecCompleted(void); +void OpponentBufferRunCommand(void); u32 sub_8033598(u8, u8 *); void sub_8033E24(u8); void sub_803495C(u8, u8); @@ -117,6 +129,407 @@ void sub_8035238(void); void sub_8035C10(struct Sprite *); void sub_8035C44(u8); void sub_8035E2C(void); +void sub_80332D0(void); + +void OpponentHandleGetAttributes(void); +void OpponentHandlecmd1(void); +void OpponentHandleSetAttributes(void); +void OpponentHandlecmd3(void); +void OpponentHandleLoadPokeSprite(void); +void OpponentHandleSendOutPoke(void); +void OpponentHandleReturnPokeToBall(void); +void OpponentHandleTrainerThrow(void); +void OpponentHandleTrainerSlide(void); +void OpponentHandleTrainerSlideBack(void); +void OpponentHandlecmd10(void); +void OpponentHandlecmd11(void); +void OpponentHandlecmd12(void); +void OpponentHandleBallThrow(void); +void OpponentHandlePuase(void); +void OpponentHandleMoveAnimation(void); +void OpponentHandlePrintString(void); +void OpponentHandlePrintStringPlayerOnly(void); +void OpponentHandlecmd18(void); +void OpponentHandlecmd19(void); +void OpponentHandlecmd20(void); +void OpponentHandleOpenBag(void); +void OpponentHandlecmd22(void); +void OpponentHandlecmd23(void); +void OpponentHandleHealthBarUpdate(void); +void OpponentHandleExpBarUpdate(void); +void OpponentHandleStatusIconUpdate(void); +void OpponentHandleStatusAnimation(void); +void OpponentHandleStatusXor(void); +void OpponentHandlecmd29(void); +void OpponentHandleDMATransfer(void); +void OpponentHandlecmd31(void); +void OpponentHandlecmd32(void); +void OpponentHandlecmd33(void); +void OpponentHandlecmd34(void); +void OpponentHandlecmd35(void); +void OpponentHandlecmd36(void); +void OpponentHandlecmd37(void); +void OpponentHandlecmd38(void); +void OpponentHandlecmd39(void); +void OpponentHandlecmd40(void); +void OpponentHandleHitAnimation(void); +void OpponentHandlecmd42(void); +void OpponentHandleEffectivenessSound(void); +void OpponentHandlecmd44(void); +void OpponentHandleFaintingCry(void); +void OpponentHandleIntroSlide(void); +void OpponentHandleTrainerBallThrow(void); +void OpponentHandlecmd48(void); +void OpponentHandlecmd49(void); +void OpponentHandlecmd50(void); +void OpponentHandleSpriteInvisibility(void); +void OpponentHandleBattleAnimation(void); +void OpponentHandleLinkStandbyMsg(void); +void OpponentHandleResetActionMoveSelection(void); +void OpponentHandlecmd55(void); +void OpponentHandlecmd56(void); + +// const data +typedef void (*BattleBufferCmd) (void); +static const BattleBufferCmd gOpponentBufferCommands[] = +{ + OpponentHandleGetAttributes, + OpponentHandlecmd1, + OpponentHandleSetAttributes, + OpponentHandlecmd3, + OpponentHandleLoadPokeSprite, + OpponentHandleSendOutPoke, + OpponentHandleReturnPokeToBall, + OpponentHandleTrainerThrow, + OpponentHandleTrainerSlide, + OpponentHandleTrainerSlideBack, + OpponentHandlecmd10, + OpponentHandlecmd11, + OpponentHandlecmd12, + OpponentHandleBallThrow, + OpponentHandlePuase, + OpponentHandleMoveAnimation, + OpponentHandlePrintString, + OpponentHandlePrintStringPlayerOnly, + OpponentHandlecmd18, + OpponentHandlecmd19, + OpponentHandlecmd20, + OpponentHandleOpenBag, + OpponentHandlecmd22, + OpponentHandlecmd23, + OpponentHandleHealthBarUpdate, + OpponentHandleExpBarUpdate, + OpponentHandleStatusIconUpdate, + OpponentHandleStatusAnimation, + OpponentHandleStatusXor, + OpponentHandlecmd29, + OpponentHandleDMATransfer, + OpponentHandlecmd31, + OpponentHandlecmd32, + OpponentHandlecmd33, + OpponentHandlecmd34, + OpponentHandlecmd35, + OpponentHandlecmd36, + OpponentHandlecmd37, + OpponentHandlecmd38, + OpponentHandlecmd39, + OpponentHandlecmd40, + OpponentHandleHitAnimation, + OpponentHandlecmd42, + OpponentHandleEffectivenessSound, + OpponentHandlecmd44, + OpponentHandleFaintingCry, + OpponentHandleIntroSlide, + OpponentHandleTrainerBallThrow, + OpponentHandlecmd48, + OpponentHandlecmd49, + OpponentHandlecmd50, + OpponentHandleSpriteInvisibility, + OpponentHandleBattleAnimation, + OpponentHandleLinkStandbyMsg, + OpponentHandleResetActionMoveSelection, + OpponentHandlecmd55, + OpponentHandlecmd56, +}; + +static const u8 sUnknownBytes[] = {0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20}; + +// code + +void nullsub_45(void) +{ +} + +void SetBankFuncToOpponentBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand; +} + +void OpponentBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] <= 0x38) + gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + OpponentBufferExecCompleted(); + } +} + +void sub_8032B4C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + OpponentBufferExecCompleted(); +} + +// Duplicate of sub_8032B4C +void sub_8032B84(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + OpponentBufferExecCompleted(); +} + +void sub_8032BBC(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam); + gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5; + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + OpponentBufferExecCompleted(); + } +} + +void sub_8032C4C(void) +{ + if ((--ewram17810[gActiveBank].unk9) == 0xFF) + { + ewram17810[gActiveBank].unk9 = 0; + OpponentBufferExecCompleted(); + } +} + +void sub_8032C88(void) +{ + bool8 r6 = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + else + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + r6 = FALSE; + + if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + m4aMPlayContinue(&gMPlay_BGM); + else + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + ewram17810[gActiveBank].unk9 = 3; + gBattleBankFunc[gActiveBank] = sub_8032C4C; + } +} + +void sub_8032E2C(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]); + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank ^ 2], + &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], + 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + sub_8032984( + gActiveBank ^ 2, + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES)); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gEnemyParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8032984( + gActiveBank, + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_8032C88; + } +} + +void sub_8033018(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE + && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + { + if (!ewram17810[gActiveBank].unk0_7) + { + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + return; + } + if (ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + OpponentBufferExecCompleted(); + return; + } + } +} + +void sub_80330C8(void) +{ + s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + else + OpponentBufferExecCompleted(); +} + +void sub_803311C(void) +{ + if (!gSprites[gObjectBankIDs[gActiveBank]].inUse) + { + sub_8043DB0(gHealthboxIDs[gActiveBank]); + OpponentBufferExecCompleted(); + } +} + +void sub_8033160(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8032A08(gActiveBank); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + OpponentBufferExecCompleted(); + } +} + +void sub_80331D0(void) +{ + if (gUnknown_03004210.state == 0) + OpponentBufferExecCompleted(); +} + +void bx_blink_t7(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = 0; + OpponentBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_8033264(void) +{ + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + gBattleBankFunc[gActiveBank] = sub_80332D0; + } +} + +void sub_80332D0(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + CreateTask(c3_0802FDF4, 10); + OpponentBufferExecCompleted(); + } +} + +void sub_8033308(void) +{ + if (ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gEnemyParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8031F88(gActiveBank); + gBattleBankFunc[gActiveBank] = sub_8033264; + } +} + +void sub_80333D4(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy + && !ewram17810[gActiveBank].unk0_3) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + gBattleBankFunc[gActiveBank] = sub_8033308; + } +} + +void sub_8033494(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + OpponentBufferExecCompleted(); +} + +void sub_80334C0(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + OpponentBufferExecCompleted(); +} + +void OpponentBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand; + gBattleExecBuffer &= ~gBitTable[gActiveBank]; +} void OpponentHandleGetAttributes(void) { @@ -139,7 +552,7 @@ void OpponentHandleGetAttributes(void) r4 >>= 1; } } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer); + Emitcmd29(1, r6, buffer); OpponentBufferExecCompleted(); } @@ -448,7 +861,7 @@ u32 sub_8033598(u8 a, u8 *buffer) return size; } -void dp01t_01_2_read_pokmon_data_slice(void) +void OpponentHandlecmd1(void) { struct BattlePokemon buffer; u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; @@ -457,7 +870,7 @@ void dp01t_01_2_read_pokmon_data_slice(void) for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) dst[i] = src[i]; - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst); + Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst); OpponentBufferExecCompleted(); } @@ -699,7 +1112,7 @@ void sub_8033E24(u8 a) } } -void sub_8034744(void) +void OpponentHandlecmd3(void) { u8 *dst; u8 i; @@ -714,7 +1127,7 @@ void OpponentHandleLoadPokeSprite(void) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -746,7 +1159,7 @@ void sub_803495C(u8 a, u8 b) gBattlePartyID[a] = gBattleBufferA[a][1]; species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); gObjectBankIDs[a] = CreateSprite( &gUnknown_02024E8C, @@ -785,7 +1198,7 @@ void sub_8034B74(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -868,15 +1281,15 @@ void OpponentHandleTrainerSlideBack(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_8032BBC; } -void sub_8035030(void) +void OpponentHandlecmd10(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -889,12 +1302,12 @@ void sub_8035030(void) } } -void sub_80350D4(void) +void OpponentHandlecmd11(void) { OpponentBufferExecCompleted(); } -void sub_80350E0(void) +void OpponentHandlecmd12(void) { OpponentBufferExecCompleted(); } @@ -904,7 +1317,7 @@ void OpponentHandleBallThrow(void) OpponentBufferExecCompleted(); } -void OpponentHandlePause(void) +void OpponentHandlePuase(void) { OpponentBufferExecCompleted(); } @@ -951,7 +1364,7 @@ void sub_8035238(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -971,7 +1384,7 @@ void sub_8035238(void) if (!gAnimScriptActive) { sub_80326EC(1); - if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; @@ -1007,19 +1420,19 @@ void OpponentHandlePrintStringPlayerOnly(void) OpponentBufferExecCompleted(); } -void sub_803540C(void) +void OpponentHandlecmd18(void) { sub_8036B0C(); OpponentBufferExecCompleted(); } -void sub_803541C(void) +void OpponentHandlecmd19(void) { OpponentBufferExecCompleted(); } #ifdef NONMATCHING -void sub_8035428(void) +void OpponentHandlecmd20(void) { u16 r4; // Needed to match closer @@ -1032,10 +1445,10 @@ void sub_8035428(void) switch (r4) { case 5: - dp01_build_cmdbuf_x21_a_bb(1, 4, 0); + Emitcmd33(1, 4, 0); break; case 4: - dp01_build_cmdbuf_x21_a_bb(1, 3, 0); + Emitcmd33(1, 3, 0); break; default: if (gBattleMoves[r5->moves[r4]].target & 0x12) @@ -1047,7 +1460,7 @@ void sub_8035428(void) gBankTarget = GetBankByPlayerAI(2); } r4 |= gBankTarget << 8; - dp01_build_cmdbuf_x21_a_bb(1, 10, r4); + Emitcmd33(1, 10, r4); break; } OpponentBufferExecCompleted(); @@ -1066,26 +1479,26 @@ void sub_8035428(void) if (gBattleMoves[r2].target & 0x12) { r4 |= gActiveBank << 8; - dp01_build_cmdbuf_x21_a_bb(1, 10, r4); + Emitcmd33(1, 10, r4); } else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { u16 r2 = GetBankByPlayerAI(Random() & 2) << 8; - dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2); + Emitcmd33(1, 10, r4 | r2); } else { u16 r2 = GetBankByPlayerAI(0) << 8; - dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2); + Emitcmd33(1, 10, r4 | r2); } OpponentBufferExecCompleted(); } } #else __attribute__((naked)) -void sub_8035428(void) +void OpponentHandlecmd20(void) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ @@ -1121,7 +1534,7 @@ _08035468:\n\ movs r1, 0x3\n\ _0803546C:\n\ movs r2, 0\n\ - bl dp01_build_cmdbuf_x21_a_bb\n\ + bl Emitcmd33\n\ b _080354E0\n\ _08035474:\n\ ldr r3, _080354E8 @ =gBattleMoves\n\ @@ -1176,7 +1589,7 @@ _080354CE:\n\ movs r0, 0x1\n\ movs r1, 0xA\n\ adds r2, r4, 0\n\ - bl dp01_build_cmdbuf_x21_a_bb\n\ + bl Emitcmd33\n\ _080354E0:\n\ bl OpponentBufferExecCompleted\n\ b _0803558A\n\ @@ -1213,7 +1626,7 @@ _080354FA:\n\ movs r0, 0x1\n\ movs r1, 0xA\n\ adds r2, r4, 0\n\ - bl dp01_build_cmdbuf_x21_a_bb\n\ + bl Emitcmd33\n\ b _08035586\n\ .align 2, 0\n\ _08035534: .4byte gBattleMoves\n\ @@ -1238,7 +1651,7 @@ _0803553C:\n\ orrs r2, r4\n\ movs r0, 0x1\n\ movs r1, 0xA\n\ - bl dp01_build_cmdbuf_x21_a_bb\n\ + bl Emitcmd33\n\ b _08035586\n\ .align 2, 0\n\ _0803556C: .4byte gBattleTypeFlags\n\ @@ -1251,7 +1664,7 @@ _08035570:\n\ orrs r2, r4\n\ movs r0, 0x1\n\ movs r1, 0xA\n\ - bl dp01_build_cmdbuf_x21_a_bb\n\ + bl Emitcmd33\n\ _08035586:\n\ bl OpponentBufferExecCompleted\n\ _0803558A:\n\ @@ -1262,14 +1675,14 @@ _0803558A:\n\ } #endif -void sub_8035590(void) +void OpponentHandleOpenBag(void) { // What is this? - dp01_build_cmdbuf_x23_aa_0(1, ewram[0x160D4 + gActiveBank / 2 * 2]); + Emitcmd35(1, ewram[0x160D4 + gActiveBank / 2 * 2]); OpponentBufferExecCompleted(); } -void sub_80355C0(void) +void OpponentHandlecmd22(void) { s32 r4; @@ -1306,11 +1719,11 @@ void sub_80355C0(void) ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] = 6; } ewram[0x16068 + gActiveBank] = r4; - dp01_build_cmdbuf_x22_a_three_bytes(1, r4, 0); + Emitcmd34(1, r4, 0); OpponentBufferExecCompleted(); } -void sub_80356C0(void) +void OpponentHandlecmd23(void) { OpponentBufferExecCompleted(); } @@ -1371,7 +1784,7 @@ void OpponentHandleStatusXor(void) OpponentBufferExecCompleted(); } -void sub_80358B0(void) +void OpponentHandlecmd29(void) { OpponentBufferExecCompleted(); } @@ -1381,55 +1794,55 @@ void OpponentHandleDMATransfer(void) OpponentBufferExecCompleted(); } -void sub_80358C8(void) +void OpponentHandlecmd31(void) { OpponentBufferExecCompleted(); } -void sub_80358D4(void) +void OpponentHandlecmd32(void) { OpponentBufferExecCompleted(); } -void sub_80358E0(void) +void OpponentHandlecmd33(void) { OpponentBufferExecCompleted(); } -void sub_80358EC(void) +void OpponentHandlecmd34(void) { OpponentBufferExecCompleted(); } -void sub_80358F8(void) +void OpponentHandlecmd35(void) { OpponentBufferExecCompleted(); } -void sub_8035904(void) +void OpponentHandlecmd36(void) { OpponentBufferExecCompleted(); } -void sub_8035910(void) +void OpponentHandlecmd37(void) { gUnknown_020238C8.unk0_0 = 0; OpponentBufferExecCompleted(); } -void sub_803592C(void) +void OpponentHandlecmd38(void) { gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; OpponentBufferExecCompleted(); } -void sub_8035964(void) +void OpponentHandlecmd39(void) { gUnknown_020238C8.unk0_7 = 0; OpponentBufferExecCompleted(); } -void sub_803597C(void) +void OpponentHandlecmd40(void) { gUnknown_020238C8.unk0_7 ^= 1; OpponentBufferExecCompleted(); @@ -1450,7 +1863,7 @@ void OpponentHandleHitAnimation(void) } } -void sub_8035A14(void) +void OpponentHandlecmd42(void) { OpponentBufferExecCompleted(); } @@ -1467,7 +1880,7 @@ void OpponentHandleEffectivenessSound(void) OpponentBufferExecCompleted(); } -void sub_8035A64(void) +void OpponentHandlecmd44(void) { PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); OpponentBufferExecCompleted(); @@ -1481,14 +1894,14 @@ void OpponentHandleFaintingCry(void) OpponentBufferExecCompleted(); } -void dp01t_2E_7_battle_intro(void) +void OpponentHandleIntroSlide(void) { sub_80E43C0(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; OpponentBufferExecCompleted(); } -void sub_8035B04(void) +void OpponentHandleTrainerBallThrow(void) { u8 taskId; @@ -1497,7 +1910,7 @@ void sub_8035B04(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10); taskId = CreateTask(sub_8035C44, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -1539,7 +1952,7 @@ void sub_8035C44(u8 taskId) DestroyTask(taskId); } -void dp01t_30_7_0803D67C(void) +void OpponentHandlecmd48(void) { if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) { @@ -1580,21 +1993,21 @@ void sub_8035E2C(void) } } -void sub_8035E6C(void) +void OpponentHandlecmd49(void) { if (ewram17810[gActiveBank].unk0_0) gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; OpponentBufferExecCompleted(); } -void sub_8035EB8(void) +void OpponentHandlecmd50(void) { OpponentBufferExecCompleted(); } void OpponentHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank) != 0) + if (AnimBankSpriteExists(gActiveBank) != 0) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); @@ -1626,7 +2039,7 @@ void OpponentHandleResetActionMoveSelection(void) OpponentBufferExecCompleted(); } -void sub_8035FA4(void) +void OpponentHandlecmd55(void) { if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD)) { @@ -1637,6 +2050,6 @@ void sub_8035FA4(void) OpponentBufferExecCompleted(); } -void nullsub_46(void) +void OpponentHandlecmd56(void) { } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c new file mode 100644 index 000000000..53b596c5e --- /dev/null +++ b/src/battle/battle_controller_player.c @@ -0,0 +1,3066 @@ +#include "global.h" +#include "data2.h" +#include "battle.h" +#include "battle_interface.h" +#include "battle_message.h" +#include "item.h" +#include "items.h" +#include "link.h" +#include "m4a.h" +#include "main.h" +#include "menu_cursor.h" +#include "moves.h" +#include "palette.h" +#include "pokemon.h" +#include "rom3.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "util.h" + +//Possibly PokemonSubstruct1 +struct UnknownStruct3 +{ + u16 moves[4]; + u8 pp[4]; + u8 ppBonuses; +}; + +#if ENGLISH +#define SUB_803037C_TILE_DATA_OFFSET 440 +#elif GERMAN +#define SUB_803037C_TILE_DATA_OFFSET 444 +#endif + +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042A0; + +extern struct Window gUnknown_03004210; + +extern void (*gBattleBankFunc[])(void); + +extern u8 gActiveBank; +extern u8 gActionSelectionCursor[]; +extern u8 gDisplayedStringBattle[]; +extern u8 gMoveSelectionCursor[]; +extern u8 gBattleBufferA[][0x200]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[]; +extern u8 gHealthboxIDs[]; +extern u8 gDoingBattleAnim; +extern u8 gObjectBankIDs[]; +extern u16 gBattleTypeFlags; +extern u8 gBattleOutcome; +extern void (*gAnimScriptCallback)(void); +extern bool8 gAnimScriptActive; +extern u16 gMovePowerMoveAnim; +extern u32 gMoveDmgMoveAnim; +extern u8 gHappinessMoveAnim; +extern u16 gWeatherMoveAnim; +extern u32 *gDisableStructMoveAnim; +extern u32 gPID_perBank[]; +extern u8 gBattleMonForms[]; +extern u16 gUnknown_02024DE8; +extern u8 gUnknown_02024E68[]; +extern struct SpriteTemplate gUnknown_02024E8C; +extern u8 gUnknown_0202F7C4; +extern u8 gUnknown_02038470[]; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u8 gUnknown_03004344; +extern u8 gUnknown_0300434C[]; + +extern const u8 gUnknown_08400CA8[]; +extern const u8 gUnknown_08400CF3[]; +extern const u8 gUnknown_08400D38[]; + +extern void sub_802C68C(void); +extern void sub_802E1B0(void); +extern void sub_802E220(); +extern void sub_802E2D4(); +extern void sub_802E004(void); +extern void sub_802DF30(void); +extern void BattleMusicStop(void); +extern void PlayerBufferExecCompleted(void); +extern void bx_t1_healthbar_update(void); +extern void nullsub_91(void); +extern void sub_802D924(u8); +extern void sub_802E434(void); +extern bool8 mplay_80342A4(u8); +extern void move_anim_start_t2_for_situation(); +extern void bx_blink_t1(void); +extern void sub_8047858(); +extern u8 GetBankSide(u8); +extern void sub_80E43C0(); +extern void oamt_add_pos2_onto_pos1(); +extern void sub_8078B34(struct Sprite *); +extern void StoreSpriteCallbackInData6(); +extern void BattleLoadPlayerMonSprite(); +extern bool8 IsDoubleBattle(void); +extern void sub_802D500(void); +extern bool8 AnimBankSpriteExists(u8); +extern bool8 move_anim_start_t3(); +extern void sub_802E460(void); +extern void b_link_standby_message(void); +extern void sub_802D18C(void); +extern void sub_802DF18(void); +extern void BufferStringBattle(); +extern void sub_80326EC(); +extern void ExecuteMoveAnim(); +extern void sub_8031F24(void); +extern void sub_80324BC(); +extern u8 sub_8031720(); +extern void bx_wait_t1(void); +extern u8 GetBankByPlayerAI(u8); +extern void sub_802DE10(void); +extern void sub_80105EC(struct Sprite *); +extern void sub_802D274(void); +extern void sub_802D23C(void); +extern u8 GetBankIdentity(u8); +extern void LoadPlayerTrainerBankSprite(); +extern void sub_80313A0(struct Sprite *); +extern void sub_802D204(void); +extern u8 sub_8079E90(); +extern void sub_802DEAC(void); +extern void sub_80312F0(struct Sprite *); +extern u8 sub_8077ABC(); +extern u8 sub_8077F68(); +extern u8 sub_8046400(); +extern void sub_802D798(void); +extern void bx_0802E404(void); +extern u8 gActiveBank; +extern void (*gBattleBankFunc[])(void); +extern bool8 gDoingBattleAnim; +extern u16 gBattleTypeFlags; +extern u32 gBattleExecBuffer; +extern u8 gBattleBufferA[][0x200]; +extern u8 gObjectBankIDs[]; +extern u8 gActionSelectionCursor[]; +extern u8 gMoveSelectionCursor[]; +extern u8 gAbsentBankFlags; +extern u8 gUnknown_03004344; +extern u8 gNoOfAllBanks; +extern u16 gBattlePartyID[]; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern struct Window gUnknown_03004210; +extern const u8 gUnknown_08400D89[]; +extern u8 gUnknown_03004348; +extern struct BattlePokemon gBattleMons[]; +extern MainCallback gPreBattleCallback1; +extern u8 gHealthboxIDs[]; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gUnknown_0300434C[]; +extern u8 gUnknown_0202E8F4; +extern u8 gUnknown_0202E8F5; +extern u8 gUnknown_02038470[]; +extern u16 gScriptItemId; +extern u8 gDisplayedStringBattle[]; +extern const u8 gUnknown_08400CE0[]; + +extern void dp11b_obj_instanciate(u8, u8, s8, s8); +extern u8 GetBankIdentity(u8); +extern u8 GetBankByPlayerAI(u8); +extern void dp11b_obj_free(u8, u8); +extern void sub_8010520(struct Sprite *); +extern void sub_8010574(struct Sprite *); +extern bool8 IsDoubleBattle(); +extern void sub_804777C(); +extern void sub_8141828(); +extern void sub_8094E20(u8); +extern void nullsub_14(void); +extern void sub_80A6DCC(void); +extern void ReshowBattleScreenAfterMenu(void); + +void PlayerHandleGetAttributes(void); +void PlayerHandlecmd1(void); +void PlayerHandleSetAttributes(void); +void PlayerHandlecmd3(void); +void PlayerHandleLoadPokeSprite(void); +void PlayerHandleSendOutPoke(void); +void PlayerHandleReturnPokeToBall(void); +void PlayerHandleTrainerThrow(void); +void PlayerHandleTrainerSlide(void); +void PlayerHandleTrainerSlideBack(void); +void PlayerHandlecmd10(void); +void PlayerHandlecmd11(void); +void PlayerHandlecmd12(void); +void PlayerHandleBallThrow(void); +void PlayerHandlePuase(void); +void PlayerHandleMoveAnimation(void); +void PlayerHandlePrintString(void); +void PlayerHandlePrintStringPlayerOnly(void); +void PlayerHandlecmd18(void); +void PlayerHandlecmd19(void); +void PlayerHandlecmd20(void); +void PlayerHandleOpenBag(void); +void PlayerHandlecmd22(void); +void PlayerHandlecmd23(void); +void PlayerHandleHealthBarUpdate(void); +void PlayerHandleExpBarUpdate(void); +void PlayerHandleStatusIconUpdate(void); +void PlayerHandleStatusAnimation(void); +void PlayerHandleStatusXor(void); +void PlayerHandlecmd29(void); +void PlayerHandleDMATransfer(void); +void PlayerHandlecmd31(void); +void PlayerHandlecmd32(void); +void PlayerHandlecmd33(void); +void PlayerHandlecmd34(void); +void PlayerHandlecmd35(void); +void PlayerHandlecmd36(void); +void PlayerHandlecmd37(void); +void PlayerHandlecmd38(void); +void PlayerHandlecmd39(void); +void PlayerHandlecmd40(void); +void PlayerHandleHitAnimation(void); +void PlayerHandlecmd42(void); +void PlayerHandleEffectivenessSound(void); +void PlayerHandlecmd44(void); +void PlayerHandleFaintingCry(void); +void PlayerHandleIntroSlide(void); +void PlayerHandleTrainerBallThrow(void); +void PlayerHandlecmd48(void); +void PlayerHandlecmd49(void); +void PlayerHandlecmd50(void); +void PlayerHandleSpriteInvisibility(void); +void PlayerHandleBattleAnimation(void); +void PlayerHandleLinkStandbyMsg(void); +void PlayerHandleResetActionMoveSelection(void); +void PlayerHandlecmd55(void); +void PlayerHandlecmd56(void); + +const u8 gString_TurnJP[] = _("ターン"); + +void (*const gPlayerBufferCommands[])(void) = +{ + PlayerHandleGetAttributes, + PlayerHandlecmd1, + PlayerHandleSetAttributes, + PlayerHandlecmd3, + PlayerHandleLoadPokeSprite, + PlayerHandleSendOutPoke, + PlayerHandleReturnPokeToBall, + PlayerHandleTrainerThrow, + PlayerHandleTrainerSlide, + PlayerHandleTrainerSlideBack, + PlayerHandlecmd10, + PlayerHandlecmd11, + PlayerHandlecmd12, + PlayerHandleBallThrow, + PlayerHandlePuase, + PlayerHandleMoveAnimation, + PlayerHandlePrintString, + PlayerHandlePrintStringPlayerOnly, + PlayerHandlecmd18, + PlayerHandlecmd19, + PlayerHandlecmd20, + PlayerHandleOpenBag, + PlayerHandlecmd22, + PlayerHandlecmd23, + PlayerHandleHealthBarUpdate, + PlayerHandleExpBarUpdate, + PlayerHandleStatusIconUpdate, + PlayerHandleStatusAnimation, + PlayerHandleStatusXor, + PlayerHandlecmd29, + PlayerHandleDMATransfer, + PlayerHandlecmd31, + PlayerHandlecmd32, + PlayerHandlecmd33, + PlayerHandlecmd34, + PlayerHandlecmd35, + PlayerHandlecmd36, + PlayerHandlecmd37, + PlayerHandlecmd38, + PlayerHandlecmd39, + PlayerHandlecmd40, + PlayerHandleHitAnimation, + PlayerHandlecmd42, + PlayerHandleEffectivenessSound, + PlayerHandlecmd44, + PlayerHandleFaintingCry, + PlayerHandleIntroSlide, + PlayerHandleTrainerBallThrow, + PlayerHandlecmd48, + PlayerHandlecmd49, + PlayerHandlecmd50, + PlayerHandleSpriteInvisibility, + PlayerHandleBattleAnimation, + PlayerHandleLinkStandbyMsg, + PlayerHandleResetActionMoveSelection, + PlayerHandlecmd55, + PlayerHandlecmd56, +}; + +void PlayerBufferRunCommand(void); +void sub_802C2EC(void); +void sub_802C68C(void); +void sub_802CA60(void); +void sub_802D730(void); +void sub_802DA9C(u8); +void sub_802DB6C(u8); +void sub_802DCB0(u8); +void sub_802DD10(u8); +void sub_802DDC4(u8); +void sub_802DF88(void); +void sub_802E03C(void); +void sub_802E12C(s32, const u8 *); +void sub_802E1B0(void); +void sub_802E220(void); +void sub_802E2D4(void); +void sub_802E3B4(u8, int); +void nullsub_7(u8); +void b_link_standby_message(void); +u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *); +void dp01_setattr_by_ch1_for_player_pokemon(u8); +void sub_802F934(u8, u8); +void sub_802FB2C(void); +void sub_8030190(void); +void sub_80304A8(void); +void sub_8030E38(struct Sprite *); +void task05_08033660(u8); +void sub_8031064(void); + +void nullsub_91(void) +{ +} + +void SetBankFuncToPlayerBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand; + gDoingBattleAnim = FALSE; +} + +void PlayerBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + +void PlayerBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] < 0x39) + gPlayerBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + PlayerBufferExecCompleted(); + } +} + +void bx_0802E404(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + PlayerBufferExecCompleted(); +} + +void sub_802C098(void) +{ + u16 itemId = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + dp11b_obj_instanciate(gActiveBank, 1, 7, 1); + dp11b_obj_instanciate(gActiveBank, 0, 7, 1); + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + DestroyMenuCursor(); + + // Useless switch statement. + switch (gActionSelectionCursor[gActiveBank]) + { + case 0: + Emitcmd33(1, 0, 0); + break; + case 1: + Emitcmd33(1, 1, 0); + break; + case 2: + Emitcmd33(1, 2, 0); + break; + case 3: + Emitcmd33(1, 3, 0); + break; + } + PlayerBufferExecCompleted(); + } + else if (gMain.newKeys & DPAD_LEFT) + { + if (gActionSelectionCursor[gActiveBank] & 1) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (!(gActionSelectionCursor[gActiveBank] & 1)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_UP) + { + if (gActionSelectionCursor[gActiveBank] & 2) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (!(gActionSelectionCursor[gActiveBank] & 2)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & B_BUTTON) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && GetBankIdentity(gActiveBank) == 2 + && !(gAbsentBankFlags & gBitTable[GetBankByPlayerAI(0)]) + && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if (gBattleBufferA[gActiveBank][1] == 1) + { + // Add item to bag if it is a ball + if (itemId <= ITEM_PREMIER_BALL) + AddBagItem(itemId, 1); + else + return; + } + PlaySE(SE_SELECT); + Emitcmd33(1, 12, 0); + PlayerBufferExecCompleted(); + DestroyMenuCursor(); + } + } + else if (gMain.newKeys & START_BUTTON) + { + sub_804454C(); + } +} + +void unref_sub_802C2B8(void) +{ + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + gBattleBankFunc[gActiveBank] = sub_802C2EC; +} + +// TODO: fix this function +void sub_802C2EC(void) +{ + u8 arr[4] = {0, 2, 3, 1}; + s32 i; + + dp11b_obj_instanciate(gUnknown_03004344, 1, 15, 1); + i = 0; + if (gNoOfAllBanks != 0) + { + do + { + if (i != gUnknown_03004344) + dp11b_obj_free(i, 1); + i++; + } while (i < gNoOfAllBanks); + } + if (gMain.newKeys & A_BUTTON) + { + DestroyMenuCursor(); + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8)); + dp11b_obj_free(gUnknown_03004344, 1); + PlayerBufferExecCompleted(); + } + //_0802C3A8 + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + gBattleBankFunc[gActiveBank] = sub_802C68C; + dp11b_obj_instanciate(gActiveBank, 1, 7, 1); + dp11b_obj_instanciate(gActiveBank, 0, 7, 1); + dp11b_obj_free(gUnknown_03004344, 1); + } + else if (gMain.newKeys & 0x60) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + do + { + u8 var = GetBankIdentity(gUnknown_03004344); + + for (i = 0; i < 4; i++) + { + if (var == arr[i]) + break; + } + do + { + i--; + if (i < 0) + i = 3; + gUnknown_03004344 = GetBankByPlayerAI(arr[i]); + } while(gUnknown_03004344 == gNoOfAllBanks); + i = 0; + switch (GetBankIdentity(gUnknown_03004344)) + { + case 0: + case 2: + if (gActiveBank == gUnknown_03004344) + { + u32 moveId; + + asm("":::"memory"); + moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]); + if (!(gBattleMoves[moveId].target & 2)) + break; + } + i++; + break; + case 1: + case 3: + i++; + } + //_0802C500 + if (gAbsentBankFlags & gBitTable[gUnknown_03004344]) + i = 0; + } while (i == 0); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } + //_0802C540 + else if (gMain.newKeys & 0x90) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + do + { + u8 var = GetBankIdentity(gUnknown_03004344); + + for (i = 0; i < 4; i++) + { + if (var == arr[i]) + break; + } + do + { + i++; + if (i > 3) + i = 0; + gUnknown_03004344 = GetBankByPlayerAI(arr[i]); + } while (gUnknown_03004344 == gNoOfAllBanks); + i = 0; + switch (GetBankIdentity(gUnknown_03004344)) + { + case 0: + case 2: + if (gActiveBank == gUnknown_03004344) + { + u32 moveId; + + asm("":::"memory"); + moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]); + if (!(gBattleMoves[moveId].target & 2)) + break; + } + i++; + break; + case 1: + case 3: + i++; + } + if (gAbsentBankFlags & gBitTable[gUnknown_03004344]) + i = 0; + } while (i == 0); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } +} + +struct UnknownStruct1 +{ + u16 moves[4]; + u8 pp[4]; + u8 unkC[0x12-0xC]; + u8 unk12; + u8 unk13; + u8 filler14[0x20-0x14]; +}; + +const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}"); + +void sub_802C68C(void) +{ + u32 r8 = 0; + struct UnknownStruct1 *r6 = (struct UnknownStruct1 *)(gBattleBufferA[gActiveBank] + 4); + + if (gMain.newKeys & A_BUTTON) + { + u32 r4; + + PlaySE(SE_SELECT); + + if (r6->moves[gMoveSelectionCursor[gActiveBank]] == MOVE_CURSE) + r4 = (r6->unk12 != TYPE_GHOST && (r6->unk13 ^ 7)) ? 0x10 : 0; + else + r4 = gBattleMoves[r6->moves[gMoveSelectionCursor[gActiveBank]]].target; + + if (r4 & 0x10) + gUnknown_03004344 = gActiveBank; + else + gUnknown_03004344 = GetBankByPlayerAI((GetBankIdentity(gActiveBank) & 1) ^ 1); + + if (gBattleBufferA[gActiveBank][1] == 0) + { + if ((r4 & 2) && gBattleBufferA[gActiveBank][2] == 0) + r8++; + } + else + { + if (!(r4 & 0x7D)) + r8++; + if (r6->pp[gMoveSelectionCursor[gActiveBank]] == 0) + { + r8 = 0; + } + else if (!(r4 & 0x12) && CountAliveMons(0) <= 1) + { + gUnknown_03004344 = sub_803C434(gActiveBank); + r8 = 0; + } + } + if (r8 == 0) + { + DestroyMenuCursor(); + Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8)); + PlayerBufferExecCompleted(); + } + else + { + gBattleBankFunc[gActiveBank] = sub_802C2EC; + if (r4 & 0x12) + gUnknown_03004344 = gActiveBank; + else if (gAbsentBankFlags & gBitTable[GetBankByPlayerAI(1)]) + gUnknown_03004344 = GetBankByPlayerAI(3); + else + gUnknown_03004344 = GetBankByPlayerAI(1); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyMenuCursor(); + PlaySE(SE_SELECT); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 320; + Emitcmd33(1, 10, 0xFFFF); + PlayerBufferExecCompleted(); + } + else if (gMain.newKeys & DPAD_LEFT) + { + if (gMoveSelectionCursor[gActiveBank] & 1) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 1; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (!(gMoveSelectionCursor[gActiveBank] & 1) + && (gMoveSelectionCursor[gActiveBank] ^ 1) < gUnknown_03004348) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 1; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_UP) + { + if (gMoveSelectionCursor[gActiveBank] & 2) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 2; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (!(gMoveSelectionCursor[gActiveBank] & 2) + && (gMoveSelectionCursor[gActiveBank] ^ 2) < gUnknown_03004348) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 2; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & SELECT_BUTTON) + { + if (gUnknown_03004348 > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_081FAE80); + if (gMoveSelectionCursor[gActiveBank] != 0) + gUnknown_03004344 = 0; + else + gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1; + sub_802E3B4(gUnknown_03004344, 27); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D89, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + gBattleBankFunc[gActiveBank] = sub_802CA60; + } + } +} + +extern const u8 gUnknown_08400D49[]; +extern const u8 gUnknown_08400D38[]; + +void sub_802CA60(void) +{ + u8 perMovePPBonuses[4]; + struct + { + u16 moves[4]; + u8 pp[4]; + u8 filler18[8]; // what is this? + } sp0; + //struct UnknownStruct1 sp0; + u8 totalPPBonuses; + + if (gMain.newKeys & (A_BUTTON | SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + if (gMoveSelectionCursor[gActiveBank] != gUnknown_03004344) + { + struct UnknownStruct1 *r9 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + s32 i; + + i = r9->moves[gMoveSelectionCursor[gActiveBank]]; + r9->moves[gMoveSelectionCursor[gActiveBank]] = r9->moves[gUnknown_03004344]; + r9->moves[gUnknown_03004344] = i; + + i = r9->pp[gMoveSelectionCursor[gActiveBank]]; + r9->pp[gMoveSelectionCursor[gActiveBank]] = r9->pp[gUnknown_03004344]; + r9->pp[gUnknown_03004344] = i; + + i = r9->unkC[gMoveSelectionCursor[gActiveBank]]; + r9->unkC[gMoveSelectionCursor[gActiveBank]] = r9->unkC[gUnknown_03004344]; + r9->unkC[gUnknown_03004344] = i; + + if (gDisableStructs[gActiveBank].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBank]]) + { + gDisableStructs[gActiveBank].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBank]]; + gDisableStructs[gActiveBank].unk18_b |= gBitTable[gUnknown_03004344]; + } + + sub_802E1B0(); + + for (i = 0; i < 4; i++) + perMovePPBonuses[i] = (gBattleMons[gActiveBank].ppBonuses & (3 << (i * 2))) >> (i * 2); + totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]]; + perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344]; + perMovePPBonuses[gUnknown_03004344] = totalPPBonuses; + + totalPPBonuses = 0; + for (i = 0; i < 4; i++) + totalPPBonuses |= perMovePPBonuses[i] << (i * 2); + gBattleMons[gActiveBank].ppBonuses = totalPPBonuses; + + for (i = 0; i < 4; i++) + { + gBattleMons[gActiveBank].moves[i] = r9->moves[i]; + gBattleMons[gActiveBank].pp[i] = r9->pp[i]; + } + if (!(gBattleMons[gActiveBank].status2 & 0x200000)) + { + for (i = 0; i < 4; i++) + { + sp0.moves[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i); + sp0.pp[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i); + } + + totalPPBonuses = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES); + for (i = 0; i < 4; i++) + perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2); + + i = sp0.moves[gMoveSelectionCursor[gActiveBank]]; + sp0.moves[gMoveSelectionCursor[gActiveBank]] = sp0.moves[gUnknown_03004344]; + sp0.moves[gUnknown_03004344] = i; + + i = sp0.pp[gMoveSelectionCursor[gActiveBank]]; + sp0.pp[gMoveSelectionCursor[gActiveBank]] = sp0.pp[gUnknown_03004344]; + sp0.pp[gUnknown_03004344] = i; + + totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]]; + perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344]; + perMovePPBonuses[gUnknown_03004344] = totalPPBonuses; + + totalPPBonuses = 0; + for (i = 0; i < 4; i++) + totalPPBonuses |= perMovePPBonuses[i] << (i * 2); + + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i, (u8 *)&sp0.moves[i]); + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i, &sp0.pp[i]); + } + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES, &totalPPBonuses); + } + } + else + { + sub_802E12C(gUnknown_03004344, gUnknown_08400D49); + } + gBattleBankFunc[gActiveBank] = sub_802C68C; + gMoveSelectionCursor[gActiveBank] = gUnknown_03004344; + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + sub_802E220(); + sub_802E2D4(); + } + if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + nullsub_7(gUnknown_03004344); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_08400D49); + gBattleBankFunc[gActiveBank] = sub_802C68C; + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + sub_802E220(); + sub_802E2D4(); + } + if ((gMain.newKeys & DPAD_LEFT) && (gUnknown_03004344 & 1)) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 1; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_RIGHT) && !(gUnknown_03004344 & 1) && (gUnknown_03004344 ^ 1) < gUnknown_03004348) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 1; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_UP) && (gUnknown_03004344 & 2)) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 2; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_DOWN) && !(gUnknown_03004344 & 2) && (gUnknown_03004344 ^ 2) < gUnknown_03004348) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 2; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } +} + +void sub_802D148(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(c2_8011A1C); + } +} + +void sub_802D18C(void) +{ + if (!gPaletteFade.active) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + sub_800832C(); + gBattleBankFunc[gActiveBank] = sub_802D148; + } + else + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } + } +} + +void sub_802D204(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + PlayerBufferExecCompleted(); +} + +// duplicate of sub_802D204 +void sub_802D23C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + PlayerBufferExecCompleted(); +} + +void sub_802D274(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + nullsub_10(gSaveBlock2.playerGender); + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + PlayerBufferExecCompleted(); + } +} + +void sub_802D2E0(void) +{ + if (--ewram17810[gActiveBank].unk9 == 0xFF) + { + ewram17810[gActiveBank].unk9 = 0; + PlayerBufferExecCompleted(); + } +} + +void sub_802D31C(void) +{ + bool8 r6 = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + else + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + r6 = FALSE; + + if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + m4aMPlayContinue(&gMPlay_BGM); + else + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + if (IsDoubleBattle()) + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], gActiveBank ^ 2); + ewram17810[gActiveBank].unk9 = 3; + gBattleBankFunc[gActiveBank] = sub_802D2E0; + } +} + +void sub_802D500(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]); + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]); + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank ^ 2], + &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], + 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gPlayerParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_802D31C; + } +} + +void sub_802D680(void) +{ + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + gBattleBankFunc[gActiveBank] = sub_802D730; + } +} + +void sub_802D730(void) +{ + if (!ewram17810[gActiveBank].unk0_6 && !IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlayerBufferExecCompleted(); + } +} + +void sub_802D798(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]); + if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy + && !ewram17810[gActiveBank].unk0_3) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8031F88(gActiveBank); + gBattleBankFunc[gActiveBank] = sub_802D680; + } +} + +void c3_0802FDF4(u8 taskId) +{ + if (!IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + DestroyTask(taskId); + } +} + +void bx_t1_healthbar_update(void) +{ + s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + { + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + } + else + { + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlayerBufferExecCompleted(); + } +} + +void sub_802D90C(void) +{ + if (gUnknown_03004210.state == 0) + PlayerBufferExecCompleted(); +} + +// Rare Candy usage, maybe? +void sub_802D924(u8 taskId) +{ + u32 pkmnIndex = (u8)gTasks[taskId].data[0]; + u8 bank = gTasks[taskId].data[2]; + s16 gainedExp = gTasks[taskId].data[1]; + + if (IsDoubleBattle() == TRUE || pkmnIndex != gBattlePartyID[bank]) + { + struct Pokemon *pkmn = &gPlayerParty[pkmnIndex]; + u16 species = GetMonData(pkmn, MON_DATA_SPECIES); + u8 level = GetMonData(pkmn, MON_DATA_LEVEL); + u32 currExp = GetMonData(pkmn, MON_DATA_EXP); + u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + + if (currExp + gainedExp >= nextLvlExp) + { + u8 savedActiveBank; + + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&nextLvlExp); + CalculateMonStats(pkmn); + gainedExp -= nextLvlExp - currExp; + savedActiveBank = gActiveBank; + gActiveBank = bank; + Emitcmd33(1, 11, gainedExp); + gActiveBank = savedActiveBank; + + if (IsDoubleBattle() == TRUE + && ((u16)pkmnIndex == gBattlePartyID[bank] || (u16)pkmnIndex == gBattlePartyID[bank ^ 2])) + gTasks[taskId].func = sub_802DCB0; + else + gTasks[taskId].func = sub_802DDC4; + } + else + { + currExp += gainedExp; + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&currExp); + gBattleBankFunc[bank] = sub_802D90C; + DestroyTask(taskId); + } + } + else + { + gTasks[taskId].func = sub_802DA9C; + } +} + +void sub_802DA9C(u8 taskId) +{ + u8 pkmnIndex = gTasks[taskId].data[0]; + s32 r9 = gTasks[taskId].data[1]; + u8 bank = gTasks[taskId].data[2]; + struct Pokemon *pkmn = &gPlayerParty[pkmnIndex]; + u8 level = GetMonData(pkmn, MON_DATA_LEVEL); + u16 species = GetMonData(pkmn, MON_DATA_SPECIES); + u32 exp = GetMonData(pkmn, MON_DATA_EXP); + u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 expToNextLvl; + + exp -= currLvlExp; + expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + sub_8043D84(bank, gHealthboxIDs[bank], expToNextLvl, exp, -r9); + PlaySE(SE_EXP); + gTasks[taskId].func = sub_802DB6C; +} + +#ifdef NONMATCHING +void sub_802DB6C(u8 taskId) +{ + if (gTasks[taskId].data[10] < 13) + { + gTasks[taskId].data[10]++; + } + else + { + u8 r9 = gTasks[taskId].data[0]; + s32 r10 = gTasks[taskId].data[1]; //s16? + u8 r7 = gTasks[taskId].data[2]; + s16 r4; + + r4 = sub_8045C78(r7, gHealthboxIDs[r7], 1, 0); + sub_8043DFC(gHealthboxIDs[r7]); + if (r4 == -1) + { + struct Pokemon *pkmn; + u8 r4; + u32 sp4; + u16 r0; + u32 sp0; + + m4aSongNumStop(SE_EXP); + pkmn = &gPlayerParty[r9]; + r4 = GetMonData(pkmn, MON_DATA_LEVEL); + sp4 = GetMonData(pkmn, MON_DATA_EXP); + r0 = GetMonData(pkmn, MON_DATA_SPECIES); + sp0 = gExperienceTables[gBaseStats[r0].growthRate][r4 + 1]; + if (sp4 + r10 >= sp0) + { + u8 r5; + u32 asdf; + + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp0); + CalculateMonStats(pkmn); + //r10 -= sp0 - sp4; + asdf = sp0 - sp4; + //asdf = r10 - (sp0 - sp4); + r10 -= asdf; + r5 = gActiveBank; + gActiveBank = r7; + Emitcmd33(1, 11, r10); + gActiveBank = r5; + gTasks[taskId].func = sub_802DCB0; + } + else + { + //u32 asdf = sp4 + r10; + sp4 += r10; + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp4); + gBattleBankFunc[r7] = sub_802D90C; + DestroyTask(taskId); + } + } + } +} +#else +__attribute__((naked)) +void sub_802DB6C(u8 taskId) +{ + asm_unified("push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + ldr r1, _0802DB98 @ =gTasks\n\ + lsls r0, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r6, r0, r1\n\ + ldrh r1, [r6, 0x1C]\n\ + movs r2, 0x1C\n\ + ldrsh r0, [r6, r2]\n\ + cmp r0, 0xC\n\ + bgt _0802DB9C\n\ + adds r0, r1, 0x1\n\ + strh r0, [r6, 0x1C]\n\ + b _0802DC98\n\ + .align 2, 0\n\ +_0802DB98: .4byte gTasks\n\ +_0802DB9C:\n\ + ldrb r0, [r6, 0x8]\n\ + mov r9, r0\n\ + ldrh r2, [r6, 0xA]\n\ + mov r10, r2\n\ + ldrb r7, [r6, 0xC]\n\ + ldr r5, _0802DC64 @ =gHealthboxIDs\n\ + adds r5, r7, r5\n\ + ldrb r1, [r5]\n\ + adds r0, r7, 0\n\ + movs r2, 0x1\n\ + movs r3, 0\n\ + bl sub_8045C78\n\ + adds r4, r0, 0\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + ldrb r0, [r5]\n\ + bl sub_8043DFC\n\ + lsls r4, 16\n\ + asrs r4, 16\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + cmp r4, r0\n\ + bne _0802DC98\n\ + movs r0, 0x21\n\ + bl m4aSongNumStop\n\ + movs r0, 0x64\n\ + mov r1, r9\n\ + muls r1, r0\n\ + ldr r0, _0802DC68 @ =gPlayerParty\n\ + adds r5, r1, r0\n\ + adds r0, r5, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + bl GetMonData\n\ + str r0, [sp, 0x4]\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + ldr r3, _0802DC6C @ =gExperienceTables\n\ + adds r4, 0x1\n\ + lsls r4, 2\n\ + ldr r2, _0802DC70 @ =gBaseStats\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrb r1, [r1, 0x13]\n\ + movs r0, 0xCA\n\ + lsls r0, 1\n\ + muls r0, r1\n\ + adds r4, r0\n\ + adds r4, r3\n\ + ldr r1, [r4]\n\ + str r1, [sp]\n\ + mov r2, r10\n\ + lsls r0, r2, 16\n\ + asrs r4, r0, 16\n\ + ldr r0, [sp, 0x4]\n\ + adds r0, r4\n\ + cmp r0, r1\n\ + blt _0802DC7C\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + mov r2, sp\n\ + bl SetMonData\n\ + adds r0, r5, 0\n\ + bl CalculateMonStats\n\ + ldr r2, [sp]\n\ + add r0, sp, 0x4\n\ + ldrh r0, [r0]\n\ + subs r2, r0\n\ + subs r2, r4, r2\n\ + ldr r4, _0802DC74 @ =gActiveBank\n\ + ldrb r5, [r4]\n\ + strb r7, [r4]\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + movs r0, 0x1\n\ + movs r1, 0xB\n\ + bl Emitcmd33\n\ + strb r5, [r4]\n\ + ldr r0, _0802DC78 @ =sub_802DCB0\n\ + str r0, [r6]\n\ + b _0802DC98\n\ + .align 2, 0\n\ +_0802DC64: .4byte gHealthboxIDs\n\ +_0802DC68: .4byte gPlayerParty\n\ +_0802DC6C: .4byte gExperienceTables\n\ +_0802DC70: .4byte gBaseStats\n\ +_0802DC74: .4byte gActiveBank\n\ +_0802DC78: .4byte sub_802DCB0\n\ +_0802DC7C:\n\ + str r0, [sp, 0x4]\n\ + add r2, sp, 0x4\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + bl SetMonData\n\ + ldr r1, _0802DCA8 @ =gBattleBankFunc\n\ + lsls r0, r7, 2\n\ + adds r0, r1\n\ + ldr r1, _0802DCAC @ =sub_802D90C\n\ + str r1, [r0]\n\ + mov r0, r8\n\ + bl DestroyTask\n\ +_0802DC98:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802DCA8: .4byte gBattleBankFunc\n\ +_0802DCAC: .4byte sub_802D90C\n"); +} +#endif + +void sub_802DCB0(u8 taskId) +{ + u8 bank = gTasks[taskId].data[2]; + u8 pkmnIndex = gTasks[taskId].data[0]; + + if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2]) + bank ^= 2; + move_anim_start_t4(bank, bank, bank, 0); + gTasks[taskId].func = sub_802DD10; +} + +void sub_802DD10(u8 taskId) +{ + u8 bank = gTasks[taskId].data[2]; + + if (!ewram17810[bank].unk0_6) + { + u8 pkmnIndex = gTasks[taskId].data[0]; + + GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value + if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2]) + sub_8045A5C(gHealthboxIDs[bank ^ 2], &gPlayerParty[pkmnIndex], 0); + else + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[pkmnIndex], 0); + gTasks[taskId].func = sub_802DDC4; + } +} + +void sub_802DDC4(u8 taskId) +{ + u8 pkmnIndex; + u8 bank; + + pkmnIndex = gTasks[taskId].data[0]; + GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value + bank = gTasks[taskId].data[2]; + gBattleBankFunc[bank] = sub_802D90C; + DestroyTask(taskId); +} + +void sub_802DE10(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > DISPLAY_HEIGHT) + { + u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + nullsub_9(species); + FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +void sub_802DEAC(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +// Duplicate of sub_802D90C +void sub_802DF18(void) +{ + if (gUnknown_03004210.state == 0) + PlayerBufferExecCompleted(); +} + +void sub_802DF30(void) +{ + if (!gPaletteFade.active) + { + u8 r4; + + gBattleBankFunc[gActiveBank] = sub_802DF88; + r4 = gTasks[gUnknown_0300434C[gActiveBank]].data[0]; + DestroyTask(gUnknown_0300434C[gActiveBank]); + sub_8094E20(r4); + } +} + +void sub_802DF88(void) +{ + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + { + if (gUnknown_0202E8F4 == 1) + Emitcmd34(1, gUnknown_0202E8F5, gUnknown_02038470); + else + Emitcmd34(1, 6, NULL); + if ((gBattleBufferA[gActiveBank][1] & 0xF) == 1) + b_link_standby_message(); + PlayerBufferExecCompleted(); + } +} + +void sub_802E004(void) +{ + if (!gPaletteFade.active) + { + gBattleBankFunc[gActiveBank] = sub_802E03C; + nullsub_14(); + sub_80A6DCC(); + } +} + +void sub_802E03C(void) +{ + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + { + Emitcmd35(1, gScriptItemId); + PlayerBufferExecCompleted(); + } +} + +void bx_wait_t1(void) +{ + if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6) + PlayerBufferExecCompleted(); +} + +void bx_blink_t1(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = 0; + PlayerBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_802E12C(s32 a, const u8 *b) +{ + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + + StringCopy(gDisplayedStringBattle, b); + StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]); + InitWindow( + &gUnknown_03004210, + gDisplayedStringBattle, + 0x300 + a * 20, + (a & 1) ? 11 : 1, + (a < 2) ? 0x37 : 0x39); + sub_8002F44(&gUnknown_03004210); +} + +void sub_802E1B0(void) +{ + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + s32 i; + + gUnknown_03004348 = 0; + FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A); + for (i = 0; i < 4; i++) + { + nullsub_7(i); + sub_802E12C(i, gUnknown_08400D49); + if (r4->moves[i] != 0) + gUnknown_03004348++; + } +} + +void sub_802E220(void) +{ + if (gBattleBufferA[gActiveBank][2] != 1) + { + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + u8 *str = gDisplayedStringBattle; + + str = StringCopy(str, gUnknown_08400D49); + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 0x11; + str[2] = 2; + str += 3; + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 0x14; + str[2] = 6; + str += 3; + str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2); + *str++ = CHAR_SLASH; + ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2); + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37); + sub_8002F44(&gUnknown_03004210); + } +} + +extern const u8 gUnknown_08400D52[]; +extern const u8 gTypeNames[][7]; + +void sub_802E2D4(void) +{ + if (gBattleBufferA[gActiveBank][2] == 1) + { + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D52, 0x290, 0x13, 0x37); + } + else + { + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + u8 *str = gDisplayedStringBattle; + + str = StringCopy(str, gUnknown_08400D49); + StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); + } + sub_8002F44(&gUnknown_03004210); +} + +const u8 gUnknown_081FAE89[][2] = +{ + { 8, 120}, + {88, 120}, + { 8, 136}, + {88, 136}, +}; + +const u8 gUnknown_081FAE91[][2] = +{ + {144, 120}, + {190, 120}, + {144, 136}, + {190, 136}, + { 72, 72}, + { 32, 90}, + { 80, 80}, + { 80, 88}, +}; + +void sub_802E3B4(u8 a, int unused) +{ + sub_814A958(0x48); + sub_814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]); +} + +void nullsub_7(u8 a) +{ +} + +void sub_802E3E4(u8 a, int unused) +{ + sub_814A958(0x2A); + sub_814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]); +} + +void nullsub_8(u8 a) +{ +} + +void sub_802E414(void) +{ + SetMainCallback2(ReshowBattleScreenAfterMenu); +} + +void sub_802E424(void) +{ + SetMainCallback2(ReshowBattleScreenAfterMenu); +} + +void sub_802E434(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + PlayerBufferExecCompleted(); +} + +void sub_802E460(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + PlayerBufferExecCompleted(); +} + +void b_link_standby_message(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + sub_8002EB0(&gUnknown_03004210, gUnknown_08400CE0, 0x90, 2, 15); + } +} + +void PlayerHandleGetAttributes(void) +{ + u8 unkData[0x100]; + u32 offset = 0; + u8 r4; + s32 i; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset); + r4 >>= 1; + } + } + Emitcmd29(1, offset, unkData); + PlayerBufferExecCompleted(); +} + +// Duplicate of dp01_getattr_by_ch1_for_player_pokemon +u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) +{ + struct BattlePokemon battlePokemon; + struct UnknownStruct3 moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); + battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); + for (size = 0; size < 4; size++) + { + battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size); + battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); + } + battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); + battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP); + battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP); + battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); + battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); + battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); + battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); + battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); + battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); + battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS); + battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL); + battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP); + battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); + battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK); + battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF); + battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); + battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); + battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG); + battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY); + battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); + GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname); + StringCopy10(battlePokemon.nickname, nickname); + GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName); + src = (u8 *)&battlePokemon; + for (size = 0; size < sizeof(battlePokemon); size++) + buffer[size] = src[size]; + break; + case 1: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 2: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 3: + for (size = 0; size < 4; size++) + { + moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); + src = (u8 *)&moveData; + for (size = 0; size < sizeof(moveData); size++) + buffer[size] = src[size]; + break; + case 4: + case 5: + case 6: + case 7: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 8: + for (size = 0; size < 4; size++) + buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); + buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); + size++; + break; + case 9: + case 10: + case 11: + case 12: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9); + size = 1; + break; + case 17: + data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case 18: + data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case 19: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV); + size = 1; + break; + case 20: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV); + size = 1; + break; + case 21: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV); + size = 1; + break; + case 22: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV); + size = 1; + break; + case 23: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV); + size = 1; + break; + case 24: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV); + size = 1; + break; + case 25: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP); + size = 1; + break; + case 26: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS); + size = 1; + break; + case 27: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION); + size = 1; + break; + case 28: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL); + size = 1; + break; + case 29: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME); + size = 1; + break; + case 30: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL); + size = 1; + break; + case 31: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); + buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); + buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); + buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); + buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); + size = 6; + break; + case 32: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); + size = 1; + break; + case 33: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); + size = 1; + break; + case 34: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); + size = 1; + break; + case 35: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + size = 1; + break; + case 36: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); + size = 1; + break; + case 37: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); + size = 1; + break; + case 38: + data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + buffer[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case 39: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 40: + data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + buffer[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case 41: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL); + size = 1; + break; + case 42: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 43: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 44: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 45: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 46: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 47: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 48: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 49: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL); + size = 1; + break; + case 50: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY); + size = 1; + break; + case 51: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE); + size = 1; + break; + case 52: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART); + size = 1; + break; + case 53: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH); + size = 1; + break; + case 54: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN); + size = 1; + break; + case 55: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON); + size = 1; + break; + case 56: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case 57: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case 58: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON); + size = 1; + break; + case 59: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +void PlayerHandlecmd1(void) +{ + struct BattlePokemon battleMon; // I think this is a BattlePokemon + u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = src[i]; + Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst); + PlayerBufferExecCompleted(); +} + +void PlayerHandleSetAttributes(void) +{ + u8 r4; + u8 i; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + dp01_setattr_by_ch1_for_player_pokemon(i); + r4 >>= 1; + } + } + PlayerBufferExecCompleted(); +} + +// Duplicate of sub_811EC68 +void dp01_setattr_by_ch1_for_player_pokemon(u8 a) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3]; + struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3]; + s32 i; + + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + { + u8 iv; + + SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species); + SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item); + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]); + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]); + } + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses); + SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship); + SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv); + iv = battlePokemon->attackIV; + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv); + iv = battlePokemon->defenseIV; + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv); + iv = battlePokemon->speedIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv); + SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality); + SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1); + SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level); + SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp); + SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); + SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); + SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); + SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); + } + break; + case 1: + SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]); + break; + case 2: + SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]); + break; + case 3: + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]); + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]); + } + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case 4: + case 5: + case 6: + case 7: + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]); + break; + case 8: + SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]); + SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]); + SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]); + break; + case 9: + case 10: + case 11: + case 12: + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]); + break; + case 17: + SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]); + break; + case 18: + SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]); + break; + case 19: + SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 20: + SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 21: + SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 22: + SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 23: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 24: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 25: + SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]); + break; + case 26: + SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]); + break; + case 27: + SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]); + break; + case 28: + SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]); + break; + case 29: + SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]); + break; + case 30: + SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]); + break; + case 31: + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); + break; + case 32: + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 33: + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 34: + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 35: + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 36: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 37: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 38: + SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]); + break; + case 39: + SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]); + break; + case 40: + SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]); + break; + case 41: + SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]); + break; + case 42: + SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]); + break; + case 43: + SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]); + break; + case 44: + SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]); + break; + case 45: + SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); + break; + case 46: + SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + break; + case 47: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); + break; + case 48: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]); + break; + case 49: + SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]); + break; + case 50: + SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]); + break; + case 51: + SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]); + break; + case 52: + SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]); + break; + case 53: + SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]); + break; + case 54: + SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]); + break; + case 55: + SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 56: + SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 57: + SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 58: + SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 59: + SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + } + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); +} + +void PlayerHandlecmd3(void) +{ + u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = gBattleBufferA[gActiveBank][3 + i]; + PlayerBufferExecCompleted(); +} + +void PlayerHandleLoadPokeSprite(void) +{ + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gBattleBankFunc[gActiveBank] = bx_0802E404; +} + +void PlayerHandleSendOutPoke(void) +{ + sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); + gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; + sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]); + gBattleBankFunc[gActiveBank] = sub_802D798; +} + +void sub_802F934(u8 bank, u8 b) +{ + u16 species; + + sub_8032AA8(bank, b); + gBattlePartyID[bank] = gBattleBufferA[bank][1]; + species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); + GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank)); + gObjectBankIDs[bank] = CreateSprite( + &gUnknown_02024E8C, + sub_8077ABC(bank, 2), + sub_8077F68(bank), + sub_8079E90(bank)); + gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank]; + gSprites[gObjectBankIDs[bank]].data0 = bank; + gSprites[gObjectBankIDs[bank]].data2 = species; + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + gSprites[gObjectBankIDs[bank]].invisible = TRUE; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF); +} + +void PlayerHandleReturnPokeToBall(void) +{ + if (gBattleBufferA[gActiveBank][1] == 0) + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_802FB2C; + } + else + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +void sub_802FB2C(void) +{ + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (!ewram17810[gActiveBank].unk0_6) + { + ewram17810[gActiveBank].unk4 = 0; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1); + gBattleBankFunc[gActiveBank] = sub_802DEAC; + } + } +} + +void PlayerHandleTrainerThrow(void) +{ + s16 r7; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankIdentity(gActiveBank) & 2) + r7 = 16; + else + r7 = -16; + } + else + { + r7 = 0; + } + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + r7 + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + sub_8079E90(gActiveBank)); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; + gSprites[gObjectBankIDs[gActiveBank]].data0 = -2; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_802D204; +} + +void PlayerHandleTrainerSlide(void) +{ + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + 30); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96; + gSprites[gObjectBankIDs[gActiveBank]].data0 = 2; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_802D23C; +} + +void PlayerHandleTrainerSlideBack(void) +{ + oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); + gSprites[gObjectBankIDs[gActiveBank]].data0 = 50; + gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; + gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + gBattleBankFunc[gActiveBank] = sub_802D274; +} + +void PlayerHandlecmd10(void) +{ + if (ewram17810[gActiveBank].unk4 == 0) + { + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4++; + } + else + { + if (ewram17810[gActiveBank].unk0_6 == 0) + { + ewram17810[gActiveBank].unk4 = 0; + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlaySE12WithPanning(SE_POKE_DEAD, -64); + gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; + gSprites[gObjectBankIDs[gActiveBank]].data2 = 5; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC; + gBattleBankFunc[gActiveBank] = sub_802DE10; + } + } +} + +void PlayerHandlecmd11(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd12(void) +{ + ewram17840.unk8 = 4; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); + gBattleBankFunc[gActiveBank] = bx_wait_t1; +} + +void PlayerHandleBallThrow(void) +{ + u8 var = gBattleBufferA[gActiveBank][1]; + + ewram17840.unk8 = var; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); + gBattleBankFunc[gActiveBank] = bx_wait_t1; +} + +void PlayerHandlePuase(void) +{ + u8 var = gBattleBufferA[gActiveBank][1]; + + // WTF is this?? + while (var != 0) + var--; + + PlayerBufferExecCompleted(); +} + +void PlayerHandleMoveAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); + + gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3]; + gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8); + gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24); + gHappinessMoveAnim = gBattleBufferA[gActiveBank][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8); + gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16]; + gPID_perBank[gActiveBank] = *gDisableStructMoveAnim; + if (sub_8031720(r0, gUnknown_0202F7C4) != 0) + { + // Dead code. sub_8031720 always returns 0. + PlayerBufferExecCompleted(); + } + else + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_8030190; + } + } +} + +void sub_8030190(void) +{ + u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); + u8 r7 = gBattleBufferA[gActiveBank][11]; + + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].substituteSprite == 1 && ewram17800[gActiveBank].unk0_3 == 0) + { + ewram17800[gActiveBank].unk0_3 = 1; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + } + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (ewram17810[gActiveBank].unk0_6 == 0) + { + sub_80326EC(0); + ExecuteMoveAnim(r4); + ewram17810[gActiveBank].unk4 = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80326EC(1); + if (ewram17800[gActiveBank].substituteSprite == 1 && r7 < 2) + { + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + ewram17800[gActiveBank].unk0_3 = 0; + } + ewram17810[gActiveBank].unk4 = 3; + } + break; + case 3: + if (ewram17810[gActiveBank].unk0_6 == 0) + { + sub_8031F24(); + sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + ewram17810[gActiveBank].unk4 = 0; + PlayerBufferExecCompleted(); + } + break; + } +} + +void PlayerHandlePrintString(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); + gBattleBankFunc[gActiveBank] = sub_802DF18; +} + +void PlayerHandlePrintStringPlayerOnly(void) +{ + if (GetBankSide(gActiveBank) == 0) + PlayerHandlePrintString(); + else + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd18(void) +{ + int r4; + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 160; + FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); + FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); + + gBattleBankFunc[gActiveBank] = sub_802C098; + + InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35); + sub_8002F44(&gUnknown_03004210); + sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + + for (r4 = 0; r4 < 4; r4++) + nullsub_8(r4); + + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + + StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CA8); + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); + sub_8002F44(&gUnknown_03004210); +} + +void PlayerHandlecmd19() +{ +} + +void PlayerHandlecmd20(void) +{ + sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); + sub_80304A8(); + gBattleBankFunc[gActiveBank] = sub_802C68C; +} + +void sub_80304A8(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 320; + sub_802E1B0(); + gUnknown_03004344 = 0xFF; + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + if (gBattleBufferA[gActiveBank][2] != 1) + { + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55); + sub_8002F44(&gUnknown_03004210); + } + sub_802E220(); + sub_802E2D4(); +} + +void PlayerHandleOpenBag(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_802E004; + gBankInMenu = gActiveBank; + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i]; +} + +void PlayerHandlecmd22(void) +{ + s32 i; + + gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF); + gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF; + ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4; + ewram[0x1609D] = gBattleBufferA[gActiveBank][2]; + ewram[0x160C0] = gBattleBufferA[gActiveBank][3]; + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i]; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_802DF30; + gBankInMenu = gActiveBank; +} + +void PlayerHandlecmd23(void) +{ + BattleMusicStop(); + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandleHealthBarUpdate(void) +{ + s16 r7; + + load_gfxc_health_bar(0); + r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + if (r7 != 0x7FFF) + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7); + } + else + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7); + sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0); + } + gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update; +} + +void PlayerHandleExpBarUpdate(void) +{ + u8 r7 = gBattleBufferA[gActiveBank][1]; + + if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100) + { + PlayerBufferExecCompleted(); + } + else + { + u16 r4; + u8 taskId; + + load_gfxc_health_bar(1); + GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value + r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + taskId = CreateTask(sub_802D924, 10); + gTasks[taskId].data[0] = r7; + gTasks[taskId].data[1] = r4; + gTasks[taskId].data[2] = gActiveBank; + gBattleBankFunc[gActiveBank] = nullsub_91; + } +} + +void PlayerHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9); + ewram17810[gActiveBank].unk0_4 = 0; + gBattleBankFunc[gActiveBank] = sub_802E434; + } +} + +void PlayerHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + move_anim_start_t2_for_situation( + gBattleBufferA[gActiveBank][1], + gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); + gBattleBankFunc[gActiveBank] = sub_802E434; + } +} + +void PlayerHandleStatusXor(void) +{ + u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1]; + + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd29(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandleDMATransfer(void) +{ + u32 val1 = gBattleBufferA[gActiveBank][1] + | (gBattleBufferA[gActiveBank][2] << 8) + | (gBattleBufferA[gActiveBank][3] << 16) + | (gBattleBufferA[gActiveBank][4] << 24); + u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8); + + const u8 *src = &gBattleBufferA[gActiveBank][7]; + u8 *dst = (u8 *)val1; + u32 size = val2; + + while (1) + { + if (size <= 0x1000) + { + DmaCopy16(3, src, dst, size); + break; + } + DmaCopy16(3, src, dst, 0x1000); + src += 0x1000; + dst += 0x1000; + size -= 0x1000; + } + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd31(void) +{ + PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd32(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd33(void) +{ + Emitcmd33(1, 0, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd34(void) +{ + Emitcmd34(1, 0, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd35(void) +{ + Emitcmd35(1, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd36(void) +{ + Emitcmd36(1, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd37(void) +{ + gUnknown_020238C8.unk0_0 = 0; + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd38(void) +{ + gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd39(void) +{ + gUnknown_020238C8.unk0_7 = 0; + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd40(void) +{ + gUnknown_020238C8.unk0_7 ^= 1; + PlayerBufferExecCompleted(); +} + +void PlayerHandleHitAnimation(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + { + PlayerBufferExecCompleted(); + } + else + { + gDoingBattleAnim = 1; + gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; + sub_8047858(gActiveBank); + gBattleBankFunc[gActiveBank] = bx_blink_t1; + } +} + +void PlayerHandlecmd42(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandleEffectivenessSound(void) +{ + s8 pan; + + if (GetBankSide(gActiveBank) == 0) + pan = -64; + else + pan = 63; + PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd44(void) +{ + PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + PlayerBufferExecCompleted(); +} + +void PlayerHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + PlayCry3(species, -25, 5); + PlayerBufferExecCompleted(); +} + +void PlayerHandleIntroSlide(void) +{ + sub_80E43C0(gBattleBufferA[gActiveBank][1]); + gUnknown_02024DE8 |= 1; + PlayerBufferExecCompleted(); +} + +void PlayerHandleTrainerBallThrow(void) +{ + u8 paletteNum; + u8 taskId; + + oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); + gSprites[gObjectBankIDs[gActiveBank]].data0 = 50; + gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; + gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; + gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + paletteNum = AllocSpritePalette(0xD6F8); + LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum; + taskId = CreateTask(task05_08033660, 5); + gTasks[taskId].data[0] = gActiveBank; + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + ewram17810[4].unk9 |= 1; + gBattleBankFunc[gActiveBank] = nullsub_91; +} + +void sub_8030E38(struct Sprite *sprite) +{ + u8 r4 = sprite->data5; + + FreeSpriteOamMatrix(sprite); + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); + DestroySprite(sprite); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4); + StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0); +} + +void task05_08033660(u8 taskId) +{ + if (gTasks[taskId].data[1] < 31) + { + gTasks[taskId].data[1]++; + } + else + { + u8 savedActiveBank = gActiveBank; + + gActiveBank = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40)) + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_802F934(gActiveBank, 0); + } + else + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_802F934(gActiveBank, 0); + gActiveBank ^= 2; + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + sub_802F934(gActiveBank, 0); + gActiveBank ^= 2; + } + gBattleBankFunc[gActiveBank] = sub_802D500; + gActiveBank = savedActiveBank; + DestroyTask(taskId); + } +} + +void PlayerHandlecmd48(void) +{ + if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) + { + PlayerBufferExecCompleted(); + } + else + { + ewram17810[gActiveBank].unk0_0 = 1; + gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]); + ewram17810[gActiveBank].unk5 = 0; + if (gBattleBufferA[gActiveBank][2] != 0) + ewram17810[gActiveBank].unk5 = 0x5D; + gBattleBankFunc[gActiveBank] = sub_8031064; + } +} + +void sub_8031064(void) +{ + if (ewram17810[gActiveBank].unk5++ > 0x5C) + { + ewram17810[gActiveBank].unk5 = 0; + PlayerBufferExecCompleted(); + } +} + +void PlayerHandlecmd49(void) +{ + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd50(void) +{ + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandleSpriteInvisibility(void) +{ + if (AnimBankSpriteExists(gActiveBank)) + { + gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + sub_8031F88(gActiveBank); + } + PlayerBufferExecCompleted(); +} + +void PlayerHandleBattleAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + u8 val2 = gBattleBufferA[gActiveBank][1]; + u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val)) + PlayerBufferExecCompleted(); + else + gBattleBankFunc[gActiveBank] = sub_802E460; + } +} + +void PlayerHandleLinkStandbyMsg(void) +{ + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + b_link_standby_message(); + // fall through + case 1: + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + break; + case 2: + b_link_standby_message(); + break; + } + PlayerBufferExecCompleted(); +} + +void PlayerHandleResetActionMoveSelection(void) +{ + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; + break; + case 1: + gActionSelectionCursor[gActiveBank] = 0; + break; + case 2: + gMoveSelectionCursor[gActiveBank] = 0; + break; + } + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBank][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + PlayerBufferExecCompleted(); + gBattleBankFunc[gActiveBank] = sub_802D18C; +} + +void PlayerHandlecmd56(void) +{ +} diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c new file mode 100644 index 000000000..e05578c31 --- /dev/null +++ b/src/battle/battle_controller_safari.c @@ -0,0 +1,709 @@ +#include "global.h" +#include "battle_anim_81258BC.h" +#include "battle.h" +#include "battle_message.h" +#include "data2.h" +#include "link.h" +#include "main.h" +#include "menu_cursor.h" +#include "palette.h" +#include "rom3.h" +#include "songs.h" +#include "sound.h" +#include "text.h" +#include "util.h" + +extern struct Window gUnknown_03004210; +extern u8 gDisplayedStringBattle[]; +extern u8 gActionSelectionCursor[]; + +extern const u8 gUnknown_08400CBB[]; +extern u8 gActiveBank; +extern const u8 gUnknown_08400D15[]; + +extern void *gBattleBankFunc[]; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern u8 gBattleBufferA[][0x200]; +extern bool8 gDoingBattleAnim; +extern u8 gObjectBankIDs[]; +extern struct SpriteTemplate gUnknown_02024E8C; +extern u16 gBattleTypeFlags; +extern u32 gBattleExecBuffer; +extern u16 gScriptItemId; +extern MainCallback gPreBattleCallback1; +extern u8 gBankInMenu; +extern u8 gHealthboxIDs[]; +extern u16 gBattlePartyID[]; +extern u16 gUnknown_02024DE8; +extern u8 gBattleOutcome; + +extern u8 GetBankSide(u8); +extern u8 GetBankByPlayerAI(u8); +extern u8 GetBankIdentity(u8); +extern void LoadPlayerTrainerBankSprite(); +extern u8 sub_8079E90(); +extern void sub_80313A0(struct Sprite *); +extern void sub_810BADC(void); +extern void sub_8045A5C(); +extern void sub_80E43C0(); +extern void sub_804777C(); +extern void sub_8043DFC(); +extern bool8 move_anim_start_t3(); + +#if ENGLISH +#define SUB_812BB10_TILE_DATA_OFFSET 440 +#elif GERMAN +#define SUB_812BB10_TILE_DATA_OFFSET 444 +#endif + +// this file's functions +void SafariHandleGetAttributes(void); +void SafariHandlecmd1(void); +void SafariHandleSetAttributes(void); +void SafariHandlecmd3(void); +void SafariHandleLoadPokeSprite(void); +void SafariHandleSendOutPoke(void); +void SafariHandleReturnPokeToBall(void); +void SafariHandleTrainerThrow(void); +void SafariHandleTrainerSlide(void); +void SafariHandleTrainerSlideBack(void); +void SafariHandlecmd10(void); +void SafariHandlecmd11(void); +void SafariHandlecmd12(void); +void SafariHandleBallThrow(void); +void SafariHandlePuase(void); +void SafariHandleMoveAnimation(void); +void SafariHandlePrintString(void); +void SafariHandlePrintStringPlayerOnly(void); +void SafariHandlecmd18(void); +void SafariHandlecmd19(void); +void SafariHandlecmd20(void); +void SafariHandleOpenBag(void); +void SafariHandlecmd22(void); +void SafariHandlecmd23(void); +void SafariHandleHealthBarUpdate(void); +void SafariHandleExpBarUpdate(void); +void SafariHandleStatusIconUpdate(void); +void SafariHandleStatusAnimation(void); +void SafariHandleStatusXor(void); +void SafariHandlecmd29(void); +void SafariHandleDMATransfer(void); +void SafariHandlecmd31(void); +void SafariHandlecmd32(void); +void SafariHandlecmd33(void); +void SafariHandlecmd34(void); +void SafariHandlecmd35(void); +void SafariHandlecmd36(void); +void SafariHandlecmd37(void); +void SafariHandlecmd38(void); +void SafariHandlecmd39(void); +void SafariHandlecmd40(void); +void SafariHandleHitAnimation(void); +void SafariHandlecmd42(void); +void SafariHandleEffectivenessSound(void); +void SafariHandlecmd44(void); +void SafariHandleFaintingCry(void); +void SafariHandleIntroSlide(void); +void SafariHandleTrainerBallThrow(void); +void SafariHandlecmd48(void); +void SafariHandlecmd49(void); +void SafariHandlecmd50(void); +void SafariHandleSpriteInvisibility(void); +void SafariHandleBattleAnimation(void); +void SafariHandleLinkStandbyMsg(void); +void SafariHandleResetActionMoveSelection(void); +void SafariHandlecmd55(void); +void SafariHandlecmd56(void); + +// const data +typedef void (*BattleBufferCmd) (void); +const BattleBufferCmd gSafariBufferCommands[] = +{ + SafariHandleGetAttributes, + SafariHandlecmd1, + SafariHandleSetAttributes, + SafariHandlecmd3, + SafariHandleLoadPokeSprite, + SafariHandleSendOutPoke, + SafariHandleReturnPokeToBall, + SafariHandleTrainerThrow, + SafariHandleTrainerSlide, + SafariHandleTrainerSlideBack, + SafariHandlecmd10, + SafariHandlecmd11, + SafariHandlecmd12, + SafariHandleBallThrow, + SafariHandlePuase, + SafariHandleMoveAnimation, + SafariHandlePrintString, + SafariHandlePrintStringPlayerOnly, + SafariHandlecmd18, + SafariHandlecmd19, + SafariHandlecmd20, + SafariHandleOpenBag, + SafariHandlecmd22, + SafariHandlecmd23, + SafariHandleHealthBarUpdate, + SafariHandleExpBarUpdate, + SafariHandleStatusIconUpdate, + SafariHandleStatusAnimation, + SafariHandleStatusXor, + SafariHandlecmd29, + SafariHandleDMATransfer, + SafariHandlecmd31, + SafariHandlecmd32, + SafariHandlecmd33, + SafariHandlecmd34, + SafariHandlecmd35, + SafariHandlecmd36, + SafariHandlecmd37, + SafariHandlecmd38, + SafariHandlecmd39, + SafariHandlecmd40, + SafariHandleHitAnimation, + SafariHandlecmd42, + SafariHandleEffectivenessSound, + SafariHandlecmd44, + SafariHandleFaintingCry, + SafariHandleIntroSlide, + SafariHandleTrainerBallThrow, + SafariHandlecmd48, + SafariHandlecmd49, + SafariHandlecmd50, + SafariHandleSpriteInvisibility, + SafariHandleBattleAnimation, + SafariHandleLinkStandbyMsg, + SafariHandleResetActionMoveSelection, + SafariHandlecmd55, + SafariHandlecmd56, +}; +// code + +void SafariBufferExecCompleted(void); +void bx_wait_t6(void); +void sub_812B65C(void); +void SafariBufferRunCommand(void); +void sub_812B758(void); + +void unref_sub_812B464(void) +{ +} + +void SetBankFuncToSafariBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = SafariBufferRunCommand; +} + +void SafariBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] < 0x39) + gSafariBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + SafariBufferExecCompleted(); + } +} + +void bx_battle_menu_t6_2(void) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + DestroyMenuCursor(); + + // Useless switch statement. + switch (gActionSelectionCursor[gActiveBank]) + { + case 0: + Emitcmd33(1, 5, 0); + break; + case 1: + Emitcmd33(1, 6, 0); + break; + case 2: + Emitcmd33(1, 7, 0); + break; + case 3: + Emitcmd33(1, 8, 0); + break; + } + SafariBufferExecCompleted(); + } + else if (gMain.newKeys & DPAD_LEFT) + { + if (gActionSelectionCursor[gActiveBank] & 1) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (!(gActionSelectionCursor[gActiveBank] & 1)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_UP) + { + if (gActionSelectionCursor[gActiveBank] & 2) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (!(gActionSelectionCursor[gActiveBank] & 2)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } +} + +void sub_812B65C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + SafariBufferExecCompleted(); +} + +void sub_812B694(void) +{ + if (gUnknown_03004210.state == 0) + SafariBufferExecCompleted(); +} + +void sub_812B6AC(void) +{ + if (!gPaletteFade.active) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } +} + +void bx_wait_t6(void) +{ + if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6) + SafariBufferExecCompleted(); +} + +void sub_812B724(void) +{ + if (!gPaletteFade.active) + { + gBattleBankFunc[gActiveBank] = sub_812B758; + sub_810BADC(); + } +} + +void sub_812B758(void) +{ + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + { + Emitcmd35(1, gScriptItemId); + SafariBufferExecCompleted(); + } +} + +void sub_812B794(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + SafariBufferExecCompleted(); +} + +void SafariBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = SafariBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + +void unref_sub_812B838(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + SafariBufferExecCompleted(); +} + +void SafariHandleGetAttributes(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd1(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleSetAttributes(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd3(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleLoadPokeSprite(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleSendOutPoke(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleReturnPokeToBall(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleTrainerThrow(void) +{ + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + 30); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; + gSprites[gObjectBankIDs[gActiveBank]].data0 = -2; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_812B65C; +} + +void SafariHandleTrainerSlide(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleTrainerSlideBack(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd10(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd11(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd12(void) +{ + ewram17840.unk8 = 4; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4); + gBattleBankFunc[gActiveBank] = bx_wait_t6; +} + +void SafariHandleBallThrow(void) +{ + u8 var = gBattleBufferA[gActiveBank][1]; + + ewram17840.unk8 = var; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4); + gBattleBankFunc[gActiveBank] = bx_wait_t6; +} + +// TODO: spell Pause correctly +void SafariHandlePuase(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleMoveAnimation(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlePrintString(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gBattleBankFunc[gActiveBank] = sub_812B694; +} + +void SafariHandlePrintStringPlayerOnly(void) +{ + if (GetBankSide(gActiveBank) == 0) + SafariHandlePrintString(); + else + SafariBufferExecCompleted(); +} + +void SafariHandlecmd18(void) +{ + int i; + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 160; + gUnknown_03004210.paletteNum = 0; + FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); + FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); + gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2; + + InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35); + sub_8002F44(&gUnknown_03004210); + sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + + for (i = 0; i < 4; i++) + nullsub_8(i); + + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CBB); + + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35); + sub_8002F44(&gUnknown_03004210); +} + +void SafariHandlecmd19(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd20(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleOpenBag(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_812B724; + gBankInMenu = gActiveBank; +} + +void SafariHandlecmd22(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd23(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleHealthBarUpdate(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleExpBarUpdate(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleStatusIconUpdate(void) +{ + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 11); + SafariBufferExecCompleted(); +} + +void SafariHandleStatusAnimation(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleStatusXor(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd29(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleDMATransfer(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd31(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd32(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd33(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd34(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd35(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd36(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd37(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd38(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd39(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd40(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleHitAnimation(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd42(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleEffectivenessSound(void) +{ + s8 pan; + + if (GetBankSide(gActiveBank) == 0) + pan = -64; + else + pan = 63; + PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); + SafariBufferExecCompleted(); +} + +void SafariHandlecmd44(void) +{ + PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + SafariBufferExecCompleted(); +} + +void SafariHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + PlayCry1(species, 25); + SafariBufferExecCompleted(); +} + +void SafariHandleIntroSlide(void) +{ + sub_80E43C0(gBattleBufferA[gActiveBank][1]); + gUnknown_02024DE8 |= 1; + SafariBufferExecCompleted(); +} + +void SafariHandleTrainerBallThrow(void) +{ + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 10); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + SafariBufferExecCompleted(); +} + +void SafariHandlecmd48(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd49(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd50(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleSpriteInvisibility(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleBattleAnimation(void) +{ + u8 r3 = gBattleBufferA[gActiveBank][1]; + u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0) + SafariBufferExecCompleted(); + else + gBattleBankFunc[gActiveBank] = sub_812B794; +} + +void SafariHandleLinkStandbyMsg(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleResetActionMoveSelection(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBank][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + SafariBufferExecCompleted(); + if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD)) + gBattleBankFunc[gActiveBank] = sub_812B6AC; +} + +void SafariHandlecmd56(void) +{ +} diff --git a/src/battle_anim_8137220.c b/src/battle/battle_controller_wally.c index bb181d5fb..bf6ef0892 100644 --- a/src/battle_anim_8137220.c +++ b/src/battle/battle_controller_wally.c @@ -29,7 +29,6 @@ struct UnknownStruct3 extern u8 gActiveBank; extern void (*gBattleBankFunc[])(void); extern u32 gBattleExecBuffer; -extern void (*gWallyBufferCommands[])(void); extern u8 gBattleBufferA[][0x200]; extern u8 gObjectBankIDs[]; extern MainCallback gPreBattleCallback1; @@ -61,8 +60,8 @@ extern const u8 gUnknown_08400CCC[]; extern const u8 gUnknown_08400CF3[]; // TODO: include rom3.h when my other PR gets merged -extern void dp01_build_cmdbuf_x21_a_bb(u8, u8, u16); -extern void dp01_build_cmdbuf_x23_aa_0(u8, u16); +extern void Emitcmd33(u8, u8, u16); +extern void Emitcmd35(u8, u16); extern void nullsub_14(void); extern void PrepareBagForWallyTutorial(void); @@ -72,8 +71,8 @@ extern void sub_804777C(); extern void sub_8043DFC(); extern bool8 IsDoubleBattle(void); extern void c3_0802FDF4(u8); -extern void sub_802ECF0(void); -extern void sub_8031AF4(); +extern void PlayerHandlecmd1(void); +extern void LoadPlayerTrainerBankSprite(); extern u8 GetBankIdentity(u8); extern void sub_80313A0(struct Sprite *); extern u8 GetBankByPlayerAI(u8); @@ -90,7 +89,7 @@ extern void sub_80E43C0(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void sub_8030E38(struct Sprite *); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern u8 sub_8046400(); extern u8 sub_8077ABC(); extern u8 sub_8077F68(); @@ -98,6 +97,8 @@ extern u8 sub_8079E90(); extern void sub_80312F0(struct Sprite *); extern bool8 move_anim_start_t3(); +// this file's functions + void WallyBufferRunCommand(void); void sub_81374FC(void); void sub_81376B8(void); @@ -107,6 +108,130 @@ void sub_8138294(u8); void sub_81390D0(void); void sub_8139A2C(u8); +void WallyHandleGetAttributes(void); +void WallyHandlecmd1(void); +void WallyHandleSetAttributes(void); +void WallyHandlecmd3(void); +void WallyHandleLoadPokeSprite(void); +void WallyHandleSendOutPoke(void); +void WallyHandleReturnPokeToBall(void); +void WallyHandleTrainerThrow(void); +void WallyHandleTrainerSlide(void); +void WallyHandleTrainerSlideBack(void); +void WallyHandlecmd10(void); +void WallyHandlecmd11(void); +void WallyHandlecmd12(void); +void WallyHandleBallThrow(void); +void WallyHandlePuase(void); +void WallyHandleMoveAnimation(void); +void WallyHandlePrintString(void); +void WallyHandlePrintStringPlayerOnly(void); +void WallyHandlecmd18(void); +void WallyHandlecmd19(void); +void WallyHandlecmd20(void); +void WallyHandleOpenBag(void); +void WallyHandlecmd22(void); +void WallyHandlecmd23(void); +void WallyHandleHealthBarUpdate(void); +void WallyHandleExpBarUpdate(void); +void WallyHandleStatusIconUpdate(void); +void WallyHandleStatusAnimation(void); +void WallyHandleStatusXor(void); +void WallyHandlecmd29(void); +void WallyHandleDMATransfer(void); +void WallyHandlecmd31(void); +void WallyHandlecmd32(void); +void WallyHandlecmd33(void); +void WallyHandlecmd34(void); +void WallyHandlecmd35(void); +void WallyHandlecmd36(void); +void WallyHandlecmd37(void); +void WallyHandlecmd38(void); +void WallyHandlecmd39(void); +void WallyHandlecmd40(void); +void WallyHandleHitAnimation(void); +void WallyHandlecmd42(void); +void WallyHandleEffectivenessSound(void); +void WallyHandlecmd44(void); +void WallyHandleFaintingCry(void); +void WallyHandleIntroSlide(void); +void WallyHandleTrainerBallThrow(void); +void WallyHandlecmd48(void); +void WallyHandlecmd49(void); +void WallyHandlecmd50(void); +void WallyHandleSpriteInvisibility(void); +void WallyHandleBattleAnimation(void); +void WallyHandleLinkStandbyMsg(void); +void WallyHandleResetActionMoveSelection(void); +void WallyHandlecmd55(void); +void WallyHandlecmd56(void); + +// const data + +typedef void (*BattleBufferCmd) (void); +static const BattleBufferCmd gWallyBufferCommands[] = +{ + WallyHandleGetAttributes, + WallyHandlecmd1, + WallyHandleSetAttributes, + WallyHandlecmd3, + WallyHandleLoadPokeSprite, + WallyHandleSendOutPoke, + WallyHandleReturnPokeToBall, + WallyHandleTrainerThrow, + WallyHandleTrainerSlide, + WallyHandleTrainerSlideBack, + WallyHandlecmd10, + WallyHandlecmd11, + WallyHandlecmd12, + WallyHandleBallThrow, + WallyHandlePuase, + WallyHandleMoveAnimation, + WallyHandlePrintString, + WallyHandlePrintStringPlayerOnly, + WallyHandlecmd18, + WallyHandlecmd19, + WallyHandlecmd20, + WallyHandleOpenBag, + WallyHandlecmd22, + WallyHandlecmd23, + WallyHandleHealthBarUpdate, + WallyHandleExpBarUpdate, + WallyHandleStatusIconUpdate, + WallyHandleStatusAnimation, + WallyHandleStatusXor, + WallyHandlecmd29, + WallyHandleDMATransfer, + WallyHandlecmd31, + WallyHandlecmd32, + WallyHandlecmd33, + WallyHandlecmd34, + WallyHandlecmd35, + WallyHandlecmd36, + WallyHandlecmd37, + WallyHandlecmd38, + WallyHandlecmd39, + WallyHandlecmd40, + WallyHandleHitAnimation, + WallyHandlecmd42, + WallyHandleEffectivenessSound, + WallyHandlecmd44, + WallyHandleFaintingCry, + WallyHandleIntroSlide, + WallyHandleTrainerBallThrow, + WallyHandlecmd48, + WallyHandlecmd49, + WallyHandlecmd50, + WallyHandleSpriteInvisibility, + WallyHandleBattleAnimation, + WallyHandleLinkStandbyMsg, + WallyHandleResetActionMoveSelection, + WallyHandlecmd55, + WallyHandlecmd56, +}; + +// code + void unref_sub_8137220(void) { } @@ -146,7 +271,7 @@ void sub_81372BC(void) if (r4 == 0) { PlaySE(SE_SELECT); - dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + Emitcmd33(1, 0, 0); WallyBufferExecCompleted(); ewram[0x160A8]++; ewram[0x160A9] = r4; @@ -158,7 +283,7 @@ void sub_81372BC(void) if (r4 == 0) { PlaySE(SE_SELECT); - dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + Emitcmd33(1, 0, 0); WallyBufferExecCompleted(); ewram[0x160A8]++; ewram[0x160A9] = r4; @@ -169,7 +294,7 @@ void sub_81372BC(void) r4 = --ewram[0x160AA]; if (r4 == 0) { - dp01_build_cmdbuf_x21_a_bb(1, 9, 0); + Emitcmd33(1, 9, 0); WallyBufferExecCompleted(); ewram[0x160A8]++; ewram[0x160A9] = r4; @@ -191,7 +316,7 @@ void sub_81372BC(void) { PlaySE(SE_SELECT); DestroyMenuCursor(); - dp01_build_cmdbuf_x21_a_bb(1, 1, 0); + Emitcmd33(1, 1, 0); WallyBufferExecCompleted(); } break; @@ -241,7 +366,7 @@ void sub_81374FC(void) if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) { - dp01_build_cmdbuf_x23_aa_0(1, gScriptItemId); + Emitcmd35(1, gScriptItemId); WallyBufferExecCompleted(); } } @@ -359,7 +484,7 @@ void WallyBufferExecCompleted(void) { u8 multiplayerId = GetMultiplayerId(); - dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId); + PrepareBufferDataTransferLink(2, 4, &multiplayerId); gBattleBufferA[gActiveBank][0] = 0x38; } else @@ -374,7 +499,7 @@ void unref_sub_81379E4(void) WallyBufferExecCompleted(); } -void dp01t_00_5_getattr(void) +void WallyHandleGetAttributes(void) { u8 arr[0x100]; u32 r6 = 0; @@ -395,7 +520,7 @@ void dp01t_00_5_getattr(void) r4 >>= 1; } } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, arr); + Emitcmd29(1, r6, arr); WallyBufferExecCompleted(); } @@ -704,12 +829,12 @@ u32 sub_8137A84(u8 a, u8 *buffer) return size; } -void sub_8138230(void) +void WallyHandlecmd1(void) { - sub_802ECF0(); + PlayerHandlecmd1(); } -void sub_813823C(void) +void WallyHandleSetAttributes(void) { u8 r4; u8 i; @@ -948,22 +1073,22 @@ void sub_8138294(u8 a) sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } -void sub_8138C90(void) +void WallyHandlecmd3(void) { WallyBufferExecCompleted(); } -void sub_8138C9C(void) +void WallyHandleLoadPokeSprite(void) { WallyBufferExecCompleted(); } -void sub_8138CA8(void) +void WallyHandleSendOutPoke(void) { WallyBufferExecCompleted(); } -void sub_8138CB4(void) +void WallyHandleReturnPokeToBall(void) { if (gBattleBufferA[gActiveBank][1] == 0) { @@ -979,9 +1104,9 @@ void sub_8138CB4(void) } } -void sub_8138D38(void) +void WallyHandleTrainerThrow(void) { - sub_8031AF4(2, gActiveBank); + LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -994,9 +1119,9 @@ void sub_8138D38(void) gBattleBankFunc[gActiveBank] = sub_813741C; } -void sub_8138E04(void) +void WallyHandleTrainerSlide(void) { - sub_8031AF4(2, gActiveBank); + LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -1009,22 +1134,22 @@ void sub_8138E04(void) gBattleBankFunc[gActiveBank] = sub_8137908; } -void sub_8138ED0(void) +void WallyHandleTrainerSlideBack(void) { WallyBufferExecCompleted(); } -void sub_8138EDC(void) +void WallyHandlecmd10(void) { WallyBufferExecCompleted(); } -void sub_8138EE8(void) +void WallyHandlecmd11(void) { WallyBufferExecCompleted(); } -void sub_8138EF4(void) +void WallyHandlecmd12(void) { ewram17840.unk8 = 4; gDoingBattleAnim = TRUE; @@ -1032,7 +1157,7 @@ void sub_8138EF4(void) gBattleBankFunc[gActiveBank] = bx_wait_t5; } -void sub_8138F44(void) +void WallyHandleBallThrow(void) { u8 val = gBattleBufferA[gActiveBank][1]; @@ -1042,12 +1167,12 @@ void sub_8138F44(void) gBattleBankFunc[gActiveBank] = bx_wait_t5; } -void sub_8138FA0(void) +void WallyHandlePuase(void) { WallyBufferExecCompleted(); } -void sub_8138FAC(void) +void WallyHandleMoveAnimation(void) { u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); @@ -1081,7 +1206,7 @@ void sub_81390D0(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 == 1) + if (ewram17800[gActiveBank].substituteSprite == 1) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -1098,7 +1223,7 @@ void sub_81390D0(void) if (!gAnimScriptActive) { sub_80326EC(1); - if (ewram17800[gActiveBank].unk0_2 == 1) + if (ewram17800[gActiveBank].substituteSprite == 1) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17810[gActiveBank].unk4 = 3; } @@ -1115,7 +1240,7 @@ void sub_81390D0(void) } } -void sub_8139208(void) +void WallyHandlePrintString(void) { u16 *ptr; @@ -1129,15 +1254,15 @@ void sub_8139208(void) gBattleBankFunc[gActiveBank] = sub_8137454; } -void dp01t_11_5_message_for_player_only(void) +void WallyHandlePrintStringPlayerOnly(void) { if (GetBankSide(gActiveBank) == 0) - sub_8139208(); + WallyHandlePrintString(); else WallyBufferExecCompleted(); } -void sub_8139298(void) +void WallyHandlecmd18(void) { s32 i; @@ -1162,12 +1287,12 @@ void sub_8139298(void) sub_8002F44(&gUnknown_03004210); } -void sub_8139378(void) +void WallyHandlecmd19(void) { WallyBufferExecCompleted(); } -void sub_8139384(void) +void WallyHandlecmd20(void) { switch (ewram[0x160A9]) { @@ -1182,31 +1307,31 @@ void sub_8139384(void) { DestroyMenuCursor(); PlaySE(SE_SELECT); - dp01_build_cmdbuf_x21_a_bb(1, 10, 256); + Emitcmd33(1, 10, 256); WallyBufferExecCompleted(); } break; } } -void sub_81393EC(void) +void WallyHandleOpenBag(void) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gBattleBankFunc[gActiveBank] = sub_81374C4; gBankInMenu = gActiveBank; } -void sub_813942C(void) +void WallyHandlecmd22(void) { WallyBufferExecCompleted(); } -void sub_8139438(void) +void WallyHandlecmd23(void) { WallyBufferExecCompleted(); } -void sub_8139444(void) +void WallyHandleHealthBarUpdate(void) { s16 r7; @@ -1229,87 +1354,87 @@ void sub_8139444(void) gBattleBankFunc[gActiveBank] = sub_81377B0; } -void sub_8139544(void) +void WallyHandleExpBarUpdate(void) { WallyBufferExecCompleted(); } -void sub_8139550(void) +void WallyHandleStatusIconUpdate(void) { WallyBufferExecCompleted(); } -void sub_813955C(void) +void WallyHandleStatusAnimation(void) { WallyBufferExecCompleted(); } -void sub_8139568(void) +void WallyHandleStatusXor(void) { WallyBufferExecCompleted(); } -void sub_8139574(void) +void WallyHandlecmd29(void) { WallyBufferExecCompleted(); } -void sub_8139580(void) +void WallyHandleDMATransfer(void) { WallyBufferExecCompleted(); } -void sub_813958C(void) +void WallyHandlecmd31(void) { WallyBufferExecCompleted(); } -void sub_8139598(void) +void WallyHandlecmd32(void) { WallyBufferExecCompleted(); } -void sub_81395A4(void) +void WallyHandlecmd33(void) { WallyBufferExecCompleted(); } -void sub_81395B0(void) +void WallyHandlecmd34(void) { WallyBufferExecCompleted(); } -void sub_81395BC(void) +void WallyHandlecmd35(void) { WallyBufferExecCompleted(); } -void sub_81395C8(void) +void WallyHandlecmd36(void) { WallyBufferExecCompleted(); } -void sub_81395D4(void) +void WallyHandlecmd37(void) { WallyBufferExecCompleted(); } -void sub_81395E0(void) +void WallyHandlecmd38(void) { WallyBufferExecCompleted(); } -void sub_81395EC(void) +void WallyHandlecmd39(void) { WallyBufferExecCompleted(); } -void sub_81395F8(void) +void WallyHandlecmd40(void) { WallyBufferExecCompleted(); } -void sub_8139604(void) +void WallyHandleHitAnimation(void) { if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) { @@ -1324,37 +1449,37 @@ void sub_8139604(void) } } -void sub_8139674(void) +void WallyHandlecmd42(void) { WallyBufferExecCompleted(); } -void sub_8139680(void) +void WallyHandleEffectivenessSound(void) { PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); WallyBufferExecCompleted(); } -void sub_81396B0(void) +void WallyHandlecmd44(void) { PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); WallyBufferExecCompleted(); } -void sub_81396E0(void) +void WallyHandleFaintingCry(void) { PlayCry1(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), 25); WallyBufferExecCompleted(); } -void dp01t_2E_5_battle_intro(void) +void WallyHandleIntroSlide(void) { sub_80E43C0(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; WallyBufferExecCompleted(); } -void sub_8139750(void) +void WallyHandleTrainerBallThrow(void) { u8 paletteNum; u8 taskId; @@ -1365,7 +1490,7 @@ void sub_8139750(void) gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); paletteNum = AllocSpritePalette(0xD6F8); LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32); @@ -1382,7 +1507,7 @@ void sub_81398BC(u8 bank) { u16 species; - ewram17800[bank].unk2 = 0; + ewram17800[bank].transformedSpecies = 0; gBattlePartyID[bank] = gBattleBufferA[bank][1]; species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); @@ -1421,7 +1546,7 @@ void sub_8139A2C(u8 taskId) } } -void sub_8139AA0(void) +void WallyHandlecmd48(void) { if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) { @@ -1435,22 +1560,22 @@ void sub_8139AA0(void) } } -void sub_8139B20(void) +void WallyHandlecmd49(void) { WallyBufferExecCompleted(); } -void sub_8139B2C(void) +void WallyHandlecmd50(void) { WallyBufferExecCompleted(); } -void sub_8139B38(void) +void WallyHandleSpriteInvisibility(void) { WallyBufferExecCompleted(); } -void sub_8139B44(void) +void WallyHandleBattleAnimation(void) { u8 val2 = gBattleBufferA[gActiveBank][1]; u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); @@ -1461,17 +1586,17 @@ void sub_8139B44(void) gBattleBankFunc[gActiveBank] = sub_8137940; } -void sub_8139BA0(void) +void WallyHandleLinkStandbyMsg(void) { WallyBufferExecCompleted(); } -void sub_8139BAC(void) +void WallyHandleResetActionMoveSelection(void) { WallyBufferExecCompleted(); } -void sub_8139BB8(void) +void WallyHandlecmd55(void) { gBattleOutcome = gBattleBufferA[gActiveBank][1]; FadeOutMapMusic(5); @@ -1481,6 +1606,6 @@ void sub_8139BB8(void) gBattleBankFunc[gActiveBank] = sub_813746C; } -void nullsub_80(void) +void WallyHandlecmd56(void) { } diff --git a/src/battle_interface.c b/src/battle/battle_interface.c index 246bda62b..0741ad33a 100644 --- a/src/battle_interface.c +++ b/src/battle/battle_interface.c @@ -2501,7 +2501,7 @@ static void sub_8045458(u8 a, u8 b) if (GetBankSide(r4) != 0) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[r4]], MON_DATA_SPECIES); - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) { r4 = gSprites[a].data5; if (b != 0) diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c new file mode 100644 index 000000000..a3cc320ad --- /dev/null +++ b/src/battle/battle_message.c @@ -0,0 +1,959 @@ +#include "global.h" +#include "battle_message.h" +#include "battle.h" +#include "item.h" +#include "items.h" +#include "pokemon.h" +#include "data2.h" +#include "text.h" +#include "string_util.h" +#include "link.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "flags.h" + +#define BATTLESTRING_TO_SUB 12 +#define BATTLESTRINGS_NO 351 +#define BATTLESTRINGS_MAX BATTLESTRINGS_NO + BATTLESTRING_TO_SUB + +extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO]; + +extern u16 gLastUsedItem; +extern u8 gLastUsedAbility; +extern u8 gActiveBank; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gStringBank; +extern u8 gEffectBank; +extern u8 gAbilitiesPerBank[4]; +extern u8 gBattleTextBuff1[]; +extern u8 gBattleTextBuff2[]; +extern u8 gBattleTextBuff3[]; +extern u8 gStringVar1[]; +extern u8 gStringVar2[]; +extern u8 gStringVar3[]; +extern u16 gBattleTypeFlags; +extern u16 gTrainerBattleOpponent; +extern u8 gDisplayedStringBattle[]; +extern u8 gStringVar1[]; +extern u8 gStringVar2[]; +extern u8 gStringVar3[]; +extern u16 gBattlePartyID[4]; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gBattleBufferA[4][0x200]; + +extern const u8 gUnknown_084005DB[]; +extern const u8 gUnknown_084005C7[]; +extern const u8 gUnknown_084005AA[]; +extern const u8 gUnknown_08400568[]; +extern const u8 gUnknown_08400590[]; +extern const u8 gUnknown_0840057B[]; +extern const u8 gUnknown_08400555[]; +extern const u8 gUnknown_084006F1[]; +extern const u8 gUnknown_084006A4[]; +extern const u8 gUnknown_0840069C[]; +extern const u8 gUnknown_0840065C[]; +extern const u8 gUnknown_08400645[]; +extern const u8 gUnknown_08400608[]; +extern const u8 gUnknown_08400635[]; +extern const u8 gUnknown_084005F5[]; +extern const u8 gUnknown_08400709[]; +extern const u8 gUnknown_08400727[]; +extern const u8 gUnknown_08400736[]; +extern const u8 gUnknown_08400749[]; +extern const u8 gUnknown_08400781[]; +extern const u8 gUnknown_08400771[]; +extern const u8 gUnknown_0840075E[]; +extern const u8 gUnknown_084006B3[]; +extern const u8 gUnknown_084006BB[]; +extern const u8 gUnknown_084006C6[]; +extern const u8 gUnknown_084006D5[]; +extern const u8 gUnknown_0840068C[]; +extern const u8 gUnknown_0840067C[]; +extern const u8 gUnknown_08400622[]; +extern const u8 gUnknown_084007BD[]; +extern const u8 gUnknown_083FFEFC[]; +extern const u8 gUnknown_083FFFF7[]; +extern const u8 gUnknown_083FFFEA[]; +extern const u8 gUnknown_083FFF6A[]; +extern const u8 gUnknown_083FFF99[]; +extern const u8 gUnknown_083FFFCB[]; +extern const u8 gUnknown_083FFF56[]; +extern const u8 gUnknown_083FFF81[]; +extern const u8 gUnknown_083FFFB3[]; +extern const u8 gUnknown_08400A78[]; +extern const u8 gUnknown_08400A85[]; +extern const u8 gUnknown_08400797[]; +extern const u8 gUnknown_08400791[]; +extern const u8 gUnknown_084007B7[]; +extern const u8 gUnknown_084007B2[]; +extern const u8 gUnknown_0840079C[]; +extern const u8 gUnknown_084007A1[]; +extern const u8 gUnknown_084007A7[]; +extern const u8 gUnknown_084007AC[]; +extern const u8 gUnknown_084009ED[]; +extern const u8 gUnknown_084009F7[]; +extern const u8 gUnknown_084007C8[]; +extern const u8 gUnknown_084007CA[]; +extern const u8 gUnknown_084007CC[]; +extern const u8 gUnknown_084007CE[]; +extern const u8 gUnknown_084007D0[]; +extern const u8 gUnknown_08400E5E[]; +extern const u8 gUnknown_08400E62[]; + +extern const u16 gUnknown_084016BC[]; // a table of moves + +extern const u8* const gUnknown_08401674[]; // table of pointers to 'a -TYPE' strings +extern const u8* const gUnknown_08400F58[]; // table of pointers to stat strings +extern const u8* const gUnknown_08400F78[]; // table of pointers to flavour strings + +struct StatusFlagString +{ + u8* flag; + u8* ptr; +}; + +extern const struct StatusFlagString gUnknown_081FA6D4[7]; // status flag/text +extern const u8 gUnknown_084017A8[8]; // empty flags + +extern struct StringInfoBattle* gSelectedOrderFromParty; +#define gStringInfo gSelectedOrderFromParty + +void sub_8121D1C(u8* textBuff); +void sub_8121D74(u8* textBuff); +void StrCpyDecodeBattleTextBuff(u8* src, u8* dst); + +u8 GetBankSide(u8 bank); +s32 sub_803FC34(u16); +void get_trainer_name(u8* dst); +u8 get_trainer_class_name_index(void); +u8 sub_8135FD8(void); +u8 GetMultiplayerId(void); +u8 GetBankByPlayerAI(u8 ID); +u8 GetBankSide(u8 bank); +u8 GetBankIdentity(u8 bank); +#ifdef GERMAN +extern u8 *de_sub_804110C(); +#endif + +void BufferStringBattle(u16 stringID) +{ + int i; + const u8* stringPtr = NULL; + + gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]); + gLastUsedItem = gStringInfo->lastItem; + gLastUsedAbility = gStringInfo->lastAbility; + BATTLE_STRUCT->scriptingActive = gStringInfo->scrActive; + BATTLE_STRUCT->unk1605E = gStringInfo->unk1605E; + BATTLE_STRUCT->hpScale = gStringInfo->hpScale; + gStringBank = gStringInfo->StringBank; + BATTLE_STRUCT->stringMoveType = gStringInfo->moveType; + for (i = 0; i < 4; i++) + { + gAbilitiesPerBank[i] = gStringInfo->abilities[i]; + } + for (i = 0; i < 0x10; i++) + { + gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i]; + gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i]; + gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i]; + } + switch (stringID) + { + case 0: // first battle msg + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_084005DB; + else + stringPtr = gUnknown_084005C7; + } + else + { + stringPtr = gUnknown_084005AA; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + stringPtr = gUnknown_08400568; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles + stringPtr = gUnknown_08400590; + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + stringPtr = gUnknown_0840057B; + else + stringPtr = gUnknown_08400555; + } + break; + case 1: // poke first send-out + if (GetBankSide(gActiveBank) == 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_084006F1; + else + stringPtr = gUnknown_084006A4; + } + else + stringPtr = gUnknown_0840069C; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_0840065C; + else if (gBattleTypeFlags & BATTLE_TYPE_LINK) + stringPtr = gUnknown_08400645; + else + { + stringPtr = gUnknown_08400608; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_LINK) + stringPtr = gUnknown_08400635; + else + { + stringPtr = gUnknown_084005F5; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + break; + case 2: // sending poke to ball msg + if (GetBankSide(gActiveBank) == 0) + { + if (BATTLE_STRUCT->hpScale == 0) + stringPtr = gUnknown_08400709; + else if (BATTLE_STRUCT->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = gUnknown_08400727; + else if (BATTLE_STRUCT->hpScale == 2) + stringPtr = gUnknown_08400736; + else + stringPtr = gUnknown_08400749; + } + else + { + if (gTrainerBattleOpponent == 0x800) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_08400781; + else + stringPtr = gUnknown_08400771; + } + else + { + stringPtr = gUnknown_0840075E; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + break; + case 3: // switch-in msg + if (GetBankSide(BATTLE_STRUCT->scriptingActive) == 0) + { + if (BATTLE_STRUCT->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = gUnknown_084006B3; + else if (BATTLE_STRUCT->hpScale == 1) + stringPtr = gUnknown_084006BB; + else if (BATTLE_STRUCT->hpScale == 2) + stringPtr = gUnknown_084006C6; + else + stringPtr = gUnknown_084006D5; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_0840068C; + else + stringPtr = gUnknown_0840067C; + } + else + { + stringPtr = gUnknown_08400622; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + break; + case 4: // pokemon used a move msg + sub_8121D1C(gBattleTextBuff1); + if (gStringInfo->currentMove > 0x162) + StringCopy(gBattleTextBuff2, gUnknown_08401674[BATTLE_STRUCT->stringMoveType]); + else + StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]); + sub_8121D74(gBattleTextBuff2); + stringPtr = gUnknown_084007BD; + break; + case 5: // battle end + if (gBattleTextBuff1[0] & 0x80) + { + gBattleTextBuff1[0] &= ~(0x80); + if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3) + gBattleTextBuff1[0] ^= 3; + if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW) + stringPtr = gUnknown_083FFEFC; + else + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_083FFFF7; + else + stringPtr = gUnknown_083FFFEA; + } + } + else + { + if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3) + gBattleTextBuff1[0] ^= 3; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + stringPtr = gUnknown_083FFF6A; + break; + case BATTLE_LOST: + stringPtr = gUnknown_083FFF99; + break; + case BATTLE_DREW: + stringPtr = gUnknown_083FFFCB; + break; + } + } + else + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + stringPtr = gUnknown_083FFF56; + break; + case BATTLE_LOST: + stringPtr = gUnknown_083FFF81; + break; + case BATTLE_DREW: + stringPtr = gUnknown_083FFFB3; + break; + } + } + } + break; + default: // load a string from the table + if (stringID >= BATTLESTRINGS_MAX) + { + gDisplayedStringBattle[0] = EOS; + return; + } + else + { + stringPtr = gBattleStringsTable[stringID - BATTLESTRING_TO_SUB]; +#ifdef GERMAN + stringPtr = de_sub_804110C(stringID, stringPtr); +#endif + } + break; + } + StrCpyDecodeToDisplayedStringBattle(stringPtr); +} + +u32 StrCpyDecodeToDisplayedStringBattle(const u8* src) +{ + StrCpyDecodeBattle(src, gDisplayedStringBattle); +} + +const u8* AppendStatusString(u8* src) +{ + u32 i; + u8 status[8]; + u32 flag1, flag2; + u8* statusPtr; + + memcpy(status, gUnknown_084017A8, 8); + + statusPtr = status; + for (i = 0; i < sizeof(struct StatusFlagString); i++) + { + if (*src == EOS) + break; + *statusPtr = *src; + src++; + statusPtr++; + } + flag1 = *(u32*)(&status[0]); + flag2 = *(u32*)(&status[4]); + for (i = 0; i < 7; i++) + { + if (flag1 == *(u32*)(&gUnknown_081FA6D4[i].flag[0]) && flag2 == *(u32*)(&gUnknown_081FA6D4[i].flag[4])) + return gUnknown_081FA6D4[i].ptr; + } + return NULL; +} + +#ifdef GERMAN +extern u8 *de_sub_8073174(u8 *, const u8 *); +extern u8 *de_sub_8041024(s32, u32); +#endif + +#ifdef ENGLISH +#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \ + if (GetBankSide(bank) != 0) \ + { \ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + toCpy = gUnknown_08400797; \ + else \ + toCpy = gUnknown_08400791; \ + while (*toCpy != EOS) \ + { \ + dst[dstID] = *toCpy; \ + dstID++; \ + toCpy++; \ + } \ + GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + else \ + { \ + GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + StringGetEnd10(text); \ + toCpy = text; +#else +#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \ + if (GetBankSide(bank) != 0) \ + { \ + GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ + StringGetEnd10(text); \ + toCpy = text; \ + while (*toCpy != EOS) \ + { \ + dst[dstID] = *toCpy; \ + dstID++; \ + toCpy++; \ + } \ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + toCpy = gUnknown_08400797; \ + else \ + toCpy = gUnknown_08400791; \ + } \ + else \ + { \ + GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ + StringGetEnd10(text); \ + toCpy = text; \ + } +#endif + +u32 StrCpyDecodeBattle(const u8* src, u8* dst) +{ + u32 dstID = 0; // if they used dstID, why not use srcID as well? + const u8* toCpy = NULL; + u8 text[12]; + u8 multiplayerID = GetMultiplayerId(); + + while (*src != EOS) + { + if (*src == 0xFD) + { + src++; + switch (*src) + { + case 0: + if (gBattleTextBuff1[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff1, gStringVar1); + toCpy = gStringVar1; + } + else + { + toCpy = AppendStatusString(gBattleTextBuff1); + if (toCpy == 0) + toCpy = gBattleTextBuff1; + } + break; + case 1: + if (gBattleTextBuff2[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff2, gStringVar2); + toCpy = gStringVar2; + } + else + toCpy = gBattleTextBuff2; + break; + case 42: + if (gBattleTextBuff3[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff3, gStringVar3); + toCpy = gStringVar3; + } + else + toCpy = gBattleTextBuff3; + break; + case 2: // first player poke name + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(0)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 3: // first enemy poke name + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(1)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 4: // second player poke name + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(2)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 5: // second enemy poke name + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(3)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 6: // link first player poke name + GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 7: // link first opponent poke name + GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 8: // link second player poke name + GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 9: // link second opponent poke name + GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 10: // attacker name with prefix, only bank 0/1 + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)]) + break; + case 11: // attacker partner name, only bank 0/1 + if (GetBankSide(gBankAttacker) == 0) + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); + else + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 12: // attacker name with prefix + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker]) + break; + case 13: // target name with prefix + HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget]) + break; + case 14: // effect bank name with prefix + HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank]) + break; + case 15: // active bank name with prefix + HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank]) + break; + case 16: // scripting active bank name with prefix + HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, gBattlePartyID[BATTLE_STRUCT->scriptingActive]) + break; + case 17: // current move name + if (gStringInfo->currentMove > 0x162) + toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType]; + else + toCpy = gMoveNames[gStringInfo->currentMove]; + break; + case 18: // last used move name + if (gStringInfo->lastMove > 0x162) + toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType]; + else + toCpy = gMoveNames[gStringInfo->lastMove]; + break; + case 19: // last used item + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) + { + StringCopy(text, gEnigmaBerries[gStringBank].name); +#ifdef ENGLISH + StringAppend(text, gUnknown_08400A85); +#else + de_sub_8073174(text, gUnknown_08400A85); +#endif + toCpy = text; + } + else + toCpy = gUnknown_08400A78; + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + break; + case 20: // last used ability + toCpy = gAbilityNames[gLastUsedAbility]; + break; + case 21: // attacker ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]]; + break; + case 22: // target ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]]; + break; + case 23: // scripting active ability + toCpy = gAbilityNames[gAbilitiesPerBank[BATTLE_STRUCT->scriptingActive]]; + break; + case 24: // effect bank ability + toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]]; + break; + case 25: // trainer class name +#ifdef ENGLISH + if (gTrainerBattleOpponent == 0x400) + toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()]; + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + toCpy = gTrainerClassNames[get_trainer_class_name_index()]; + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + toCpy = gTrainerClassNames[sub_8135FD8()]; + else + toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent].trainerClass]; + break; +#else + if (gTrainerBattleOpponent == 0x400) + toCpy = de_sub_8041024(gTrainerBattleOpponent, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + toCpy = de_sub_8041024(BATTLE_TYPE_BATTLE_TOWER, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + toCpy = de_sub_8041024(BATTLE_TYPE_EREADER_TRAINER, 0); + else + toCpy = de_sub_8041024(0, gTrainerBattleOpponent); + break; +#endif + case 26: // trainer name + if (gTrainerBattleOpponent == 0x400) + { + memset(text, 0xFF, 8); + memcpy(text, &ewram[0x17002], 7); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + { + get_trainer_name(text); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + { + sub_8135FF4(text); + toCpy = text; + } + else + toCpy = gTrainers[gTrainerBattleOpponent].trainerName; + break; + case 27: // link player name? + toCpy = gLinkPlayers[multiplayerID].name; + break; + case 28: // link partner name? + toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 29: // link opponent 1 name? + toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 30: // link opponent 2 name? + toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 31: // link scripting active name + toCpy = gLinkPlayers[sub_803FC34(BATTLE_STRUCT->scriptingActive)].name; + break; + case 32: // player name + toCpy = gSaveBlock2.playerName; + break; + case 33: // ? + toCpy = sub_8082830(); + break; + case 34: // ? + HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, BATTLE_STRUCT->unk1605E) + break; + case 35: // lanette pc + if (FlagGet(SYS_PC_LANETTE)) + toCpy = gUnknown_084009F7; + else + toCpy = gUnknown_084009ED; + break; + case 38: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007AC; + else + toCpy = gUnknown_084007A7; + break; + case 39: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007AC; + else + toCpy = gUnknown_084007A7; + break; + case 36: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007A1; + else + toCpy = gUnknown_0840079C; + break; + case 37: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007A1; + else + toCpy = gUnknown_0840079C; + break; + case 40: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007B7; + else + toCpy = gUnknown_084007B2; + break; + case 41: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007B7; + else + toCpy = gUnknown_084007B2; + break; + } + //if (toCpy != NULL) really GF, why did you forget about this? + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + if (*src == 33) + { + dst[dstID] = 0xFC; + dstID++; + dst[dstID] = 9; + dstID++; + } + } + else + { + dst[dstID] = *src; + dstID++; + } + src++; + } + dst[dstID] = *src; + dstID++; + return dstID; +} + +#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) + +void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) +{ + u32 srcID = 1; + u32 value = 0; + u8 text[12]; + u16 hword; + + *dst = EOS; + while (src[srcID] != EOS) + { + switch (src[srcID]) + { + case 0: // battle string + hword = ByteRead16(&src[srcID + 1]); +#ifdef GERMAN + if (hword == 209 || hword == 211) + srcID += 3; +#endif + StringAppend(dst, gBattleStringsTable[hword - BATTLESTRING_TO_SUB]); + srcID += 3; + break; + case 1: // int to string + switch (src[srcID + 1]) + { + case 1: + value = src[srcID + 3]; + break; + case 2: + value = ByteRead16(&src[srcID + 3]); + break; + case 4: + value = ByteRead32(&src[srcID + 3]); + break; + } + ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]); + srcID += src[srcID + 1] + 3; + break; + case 2: // move name + StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]); + srcID += 3; + break; + case 3: // type name + StringAppend(dst, gTypeNames[src[srcID + 1]]); + srcID += 2; + break; + case 4: // poke nick with prefix +#ifdef ENGLISH + if (GetBankSide(src[srcID + 1]) == 0) + { + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + StringAppend(dst, gUnknown_08400797); + else + StringAppend(dst, gUnknown_08400791); + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + StringGetEnd10(text); + StringAppend(dst, text); +#else + if (GetBankSide(src[srcID + 1]) == 0) + { + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + StringAppend(dst, text); + } + else + { + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + StringAppend(dst, text); + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + StringAppend(dst, gUnknown_08400797); + else + StringAppend(dst, gUnknown_08400791); + } +#endif + srcID += 3; + break; + case 5: // stats + StringAppend(dst, gUnknown_08400F58[src[srcID + 1]]); + srcID += 2; + break; + case 6: // species name + GetSpeciesName(dst, ByteRead16(&src[srcID + 1])); + srcID += 3; + break; + case 7: // poke nick without prefix + if (GetBankSide(src[srcID + 1]) == 0) + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + else + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + StringGetEnd10(dst); + srcID += 3; + break; + case 8: // flavour table + StringAppend(dst, gUnknown_08400F78[src[srcID + 1]]); + srcID += 2; + break; + case 9: // ability names + StringAppend(dst, gAbilityNames[src[srcID + 1]]); + srcID += 2; + break; + case 10: // item name + { + hword = ByteRead16(&src[srcID + 1]); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (hword == ITEM_ENIGMA_BERRY) + { + if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) + { + StringCopy(dst, gEnigmaBerries[gStringBank].name); +#ifdef ENGLISH + StringAppend(dst, gUnknown_08400A85); +#else + de_sub_8073174(dst, gUnknown_08400A85); +#endif + } + else + StringAppend(dst, gUnknown_08400A78); + } + else + CopyItemName(hword, dst); + } + else + CopyItemName(hword, dst); + srcID += 3; + } + break; + } + } +} + +void sub_8121D1C(u8* textBuff) +{ + s32 counter = 0; + u32 i = 0; + + while (counter != 4) + { + if (gUnknown_084016BC[i] == 0) + counter++; + if (gUnknown_084016BC[i++] == gStringInfo->currentMove) + break; + } + + if (counter >= 0) + { + if (counter <= 2) + StringCopy(textBuff, gUnknown_08400E5E); // is + else if (counter <= 4) + StringCopy(textBuff, gUnknown_08400E62); // 's + } +} + +void sub_8121D74(u8* dst) +{ + s32 counter = 0; + s32 i = 0; + + while (*dst != EOS) + dst++; + + while (counter != 4) + { + if (gUnknown_084016BC[i] == 0) + counter++; + if (gUnknown_084016BC[i++] == gStringInfo->currentMove) + break; + } + + switch (counter) + { + case 0: + StringCopy(dst, gUnknown_084007C8); + break; + case 1: + StringCopy(dst, gUnknown_084007CA); + break; + case 2: + StringCopy(dst, gUnknown_084007CC); + break; + case 3: + StringCopy(dst, gUnknown_084007CE); + break; + case 4: + StringCopy(dst, gUnknown_084007D0); + break; + } +} diff --git a/src/battle_party_menu.c b/src/battle/battle_party_menu.c index 73b847713..49e0b8432 100644 --- a/src/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -35,23 +35,16 @@ extern void PartyMenuDrawHPBars(void); extern u8 sub_806B58C(u8); extern u8 GetItemEffectType(); extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int); -extern u16 sub_806BD80(); -extern u8 sub_806CA38(); extern void sub_806D5A4(void); extern void sub_802E414(void); extern void sub_80A6DCC(void); extern void sub_806AF4C(); -extern u8 sub_80F9344(void); -extern u8 sub_806B124(void); -extern void sub_806C994(); -extern void sub_806BF74(); extern void sub_806AEDC(void); extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8); extern void sub_806E7D0(u8, const struct PartyPopupMenu *); extern u8 *sub_8040D08(); extern void sub_8040B8C(void); extern void sub_806E6F0(); -extern void sub_806D538(); extern void nullsub_14(); extern void OpenPartyMenu(); extern u8 sub_803FBBC(void); @@ -586,7 +579,7 @@ static void Task_809538C(void) { do { - if (sub_806B124() == 1) + if (sub_806B124() == TRUE) { sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0); sub_806BF74(EWRAM_1B000.unk260, 0); diff --git a/src/battle_records.c b/src/battle/battle_records.c index 61dc09792..d848a10b8 100644 --- a/src/battle_records.c +++ b/src/battle/battle_records.c @@ -3,7 +3,7 @@ #include "game_stat.h" #include "link.h" #include "menu.h" -#include "rom4.h" +#include "overworld.h" #include "string_util.h" #include "strings2.h" #include "trainer_card.h" diff --git a/src/battle_setup.c b/src/battle/battle_setup.c index 04674e739..40949ed38 100644 --- a/src/battle_setup.c +++ b/src/battle/battle_setup.c @@ -18,7 +18,7 @@ #include "opponent_constants.h" #include "palette.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "safari_zone.h" #include "script.h" #include "script_pokemon_80C4.h" @@ -37,15 +37,15 @@ extern u16 gScriptResult; extern void (*gFieldCallback)(void); -EWRAM_DATA u16 gTrainerBattleMode = 0; +EWRAM_DATA static u16 sTrainerBattleMode = 0; EWRAM_DATA u16 gTrainerBattleOpponent = 0; -EWRAM_DATA u16 gTrainerMapObjectLocalId = 0; -EWRAM_DATA u8 *gTrainerIntroSpeech = NULL; -EWRAM_DATA u8 *gTrainerDefeatSpeech = NULL; -EWRAM_DATA u8 *gTrainerVictorySpeech = NULL; -EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL; -EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL; -EWRAM_DATA u8 *gTrainerBattleEndScript = NULL; +EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0; +EWRAM_DATA static u8 *sTrainerIntroSpeech = NULL; +EWRAM_DATA static u8 *sTrainerDefeatSpeech = NULL; +EWRAM_DATA static u8 *sTrainerVictorySpeech = NULL; +EWRAM_DATA static u8 *sTrainerCannotBattleSpeech = NULL; +EWRAM_DATA static u8 *sTrainerBattleScriptRetAddr = NULL; +EWRAM_DATA static u8 *sTrainerBattleEndScript = NULL; extern u16 gBattleTypeFlags; extern u16 gScriptLastTalked; @@ -62,80 +62,99 @@ extern u8 gUnknown_0819F8AE[]; extern u8 gUnknown_0819F80B[]; extern u8 gUnknown_081C6C02[]; - +// The first transition is used if the enemy pokemon are lower level than our pokemon. +// Otherwise, the second transition is used. static const u8 gBattleTransitionTable_Wild[][2] = { - {8, 9}, - {5, 10}, - {0, 10}, - {7, 6}, + {B_TRANSITION_SLICE, B_TRANSITION_WHITEFADE}, // Normal + {B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES}, // Cave + {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used + {B_TRANSITION_WAVE, B_TRANSITION_RIPPLE}, // Water }; static const u8 gBattleTransitionTable_Trainer[][2] = { - {4, 11}, - {2, 3}, - {0, 10}, - {1, 6}, + {B_TRANSITION_POKEBALLS_TRAIL, B_TRANSITION_SHARDS}, // Normal + {B_TRANSITION_SHUFFLE, B_TRANSITION_BIG_POKEBALL}, // Cave + {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used + {B_TRANSITION_SWIRL, B_TRANSITION_RIPPLE}, // Water +}; + +enum +{ + TRAINER_PARAM_LOAD_VAL_8BIT, + TRAINER_PARAM_LOAD_VAL_16BIT, + TRAINER_PARAM_LOAD_VAL_32BIT, + TRAINER_PARAM_CLEAR_VAL_8BIT, + TRAINER_PARAM_CLEAR_VAL_16BIT, + TRAINER_PARAM_CLEAR_VAL_32BIT, + TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR, +}; + +struct TrainerBattleParameter +{ + void *varPtr; + u8 ptrType; }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_0[] = -{ - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 2}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 5}, - {&gTrainerBattleEndScript, 5}, - {&gTrainerBattleScriptReturnAddress, 6}, + +static const struct TrainerBattleParameter gTrainerBattleSpecs_0[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_1[] = -{ - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 2}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 5}, - {&gTrainerBattleEndScript, 2}, - {&gTrainerBattleScriptReturnAddress, 6}, +static const struct TrainerBattleParameter gTrainerBattleSpecs_1[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_2[] = -{ - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 2}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 2}, - {&gTrainerBattleEndScript, 5}, - {&gTrainerBattleScriptReturnAddress, 6}, +static const struct TrainerBattleParameter gTrainerBattleSpecs_2[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_3[] = -{ - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 5}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 5}, - {&gTrainerBattleEndScript, 5}, - {&gTrainerBattleScriptReturnAddress, 6}, +static const struct TrainerBattleParameter gTrainerBattleSpecs_3[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_4[] = -{ - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 2}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 2}, - {&gTrainerBattleEndScript, 2}, - {&gTrainerBattleScriptReturnAddress, 6}, +static const struct TrainerBattleParameter gTrainerBattleSpecs_4[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; const struct TrainerEyeTrainer gTrainerEyeTrainers[] = @@ -424,21 +443,36 @@ const struct TrainerEyeTrainer gTrainerEyeTrainers[] = static const u16 sBadgeFlags[] = {BADGE01_GET, BADGE02_GET, BADGE03_GET, BADGE04_GET, BADGE05_GET, BADGE06_GET, BADGE07_GET, BADGE08_GET}; -void task01_battle_start(u8 taskId) +static void DoStandardWildBattle(void); +static void DoSafariBattle(void); +static void SetTrainerFlagsAfterTrainerEyeRematch(void); +static void CB2_EndWildBattle(void); +static void CB2_EndScriptedWildBattle(void); +static u8 GetWildBattleTransition(void); +static u8 GetTrainerBattleTransition(void); +static void CB2_GiveStarter(void); +static void CB2_StartFirstBattle(void); +static void CB2_EndFirstBattle(void); +static bool32 IsPlayerDefeated(u32 a1); + +#define tState data[0] +#define tTransition data[1] + +static void Task_BattleStart(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (data[0]) + switch (tState) { case 0: if (!FieldPoisonEffectIsRunning()) // is poison not active? { - sub_811AABC(data[1]); - data[0]++; // go to case 1. + BattleTransition_StartOnField(tTransition); + tState++; // go to case 1. } break; case 1: - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); @@ -449,132 +483,135 @@ void task01_battle_start(u8 taskId) } } -void task_add_01_battle_start(u8 transition, u16 song) +static void CreateBattleStartTask(u8 transition, u16 song) { - u8 taskId = CreateTask(task01_battle_start, 1); + u8 taskId = CreateTask(Task_BattleStart, 1); - gTasks[taskId].data[1] = transition; + gTasks[taskId].tTransition = transition; current_map_music_set__default_for_battle(song); } -void CheckForSafariZoneAndProceed(void) +#undef tState +#undef tTransition + +void BattleSetup_StartWildBattle(void) { if (GetSafariZoneFlag()) - StartBattle_Safari(); + DoSafariBattle(); else - StartBattle_StandardWild(); + DoStandardWildBattle(); } -void StartBattle_StandardWild(void) +static void DoStandardWildBattle(void) { ScriptContext2_Enable(); FreezeMapObjects(); sub_80597F4(); - gMain.savedCallback = HandleWildBattleEnd; + gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = 0; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_Roamer(void) +void BattleSetup_StartRoamerBattle(void) { ScriptContext2_Enable(); FreezeMapObjects(); sub_80597F4(); - gMain.savedCallback = HandleWildBattleEnd; + gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = BATTLE_TYPE_ROAMER; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_Safari(void) +static void DoSafariBattle(void) { ScriptContext2_Enable(); FreezeMapObjects(); sub_80597F4(); gMain.savedCallback = sub_80C824C; gBattleTypeFlags = BATTLE_TYPE_SAFARI; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); } -void task_add_01_battle_start_with_music_and_stats(void) +static void StartTheBattle(void) { - task_add_01_battle_start(GetTrainerBattleTransition(), 0); + CreateBattleStartTask(GetTrainerBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(9); } //Initiates battle where Wally catches Ralts -void StartBattle_WallyTutorial(void) +void ScrSpecial_StartWallyTutorialBattle(void) { CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5); ScriptContext2_Enable(); gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music; gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL; - task_add_01_battle_start(8, 0); + CreateBattleStartTask(B_TRANSITION_SLICE, 0); } -void StartBattle_ScriptedWild(void) +void BattleSetup_StartScriptedWildBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = 0; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_SouthernIsland(void) +void ScrSpecial_StartSouthernIslandBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_Rayquaza(void) +void ScrSpecial_StartRayquazaBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; - task_add_01_battle_start(0, BGM_BATTLE34); + CreateBattleStartTask(B_TRANSITION_BLUR, BGM_BATTLE34); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_GroudonKyogre(void) +void ScrSpecial_StartGroudonKyogreBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; - if (gGameVersion == 2) - task_add_01_battle_start(0xB, BGM_BATTLE34); // KYOGRE + if (gGameVersion == VERSION_RUBY) + CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON else - task_add_01_battle_start(0x6, BGM_BATTLE34); // GROUDON + CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_Regi(void) +void ScrSpecial_StartRegiBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; - task_add_01_battle_start(0xA, BGM_BATTLE36); + CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE36); IncrementGameStat(7); IncrementGameStat(8); } -void HandleWildBattleEnd(void) +static void CB2_EndWildBattle(void) { CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); ResetOamRange(0, 128); - if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE) + if (IsPlayerDefeated(gBattleOutcome) == TRUE) { SetMainCallback2(CB2_WhiteOut); } @@ -585,18 +622,18 @@ void HandleWildBattleEnd(void) } } -void HandleScriptedWildBattleEnd(void) +void CB2_EndScriptedWildBattle(void) { CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); ResetOamRange(0, 128); - if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE) + if (IsPlayerDefeated(gBattleOutcome) == TRUE) SetMainCallback2(CB2_WhiteOut); else SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } -s8 GetBattleTerrain(void) +s8 BattleSetup_GetTerrain(void) { u16 tileBehavior; s16 x, y; @@ -605,11 +642,11 @@ s8 GetBattleTerrain(void) tileBehavior = MapGridGetMetatileBehaviorAt(x, y); if (MetatileBehavior_IsTallGrass(tileBehavior)) - return 0; + return BATTLE_TERRAIN_GRASS; if (MetatileBehavior_IsLongGrass(tileBehavior)) - return 1; + return BATTLE_TERRAIN_LONG_GRASS; if (MetatileBehavior_IsSandOrDeepSand(tileBehavior)) - return 2; + return BATTLE_TERRAIN_SAND; switch (gMapHeader.mapType) { case MAP_TYPE_TOWN: @@ -618,54 +655,49 @@ s8 GetBattleTerrain(void) break; case MAP_TYPE_UNDERGROUND: if (sub_80574C4(tileBehavior)) - return 8; + return BATTLE_TERRAIN_BUILDING; if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return 5; - return 7; + return BATTLE_TERRAIN_POND; + return BATTLE_TERRAIN_CAVE; case MAP_TYPE_INDOOR: case MAP_TYPE_SECRET_BASE: - return 8; + return BATTLE_TERRAIN_BUILDING; case MAP_TYPE_UNDERWATER: - return 3; + return BATTLE_TERRAIN_UNDERWATER; case MAP_TYPE_6: if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return 4; - return 9; + return BATTLE_TERRAIN_WATER; + return BATTLE_TERRAIN_PLAIN; } if (sub_8057568(tileBehavior)) - return 4; + return BATTLE_TERRAIN_WATER; if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return 5; + return BATTLE_TERRAIN_POND; if (sub_80574D8(tileBehavior)) - return 6; + return BATTLE_TERRAIN_MOUNTAIN; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) { if (sub_8057450(tileBehavior)) - return 5; + return BATTLE_TERRAIN_POND; if (MetatileBehavior_IsBridge(tileBehavior) == TRUE) - return 4; + return BATTLE_TERRAIN_WATER; } - if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 28) - return 2; + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE113 && gSaveBlock1.location.mapNum == MAP_ID_ROUTE113) + return BATTLE_TERRAIN_SAND; if (GetSav1Weather() == 8) - return 2; - return 9; + return BATTLE_TERRAIN_SAND; + return BATTLE_TERRAIN_PLAIN; } -s8 GetBattleTransitionTypeByMap(void) +static s8 GetBattleTransitionTypeByMap(void) { - u8 flashUsed; u16 tileBehavior; s16 x, y; PlayerGetDestCoords(&x, &y); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); - - flashUsed = sav1_get_flash_used_on_map(); - - if (flashUsed) + if (Overworld_GetFlashLevel()) return 2; - if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) { switch (gMapHeader.mapType) @@ -681,7 +713,7 @@ s8 GetBattleTransitionTypeByMap(void) return 3; } -u16 GetSumOfPartyMonLevel(u8 numMons) +static u16 GetSumOfPlayerPartyLevel(u8 numMons) { u8 sum = 0; int i; @@ -701,37 +733,37 @@ u16 GetSumOfPartyMonLevel(u8 numMons) return sum; } -u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons) +static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) { u8 i; u8 sum; u32 count = numMons; void *party; - if (gTrainers[trainerNum].partySize < count) - count = gTrainers[trainerNum].partySize; + if (gTrainers[opponentId].partySize < count) + count = gTrainers[opponentId].partySize; sum = 0; - switch (gTrainers[trainerNum].partyFlags) + switch (gTrainers[opponentId].partyFlags) { case 0: - party = gTrainers[trainerNum].party; + party = gTrainers[opponentId].party; for (i = 0; i < count; i++) sum += ((struct TrainerPartyMember0 *)party)[i].level; break; case 1: - party = gTrainers[trainerNum].party; + party = gTrainers[opponentId].party; for (i = 0; i < count; i++) sum += ((struct TrainerPartyMember1 *)party)[i].level; break; case 2: - party = gTrainers[trainerNum].party; + party = gTrainers[opponentId].party; for (i = 0; i < count; i++) sum += ((struct TrainerPartyMember2 *)party)[i].level; break; case 3: - party = gTrainers[trainerNum].party; + party = gTrainers[opponentId].party; for (i = 0; i < count; i++) sum += ((struct TrainerPartyMember3 *)party)[i].level; break; @@ -740,76 +772,79 @@ u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons) return sum; } -u8 GetWildBattleTransition(void) +static u8 GetWildBattleTransition(void) { - u8 flashVar = GetBattleTransitionTypeByMap(); - u8 level = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 transitionType = GetBattleTransitionTypeByMap(); + u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 playerLevel = GetSumOfPlayerPartyLevel(1); - if (level < (u8)GetSumOfPartyMonLevel(1)) // is wild mon level than the player's mon level? - return gBattleTransitionTable_Wild[flashVar][0]; + if (enemyLevel < playerLevel) + return gBattleTransitionTable_Wild[transitionType][0]; else - return gBattleTransitionTable_Wild[flashVar][1]; // use a white fade in instead of normal transition. + return gBattleTransitionTable_Wild[transitionType][1]; } -u8 GetTrainerBattleTransition(void) +static u8 GetTrainerBattleTransition(void) { const struct Trainer *trainer; u8 minPartyCount; - u8 flashVar; - u8 level; + u8 transitionType; + u8 enemyLevel; + u8 playerLevel; if (gTrainerBattleOpponent == 1024) // link battle? - return 16; + return B_TRANSITION_STEVEN; trainer = gTrainers; if (trainer[gTrainerBattleOpponent].trainerClass == 24) // league? { if (gTrainerBattleOpponent == 261) - return 12; + return B_TRANSITION_SYDNEY; if (gTrainerBattleOpponent == 262) - return 13; + return B_TRANSITION_PHOEBE; if (gTrainerBattleOpponent == 263) - return 14; + return B_TRANSITION_GLACIA; if (gTrainerBattleOpponent == 264) - return 15; - return 16; + return B_TRANSITION_DRAKE; + return B_TRANSITION_STEVEN; } if (trainer[gTrainerBattleOpponent].trainerClass == 32) // team leader? - return 16; + return B_TRANSITION_STEVEN; if (trainer[gTrainerBattleOpponent].doubleBattle == TRUE) minPartyCount = 2; // double battles always at least have 2 pokemon. else minPartyCount = 1; - flashVar = GetBattleTransitionTypeByMap(); - level = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent, minPartyCount); - - if (level < (u8)GetSumOfPartyMonLevel(minPartyCount)) // is wild mon level than the player's mon level? - return gBattleTransitionTable_Trainer[flashVar][0]; + transitionType = GetBattleTransitionTypeByMap(); + enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent, minPartyCount); + playerLevel = GetSumOfPlayerPartyLevel(minPartyCount); + if (enemyLevel < playerLevel) // is wild mon level than the player's mon level? + return gBattleTransitionTable_Trainer[transitionType][0]; else - return gBattleTransitionTable_Trainer[flashVar][1]; + return gBattleTransitionTable_Trainer[transitionType][1]; } -u8 GetBattleTowerBattleTransition(void) +u8 BattleSetup_GetBattleTowerBattleTransition(void) { - u8 monData = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 playerLevel = GetSumOfPlayerPartyLevel(1); - if (monData < (u8)GetSumOfPartyMonLevel(1)) - return 4; + if (enemyLevel < playerLevel) + return B_TRANSITION_POKEBALLS_TRAIL; else - return 3; + return B_TRANSITION_BIG_POKEBALL; } -void ChooseStarter(void) +void ScrSpecial_ChooseStarter(void) { SetMainCallback2(CB2_ChooseStarter); gMain.savedCallback = CB2_GiveStarter; } -void CB2_GiveStarter(void) +static void CB2_GiveStarter(void) { u16 starterPoke; @@ -819,18 +854,18 @@ void CB2_GiveStarter(void) ResetTasks(); sub_80408BC(); SetMainCallback2(CB2_StartFirstBattle); - sub_811AAD8(0); + BattleTransition_Start(0); } -void CB2_StartFirstBattle(void) +static void CB2_StartFirstBattle(void) { UpdatePaletteFade(); RunTasks(); - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE; - gMain.savedCallback = HandleFirstBattleEnd; + gMain.savedCallback = CB2_EndFirstBattle; SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); overworld_poison_timer_set(); @@ -839,35 +874,35 @@ void CB2_StartFirstBattle(void) } } -void HandleFirstBattleEnd(void) +static void CB2_EndFirstBattle(void) { - sav1_reset_battle_music_maybe(); + Overworld_ClearSavedMusic(); SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } -u32 TrainerBattleLoadArg32(const u8 *ptr) +static u32 TrainerBattleLoadArg32(const u8 *ptr) { return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); } -u16 TrainerBattleLoadArg16(const u8 *ptr) +static u16 TrainerBattleLoadArg16(const u8 *ptr) { return ptr[0] | (ptr[1] << 8); } -u8 TrainerBattleLoadArg8(const u8 *ptr) +static u8 TrainerBattleLoadArg8(const u8 *ptr) { return ptr[0]; } -u16 trainerflag_opponent(void) +static u16 CurrentOpponentTrainerFlag(void) { return TRAINER_FLAG_START + gTrainerBattleOpponent; } -bool32 battle_exit_is_player_defeat(u32 a1) +static bool32 IsPlayerDefeated(u32 battleOutcome) { - switch (a1) + switch (battleOutcome) { case 2: case 3: @@ -882,69 +917,69 @@ bool32 battle_exit_is_player_defeat(u32 a1) return FALSE; } -void sub_80822BC(void) +static void sub_80822BC(void) { - gTrainerBattleMode = 0; + sTrainerBattleMode = 0; gTrainerBattleOpponent = 0; - gTrainerMapObjectLocalId = 0; - gTrainerIntroSpeech = 0; - gTrainerDefeatSpeech = 0; - gTrainerVictorySpeech = 0; - gTrainerCannotBattleSpeech = 0; - gTrainerBattleScriptReturnAddress = 0; - gTrainerBattleEndScript = 0; + sTrainerMapObjectLocalId = 0; + sTrainerIntroSpeech = 0; + sTrainerDefeatSpeech = 0; + sTrainerVictorySpeech = 0; + sTrainerCannotBattleSpeech = 0; + sTrainerBattleScriptRetAddr = 0; + sTrainerBattleEndScript = 0; } -void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, const u8 *data) +static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data) { while (1) { switch (specs->ptrType) { - case 0: - *(u8 *)specs->ptr = TrainerBattleLoadArg8(data); - data++; + case TRAINER_PARAM_LOAD_VAL_8BIT: + *(u8 *)specs->varPtr = TrainerBattleLoadArg8(data); + data += 1; break; - case 1: - *(u16 *)specs->ptr = TrainerBattleLoadArg16(data); + case TRAINER_PARAM_LOAD_VAL_16BIT: + *(u16 *)specs->varPtr = TrainerBattleLoadArg16(data); data += 2; break; - case 2: - *(u32 *)specs->ptr = TrainerBattleLoadArg32(data); + case TRAINER_PARAM_LOAD_VAL_32BIT: + *(u32 *)specs->varPtr = TrainerBattleLoadArg32(data); data += 4; break; - case 3: - *(u8 *)specs->ptr = 0; + case TRAINER_PARAM_CLEAR_VAL_8BIT: + *(u8 *)specs->varPtr = 0; break; - case 4: - *(u16 *)specs->ptr = 0; + case TRAINER_PARAM_CLEAR_VAL_16BIT: + *(u16 *)specs->varPtr = 0; break; - case 5: - *(u32 *)specs->ptr = 0; + case TRAINER_PARAM_CLEAR_VAL_32BIT: + *(u32 *)specs->varPtr = 0; break; - case 6: - *(const u8 **)specs->ptr = data; + case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR: + *(const u8 **)specs->varPtr = data; return; } specs++; } } -void battle_80801F0(void) +static void battle_80801F0(void) { - if (gTrainerMapObjectLocalId) + if (sTrainerMapObjectLocalId) { - gScriptLastTalked = gTrainerMapObjectLocalId; - gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(gTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + gScriptLastTalked = sTrainerMapObjectLocalId; + gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } } -u8 *TrainerBattleConfigure(const u8 *data) +u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data) { sub_80822BC(); - gTrainerBattleMode = TrainerBattleLoadArg8(data); + sTrainerBattleMode = TrainerBattleLoadArg8(data); - switch (gTrainerBattleMode) + switch (sTrainerBattleMode) { case 3: TrainerBattleLoadArgs(gTrainerBattleSpecs_3, data); @@ -984,7 +1019,7 @@ void TrainerWantsBattle(u8 trainerMapObjId, u8 *trainerScript) { gSelectedMapObject = trainerMapObjId; gScriptLastTalked = gMapObjects[trainerMapObjId].localId; - TrainerBattleConfigure(trainerScript + 1); + BattleSetup_ConfigureTrainerBattle(trainerScript + 1); ScriptContext1_SetupScript(gUnknown_0819F80B); ScriptContext2_Enable(); } @@ -1002,27 +1037,27 @@ void sub_8082524(void) npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18)); } -u8 sub_8082558(void) +u8 ScrSpecial_GetTrainerBattleMode(void) { - return gTrainerBattleMode; + return sTrainerBattleMode; } -u8 sub_8082564(void) +u8 ScrSpecial_HasTrainerBeenFought(void) { - return FlagGet(trainerflag_opponent()); + return FlagGet(CurrentOpponentTrainerFlag()); } -void sub_808257C(void) +void SetCurrentTrainerBattledFlag(void) { - FlagSet(trainerflag_opponent()); + FlagSet(CurrentOpponentTrainerFlag()); } void unref_sub_8082590(void) { - FlagSet(trainerflag_opponent()); // duplicate function + FlagSet(CurrentOpponentTrainerFlag()); // duplicate function } -u8 trainer_flag_check(u16 flag) +u8 HasTrainerAlreadyBeenFought(u16 flag) { return FlagGet(TRAINER_FLAG_START + flag); } @@ -1034,14 +1069,14 @@ void trainer_flag_set(u16 flag) void trainer_flag_clear(u16 flag) { - FlagReset(TRAINER_FLAG_START + flag); + FlagClear(TRAINER_FLAG_START + flag); } -void sub_80825E4(void) +void BattleSetup_StartTrainerBattle(void) { gBattleTypeFlags = BATTLE_TYPE_TRAINER; gMain.savedCallback = sub_808260C; - task_add_01_battle_start_with_music_and_stats(); + StartTheBattle(); ScriptContext1_Stop(); } @@ -1051,74 +1086,77 @@ void sub_808260C(void) { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle? } - else if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE) + else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { SetMainCallback2(CB2_WhiteOut); } else { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); - sub_808257C(); + SetCurrentTrainerBattledFlag(); } } -void do_choose_name_or_words_screen(void) +void CB2_EndTrainerEyeRematchBattle(void) { if (gTrainerBattleOpponent == 1024) { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle? } - else if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE) + else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { SetMainCallback2(CB2_WhiteOut); } else { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); - sub_808257C(); - sub_8082CB8(); + SetCurrentTrainerBattledFlag(); + SetTrainerFlagsAfterTrainerEyeRematch(); } } -void sub_80826B0(void) +void ScrSpecial_StartTrainerEyeRematch(void) { gBattleTypeFlags = BATTLE_TYPE_TRAINER; - gMain.savedCallback = do_choose_name_or_words_screen; - task_add_01_battle_start_with_music_and_stats(); + gMain.savedCallback = CB2_EndTrainerEyeRematchBattle; + StartTheBattle(); ScriptContext1_Stop(); } -void sub_80826D8(void) +static u8 *GetTrainerIntroSpeech(void); +static u8 *GetTrainerNonBattlingSpeech(void); + +void ScrSpecial_ShowTrainerIntroSpeech(void) { - ShowFieldMessage(sub_808281C()); + ShowFieldMessage(GetTrainerIntroSpeech()); } -u8 *sub_80826E8(void) +u8 *BattleSetup_GetScriptAddrAfterBattle(void) { - if (gTrainerBattleScriptReturnAddress) - return gTrainerBattleScriptReturnAddress; + if (sTrainerBattleScriptRetAddr) + return sTrainerBattleScriptRetAddr; else return gUnknown_081C6C02; } -u8 *sub_8082700(void) +u8 *BattleSetup_GetTrainerPostBattleScript(void) { - if (gTrainerBattleEndScript) - return gTrainerBattleEndScript; + if (sTrainerBattleEndScript) + return sTrainerBattleEndScript; else return gUnknown_081C6C02; } -void sub_8082718(void) +void ScrSpecial_ShowTrainerNonBattlingSpeech(void) { - ShowFieldMessage(sub_8082880()); + ShowFieldMessage(GetTrainerNonBattlingSpeech()); } void PlayTrainerEncounterMusic(void) { u16 music; - if (gTrainerBattleMode != 1 && gTrainerBattleMode != 8) + if (sTrainerBattleMode != 1 && sTrainerBattleMode != 8) { switch (sub_803FC58(gTrainerBattleOpponent)) { @@ -1169,7 +1207,7 @@ void PlayTrainerEncounterMusic(void) } //Returns an empty string if a null pointer was passed, otherwise returns str -u8 *SanitizeString(const u8 *str) +static u8 *SanitizeString(const u8 *str) { if (str) return (u8 *) str; @@ -1177,9 +1215,9 @@ u8 *SanitizeString(const u8 *str) return (u8 *) gOtherText_CancelWithTerminator; } -u8 *sub_808281C(void) +static u8 *GetTrainerIntroSpeech(void) { - return SanitizeString(gTrainerIntroSpeech); + return SanitizeString(sTrainerIntroSpeech); } u8 *sub_8082830(void) @@ -1189,7 +1227,7 @@ u8 *sub_8082830(void) if (gTrainerBattleOpponent == 1024) str = sub_80BCCE8(); else - str = gTrainerDefeatSpeech; + str = sTrainerDefeatSpeech; StringExpandPlaceholders(gStringVar4, SanitizeString(str)); return gStringVar4; @@ -1197,43 +1235,43 @@ u8 *sub_8082830(void) u8 *unref_sub_808286C(void) { - return SanitizeString(gTrainerVictorySpeech); + return SanitizeString(sTrainerVictorySpeech); } -u8 *sub_8082880(void) +static u8 *GetTrainerNonBattlingSpeech(void) { - return SanitizeString(gTrainerCannotBattleSpeech); + return SanitizeString(sTrainerCannotBattleSpeech); } -s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 opponentId) { s32 i; for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++) { - if (trainers[i].trainerNums[0] == trainerNum) + if (trainers[i].opponentIDs[0] == opponentId) return i; } return -1; } -s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 opponentId) { s32 i; s32 j; for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++) { - for (j = 0; j < 5 && trainers[i].trainerNums[j] != 0; j++) + for (j = 0; j < 5 && trainers[i].opponentIDs[j] != 0; j++) { - if (trainers[i].trainerNums[j] == trainerNum) + if (trainers[i].opponentIDs[j] == opponentId) return i; } } return -1; } -bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum) +bool32 UpdateRandomTrainerEyeRematches(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum) { int i; bool32 ret = FALSE; @@ -1243,14 +1281,19 @@ bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 m if (trainers[i].mapGroup == mapGroup && trainers[i].mapNum == mapNum) { if (gSaveBlock1.trainerRematches[i] != 0) + { + // Trainer already wants rematch. Don't bother updating it ret = TRUE; - else if (trainer_flag_check(trainers[i].trainerNums[0]) == TRUE && (Random() % 100) <= 30) + } + else if (HasTrainerAlreadyBeenFought(trainers[i].opponentIDs[0]) == TRUE + && (Random() % 100) <= 30) // 31% chance of getting a rematch { - int j = 1; + int rematches = 1; - while (j < 5 && trainers[i].trainerNums[j] != 0 && trainer_flag_check(trainers[i].trainerNums[j])) - j++; - gSaveBlock1.trainerRematches[i] = j; + while (rematches < 5 && trainers[i].opponentIDs[rematches] != 0 + && HasTrainerAlreadyBeenFought(trainers[i].opponentIDs[rematches])) + rematches++; + gSaveBlock1.trainerRematches[i] = rematches; ret = TRUE; } } @@ -1282,9 +1325,9 @@ s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapN return 0; } -bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 opponentId) { - s32 trainerEyeIndex = sub_8082894(trainers, trainerNum); + s32 trainerEyeIndex = sub_8082894(trainers, opponentId); if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex]) return TRUE; @@ -1292,9 +1335,9 @@ bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum) return FALSE; } -bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +bool8 GetTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opponentId) { - s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum); + s32 trainerEyeIndex = sub_80828B8(trainers, opponentId); if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex]) return TRUE; @@ -1302,38 +1345,38 @@ bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum) return FALSE; } -u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 opponentId) { int i; const struct TrainerEyeTrainer *trainer; - s32 trainerEyeIndex = sub_8082894(trainers, trainerNum); + s32 trainerEyeIndex = sub_8082894(trainers, opponentId); if (trainerEyeIndex == -1) return 0; trainer = &trainers[trainerEyeIndex]; for (i = 1; i < 5; i++) { - if (!trainer->trainerNums[i]) - return trainer->trainerNums[i - 1]; - if (!trainer_flag_check(trainer->trainerNums[i])) - return trainer->trainerNums[i]; + if (!trainer->opponentIDs[i]) + return trainer->opponentIDs[i - 1]; + if (!HasTrainerAlreadyBeenFought(trainer->opponentIDs[i])) + return trainer->opponentIDs[i]; } - return trainer->trainerNums[4]; + return trainer->opponentIDs[4]; } -void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +void ClearTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opponentId) { - s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum); + s32 trainerEyeIndex = sub_80828B8(trainers, opponentId); if (trainerEyeIndex != -1) gSaveBlock1.trainerRematches[trainerEyeIndex] = 0; } -bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 opponentId) { - s32 trainerEyeIndex = sub_8082894(trainers, trainerNum); + s32 trainerEyeIndex = sub_8082894(trainers, opponentId); - if (trainerEyeIndex != -1 && trainer_flag_check(trainers[trainerEyeIndex].trainerNums[1])) + if (trainerEyeIndex != -1 && HasTrainerAlreadyBeenFought(trainers[trainerEyeIndex].opponentIDs[1])) return TRUE; else return FALSE; @@ -1377,7 +1420,7 @@ bool32 sub_8082BA4(void) void sub_8082BD0(u16 mapGroup, u16 mapNum) { - if (sub_8082BA4() && sub_80828FC(gTrainerEyeTrainers, mapGroup, mapNum) == TRUE) + if (sub_8082BA4() && UpdateRandomTrainerEyeRematches(gTrainerEyeTrainers, mapGroup, mapNum) == TRUE) gSaveBlock1.trainerRematchStepCounter = 0; } @@ -1391,9 +1434,9 @@ s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum) return sub_80829E8(gTrainerEyeTrainers, mapGroup, mapNum); } -u16 sub_8082C4C(u16 trainerNum) +u16 sub_8082C4C(u16 opponentId) { - return sub_8082A90(gTrainerEyeTrainers, trainerNum); + return sub_8082A90(gTrainerEyeTrainers, opponentId); } s32 sub_8082C68(void) @@ -1404,13 +1447,13 @@ s32 sub_8082C68(void) return sub_8082B10(gTrainerEyeTrainers, gTrainerBattleOpponent); } -u8 sub_8082C9C(void) +u8 ScrSpecial_GetTrainerEyeRematchFlag(void) { - return sub_8082A54(gTrainerEyeTrainers, gTrainerBattleOpponent); + return GetTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent); } -void sub_8082CB8(void) +void SetTrainerFlagsAfterTrainerEyeRematch(void) { - sub_8082AE4(gTrainerEyeTrainers, gTrainerBattleOpponent); - sub_808257C(); + ClearTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent); + SetCurrentTrainerBattledFlag(); } diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c new file mode 100644 index 000000000..53d32d03a --- /dev/null +++ b/src/battle/battle_transition.c @@ -0,0 +1,2513 @@ +#include "global.h" +#include "battle_transition.h" +#include "main.h" +#include "overworld.h" +#include "task.h" +#include "palette.h" +#include "trig.h" +#include "field_effect.h" +#include "rng.h" +#include "sprite.h" +#include "sound.h" +#include "songs.h" +#include "trainer.h" +#include "field_camera.h" + +void sub_807DE10(void); +void dp12_8087EA4(void); + +extern u8 ewram[]; +extern u16 gUnknown_03005560[]; +extern u16 gUnknown_03004DE0[][0x3C0]; + +extern const struct OamData gFieldOamData_32x32; + +struct TransitionData +{ + vs8 VBlank_DMA; + u16 WININ; + u16 WINOUT; + u16 field_6; + u16 WIN0V; + u16 field_A; + u16 field_C; + u16 BLDCNT; + u16 BLDALPHA; + u16 BLDY; + s16 field_14; + s16 field_16; + s16 field_18; + s16 field_1A; + s16 field_1C; + s16 field_1E; // unused + s16 field_20; + s16 field_22; // unused + s16 data[11]; +}; + +#define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) +typedef bool8 (*TransitionState)(struct Task* task); +typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); + +// this file's functions +static void LaunchBattleTransitionTask(u8 transitionID); +static void Task_BattleTransitionMain(u8 taskID); +static void Phase1Task_TransitionAll(u8 taskID); +static void Phase2Task_Transition_Blur(u8 taskID); +static void Phase2Task_Transition_Swirl(u8 taskID); +static void Phase2Task_Transition_Shuffle(u8 taskID); +static void Phase2Task_Transition_BigPokeball(u8 taskID); +static void Phase2Task_Transition_PokeballsTrail(u8 taskID); +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID); +static void Phase2Task_Transition_Ripple(u8 taskID); +static void Phase2Task_Transition_Wave(u8 taskID); +static void Phase2Task_Transition_Slice(u8 taskID); +static void Phase2Task_Transition_WhiteFade(u8 taskID); +static void Phase2Task_Transition_GridSquares(u8 taskID); +static void Phase2Task_Transition_Shards(u8 taskID); +static void Phase2Task_Transition_Sydney(u8 taskID); +static void Phase2Task_Transition_Phoebe(u8 taskID); +static void Phase2Task_Transition_Glacia(u8 taskID); +static void Phase2Task_Transition_Drake(u8 taskID); +static void Phase2Task_Transition_Steven(u8 taskID); +static bool8 Transition_Phase1(struct Task* task); +static bool8 Transition_WaitForPhase1(struct Task* task); +static bool8 Transition_Phase2(struct Task* task); +static bool8 Transition_WaitForPhase2(struct Task* task); +static void VBlankCB_Phase2_Transition_Swirl(void); +static void HBlankCB_Phase2_Transition_Swirl(void); +static void VBlankCB_Phase2_Transition_Shuffle(void); +static void HBlankCB_Phase2_Transition_Shuffle(void); +static void VBlankCB0_Phase2_Transition_BigPokeball(void); +static void VBlankCB1_Phase2_Transition_BigPokeball(void); +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void); +static void VBlankCB_Phase2_Transition_Ripple(void); +static void HBlankCB_Phase2_Transition_Ripple(void); +static void VBlankCB_Phase2_Transition_Wave(void); +static void VBlankCB_Phase2_Transition_Slice(void); +static void HBlankCB_Phase2_Transition_Slice(void); +static void VBlankCB0_Phase2_Transition_WhiteFade(void); +static void VBlankCB1_Phase2_Transition_WhiteFade(void); +static void HBlankCB_Phase2_Transition_WhiteFade(void); +static void VBlankCB0_Phase2_Mugshots(void); +static void VBlankCB1_Phase2_Mugshots(void); +static void HBlankCB_Phase2_Mugshots(void); +static void VBlankCB_Phase2_Transition_Shards(void); +static bool8 Phase2_Transition_Blur_Func1(struct Task* task); +static bool8 Phase2_Transition_Blur_Func2(struct Task* task); +static bool8 Phase2_Transition_Blur_Func3(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func1(struct Task* task); +static bool8 Phase2_Transition_Wave_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func3(struct Task* task); +static bool8 Phase2_Transition_Slice_Func1(struct Task* task); +static bool8 Phase2_Transition_Slice_Func2(struct Task* task); +static bool8 Phase2_Transition_Slice_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func1(struct Task* task); +static bool8 Phase2_Transition_Shards_Func2(struct Task* task); +static bool8 Phase2_Transition_Shards_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func4(struct Task* task); +static bool8 Phase2_Transition_Shards_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func1(struct Task* task); +static bool8 Phase2_Mugshot_Func2(struct Task* task); +static bool8 Phase2_Mugshot_Func3(struct Task* task); +static bool8 Phase2_Mugshot_Func4(struct Task* task); +static bool8 Phase2_Mugshot_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func6(struct Task* task); +static bool8 Phase2_Mugshot_Func7(struct Task* task); +static bool8 Phase2_Mugshot_Func8(struct Task* task); +static bool8 Phase2_Mugshot_Func9(struct Task* task); +static bool8 Phase2_Mugshot_Func10(struct Task* task); +static void Phase2Task_MugShotTransition(u8 taskID); +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); +static void sub_811CA10(s16 spriteID, s16 value); +static void sub_811CA28(s16 spriteID); +static s16 sub_811CA44(s16 spriteID); +static bool8 sub_811C934(struct Sprite* sprite); +static bool8 sub_811C938(struct Sprite* sprite); +static bool8 sub_811C984(struct Sprite* sprite); +static bool8 sub_811C9B8(struct Sprite* sprite); +static bool8 sub_811C9E4(struct Sprite* sprite); +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); +static bool8 sub_811D52C(void); +static void Phase1_Task_RunFuncs(u8 taskID); +static bool8 Phase1_TransitionAll_Func1(struct Task* task); +static bool8 Phase1_TransitionAll_Func2(struct Task* task); +static void sub_811D658(void); +static void VBlankCB_BattleTransition(void); +static void sub_811D6A8(u16** a0, u16** a1); +static void sub_811D690(u16** a0); +static void sub_811D6D4(void); +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize); +static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); +static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); +static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); +static void sub_811CFD0(struct Sprite* sprite); +static void sub_811B720(struct Sprite* sprite); +static void sub_811C90C(struct Sprite* sprite); + +// const data + +static const u32 sBigPokeball_Tileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); +static const u32 sPokeballTrail_Tileset[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); +static const u8 sSpriteImage_83FC148[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp"); +static const u32 sUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); +static const u8 sSpriteImage_83FC528[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); +static const u8 sSpriteImage_83FCD28[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); +static const u32 sShrinkingBoxTileset[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); + +static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; + +static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = +{ + [0 ... TRANSITIONS_NO - 1] = &Phase1Task_TransitionAll +}; + +static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = +{ + Phase2Task_Transition_Blur, // 0 + Phase2Task_Transition_Swirl, // 1 + Phase2Task_Transition_Shuffle, // 2 + Phase2Task_Transition_BigPokeball, // 3 + Phase2Task_Transition_PokeballsTrail, // 4 + Phase2Task_Transition_Clockwise_BlackFade, // 5 + Phase2Task_Transition_Ripple, // 6 + Phase2Task_Transition_Wave, // 7 + Phase2Task_Transition_Slice, // 8 + Phase2Task_Transition_WhiteFade, // 9 + Phase2Task_Transition_GridSquares, // 10 + Phase2Task_Transition_Shards, // 11 + Phase2Task_Transition_Sydney, // 12 + Phase2Task_Transition_Phoebe, // 13 + Phase2Task_Transition_Glacia, // 14 + Phase2Task_Transition_Drake, // 15 + Phase2Task_Transition_Steven, // 16 +}; + +static const TransitionState sMainTransitionPhases[] = +{ + &Transition_Phase1, + &Transition_WaitForPhase1, + &Transition_Phase2, + &Transition_WaitForPhase2 +}; + +static const TransitionState sPhase2_Transition_Blur_Funcs[] = +{ + Phase2_Transition_Blur_Func1, + Phase2_Transition_Blur_Func2, + Phase2_Transition_Blur_Func3 +}; + +static const TransitionState sPhase2_Transition_Swirl_Funcs[] = +{ + Phase2_Transition_Swirl_Func1, + Phase2_Transition_Swirl_Func2, +}; + +static const TransitionState sPhase2_Transition_Shuffle_Funcs[] = +{ + Phase2_Transition_Shuffle_Func1, + Phase2_Transition_Shuffle_Func2, +}; + +static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] = +{ + Phase2_Transition_BigPokeball_Func1, + Phase2_Transition_BigPokeball_Func2, + Phase2_Transition_BigPokeball_Func3, + Phase2_Transition_BigPokeball_Func4, + Phase2_Transition_BigPokeball_Func5, + Phase2_Transition_BigPokeball_Func6 +}; + +static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] = +{ + Phase2_Transition_PokeballsTrail_Func1, + Phase2_Transition_PokeballsTrail_Func2, + Phase2_Transition_PokeballsTrail_Func3 +}; + +static const s16 sUnknown_083FD7E4[2] = {-16, 256}; +static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; +static const s16 sUnknown_083FD7F2[2] = {8, -8}; + +static const TransitionState sPhase2_Transition_Clockwise_BlackFade_Funcs[] = +{ + Phase2_Transition_Clockwise_BlackFade_Func1, + Phase2_Transition_Clockwise_BlackFade_Func2, + Phase2_Transition_Clockwise_BlackFade_Func3, + Phase2_Transition_Clockwise_BlackFade_Func4, + Phase2_Transition_Clockwise_BlackFade_Func5, + Phase2_Transition_Clockwise_BlackFade_Func6, + Phase2_Transition_Clockwise_BlackFade_Func7 +}; + +static const TransitionState sPhase2_Transition_Ripple_Funcs[] = +{ + Phase2_Transition_Ripple_Func1, + Phase2_Transition_Ripple_Func2 +}; + +static const TransitionState sPhase2_Transition_Wave_Funcs[] = +{ + Phase2_Transition_Wave_Func1, + Phase2_Transition_Wave_Func2, + Phase2_Transition_Wave_Func3 +}; + +static const TransitionState sPhase2_Mugshot_Transition_Funcs[] = +{ + Phase2_Mugshot_Func1, + Phase2_Mugshot_Func2, + Phase2_Mugshot_Func3, + Phase2_Mugshot_Func4, + Phase2_Mugshot_Func5, + Phase2_Mugshot_Func6, + Phase2_Mugshot_Func7, + Phase2_Mugshot_Func8, + Phase2_Mugshot_Func9, + Phase2_Mugshot_Func10 +}; + +static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN}; +static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_NO][2] = +{ + {0x200, 0x200}, + {0x200, 0x200}, + {0x1B0, 0x1B0}, + {0x1A0, 0x1A0}, + {0x188, 0x188}, +}; +static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = +{ + {0, 0}, + {0, 0}, + {-4, 4}, + {0, 5}, + {0, 7}, +}; + +static const TransitionSpriteCallback sUnknown_083FD880[] = +{ + sub_811C934, + sub_811C938, + sub_811C984, + sub_811C9B8, + sub_811C934, + sub_811C9E4, + sub_811C934 +}; + +static const s16 sUnknown_083FD89C[2] = {12, -12}; +static const s16 sUnknown_083FD8A0[2] = {-1, 1}; + +static const TransitionState sPhase2_Transition_Slice_Funcs[] = +{ + Phase2_Transition_Slice_Func1, + Phase2_Transition_Slice_Func2, + Phase2_Transition_Slice_Func3 +}; + +static const TransitionState sPhase2_Transition_WhiteFade_Funcs[] = +{ + Phase2_Transition_WhiteFade_Func1, + Phase2_Transition_WhiteFade_Func2, + Phase2_Transition_WhiteFade_Func3, + Phase2_Transition_WhiteFade_Func4, + Phase2_Transition_WhiteFade_Func5 +}; + +static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; + +static const TransitionState sPhase2_Transition_GridSquares_Funcs[] = +{ + Phase2_Transition_GridSquares_Func1, + Phase2_Transition_GridSquares_Func2, + Phase2_Transition_GridSquares_Func3 +}; + +static const TransitionState sPhase2_Transition_Shards_Funcs[] = +{ + Phase2_Transition_Shards_Func1, + Phase2_Transition_Shards_Func2, + Phase2_Transition_Shards_Func3, + Phase2_Transition_Shards_Func4, + Phase2_Transition_Shards_Func5 +}; + +static const s16 sUnknown_083FD8F4[][5] = +{ + {56, 0, 0, 160, 0}, + {104, 160, 240, 88, 1}, + {240, 72, 56, 0, 1}, + {0, 32, 144, 160, 0}, + {144, 160, 184, 0, 1}, + {56, 0, 168, 160, 0}, + {168, 160, 48, 0, 1}, +}; + +static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; + +static const TransitionState sPhase1_TransitionAll_Funcs[] = +{ + Phase1_TransitionAll_Func1, + Phase1_TransitionAll_Func2 +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = +{ + sSpriteImage_83FC148, 0x200 +}; + +static const union AnimCmd sSpriteAnim_83FD958[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD960[] = +{ + sSpriteAnim_83FD958 +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD964[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD974[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_83FD984[] = +{ + sSpriteAffineAnim_83FD964, + sSpriteAffineAnim_83FD974 +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD98C = +{ + .tileTag = 0xFFFF, + .paletteTag = 4105, + .oam = &gFieldOamData_32x32, + .anims = sSpriteAnimTable_83FD960, + .images = sSpriteImageTable_83FD950, + .affineAnims = sSpriteAffineAnimTable_83FD984, + .callback = sub_811B720 +}; + +static const struct OamData gOamData_83FD9A4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9AC[] = +{ + sSpriteImage_83FC528, 0x800 +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9B4[] = +{ + sSpriteImage_83FCD28, 0x800 +}; + +static const union AnimCmd sSpriteAnim_83FD9BC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD9C4[] = +{ + sSpriteAnim_83FD9BC +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9C8 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9AC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9E0 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9B4, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effect_objects/palettes/10.gbapal"); + +const struct SpritePalette gFieldEffectObjectPaletteInfo10 = +{ + gFieldEffectObjectPalette10, 0x1009 +}; + +static const u16 sMugshotPal_Sydney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal"); +static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal"); +static const u16 sMugshotPal_Glacia[] = INCBIN_U16("graphics/battle_transitions/glacia_bg.gbapal"); +static const u16 sMugshotPal_Drake[] = INCBIN_U16("graphics/battle_transitions/drake_bg.gbapal"); +static const u16 sMugshotPal_Steven[] = INCBIN_U16("graphics/battle_transitions/steven_bg.gbapal"); +static const u16 sMugshotPal_Brendan[] = INCBIN_U16("graphics/battle_transitions/brendan_bg.gbapal"); +static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may_bg.gbapal"); + +static const u16 * const sOpponentMugshotsPals[MUGSHOTS_NO] = +{ + sMugshotPal_Sydney, + sMugshotPal_Phoebe, + sMugshotPal_Glacia, + sMugshotPal_Drake, + sMugshotPal_Steven +}; + +static const u16 * const sPlayerMugshotsPals[2] = +{ + sMugshotPal_Brendan, + sMugshotPal_May +}; + +static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); +static const struct SpritePalette sSpritePalette_UnusedTrainer = +{ + sUnusedTrainerPalette, 0x100A +}; + +static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin"); +static const u16 sMugshotsTilemap[] = INCBIN_U16("graphics/battle_transitions/elite_four_bg_map.bin"); + +// actual code starts here + +void BattleTransition_StartOnField(u8 transitionID) +{ + gMain.callback2 = CB2_OverworldBasic; + LaunchBattleTransitionTask(transitionID); +} + +void BattleTransition_Start(u8 transitionID) +{ + LaunchBattleTransitionTask(transitionID); +} + +#define tState data[0] +#define tTransitionID data[1] +#define tTransitionDone data[15] + +bool8 IsBattleTransitionDone(void) +{ + u8 taskID = FindTaskIdByFunc(Task_BattleTransitionMain); + if (gTasks[taskID].tTransitionDone) + { + DestroyTask(taskID); + return TRUE; + } + else + return FALSE; +} + +static void LaunchBattleTransitionTask(u8 transitionID) +{ + u8 taskID = CreateTask(Task_BattleTransitionMain, 2); + gTasks[taskID].tTransitionID = transitionID; +} + +static void Task_BattleTransitionMain(u8 taskID) +{ + while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Transition_Phase1(struct Task* task) +{ + sub_807DE10(); + CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + if (sPhase1_Tasks[task->tTransitionID] != NULL) + { + CreateTask(sPhase1_Tasks[task->tTransitionID], 4); + task->tState++; + return FALSE; + } + else + { + task->tState = 2; + return TRUE; + } +} + +static bool8 Transition_WaitForPhase1(struct Task* task) +{ + if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) + { + task->tState++; + return TRUE; + } + else + return FALSE; +} + +static bool8 Transition_Phase2(struct Task* task) +{ + CreateTask(sPhase2_Tasks[task->tTransitionID], 0); + task->tState++; + return FALSE; +} + +static bool8 Transition_WaitForPhase2(struct Task* task) +{ + task->tTransitionDone = 0; + if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) + task->tTransitionDone = 1; + return FALSE; +} + +static void Phase1Task_TransitionAll(u8 taskID) +{ + if (gTasks[taskID].tState == 0) + { + gTasks[taskID].tState++; + CreatePhase1Task(0, 0, 3, 2, 2); + } + else if (sub_811D52C()) + DestroyTask(taskID); +} + +static void Phase2Task_Transition_Blur(u8 taskID) +{ + while (sPhase2_Transition_Blur_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Blur_Func1(struct Task* task) +{ + REG_MOSAIC = 0; + REG_BG1CNT |= BGCNT_MOSAIC; + REG_BG2CNT |= BGCNT_MOSAIC; + REG_BG3CNT |= BGCNT_MOSAIC; + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Blur_Func2(struct Task* task) +{ + if (task->data[1] != 0) + task->data[1]--; + else + { + task->data[1] = 4; + if (++task->data[2] == 10) + BeginNormalPaletteFade(-1, -1, 0, 0x10, 0); + REG_MOSAIC = (task->data[2] & 15) * 17; + if (task->data[2] > 14) + task->tState++; + } + return FALSE; +} + +static bool8 Phase2_Transition_Blur_Func3(struct Task* task) +{ + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Blur); + DestroyTask(taskID); + } + return FALSE; +} + +static void Phase2Task_Transition_Swirl(u8 taskID) +{ + while (sPhase2_Transition_Swirl_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); + + SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl); + SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + REG_IME = savedIME; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + 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); + + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Swirl); + DestroyTask(taskID); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Swirl(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Swirl(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition_Shuffle(u8 taskID) +{ + while (sPhase2_Transition_Shuffle_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); + + SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle); + SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + REG_IME = savedIME; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task) +{ + u8 i; + u16 r3, r4; + + TRANSITION_STRUCT.VBlank_DMA = 0; + r4 = task->data[1]; + r3 = task->data[2] >> 8; + task->data[1] += 4224; + task->data[2] += 384; + + for (i = 0; i < 160; i++, r4 += 4224) + { + u16 var = r4 / 256; + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + } + + if (!gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shuffle)); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Shuffle(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Shuffle(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +static void Phase2Task_Transition_BigPokeball(u8 taskID) +{ + while (sPhase2_Transition_BigPokeball_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) +{ + u16 i; + u16 *dst1, *dst2; + + sub_811D658(); + dp12_8087EA4(); + + task->data[1] = 16; + task->data[2] = 0; + task->data[4] = 0; + task->data[5] = 0x4000; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.WIN0V = 160; + TRANSITION_STRUCT.BLDCNT = 0x3F41; + TRANSITION_STRUCT.BLDALPHA = task->data[1] * 256; // 16 * 256 = 0x1000 + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 240; + } + + SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball); + + sub_811D6A8(&dst1, & dst2); + CpuFill16(0, dst1, 0x800); + CpuSet(sBigPokeball_Tileset, dst2, 0x2C0); + LoadPalette(gFieldEffectObjectPalette10, 240, 32); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* BigPokeballMap; + + BigPokeballMap = sBigPokeball_Tilemap; + sub_811D6A8(&dst1, &dst2); + for (i = 0; i < 20; i++) + { + for (j = 0; j < 30; j++, BigPokeballMap++) + { + dst1[i * 32 + j] = *BigPokeballMap | 0xF000; + } + } + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[2]++; + task->data[3] = 2; + } + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; + if (task->data[2] > 15) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[1]--; + task->data[3] = 2; + } + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; + if (task->data[1] == 0) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + if (task->data[5] <= 0) + { + task->tState++; + task->data[1] = 160; + task->data[2] = 256; + task->data[3] = 0; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[2] < 1024) + task->data[2] += 128; + if (task->data[1] != 0) + { + task->data[1] -= (task->data[2] >> 8); + if (task->data[1] < 0) + task->data[1] = 0; + } + sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]); + if (task->data[1] == 0) + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_BigPokeball)); + } + if (task->data[3] == 0) + { + task->data[3]++; + SetVBlankCallback(VBlankCB1_Phase2_Transition_BigPokeball); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void Transition_BigPokeball_Vblank(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA; +} + +static void VBlankCB0_Phase2_Transition_BigPokeball(void) +{ + Transition_BigPokeball_Vblank(); + DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition_BigPokeball(void) +{ + Transition_BigPokeball_Vblank(); + DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); +} + +static void Phase2Task_Transition_PokeballsTrail(u8 taskID) +{ + while (sPhase2_Transition_PokeballsTrail_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(sPokeballTrail_Tileset, dst2, 0x20); + CpuFill32(0, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task) +{ + s16 i; + s16 rand; + s16 arr0[2]; + s16 arr1[5]; + + memcpy(arr0, sUnknown_083FD7E4, sizeof(sUnknown_083FD7E4)); + memcpy(arr1, sUnknown_083FD7E8, sizeof(sUnknown_083FD7E8)); + rand = Random() & 1; + for (i = 0; i <= 4; i++, rand ^= 1) + { + gFieldEffectArguments[0] = arr0[rand]; // x + gFieldEffectArguments[1] = (i * 32) + 16; // y + gFieldEffectArguments[2] = rand; + gFieldEffectArguments[3] = arr1[i]; + FieldEffectStart(FLDEFF_POKEBALL); + } + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task) +{ + if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_PokeballsTrail)); + } + return FALSE; +} + +bool8 FldEff_Pokeball(void) +{ + u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + gSprites[spriteID].oam.priority = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].data0 = gFieldEffectArguments[2]; + gSprites[spriteID].data1 = gFieldEffectArguments[3]; + gSprites[spriteID].data2 = -1; + InitSpriteAffineAnim(&gSprites[spriteID]); + StartSpriteAffineAnim(&gSprites[spriteID], gFieldEffectArguments[2]); + return FALSE; +} + +#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \ +{ \ + u32 index = (posY) * 32 + posX; \ + ptr[index] = toStore; \ +} + +static void sub_811B720(struct Sprite* sprite) +{ + s16 arr0[2]; + + memcpy(arr0, sUnknown_083FD7F2, sizeof(sUnknown_083FD7F2)); + if (sprite->data1 != 0) + sprite->data1--; + else + { + if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240) + { + s16 posX = sprite->pos1.x >> 3; + s16 posY = sprite->pos1.y >> 3; + + if (posX != sprite->data2) + { + u32 var; + u16 *ptr; + + sprite->data2 = posX; + var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2 + ptr = (u16 *)(VRAM + var); + + SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001); + } + } + sprite->pos1.x += arr0[sprite->data0]; + if (sprite->pos1.x < -15 || sprite->pos1.x > 255) + FieldEffectStop(sprite, FLDEFF_POKEBALL); + } +} + +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID) +{ + while (sPhase2_Transition_Clockwise_BlackFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0; + TRANSITION_STRUCT.WINOUT = 63; + TRANSITION_STRUCT.field_6 = -3855; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 0xF3F4; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade); + TRANSITION_STRUCT.data[4] = 120; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + 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; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[4] >= 240) + { + TRANSITION_STRUCT.data[5] = 0; + task->tState++; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) +{ + s16 r1, r3; + vu8 var = 0; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 240, TRANSITION_STRUCT.data[5], 1, 1); + + while (1) + { + 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); + if (var != 0) + break; + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.data[5] += 8; + if (TRANSITION_STRUCT.data[5] >= 160) + { + TRANSITION_STRUCT.data[4] = 240; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5]) + { + gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + } + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + 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; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] -= 16; + if (TRANSITION_STRUCT.data[4] <= 0) + { + TRANSITION_STRUCT.data[5] = 160; + task->tState++; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) +{ + s16 r1, r2, r3; + vu8 var = 0; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 0, TRANSITION_STRUCT.data[5], 1, 1); + + while (1) + { + r1 = gUnknown_03004DE0[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); + r3 = 0; + if (var != 0) + break; + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.data[5] -= 8; + if (TRANSITION_STRUCT.data[5] <= 0) + { + TRANSITION_STRUCT.data[4] = r3; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5]) + { + gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + } + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 0, 1, 1); + do + { + s16 r2, r3; + + 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); + + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[2] > 120) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Clockwise_BlackFade)); + return FALSE; +} + +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); + 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], ®_WIN0H, 0xA2400001); +} + +static void Phase2Task_Transition_Ripple(u8 taskID) +{ + while (sPhase2_Transition_Ripple_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); + SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple); + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task) +{ + u8 i; + s16 r3; + u16 r4, r8; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + r3 = task->data[2] >> 8; + r4 = task->data[1]; + r8 = 384; + task->data[1] += 0x400; + if (task->data[2] <= 0x1FFF) + task->data[2] += 0x180; + + for (i = 0; i < 160; i++, r4 += r8) + { + // todo: fix the asm + s16 var = r4 >> 8; + asm(""); + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + asm(""); + } + + if (++task->data[3] == 81) + { + task->data[4]++; + BeginNormalPaletteFade(-1, -2, 0, 0x10, 0); + } + + if (task->data[4] != 0 && !gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Ripple)); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Ripple(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Ripple(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +static void Phase2Task_Transition_Wave(u8 taskID) +{ + while (sPhase2_Transition_Wave_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Wave_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 242; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Wave); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Wave_Func2(struct Task* task) +{ + u8 i, r5; + u16* toStore; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + toStore = gUnknown_03004DE0[0]; + r5 = task->data[2]; + task->data[2] += 16; + task->data[1] += 8; + + for (i = 0, nextFunc = TRUE; i < 160; i++, r5 += 4, toStore++) + { + s16 value = task->data[1] + Sin(r5, 40); + if (value < 0) + value = 0; + if (value > 240) + value = 240; + *toStore = (value << 8) | (0xF1); + if (value < 240) + nextFunc = FALSE; + } + if (nextFunc) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Wave_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Wave)); + return FALSE; +} + +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); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +#define tMugshotOpponentID data[13] +#define tMugshotPlayerID data[14] +#define tMugshotID data[15] + +static void Phase2Task_Transition_Sydney(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Phoebe(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Glacia(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_GLACIA; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Drake(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_DRAKE; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Steven(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_STEVEN; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_MugShotTransition(u8 taskID) +{ + while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Mugshot_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + Mugshots_CreateOpponentPlayerSprites(task); + + task->data[1] = 0; + task->data[2] = 1; + task->data[3] = 239; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 62; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0xF0F1; + } + + SetVBlankCallback(VBlankCB0_Phase2_Mugshots); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* MugshotsMap; + + MugshotsMap = sMugshotsTilemap; + sub_811D6A8(&dst1, &dst2); + CpuSet(sUnknown_083FC348, dst2, 0xF0); + LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20); + LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC); + + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++, MugshotsMap++) + { + dst1[i * 32 + j] = *MugshotsMap | 0xF000; + } + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + SetHBlankCallback(HBlankCB_Phase2_Mugshots); + task->tState++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func3(struct Task* task) +{ + u8 i, r5; + u16* toStore; + s16 value; + s32 mergedValue; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + toStore = gUnknown_03004DE0[0]; + r5 = task->data[1]; + task->data[1] += 0x10; + + for (i = 0; i < 80; i++, toStore++, r5 += 0x10) + { + value = task->data[2] + Sin(r5, 0x10); + if (value < 0) + value = 1; + if (value > 0xF0) + value = 0xF0; + *toStore = value; + } + for (; i < 160; i++, toStore++, r5 += 0x10) + { + value = task->data[3] - Sin(r5, 0x10); + if (value < 0) + value = 0; + if (value > 0xEF) + value = 0xEF; + *toStore = (value << 8) | (0xF0); + } + + task->data[2] += 8; + task->data[3] -= 8; + if (task->data[2] > 0xF0) + task->data[2] = 0xF0; + if (task->data[3] < 0) + task->data[3] = 0; + mergedValue = *(s32*)(&task->data[2]); + if (mergedValue == 0xF0) + task->tState++; + + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func4(struct Task* task) +{ + u8 i; + u16* toStore; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) + { + *toStore = 0xF0; + } + + task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + sub_811CA10(task->tMugshotOpponentID, 0); + sub_811CA10(task->tMugshotPlayerID, 1); + sub_811CA28(task->tMugshotOpponentID); + + PlaySE(SE_BT_START); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func5(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->tMugshotOpponentID)) + { + task->tState++; + sub_811CA28(task->tMugshotPlayerID); + } + return FALSE; +} + +static bool8 Phase2_Mugshot_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->tMugshotPlayerID)) + { + TRANSITION_STRUCT.VBlank_DMA = 0; + SetVBlankCallback(NULL); + DmaStop(0); + memset(gUnknown_03004DE0[0], 0, 0x140); + memset(gUnknown_03004DE0[1], 0, 0x140); + REG_WIN0H = 0xF0; + REG_BLDY = 0; + task->tState++; + task->data[3] = 0; + task->data[4] = 0; + TRANSITION_STRUCT.BLDCNT = 0xBF; + SetVBlankCallback(VBlankCB1_Phase2_Mugshots); + } + return FALSE; +} + +static bool8 Phase2_Mugshot_Func7(struct Task* task) +{ + bool32 r6; + + TRANSITION_STRUCT.VBlank_DMA = 0; + r6 = TRUE; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + if (task->data[4] < 0x50) + task->data[4] += 2; + if (task->data[4] > 0x50) + task->data[4] = 0x50; + + if (++task->data[3] & 1) + { + s16 i; + for (i = 0, r6 = FALSE; i <= task->data[4]; i++) + { + s16 index1 = 0x50 - i; + s16 index2 = 0x50 + i; + if (gUnknown_03004DE0[0][index1] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index1]++; + } + if (gUnknown_03004DE0[0][index2] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index2]++; + } + } + } + + if (task->data[4] == 0x50 && !r6) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func8(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + BlendPalettes(-1, 0x10, 0x7FFF); + TRANSITION_STRUCT.BLDCNT = 0xFF; + task->data[3] = 0; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Mugshot_Func9(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[3]++; + memset(gUnknown_03004DE0[0], task->data[3], 0x140); + if (task->data[3] > 15) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func10(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(task->func)); + return FALSE; +} + +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); + 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], ®_WIN0H, 0xA2400001); +} + +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); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); +} + +static void HBlankCB_Phase2_Mugshots(void) +{ + if (REG_VCOUNT < 80) + REG_BG0HOFS = TRANSITION_STRUCT.field_18; + else + REG_BG0HOFS = TRANSITION_STRUCT.field_1A; +} + +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task) +{ + struct Sprite *opponentSprite, *playerSprite; + + s16 mugshotID = task->tMugshotID; + task->tMugshotOpponentID = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotID], + sMugshotsOpponentCoords[mugshotID][0] - 32, + sMugshotsOpponentCoords[mugshotID][1] + 42, + 0, &ewram[0xC03C]); + task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, &ewram[0xC03C]); + + opponentSprite = &gSprites[task->tMugshotOpponentID]; + playerSprite = &gSprites[task->tMugshotPlayerID]; + + opponentSprite->callback = sub_811C90C; + playerSprite->callback = sub_811C90C; + + opponentSprite->oam.affineMode = 3; + playerSprite->oam.affineMode = 3; + + opponentSprite->oam.matrixNum = AllocOamMatrix(); + playerSprite->oam.matrixNum = AllocOamMatrix(); + + opponentSprite->oam.shape = 1; + playerSprite->oam.shape = 1; + + opponentSprite->oam.size = 3; + playerSprite->oam.size = 3; + + CalcCenterToCornerVec(opponentSprite, 1, 3, 3); + CalcCenterToCornerVec(playerSprite, 1, 3, 3); + + SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotID][0], sMugshotsOpponentRotationScales[mugshotID][1], 0); + SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0); +} + +static void sub_811C90C(struct Sprite* sprite) +{ + while (sUnknown_083FD880[sprite->data0](sprite)); +} + +static bool8 sub_811C934(struct Sprite* sprite) +{ + return FALSE; +} + +static bool8 sub_811C938(struct Sprite* sprite) +{ + s16 arr0[2]; + s16 arr1[2]; + + memcpy(arr0, sUnknown_083FD89C, sizeof(sUnknown_083FD89C)); + memcpy(arr1, sUnknown_083FD8A0, sizeof(sUnknown_083FD8A0)); + + sprite->data0++; + sprite->data1 = arr0[sprite->data7]; + sprite->data2 = arr1[sprite->data7]; + return TRUE; +} + +static bool8 sub_811C984(struct Sprite* sprite) +{ + sprite->pos1.x += sprite->data1; + if (sprite->data7 && sprite->pos1.x < 133) + sprite->data0++; + else if (!sprite->data7 && sprite->pos1.x > 103) + sprite->data0++; + return FALSE; +} + +static bool8 sub_811C9B8(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->data1 == 0) + { + sprite->data0++; + sprite->data2 = -sprite->data2; + sprite->data6 = 1; + } + return FALSE; +} + +static bool8 sub_811C9E4(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->pos1.x < -31 || sprite->pos1.x > 271) + sprite->data0++; + return FALSE; +} + +static void sub_811CA10(s16 spriteID, s16 value) +{ + gSprites[spriteID].data7 = value; +} + +static void sub_811CA28(s16 spriteID) +{ + gSprites[spriteID].data0++; +} + +static s16 sub_811CA44(s16 spriteID) +{ + return gSprites[spriteID].data6; +} + +#undef tMugshotOpponentID +#undef tMugshotPlayerID +#undef tMugshotID + +static void Phase2Task_Transition_Slice(u8 taskID) +{ + while (sPhase2_Transition_Slice_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Slice_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + task->data[2] = 256; + task->data[3] = 1; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14; + gUnknown_03004DE0[1][160 + i] = 0xF0; + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + SetVBlankCallback(VBlankCB_Phase2_Transition_Slice); + SetHBlankCallback(HBlankCB_Phase2_Transition_Slice); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Slice_Func2(struct Task* task) +{ + u16 i; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[1] += (task->data[2] >> 8); + if (task->data[1] > 0xF0) + task->data[1] = 0xF0; + if (task->data[2] <= 0xFFF) + task->data[2] += task->data[3]; + if (task->data[3] < 128) + task->data[3] <<= 1; // multiplying by two + + for (i = 0; i < 160; i++) + { + u16* storeLoc1 = &gUnknown_03004DE0[0][i]; + u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + if (1 & i) + { + *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; + *storeLoc2 = 0xF0 - task->data[1]; + } + else + { + *storeLoc1 = TRANSITION_STRUCT.field_14 - task->data[1]; + *storeLoc2 = (task->data[1] << 8) | (0xF1); + } + } + + if (task->data[1] > 0xEF) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Slice_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Slice)); + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Slice(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_WININ = TRANSITION_STRUCT.WININ; + 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], ®_WIN0H, 0xA2400001); +} + +static void HBlankCB_Phase2_Transition_Slice(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition_WhiteFade(u8 taskID) +{ + while (sPhase2_Transition_WhiteFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.BLDCNT = 0xBF; + TRANSITION_STRUCT.BLDY = 0; + TRANSITION_STRUCT.WININ = 0x1E; + TRANSITION_STRUCT.WINOUT = 0x3F; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0; + gUnknown_03004DE0[1][i + 160] = 0xF0; + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade); + SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task) +{ + s16 i, posY; + s16 arr1[8]; + struct Sprite* sprite; + + memcpy(arr1, sUnknown_083FD8C4, sizeof(sUnknown_083FD8C4)); + for (i = 0, posY = 0; i < 8; i++, posY += 0x14) + { + sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)]; + sprite->pos1.x = 0xF0; + sprite->pos1.y = posY; + sprite->data5 = arr1[i]; + } + sprite->data6++; + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (TRANSITION_STRUCT.field_20 > 7) + { + BlendPalettes(-1, 0x10, 0x7FFF); + task->tState++; + } + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + DmaStop(0); + SetVBlankCallback(0); + SetHBlankCallback(0); + + TRANSITION_STRUCT.field_6 = 0xF0; + TRANSITION_STRUCT.BLDY = 0; + TRANSITION_STRUCT.BLDCNT = 0xFF; + TRANSITION_STRUCT.WININ = 0x3F; + + SetVBlankCallback(VBlankCB1_Phase2_Transition_WhiteFade); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task) +{ + if (++TRANSITION_STRUCT.BLDY > 16) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_WhiteFade)); + } + return FALSE; +} + +static void VBlankCB0_Phase2_Transition_WhiteFade(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + 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], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition_WhiteFade(void) +{ + VBlankCB_BattleTransition(); + REG_BLDY = TRANSITION_STRUCT.BLDY; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0H = TRANSITION_STRUCT.field_6; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; +} + +static void HBlankCB_Phase2_Transition_WhiteFade(void) +{ + REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; +} + +static void sub_811CFD0(struct Sprite* sprite) +{ + if (sprite->data5) + { + sprite->data5--; + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + } + else + { + u16 i; + u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; + u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + for (i = 0; i < 20; i++) + { + ptr1[i] = sprite->data0 >> 8; + ptr2[i] = (u8)(sprite->pos1.x); + } + if (sprite->pos1.x == 0 && sprite->data0 == 0x1000) + sprite->data1 = 1; + + sprite->pos1.x -= 16; + sprite->data0 += 0x80; + + if (sprite->pos1.x < 0) + sprite->pos1.x = 0; + if (sprite->data0 > 0x1000) + sprite->data0 = 0x1000; + + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + + if (sprite->data1) + { + if (sprite->data6 == 0 || (TRANSITION_STRUCT.field_20 > 6 && sprite->data2++ > 7)) + { + TRANSITION_STRUCT.field_20++; + DestroySprite(sprite); + } + } + } +} + +static void Phase2Task_Transition_GridSquares(u8 taskID) +{ + while (sPhase2_Transition_GridSquares_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(sShrinkingBoxTileset, dst2, 0x10); + CpuFill16(0xF000, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task) +{ + u16* dst1; + + if (task->data[1] == 0) + { + sub_811D690(&dst1); + task->data[1] = 3; + task->data[2]++; + CpuSet(sShrinkingBoxTileset + (task->data[2] * 8), dst1, 0x10); + if (task->data[2] > 0xD) + { + task->tState++; + task->data[1] = 16; + } + } + + task->data[1]--; + return FALSE; +} + +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task) +{ + if (--task->data[1] == 0) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_GridSquares)); + } + return FALSE; +} + +static void Phase2Task_Transition_Shards(u8 taskID) +{ + while (sPhase2_Transition_Shards_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Shards_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0x3F; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[0][i] = 0xF0; + } + + CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + SetVBlankCallback(VBlankCB_Phase2_Transition_Shards); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Shards_Func2(struct Task* task) +{ + sub_811D8FC(TRANSITION_STRUCT.data, + sUnknown_083FD8F4[task->data[1]][0], + sUnknown_083FD8F4[task->data[1]][1], + sUnknown_083FD8F4[task->data[1]][2], + sUnknown_083FD8F4[task->data[1]][3], + 1, 1); + task->data[2] = sUnknown_083FD8F4[task->data[1]][4]; + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Shards_Func3(struct Task* task) +{ + s16 i; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + 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; + if (task->data[2] == 0) + { + if (r3 < TRANSITION_STRUCT.data[2]) + r3 = TRANSITION_STRUCT.data[2]; + if (r3 > r4) + r3 = r4; + } + else + { + if (r4 > TRANSITION_STRUCT.data[2]) + r4 = TRANSITION_STRUCT.data[2]; + if (r4 <= r3) + r4 = r3; + } + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); + if (nextFunc) + { + task->tState++; + break; + } + else + nextFunc = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Shards_Func4(struct Task* task) +{ + if (++task->data[1] < 7) + { + task->tState++; + task->data[3] = sUnknown_083FD93A[task->data[1] - 1]; + return TRUE; + } + else + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shards)); + return FALSE; + } +} + +static bool8 Phase2_Transition_Shards_Func5(struct Task* task) +{ + if (--task->data[3] == 0) + { + task->tState = 1; + return TRUE; + } + else + return FALSE; +} + +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); + 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], ®_WIN0H, 0xA2400001); +} + +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) +{ + u8 taskID = CreateTask(Phase1_Task_RunFuncs, 3); + gTasks[taskID].data[1] = a0; + gTasks[taskID].data[2] = a1; + gTasks[taskID].data[3] = a2; + gTasks[taskID].data[4] = a3; + gTasks[taskID].data[5] = a4; + gTasks[taskID].data[6] = a0; +} + +static bool8 sub_811D52C(void) +{ + if (FindTaskIdByFunc(Phase1_Task_RunFuncs) == 0xFF) + return TRUE; + else + return FALSE; +} + +static void Phase1_Task_RunFuncs(u8 taskID) +{ + while (sPhase1_TransitionAll_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase1_TransitionAll_Func1(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[1]; + task->data[7] += task->data[4]; + if (task->data[7] > 16) + task->data[7] = 16; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] > 15) + { + task->tState++; + task->data[6] = task->data[2]; + } + return FALSE; +} + +static bool8 Phase1_TransitionAll_Func2(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[2]; + task->data[7] -= task->data[5]; + if (task->data[7] < 0) + task->data[7] = 0; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] == 0) + { + if (--task->data[3] == 0) + DestroyTask(FindTaskIdByFunc(Phase1_Task_RunFuncs)); + else + { + task->data[6] = task->data[1]; + task->tState = 0; + } + } + return FALSE; +} + +static void sub_811D658(void) +{ + struct TransitionData* const* dummy = &sTransitionStructPtr; + memset(*dummy, 0, sizeof(struct TransitionData)); + sub_8057B14(&TRANSITION_STRUCT.field_14, &TRANSITION_STRUCT.field_16); +} + +static void VBlankCB_BattleTransition(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_811D690(u16** a0) +{ + u16 reg, *vram; + + reg = REG_BG0CNT >> 2; + reg <<= 0xE; + vram = (u16*)(VRAM + reg); + + *a0 = vram; +} + +static void sub_811D6A8(u16** a0, u16** a1) +{ + u16 reg0, reg1, *vram0, *vram1; + + reg0 = REG_BG0CNT >> 8; + reg1 = REG_BG0CNT >> 2; + + reg0 <<= 0xB; + reg1 <<= 0xE; + + vram0 = (u16*)(VRAM + reg0); + *a0 = vram0; + + vram1 = (u16*)(VRAM + reg1); + *a1 = vram1; +} + +static void sub_811D6D4(void) +{ + BlendPalettes(-1, 0x10, 0); +} + +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize) +{ + u8 i; + for (i = 0; arrSize > 0; arrSize--, i++, index += indexIncrementer) + { + array[i] = sinAdd + Sin(0xFF & index, amplitude); + } +} + +static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) +{ + s16 i; + + memset(array, 0xA, 160 * sizeof(s16)); + for (i = 0; i < 64; i++) + { + s16 sinResult, cosResult; + s16 toStoreOrr, r2, r3, toStore, r7, r8; + + sinResult = Sin(i, a3); + cosResult = Cos(i, a3); + + toStoreOrr = a1 - sinResult; + toStore = a1 + sinResult; + r7 = a2 - cosResult; + r8 = a2 + cosResult; + + if (toStoreOrr < 0) + toStoreOrr = 0; + if (toStore > 0xF0) + toStore = 0xF0; + if (r7 < 0) + r7 = 0; + if (r8 > 0x9F) + r8 = 0x9F; + + toStore |= (toStoreOrr << 8); + array[r7] = toStore; + array[r8] = toStore; + + cosResult = Cos(i + 1, a3); + r3 = a2 - cosResult; + r2 = a2 + cosResult; + + if (r3 < 0) + r3 = 0; + if (r2 > 0x9F) + r2 = 0x9F; + + while (r7 > r3) + array[--r7] = toStore; + while (r7 < r3) + array[++r7] = toStore; + + while (r8 > r2) + array[--r8] = toStore; + while (r8 < r2) + array[++r8] = toStore; + } +} + +static void sub_811D8FC(s16* data, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + data[0] = a1; + data[1] = a2; + data[2] = a1; + data[3] = a2; + data[4] = a3; + data[5] = a4; + data[6] = a5; + data[7] = a6; + data[8] = a3 - a1; + if (data[8] < 0) + { + data[8] = -data[8]; + data[6] = -a5; + } + data[9] = a4 - a2; + if (data[9] < 0) + { + data[9] = -data[9]; + data[7] = -a6; + } + data[10] = 0; +} + +static bool8 sub_811D978(s16* data, bool8 a1, bool8 a2) +{ + u8 var; + if (data[8] > data[9]) + { + data[2] += data[6]; + data[10] += data[9]; + if (data[10] > data[8]) + { + data[3] += data[7]; + data[10] -= data[8]; + } + } + else + { + data[3] += data[7]; + data[10] += data[8]; + if (data[10] > data[9]) + { + data[2] += data[6]; + data[10] -= data[9]; + } + } + var = 0; + if ((data[6] > 0 && data[2] >= data[4]) || (data[6] < 0 && data[2] <= data[4])) + { + var++; + if (a1) + data[2] = data[4]; + } + if ((data[7] > 0 && data[3] >= data[5]) || (data[7] < 0 && data[3] <= data[5])) + { + var++; + if (a2) + data[3] = data[5]; + } + if (var == 2) + return TRUE; + else + return FALSE; +} diff --git a/src/battle/calculate_base_damage.c b/src/battle/calculate_base_damage.c new file mode 100644 index 000000000..f5c679876 --- /dev/null +++ b/src/battle/calculate_base_damage.c @@ -0,0 +1,309 @@ +#include "global.h" +#include "abilities.h" +#include "battle.h" +#include "berry.h" +#include "data2.h" +#include "event_data.h" +#include "hold_effects.h" +#include "item.h" +#include "items.h" +#include "pokemon.h" +#include "species.h" +#include "moves.h" +#include "battle_move_effects.h" + +extern u32 dword_2017100[]; +extern u16 gBattleTypeFlags; +extern struct BattlePokemon gBattleMons[4]; +extern u16 gCurrentMove; +extern u8 gCritMultiplier; +extern u16 gBattleWeather; +extern struct BattleEnigmaBerry gEnigmaBerries[]; +extern u16 gBattleMovePower; +extern u16 gTrainerBattleOpponent; + +extern const u8 gHoldEffectToType[][2]; +extern const u8 gStatStageRatios[][2]; + +u8 GetBankSide(u8 bank); + +#define APPLY_STAT_MOD(var, mon, stat, statIndex) \ +{ \ + (var) = (stat) * (gStatStageRatios)[(mon)->statStages[(statIndex)]][0]; \ + (var) /= (gStatStageRatios)[(mon)->statStages[(statIndex)]][1]; \ +} + +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef) +{ + u32 i; + s32 damage = 0; + s32 damageHelper; + u8 type; + u16 attack, defense; + u16 spAttack, spDefense; + u8 defenderHoldEffect; + u8 defenderHoldEffectParam; + u8 attackerHoldEffect; + u8 attackerHoldEffectParam; + + if (!powerOverride) + gBattleMovePower = gBattleMoves[move].power; + else + gBattleMovePower = powerOverride; + + if (!typeOverride) + type = gBattleMoves[move].type; + else + type = typeOverride & 0x3F; + + attack = attacker->attack; + defense = defender->defense; + spAttack = attacker->spAttack; + spDefense = defender->spDefense; + + if (attacker->item == ITEM_ENIGMA_BERRY) + { + attackerHoldEffect = gEnigmaBerries[bankAtk].holdEffect; + attackerHoldEffectParam = gEnigmaBerries[bankAtk].holdEffectParam; + } + else + { + attackerHoldEffect = ItemId_GetHoldEffect(attacker->item); + attackerHoldEffectParam = ItemId_GetHoldEffectParam(attacker->item); + } + + if (defender->item == ITEM_ENIGMA_BERRY) + { + defenderHoldEffect = gEnigmaBerries[bankDef].holdEffect; + defenderHoldEffectParam = gEnigmaBerries[bankDef].holdEffectParam; + } + else + { + defenderHoldEffect = ItemId_GetHoldEffect(defender->item); + defenderHoldEffectParam = ItemId_GetHoldEffectParam(defender->item); + } + + if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER) + attack *= 2; + + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) + && gTrainerBattleOpponent != 1024 + && FlagGet(BADGE01_GET) + && !GetBankSide(bankAtk)) + attack = (110 * attack) / 100; + } + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) + && gTrainerBattleOpponent != 1024 + && FlagGet(BADGE05_GET) + && !GetBankSide(bankDef)) + defense = (110 * defense) / 100; + } + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) + && gTrainerBattleOpponent != 1024 + && FlagGet(BADGE07_GET) + && !GetBankSide(bankAtk)) + spAttack = (110 * spAttack) / 100; + } + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) + && gTrainerBattleOpponent != 1024 + && FlagGet(BADGE07_GET) + && !GetBankSide(bankDef)) + spDefense = (110 * spDefense) / 100; + } + + for (i = 0; i < 17; i++) + { + if (attackerHoldEffect == gHoldEffectToType[i][0] + && type == gHoldEffectToType[i][1]) + { + if (type <= 8) + attack = (attack * (attackerHoldEffectParam + 100)) / 100; + else + spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100; + break; + } + } + + if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND) + attack = (150 * attack) / 100; + if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS)) + spAttack = (150 * spAttack) / 100; + if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS)) + spDefense = (150 * spDefense) / 100; + if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL) + spAttack *= 2; + if (defenderHoldEffect == HOLD_EFFECT_DEEP_SEA_SCALE && defender->species == SPECIES_CLAMPERL) + spDefense *= 2; + if (attackerHoldEffect == HOLD_EFFECT_LIGHT_BALL && attacker->species == SPECIES_PIKACHU) + spAttack *= 2; + if (defenderHoldEffect == HOLD_EFFECT_METAL_POWDER && defender->species == SPECIES_DITTO) + defense *= 2; + if (attackerHoldEffect == HOLD_EFFECT_THICK_CLUB && (attacker->species == SPECIES_CUBONE || attacker->species == SPECIES_MAROWAK)) + attack *= 2; + if (defender->ability == ABILITY_THICK_FAT && (type == TYPE_FIRE || type == TYPE_ICE)) + spAttack /= 2; + if (attacker->ability == ABILITY_HUSTLE) + attack = (150 * attack) / 100; + if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MINUS, 0, 0)) + spAttack = (150 * spAttack) / 100; + if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_PLUS, 0, 0)) + spAttack = (150 * spAttack) / 100; + if (attacker->ability == ABILITY_GUTS && attacker->status1) + attack = (150 * attack) / 100; + if (defender->ability == ABILITY_MARVEL_SCALE && defender->status1) + defense = (150 * defense) / 100; + if (type == TYPE_ELECTRIC && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, 0xFD, 0)) + gBattleMovePower /= 2; + if (type == TYPE_FIRE && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, 0xFE, 0)) + gBattleMovePower /= 2; + if (type == TYPE_GRASS && attacker->ability == ABILITY_OVERGROW && attacker->hp <= (attacker->maxHP / 3)) + gBattleMovePower = (150 * gBattleMovePower) / 100; + if (type == TYPE_FIRE && attacker->ability == ABILITY_BLAZE && attacker->hp <= (attacker->maxHP / 3)) + gBattleMovePower = (150 * gBattleMovePower) / 100; + if (type == TYPE_WATER && attacker->ability == ABILITY_TORRENT && attacker->hp <= (attacker->maxHP / 3)) + gBattleMovePower = (150 * gBattleMovePower) / 100; + if (type == TYPE_BUG && attacker->ability == ABILITY_SWARM && attacker->hp <= (attacker->maxHP / 3)) + gBattleMovePower = (150 * gBattleMovePower) / 100; + if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION) + defense /= 2; + + if (type < TYPE_MYSTERY) // is physical + { + if (gCritMultiplier == 2) + { + if (attacker->statStages[STAT_STAGE_ATK] > 6) + APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK) + else + damage = attack; + } + else + APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK) + + damage = damage * gBattleMovePower; + damage *= (2 * attacker->level / 5 + 2); + + if (gCritMultiplier == 2) + { + if (defender->statStages[STAT_STAGE_DEF] < 6) + APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF) + else + damageHelper = defense; + } + else + APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF) + + damage = damage / damageHelper; + damage /= 50; + + if ((attacker->status1 & STATUS_BURN) && attacker->ability != ABILITY_GUTS) + damage /= 2; + + if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2) + damage = 2 * (damage / 3); + else + damage /= 2; + } + + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2) + damage /= 2; + + // moves always do at least 1 damage. + if (damage == 0) + damage = 1; + } + + if (type == TYPE_MYSTERY) + damage = 0; // is ??? type. does 0 damage. + + if (type > TYPE_MYSTERY) // is special? + { + if (gCritMultiplier == 2) + { + if (attacker->statStages[STAT_STAGE_SPATK] > 6) + APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK) + else + damage = spAttack; + } + else + APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK) + + damage = damage * gBattleMovePower; + damage *= (2 * attacker->level / 5 + 2); + + if (gCritMultiplier == 2) + { + if (defender->statStages[STAT_STAGE_SPDEF] < 6) + APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF) + else + damageHelper = spDefense; + } + else + APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF) + + damage = (damage / damageHelper); + damage /= 50; + + if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2) + damage = 2 * (damage / 3); + else + damage /= 2; + } + + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2) + damage /= 2; + + // are effects of weather negated with cloud nine or air lock + if (!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) + && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0)) + { + if (gBattleWeather & WEATHER_RAIN_TEMPORARY) + { + switch (type) + { + case TYPE_FIRE: + damage /= 2; + break; + case TYPE_WATER: + damage = (15 * damage) / 10; + break; + } + } + + // any weather except sun weakens solar beam + if ((gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_HAIL)) && gCurrentMove == MOVE_SOLAR_BEAM) + damage /= 2; + + // sunny + if (gBattleWeather & WEATHER_SUN_ANY) + { + switch (type) + { + case TYPE_FIRE: + damage = (15 * damage) / 10; + break; + case TYPE_WATER: + damage /= 2; + break; + } + } + } + + // flash fire triggered + if ((dword_2017100[bankAtk] & 1) && type == TYPE_FIRE) + damage = (15 * damage) / 10; + } + + return damage + 2; +} diff --git a/src/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 0ae98af09..0ae98af09 100644 --- a/src/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c diff --git a/src/pokeball.c b/src/battle/pokeball.c index ee3b95678..ee3b95678 100644 --- a/src/pokeball.c +++ b/src/battle/pokeball.c diff --git a/src/post_battle_event_funcs.c b/src/battle/post_battle_event_funcs.c index 8d85705c8..27d7022fe 100644 --- a/src/post_battle_event_funcs.c +++ b/src/battle/post_battle_event_funcs.c @@ -4,7 +4,7 @@ #include "load_save.h" #include "main.h" #include "pokemon.h" -#include "rom4.h" +#include "overworld.h" #include "script_pokemon_80C4.h" extern u8 gUnknown_02039324; @@ -14,7 +14,7 @@ int GameClear(void) int i; bool32 ribbonGet; - HealPlayerParty(); + ScrSpecial_HealPlayerParty(); if (FlagGet(SYS_GAME_CLEAR) == TRUE) { diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c new file mode 100644 index 000000000..343c8f183 --- /dev/null +++ b/src/battle/reshow_battle_screen.c @@ -0,0 +1,332 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "palette.h" +#include "main.h" +#include "unknown_task.h" +#include "text.h" +#include "rom_8077ABC.h" +#include "data2.h" + +extern struct SpriteTemplate gUnknown_02024E8C; +extern struct Window gUnknown_03004210; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_030042A0; +extern u8 gReservedSpritePaletteCount; +extern u8 gActionSelectionCursor[4]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[4]; +extern u8 gNoOfAllBanks; +extern u16 gBattleTypeFlags; +extern u8 gObjectBankIDs[4]; +extern u8 gBattleMonForms[4]; +extern u8 gHealthboxIDs[4]; + +bool8 sub_800E414(u8 a0); +bool8 sub_8031C30(u8 a0); +void sub_8031EE8(void); +void sub_80327CC(void); +void sub_8032984(u8 a, u16 b); +void sub_800FCD4(void); +void BattleLoadOpponentMonSprite(struct Pokemon *, u8 bank); +void BattleLoadPlayerMonSprite(struct Pokemon *, u8 bank); +void BattleLoadSubstituteSprite(u8 bank, u8 b); +void LoadPlayerTrainerBankSprite(u16 a0, u8 bank); +u8 sub_8077F7C(u8 bank); +u8 sub_8077F68(u8 bank); +void nullsub_11(u8 healthboxID, u8 a1); +void sub_8043DB0(u8 bank); +u8 battle_make_oam_normal_battle(u8 bank); +u8 battle_make_oam_safari_battle(void); +void sub_8045A5C(u8 healthboxID, struct Pokemon*, u8); +void sub_8043F44(u8 bank); +void sub_8043DFC(u8 healthboxID); + +// this file's functions +static void CB2_ReshowBattleScreenAfterMenu(void); +static bool8 LoadAppropiateBankSprite(u8 bank); +static void sub_807B184(u8 bank); +static void sub_807B508(u8 bank); +static void sub_807B06C(void); + +#define gReshowState ewram[0x1FFFF] +#define gHelperState ewram[0x1FFFE] + +void nullsub_14(void) +{ + +} + +void ReshowBattleScreenAfterMenu(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetHBlankCallback(0); + SetVBlankCallback(0); + REG_MOSAIC = 0; + gReshowState = 0; + gHelperState = 0; + SetMainCallback2(CB2_ReshowBattleScreenAfterMenu); +} + +static void CB2_ReshowBattleScreenAfterMenu(void) +{ + switch (gReshowState) + { + case 0: + dp12_8087EA4(); + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 0; + gUnknown_030041B8 = 0; + break; + case 1: + { + const u32 zero = 0; + CpuFastSet(&zero, (void*) VRAM, 0x1006000); + } + break; + case 2: + if (!sub_800E414(gHelperState)) + { + gHelperState++; + gReshowState--; + } + else + gHelperState = 0; + break; + case 3: + ResetSpriteData(); + break; + case 4: + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + break; + case 5: + sub_8031EE8(); + break; + case 6: + if (sub_8031C30(gHelperState)) + gHelperState = 0; + else + { + gHelperState++; + gReshowState--; + } + break; + case 7: + if (!LoadAppropiateBankSprite(0)) + gReshowState--; + break; + case 8: + if (!LoadAppropiateBankSprite(1)) + gReshowState--; + break; + case 9: + if (!LoadAppropiateBankSprite(2)) + gReshowState--; + break; + case 10: + if (!LoadAppropiateBankSprite(3)) + gReshowState--; + break; + case 11: + sub_807B184(0); + break; + case 12: + sub_807B184(1); + break; + case 13: + sub_807B184(2); + break; + case 14: + sub_807B184(3); + break; + case 15: + sub_807B508(0); + break; + case 16: + sub_807B508(1); + break; + case 17: + sub_807B508(2); + break; + case 18: + sub_807B508(3); + break; + case 19: + { + u8 opponentBank; + u16 species; + + sub_80327CC(); + + opponentBank = GetBankByPlayerAI(1); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + sub_8032984(opponentBank, species); + + if (IsDoubleBattle()) + { + opponentBank = GetBankByPlayerAI(3); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + sub_8032984(opponentBank, species); + } + sub_802E3E4(gActionSelectionCursor[gBankInMenu], 0); + } + break; + default: + SetHBlankCallback(sub_800FCD4); + SetVBlankCallback(sub_800FCFC); + sub_807B06C(); + BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(sub_800F808); + break; + } + gReshowState++; +} + +static void sub_807B06C(void) +{ + struct BGCntrlBitfield *regBgcnt1, *regBgcnt2; + + sub_800D6D4(); + + regBgcnt1 = (void*)(®_BG1CNT); + regBgcnt1->charBaseBlock = 0; + + regBgcnt2 = (void*)(®_BG2CNT); + regBgcnt2->charBaseBlock = 0; +} + +static bool8 LoadAppropiateBankSprite(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + if (GetBankSide(bank)) + { + if (!ewram17800[bank].substituteSprite) + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSprite(bank, 0); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + LoadPlayerTrainerBankSprite(2, 0); + else if (!ewram17800[bank].substituteSprite) + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSprite(bank, 0); + + gHelperState = 0; + } + return 1; +} + +static void sub_807B184(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u8 posY; + + if (ewram17800[bank].substituteSprite) + posY = sub_8077F7C(bank); + else + posY = sub_8077F68(bank); + if (GetBankSide(bank)) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + return; + GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + { + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + sub_8079E90(0)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + } + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + { + GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, + (8 - gTrainerBackPicCoords[2].coords) * 4 + 80, + sub_8079E90(0)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + } + else + { + if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + return; + GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + } + gSprites[gObjectBankIDs[bank]].invisible = ewram17800[bank].invisible; + } +} + +static void sub_807B508(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u8 healthboxID; + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + healthboxID = battle_make_oam_safari_battle(); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + return; + else + healthboxID = battle_make_oam_normal_battle(bank); + gHealthboxIDs[bank] = healthboxID; + sub_8043F44(bank); + sub_8043DFC(healthboxID); + if (GetBankSide(bank)) + sub_8045A5C(gHealthboxIDs[bank], &gEnemyParty[gBattlePartyID[bank]], 0); + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 10); + else + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 0); + if (GetBankIdentity(bank) == 3 || GetBankIdentity(bank) == 2) + nullsub_11(gHealthboxIDs[bank], 1); + else + nullsub_11(gHealthboxIDs[bank], 0); + if (GetBankSide(bank)) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + sub_8043DB0(healthboxID); + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + { + if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + sub_8043DB0(healthboxID); + } + } +} diff --git a/src/smokescreen.c b/src/battle/smokescreen.c index 8345cb6ad..8345cb6ad 100644 --- a/src/smokescreen.c +++ b/src/battle/smokescreen.c diff --git a/src/battle_6.c b/src/battle_6.c deleted file mode 100644 index 9ea3f240a..000000000 --- a/src/battle_6.c +++ /dev/null @@ -1,1507 +0,0 @@ -#include "global.h" -#include "battle.h" -#include "battle_interface.h" -#include "battle_message.h" -#include "data2.h" -#include "menu_cursor.h" -#include "palette.h" -#include "pokemon.h" -#include "rom3.h" -#include "songs.h" -#include "sound.h" -#include "sprite.h" -#include "string_util.h" -#include "task.h" -#include "text.h" -#include "util.h" - -//Possibly PokemonSubstruct1 -struct UnknownStruct3 -{ - u16 moves[4]; - u8 pp[4]; - u8 ppBonuses; -}; - -extern u16 gUnknown_030042A4; -extern u16 gUnknown_030042A0; - -extern struct Window gUnknown_03004210; - -extern void (*gBattleBankFunc[])(void); - -extern u8 gActiveBank; -extern u8 gActionSelectionCursor[]; -extern u8 gDisplayedStringBattle[]; -extern u8 gMoveSelectionCursor[]; -extern u8 gBattleBufferA[][0x200]; -extern u8 gBankInMenu; -extern u16 gBattlePartyID[]; -extern u8 gHealthboxIDs[]; -extern u8 gDoingBattleAnim; -extern u8 gObjectBankIDs[]; -extern u16 gBattleTypeFlags; -extern u8 gBattleOutcome; -extern void (*gAnimScriptCallback)(void); -extern bool8 gAnimScriptActive; -extern u16 gMovePowerMoveAnim; -extern u32 gMoveDmgMoveAnim; -extern u8 gHappinessMoveAnim; -extern u16 gWeatherMoveAnim; -extern u32 *gDisableStructMoveAnim; -extern u32 gPID_perBank[]; -extern u8 gBattleMonForms[]; -extern u16 gUnknown_02024DE8; -extern u8 gUnknown_02024E68[]; -extern struct SpriteTemplate gUnknown_02024E8C; -extern u8 gUnknown_0202F7C4; -extern u8 gUnknown_02038470[]; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B4; -extern u16 gUnknown_030041B8; -extern u16 gUnknown_03004280; -extern u16 gUnknown_03004288; -extern u16 gUnknown_030042A4; -extern u16 gUnknown_030042C0; -extern u8 gUnknown_03004344; -extern u8 gUnknown_0300434C[]; - -extern const u8 gUnknown_08400CA8[]; -extern const u8 gUnknown_08400CF3[]; -extern const u8 gUnknown_08400D38[]; - -#if ENGLISH -#define SUB_803037C_TILE_DATA_OFFSET 440 -#elif GERMAN -#define SUB_803037C_TILE_DATA_OFFSET 444 -#endif - -extern void sub_802C68C(void); -extern void sub_802E1B0(void); -extern void sub_802E3B4(); -extern void sub_802E220(); -extern void sub_802E2D4(); -extern void sub_802E004(void); -extern void sub_802DF30(void); -extern void sub_80325B8(void); -extern void PlayerBufferExecCompleted(void); -extern void bx_t1_healthbar_update(void); -extern void nullsub_91(void); -extern void sub_802D924(u8); -extern void sub_802E434(void); -extern bool8 mplay_80342A4(u8); -extern void move_anim_start_t2_for_situation(); -extern void bx_blink_t1(void); -extern void sub_8047858(); -extern u8 GetBankSide(u8); -extern void sub_80E43C0(); -extern void oamt_add_pos2_onto_pos1(); -extern void sub_8078B34(struct Sprite *); -extern void oamt_set_x3A_32(); -extern void sub_80318FC(); -extern bool8 IsDoubleBattle(void); -extern void sub_802D500(void); -extern void dp11b_obj_free(); -extern bool8 sub_8078874(u8); -extern bool8 move_anim_start_t3(); -extern void sub_802E460(void); -extern void b_link_standby_message(void); -extern void sub_802D18C(void); -extern void sub_802DF18(void); -extern void BufferStringBattle(); -extern void sub_80326EC(); -extern void ExecuteMoveAnim(); -extern void sub_8031F24(void); -extern void sub_80324BC(); -extern u8 sub_8031720(); -extern void bx_wait_t1(void); -extern u8 GetBankByPlayerAI(u8); -extern void sub_802DE10(void); -extern void sub_80105EC(struct Sprite *); -extern void sub_802D274(void); -extern void sub_802D23C(void); -extern u8 GetBankIdentity(u8); -extern void sub_8031AF4(); -extern void sub_80313A0(struct Sprite *); -extern void sub_802D204(void); -extern u8 sub_8079E90(); -extern void sub_802DEAC(void); -extern void sub_80312F0(struct Sprite *); -extern u8 sub_8077ABC(); -extern u8 sub_8077F68(); -extern u8 sub_8046400(); -extern void sub_802D798(void); -extern void bx_0802E404(void); - -u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *); -void dp01_setattr_by_ch1_for_player_pokemon(u8); -void sub_802F934(u8, u8); -void sub_802FB2C(void); -void sub_8030190(void); -void sub_80304A8(void); -void sub_8030E38(struct Sprite *); -void task05_08033660(u8); -void sub_8031064(void); - -void PlayerHandleGetAttributes(void) -{ - u8 unkData[0x100]; - u32 offset = 0; - u8 r4; - s32 i; - - if (gBattleBufferA[gActiveBank][2] == 0) - { - offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData); - } - else - { - r4 = gBattleBufferA[gActiveBank][2]; - for (i = 0; i < 6; i++) - { - if (r4 & 1) - offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset); - r4 >>= 1; - } - } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, offset, unkData); - PlayerBufferExecCompleted(); -} - -// Duplicate of dp01_getattr_by_ch1_for_player_pokemon -u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) -{ - struct BattlePokemon battlePokemon; - struct UnknownStruct3 moveData; - u8 nickname[20]; - u8 *src; - s16 data16; - u32 data32; - s32 size = 0; - - switch (gBattleBufferA[gActiveBank][1]) - { - case 0: - battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); - battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); - for (size = 0; size < 4; size++) - { - battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size); - battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); - } - battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); - battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP); - battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP); - battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); - battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); - battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); - battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); - battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); - battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); - battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS); - battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL); - battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP); - battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); - battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK); - battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF); - battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD); - battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); - battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); - battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG); - battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY); - battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); - GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname); - StringCopy10(battlePokemon.nickname, nickname); - GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName); - src = (u8 *)&battlePokemon; - for (size = 0; size < sizeof(battlePokemon); size++) - buffer[size] = src[size]; - break; - case 1: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 2: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 3: - for (size = 0; size < 4; size++) - { - moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size); - moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); - } - moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); - src = (u8 *)&moveData; - for (size = 0; size < sizeof(moveData); size++) - buffer[size] = src[size]; - break; - case 4: - case 5: - case 6: - case 7: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 8: - for (size = 0; size < 4; size++) - buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); - buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); - size++; - break; - case 9: - case 10: - case 11: - case 12: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9); - size = 1; - break; - case 17: - data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); - buffer[0] = (data32 & 0x000000FF); - buffer[1] = (data32 & 0x0000FF00) >> 8; - buffer[2] = (data32 & 0x00FF0000) >> 16; - size = 3; - break; - case 18: - data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP); - buffer[0] = (data32 & 0x000000FF); - buffer[1] = (data32 & 0x0000FF00) >> 8; - buffer[2] = (data32 & 0x00FF0000) >> 16; - size = 3; - break; - case 19: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV); - size = 1; - break; - case 20: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV); - size = 1; - break; - case 21: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV); - size = 1; - break; - case 22: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV); - size = 1; - break; - case 23: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV); - size = 1; - break; - case 24: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV); - size = 1; - break; - case 25: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP); - size = 1; - break; - case 26: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS); - size = 1; - break; - case 27: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION); - size = 1; - break; - case 28: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL); - size = 1; - break; - case 29: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME); - size = 1; - break; - case 30: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL); - size = 1; - break; - case 31: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); - buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); - buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); - buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); - buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); - size = 6; - break; - case 32: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); - size = 1; - break; - case 33: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); - size = 1; - break; - case 34: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - size = 1; - break; - case 35: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); - size = 1; - break; - case 36: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); - size = 1; - break; - case 37: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); - size = 1; - break; - case 38: - data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); - buffer[0] = (data32 & 0x000000FF); - buffer[1] = (data32 & 0x0000FF00) >> 8; - buffer[2] = (data32 & 0x00FF0000) >> 16; - buffer[3] = (data32 & 0xFF000000) >> 24; - size = 4; - break; - case 39: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 40: - data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS); - buffer[0] = (data32 & 0x000000FF); - buffer[1] = (data32 & 0x0000FF00) >> 8; - buffer[2] = (data32 & 0x00FF0000) >> 16; - buffer[3] = (data32 & 0xFF000000) >> 24; - size = 4; - break; - case 41: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL); - size = 1; - break; - case 42: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 43: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 44: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 45: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 46: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 47: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 48: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 49: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL); - size = 1; - break; - case 50: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY); - size = 1; - break; - case 51: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE); - size = 1; - break; - case 52: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART); - size = 1; - break; - case 53: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH); - size = 1; - break; - case 54: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN); - size = 1; - break; - case 55: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON); - size = 1; - break; - case 56: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON); - size = 1; - break; - case 57: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON); - size = 1; - break; - case 58: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON); - size = 1; - break; - case 59: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON); - size = 1; - break; - } - return size; -} - -void sub_802ECF0(void) -{ - struct BattlePokemon battleMon; // I think this is a BattlePokemon - u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; - u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1]; - u8 i; - - for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) - dst[i] = src[i]; - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst); - PlayerBufferExecCompleted(); -} - -void PlayerHandleSetAttributes(void) -{ - u8 r4; - u8 i; - - if (gBattleBufferA[gActiveBank][2] == 0) - { - dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]); - } - else - { - r4 = gBattleBufferA[gActiveBank][2]; - for (i = 0; i < 6; i++) - { - if (r4 & 1) - dp01_setattr_by_ch1_for_player_pokemon(i); - r4 >>= 1; - } - } - PlayerBufferExecCompleted(); -} - -// Duplicate of sub_811EC68 -void dp01_setattr_by_ch1_for_player_pokemon(u8 a) -{ - struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3]; - struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3]; - s32 i; - - switch (gBattleBufferA[gActiveBank][1]) - { - case 0: - { - u8 iv; - - SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species); - SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item); - for (i = 0; i < 4; i++) - { - SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]); - SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]); - } - SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses); - SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship); - SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience); - iv = battlePokemon->hpIV; - SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv); - iv = battlePokemon->attackIV; - SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv); - iv = battlePokemon->defenseIV; - SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv); - iv = battlePokemon->speedIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv); - iv = battlePokemon->spAttackIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); - iv = battlePokemon->spDefenseIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv); - SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality); - SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1); - SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level); - SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp); - SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); - SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); - SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); - SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); - SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); - } - break; - case 1: - SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]); - break; - case 2: - SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]); - break; - case 3: - for (i = 0; i < 4; i++) - { - SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]); - SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]); - } - SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses); - break; - case 4: - case 5: - case 6: - case 7: - SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]); - break; - case 8: - SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]); - SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]); - SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]); - SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]); - break; - case 9: - case 10: - case 11: - case 12: - SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]); - break; - case 17: - SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]); - break; - case 18: - SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]); - break; - case 19: - SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 20: - SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 21: - SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 22: - SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 23: - SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 24: - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 25: - SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]); - break; - case 26: - SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]); - break; - case 27: - SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]); - break; - case 28: - SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]); - break; - case 29: - SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]); - break; - case 30: - SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]); - break; - case 31: - SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); - SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); - SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); - SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); - break; - case 32: - SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 33: - SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 34: - SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 35: - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 36: - SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 37: - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 38: - SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]); - break; - case 39: - SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]); - break; - case 40: - SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]); - break; - case 41: - SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]); - break; - case 42: - SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]); - break; - case 43: - SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]); - break; - case 44: - SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]); - break; - case 45: - SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); - break; - case 46: - SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); - break; - case 47: - SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); - break; - case 48: - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]); - break; - case 49: - SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]); - break; - case 50: - SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]); - break; - case 51: - SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]); - break; - case 52: - SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]); - break; - case 53: - SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]); - break; - case 54: - SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]); - break; - case 55: - SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - case 56: - SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - case 57: - SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - case 58: - SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - case 59: - SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - } - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); -} - -void sub_802F7CC(void) -{ - u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; - u8 i; - - for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) - dst[i] = gBattleBufferA[gActiveBank][3 + i]; - PlayerBufferExecCompleted(); -} - -void PlayerHandleLoadPokeSprite(void) -{ - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gBattleBankFunc[gActiveBank] = bx_0802E404; -} - -void PlayerHandleSendOutPoke(void) -{ - sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); - gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - gActionSelectionCursor[gActiveBank] = 0; - gMoveSelectionCursor[gActiveBank] = 0; - sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]); - gBattleBankFunc[gActiveBank] = sub_802D798; -} - -void sub_802F934(u8 bank, u8 b) -{ - u16 species; - - sub_8032AA8(bank, b); - gBattlePartyID[bank] = gBattleBufferA[bank][1]; - species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); - gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); - GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank)); - gObjectBankIDs[bank] = CreateSprite( - &gUnknown_02024E8C, - sub_8077ABC(bank, 2), - sub_8077F68(bank), - sub_8079E90(bank)); - gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank]; - gSprites[gObjectBankIDs[bank]].data0 = bank; - gSprites[gObjectBankIDs[bank]].data2 = species; - gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; - StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); - gSprites[gObjectBankIDs[bank]].invisible = TRUE; - gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; - gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF); -} - -void PlayerHandleReturnPokeToBall(void) -{ - if (gBattleBufferA[gActiveBank][1] == 0) - { - ewram17810[gActiveBank].unk4 = 0; - gBattleBankFunc[gActiveBank] = sub_802FB2C; - } - else - { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); - sub_8043DB0(gHealthboxIDs[gActiveBank]); - PlayerBufferExecCompleted(); - } -} - -void sub_802FB2C(void) -{ - switch (ewram17810[gActiveBank].unk4) - { - case 0: - if (ewram17800[gActiveBank].unk0_2) - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); - ewram17810[gActiveBank].unk4 = 1; - break; - case 1: - if (!ewram17810[gActiveBank].unk0_6) - { - ewram17810[gActiveBank].unk4 = 0; - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1); - gBattleBankFunc[gActiveBank] = sub_802DEAC; - } - } -} - -void PlayerHandleTrainerThrow(void) -{ - s16 r7; - - if (gBattleTypeFlags & BATTLE_TYPE_MULTI) - { - if (GetBankIdentity(gActiveBank) & 2) - r7 = 16; - else - r7 = -16; - } - else - { - r7 = 0; - } - sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); - GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( - &gUnknown_02024E8C, - r7 + 80, - (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, - sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; - gSprites[gObjectBankIDs[gActiveBank]].data0 = -2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; - gBattleBankFunc[gActiveBank] = sub_802D204; -} - -void PlayerHandleTrainerSlide(void) -{ - sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); - GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( - &gUnknown_02024E8C, - 80, - (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, - 30); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96; - gSprites[gObjectBankIDs[gActiveBank]].data0 = 2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; - gBattleBankFunc[gActiveBank] = sub_802D23C; -} - -void PlayerHandleTrainerSlideBack(void) -{ - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data0 = 50; - gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; - gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); - gBattleBankFunc[gActiveBank] = sub_802D274; -} - -void sub_802FE7C(void) -{ - if (ewram17810[gActiveBank].unk4 == 0) - { - if (ewram17800[gActiveBank].unk0_2) - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); - ewram17810[gActiveBank].unk4++; - } - else - { - if (ewram17810[gActiveBank].unk0_6 == 0) - { - ewram17810[gActiveBank].unk4 = 0; - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - PlaySE12WithPanning(SE_POKE_DEAD, -64); - gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; - gSprites[gObjectBankIDs[gActiveBank]].data2 = 5; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC; - gBattleBankFunc[gActiveBank] = sub_802DE10; - } - } -} - -void sub_802FF60(void) -{ - BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); - PlayerBufferExecCompleted(); -} - -void sub_802FF80(void) -{ - ewram17840.unk8 = 4; - gDoingBattleAnim = 1; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); - gBattleBankFunc[gActiveBank] = bx_wait_t1; -} - -void PlayerHandleBallThrow(void) -{ - u8 var = gBattleBufferA[gActiveBank][1]; - - ewram17840.unk8 = var; - gDoingBattleAnim = 1; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); - gBattleBankFunc[gActiveBank] = bx_wait_t1; -} - -void PlayerHandlePuase(void) -{ - u8 var = gBattleBufferA[gActiveBank][1]; - - // WTF is this?? - while (var != 0) - var--; - - PlayerBufferExecCompleted(); -} - -void PlayerHandleMoveAnimation(void) -{ - if (!mplay_80342A4(gActiveBank)) - { - u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); - - gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3]; - gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8); - gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24); - gHappinessMoveAnim = gBattleBufferA[gActiveBank][10]; - gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8); - gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16]; - gPID_perBank[gActiveBank] = *gDisableStructMoveAnim; - if (sub_8031720(r0, gUnknown_0202F7C4) != 0) - { - // Dead code. sub_8031720 always returns 0. - PlayerBufferExecCompleted(); - } - else - { - ewram17810[gActiveBank].unk4 = 0; - gBattleBankFunc[gActiveBank] = sub_8030190; - } - } -} - -void sub_8030190(void) -{ - u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); - u8 r7 = gBattleBufferA[gActiveBank][11]; - - switch (ewram17810[gActiveBank].unk4) - { - case 0: - if (ewram17800[gActiveBank].unk0_2 == 1 && ewram17800[gActiveBank].unk0_3 == 0) - { - ewram17800[gActiveBank].unk0_3 = 1; - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); - } - ewram17810[gActiveBank].unk4 = 1; - break; - case 1: - if (ewram17810[gActiveBank].unk0_6 == 0) - { - sub_80326EC(0); - ExecuteMoveAnim(r4); - ewram17810[gActiveBank].unk4 = 2; - } - break; - case 2: - gAnimScriptCallback(); - if (!gAnimScriptActive) - { - sub_80326EC(1); - if (ewram17800[gActiveBank].unk0_2 == 1 && r7 < 2) - { - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); - ewram17800[gActiveBank].unk0_3 = 0; - } - ewram17810[gActiveBank].unk4 = 3; - } - break; - case 3: - if (ewram17810[gActiveBank].unk0_6 == 0) - { - sub_8031F24(); - sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); - ewram17810[gActiveBank].unk4 = 0; - PlayerBufferExecCompleted(); - } - break; - } -} - -void PlayerHandlePrintString(void) -{ - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; - BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); - gBattleBankFunc[gActiveBank] = sub_802DF18; -} - -void PlayerHandlePrintStringPlayerOnly(void) -{ - if (GetBankSide(gActiveBank) == 0) - PlayerHandlePrintString(); - else - PlayerBufferExecCompleted(); -} - -void sub_803037C(void) -{ - int r4; - - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 160; - FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); - - gBattleBankFunc[gActiveBank] = sub_802C098; - - InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 11679, 0); - - for (r4 = 0; r4 < 4; r4++) - nullsub_8(r4); - - sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); - - StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CA8); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); - sub_8002F44(&gUnknown_03004210); -} - -void nullsub_42() -{ -} - -void sub_8030468(void) -{ - sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); - sub_80304A8(); - gBattleBankFunc[gActiveBank] = sub_802C68C; -} - -void sub_80304A8(void) -{ - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 320; - sub_802E1B0(); - gUnknown_03004344 = 0xFF; - sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); - if (gBattleBufferA[gActiveBank][2] != 1) - { - InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55); - sub_8002F44(&gUnknown_03004210); - } - sub_802E220(); - sub_802E2D4(); -} - -void PlayerHandleOpenBag(void) -{ - s32 i; - - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gBattleBankFunc[gActiveBank] = sub_802E004; - gBankInMenu = gActiveBank; - for (i = 0; i < 3; i++) - gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i]; -} - -void sub_8030594(void) -{ - s32 i; - - gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF); - gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF; - ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4; - ewram[0x1609D] = gBattleBufferA[gActiveBank][2]; - ewram[0x160C0] = gBattleBufferA[gActiveBank][3]; - for (i = 0; i < 3; i++) - gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i]; - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gBattleBankFunc[gActiveBank] = sub_802DF30; - gBankInMenu = gActiveBank; -} - -void sub_8030674(void) -{ - sub_80325B8(); - BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); - PlayerBufferExecCompleted(); -} - -void PlayerHandleHealthBarUpdate(void) -{ - s16 r7; - - load_gfxc_health_bar(0); - r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (r7 != 0x7FFF) - { - u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); - u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP); - - sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7); - } - else - { - u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); - - sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7); - sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0); - } - gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update; -} - -void PlayerHandleExpBarUpdate(void) -{ - u8 r7 = gBattleBufferA[gActiveBank][1]; - - if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100) - { - PlayerBufferExecCompleted(); - } - else - { - u16 r4; - u8 taskId; - - load_gfxc_health_bar(1); - GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value - r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - taskId = CreateTask(sub_802D924, 10); - gTasks[taskId].data[0] = r7; - gTasks[taskId].data[1] = r4; - gTasks[taskId].data[2] = gActiveBank; - gBattleBankFunc[gActiveBank] = nullsub_91; - } -} - -void PlayerHandleStatusIconUpdate(void) -{ - if (!mplay_80342A4(gActiveBank)) - { - sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9); - ewram17810[gActiveBank].unk0_4 = 0; - gBattleBankFunc[gActiveBank] = sub_802E434; - } -} - -void PlayerHandleStatusAnimation(void) -{ - if (!mplay_80342A4(gActiveBank)) - { - move_anim_start_t2_for_situation( - gBattleBufferA[gActiveBank][1], - gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); - gBattleBankFunc[gActiveBank] = sub_802E434; - } -} - -void PlayerHandleStatusXor(void) -{ - u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1]; - - SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val); - PlayerBufferExecCompleted(); -} - -void sub_803097C(void) -{ - PlayerBufferExecCompleted(); -} - -void PlayerHandleDMATransfer(void) -{ - u32 val1 = gBattleBufferA[gActiveBank][1] - | (gBattleBufferA[gActiveBank][2] << 8) - | (gBattleBufferA[gActiveBank][3] << 16) - | (gBattleBufferA[gActiveBank][4] << 24); - u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8); - - const u8 *src = &gBattleBufferA[gActiveBank][7]; - u8 *dst = (u8 *)val1; - u32 size = val2; - - while (1) - { - if (size <= 0x1000) - { - DmaCopy16(3, src, dst, size); - break; - } - DmaCopy16(3, src, dst, 0x1000); - src += 0x1000; - dst += 0x1000; - size -= 0x1000; - } - PlayerBufferExecCompleted(); -} - -void sub_8030A3C(void) -{ - PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); - PlayerBufferExecCompleted(); -} - -void sub_8030A6C(void) -{ - PlayerBufferExecCompleted(); -} - -void sub_8030A78(void) -{ - dp01_build_cmdbuf_x21_a_bb(1, 0, 0); - PlayerBufferExecCompleted(); -} - -void sub_8030A8C(void) -{ - dp01_build_cmdbuf_x22_a_three_bytes(1, 0, 0); - PlayerBufferExecCompleted(); -} - -void sub_8030AA0(void) -{ - dp01_build_cmdbuf_x23_aa_0(1, 0); - PlayerBufferExecCompleted(); -} - -void sub_8030AB4(void) -{ - dp01_build_cmdbuf_x24_aa_0(1, 0); - PlayerBufferExecCompleted(); -} - -void sub_8030AC8(void) -{ - gUnknown_020238C8.unk0_0 = 0; - PlayerBufferExecCompleted(); -} - -void sub_8030AE4(void) -{ - gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; - PlayerBufferExecCompleted(); -} - -void sub_8030B1C(void) -{ - gUnknown_020238C8.unk0_7 = 0; - PlayerBufferExecCompleted(); -} - -void sub_8030B34(void) -{ - gUnknown_020238C8.unk0_7 ^= 1; - PlayerBufferExecCompleted(); -} - -void PlayerHandleHitAnimation(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) - { - PlayerBufferExecCompleted(); - } - else - { - gDoingBattleAnim = 1; - gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; - sub_8047858(gActiveBank); - gBattleBankFunc[gActiveBank] = bx_blink_t1; - } -} - -void sub_8030BCC(void) -{ - PlayerBufferExecCompleted(); -} - -void PlayerHandleEffectivenessSound(void) -{ - s8 pan; - - if (GetBankSide(gActiveBank) == 0) - pan = -64; - else - pan = 63; - PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); - PlayerBufferExecCompleted(); -} - -void sub_8030C1C(void) -{ - PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); - PlayerBufferExecCompleted(); -} - -void PlayerHandleFaintingCry(void) -{ - u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - - PlayCry3(species, -25, 5); - PlayerBufferExecCompleted(); -} - -void PlayerHandleIntroSlide(void) -{ - sub_80E43C0(gBattleBufferA[gActiveBank][1]); - gUnknown_02024DE8 |= 1; - PlayerBufferExecCompleted(); -} - -void PlayerHandleTrainerBallThrow(void) -{ - u8 paletteNum; - u8 taskId; - - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data0 = 50; - gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; - gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); - paletteNum = AllocSpritePalette(0xD6F8); - LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum; - taskId = CreateTask(task05_08033660, 5); - gTasks[taskId].data[0] = gActiveBank; - if (ewram17810[gActiveBank].unk0_0) - gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; - ewram17810[4].unk9 |= 1; - gBattleBankFunc[gActiveBank] = nullsub_91; -} - -void sub_8030E38(struct Sprite *sprite) -{ - u8 r4 = sprite->data5; - - FreeSpriteOamMatrix(sprite); - FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); - DestroySprite(sprite); - sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4); - StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0); -} - -void task05_08033660(u8 taskId) -{ - if (gTasks[taskId].data[1] < 31) - { - gTasks[taskId].data[1]++; - } - else - { - u8 savedActiveBank = gActiveBank; - - gActiveBank = gTasks[taskId].data[0]; - if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40)) - { - gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_802F934(gActiveBank, 0); - } - else - { - gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_802F934(gActiveBank, 0); - gActiveBank ^= 2; - gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - sub_802F934(gActiveBank, 0); - gActiveBank ^= 2; - } - gBattleBankFunc[gActiveBank] = sub_802D500; - gActiveBank = savedActiveBank; - DestroyTask(taskId); - } -} - -void sub_8030FAC(void) -{ - if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) - { - PlayerBufferExecCompleted(); - } - else - { - ewram17810[gActiveBank].unk0_0 = 1; - gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]); - ewram17810[gActiveBank].unk5 = 0; - if (gBattleBufferA[gActiveBank][2] != 0) - ewram17810[gActiveBank].unk5 = 0x5D; - gBattleBankFunc[gActiveBank] = sub_8031064; - } -} - -void sub_8031064(void) -{ - if (ewram17810[gActiveBank].unk5++ > 0x5C) - { - ewram17810[gActiveBank].unk5 = 0; - PlayerBufferExecCompleted(); - } -} - -void sub_80310A4(void) -{ - if (ewram17810[gActiveBank].unk0_0) - gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; - PlayerBufferExecCompleted(); -} - -void sub_80310F0(void) -{ - dp11b_obj_free(gActiveBank, 1); - dp11b_obj_free(gActiveBank, 0); - PlayerBufferExecCompleted(); -} - -void PlayerHandleSpriteInvisibility(void) -{ - if (sub_8078874(gActiveBank)) - { - gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; - sub_8031F88(gActiveBank); - } - PlayerBufferExecCompleted(); -} - -void PlayerHandleBattleAnimation(void) -{ - if (!mplay_80342A4(gActiveBank)) - { - u8 val2 = gBattleBufferA[gActiveBank][1]; - u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - - if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val)) - PlayerBufferExecCompleted(); - else - gBattleBankFunc[gActiveBank] = sub_802E460; - } -} - -void PlayerHandleLinkStandbyMsg(void) -{ - switch (gBattleBufferA[gActiveBank][1]) - { - case 0: - b_link_standby_message(); - // fall through - case 1: - dp11b_obj_free(gActiveBank, 1); - dp11b_obj_free(gActiveBank, 0); - break; - case 2: - b_link_standby_message(); - break; - } - PlayerBufferExecCompleted(); -} - -void PlayerHandleResetActionMoveSelection(void) -{ - switch (gBattleBufferA[gActiveBank][1]) - { - case 0: - gActionSelectionCursor[gActiveBank] = 0; - gMoveSelectionCursor[gActiveBank] = 0; - break; - case 1: - gActionSelectionCursor[gActiveBank] = 0; - break; - case 2: - gMoveSelectionCursor[gActiveBank] = 0; - break; - } - PlayerBufferExecCompleted(); -} - -void sub_80312A0(void) -{ - gBattleOutcome = gBattleBufferA[gActiveBank][1]; - FadeOutMapMusic(5); - BeginFastPaletteFade(3); - PlayerBufferExecCompleted(); - gBattleBankFunc[gActiveBank] = sub_802D18C; -} - -void nullsub_43(void) -{ -} diff --git a/src/battle_anim_81258BC.c b/src/battle_anim_81258BC.c deleted file mode 100644 index 5bdbb4946..000000000 --- a/src/battle_anim_81258BC.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "global.h" -#include "battle_anim_81258BC.h" -#include "battle.h" -#include "battle_message.h" -#include "menu_cursor.h" -#include "text.h" - -extern struct Window gUnknown_03004210; -extern u8 gDisplayedStringBattle[]; -extern u8 gActionSelectionCursor[]; - -extern const u8 gUnknown_08400CBB[]; -extern u8 gActiveBank; -extern const u8 gUnknown_08400D15[]; - -extern void *gBattleBankFunc[]; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; - -#if ENGLISH -#define SUB_812BB10_TILE_DATA_OFFSET 440 -#elif GERMAN -#define SUB_812BB10_TILE_DATA_OFFSET 444 -#endif - -void sub_812BB10(void) { - int i; - - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 160; - gUnknown_03004210.paletteNum = 0; - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); - gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2; - - InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 11679, 0); - - for (i = 0; i < 4; i++) - { - nullsub_8(i); - } - - sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); - StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CBB); - - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35); - sub_8002F44(&gUnknown_03004210); -}
\ No newline at end of file diff --git a/src/cable_club.c b/src/cable_club.c deleted file mode 100644 index 20b087f4e..000000000 --- a/src/cable_club.c +++ /dev/null @@ -1,317 +0,0 @@ -#include "global.h" -#include "cable_club.h" -#include "field_message_box.h" -#include "link.h" -#include "main.h" -#include "script.h" -#include "songs.h" -#include "sound.h" -#include "string_util.h" -#include "task.h" -#include "text.h" -#include "trainer_card.h" - -extern u16 gScriptResult; -extern struct TrainerCard gTrainerCards[4]; - -extern u8 gUnknown_03004860; -extern u8 gFieldLinkPlayerCount; - -extern u8 gUnknown_081A4932[]; -extern const u8 gUnknown_081A4975[]; - -static void sub_80830E4(u8 taskId); -static void sub_8083288(u8 taskId); -static void sub_8083314(u8 taskId); - -void sub_808303C(u8 taskId) { - s32 linkPlayerCount; - s16 *taskData; - - taskData = gTasks[taskId].data; - - linkPlayerCount = GetLinkPlayerCount_2(); - - if (sub_8082E28(taskId) == 1 || - sub_8082EB8(taskId) == 1 || - sub_8082DF4(taskId) == 1) - { - return; - } - - sub_8082D60(taskId, linkPlayerCount); - - if (!(gMain.newKeys & A_BUTTON)) - { - return; - } - -#if ENGLISH - if (linkPlayerCount < taskData[1]) - { - return; - } - - sub_80081C8(linkPlayerCount); - sub_8082D4C(); - ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5 - ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975); - gTasks[taskId].func = sub_80830E4; -#elif GERMAN - if ((gLinkType == 0x2255 && (u32) linkPlayerCount > 1) || - (gLinkType != 0x2255 && taskData[1] <= linkPlayerCount)) - { - sub_80081C8(linkPlayerCount); - sub_8082D4C(); - ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5 - ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975); - gTasks[taskId].func = sub_80830E4; - } -#endif -} - -#ifdef NONMATCHING -static void sub_80830E4(u8 taskId) { - if (sub_8082E28(taskId) == 1 || - sub_8082EB8(taskId) == 1 || - sub_8082DF4(taskId) == 1 || - GetFieldMessageBoxMode()) - { - return; - } - - if (sub_800820C() == GetLinkPlayerCount_2() && - !(gMain.heldKeys & B_BUTTON)) - { - ShowFieldAutoScrollMessage(gUnknown_081A4932); - gTasks[taskId].func = sub_8082FEC; - return; - } - - if (gMain.heldKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - sub_8007F4C(); - gTasks[(u32) taskId].func = sub_8083188; - } -} -#else -__attribute__((naked)) -static void sub_80830E4(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - adds r6, r5, 0\n\ - adds r0, r5, 0\n\ - bl sub_8082E28\n\ - cmp r0, 0x1\n\ - beq _08083178\n\ - adds r0, r5, 0\n\ - bl sub_8082EB8\n\ - cmp r0, 0x1\n\ - beq _08083178\n\ - adds r0, r5, 0\n\ - bl sub_8082DF4\n\ - cmp r0, 0x1\n\ - beq _08083178\n\ - bl GetFieldMessageBoxMode\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08083178\n\ - bl sub_800820C\n\ - adds r4, r0, 0\n\ - bl GetLinkPlayerCount_2\n\ - lsls r4, 24\n\ - lsls r0, 24\n\ - cmp r4, r0\n\ - bne _08083132\n\ - ldr r0, _08083148 @ =gMain\n\ - ldrh r1, [r0, 0x2C]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08083158\n\ -_08083132:\n\ - ldr r0, _0808314C @ =gUnknown_081A4932\n\ - bl ShowFieldAutoScrollMessage\n\ - ldr r1, _08083150 @ =gTasks\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldr r1, _08083154 @ =sub_8082FEC\n\ - str r1, [r0]\n\ - b _08083178\n\ - .align 2, 0\n\ -_08083148: .4byte gMain\n\ -_0808314C: .4byte gUnknown_081A4932\n\ -_08083150: .4byte gTasks\n\ -_08083154: .4byte sub_8082FEC\n\ -_08083158:\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08083178\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - bl sub_8007F4C\n\ - ldr r0, _08083180 @ =gTasks\n\ - lsls r1, r6, 2\n\ - adds r1, r6\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _08083184 @ =sub_8083188\n\ - str r0, [r1]\n\ -_08083178:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08083180: .4byte gTasks\n\ -_08083184: .4byte sub_8083188\n\ - .syntax divided\n"); -} -#endif - -void sub_8083188(u8 taskId) { - u8 local1, local2; - u16 *result; - - local1 = gTasks[taskId].data[1]; - local2 = gTasks[taskId].data[2]; - - - if (sub_8082DF4(taskId) == 1 || - sub_8083444(taskId) == 1) - { - return; - } - - if (GetLinkPlayerCount_2() != sub_800820C()) - { - gTasks[taskId].func = sub_8083418; - return; - } - - result = &gScriptResult; - *result = sub_8082D9C(local1, local2); - if (*result) - { - gTasks[taskId].func = sub_8083288; - } -} - -void sub_80831F8(u8 taskId) { - u8 local1, local2; - u16 *result; - - local1 = gTasks[taskId].data[1]; - local2 = gTasks[taskId].data[2]; - - if (sub_8082E28(taskId) == 1 || - sub_8082DF4(taskId) == 1) - { - return; - } - - result = &gScriptResult; - *result = sub_8082D9C(local1, local2); - if (*result == 0) - { - return; - } - - - if (*result == 3) - { - sub_800832C(); - HideFieldMessageBox(); - gTasks[taskId].func = sub_80833C4; - } - else - { - gFieldLinkPlayerCount = GetLinkPlayerCount_2(); - gUnknown_03004860 = GetMultiplayerId(); - sub_80081C8(gFieldLinkPlayerCount); - sub_8093390((struct TrainerCard *) gBlockSendBuffer); - gTasks[taskId].func = sub_8083314; - } -} - -static void sub_8083288(u8 taskId) { - if (sub_8082DF4(taskId) == 1) - { - return; - } - - if (gScriptResult == 3) - { - sub_800832C(); - HideFieldMessageBox(); - gTasks[taskId].func = sub_80833C4; - } - else - { - gFieldLinkPlayerCount = GetLinkPlayerCount_2(); - gUnknown_03004860 = GetMultiplayerId(); - sub_80081C8(gFieldLinkPlayerCount); - sub_8093390((struct TrainerCard *) gBlockSendBuffer); - gTasks[taskId].func = sub_8083314; - sub_8007E9C(2); - } -} - -static void sub_8083314(u8 taskId) { - u8 index; - - struct TrainerCard *trainerCards; - - if (sub_8082DF4(taskId) == 1) - { - return; - } - - if (GetBlockReceivedStatus() != sub_8008198()) - { - return; - } - - index = 0; - trainerCards = gTrainerCards; - for (index = 0; index < GetLinkPlayerCount(); index++) - { - void *src; - src = gBlockRecvBuffer[index]; - memcpy(&trainerCards[index], src, sizeof(struct TrainerCard)); - } - - SetSuppressLinkErrorMessage(FALSE); - ResetBlockReceivedFlags(); - HideFieldMessageBox(); - - if (gScriptResult == 1) - { -#if ENGLISH - u16 linkType; - linkType = gLinkType; - // FIXME: sub_8082D4C doesn't take any arguments - sub_8082D4C(0x00004411, linkType); -#elif GERMAN - if (gLinkType != 0x4411) - { - if (gLinkType == 0x6601) - { - deUnkValue2 = 1; - } - } - sub_8082D4C(); -#endif - EnableBothScriptContexts(); - DestroyTask(taskId); - return; - } - - sub_800832C(); - gTasks[taskId].func = sub_80833C4; -} diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c deleted file mode 100644 index 0f2605e5b..000000000 --- a/src/calculate_base_damage.c +++ /dev/null @@ -1,1474 +0,0 @@ -#include "global.h" -#include "abilities.h" -#include "battle.h" -#include "berry.h" -#include "data2.h" -#include "event_data.h" -#include "hold_effects.h" -#include "item.h" -#include "items.h" -#include "main.h" -#include "pokemon.h" -#include "species.h" -#include "sprite.h" -#include "string_util.h" -#include "strings2.h" -#include "text.h" - -extern u8 gPlayerPartyCount; -extern u8 gEnemyPartyCount; - -extern u16 unk_20160BC[]; -extern struct SecretBaseRecord gSecretBaseRecord; -extern u32 dword_2017100[]; -extern u16 gBattleTypeFlags; -extern struct BattlePokemon gBattleMons[4]; -extern u16 gCurrentMove; -extern u8 gLastUsedAbility; -extern u8 gCritMultiplier; -extern u16 gBattleWeather; -extern struct BattleEnigmaBerry gEnigmaBerries[]; -extern u16 gBattleMovePower; -extern struct SpriteTemplate gUnknown_02024E8C; -extern u16 gTrainerBattleOpponent; -extern struct PokemonStorage gPokemonStorage; - -extern u8 gBadEggNickname[]; -extern struct SpriteTemplate gSpriteTemplate_8208288[]; -extern u8 gTrainerClassToPicIndex[]; -extern u8 gTrainerClassToNameIndex[]; -extern u8 gUnknown_08208238[]; -extern u8 gUnknown_0820823C[]; -extern u8 gStatStageRatios[]; -extern u8 gHoldEffectToType[][2]; - -#define APPLY_STAT_MOD(var, mon, stat, statIndex) \ -{ \ - (var) = (stat) * (gStatStageRatios)[(mon)->statStages[(statIndex)] * 2]; \ - (var) /= (gStatStageRatios + 1)[(mon)->statStages[(statIndex)] * 2]; \ -} - -#ifdef NONMATCHING -s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8) -{ - s32 i; - s32 damage = 0; - u8 type; - u16 attack, defense; - u16 spAttack, spDefense; - u8 defenderHoldEffect; - u8 defenderHoldEffectParam; - u8 attackerHoldEffect; - u8 attackerHoldEffectParam; - s32 a, b; - - if (!powerOverride) - gBattleMovePower = gBattleMoves[move].power; - else - gBattleMovePower = powerOverride; - - if (!typeOverride) - type = gBattleMoves[move].type; - else - type = typeOverride & 0x3F; - - attack = attacker->attack; - defense = defender->defense; - spAttack = attacker->spAttack; - spDefense = defender->spDefense; - - if (attacker->item == ITEM_ENIGMA_BERRY) - { - attackerHoldEffect = gEnigmaBerries[a7].holdEffect; - attackerHoldEffectParam = gEnigmaBerries[a7].holdEffectParam; - } - else - { - attackerHoldEffect = ItemId_GetHoldEffect(attacker->item); - attackerHoldEffectParam = ItemId_GetHoldEffectParam(attacker->item); - } - - if (defender->item == ITEM_ENIGMA_BERRY) - { - defenderHoldEffect = gEnigmaBerries[a8].holdEffect; - defenderHoldEffectParam = gEnigmaBerries[a8].holdEffectParam; - } - else - { - defenderHoldEffect = ItemId_GetHoldEffect(defender->item); - defenderHoldEffectParam = ItemId_GetHoldEffectParam(defender->item); - } - - if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER) - attack *= 2; - - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != 1024 - && FlagGet(BADGE01_GET) - && !GetBankSide(a7)) - attack = (110 * attack) / 100; - - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != 1024 - && FlagGet(BADGE05_GET) - && !GetBankSide(a8)) - defense = (110 * defense) / 100; - - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != 1024 - && FlagGet(BADGE07_GET) - && !GetBankSide(a7)) - spAttack = (110 * spAttack) / 100; - - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != 1024 - && FlagGet(BADGE07_GET) - && !GetBankSide(a8)) - spDefense = (110 * spDefense) / 100; - } - } - } - } - - for (i = 0; i < 17; i++) - { - if (attackerHoldEffect == gHoldEffectToType[i][0] - && type == gHoldEffectToType[i][1]) - { - if (type <= 8) - attack = (attack * (attackerHoldEffectParam + 100)) / 100; - else - spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100; - break; - } - } - - if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND) - attack = (150 * attack) / 100; - if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS)) - spAttack = (150 * spAttack) / 100; - if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS)) - spDefense = (150 * spDefense) / 100; - if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL) - spAttack *= 2; - if (defenderHoldEffect == HOLD_EFFECT_DEEP_SEA_SCALE && defender->species == SPECIES_CLAMPERL) - spDefense *= 2; - if (attackerHoldEffect == HOLD_EFFECT_LIGHT_BALL && attacker->species == SPECIES_PIKACHU) - spAttack *= 2; - if (defenderHoldEffect == HOLD_EFFECT_METAL_POWDER && defender->species == SPECIES_DITTO) - defense *= 2; - if (attackerHoldEffect == HOLD_EFFECT_THICK_CLUB && (attacker->species == SPECIES_CUBONE || attacker->species == SPECIES_MAROWAK)) - attack *= 2; - if (defender->ability == ABILITY_THICK_FAT && (type == TYPE_FIRE || type == TYPE_ICE)) - spAttack /= 2; - if (attacker->ability == ABILITY_HUSTLE) - attack = (150 * attack) / 100; - if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(0xE, 0, ABILITY_MINUS, 0, 0)) - spAttack = (150 * spAttack) / 100; - if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(0xE, 0, ABILITY_PLUS, 0, 0)) - spAttack = (150 * spAttack) / 100; - if (attacker->ability == ABILITY_GUTS && attacker->status1) - attack = (150 * attack) / 100; - if (defender->ability == ABILITY_MARVEL_SCALE && defender->status1) - defense = (150 * defense) / 100; - if (type == TYPE_ELECTRIC && AbilityBattleEffects(0xE, 0, 0, 0xFD, 0)) - gBattleMovePower /= 2; - if (type == TYPE_FIRE && AbilityBattleEffects(0xE, 0, 0, 0xFE, 0)) - gBattleMovePower /= 2; - if (type == TYPE_GRASS && attacker->ability == ABILITY_OVERGROW && attacker->hp <= (attacker->maxHP / 3)) - gBattleMovePower = (150 * gBattleMovePower) / 100; - if (type == TYPE_FIRE && attacker->ability == ABILITY_BLAZE && attacker->hp <= (attacker->maxHP / 3)) - gBattleMovePower = (150 * gBattleMovePower) / 100; - if (type == TYPE_WATER && attacker->ability == ABILITY_TORRENT && attacker->hp <= (attacker->maxHP / 3)) - gBattleMovePower = (150 * gBattleMovePower) / 100; - if (type == TYPE_BUG && attacker->ability == ABILITY_SWARM && attacker->hp <= (attacker->maxHP / 3)) - gBattleMovePower = (150 * gBattleMovePower) / 100; - if (gBattleMoves[gCurrentMove].effect == 7) - defense /= 2; - - if (type < TYPE_MYSTERY) // is physical? - { - if (gCritMultiplier == 2) - { - if (attacker->statStages[1] > 6) - APPLY_STAT_MOD(a, attacker, attack, 1) - else - a = attack; - } - else - APPLY_STAT_MOD(a, attacker, attack, 1) - - a = a * gBattleMovePower * (2 * attacker->level / 5 + 2); - - if (gCritMultiplier == 2) - { - if (defender->statStages[2] < 6) - APPLY_STAT_MOD(b, defender, defense, 2) - else - b = defense; - } - else - APPLY_STAT_MOD(b, defender, defense, 2) - - damage = (a / b) / 50; - - if ((attacker->status1 & 0x10) && attacker->ability != ABILITY_GUTS) - damage /= 2; - - if ((a4 & 1) && gCritMultiplier == 1) - { - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2) - damage = 2 * (damage / 3); - else - damage /= 2; - } - - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2) - damage /= 2; - - // moves always do at least 1 damage. - if (damage == 0) - damage = 1; - } - - if (type == TYPE_MYSTERY) - damage = 0; // is ??? type. does 0 damage. - - if (type > TYPE_MYSTERY) // is special? - { - if (gCritMultiplier == 2) - { - if (attacker->statStages[4] > 6) - APPLY_STAT_MOD(a, attacker, spAttack, 4) - else - a = spAttack; - } - else - APPLY_STAT_MOD(a, attacker, spAttack, 4) - - a = a * gBattleMovePower * (2 * attacker->level / 5 + 2); - - if (gCritMultiplier == 2) - { - if (defender->statStages[5] < 6) - APPLY_STAT_MOD(b, defender, spDefense, 5) - else - b = spDefense; - } - else - APPLY_STAT_MOD(b, defender, spDefense, 5) - - damage = (a / b) / 50; - - if ((a4 & 2) && gCritMultiplier == 1) - { - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2) - damage = 2 * (damage / 3); - else - damage /= 2; - } - - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2) - damage /= 2; - - // are effects of weather negated with cloud nine or air lock? - if (!AbilityBattleEffects(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(0xE, 0, ABILITY_AIR_LOCK, 0, 0)) - { - // rain? - if (gBattleWeather & 1) - { - if (type == TYPE_FIRE) - damage /= 2; - else if (type == TYPE_WATER) - damage = (15 * damage) / 10; - } - - // does lack of sun half solar beam damage? - if ((gBattleWeather & 0x9F) && gCurrentMove == 76) - damage /= 2; - - // sunny? - if (gBattleWeather & 0x60) - { - if (type == TYPE_FIRE) - damage = (15 * damage) / 10; - else if (type == TYPE_WATER) - damage /= 2; - } - } - - // flash fire triggered? - if ((dword_2017100[a7] & 1) && type == TYPE_FIRE) - damage = (15 * damage) / 10; - } - - return damage + 2; -} -#else -__attribute__((naked)) -s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x2C\n\ - adds r7, r0, 0\n\ - str r1, [sp, 0x4]\n\ - str r2, [sp, 0x8]\n\ - ldr r0, [sp, 0x4C]\n\ - ldr r1, [sp, 0x50]\n\ - ldr r2, [sp, 0x54]\n\ - ldr r4, [sp, 0x58]\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - str r3, [sp, 0xC]\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - lsls r1, 24\n\ - lsrs r6, r1, 24\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - str r2, [sp, 0x10]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r5, 0\n\ - cmp r3, 0\n\ - bne _0803BA80\n\ - ldr r2, _0803BA78 @ =gBattleMovePower\n\ - ldr r1, _0803BA7C @ =gBattleMoves\n\ - ldr r3, [sp, 0x8]\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x1]\n\ - strh r0, [r2]\n\ - b _0803BA84\n\ - .align 2, 0\n\ -_0803BA78: .4byte gBattleMovePower\n\ -_0803BA7C: .4byte gBattleMoves\n\ -_0803BA80:\n\ - ldr r0, _0803BA9C @ =gBattleMovePower\n\ - strh r3, [r0]\n\ -_0803BA84:\n\ - cmp r6, 0\n\ - bne _0803BAA4\n\ - ldr r1, _0803BAA0 @ =gBattleMoves\n\ - ldr r6, [sp, 0x8]\n\ - lsls r0, r6, 1\n\ - adds r0, r6\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - mov r9, r0\n\ - b _0803BAAE\n\ - .align 2, 0\n\ -_0803BA9C: .4byte gBattleMovePower\n\ -_0803BAA0: .4byte gBattleMoves\n\ -_0803BAA4:\n\ - movs r0, 0x3F\n\ - mov r9, r0\n\ - mov r1, r9\n\ - ands r1, r6\n\ - mov r9, r1\n\ -_0803BAAE:\n\ - ldrh r6, [r7, 0x2]\n\ - ldr r2, [sp, 0x4]\n\ - ldrh r2, [r2, 0x4]\n\ - str r2, [sp, 0x14]\n\ - ldrh r3, [r7, 0x8]\n\ - mov r8, r3\n\ - ldr r0, [sp, 0x4]\n\ - ldrh r0, [r0, 0xA]\n\ - str r0, [sp, 0x18]\n\ - ldrh r0, [r7, 0x2E]\n\ - cmp r0, 0xAF\n\ - bne _0803BAE0\n\ - ldr r1, _0803BADC @ =gEnigmaBerries\n\ - ldr r2, [sp, 0x10]\n\ - lsls r0, r2, 3\n\ - subs r0, r2\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r3, [r0, 0x7]\n\ - mov r10, r3\n\ - ldrb r0, [r0, 0x1A]\n\ - b _0803BAF6\n\ - .align 2, 0\n\ -_0803BADC: .4byte gEnigmaBerries\n\ -_0803BAE0:\n\ - ldrh r0, [r7, 0x2E]\n\ - bl ItemId_GetHoldEffect\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - ldrh r0, [r7, 0x2E]\n\ - bl ItemId_GetHoldEffectParam\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ -_0803BAF6:\n\ - str r0, [sp, 0x20]\n\ - ldr r1, [sp, 0x4]\n\ - ldrh r0, [r1, 0x2E]\n\ - cmp r0, 0xAF\n\ - bne _0803BB26\n\ - ldr r1, _0803BB10 @ =gEnigmaBerries\n\ - lsls r0, r4, 3\n\ - subs r0, r4\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x7]\n\ - str r0, [sp, 0x1C]\n\ - b _0803BB3C\n\ - .align 2, 0\n\ -_0803BB10: .4byte gEnigmaBerries\n\ -_0803BB14:\n\ - ldr r0, [sp, 0x20]\n\ - adds r0, 0x64\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - b _0803BCDC\n\ -_0803BB26:\n\ - ldr r2, [sp, 0x4]\n\ - ldrh r0, [r2, 0x2E]\n\ - bl ItemId_GetHoldEffect\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x1C]\n\ - ldr r3, [sp, 0x4]\n\ - ldrh r0, [r3, 0x2E]\n\ - bl ItemId_GetHoldEffectParam\n\ -_0803BB3C:\n\ - adds r0, r7, 0\n\ - adds r0, 0x20\n\ - ldrb r1, [r0]\n\ - str r0, [sp, 0x24]\n\ - cmp r1, 0x25\n\ - beq _0803BB4C\n\ - cmp r1, 0x4A\n\ - bne _0803BB50\n\ -_0803BB4C:\n\ - lsls r0, r6, 17\n\ - lsrs r6, r0, 16\n\ -_0803BB50:\n\ - ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _0803BCBC @ =0x00000902\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BB5E\n\ - b _0803BC78\n\ -_0803BB5E:\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BB98\n\ - ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r1, r0\n\ - beq _0803BB98\n\ - ldr r0, _0803BCC4 @ =0x00000807\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BB98\n\ - ldr r0, [sp, 0x10]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803BB98\n\ - movs r0, 0x6E\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ -_0803BB98:\n\ - ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _0803BCBC @ =0x00000902\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BC78\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BBE2\n\ - ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r1, r0\n\ - beq _0803BBE2\n\ - ldr r0, _0803BCC8 @ =0x0000080b\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BBE2\n\ - adds r0, r4, 0\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803BBE2\n\ - movs r0, 0x6E\n\ - ldr r1, [sp, 0x14]\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ -_0803BBE2:\n\ - ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _0803BCBC @ =0x00000902\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BC78\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BC2E\n\ - ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r1, r0\n\ - beq _0803BC2E\n\ - ldr r0, _0803BCCC @ =0x0000080d\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BC2E\n\ - ldr r0, [sp, 0x10]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803BC2E\n\ - movs r0, 0x6E\n\ - mov r2, r8\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BC2E:\n\ - ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _0803BCBC @ =0x00000902\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BC78\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BC78\n\ - ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r1, r0\n\ - beq _0803BC78\n\ - ldr r0, _0803BCCC @ =0x0000080d\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BC78\n\ - adds r0, r4, 0\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803BC78\n\ - movs r0, 0x6E\n\ - ldr r3, [sp, 0x18]\n\ - muls r0, r3\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x18]\n\ -_0803BC78:\n\ - movs r2, 0\n\ - ldr r4, _0803BCD0 @ =gHoldEffectToType\n\ - ldr r0, [sp, 0x4]\n\ - adds r0, 0x20\n\ - str r0, [sp, 0x28]\n\ - adds r3, r4, 0\n\ -_0803BC84:\n\ - lsls r1, r2, 1\n\ - ldrb r0, [r3]\n\ - cmp r10, r0\n\ - bne _0803BCD4\n\ - adds r0, r4, 0x1\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r9, r0\n\ - bne _0803BCD4\n\ - mov r1, r9\n\ - cmp r1, 0x8\n\ - bhi _0803BC9E\n\ - b _0803BB14\n\ -_0803BC9E:\n\ - ldr r0, [sp, 0x20]\n\ - adds r0, 0x64\n\ - mov r2, r8\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - b _0803BCDC\n\ - .align 2, 0\n\ -_0803BCB8: .4byte gBattleTypeFlags\n\ -_0803BCBC: .4byte 0x00000902\n\ -_0803BCC0: .4byte gTrainerBattleOpponent\n\ -_0803BCC4: .4byte 0x00000807\n\ -_0803BCC8: .4byte 0x0000080b\n\ -_0803BCCC: .4byte 0x0000080d\n\ -_0803BCD0: .4byte gHoldEffectToType\n\ -_0803BCD4:\n\ - adds r3, 0x2\n\ - adds r2, 0x1\n\ - cmp r2, 0x10\n\ - bls _0803BC84\n\ -_0803BCDC:\n\ - mov r3, r10\n\ - cmp r3, 0x1D\n\ - bne _0803BCF0\n\ - movs r0, 0x96\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ -_0803BCF0:\n\ - mov r0, r10\n\ - cmp r0, 0x22\n\ - bne _0803BD28\n\ - ldr r0, _0803BFDC @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BD28\n\ - ldr r1, _0803BFE0 @ =0xfffffe69\n\ - adds r0, r1, 0\n\ - ldrh r2, [r7]\n\ - adds r0, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _0803BD28\n\ - movs r0, 0x96\n\ - mov r3, r8\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BD28:\n\ - ldr r0, [sp, 0x1C]\n\ - cmp r0, 0x22\n\ - bne _0803BD60\n\ - ldr r0, _0803BFDC @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BD60\n\ - ldr r1, _0803BFE0 @ =0xfffffe69\n\ - adds r0, r1, 0\n\ - ldr r2, [sp, 0x4]\n\ - ldrh r2, [r2]\n\ - adds r0, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _0803BD60\n\ - movs r0, 0x96\n\ - ldr r3, [sp, 0x18]\n\ - muls r0, r3\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x18]\n\ -_0803BD60:\n\ - mov r0, r10\n\ - cmp r0, 0x23\n\ - bne _0803BD76\n\ - ldrh r1, [r7]\n\ - ldr r0, _0803BFE4 @ =0x00000175\n\ - cmp r1, r0\n\ - bne _0803BD76\n\ - mov r1, r8\n\ - lsls r0, r1, 17\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BD76:\n\ - ldr r2, [sp, 0x1C]\n\ - cmp r2, 0x24\n\ - bne _0803BD8E\n\ - ldr r3, [sp, 0x4]\n\ - ldrh r1, [r3]\n\ - ldr r0, _0803BFE4 @ =0x00000175\n\ - cmp r1, r0\n\ - bne _0803BD8E\n\ - ldr r1, [sp, 0x18]\n\ - lsls r0, r1, 17\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x18]\n\ -_0803BD8E:\n\ - mov r2, r10\n\ - cmp r2, 0x2D\n\ - bne _0803BDA2\n\ - ldrh r0, [r7]\n\ - cmp r0, 0x19\n\ - bne _0803BDA2\n\ - mov r3, r8\n\ - lsls r0, r3, 17\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BDA2:\n\ - ldr r0, [sp, 0x1C]\n\ - cmp r0, 0x40\n\ - bne _0803BDB8\n\ - ldr r1, [sp, 0x4]\n\ - ldrh r0, [r1]\n\ - cmp r0, 0x84\n\ - bne _0803BDB8\n\ - ldr r2, [sp, 0x14]\n\ - lsls r0, r2, 17\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ -_0803BDB8:\n\ - mov r3, r10\n\ - cmp r3, 0x41\n\ - bne _0803BDCE\n\ - ldrh r0, [r7]\n\ - subs r0, 0x68\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _0803BDCE\n\ - lsls r0, r6, 17\n\ - lsrs r6, r0, 16\n\ -_0803BDCE:\n\ - ldr r1, [sp, 0x28]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x2F\n\ - bne _0803BDE6\n\ - mov r2, r9\n\ - cmp r2, 0xA\n\ - beq _0803BDE0\n\ - cmp r2, 0xF\n\ - bne _0803BDE6\n\ -_0803BDE0:\n\ - mov r3, r8\n\ - lsrs r3, 1\n\ - mov r8, r3\n\ -_0803BDE6:\n\ - ldr r0, [sp, 0x24]\n\ - ldrb r4, [r0]\n\ - cmp r4, 0x37\n\ - bne _0803BDFC\n\ - movs r0, 0x96\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ -_0803BDFC:\n\ - cmp r4, 0x39\n\ - bne _0803BE2A\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0x3A\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BE2A\n\ - movs r0, 0x96\n\ - mov r1, r8\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BE2A:\n\ - ldr r2, [sp, 0x24]\n\ - ldrb r0, [r2]\n\ - cmp r0, 0x3A\n\ - bne _0803BE5C\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0x39\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BE5C\n\ - movs r0, 0x96\n\ - mov r3, r8\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BE5C:\n\ - ldr r1, [sp, 0x24]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x3E\n\ - bne _0803BE78\n\ - ldr r0, [r7, 0x4C]\n\ - cmp r0, 0\n\ - beq _0803BE78\n\ - movs r0, 0x96\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ -_0803BE78:\n\ - ldr r2, [sp, 0x28]\n\ - ldrb r0, [r2]\n\ - cmp r0, 0x3F\n\ - bne _0803BE9A\n\ - ldr r3, [sp, 0x4]\n\ - ldr r0, [r3, 0x4C]\n\ - cmp r0, 0\n\ - beq _0803BE9A\n\ - movs r0, 0x96\n\ - ldr r1, [sp, 0x14]\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ -_0803BE9A:\n\ - mov r2, r9\n\ - cmp r2, 0xD\n\ - bne _0803BEBE\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0\n\ - movs r3, 0xFD\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BEBE\n\ - ldr r1, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r0, [r1]\n\ - lsrs r0, 1\n\ - strh r0, [r1]\n\ -_0803BEBE:\n\ - mov r3, r9\n\ - cmp r3, 0xA\n\ - bne _0803BEE2\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0\n\ - movs r3, 0xFE\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BEE2\n\ - ldr r1, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r0, [r1]\n\ - lsrs r0, 1\n\ - strh r0, [r1]\n\ -_0803BEE2:\n\ - mov r0, r9\n\ - cmp r0, 0xC\n\ - bne _0803BF12\n\ - ldr r1, [sp, 0x24]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x41\n\ - bne _0803BF12\n\ - ldrh r0, [r7, 0x2C]\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - ldrh r1, [r7, 0x28]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r1, r0\n\ - bhi _0803BF12\n\ - ldr r4, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - strh r0, [r4]\n\ -_0803BF12:\n\ - mov r2, r9\n\ - cmp r2, 0xA\n\ - bne _0803BF42\n\ - ldr r3, [sp, 0x24]\n\ - ldrb r0, [r3]\n\ - cmp r0, 0x42\n\ - bne _0803BF42\n\ - ldrh r0, [r7, 0x2C]\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - ldrh r1, [r7, 0x28]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r1, r0\n\ - bhi _0803BF42\n\ - ldr r4, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - strh r0, [r4]\n\ -_0803BF42:\n\ - mov r0, r9\n\ - cmp r0, 0xB\n\ - bne _0803BF72\n\ - ldr r1, [sp, 0x24]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x43\n\ - bne _0803BF72\n\ - ldrh r0, [r7, 0x2C]\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - ldrh r1, [r7, 0x28]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r1, r0\n\ - bhi _0803BF72\n\ - ldr r4, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - strh r0, [r4]\n\ -_0803BF72:\n\ - mov r2, r9\n\ - cmp r2, 0x6\n\ - bne _0803BFA2\n\ - ldr r3, [sp, 0x24]\n\ - ldrb r0, [r3]\n\ - cmp r0, 0x44\n\ - bne _0803BFA2\n\ - ldrh r0, [r7, 0x2C]\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - ldrh r1, [r7, 0x28]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r1, r0\n\ - bhi _0803BFA2\n\ - ldr r4, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - strh r0, [r4]\n\ -_0803BFA2:\n\ - ldr r2, _0803BFEC @ =gBattleMoves\n\ - ldr r0, _0803BFF0 @ =gCurrentMove\n\ - ldrh r1, [r0]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x7\n\ - bne _0803BFBC\n\ - ldr r0, [sp, 0x14]\n\ - lsrs r0, 1\n\ - str r0, [sp, 0x14]\n\ -_0803BFBC:\n\ - mov r1, r9\n\ - cmp r1, 0x8\n\ - bls _0803BFC4\n\ - b _0803C122\n\ -_0803BFC4:\n\ - ldr r0, _0803BFF4 @ =gCritMultiplier\n\ - ldrb r1, [r0]\n\ - adds r4, r0, 0\n\ - cmp r1, 0x2\n\ - bne _0803C000\n\ - movs r0, 0x19\n\ - ldrsb r0, [r7, r0]\n\ - cmp r0, 0x6\n\ - ble _0803BFFC\n\ - ldr r2, _0803BFF8 @ =gStatStageRatios\n\ - b _0803C006\n\ - .align 2, 0\n\ -_0803BFDC: .4byte gBattleTypeFlags\n\ -_0803BFE0: .4byte 0xfffffe69\n\ -_0803BFE4: .4byte 0x00000175\n\ -_0803BFE8: .4byte gBattleMovePower\n\ -_0803BFEC: .4byte gBattleMoves\n\ -_0803BFF0: .4byte gCurrentMove\n\ -_0803BFF4: .4byte gCritMultiplier\n\ -_0803BFF8: .4byte gStatStageRatios\n\ -_0803BFFC:\n\ - adds r5, r6, 0\n\ - b _0803C01E\n\ -_0803C000:\n\ - ldr r2, _0803C050 @ =gStatStageRatios\n\ - movs r0, 0x19\n\ - ldrsb r0, [r7, r0]\n\ -_0803C006:\n\ - lsls r0, 1\n\ - adds r1, r0, r2\n\ - ldrb r1, [r1]\n\ - adds r5, r6, 0\n\ - muls r5, r1\n\ - adds r2, 0x1\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - adds r0, r5, 0\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ -_0803C01E:\n\ - ldr r0, _0803C054 @ =gBattleMovePower\n\ - ldrh r0, [r0]\n\ - muls r5, r0\n\ - adds r0, r7, 0\n\ - adds r0, 0x2A\n\ - ldrb r0, [r0]\n\ - lsls r0, 1\n\ - movs r1, 0x5\n\ - bl __divsi3\n\ - adds r0, 0x2\n\ - muls r5, r0\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x2\n\ - bne _0803C05C\n\ - ldr r2, [sp, 0x4]\n\ - movs r0, 0x1A\n\ - ldrsb r0, [r2, r0]\n\ - cmp r0, 0x5\n\ - bgt _0803C058\n\ - ldr r2, _0803C050 @ =gStatStageRatios\n\ - ldr r3, [sp, 0x4]\n\ - movs r0, 0x1A\n\ - ldrsb r0, [r3, r0]\n\ - b _0803C064\n\ - .align 2, 0\n\ -_0803C050: .4byte gStatStageRatios\n\ -_0803C054: .4byte gBattleMovePower\n\ -_0803C058:\n\ - ldr r3, [sp, 0x14]\n\ - b _0803C07E\n\ -_0803C05C:\n\ - ldr r2, _0803C0DC @ =gStatStageRatios\n\ - ldr r1, [sp, 0x4]\n\ - movs r0, 0x1A\n\ - ldrsb r0, [r1, r0]\n\ -_0803C064:\n\ - lsls r0, 1\n\ - adds r1, r0, r2\n\ - ldrb r1, [r1]\n\ - ldr r6, [sp, 0x14]\n\ - adds r3, r6, 0\n\ - muls r3, r1\n\ - adds r2, 0x1\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl __divsi3\n\ - adds r3, r0, 0\n\ -_0803C07E:\n\ - adds r0, r5, 0\n\ - adds r1, r3, 0\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - movs r1, 0x32\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - ldr r0, [r7, 0x4C]\n\ - movs r1, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C0A8\n\ - ldr r1, [sp, 0x24]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x3E\n\ - beq _0803C0A8\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C0A8:\n\ - movs r0, 0x1\n\ - ldr r2, [sp, 0xC]\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _0803C0EA\n\ - ldrb r1, [r4]\n\ - cmp r1, 0x1\n\ - bne _0803C0EA\n\ - ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\ - ldrh r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - beq _0803C0E4\n\ - movs r0, 0x2\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bne _0803C0E4\n\ - adds r0, r5, 0\n\ - movs r1, 0x3\n\ - bl __divsi3\n\ - lsls r5, r0, 1\n\ - b _0803C0EA\n\ - .align 2, 0\n\ -_0803C0DC: .4byte gStatStageRatios\n\ -_0803C0E0: .4byte gBattleTypeFlags\n\ -_0803C0E4:\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C0EA:\n\ - ldr r0, _0803C148 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C11C\n\ - ldr r0, _0803C14C @ =gBattleMoves\n\ - ldr r3, [sp, 0x8]\n\ - lsls r1, r3, 1\n\ - adds r1, r3\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x6]\n\ - cmp r0, 0x8\n\ - bne _0803C11C\n\ - movs r0, 0x2\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bne _0803C11C\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C11C:\n\ - cmp r5, 0\n\ - bne _0803C122\n\ - movs r5, 0x1\n\ -_0803C122:\n\ - mov r6, r9\n\ - cmp r6, 0x9\n\ - bne _0803C12A\n\ - movs r5, 0\n\ -_0803C12A:\n\ - mov r0, r9\n\ - cmp r0, 0x9\n\ - bhi _0803C132\n\ - b _0803C330\n\ -_0803C132:\n\ - ldr r0, _0803C150 @ =gCritMultiplier\n\ - ldrb r1, [r0]\n\ - adds r4, r0, 0\n\ - cmp r1, 0x2\n\ - bne _0803C15C\n\ - movs r0, 0x1C\n\ - ldrsb r0, [r7, r0]\n\ - cmp r0, 0x6\n\ - ble _0803C158\n\ - ldr r2, _0803C154 @ =gStatStageRatios\n\ - b _0803C162\n\ - .align 2, 0\n\ -_0803C148: .4byte gBattleTypeFlags\n\ -_0803C14C: .4byte gBattleMoves\n\ -_0803C150: .4byte gCritMultiplier\n\ -_0803C154: .4byte gStatStageRatios\n\ -_0803C158:\n\ - mov r5, r8\n\ - b _0803C17A\n\ -_0803C15C:\n\ - ldr r2, _0803C1A8 @ =gStatStageRatios\n\ - movs r0, 0x1C\n\ - ldrsb r0, [r7, r0]\n\ -_0803C162:\n\ - lsls r0, 1\n\ - adds r1, r0, r2\n\ - ldrb r1, [r1]\n\ - mov r5, r8\n\ - muls r5, r1\n\ - adds r2, 0x1\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - adds r0, r5, 0\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ -_0803C17A:\n\ - ldr r0, _0803C1AC @ =gBattleMovePower\n\ - ldrh r0, [r0]\n\ - muls r5, r0\n\ - adds r0, r7, 0\n\ - adds r0, 0x2A\n\ - ldrb r0, [r0]\n\ - lsls r0, 1\n\ - movs r1, 0x5\n\ - bl __divsi3\n\ - adds r0, 0x2\n\ - muls r5, r0\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x2\n\ - bne _0803C1B4\n\ - ldr r1, [sp, 0x4]\n\ - movs r0, 0x1D\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0x5\n\ - bgt _0803C1B0\n\ - ldr r2, _0803C1A8 @ =gStatStageRatios\n\ - b _0803C1BC\n\ - .align 2, 0\n\ -_0803C1A8: .4byte gStatStageRatios\n\ -_0803C1AC: .4byte gBattleMovePower\n\ -_0803C1B0:\n\ - ldr r3, [sp, 0x18]\n\ - b _0803C1D6\n\ -_0803C1B4:\n\ - ldr r2, _0803C21C @ =gStatStageRatios\n\ - ldr r1, [sp, 0x4]\n\ - movs r0, 0x1D\n\ - ldrsb r0, [r1, r0]\n\ -_0803C1BC:\n\ - lsls r0, 1\n\ - adds r1, r0, r2\n\ - ldrb r1, [r1]\n\ - ldr r6, [sp, 0x18]\n\ - adds r3, r6, 0\n\ - muls r3, r1\n\ - adds r2, 0x1\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl __divsi3\n\ - adds r3, r0, 0\n\ -_0803C1D6:\n\ - adds r0, r5, 0\n\ - adds r1, r3, 0\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - movs r1, 0x32\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - movs r0, 0x2\n\ - ldr r1, [sp, 0xC]\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C22A\n\ - ldrb r1, [r4]\n\ - cmp r1, 0x1\n\ - bne _0803C22A\n\ - ldr r0, _0803C220 @ =gBattleTypeFlags\n\ - ldrh r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - beq _0803C224\n\ - movs r0, 0x2\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bne _0803C224\n\ - adds r0, r5, 0\n\ - movs r1, 0x3\n\ - bl __divsi3\n\ - lsls r5, r0, 1\n\ - b _0803C22A\n\ - .align 2, 0\n\ -_0803C21C: .4byte gStatStageRatios\n\ -_0803C220: .4byte gBattleTypeFlags\n\ -_0803C224:\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C22A:\n\ - ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C25C\n\ - ldr r0, _0803C2A8 @ =gBattleMoves\n\ - ldr r2, [sp, 0x8]\n\ - lsls r1, r2, 1\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x6]\n\ - cmp r0, 0x8\n\ - bne _0803C25C\n\ - movs r0, 0x2\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bne _0803C25C\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C25C:\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0xD\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0\n\ - bne _0803C30C\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0x4D\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803C30C\n\ - ldr r2, _0803C2AC @ =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - adds r4, r2, 0\n\ - cmp r0, 0\n\ - beq _0803C2C4\n\ - mov r3, r9\n\ - cmp r3, 0xA\n\ - beq _0803C2B0\n\ - cmp r3, 0xB\n\ - beq _0803C2B8\n\ - b _0803C2C4\n\ - .align 2, 0\n\ -_0803C2A4: .4byte gBattleTypeFlags\n\ -_0803C2A8: .4byte gBattleMoves\n\ -_0803C2AC: .4byte gBattleWeather\n\ -_0803C2B0:\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ - b _0803C2C4\n\ -_0803C2B8:\n\ - lsls r0, r5, 4\n\ - subs r0, r5\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ -_0803C2C4:\n\ - ldrh r1, [r4]\n\ - movs r0, 0x9F\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C2DC\n\ - ldr r0, _0803C2F4 @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - cmp r0, 0x4C\n\ - bne _0803C2DC\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C2DC:\n\ - ldrh r1, [r4]\n\ - movs r0, 0x60\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C30C\n\ - mov r6, r9\n\ - cmp r6, 0xA\n\ - beq _0803C2F8\n\ - cmp r6, 0xB\n\ - beq _0803C306\n\ - b _0803C30C\n\ - .align 2, 0\n\ -_0803C2F4: .4byte gCurrentMove\n\ -_0803C2F8:\n\ - lsls r0, r5, 4\n\ - subs r0, r5\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - b _0803C30C\n\ -_0803C306:\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C30C:\n\ - ldr r1, _0803C344 @ =0x02017100\n\ - ldr r2, [sp, 0x10]\n\ - lsls r0, r2, 2\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C330\n\ - mov r3, r9\n\ - cmp r3, 0xA\n\ - bne _0803C330\n\ - lsls r0, r5, 4\n\ - subs r0, r5\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ -_0803C330:\n\ - adds r0, r5, 0x2\n\ - add sp, 0x2C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_0803C344: .4byte 0x02017100\n\ - .syntax divided"); -} -#endif diff --git a/src/daycare.c b/src/daycare.c deleted file mode 100644 index cded18207..000000000 --- a/src/daycare.c +++ /dev/null @@ -1,350 +0,0 @@ -#include "global.h" -#include "daycare.h" -#include "pokemon.h" -#include "species.h" -#include "items.h" -#include "string_util.h" - -extern u8 gLastFieldPokeMenuOpened; - -u8 *GetMonNick(struct Pokemon *mon, u8 *dest) -{ - s8 nickname[POKEMON_NAME_LENGTH * 2]; - - GetMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy10(dest, nickname); -} - -u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest) -{ - s8 nickname[POKEMON_NAME_LENGTH * 2]; - - GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy10(dest, nickname); -} - -u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data) -{ - u8 i, count; - count = 0; - - for(i = 0;i <= 1;i++) - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) - count++; - - return count; -} - -void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixing_UnknownStruct * void_pointer) -{ - u8 i; - u8 specCount; - specCount = 0; - for (i=0; i<2; i++) - { - if (GetBoxMonData(&box_pokemon[i], MON_DATA_SPECIES) != SPECIES_NONE) - { - specCount ++; - if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE) - { - void_pointer->unk74[i] = 0; - } else - { - void_pointer->unk74[i] = 1; - } - } else - { - void_pointer->unk74[i] = 1; - } - } - void_pointer->unk70 = specCount; -} - -s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) -{ - u8 i; - - for(i = 0;i <= 1;i++) - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0) - return i; - - return -1; -} - -/*void Daycare_SendPokemon(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished - s8 empty_slot; - - empty_slot = Daycare_FindEmptySpot(daycare_data); - if(MonHasMail(mon) != 0){ // if the mon holds a mail? - u8 empty_slot_times_56 = empty_slot * 56; - u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; - StringCopy(something2, gSaveBlock2.playerName); - PadNameString(something2, 0xFC); - something2 += 8; - GetMonNick(mon, something2); - u8 pokerus = GetMonData(mon, MON_DATA_64); - something1 += (u8 * daycare_data) -}*/ - -__attribute__((naked)) -void Daycare_SendPokemon() -{ - // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped: - // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC - // the ldm/stm section probably copies some struct, but I'm not sure how the code would look - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - adds r7, r0, 0\n\ - mov r8, r1\n\ - mov r0, r8\n\ - bl Daycare_FindEmptySpot\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - mov r9, r4\n\ - adds r0, r7, 0\n\ - bl MonHasMail\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0804144A\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - lsls r4, r0, 3\n\ - subs r4, r0\n\ - lsls r4, 3\n\ - adds r5, r4, 0\n\ - adds r5, 0xA0\n\ - add r5, r8\n\ - adds r6, r5, 0\n\ - adds r6, 0x24\n\ - ldr r1, _08041490 @ =gSaveBlock2\n\ - adds r0, r6, 0\n\ - bl StringCopy\n\ - adds r0, r6, 0\n\ - movs r1, 0xFC\n\ - bl PadNameString\n\ - adds r6, 0x8\n\ - adds r0, r7, 0\n\ - adds r1, r6, 0\n\ - bl GetMonNick\n\ - adds r0, r7, 0\n\ - movs r1, 0x40\n\ - bl GetMonData\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - add r4, r8\n\ - ldr r2, _08041494 @ =gSaveBlock1\n\ - lsls r1, r0, 3\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r2\n\ - adds r4, 0xA0\n\ - ldr r0, _08041498 @ =0x00002b4c\n\ - adds r1, r0\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - adds r0, r7, 0\n\ - bl TakeMailFromMon\n\ -_0804144A:\n\ - mov r2, r9\n\ - lsls r4, r2, 24\n\ - asrs r4, 24\n\ - lsls r5, r4, 2\n\ - adds r4, r5, r4\n\ - lsls r4, 4\n\ - add r4, r8\n\ - adds r0, r4, 0\n\ - adds r1, r7, 0\n\ - movs r2, 0x50\n\ - bl memcpy\n\ - adds r0, r4, 0\n\ - bl BoxMonRestorePP\n\ - movs r0, 0x88\n\ - lsls r0, 1\n\ - add r0, r8\n\ - adds r0, r5\n\ - movs r1, 0\n\ - str r1, [r0]\n\ - adds r0, r7, 0\n\ - bl ZeroMonData\n\ - bl party_compaction\n\ - bl CalculatePlayerPartyCount\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08041490: .4byte gSaveBlock2\n\ -_08041494: .4byte gSaveBlock1\n\ -_08041498: .4byte 0x00002b4c\n\ - .syntax divided\n"); -} - -void Daycare_SendPokemon_Special() -{ - Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); -} - -void sub_80417F4(u8 *); - -void sub_80414C0(struct BoxPokemon * daycare_data) -{ - u32 second_species; - if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){ - daycare_data[0] = daycare_data[1]; - ZeroBoxMonData(&daycare_data[1]); - memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38); - *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69); - *((u32 *)(daycare_data) + 69) = second_species; - sub_80417F4((u8 *) (daycare_data + 1) + 0x88); - } -} - -u8 TryIncrementMonLevel(struct Pokemon *); -extern u16 word_2024E82; - -void sub_804151C(struct Pokemon * mon) -{ - s32 i; - u8 r6; - u16 temp; - - for(i = 0; i < 100; i++){ - if(TryIncrementMonLevel(mon) == FALSE) goto end; - - r6 = 1; - while((temp = sub_803B7C8(mon, r6)) != 0){ - r6 = 0; - if(temp == 0xffff){ - DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82); - } - } - } - - end: - - CalculateMonStats(mon); -} - -__attribute__((naked)) -u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x68\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - lsrs r4, r1, 24\n\ - lsls r7, r4, 2\n\ - adds r0, r7, r4\n\ - lsls r0, 4\n\ - adds r6, r5, r0\n\ - ldr r1, _08041640 @ =gStringVar1\n\ - adds r0, r6, 0\n\ - bl GetBoxMonNick\n\ - adds r0, r6, 0\n\ - movs r1, 0xB\n\ - bl GetBoxMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - adds r0, r6, 0\n\ - mov r1, sp\n\ - bl sub_803B4B4\n\ - mov r0, sp\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x64\n\ - beq _080415D8\n\ - mov r0, sp\n\ - movs r1, 0x19\n\ - bl GetMonData\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ - adds r1, r5, r2\n\ - adds r1, r7\n\ - ldr r1, [r1]\n\ - adds r0, r1\n\ - str r0, [sp, 0x64]\n\ - add r2, sp, 0x64\n\ - mov r0, sp\n\ - movs r1, 0x19\n\ - bl SetMonData\n\ - mov r0, sp\n\ - bl sub_804151C\n\ -_080415D8:\n\ - ldr r0, _08041644 @ =gPlayerParty\n\ - movs r1, 0xFA\n\ - lsls r1, 1\n\ - adds r1, r0\n\ - mov r8, r1\n\ - mov r0, r8\n\ - mov r1, sp\n\ - movs r2, 0x64\n\ - bl memcpy\n\ - lsls r0, r4, 3\n\ - subs r0, r4\n\ - lsls r1, r0, 3\n\ - adds r0, r5, r1\n\ - adds r0, 0xC0\n\ - ldrh r0, [r0]\n\ - cmp r0, 0\n\ - beq _08041610\n\ - adds r4, r1, 0\n\ - adds r4, 0xA0\n\ - adds r4, r5, r4\n\ - mov r0, r8\n\ - adds r1, r4, 0\n\ - bl GiveMailToMon2\n\ - adds r0, r4, 0\n\ - bl sub_80417F4\n\ -_08041610:\n\ - bl party_compaction\n\ - adds r0, r6, 0\n\ - bl ZeroBoxMonData\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ - adds r0, r5, r2\n\ - adds r0, r7\n\ - movs r1, 0\n\ - str r1, [r0]\n\ - adds r0, r5, 0\n\ - bl sub_80414C0\n\ - bl CalculatePlayerPartyCount\n\ - mov r0, r9\n\ - add sp, 0x68\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08041640: .4byte gStringVar1\n\ -_08041644: .4byte gPlayerParty\n\ - .syntax divided"); -} - -extern u8 gSpecialVar_0x8004; - -u16 sub_8041648() -{ - return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); -} - -u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ - struct BoxPokemon temp = *mon; - u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; - SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); - return GetLevelFromBoxMonExp(&temp); -} diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c index c618ebdb2..eebcc1437 100644 --- a/src/de_rom_8040FE0.c +++ b/src/de_rom_8040FE0.c @@ -142,124 +142,124 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) { __attribute__((naked)) void de_sub_8041024(void) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - adds r2, r0, 0\n\ - adds r6, r1, 0\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r2, r0\n\ - beq _0804104A\n\ - cmp r2, r0\n\ - bgt _08041040\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - cmp r2, r0\n\ - beq _08041064\n\ - b _0804109C\n\ + push {r4-r6,lr}\n\ + adds r2, r0, 0\n\ + adds r6, r1, 0\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r2, r0\n\ + beq _0804104A\n\ + cmp r2, r0\n\ + bgt _08041040\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + cmp r2, r0\n\ + beq _08041064\n\ + b _0804109C\n\ _08041040:\n\ - movs r0, 0x80\n\ - lsls r0, 4\n\ - cmp r2, r0\n\ - beq _08041086\n\ - b _0804109C\n\ + movs r0, 0x80\n\ + lsls r0, 4\n\ + cmp r2, r0\n\ + beq _08041086\n\ + b _0804109C\n\ _0804104A:\n\ - bl GetSecretBaseTrainerNameIndex\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r0, _08041060 @ =0x02017000\n\ - ldrb r0, [r0, 0x1]\n\ - lsls r0, 27\n\ - lsrs r2, r0, 31\n\ - cmp r5, 0x1A\n\ - beq _080410B8\n\ - b _080410F8\n\ - .align 2, 0\n\ + bl GetSecretBaseTrainerNameIndex\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r0, _08041060 @ =0x02017000\n\ + ldrb r0, [r0, 0x1]\n\ + lsls r0, 27\n\ + lsrs r2, r0, 31\n\ + cmp r5, 0x1A\n\ + beq _080410B8\n\ + b _080410F8\n\ + .align 2, 0\n\ _08041060: .4byte 0x02017000\n\ _08041064:\n\ - bl de_sub_81364AC\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - bl get_trainer_class_name_index\n\ + bl de_sub_81364AC\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + bl get_trainer_class_name_index\n\ _08041070:\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r4, 0x1E\n\ - beq _08041094\n\ - adds r0, r4, 0\n\ - subs r0, 0x3D\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bls _080410CC\n\ - b _080410F8\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r4, 0x1E\n\ + beq _08041094\n\ + adds r0, r4, 0\n\ + subs r0, 0x3D\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x2\n\ + bls _080410CC\n\ + b _080410F8\n\ _08041086:\n\ - bl de_sub_81364F8\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - bl sub_8135FD8\n\ - b _08041070\n\ + bl de_sub_81364F8\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + bl sub_8135FD8\n\ + b _08041070\n\ _08041094:\n\ - movs r0, 0x1\n\ - bl de_sub_8040FE0\n\ - b _08041102\n\ + movs r0, 0x1\n\ + bl de_sub_8040FE0\n\ + b _08041102\n\ _0804109C:\n\ - ldr r1, _080410C0 @ =gTrainers\n\ - lsls r4, r6, 2\n\ - adds r0, r4, r6\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldrb r5, [r0, 0x1]\n\ - lsls r0, r6, 16\n\ - lsrs r0, 16\n\ - bl sub_803FC58\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r5, 0x1A\n\ - bne _080410C4\n\ + ldr r1, _080410C0 @ =gTrainers\n\ + lsls r4, r6, 2\n\ + adds r0, r4, r6\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrb r5, [r0, 0x1]\n\ + lsls r0, r6, 16\n\ + lsrs r0, 16\n\ + bl sub_803FC58\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r5, 0x1A\n\ + bne _080410C4\n\ _080410B8:\n\ - adds r0, r2, 0\n\ - bl de_sub_8040FE0\n\ - b _08041102\n\ - .align 2, 0\n\ + adds r0, r2, 0\n\ + bl de_sub_8040FE0\n\ + b _08041102\n\ + .align 2, 0\n\ _080410C0: .4byte gTrainers\n\ _080410C4:\n\ - cmp r5, 0x2E\n\ - bne _080410D4\n\ - cmp r2, 0x1\n\ - bne _080410D4\n\ + cmp r5, 0x2E\n\ + bne _080410D4\n\ + cmp r2, 0x1\n\ + bne _080410D4\n\ _080410CC:\n\ - movs r0, 0x1\n\ - bl de_sub_8040FF4\n\ - b _08041102\n\ + movs r0, 0x1\n\ + bl de_sub_8040FF4\n\ + b _08041102\n\ _080410D4:\n\ - cmp r5, 0x19\n\ - bne _080410F8\n\ - ldr r0, _080410F4 @ =gTrainers\n\ - adds r1, r4, r6\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x18]\n\ - movs r2, 0\n\ - cmp r0, 0x1\n\ - bne _080410EA\n\ - movs r2, 0x1\n\ + cmp r5, 0x19\n\ + bne _080410F8\n\ + ldr r0, _080410F4 @ =gTrainers\n\ + adds r1, r4, r6\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x18]\n\ + movs r2, 0\n\ + cmp r0, 0x1\n\ + bne _080410EA\n\ + movs r2, 0x1\n\ _080410EA:\n\ - adds r0, r2, 0\n\ - bl de_sub_804100C\n\ - b _08041102\n\ - .align 2, 0\n\ + adds r0, r2, 0\n\ + bl de_sub_804100C\n\ + b _08041102\n\ + .align 2, 0\n\ _080410F4: .4byte gTrainers\n\ _080410F8:\n\ - movs r0, 0xD\n\ - adds r1, r5, 0\n\ - muls r1, r0\n\ - ldr r0, _08041108 @ =gTrainerClassNames\n\ - adds r0, r1, r0\n\ + movs r0, 0xD\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, _08041108 @ =gTrainerClassNames\n\ + adds r0, r1, r0\n\ _08041102:\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ _08041108: .4byte gTrainerClassNames\n\ .syntax divided\n"); } diff --git a/src/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 3665cabd8..c7d81f502 100644 --- a/src/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -8,7 +8,7 @@ #include "main.h" #include "menu.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "start_menu.h" #include "string_util.h" diff --git a/src/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 273191192..1595ecd2e 100644 --- a/src/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -52,7 +52,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) u16 monData; u16 var; - monData = GetMonData(gPlayerParty, 11, ptr); + monData = GetMonData(gPlayerParty, MON_DATA_SPECIES, ptr); var = sub_8041870(monData); StringCopy(localPtr, gSpeciesNames[monData]); StringAppend(localPtr, gUnknown_0839B24D); @@ -67,7 +67,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) s8 MoriDebugMenu_Egg(void) { - if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041940(); CloseMenu(); @@ -76,7 +76,7 @@ s8 MoriDebugMenu_Egg(void) s8 MoriDebugMenu_MaleEgg(void) { - if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041950(); CloseMenu(); @@ -117,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void) SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship); } } - gSaveBlock1.filler_30B6 = -3; + gSaveBlock1.daycareData.misc.countersEtc.unk_11a = -3; CloseMenu(); return 1; } @@ -134,7 +134,7 @@ s8 MoriDebugMenu_PokeblockCase(void) s32 loopCounter; for (loopCounter = 0; loopCounter <= 39; loopCounter++) - sub_810CA6C(loopCounter); + PokeblockClearIfExists(loopCounter); CloseMenu(); return 1; diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c new file mode 100644 index 000000000..14261b75e --- /dev/null +++ b/src/debug/sound_check_menu.c @@ -0,0 +1,1300 @@ +#include "global.h" +#include "sprite.h" +#include "palette.h" +#include "task.h" +#include "m4a.h" +#include "main.h" +#include "text.h" +#include "menu.h" +#include "songs.h" +#include "title_screen.h" +#include "sound.h" +#include "pokedex_cry_screen.h" + +// local task defines +#define tWindowSelected data[0] +#define tBgmIndex data[1] +#define tSeIndex data[2] + +// window selections +enum +{ + BGM_WINDOW, + SE_WINDOW +}; + +// driver test cry enums +enum +{ + CRY_TEST_VOICE, + CRY_TEST_VOLUME, + CRY_TEST_PANPOT, + CRY_TEST_PITCH, + CRY_TEST_LENGTH, + CRY_TEST_RELEASE, + CRY_TEST_PROGRESS, + CRY_TEST_CHORUS, + CRY_TEST_PRIORITY +}; + +// minmax range enums +enum +{ + MIN, + MAX +}; + +extern struct ToneData voicegroup_84537C0[]; +extern struct ToneData voicegroup_8452590[]; +extern struct ToneData voicegroup_8453DC0[]; +extern struct ToneData voicegroup_8452B90[]; +extern struct ToneData voicegroup_84543C0[]; +extern struct ToneData voicegroup_8453190[]; +extern struct ToneData voicegroup_84549C0[]; +extern struct ToneData voicegroup_8453790[]; + +static EWRAM_DATA u8 gUnknown_020387B0 = 0; +static EWRAM_DATA u8 gUnknown_020387B1 = 0; +static EWRAM_DATA u8 gUnknown_020387B2 = 0; +static EWRAM_DATA s8 sDriverTestSelection = 0; +static EWRAM_DATA int sSoundTestParams[9] = {0}; +static EWRAM_DATA u8 gUnknown_020387D8 = 0; +static EWRAM_DATA u8 gUnknown_020387D9 = 0; + +u16 gSoundTestCryNum; +extern u8 gUnknown_03005E98; + +struct MusicPlayerInfo *gUnknown_03005D30; + +extern struct MusicPlayerInfo gMPlay_BGM; + +void Task_InitSoundCheckMenu(u8); +void sub_80BA384(u8); +void sub_80BA65C(u8); +void sub_80BA68C(u8); +void HighlightSelectedWindow(u8); +void PrintSoundNumber(u16, u16, u16); +void sub_80BA79C(const u8 *const, u16, u16); +void Task_DrawDriverTestMenu(u8); +void Task_ProcessDriverTestInput(u8); +void AdjustSelectedDriverParam(s8); +void PrintDriverTestMenuText(void); +void sub_80BAE10(u8, u8); +void PrintSignedNumber(int, u16, u16, u8); +void sub_80BAF84(u8); +void sub_80BB038(u8); +void sub_80BB1D4(void); +void Task_InitCryTest(u8); +void Task_ProcessCryTestInput(u8); +void PrintCryNumber(void); + +void CB2_SoundCheckMenu(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void VBlankCB_SoundCheckMenu(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + if (gUnknown_020387B0 != 0) + { + m4aSoundMain(); + m4aSoundMain(); + m4aSoundMain(); + } +} + +// unused +void CB2_StartSoundCheckMenu(void) +{ + u8 taskId; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + ResetPaletteFade(); + ResetTasks(); + ResetSpriteData(); + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_WIN0H = WIN_RANGE(0, 0); + REG_WIN0V = WIN_RANGE(0, 0); + REG_WIN1H = WIN_RANGE(0, 0); + REG_WIN1V = WIN_RANGE(0, 0); + REG_WININ = 0x1111; + REG_WINOUT = 0x31; + REG_BLDCNT = 0xE1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + REG_IE = 1; // could be a typo of REG_IME + REG_IE |= 1; + REG_DISPSTAT |= 8; + SetVBlankCallback(VBlankCB_SoundCheckMenu); + SetMainCallback2(CB2_SoundCheckMenu); + REG_DISPCNT = 0x7140; + taskId = CreateTask(Task_InitSoundCheckMenu, 0); + gTasks[taskId].tWindowSelected = BGM_WINDOW; + gTasks[taskId].tBgmIndex = 0; + gTasks[taskId].tSeIndex = 0; + gTasks[taskId].data[3] = 0; + gUnknown_020387B0 = 0; + gTasks[taskId].data[3] = 0; // why? + m4aSoundInit(); +} + +void Task_InitSoundCheckMenu(u8 taskId) +{ + u8 soundcheckStr[] = _("サウンドチェック"); + u8 bgmStr[] = _("BGM"); + u8 seStr[] = _("SE "); + u8 abDescStr[] = _("A‥さいせい B‥おわり"); + u8 upDownStr[] = _("L‥UP R‥DOWN"); + u8 driverStr[] = _("R‥DRIVER-TEST"); + + if (!gPaletteFade.active) + { + MenuDrawTextWindow(2, 0, 27, 3); + MenuDrawTextWindow(2, 5, 27, 10); + MenuDrawTextWindow(2, 12, 27, 17); + MenuPrint(soundcheckStr, 4, 1); + MenuPrint(abDescStr, 14, 1); + MenuPrint(bgmStr, 4, 6); + MenuPrint(upDownStr, 14, 6); + MenuPrint(seStr, 4, 13); + MenuPrint(upDownStr, 14, 13); + MenuPrint(driverStr, 14, 18); + gTasks[taskId].func = sub_80BA384; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + } +} + +// ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct. +static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 }; + +extern const u8 *const gBGMNames[]; +extern const u8 *const gSENames[]; + +void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText +{ + HighlightSelectedWindow(gTasks[taskId].tWindowSelected); + PrintSoundNumber(gTasks[taskId].tBgmIndex + BGM_STOP, 7, 8); // print by BGM index + sub_80BA79C(gBGMNames[gTasks[taskId].tBgmIndex], 11, 8); + PrintSoundNumber(gTasks[taskId].tSeIndex, 7, 15); + sub_80BA79C(gSENames[gTasks[taskId].tSeIndex], 11, 15); + gTasks[taskId].func = sub_80BA65C; +} + +bool8 Task_ProcessSoundCheckMenuInput(u8 taskId) +{ + if (gMain.newKeys & R_BUTTON) // driver test + { + gTasks[taskId].func = Task_DrawDriverTestMenu; + } + else if (gMain.newKeys & L_BUTTON) + { + gTasks[taskId].func = sub_80BAF84; + } + else if (gMain.newKeys & START_BUTTON) + { + gTasks[taskId].func = Task_InitCryTest; + } + else if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskId].tWindowSelected != 0) // is playing? + { + if (gTasks[taskId].data[4] != 0) + { + if (gTasks[taskId].tSeIndex != 0) + { + m4aSongNumStop(gTasks[taskId].data[4]); + m4aSongNumStart(gTasks[taskId].tSeIndex); + gTasks[taskId].data[4] = gTasks[taskId].tSeIndex; + } + else + { + m4aSongNumStop(gTasks[taskId].data[4]); + gTasks[taskId].data[4] = 0; + } + } + else if (gTasks[taskId].tSeIndex != 0) + { + m4aSongNumStart(gTasks[taskId].tSeIndex); + gTasks[taskId].data[4] = gTasks[taskId].tSeIndex; + } + } + else + { + if (gTasks[taskId].data[3] != 0) + { + if (gTasks[taskId].tBgmIndex != 0) + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex; + } + else + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + gTasks[taskId].data[3] = 0; + } + } + else if (gTasks[taskId].tBgmIndex != 0) + { + m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex; + } + } + } + else if (gMain.newKeys & B_BUTTON) + { + m4aSongNumStart(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80BA68C; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + gTasks[taskId].tWindowSelected ^= 1; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + gTasks[taskId].tWindowSelected ^= 1; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (gTasks[taskId].tWindowSelected != 0) + { + if (gTasks[taskId].tSeIndex > 0) + gTasks[taskId].tSeIndex--; + else + gTasks[taskId].tSeIndex = 247; + } + else + { + if (gTasks[taskId].tBgmIndex > 0) + gTasks[taskId].tBgmIndex--; + else + gTasks[taskId].tBgmIndex = 117; + } + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (gTasks[taskId].tWindowSelected != 0) + { + if (gTasks[taskId].tSeIndex < 247) + gTasks[taskId].tSeIndex++; + else + gTasks[taskId].tSeIndex = 0; + } + else + { + if (gTasks[taskId].tBgmIndex < 117) + gTasks[taskId].tBgmIndex++; + else + gTasks[taskId].tBgmIndex = 0; + } + return TRUE; + } + else if (gMain.heldKeys & SELECT_BUTTON) + { + gUnknown_020387B0 = 1; + } + else + { + gUnknown_020387B0 = 0; + } + return FALSE; +} + +void sub_80BA65C(u8 taskId) +{ + if (Task_ProcessSoundCheckMenuInput(taskId) != FALSE) + gTasks[taskId].func = sub_80BA384; +} + +void sub_80BA68C(u8 taskId) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskId); + SetMainCallback2(CB2_InitTitleScreen); + } +} + +void HighlightSelectedWindow(u8 windowType) +{ + switch (windowType) + { + case BGM_WINDOW: + default: + REG_WIN1H = WIN_RANGE(17, 223); + REG_WIN1V = WIN_RANGE(41, 87); + break; + case SE_WINDOW: + REG_WIN1H = WIN_RANGE(17, 223); + REG_WIN1V = WIN_RANGE(97, 143); + break; + } +} + +void PrintSoundNumber(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? +{ + u8 i; + u8 str[5]; + bool8 someBool; + u8 divisorValue; + + for (i = 0; i < 3; i++) + str[i] = 0; // initialize array + + str[3] = CHAR_ELLIPSIS; + str[4] = EOS; + someBool = FALSE; + + divisorValue = soundIndex / 100; + if (divisorValue) + { + str[0] = divisorValue + CHAR_0; + someBool = TRUE; + } + + divisorValue = (soundIndex % 100) / 10; + if (divisorValue || someBool) + str[1] = divisorValue + CHAR_0; + + str[2] = ((soundIndex % 100) % 10) + CHAR_0; + MenuPrint(str, x, y); +} + +void sub_80BA79C(const u8 *const string, u16 x, u16 y) +{ + u8 i; + u8 str[11]; + + for (i = 0; i <= 10; i++) + str[i] = 0; // format string. + + str[10] = EOS; // the above for loop formats the last element of the array unnecessarily. + + for (i = 0; string[i] != EOS && i < 10; i++) + str[i] = string[i]; + + MenuPrint(str, x, y); +} + +void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu +{ + u8 bbackStr[] = _("Bぼたんで もどる"); + u8 aplayStr[] = _("Aぼたんで さいせい"); + u8 voiceStr[] = _("VOICE‥‥‥‥"); + u8 volumeStr[] = _("VOLUME‥‥‥"); + u8 panpotStr[] = _("PANPOT‥‥‥"); + u8 pitchStr[] = _("PITCH‥‥‥‥"); + u8 lengthStr[] = _("LENGTH‥‥‥"); + u8 releaseStr[] = _("RELEASE‥‥"); + u8 progressStr[] = _("PROGRESS‥"); + u8 chorusStr[] = _("CHORUS‥‥‥"); + u8 priorityStr[] = _("PRIORITY‥"); + u8 playingStr[] = _("さいせいちゆう‥"); // 再生中 (playing) + u8 reverseStr[] = _("はんてん‥‥‥‥"); // 反転 (reverse) + u8 stereoStr[] = _("すてれお‥‥‥‥"); // stereo + + REG_DISPCNT = 0x3140; + MenuDrawTextWindow(0, 0, 29, 19); + MenuPrint(bbackStr, 19, 4); + MenuPrint(aplayStr, 19, 2); + MenuPrint(voiceStr, 2, 1); + MenuPrint(volumeStr, 2, 3); + MenuPrint(panpotStr, 2, 5); + MenuPrint(pitchStr, 2, 7); + MenuPrint(lengthStr, 2, 9); + MenuPrint(releaseStr, 2, 11); + MenuPrint(progressStr, 2, 13); + MenuPrint(chorusStr, 2, 15); + MenuPrint(priorityStr, 2, 17); + MenuPrint(playingStr, 19, 16); + MenuPrint(reverseStr, 19, 14); + MenuPrint(stereoStr, 19, 12); + REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); + REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); + sDriverTestSelection = 0; + gUnknown_020387B1 = 0; + gUnknown_020387B2 = 0; + gUnknown_03005D30 = NULL; + gUnknown_020387D8 = 0; + gUnknown_020387D9 = 1; + sSoundTestParams[CRY_TEST_VOICE] = 0; + sSoundTestParams[CRY_TEST_VOLUME] = 120; + sSoundTestParams[CRY_TEST_PANPOT] = 0; + sSoundTestParams[CRY_TEST_PITCH] = 15360; + sSoundTestParams[CRY_TEST_LENGTH] = 180; + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + sSoundTestParams[CRY_TEST_RELEASE] = 0; + sSoundTestParams[CRY_TEST_CHORUS] = 0; + sSoundTestParams[CRY_TEST_PRIORITY] = 2; + PrintDriverTestMenuText(); + sub_80BAE10(0, 0); + gTasks[taskId].func = Task_ProcessDriverTestInput; +} + +void Task_ProcessDriverTestInput(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + return; + } + if (gMain.newAndRepeatedKeys & DPAD_UP) // _080BAAA8 + { + u8 old = sDriverTestSelection; + + if(--sDriverTestSelection < 0) + sDriverTestSelection = 8; + sub_80BAE10(old, sDriverTestSelection); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_DOWN) // _080BAAD0 + { + u8 old = sDriverTestSelection; + + if(++sDriverTestSelection > 8) + sDriverTestSelection = 0; + sub_80BAE10(old, sDriverTestSelection); + return; + } + if (gMain.newKeys & START_BUTTON) // _080BAAF8 + { + gUnknown_020387D8 ^= 1; + PrintDriverTestMenuText(); + return; + } + if (gMain.newKeys & SELECT_BUTTON) // _080BAB14 + { + gUnknown_020387D9 ^= 1; + PrintDriverTestMenuText(); + SetPokemonCryStereo(gUnknown_020387D9); + return; + } + if (gMain.newAndRepeatedKeys & R_BUTTON) // _080BAB38 + { + AdjustSelectedDriverParam(10); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & L_BUTTON) // _080BAB46 + { + AdjustSelectedDriverParam(-10); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BAB56 + { + AdjustSelectedDriverParam(-1); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BAB64 + { + AdjustSelectedDriverParam(1); + PrintDriverTestMenuText(); + return; + } + if (gMain.newKeys & A_BUTTON) // _080BAB78 + { + u8 divide, remaining; + + SetPokemonCryVolume(sSoundTestParams[CRY_TEST_VOLUME]); + SetPokemonCryPanpot(sSoundTestParams[CRY_TEST_PANPOT]); + SetPokemonCryPitch(sSoundTestParams[CRY_TEST_PITCH]); + SetPokemonCryLength(sSoundTestParams[CRY_TEST_LENGTH]); + SetPokemonCryProgress(sSoundTestParams[CRY_TEST_PROGRESS]); + SetPokemonCryRelease(sSoundTestParams[CRY_TEST_RELEASE]); + SetPokemonCryChorus(sSoundTestParams[CRY_TEST_CHORUS]); + SetPokemonCryPriority(sSoundTestParams[CRY_TEST_PRIORITY]); + + remaining = sSoundTestParams[CRY_TEST_VOICE] % 128; + divide = sSoundTestParams[CRY_TEST_VOICE] / 128; + + switch (divide) + { + case 0: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]); + break; + case 1: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]); + break; + case 2: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]); + break; + case 3: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]); + break; + } + } + + // _080BACA2 + if (gUnknown_03005D30 != NULL) + { + gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30); + + if (gUnknown_020387B1 != gUnknown_020387B2) + PrintDriverTestMenuText(); + + gUnknown_020387B2 = gUnknown_020387B1; + } +} + +void AdjustSelectedDriverParam(s8 delta) +{ + // also ideally should be a MinMax struct, but any attempt to make this into a struct causes it to not match due to the weird multi dim access. + int paramRanges[] = + { + 0, 387, // Voice + 0, 127, // Volume + -127, 127, // Panpot + -128, 32639, // Pitch + 0, 65535, // Length + 0, 255, // Release + 0, 65535, // Progress + -64, 63 // Chorus + // Priority??? Why is it missing? + }; + + sSoundTestParams[sDriverTestSelection] += delta; + + if (sSoundTestParams[sDriverTestSelection] > paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MAX)]) + sSoundTestParams[sDriverTestSelection] = paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MIN)]; + + if (sSoundTestParams[sDriverTestSelection] < paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MIN)]) + sSoundTestParams[sDriverTestSelection] = paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MAX)]; +} + +void PrintDriverTestMenuText(void) +{ + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOICE] + 1, 11, 1, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOLUME], 11, 3, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PANPOT], 11, 5, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PITCH], 11, 7, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_LENGTH], 11, 9, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_RELEASE], 11, 11, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PROGRESS], 11, 13, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_CHORUS], 11, 15, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PRIORITY], 11, 17, 5); + PrintSignedNumber(gUnknown_020387B1, 27, 16, 1); + PrintSignedNumber(gUnknown_020387D8, 27, 14, 1); + PrintSignedNumber(gUnknown_020387D9, 27, 12, 1); +} + +void sub_80BAE10(u8 var1, u8 var2) +{ + u8 str1[] = _("▶"); + u8 str2[] = _(" "); + + MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); + MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); +} + +void PrintSignedNumber(int n, u16 x, u16 y, u8 digits) +{ + int powersOfTen[6] = + { + 1, + 10, + 100, + 1000, + 10000, + 100000 + }; + u8 str[8]; + s8 i; + s8 negative; + s8 someVar2; + + for (i = 0; i <= digits; i++) + str[i] = CHAR_SPACE; + str[digits + 1] = EOS; + + negative = FALSE; + if (n < 0) + { + n = -n; + negative = TRUE; + } + + if (digits == 1) + someVar2 = TRUE; + else + someVar2 = FALSE; + + for (i = digits - 1; i >= 0; i--) + { + s8 d = n / powersOfTen[i]; + + if (d != 0 || someVar2 || i == 0) + { + if (negative && !someVar2) + str[digits - i - 1] = CHAR_HYPHEN; + str[digits - i] = CHAR_0 + d; + someVar2 = TRUE; + } + n %= powersOfTen[i]; + } + + MenuPrint(str, x, y); +} + +static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; + +void sub_80BAF84(u8 taskId) +{ + u8 seStr[] = _("SE"); + u8 panStr[] = _("PAN"); + u8 playingStr[] = _("さいせいちゆう‥"); + + REG_DISPCNT = 0x3140; + MenuDrawTextWindow(0, 0, 29, 19); + MenuPrint(seStr, 3, 2); + MenuPrint(panStr, 3, 4); + MenuPrint(playingStr, 3, 8); + REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); + REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); + sSoundTestParams[CRY_TEST_VOICE] = 1; + sSoundTestParams[CRY_TEST_PANPOT] = 0; + sSoundTestParams[CRY_TEST_CHORUS] = 0; + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + sSoundTestParams[CRY_TEST_RELEASE] = 0; + sub_80BB1D4(); + gTasks[taskId].func = sub_80BB038; +} + +void sub_80BB038(u8 taskId) +{ + sub_80BB1D4(); + if (sSoundTestParams[CRY_TEST_PROGRESS]) + { + if (sSoundTestParams[CRY_TEST_RELEASE]) + { + sSoundTestParams[CRY_TEST_RELEASE]--; + } + else // _080BB05C + { + s8 panpot = gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]; + if (panpot != -128) + { + if (panpot == 127) + { + sSoundTestParams[CRY_TEST_CHORUS] += 2; + if (sSoundTestParams[CRY_TEST_CHORUS] < 63) + SE12PanpotControl(sSoundTestParams[CRY_TEST_CHORUS]); + } + } + else // _080BB08C + { + sSoundTestParams[CRY_TEST_CHORUS] -= 2; + if (sSoundTestParams[CRY_TEST_CHORUS] > -64) + SE12PanpotControl(sSoundTestParams[CRY_TEST_CHORUS]); + } + } + } + // _080BB0A2 + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + return; + } + if (gMain.newKeys & A_BUTTON) // _080BB104 + { + s8 panpot = gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]; + if (panpot != -128) + { + if (panpot == 127) + { + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], -64); + sSoundTestParams[CRY_TEST_CHORUS] = -64; + sSoundTestParams[CRY_TEST_PROGRESS] = 1; + sSoundTestParams[CRY_TEST_RELEASE] = 30; + return; + } + } + else // _080BB140 + { + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], 63); + sSoundTestParams[CRY_TEST_CHORUS] = 63; + sSoundTestParams[CRY_TEST_PROGRESS] = 1; + sSoundTestParams[CRY_TEST_RELEASE] = 30; + return; + } + // _080BB154 + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], panpot); + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + return; + } + if (gMain.newKeys & L_BUTTON) // _080BB15E + { + sSoundTestParams[CRY_TEST_PANPOT]++; + if (sSoundTestParams[CRY_TEST_PANPOT] > 4) + sSoundTestParams[CRY_TEST_PANPOT] = 0; + } + if (gMain.newKeys & R_BUTTON) // _080BB176 + { + sSoundTestParams[CRY_TEST_PANPOT]--; + if (sSoundTestParams[CRY_TEST_PANPOT] < 0) + sSoundTestParams[CRY_TEST_PANPOT] = 4; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BB192 + { + sSoundTestParams[CRY_TEST_VOICE]++; + if (sSoundTestParams[CRY_TEST_VOICE] > 247) + sSoundTestParams[CRY_TEST_VOICE] = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BB1B0 + { + sSoundTestParams[CRY_TEST_VOICE]--; + if (sSoundTestParams[CRY_TEST_VOICE] < 0) + sSoundTestParams[CRY_TEST_VOICE] = 247; + } +} + +void sub_80BB1D4(void) +{ + u8 lrStr[] = _(" LR"); + u8 rlStr[] = _(" RL"); + + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOICE], 7, 2, 3); + + switch (gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]) + { + case 127: + MenuPrint(lrStr, 7, 4); + break; + case -128: + MenuPrint(rlStr, 7, 4); + break; + default: + PrintSignedNumber(gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]], 7, 4, 3); + break; + } + PrintSignedNumber(IsSEPlaying(), 12, 8, 1); +} + +#define SOUND_LIST_BGM \ + X(BGM_STOP, "STOP") \ + X(BGM_TETSUJI, "TETSUJI") \ + X(BGM_FIELD13, "FIELD13") \ + X(BGM_KACHI22, "KACHI22") \ + X(BGM_KACHI2, "KACHI2") \ + X(BGM_KACHI3, "KACHI3") \ + X(BGM_KACHI5, "KACHI5") \ + X(BGM_PCC, "PCC") \ + X(BGM_NIBI, "NIBI") \ + X(BGM_SUIKUN, "SUIKUN") \ + X(BGM_DOORO1, "DOORO1") \ + X(BGM_DOORO_X1, "DOORO-X1") \ + X(BGM_DOORO_X3, "DOORO-X3") \ + X(BGM_MACHI_S2, "MACHI-S2") \ + X(BGM_MACHI_S4, "MACHI-S4") \ + X(BGM_GIM, "GIM") \ + X(BGM_NAMINORI, "NAMINORI") \ + X(BGM_DAN01, "DAN01") \ + X(BGM_FANFA1, "FANFA1") \ + X(BGM_ME_ASA, "ME-ASA") \ + X(BGM_ME_BACHI, "ME-BACHI") \ + X(BGM_FANFA4, "FANFA4") \ + X(BGM_FANFA5, "FANFA5") \ + X(BGM_ME_WAZA, "ME-WAZA") \ + X(BGM_BIJYUTU, "BIJYUTU") \ + X(BGM_DOORO_X4, "DOORO-X4") \ + X(BGM_FUNE_KAN, "FUNE-KAN") \ + X(BGM_ME_SHINKA, "ME-SHINKA") \ + X(BGM_SHINKA, "SHINKA") \ + X(BGM_ME_WASURE, "ME-WASURE") \ + X(BGM_SYOUJOEYE, "SYOUJOEYE") \ + X(BGM_BOYEYE, "BOYEYE") \ + X(BGM_DAN02, "DAN02") \ + X(BGM_MACHI_S3, "MACHI-S3") \ + X(BGM_ODAMAKI, "ODAMAKI") \ + X(BGM_B_TOWER, "B-TOWER") \ + X(BGM_SWIMEYE, "SWIMEYE") \ + X(BGM_DAN03, "DAN03") \ + X(BGM_ME_KINOMI, "ME-KINOMI") \ + X(BGM_ME_TAMA, "ME-TAMA") \ + X(BGM_ME_B_BIG, "ME-B-BIG") \ + X(BGM_ME_B_SMALL, "ME-B-SMALL") \ + X(BGM_ME_ZANNEN, "ME-ZANNEN") \ + X(BGM_BD_TIME, "BD-TIME") \ + X(BGM_TEST1, "TEST1") \ + X(BGM_TEST2, "TEST2") \ + X(BGM_TEST3, "TEST3") \ + X(BGM_TEST4, "TEST4") \ + X(BGM_TEST, "TEST") \ + X(BGM_GOMACHI0, "GOMACHI0") \ + X(BGM_GOTOWN, "GOTOWN") \ + X(BGM_POKECEN, "POKECEN") \ + X(BGM_NEXTROAD, "NEXTROAD") \ + X(BGM_GRANROAD, "GRANROAD") \ + X(BGM_CYCLING, "CYCLING") \ + X(BGM_FRIENDLY, "FRIENDLY") \ + X(BGM_MISHIRO, "MISHIRO") \ + X(BGM_TOZAN, "TOZAN") \ + X(BGM_GIRLEYE, "GIRLEYE") \ + X(BGM_MINAMO, "MINAMO") \ + X(BGM_ASHROAD, "ASHROAD") \ + X(BGM_EVENT0, "EVENT0") \ + X(BGM_DEEPDEEP, "DEEPDEEP") \ + X(BGM_KACHI1, "KACHI1") \ + X(BGM_TITLE3, "TITLE3") \ + X(BGM_DEMO1, "DEMO1") \ + X(BGM_GIRL_SUP, "GIRL-SUP") \ + X(BGM_HAGESHII, "HAGESHII") \ + X(BGM_KAKKOII, "KAKKOII") \ + X(BGM_KAZANBAI, "KAZANBAI") \ + X(BGM_AQA_0, "AQA-0") \ + X(BGM_TSURETEK, "TSURETEK") \ + X(BGM_BOY_SUP, "BOY-SUP") \ + X(BGM_RAINBOW, "RAINBOW") \ + X(BGM_AYASII, "AYASII") \ + X(BGM_KACHI4, "KACHI4") \ + X(BGM_ROPEWAY, "ROPEWAY") \ + X(BGM_CASINO, "CASINO") \ + X(BGM_HIGHTOWN, "HIGHTOWN") \ + X(BGM_SAFARI, "SAFARI") \ + X(BGM_C_ROAD, "C-ROAD") \ + X(BGM_AJITO, "AJITO") \ + X(BGM_M_BOAT, "M-BOAT") \ + X(BGM_M_DUNGON, "M-DUNGON") \ + X(BGM_FINECITY, "FINECITY") \ + X(BGM_MACHUPI, "MACHUPI") \ + X(BGM_P_SCHOOL, "P-SCHOOL") \ + X(BGM_DENDOU, "DENDOU") \ + X(BGM_TONEKUSA, "TONEKUSA") \ + X(BGM_MABOROSI, "MABOROSI") \ + X(BGM_CON_FAN, "CON-FAN") \ + X(BGM_CONTEST0, "CONTEST0") \ + X(BGM_MGM0, "MGM0") \ + X(BGM_T_BATTLE, "T-BATTLE") \ + X(BGM_OOAME, "OOAME") \ + X(BGM_HIDERI, "HIDERI") \ + X(BGM_RUNECITY, "RUNECITY") \ + X(BGM_CON_K, "CON-K") \ + X(BGM_EIKOU_R, "EIKOU-R") \ + X(BGM_KARAKURI, "KARAKURI") \ + X(BGM_HUTAGO, "HUTAGO") \ + X(BGM_SITENNOU, "SITENNOU") \ + X(BGM_YAMA_EYE, "YAMA-EYE") \ + X(BGM_CONLOBBY, "CONLOBBY") \ + X(BGM_INTER_V, "INTER-V") \ + X(BGM_DAIGO, "DAIGO") \ + X(BGM_THANKFOR, "THANKFOR") \ + X(BGM_END, "END") \ + X(BGM_BATTLE27, "BATTLE27") \ + X(BGM_BATTLE31, "BATTLE31") \ + X(BGM_BATTLE20, "BATTLE20") \ + X(BGM_BATTLE32, "BATTLE32") \ + X(BGM_BATTLE33, "BATTLE33") \ + X(BGM_BATTLE36, "BATTLE36") \ + X(BGM_BATTLE34, "BATTLE34") \ + X(BGM_BATTLE35, "BATTLE35") \ + X(BGM_BATTLE38, "BATTLE38") \ + X(BGM_BATTLE30, "BATTLE30") + +#define SOUND_LIST_SE \ + X(SE_STOP, "STOP") \ + X(SE_KAIFUKU, "KAIFUKU") \ + X(SE_PC_LOGON, "PC-LOGON") \ + X(SE_PC_OFF, "PC-OFF") \ + X(SE_PC_ON, "PC-ON") \ + X(SE_SELECT, "SELECT") \ + X(SE_WIN_OPEN, "WIN-OPEN") \ + X(SE_WALL_HIT, "WALL-HIT") \ + X(SE_DOOR, "DOOR") \ + X(SE_KAIDAN, "KAIDAN") \ + X(SE_DANSA, "DANSA") \ + X(SE_JITENSYA, "JITENSYA") \ + X(SE_KOUKA_L, "KOUKA-L") \ + X(SE_KOUKA_M, "KOUKA-M") \ + X(SE_KOUKA_H, "KOUKA-H") \ + X(SE_BOWA2, "BOWA2") \ + X(SE_POKE_DEAD, "POKE-DEAD") \ + X(SE_NIGERU, "NIGERU") \ + X(SE_JIDO_DOA, "JIDO-DOA") \ + X(SE_NAMINORI, "NAMINORI") \ + X(SE_BAN, "BAN") \ + X(SE_PIN, "PIN") \ + X(SE_BOO, "BOO") \ + X(SE_BOWA, "BOWA") \ + X(SE_JYUNI, "JYUNI") \ + X(SE_A, "A") \ + X(SE_I, "I") \ + X(SE_U, "U") \ + X(SE_E, "E") \ + X(SE_O, "O") \ + X(SE_N, "N") \ + X(SE_SEIKAI, "SEIKAI") \ + X(SE_HAZURE, "HAZURE") \ + X(SE_EXP, "EXP") \ + X(SE_JITE_PYOKO, "JITE-PYOKO") \ + X(SE_MU_PACHI, "MU-PACHI") \ + X(SE_TK_KASYA, "TK-KASYA") \ + X(SE_FU_ZAKU, "FU-ZAKU") \ + X(SE_FU_ZAKU2, "FU-ZAKU2") \ + X(SE_FU_ZUZUZU, "FU-ZUZUZU") \ + X(SE_RU_GASHIN, "RU-GASHIN") \ + X(SE_RU_GASYAN, "RU-GASYAN") \ + X(SE_RU_BARI, "RU-BARI") \ + X(SE_RU_HYUU, "RU-HYUU") \ + X(SE_KI_GASYAN, "KI-GASYAN") \ + X(SE_TK_WARPIN, "TK-WARPIN") \ + X(SE_TK_WARPOUT, "TK-WARPOUT") \ + X(SE_TU_SAA, "TU-SAA") \ + X(SE_HI_TURUN, "HI-TURUN") \ + X(SE_TRACK_MOVE, "TRACK-MOVE") \ + X(SE_TRACK_STOP, "TRACK-STOP") \ + X(SE_TRACK_HAIK, "TRACK-HAIK") \ + X(SE_TRACK_DOOR, "TRACK-DOOR") \ + X(SE_MOTER, "MOTER") \ + X(SE_CARD, "CARD") \ + X(SE_SAVE, "SAVE") \ + X(SE_KON, "KON") \ + X(SE_KON2, "KON2") \ + X(SE_KON3, "KON3") \ + X(SE_KON4, "KON4") \ + X(SE_SUIKOMU, "SUIKOMU") \ + X(SE_NAGERU, "NAGERU") \ + X(SE_TOY_C, "TOY-C") \ + X(SE_TOY_D, "TOY-D") \ + X(SE_TOY_E, "TOY-E") \ + X(SE_TOY_F, "TOY-F") \ + X(SE_TOY_G, "TOY-G") \ + X(SE_TOY_A, "TOY-A") \ + X(SE_TOY_B, "TOY-B") \ + X(SE_TOY_C1, "TOY-C1") \ + X(SE_MIZU, "MIZU") \ + X(SE_HASHI, "HASHI") \ + X(SE_DAUGI, "DAUGI") \ + X(SE_PINPON, "PINPON") \ + X(SE_FUUSEN1, "FUUSEN1") \ + X(SE_FUUSEN2, "FUUSEN2") \ + X(SE_FUUSEN3, "FUUSEN3") \ + X(SE_TOY_KABE, "TOY-KABE") \ + X(SE_TOY_DANGO, "TOY-DANGO") \ + X(SE_DOKU, "DOKU") \ + X(SE_ESUKA, "ESUKA") \ + X(SE_T_AME, "T-AME") \ + X(SE_T_AME_E, "T-AME-E") \ + X(SE_T_OOAME, "T-OOAME") \ + X(SE_T_OOAME_E, "T-OOAME-E") \ + X(SE_T_KOAME, "T-KOAME") \ + X(SE_T_KOAME_E, "T-KOAME-E") \ + X(SE_T_KAMI, "T-KAMI") \ + X(SE_T_KAMI2, "T-KAMI2") \ + X(SE_ELEBETA, "ELEBETA") \ + X(SE_HINSI, "HINSI") \ + X(SE_EXPMAX, "EXPMAX") \ + X(SE_TAMAKORO, "TAMAKORO") \ + X(SE_TAMAKORO_E, "TAMAKORO-E") \ + X(SE_BASABASA, "BASABASA") \ + X(SE_REGI, "REGI") \ + X(SE_C_GAJI, "C-GAJI") \ + X(SE_C_MAKU_U, "C-MAKU-U") \ + X(SE_C_MAKU_D, "C-MAKU-D") \ + X(SE_C_PASI, "C-PASI") \ + X(SE_C_SYU, "C-SYU") \ + X(SE_C_PIKON, "C-PIKON") \ + X(SE_REAPOKE, "REAPOKE") \ + X(SE_OP_BASYU, "OP-BASYU") \ + X(SE_BT_START, "BT-START") \ + X(SE_DENDOU, "DENDOU") \ + X(SE_JIHANKI, "JIHANKI") \ + X(SE_TAMA, "TAMA") \ + X(SE_Z_SCROLL, "Z-SCROLL") \ + X(SE_Z_PAGE, "Z-PAGE") \ + X(SE_PN_ON, "PN-ON") \ + X(SE_PN_OFF, "PN-OFF") \ + X(SE_Z_SEARCH, "Z-SEARCH") \ + X(SE_TAMAGO, "TAMAGO") \ + X(SE_TB_START, "TB-START") \ + X(SE_TB_KON, "TB-KON") \ + X(SE_TB_KARA, "TB-KARA") \ + X(SE_BIDORO, "BIDORO") \ + X(SE_W085, "W085") \ + X(SE_W085B, "W085B") \ + X(SE_W231, "W231") \ + X(SE_W171, "W171") \ + X(SE_W233, "W233") \ + X(SE_W233B, "W233B") \ + X(SE_W145, "W145") \ + X(SE_W145B, "W145B") \ + X(SE_W145C, "W145C") \ + X(SE_W240, "W240") \ + X(SE_W015, "W015") \ + X(SE_W081, "W081") \ + X(SE_W081B, "W081B") \ + X(SE_W088, "W088") \ + X(SE_W016, "W016") \ + X(SE_W016B, "W016B") \ + X(SE_W003, "W003") \ + X(SE_W104, "W104") \ + X(SE_W013, "W013") \ + X(SE_W196, "W196") \ + X(SE_W086, "W086") \ + X(SE_W004, "W004") \ + X(SE_W025, "W025") \ + X(SE_W025B, "W025B") \ + X(SE_W152, "W152") \ + X(SE_W026, "W026") \ + X(SE_W172, "W172") \ + X(SE_W172B, "W172B") \ + X(SE_W053, "W053") \ + X(SE_W007, "W007") \ + X(SE_W092, "W092") \ + X(SE_W221, "W221") \ + X(SE_W221B, "W221B") \ + X(SE_W052, "W052") \ + X(SE_W036, "W036") \ + X(SE_W059, "W059") \ + X(SE_W059B, "W059B") \ + X(SE_W010, "W010") \ + X(SE_W011, "W011") \ + X(SE_W017, "W017") \ + X(SE_W019, "W019") \ + X(SE_W028, "W028") \ + X(SE_W013B, "W013B") \ + X(SE_W044, "W044") \ + X(SE_W029, "W029") \ + X(SE_W057, "W057") \ + X(SE_W056, "W056") \ + X(SE_W250, "W250") \ + X(SE_W030, "W030") \ + X(SE_W039, "W039") \ + X(SE_W054, "W054") \ + X(SE_W077, "W077") \ + X(SE_W020, "W020") \ + X(SE_W082, "W082") \ + X(SE_W047, "W047") \ + X(SE_W195, "W195") \ + X(SE_W006, "W006") \ + X(SE_W091, "W091") \ + X(SE_W146, "W146") \ + X(SE_W120, "W120") \ + X(SE_W153, "W153") \ + X(SE_W071B, "W071B") \ + X(SE_W071, "W071") \ + X(SE_W103, "W103") \ + X(SE_W062, "W062") \ + X(SE_W062B, "W062B") \ + X(SE_W048, "W048") \ + X(SE_W187, "W187") \ + X(SE_W118, "W118") \ + X(SE_W155, "W155") \ + X(SE_W122, "W122") \ + X(SE_W060, "W060") \ + X(SE_W185, "W185") \ + X(SE_W014, "W014") \ + X(SE_W043, "W043") \ + X(SE_W207, "W207") \ + X(SE_W207B, "W207B") \ + X(SE_W215, "W215") \ + X(SE_W109, "W109") \ + X(SE_W173, "W173") \ + X(SE_W280, "W280") \ + X(SE_W202, "W202") \ + X(SE_W060B, "W060B") \ + X(SE_W076, "W076") \ + X(SE_W080, "W080") \ + X(SE_W100, "W100") \ + X(SE_W107, "W107") \ + X(SE_W166, "W166") \ + X(SE_W129, "W129") \ + X(SE_W115, "W115") \ + X(SE_W112, "W112") \ + X(SE_W197, "W197") \ + X(SE_W199, "W199") \ + X(SE_W236, "W236") \ + X(SE_W204, "W204") \ + X(SE_W268, "W268") \ + X(SE_W070, "W070") \ + X(SE_W063, "W063") \ + X(SE_W127, "W127") \ + X(SE_W179, "W179") \ + X(SE_W151, "W151") \ + X(SE_W201, "W201") \ + X(SE_W161, "W161") \ + X(SE_W161B, "W161B") \ + X(SE_W227, "W227") \ + X(SE_W227B, "W227B") \ + X(SE_W226, "W226") \ + X(SE_W208, "W208") \ + X(SE_W213, "W213") \ + X(SE_W213B, "W213B") \ + X(SE_W234, "W234") \ + X(SE_W260, "W260") \ + X(SE_W328, "W328") \ + X(SE_W320, "W320") \ + X(SE_W255, "W255") \ + X(SE_W291, "W291") \ + X(SE_W089, "W089") \ + X(SE_W239, "W239") \ + X(SE_W230, "W230") \ + X(SE_W281, "W281") \ + X(SE_W327, "W327") \ + X(SE_W287, "W287") \ + X(SE_W257, "W257") \ + X(SE_W253, "W253") \ + X(SE_W258, "W258") \ + X(SE_W322, "W322") \ + X(SE_W298, "W298") \ + X(SE_W287B, "W287B") \ + X(SE_W114, "W114") \ + X(SE_W063B, "W063B") + +// Create BGM list +#define X(songId, name) static const u8 sBGMName_##songId[] = _(name); +SOUND_LIST_BGM +#undef X + +#define X(songId, name) sBGMName_##songId, +static const u8 *const gBGMNames[] = +{ +SOUND_LIST_BGM +}; +#undef X + +// Create SE list +#define X(songId, name) static const u8 sSEName_##songId[] = _(name); +SOUND_LIST_SE +#undef X + +#define X(songId, name) sSEName_##songId, +static const u8 *const gSENames[] = +{ +SOUND_LIST_SE +}; +#undef X + +void Task_InitCryTest(u8 taskId) +{ + struct CryRelatedStruct cryStruct, cryStruct2; + u8 zero; + + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + gSoundTestCryNum = 1; + ResetSpriteData(); + FreeAllSpritePalettes(); + + cryStruct.unk0 = 0x2000; + cryStruct.unk2 = 29; + cryStruct.paletteNo = 12; + cryStruct.yPos = 30; + cryStruct.xPos = 4; + + zero = 0; // wtf? + gUnknown_03005E98 = 0; + + while (sub_8119E3C(&cryStruct, 3) == FALSE) + ; + + cryStruct2.unk0 = 0; + cryStruct2.unk2 = 15; + cryStruct2.paletteNo = 13; + cryStruct2.xPos = 12; + cryStruct2.yPos = 12; + + zero = 0; // wtf? + gUnknown_03005E98 = 0; + + while (ShowPokedexCryScreen(&cryStruct2, 2) == FALSE) + ; + + MenuDrawTextWindow(0, 16, 5, 19); + PrintCryNumber(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG2CNT = 0xF01; + REG_BG3CNT = 0x1D03; + REG_DISPCNT = 0x1d40; + m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2); + gTasks[taskId].func = Task_ProcessCryTestInput; +} + +void Task_ProcessCryTestInput(u8 taskId) +{ + sub_8119F88(3); + + if (gMain.newKeys & A_BUTTON) + { + sub_811A050(gSoundTestCryNum); + } + if (gMain.newKeys & R_BUTTON) + { + StopCryAndClearCrySongs(); + } + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if(--gSoundTestCryNum == 0) + gSoundTestCryNum = 384; // total species + PrintCryNumber(); + } + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if(++gSoundTestCryNum > 384) + gSoundTestCryNum = 1; + PrintCryNumber(); + } + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + DestroyCryMeterNeedleSprite(); + } +} + +void PrintCryNumber(void) +{ + PrintSignedNumber(gSoundTestCryNum, 1, 17, 3); +} diff --git a/src/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index a81625f2a..a81625f2a 100644 --- a/src/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c diff --git a/src/egg_hatch.c b/src/egg_hatch.c deleted file mode 100644 index 32fbe1547..000000000 --- a/src/egg_hatch.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "global.h" -#include "pokemon.h" - -void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) { - u16 species; - u32 personality, pokerus; - u8 i, friendship, language, gameMet, markings; - u16 moves[4]; - u32 ivs[6]; - - - species = GetMonData(egg, MON_DATA_SPECIES); - - for (i = 0; i < 4; i++) - { - moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); - } - - personality = GetMonData(egg, MON_DATA_PERSONALITY); - - for (i = 0; i < 6; i++) - { - ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); - } - - gameMet = GetMonData(egg, MON_DATA_MET_GAME); - markings = GetMonData(egg, MON_DATA_MARKINGS); - pokerus = GetMonData(egg, MON_DATA_POKERUS); - - CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0); - - for (i = 0; i < 4; i++) - { - SetMonData(temp, MON_DATA_MOVE1 + i, (const u8 *) &moves[i]); - } - - for (i = 0; i < 6; i++) - { - SetMonData(temp, MON_DATA_HP_IV + i, (const u8 *) &ivs[i]); - } - - language = GAME_LANGUAGE; - SetMonData(temp, MON_DATA_LANGUAGE, &language); - SetMonData(temp, MON_DATA_MET_GAME, &gameMet); - SetMonData(temp, MON_DATA_MARKINGS, &markings); - - friendship = 120; - SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); - SetMonData(temp, MON_DATA_POKERUS, (const u8 *) &pokerus); - - *egg = *temp; -} diff --git a/src/blend_palette.c b/src/engine/blend_palette.c index 843c50ac1..843c50ac1 100644 --- a/src/blend_palette.c +++ b/src/engine/blend_palette.c diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c new file mode 100644 index 000000000..c61a1d01c --- /dev/null +++ b/src/engine/cable_club.c @@ -0,0 +1,905 @@ +#include "global.h" +#include "battle.h" +#include "battle_records.h" +#include "cable_club.h" +#include "field_message_box.h" +#include "field_weather.h" +#include "link.h" +#include "load_save.h" +#include "m4a.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "record_mixing.h" +#include "overworld.h" +#include "script.h" +#include "script_pokemon_80C4.h" +#include "songs.h" +#include "sound.h" +#include "start_menu.h" +#include "string_util.h" +#include "strings2.h" +#include "task.h" +#include "text.h" +#include "trainer_card.h" + +extern u16 gScriptResult; +extern struct TrainerCard gTrainerCards[4]; +extern u8 gUnknown_03004860; +extern u8 gFieldLinkPlayerCount; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; +extern u16 gBattleTypeFlags; +extern const u8 gUnknown_081A4932[]; +extern const u8 gUnknown_081A4975[]; +extern const u8 gUnknown_081A49B6[]; +extern const u8 gUnknown_081A490C[]; +extern const u8* const gTrainerCardColorNames[]; +extern struct +{ + u8 field0; + u8 field1; +} gUnknown_020297D8; + +static void sub_8082F20(u8 taskId); +static void sub_8082F68(u8 taskId); +static void sub_8082FEC(u8 taskId); +static void sub_808303C(u8 taskId); +static void sub_80830E4(u8 taskId); +static void sub_8083188(u8 taskId); +static void sub_8083288(u8 taskId); +static void sub_8083314(u8 taskId); +static void sub_80833C4(u8 taskId); +static void sub_80833EC(u8 taskId); +static void sub_8083418(u8 taskId); +static bool8 sub_8083444(u8 taskId); +static void sub_808353C(u8 taskId); +static void sub_8083710(u8 taskId); +static void sub_8083760(u8 taskId); +static void sub_80837B4(u8 taskId); +static void sub_80837EC(u8 taskId); +static void sub_808382C(u8 taskId); +static void sub_8083958(void); +static void sub_80839DC(u8 taskId); +static void sub_8083AAC(u8 taskId); +static void sub_8083B44(u8 taskId); +static void sub_8083B6C(void); +static void sub_8083CA4(u8 taskId); + +extern void sub_80831F8(u8 taskId); +extern void Overworld_ResetMapMusic(void); +extern void sub_810FEFC(void); +extern void sub_8047CD8(void); +extern void sub_805559C(void); +extern void sub_8055574(void); +extern s32 sub_80554F8(void); +extern void sub_805465C(void); + +static void sub_8082CD4(u8 arg0, u8 arg1) +{ + if (FindTaskIdByFunc(sub_8082F20) == 0xFF) + { + u8 taskId = CreateTask(sub_8082F20, 80); + + gTasks[taskId].data[1] = arg0; + gTasks[taskId].data[2] = arg1; + } +} + +static void sub_8082D18(u32 value) +{ + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); + MenuDrawTextWindow(18, 10, 28, 13); + sub_8072BD8(gOtherText_PLink, 19, 11, 72); +} + +static void sub_8082D4C() +{ + MenuZeroFillWindowRect(18, 10, 28, 13); +} + +static void sub_8082D60(u8 taskId, u8 arg1) +{ + s16 *data = &gTasks[taskId].data[3]; + + if (arg1 != *data) + { + if (arg1 <= 1) + sub_8082D4C(); + else + sub_8082D18(arg1); + *data = arg1; + } +} + +static u32 sub_8082D9C(u8 minPlayers, u8 maxPlayers) +{ + int playerCount; + + switch (GetLinkPlayerDataExchangeStatusTimed()) + { + case EXCHANGE_COMPLETE: + playerCount = GetLinkPlayerCount_2(); + if (minPlayers <= playerCount && playerCount <= maxPlayers) + return 1; + ConvertIntToDecimalStringN(gStringVar1, playerCount, STR_CONV_MODE_LEFT_ALIGN, 1); + return 4; + case EXCHANGE_TIMED_OUT: + return 0; + case EXCHANGE_IN_PROGRESS: + return 3; + default: + return 0; + } +} + +static bool32 sub_8082DF4(u8 taskId) +{ + if (HasLinkErrorOccurred() == TRUE) + { + gTasks[taskId].func = sub_8083418; + return TRUE; + } + return FALSE; +} + +static bool32 sub_8082E28(u8 taskId) +{ + if ((gMain.newKeys & B_BUTTON) + && IsLinkConnectionEstablished() == FALSE) + { + gTasks[taskId].func = sub_80833EC; + return TRUE; + } + return FALSE; +} + +static bool32 sub_8082E6C(u8 taskId) +{ + if (IsLinkConnectionEstablished()) + SetSuppressLinkErrorMessage(TRUE); + + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = sub_80833EC; + return TRUE; + } + return FALSE; +} + +static bool32 sub_8082EB8(u8 taskId) +{ + if (GetSioMultiSI() == 1) + { + gTasks[taskId].func = sub_8083418; + return TRUE; + } + return FALSE; +} + +void unref_sub_8082EEC(u8 taskId) +{ + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 10) + { + sub_8007E9C(2); + DestroyTask(taskId); + } +} + +static void sub_8082F20(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + OpenLinkTimed(); + sub_80082EC(); + ResetLinkPlayers(); + } + else if (data[0] > 9) + { + gTasks[taskId].func = sub_8082F68; + } + data[0]++; +} + +static void sub_8082F68(u8 taskId) +{ + u32 playerCount = GetLinkPlayerCount_2(); + + if (sub_8082E28(taskId) == TRUE + || sub_8082E6C(taskId) == TRUE + || playerCount < 2) + return; + + SetSuppressLinkErrorMessage(TRUE); + gTasks[taskId].data[3] = 0; + if (IsLinkMaster() == TRUE) + { + PlaySE(SE_PIN); + ShowFieldAutoScrollMessage(gUnknown_081A4932); + gTasks[taskId].func = sub_8082FEC; + } + else + { + PlaySE(SE_BOO); + ShowFieldAutoScrollMessage(gUnknown_081A49B6); + gTasks[taskId].func = sub_80831F8; + } +} + +static void sub_8082FEC(u8 taskId) +{ + if (sub_8082E28(taskId) == TRUE + || sub_8082EB8(taskId) == TRUE + || sub_8082DF4(taskId) == TRUE) + return; + + if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN) + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].func = sub_808303C; + } +} + +static void sub_808303C(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + s32 linkPlayerCount = GetLinkPlayerCount_2(); + + if (sub_8082E28(taskId) == TRUE + || sub_8082EB8(taskId) == TRUE + || sub_8082DF4(taskId) == TRUE) + return; + + sub_8082D60(taskId, linkPlayerCount); + + if (!(gMain.newKeys & A_BUTTON)) + return; + +#if ENGLISH + if (linkPlayerCount < taskData[1]) + return; + + sub_80081C8(linkPlayerCount); + sub_8082D4C(); + ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); + ShowFieldAutoScrollMessage((u8 *)gUnknown_081A4975); + gTasks[taskId].func = sub_80830E4; +#elif GERMAN + if ((gLinkType == 0x2255 && (u32)linkPlayerCount > 1) + || (gLinkType != 0x2255 && taskData[1] <= linkPlayerCount)) + { + sub_80081C8(linkPlayerCount); + sub_8082D4C(); + ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); + ShowFieldAutoScrollMessage((u8 *)gUnknown_081A4975); + gTasks[taskId].func = sub_80830E4; + } +#endif +} + +static void sub_80830E4(u8 taskId) +{ + if (sub_8082E28(taskId) == TRUE + || sub_8082EB8(taskId) == TRUE + || sub_8082DF4(taskId) == TRUE) + return; + + if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN) + { + if (sub_800820C() != GetLinkPlayerCount_2()) + { + ShowFieldAutoScrollMessage(gUnknown_081A4932); + gTasks[taskId].func = sub_8082FEC; + } + else if (gMain.heldKeys & B_BUTTON) + { + ShowFieldAutoScrollMessage(gUnknown_081A4932); + gTasks[taskId].func = sub_8082FEC; + } + else if (gMain.heldKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8007F4C(); + gTasks[taskId].func = sub_8083188; + } + } +} + +static void sub_8083188(u8 taskId) +{ + u8 local1 = gTasks[taskId].data[1]; + u8 local2 = gTasks[taskId].data[2]; + + if (sub_8082DF4(taskId) == TRUE + || sub_8083444(taskId) == TRUE) + return; + + if (GetLinkPlayerCount_2() != sub_800820C()) + { + gTasks[taskId].func = sub_8083418; + } + else + { + gScriptResult = sub_8082D9C(local1, local2); + if (gScriptResult != 0) + gTasks[taskId].func = sub_8083288; + } +} + +void sub_80831F8(u8 taskId) +{ + u8 local1, local2; + + local1 = gTasks[taskId].data[1]; + local2 = gTasks[taskId].data[2]; + + if (sub_8082E28(taskId) == TRUE + || sub_8082DF4(taskId) == TRUE) + return; + + gScriptResult = sub_8082D9C(local1, local2); + if (gScriptResult == 0) + return; + if (gScriptResult == 3) + { + sub_800832C(); + HideFieldMessageBox(); + gTasks[taskId].func = sub_80833C4; + } + else + { + gFieldLinkPlayerCount = GetLinkPlayerCount_2(); + gUnknown_03004860 = GetMultiplayerId(); + sub_80081C8(gFieldLinkPlayerCount); + sub_8093390((struct TrainerCard *)gBlockSendBuffer); + gTasks[taskId].func = sub_8083314; + } +} + +static void sub_8083288(u8 taskId) +{ + if (sub_8082DF4(taskId) == TRUE) + return; + + if (gScriptResult == 3) + { + sub_800832C(); + HideFieldMessageBox(); + gTasks[taskId].func = sub_80833C4; + } + else + { + gFieldLinkPlayerCount = GetLinkPlayerCount_2(); + gUnknown_03004860 = GetMultiplayerId(); + sub_80081C8(gFieldLinkPlayerCount); + sub_8093390((struct TrainerCard *)gBlockSendBuffer); + gTasks[taskId].func = sub_8083314; + sub_8007E9C(2); + } +} + +static void sub_8083314(u8 taskId) +{ + u8 index; + struct TrainerCard *trainerCards; + + if (sub_8082DF4(taskId) == TRUE) + return; + + if (GetBlockReceivedStatus() != sub_8008198()) + return; + + index = 0; + trainerCards = gTrainerCards; + for (index = 0; index < GetLinkPlayerCount(); index++) + { + void *src; + src = gBlockRecvBuffer[index]; + memcpy(&trainerCards[index], src, sizeof(struct TrainerCard)); + } + + SetSuppressLinkErrorMessage(FALSE); + ResetBlockReceivedFlags(); + HideFieldMessageBox(); + + if (gScriptResult == 1) + { +#if ENGLISH + u16 linkType; + linkType = gLinkType; + // FIXME: sub_8082D4C doesn't take any arguments + sub_8082D4C(0x4411, linkType); +#elif GERMAN + if (gLinkType != 0x4411) + { + if (gLinkType == 0x6601) + deUnkValue2 = 1; + } + sub_8082D4C(); +#endif + EnableBothScriptContexts(); + DestroyTask(taskId); + return; + } + + sub_800832C(); + gTasks[taskId].func = sub_80833C4; +} + +static void sub_80833C4(u8 taskId) +{ + if (gReceivedRemoteLinkPlayers == FALSE) + { + sub_8082D4C(); + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +static void sub_80833EC(u8 taskId) +{ + gScriptResult = 5; + sub_8082D4C(); + HideFieldMessageBox(); + EnableBothScriptContexts(); + DestroyTask(taskId); +} + +static void sub_8083418(u8 taskId) +{ + gScriptResult = 6; + sub_8082D4C(); + HideFieldMessageBox(); + EnableBothScriptContexts(); + DestroyTask(taskId); +} + +static bool8 sub_8083444(u8 taskId) +{ + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] > 600) + { + gTasks[taskId].func = sub_8083418; + return TRUE; + } + + return FALSE; +} + +void sub_808347C(u8 arg0) +{ + u32 r3 = 2; + u32 r2 = 2; + + switch (gSpecialVar_0x8004) + { + case 1: + r3 = 2; + gLinkType = 0x2233; + break; + case 2: + r3 = 2; + gLinkType = 0x2244; + break; + case 5: + r3 = 4; + r2 = 4; + gLinkType = 0x2255; + break; + } + + sub_8082CD4(r3, r2); +} + +void sub_80834E4(void) +{ + gLinkType = 0x1133; + gBattleTypeFlags = 0; + sub_8082CD4(2, 2); +} + +void sub_808350C(void) +{ + gScriptResult = 0; + gLinkType = 0x3311; + gBattleTypeFlags = 0; + sub_8082CD4(2, 4); +} + +static void sub_808353C(u8 taskId) +{ + int playerCount; + int i; + + switch (gTasks[taskId].data[0]) + { + case 0: + if (gScriptResult == 1) + { + playerCount = GetLinkPlayerCount(); + for (i = 0; i < playerCount; i++) + { + if (gLinkPlayers[i].language == LANGUAGE_JAPANESE) + { + gScriptResult = 7; + sub_8008480(); + gTasks[taskId].data[0] = 1; + return; + } + } + } + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + case 1: + if (gReceivedRemoteLinkPlayers == FALSE) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } + break; + } +} + +void sub_80835D8(void) +{ + int taskId = FindTaskIdByFunc(sub_808353C); + + if (taskId == 0xFF) + { + taskId = CreateTask(sub_808353C, 80); + gTasks[taskId].data[0] = 0; + } +} + +void sub_8083614(void) +{ + gLinkType = 0x4411; + gBattleTypeFlags = 0; + sub_8082CD4(2, 4); +} + +void sub_808363C(void) +{ + gLinkType = 0x6601; + gBattleTypeFlags = 0; + sub_8082CD4(4, 4); +} + +u8 sub_8083664(void) +{ + if (FuncIsActiveTask(sub_8083710) != FALSE) + return 0xFF; + + switch (gSpecialVar_0x8004) + { + case 1: + gLinkType = 0x2233; + break; + case 2: + gLinkType = 0x2244; + break; + case 5: + gLinkType = 0x2255; + break; + case 3: + gLinkType = 0x1111; + break; + case 4: + gLinkType = 0x3322; + break; + } + + return CreateTask(sub_8083710, 80); +} + +static void sub_8083710(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + OpenLink(); + ResetLinkPlayers(); + CreateTask(sub_8083C50, 80); + } + else if (data[0] >= 10) + { + gTasks[taskId].func = sub_8083760; + } + data[0]++; +} + +static void sub_8083760(u8 taskId) +{ + if (GetLinkPlayerCount_2() >= 2) + { + if (IsLinkMaster() == TRUE) + gTasks[taskId].func = sub_80837B4; + else + gTasks[taskId].func = sub_80837EC; + } +} + +static void sub_80837B4(u8 taskId) +{ + if (sub_800820C() == GetLinkPlayerCount_2()) + { + sub_8007F4C(); + gTasks[taskId].func = sub_80837EC; + } +} + +static void sub_80837EC(u8 taskId) +{ + if (gReceivedRemoteLinkPlayers == TRUE + && IsLinkPlayerDataExchangeComplete() == TRUE) + { + sub_800826C(); + sub_8007B14(); + DestroyTask(taskId); + } +} + +void sub_8083820(void) +{ + ScrSpecial_DoSaveDialog(); +} + +static void sub_808382C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + fade_screen(1, 0); + gLinkType = 0x2211; + ClearLinkCallback_2(); + task->data[0]++; + break; + case 1: + if (!gPaletteFade.active) + task->data[0]++; + break; + case 2: + task->data[1]++; + if (task->data[1] > 20) + task->data[0]++; + break; + case 3: + sub_800832C(); + task->data[0]++; + break; + case 4: + if (!gReceivedRemoteLinkPlayers) + task->data[0]++; + break; + case 5: + if (gLinkPlayers[0].trainerId & 1) + current_map_music_set__default_for_battle(BGM_BATTLE32); + else + current_map_music_set__default_for_battle(BGM_BATTLE20); + + switch (gSpecialVar_0x8004) + { + case 1: + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK; + break; + case 2: + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE; + break; + case 5: + ReducePlayerPartyToThree(); + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI; + break; + } + + SetMainCallback2(sub_800E7C4); + gMain.savedCallback = sub_8083958; + DestroyTask(taskId); + break; + } +} + +static void sub_8083958(void) +{ + Overworld_ResetMapMusic(); + LoadPlayerParty(); + SavePlayerBag(); + sub_810FEFC(); + + if (gSpecialVar_0x8004 != 5) + UpdateLinkBattleRecords(gUnknown_03004860 ^ 1); + + gMain.savedCallback = sub_805465C; + SetMainCallback2(sub_8071B28); +} + +void sub_80839A4(void) +{ + if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2 || gSpecialVar_0x8004 == 5) + { + LoadPlayerParty(); + SavePlayerBag(); + } + copy_saved_warp2_bank_and_enter_x_to_warp1(0x7F); +} + +void sub_80839D0(void) +{ + sub_805559C(); +} + +static void sub_80839DC(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + ShowFieldMessage(gUnknown_081A490C); + task->data[0] = 1; + break; + case 1: + if (IsFieldMessageBoxHidden()) + { + sub_8055574(); + sub_8007270(gSpecialVar_0x8005); + task->data[0] = 2; + } + break; + case 2: + switch (sub_80554F8()) + { + case 0: + break; + case 1: + HideFieldMessageBox(); + task->data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + case 2: + task->data[0] = 3; + break; + } + break; + case 3: + sub_8055588(); + HideFieldMessageBox(); + MenuZeroFillScreen(); + DestroyTask(taskId); + EnableBothScriptContexts(); + break; + } +} + +void sub_8083A84(TaskFunc followupFunc) +{ + u8 taskId = CreateTask(sub_80839DC, 80); + SetTaskFuncWithFollowupFunc(taskId, sub_80839DC, followupFunc); + ScriptContext1_Stop(); +} + +static void sub_8083AAC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + ScriptContext2_Enable(); + fade_screen(1, 0); + ClearLinkCallback_2(); + task->data[0]++; + break; + case 1: + if (!gPaletteFade.active) + task->data[0]++; + break; + case 2: + gUnknown_020297D8.field0 = 0; + gUnknown_020297D8.field1 = 0; + m4aMPlayAllStop(); + sub_800832C(); + task->data[0]++; + break; + case 3: + if (!gReceivedRemoteLinkPlayers) + { + SetMainCallback2(sub_8047CD8); + DestroyTask(taskId); + } + break; + } +} + +static void sub_8083B44(u8 taskId) +{ + sub_8083B6C(); + DestroyTask(taskId); +} + +void sub_8083B5C(void) +{ + sub_8083A84(sub_8083B44); +} + +static void sub_8083B6C(void) +{ + CreateTask(sub_8083AAC, 80); +} + +void sub_8083B80(void) +{ + sub_8083B6C(); + ScriptContext1_Stop(); +} + +void sub_8083B90(void) +{ + gLinkType = 0x2211; + sub_8083A84(sub_808382C); +} + +void unref_sub_8083BB0(void) +{ + u8 taskId = CreateTask(sub_80839DC, 80); + SetTaskFuncWithFollowupFunc(taskId, sub_80839DC, Task_RecordMixing_Main); + ScriptContext1_Stop(); +} + +void sub_8083BDC(void) +{ + sub_8093130(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music); +} + +bool32 sub_8083BF4(u8 linkPlayerIndex) +{ + u32 trainerCardColorIndex; + + gSpecialVar_0x8006 = linkPlayerIndex; + StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name); + + trainerCardColorIndex = sub_80934C4(linkPlayerIndex); + if (trainerCardColorIndex == 0) + return FALSE; + + StringCopy(gStringVar2, gTrainerCardColorNames[trainerCardColorIndex - 1]); + return TRUE; +} + +void sub_8083C50(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0]++; + if (task->data[0] > 300) + { + CloseLink(); + SetMainCallback2(CB2_LinkError); + DestroyTask(taskId); + } + + if (gReceivedRemoteLinkPlayers) + DestroyTask(taskId); +} + +static void sub_8083CA4(u8 taskId) +{ + if (!gReceivedRemoteLinkPlayers) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +void unref_sub_8083CC8(u8 taskId) +{ + sub_800832C(); + gTasks[taskId].func = sub_8083CA4; +}
\ No newline at end of file diff --git a/src/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index 498562fe0..498562fe0 100644 --- a/src/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c diff --git a/src/clock.c b/src/engine/clock.c index 1f2aac9fd..9635514d2 100644 --- a/src/clock.c +++ b/src/engine/clock.c @@ -7,7 +7,7 @@ #include "field_weather.h" #include "lottery_corner.h" #include "main.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "time_events.h" #include "tv.h" diff --git a/src/decompress.c b/src/engine/decompress.c index d7f7087a7..3e5993118 100644 --- a/src/decompress.c +++ b/src/engine/decompress.c @@ -6,7 +6,7 @@ #define WRAM 0x02000000 -void sub_800D238(const void *src, void *dest) +void LZDecompressWram(const void *src, void *dest) { LZ77UnCompWram(src, dest); } diff --git a/src/link.c b/src/engine/link.c index 5858ad8bf..850201ccb 100644 --- a/src/link.c +++ b/src/engine/link.c @@ -2,7 +2,6 @@ #include "link.h" #include "battle.h" #include "berry.h" -#include "berry_blender.h" #include "hall_of_fame.h" #include "item_use.h" #include "main.h" @@ -42,6 +41,8 @@ extern u16 gBattleTypeFlags; extern u16 word_3004858; +extern void Blender_SetBankBerryData(u8 bank, u16 itemID); + static void InitLinkTestBG(u8, u8, u8, u8); void InitLinkTestBG_Unused(u8, u8, u8, u8); void LinkTestScreen(); @@ -556,7 +557,7 @@ static void ProcessRecvCmds(u8 unusedParam) sub_8007E24(); break; case 0xAAAB: - sub_80516C4(i, gRecvCmds[1][i]); + Blender_SetBankBerryData(i, gRecvCmds[1][i]); break; case 0xCCCC: #if defined(ENGLISH) diff --git a/src/load_save.c b/src/engine/load_save.c index 730aea2b8..8424b1121 100644 --- a/src/load_save.c +++ b/src/engine/load_save.c @@ -3,7 +3,7 @@ #include "load_save.h" #include "main.h" #include "pokemon.h" -#include "rom4.h" +#include "overworld.h" extern u8 gPlayerPartyCount; diff --git a/src/main.c b/src/engine/main.c index afaa0e77a..d7c11b6c8 100644 --- a/src/main.c +++ b/src/engine/main.c @@ -9,7 +9,7 @@ #include "play_time.h" #include "rng.h" #include "rom3.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "siirtc.h" #include "sound.h" diff --git a/src/main_menu.c b/src/engine/main_menu.c index 09fd06d9e..e0af86f3d 100644 --- a/src/main_menu.c +++ b/src/engine/main_menu.c @@ -10,7 +10,7 @@ #include "option_menu.h" #include "palette.h" #include "pokeball.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "save_menu_util.h" #include "songs.h" @@ -56,32 +56,14 @@ extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[]; extern u8 unk_2000000[]; -//Task data -enum { - TD_MENULAYOUT, - TD_SELECTEDMENUITEM, -}; - //Menu layouts -enum { +enum +{ HAS_NO_SAVED_GAME, //NEW GAME, OPTION HAS_SAVED_GAME, //CONTINUE, NEW GAME, OPTION HAS_MYSTERY_GIFT, //CONTINUE, NEW GAME, MYSTERY EVENTS, OPTION }; -//Task data -enum { - TD_TRAINER_SPRITE_ID = 2, //Trainer sprite being displayed during gender menu - TD_BGHOFS = 4, //Used to set REG_BG1HOFS and slide the platform around - TD_SUBTASK_DONE, //Set to true if the spawned task has finished - TD_GENDER_SELECTION, - TD_COUNTER, - TD_BIRCH_SPRITE_ID, - TD_AZURILL_SPRITE_ID, - TD_BRENDAN_SPRITE_ID, - TD_MAY_SPRITE_ID -}; - static void CB2_MainMenu(void); static void VBlankCB_MainMenu(void); static void CB2_InitMainMenuFromOptions(void); @@ -180,6 +162,9 @@ static void CB2_InitMainMenuFromOptions(void) InitMainMenu(TRUE); } +#define tMenuLayout data[0] +#define tMenuSelection data[1] + u32 InitMainMenu(u8 a1) { u16 savedIme; @@ -239,7 +224,7 @@ u32 InitMainMenu(u8 a1) | DISPCNT_WIN0_ON; taskId = CreateTask(Task_MainMenuCheckSave, 0); - gTasks[taskId].data[TD_SELECTEDMENUITEM] = 0; + gTasks[taskId].tMenuSelection = 0; return 0; } @@ -261,9 +246,9 @@ void Task_MainMenuCheckSave(u8 taskId) { case 1: if (IsMysteryGiftEnabled() == TRUE) - gTasks[taskId].data[TD_MENULAYOUT] = HAS_MYSTERY_GIFT; + gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT; else - gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_SAVED_GAME; gTasks[taskId].func = Task_MainMenuCheckRtc; break; @@ -272,7 +257,7 @@ void Task_MainMenuCheckSave(u8 taskId) MenuPrintMessage(gSaveFileDeletedMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); - gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; break; case 255: @@ -280,17 +265,17 @@ void Task_MainMenuCheckSave(u8 taskId) MenuPrintMessage(gSaveFileCorruptMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); - gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_SAVED_GAME; gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; if (IsMysteryGiftEnabled() == TRUE) - gTasks[taskId].data[TD_MENULAYOUT] = HAS_MYSTERY_GIFT; + gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT; else - gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_SAVED_GAME; break; case 0: default: - gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuCheckRtc; break; case 4: @@ -298,7 +283,7 @@ void Task_MainMenuCheckSave(u8 taskId) MenuPrintMessage(gBoardNotInstalledMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); - gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; return; } @@ -383,7 +368,7 @@ void Task_MainMenuDraw(u8 taskId) LoadPalette(&palette, 241, 2); } - switch (gTasks[taskId].data[TD_MENULAYOUT]) + switch (gTasks[taskId].tMenuLayout) { case HAS_NO_SAVED_GAME: default: @@ -420,7 +405,7 @@ void Task_MainMenuDraw(u8 taskId) void Task_MainMenuHighlight(u8 taskId) { - HighlightCurrentMenuItem(gTasks[taskId].data[TD_MENULAYOUT], gTasks[taskId].data[TD_SELECTEDMENUITEM]); + HighlightCurrentMenuItem(gTasks[taskId].tMenuLayout, gTasks[taskId].tMenuSelection); gTasks[taskId].func = Task_MainMenuProcessKeyInput; } @@ -444,7 +429,7 @@ bool8 MainMenuProcessKeyInput(u8 taskId) { s32 menuItemCount; - switch (gTasks[taskId].data[TD_MENULAYOUT]) + switch (gTasks[taskId].tMenuLayout) { case HAS_NO_SAVED_GAME: default: @@ -460,17 +445,17 @@ bool8 MainMenuProcessKeyInput(u8 taskId) if (gMain.newKeys & DPAD_UP) { - if (gTasks[taskId].data[TD_SELECTEDMENUITEM] > 0) + if (gTasks[taskId].tMenuSelection > 0) { - gTasks[taskId].data[TD_SELECTEDMENUITEM]--; + gTasks[taskId].tMenuSelection--; return TRUE; } } if (gMain.newKeys & DPAD_DOWN) { - if (gTasks[taskId].data[TD_SELECTEDMENUITEM] < menuItemCount - 1) + if (gTasks[taskId].tMenuSelection < menuItemCount - 1) { - gTasks[taskId].data[TD_SELECTEDMENUITEM]++; + gTasks[taskId].tMenuSelection++; return TRUE; } } @@ -499,11 +484,11 @@ void Task_MainMenuPressedA(u8 taskId) if (gPaletteFade.active) return; - switch (gTasks[taskId].data[TD_MENULAYOUT]) + switch (gTasks[taskId].tMenuLayout) { case HAS_NO_SAVED_GAME: default: - switch (gTasks[taskId].data[TD_SELECTEDMENUITEM]) + switch (gTasks[taskId].tMenuSelection) { case 0: default: @@ -515,7 +500,7 @@ void Task_MainMenuPressedA(u8 taskId) } break; case HAS_SAVED_GAME: - switch (gTasks[taskId].data[TD_SELECTEDMENUITEM]) + switch (gTasks[taskId].tMenuSelection) { case 0: default: @@ -530,7 +515,7 @@ void Task_MainMenuPressedA(u8 taskId) } break; case HAS_MYSTERY_GIFT: - switch (gTasks[taskId].data[TD_SELECTEDMENUITEM]) + switch (gTasks[taskId].tMenuSelection) { case 0: default: @@ -584,6 +569,9 @@ void Task_MainMenuPressedB(u8 taskId) } } +#undef tMenuLayout +#undef tMenuSelection + void HighlightCurrentMenuItem(u8 layout, u8 menuItem) { REG_WIN0H = WIN_RANGE(9, 231); @@ -710,6 +698,16 @@ void PrintBadgeCount(void) MenuPrint_PixelCoords(buffer, 205, 40, 1); } +#define tTrainerSpriteId data[2] +#define tBGhofs data[4] +#define tSubtaskIsDone data[5] +#define tGenderSelection data[6] +#define tFrameCounter data[7] +#define tBirchSpriteId data[8] +#define tAzurillSpriteId data[9] +#define tBrendanSpriteId data[10] +#define tMaySpriteId data[11] + static void Task_NewGameSpeech1(u8 taskId) { SetUpWindowConfig(&gWindowConfig_81E6C3C); @@ -732,25 +730,25 @@ static void Task_NewGameSpeech1(u8 taskId) BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); REG_BG1CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP; - gTasks[taskId].data[TD_BGHOFS] = 0; + gTasks[taskId].tBGhofs = 0; gTasks[taskId].func = Task_NewGameSpeech2; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = 0xFF; + gTasks[taskId].tTrainerSpriteId = 0xFF; gTasks[taskId].data[3] = 0xFF; - gTasks[taskId].data[TD_COUNTER] = 216; //Wait 3.6 seconds (216 frames) before starting speech + gTasks[taskId].tFrameCounter = 216; //Wait 3.6 seconds (216 frames) before starting speech PlayBGM(BGM_DOORO_X4); } static void Task_NewGameSpeech2(u8 taskId) { - if (gTasks[taskId].data[TD_COUNTER] != 0) + if (gTasks[taskId].tFrameCounter != 0) { - gTasks[taskId].data[TD_COUNTER]--; + gTasks[taskId].tFrameCounter--; } else { //Initialize Birch sprite - u8 spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tBirchSpriteId; gSprites[spriteId].pos1.x = 136; gSprites[spriteId].pos1.y = 60; @@ -758,19 +756,19 @@ static void Task_NewGameSpeech2(u8 taskId) gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeIn(taskId, 10); StartBackgroundFadeIn(taskId, 20); - gTasks[taskId].data[TD_COUNTER] = 80; + gTasks[taskId].tFrameCounter = 80; gTasks[taskId].func = Task_NewGameSpeech3; } } static void Task_NewGameSpeech3(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE] != FALSE) + if (gTasks[taskId].tSubtaskIsDone) { - gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_NORMAL; - if (gTasks[taskId].data[TD_COUNTER]) + gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = ST_OAM_OBJ_NORMAL; + if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_COUNTER]--; + gTasks[taskId].tFrameCounter--; } else { @@ -801,7 +799,7 @@ static void Task_NewGameSpeech5(u8 taskId) static void Task_NewGameSpeech6(u8 taskId) { - u8 spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].pos1.x = 104; gSprites[spriteId].pos1.y = 72; @@ -809,7 +807,7 @@ static void Task_NewGameSpeech6(u8 taskId) gSprites[spriteId].data0 = 0; CreatePokeballSprite(spriteId, gSprites[spriteId].oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0x0000FFFF); gTasks[taskId].func = Task_NewGameSpeech7; - gTasks[taskId].data[TD_COUNTER] = 0; + gTasks[taskId].tFrameCounter = 0; } static void Task_NewGameSpeech7(u8 taskId) @@ -817,18 +815,18 @@ static void Task_NewGameSpeech7(u8 taskId) if (IsCryFinished()) { //Go on to next sentence after frame 95 - if (gTasks[taskId].data[TD_COUNTER] > 95) + if (gTasks[taskId].tFrameCounter > 95) { MenuSetText(gSystemText_NewPara); gTasks[taskId].func = Task_NewGameSpeech8; } } - if (gTasks[taskId].data[TD_COUNTER] < 16384) + if (gTasks[taskId].tFrameCounter < 16384) { - gTasks[taskId].data[TD_COUNTER]++; + gTasks[taskId].tFrameCounter++; //Play Azurill cry at frame 32 - if (gTasks[taskId].data[TD_COUNTER] == 32) + if (gTasks[taskId].tFrameCounter == 32) PlayCry1(SPECIES_AZURILL, 0); } } @@ -859,11 +857,11 @@ static void Task_NewGameSpeech10(u8 taskId) { if (BirchSpeechUpdateWindowText()) { - gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; - gSprites[gTasks[taskId].data[TD_AZURILL_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[gTasks[taskId].tAzurillSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); StartBackgroundFadeOut(taskId, 1); - gTasks[taskId].data[TD_COUNTER] = 64; + gTasks[taskId].tFrameCounter = 64; gTasks[taskId].func = Task_NewGameSpeech11; } } @@ -871,41 +869,41 @@ static void Task_NewGameSpeech10(u8 taskId) //Slide platform away to the right static void Task_NewGameSpeech11(u8 taskId) { - if (gTasks[taskId].data[TD_BGHOFS] != -60) + if (gTasks[taskId].tBGhofs != -60) { - gTasks[taskId].data[TD_BGHOFS] -= 2; - REG_BG1HOFS = gTasks[taskId].data[TD_BGHOFS]; + gTasks[taskId].tBGhofs -= 2; + REG_BG1HOFS = gTasks[taskId].tBGhofs; } else { - gTasks[taskId].data[TD_BGHOFS] = -60; + gTasks[taskId].tBGhofs = -60; gTasks[taskId].func = Task_NewGameSpeech12; } } static void Task_NewGameSpeech12(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { //Hide Birch and Azurill - gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].invisible = TRUE; - gSprites[gTasks[taskId].data[TD_AZURILL_SPRITE_ID]].invisible = TRUE; + gSprites[gTasks[taskId].tBirchSpriteId].invisible = TRUE; + gSprites[gTasks[taskId].tAzurillSpriteId].invisible = TRUE; - if (gTasks[taskId].data[TD_COUNTER]) + if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_COUNTER]--; + gTasks[taskId].tFrameCounter--; } else { //Initialize Brendan sprite - u8 spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tBrendanSpriteId; gSprites[spriteId].pos1.x = 180; gSprites[spriteId].pos1.y = 60; gSprites[spriteId].invisible = FALSE; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId; - gTasks[taskId].data[TD_GENDER_SELECTION] = 0; + gTasks[taskId].tTrainerSpriteId = spriteId; + gTasks[taskId].tGenderSelection = 0; StartSpriteFadeIn(taskId, 2); StartBackgroundFadeIn(taskId, 1); gTasks[taskId].func = Task_NewGameSpeech13; @@ -915,9 +913,9 @@ static void Task_NewGameSpeech12(u8 taskId) static void Task_NewGameSpeech13(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { - gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_NORMAL; + gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_NORMAL; gTasks[taskId].func = Task_NewGameSpeech14; } } @@ -964,11 +962,11 @@ static void Task_NewGameSpeech16(u8 taskId) cursorPos = GetMenuCursorPos(); - if (cursorPos != gTasks[taskId].data[TD_GENDER_SELECTION]) + if (cursorPos != gTasks[taskId].tGenderSelection) { //Menu selection changed. Slide Brendan or May out and slide the other in - gTasks[taskId].data[TD_GENDER_SELECTION] = cursorPos; - gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; + gTasks[taskId].tGenderSelection = cursorPos; + gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 0); gTasks[taskId].func = Task_NewGameSpeech17; } @@ -977,9 +975,9 @@ static void Task_NewGameSpeech16(u8 taskId) //Slide old trainer sprite off right of screen static void Task_NewGameSpeech17(u8 taskId) { - u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tTrainerSpriteId; - if (gTasks[taskId].data[TD_SUBTASK_DONE] == FALSE) + if (gTasks[taskId].tSubtaskIsDone == FALSE) { gSprites[spriteId].pos1.x += 4; //Move sprite right } @@ -988,14 +986,14 @@ static void Task_NewGameSpeech17(u8 taskId) gSprites[spriteId].invisible = TRUE; //Set up new trainer sprite - if (gTasks[taskId].data[TD_GENDER_SELECTION]) - spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID]; + if (gTasks[taskId].tGenderSelection) + spriteId = gTasks[taskId].tMaySpriteId; else - spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + spriteId = gTasks[taskId].tBrendanSpriteId; gSprites[spriteId].pos1.x = 240; gSprites[spriteId].pos1.y = 60; gSprites[spriteId].invisible = FALSE; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId; + gTasks[taskId].tTrainerSpriteId = spriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeIn(taskId, 0); gTasks[taskId].func = Task_NewGameSpeech18; @@ -1005,7 +1003,7 @@ static void Task_NewGameSpeech17(u8 taskId) //Slide new trainer sprite from right of screen static void Task_NewGameSpeech18(u8 taskId) { - u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tTrainerSpriteId; if (gSprites[spriteId].pos1.x > 180) { @@ -1014,7 +1012,7 @@ static void Task_NewGameSpeech18(u8 taskId) else { gSprites[spriteId].pos1.x = 180; - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL; gTasks[taskId].func = Task_NewGameSpeech16; //Go back to gender menu @@ -1106,7 +1104,7 @@ static void Task_NewGameSpeech25(u8 taskId) case 0: //YES PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 8, 7); - gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); StartBackgroundFadeOut(taskId, 1); gTasks[taskId].func = Task_NewGameSpeech26; //Continue @@ -1122,10 +1120,10 @@ static void Task_NewGameSpeech25(u8 taskId) static void Task_NewGameSpeech26(u8 taskId) { - if (gTasks[taskId].data[TD_BGHOFS]) + if (gTasks[taskId].tBGhofs) { - gTasks[taskId].data[TD_BGHOFS] += 2; - REG_BG1HOFS = gTasks[taskId].data[TD_BGHOFS]; + gTasks[taskId].tBGhofs += 2; + REG_BG1HOFS = gTasks[taskId].tBGhofs; } else { @@ -1135,23 +1133,23 @@ static void Task_NewGameSpeech26(u8 taskId) static void Task_NewGameSpeech27(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { s16 spriteId; //Hide Brendan and May sprites - spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + spriteId = gTasks[taskId].tBrendanSpriteId; gSprites[spriteId].invisible = TRUE; - spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID]; + spriteId = gTasks[taskId].tMaySpriteId; gSprites[spriteId].invisible = TRUE; //Fade in Birch and Azurill - spriteId = (u8)gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + spriteId = (u8)gTasks[taskId].tBirchSpriteId; gSprites[spriteId].pos1.x = 136; gSprites[spriteId].pos1.y = 64; gSprites[spriteId].invisible = FALSE; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - spriteId = (u8)gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + spriteId = (u8)gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].pos1.x = 104; gSprites[spriteId].pos1.y = 72; gSprites[spriteId].invisible = FALSE; @@ -1170,27 +1168,27 @@ static void Task_NewGameSpeech27(u8 taskId) static void Task_NewGameSpeech28(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { s16 spriteId; - spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + spriteId = gTasks[taskId].tBirchSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL; - spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + spriteId = gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL; if (BirchSpeechUpdateWindowText()) { //Fade out Birch and Azurill - spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + spriteId = gTasks[taskId].tBirchSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + spriteId = gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); StartBackgroundFadeOut(taskId, 1); - gTasks[taskId].data[TD_COUNTER] = 64; + gTasks[taskId].tFrameCounter = 64; gTasks[taskId].func = Task_NewGameSpeech29; } } @@ -1198,19 +1196,19 @@ static void Task_NewGameSpeech28(u8 taskId) static void Task_NewGameSpeech29(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { s16 spriteId; //Hide Birch and Azurill - spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + spriteId = gTasks[taskId].tBirchSpriteId; gSprites[spriteId].invisible = TRUE; - spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + spriteId = gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].invisible = TRUE; - if (gTasks[taskId].data[TD_COUNTER]) + if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_COUNTER]--; + gTasks[taskId].tFrameCounter--; } else { @@ -1218,14 +1216,14 @@ static void Task_NewGameSpeech29(u8 taskId) //Fade in trainer and background if (gSaveBlock2.playerGender) - spriteId = (u8)gTasks[taskId].data[TD_MAY_SPRITE_ID]; + spriteId = (u8)gTasks[taskId].tMaySpriteId; else - spriteId = (u8)gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + spriteId = (u8)gTasks[taskId].tBrendanSpriteId; gSprites[spriteId].pos1.x = 120; gSprites[spriteId].pos1.y = 60; gSprites[spriteId].invisible = FALSE; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId; + gTasks[taskId].tTrainerSpriteId = spriteId; StartSpriteFadeIn(taskId, 2); StartBackgroundFadeIn(taskId, 1); @@ -1238,18 +1236,18 @@ static void Task_NewGameSpeech29(u8 taskId) static void Task_NewGameSpeech30(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { s16 spriteId; - spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + spriteId = gTasks[taskId].tTrainerSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL; if (BirchSpeechUpdateWindowText()) { u8 spriteId; - spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + spriteId = gTasks[taskId].tTrainerSpriteId; gSprites[spriteId].oam.affineMode = 1; gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E79AC; InitSpriteAffineAnim(&gSprites[spriteId]); @@ -1264,7 +1262,7 @@ static void Task_NewGameSpeech30(u8 taskId) static void Task_NewGameSpeech31(u8 taskId) { - u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tTrainerSpriteId; if (gSprites[spriteId].affineAnimEnded) gTasks[taskId].func = Task_NewGameSpeech32; @@ -1274,7 +1272,7 @@ static void Task_NewGameSpeech32(u8 taskId) { if (!gPaletteFade.active) { - u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tTrainerSpriteId; gSprites[spriteId].callback = nullsub_34; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON; BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0x10, 0xFFFF); @@ -1328,7 +1326,7 @@ void CB_ContinueNewGameSpeechPart2() taskId = CreateTask(Task_NewGameSpeech23, 0); - gTasks[taskId].data[TD_BGHOFS] = -60; + gTasks[taskId].tBGhofs = -60; remove_some_task(); ResetSpriteData(); @@ -1340,20 +1338,20 @@ void CB_ContinueNewGameSpeechPart2() if (gSaveBlock2.playerGender != MALE) { - gTasks[taskId].data[TD_GENDER_SELECTION] = FEMALE; - spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID]; + gTasks[taskId].tGenderSelection = FEMALE; + spriteId = gTasks[taskId].tMaySpriteId; } else { - gTasks[taskId].data[TD_GENDER_SELECTION] = MALE; - spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + gTasks[taskId].tGenderSelection = MALE; + spriteId = gTasks[taskId].tBrendanSpriteId; } gSprites[spriteId].pos1.x = 180; gSprites[spriteId].pos1.y = 60; gSprites[spriteId].invisible = FALSE; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId; + gTasks[taskId].tTrainerSpriteId = spriteId; REG_BG1HOFS = -60; @@ -1412,56 +1410,67 @@ void AddBirchSpeechObjects(u8 taskId) gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].oam.priority = 0; gSprites[spriteId].invisible = 1; - gTasks[taskId].data[TD_BIRCH_SPRITE_ID] = spriteId; + gTasks[taskId].tBirchSpriteId = spriteId; spriteId = CreateAzurillSprite(0x68, 0x48); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].oam.priority = 0; gSprites[spriteId].invisible = 1; - gTasks[taskId].data[TD_AZURILL_SPRITE_ID] = spriteId; + gTasks[taskId].tAzurillSpriteId = spriteId; //Create Brendan sprite - spriteId = CreateTrainerSprite_BirchSpeech(0, 120, 60, 0, unk_2000000); + spriteId = CreateTrainerSprite(0, 120, 60, 0, unk_2000000); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; - gTasks[taskId].data[TD_BRENDAN_SPRITE_ID] = spriteId; + gTasks[taskId].tBrendanSpriteId = spriteId; //Create May sprite - spriteId = CreateTrainerSprite_BirchSpeech(1, 120, 60, 0, unk_2000000 + 0x800); + spriteId = CreateTrainerSprite(1, 120, 60, 0, unk_2000000 + 0x800); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; - gTasks[taskId].data[TD_MAY_SPRITE_ID] = spriteId; + gTasks[taskId].tMaySpriteId = spriteId; } -enum { - TD_PARENT_TASK_ID, - TD_EVA, //EVA coefficient of REG_BLDALPHA - TD_EVB, //EVB coefficient of REG_BLDALPHA - TD_INTERVAL, - TD_FRAMECOUNTER -}; +#undef tTrainerSpriteId +#undef tBGhofs +//#undef tSubtaskIsDone +#undef tGenderSelection +#undef tFrameCounter +#undef tBirchSpriteId +#undef tAzurillSpriteId +#undef tBrendanSpriteId +#undef tMaySpriteId + + +// Sprite Fade task + +#define tMainTaskId data[0] +#define tBlendEVA data[1] +#define tBlendEVB data[2] +#define tUpdateInterval data[3] +#define tFrameCounter data[4] static void Task_SpriteFadeOut(u8 taskId) { - if (gTasks[taskId].data[TD_EVA] == 0) + if (gTasks[taskId].tBlendEVA == 0) { - gTasks[gTasks[taskId].data[TD_PARENT_TASK_ID]].data[TD_SUBTASK_DONE] = TRUE; + gTasks[gTasks[taskId].tMainTaskId].tSubtaskIsDone = TRUE; DestroyTask(taskId); } else { - if (gTasks[taskId].data[TD_FRAMECOUNTER]) + if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_FRAMECOUNTER]--; + gTasks[taskId].tFrameCounter--; } else { - gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL]; - gTasks[taskId].data[TD_EVA]--; - gTasks[taskId].data[TD_EVB]++; - REG_BLDALPHA = gTasks[taskId].data[TD_EVA] + (gTasks[taskId].data[TD_EVB] * 256); + gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval; + gTasks[taskId].tBlendEVA--; + gTasks[taskId].tBlendEVB++; + REG_BLDALPHA = gTasks[taskId].tBlendEVA + (gTasks[taskId].tBlendEVB * 256); } } } @@ -1474,33 +1483,33 @@ static void StartSpriteFadeOut(u8 taskId, u8 interval) REG_BLDCNT = 592; REG_BLDALPHA = 16; REG_BLDY = 0; - gTasks[taskId].data[TD_SUBTASK_DONE] = FALSE; + gTasks[taskId].tSubtaskIsDone = FALSE; newTaskId = CreateTask(Task_SpriteFadeOut, 0); - gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId; - gTasks[newTaskId].data[TD_EVA] = 16; - gTasks[newTaskId].data[TD_EVB] = 0; - gTasks[newTaskId].data[TD_INTERVAL] = interval; - gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval; + gTasks[newTaskId].tMainTaskId = taskId; + gTasks[newTaskId].tBlendEVA = 16; + gTasks[newTaskId].tBlendEVB = 0; + gTasks[newTaskId].tUpdateInterval = interval; + gTasks[newTaskId].tFrameCounter = interval; } static void Task_SpriteFadeIn(u8 taskId) { - if (gTasks[taskId].data[TD_EVA] == 16) + if (gTasks[taskId].tBlendEVA == 16) { - gTasks[gTasks[taskId].data[TD_PARENT_TASK_ID]].data[TD_SUBTASK_DONE] = TRUE; + gTasks[gTasks[taskId].tMainTaskId].tSubtaskIsDone = TRUE; DestroyTask(taskId); } - else if (gTasks[taskId].data[TD_FRAMECOUNTER]) + else if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_FRAMECOUNTER]--; + gTasks[taskId].tFrameCounter--; } else { - gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL]; - gTasks[taskId].data[TD_EVA]++; - gTasks[taskId].data[TD_EVB]--; - REG_BLDALPHA = gTasks[taskId].data[TD_EVA] + (gTasks[taskId].data[TD_EVB] * 256); + gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval; + gTasks[taskId].tBlendEVA++; + gTasks[taskId].tBlendEVB--; + REG_BLDALPHA = gTasks[taskId].tBlendEVA + (gTasks[taskId].tBlendEVB * 256); } } @@ -1512,36 +1521,49 @@ static void StartSpriteFadeIn(u8 taskId, u8 interval) REG_BLDCNT = 592; REG_BLDALPHA = 4096; REG_BLDY = 0; - gTasks[taskId].data[TD_SUBTASK_DONE] = FALSE; + gTasks[taskId].tSubtaskIsDone = FALSE; newTaskId = CreateTask(Task_SpriteFadeIn, 0); - gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId; - gTasks[newTaskId].data[TD_EVA] = 0; - gTasks[newTaskId].data[TD_EVB] = 16; - gTasks[newTaskId].data[TD_INTERVAL] = interval; - gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval; + gTasks[newTaskId].tMainTaskId = taskId; + gTasks[newTaskId].tBlendEVA = 0; + gTasks[newTaskId].tBlendEVB = 16; + gTasks[newTaskId].tUpdateInterval = interval; + gTasks[newTaskId].tFrameCounter = interval; } -enum { - TD_FADELEVEL = 1, - TD_DELAY, -}; +#undef tMainTaskId +#undef tBlendEVA +#undef tBlendEVB +#undef tUpdateInterval +#undef tFrameCounter + + +// Background fade task + +#define tMainTaskId data[0] +#define tFadeLevel data[1] +#define tDelay data[2] +#define tUpdateInterval data[3] +#define tFrameCounter data[4] static void HandleFloorShadowFadeOut(u8 taskId) { - if (gTasks[taskId].data[TD_DELAY]) - gTasks[taskId].data[TD_DELAY]--; + if (gTasks[taskId].tDelay) + gTasks[taskId].tDelay--; else { - if (gTasks[taskId].data[TD_FADELEVEL] == 8) + if (gTasks[taskId].tFadeLevel == 8) DestroyTask(taskId); - else if (gTasks[taskId].data[TD_FRAMECOUNTER]) - gTasks[taskId].data[TD_FRAMECOUNTER]--; else { - gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL]; - gTasks[taskId].data[TD_FADELEVEL]++; - LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[TD_FADELEVEL]], 1, 0x10); + if (gTasks[taskId].tFrameCounter) + gTasks[taskId].tFrameCounter--; + else + { + gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval; + gTasks[taskId].tFadeLevel++; + LoadPalette(&gUnknown_081E795C[gTasks[taskId].tFadeLevel], 1, 0x10); + } } } } @@ -1550,30 +1572,30 @@ static void HandleFloorShadowFadeOut(u8 taskId) static void StartBackgroundFadeOut(u8 taskId, u8 interval) { u8 newTaskId = CreateTask(HandleFloorShadowFadeOut, 0); - gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId; - gTasks[newTaskId].data[TD_FADELEVEL] = 0; - gTasks[newTaskId].data[TD_DELAY] = 8; - gTasks[newTaskId].data[TD_INTERVAL] = interval; - gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval; + gTasks[newTaskId].tMainTaskId = taskId; + gTasks[newTaskId].tFadeLevel = 0; + gTasks[newTaskId].tDelay = 8; + gTasks[newTaskId].tUpdateInterval = interval; + gTasks[newTaskId].tFrameCounter = interval; } static void HandleFloorShadowFadeIn(u8 taskId) { - if (gTasks[taskId].data[TD_DELAY]) - gTasks[taskId].data[TD_DELAY]--; + if (gTasks[taskId].tDelay) + gTasks[taskId].tDelay--; else { - if (gTasks[taskId].data[TD_FADELEVEL] == 0) + if (gTasks[taskId].tFadeLevel == 0) DestroyTask(taskId); else { - if (gTasks[taskId].data[TD_FRAMECOUNTER]) - gTasks[taskId].data[TD_FRAMECOUNTER]--; + if (gTasks[taskId].tFrameCounter) + gTasks[taskId].tFrameCounter--; else { - gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL]; - gTasks[taskId].data[TD_FADELEVEL]--; - LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[TD_FADELEVEL]], 1, 0x10); + gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval; + gTasks[taskId].tFadeLevel--; + LoadPalette(&gUnknown_081E795C[gTasks[taskId].tFadeLevel], 1, 0x10); } } } @@ -1583,12 +1605,18 @@ static void HandleFloorShadowFadeIn(u8 taskId) static void StartBackgroundFadeIn(u8 taskId, u8 interval) { u8 newTaskId = CreateTask(HandleFloorShadowFadeIn, 0); - gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId; - gTasks[newTaskId].data[TD_FADELEVEL] = 8; - gTasks[newTaskId].data[TD_DELAY] = 8; - gTasks[newTaskId].data[TD_INTERVAL] = interval; - gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval; -} + gTasks[newTaskId].tMainTaskId = taskId; + gTasks[newTaskId].tFadeLevel = 8; + gTasks[newTaskId].tDelay = 8; + gTasks[newTaskId].tUpdateInterval = interval; + gTasks[newTaskId].tFrameCounter = interval; +} + +#undef tMainTaskId +#undef tFadeLevel +#undef tDelay +#undef tUpdateInterval +#undef tFrameCounter static void CreateGenderMenu(u8 left, u8 top) { diff --git a/src/menu.c b/src/engine/menu.c index ef458124b..a9c4aaa43 100644 --- a/src/menu.c +++ b/src/engine/menu.c @@ -154,9 +154,9 @@ void MenuPrint(const u8 *str, u8 left, u8 top) sub_8003460(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } -void MenuZeroFillWindowRect(u8 a1, u8 a2, u8 a3, u8 a4) +void MenuZeroFillWindowRect(u8 left, u8 top, u8 right, u8 bottom) { - ZeroFillWindowRect(gMenuWindowPtr, a1, a2, a3, a4); + ZeroFillWindowRect(gMenuWindowPtr, left, top, right, bottom); } void MenuFillWindowRectWithBlankTile(u8 left, u8 top, u8 right, u8 bottom) @@ -205,7 +205,7 @@ void MenuPrintMessage(const u8 *str, u8 left, u8 top) sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } -void sub_8072044(const u8 *str) +void MenuPrintMessageDefaultCoords(const u8 *str) { sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15); } @@ -571,7 +571,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m MenuPrint(menuItems[i].text, left, top + 2 * i); } -void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], const u8 *order) +void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) { u8 i; @@ -630,82 +630,82 @@ __attribute__((naked)) int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x10\n\ - mov r12, r0\n\ - ldr r0, [sp, 0x24]\n\ - ldr r4, [sp, 0x28]\n\ - str r4, [sp, 0xC]\n\ - lsls r1, 24\n\ - lsrs r5, r1, 24\n\ - lsls r2, 16\n\ - lsrs r4, r2, 16\n\ - lsls r3, 24\n\ - lsrs r6, r3, 24\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r0, _08072AF8 @ =gMenuWindowPtr\n\ - ldr r0, [r0]\n\ - ldr r1, _08072AFC @ =gMenuTextTileOffset\n\ - ldrh r3, [r1]\n\ - str r5, [sp]\n\ - str r4, [sp, 0x4]\n\ - str r6, [sp, 0x8]\n\ - movs r1, 0\n\ - mov r2, r12\n\ - bl sub_8004FD0\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r2, r1, 24\n\ - movs r3, 0x7\n\ - ands r3, r5\n\ - cmp r3, 0\n\ - bne _08072B00\n\ - adds r1, r6, 0x7\n\ - asrs r1, 3\n\ - subs r1, 0x1\n\ - b _08072B0C\n\ - .align 2, 0\n\ + push {r4-r7,lr}\n\ + sub sp, 0x10\n\ + mov r12, r0\n\ + ldr r0, [sp, 0x24]\n\ + ldr r4, [sp, 0x28]\n\ + str r4, [sp, 0xC]\n\ + lsls r1, 24\n\ + lsrs r5, r1, 24\n\ + lsls r2, 16\n\ + lsrs r4, r2, 16\n\ + lsls r3, 24\n\ + lsrs r6, r3, 24\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r0, _08072AF8 @ =gMenuWindowPtr\n\ + ldr r0, [r0]\n\ + ldr r1, _08072AFC @ =gMenuTextTileOffset\n\ + ldrh r3, [r1]\n\ + str r5, [sp]\n\ + str r4, [sp, 0x4]\n\ + str r6, [sp, 0x8]\n\ + movs r1, 0\n\ + mov r2, r12\n\ + bl sub_8004FD0\n\ + adds r1, r0, 0\n\ + lsls r1, 24\n\ + lsrs r2, r1, 24\n\ + movs r3, 0x7\n\ + ands r3, r5\n\ + cmp r3, 0\n\ + bne _08072B00\n\ + adds r1, r6, 0x7\n\ + asrs r1, 3\n\ + subs r1, 0x1\n\ + b _08072B0C\n\ + .align 2, 0\n\ _08072AF8: .4byte gMenuWindowPtr\n\ _08072AFC: .4byte gMenuTextTileOffset\n\ _08072B00:\n\ - adds r3, r6, r3\n\ - subs r1, r3, 0x1\n\ - cmp r1, 0\n\ - bge _08072B0A\n\ - adds r1, r3, 0x6\n\ + adds r3, r6, r3\n\ + subs r1, r3, 0x1\n\ + cmp r1, 0\n\ + bge _08072B0A\n\ + adds r1, r3, 0x6\n\ _08072B0A:\n\ - asrs r1, 3\n\ + asrs r1, 3\n\ _08072B0C:\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r6, r1, 0\n\ - lsrs r5, 3\n\ - adds r1, r7, 0x7\n\ - asrs r1, 3\n\ - lsls r1, 24\n\ - lsrs r7, r1, 24\n\ - lsrs r4, 3\n\ - cmp r2, r7\n\ - bcs _08072B3E\n\ - lsls r1, r2, 1\n\ - adds r1, r4, r1\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r2, r5, r6\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - adds r3, r7, r4\n\ - subs r3, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - adds r0, r5, 0\n\ - bl MenuFillWindowRectWithBlankTile\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r6, r1, 0\n\ + lsrs r5, 3\n\ + adds r1, r7, 0x7\n\ + asrs r1, 3\n\ + lsls r1, 24\n\ + lsrs r7, r1, 24\n\ + lsrs r4, 3\n\ + cmp r2, r7\n\ + bcs _08072B3E\n\ + lsls r1, r2, 1\n\ + adds r1, r4, r1\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r2, r5, r6\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + adds r3, r7, r4\n\ + subs r3, 0x1\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + adds r0, r5, 0\n\ + bl MenuFillWindowRectWithBlankTile\n\ _08072B3E:\n\ - add sp, 0x10\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ + add sp, 0x10\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ .syntax divided\n"); } #endif diff --git a/src/menu_cursor.c b/src/engine/menu_cursor.c index 64ab36573..d43be2a2f 100644 --- a/src/menu_cursor.c +++ b/src/engine/menu_cursor.c @@ -186,73 +186,67 @@ void sub_814A904(void) return; } +#if ENGLISH #ifdef NONMATCHING // Fix pls -void sub_814A958(u8 a1) +void sub_814A958(u8 a) { - struct Subsprite *cursub; - u8 v2; // r7@1 - s16 v3; // r2@1 - s32 v5; // r0@1 - s32 v6; // r3@1 - s32 v7; // r5@3 - int v8; // r7@9 - s16 negone; - - cursub = &gMenuCursorSubsprites[0]; - negone = -1; - cursub = (struct Subsprite){0,2}; - cursub->x = negone; - cursub++; - - v2 = 1; - v3 = 1; - v5 = (a1 - 1) << 0x10; - v6 = v5 >> 0x10; - if ((v5 >> 0x10) > 7) + u8 r7; + struct Subsprite *r4 = &gMenuCursorSubsprites[0]; + s16 r2 = -1; + s32 _a = a; + s16 r5; + s16 i; + + *r4 = (struct Subsprite){.x = 0, .y = 0, .shape = 2, .size = 0, .tileOffset = 0, .priority = 0}; + r4->x = r2; + r4++; + r7 = 1; + r2 = 1; + r5 = a; + i = r5; + while ((i -= r2) >= 8) { - do + if (i > 0x1F) { - if (v6 > 0x1F) + *r4 = gUnknown_0842F780; + r4->x = r2; + r2 += 32; + r5 = a; + } + //_0814A9D4 + else + { + r5 = a; + if (_a > 0x27 && i > 8) { - *cursub = gUnknown_0842F780; - cursub->x = v3; - v3 = ((v3 << 16) + 0x200000) >> 16; - v7 = a1 << 16; + *r4 = gUnknown_0842F780; + r4->x = (r2 - 32) + (i & ~7); + r2 += i & 0x18; } + //_0814AA0A else { - v7 = a1 << 16; - if (a1 <= 0x27 || v6 <= 0x8) - { - *cursub = gUnknown_0842F788; - cursub->x = v3; - v3 = ((v3 << 16) + 0x80000) >> 16; - } - else - { - *cursub = gUnknown_0842F780; - cursub->x = v3 - 0x20 + (v6 & 0xFFF8); - v3 = (v3 + (v6 & 0x18)) & negone; - } + *r4 = gUnknown_0842F788; + r4->x = r2; + r2 += 8; } - - cursub++; - v2 = v2 + 1; - v6 = ((v7 >> 16) - v3) & 0xFFFF; } - while (v7 - v3 > 7); + //_0814AA20 + r4++; + r7++; + i = r5; } - *cursub = gUnknown_0842F790; - cursub->x = v6 + v3 - 7; - v8 = v2 + 1; - if (gUnknown_0203A3D0 != 0x40) - SetSubspriteTables(&gSprites[gUnknown_0203A3D0], &gSubspriteTables_842F5C0[v8]); - if (gUnknown_0203A3D1 != 0x40) - SetSubspriteTables(&gSprites[gUnknown_0203A3D1], &gSubspriteTables_842F5C0[v8]); - return; + //_0814AA3A + *r4 = gUnknown_0842F790; + r4->x = r2 - 7 + i; + r7++; + if (gUnknown_0203A3D0 != 64) + SetSubspriteTables(&gSprites[gUnknown_0203A3D0], gSubspriteTables_842F5C0 + r7); + if (gUnknown_0203A3D1 != 64) + SetSubspriteTables(&gSprites[gUnknown_0203A3D1], gSubspriteTables_842F5C0 + r7); } -#elif ENGLISH +#else __attribute__((naked)) void sub_814A958(u8 a1) { @@ -434,6 +428,7 @@ _0814AAB4: .4byte gSubspriteTables_842F5C0\n\ _0814AAB8: .4byte gUnknown_0203A3D1\n\ .syntax divided\n"); } +#endif #elif GERMAN __attribute__((naked)) void sub_814A958(u8 a1) diff --git a/src/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 89978f635..0e48dc177 100644 --- a/src/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -94,7 +94,7 @@ static void CB2_MysteryEventMenu(void) case 1: if (gPaletteFade.active) break; - sub_8072044(gSystemText_LinkStandby); + MenuPrintMessageDefaultCoords(gSystemText_LinkStandby); gMain.state++; break; case 2: @@ -109,7 +109,7 @@ static void CB2_MysteryEventMenu(void) if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4) { PlaySE(SE_PIN); - sub_8072044(gSystemText_LoadEventPressA); + MenuPrintMessageDefaultCoords(gSystemText_LoadEventPressA); gMain.state++; } if (gMain.newKeys & B_BUTTON) @@ -128,7 +128,7 @@ static void CB2_MysteryEventMenu(void) if (GetLinkPlayerCount_2() != 2) { GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; break; } @@ -158,13 +158,13 @@ static void CB2_MysteryEventMenu(void) sub_800832C(); MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; break; } else if (CheckLanguageMatch()) { - sub_8072044(gSystemText_DontCutLink); + MenuPrintMessageDefaultCoords(gSystemText_DontCutLink); gMain.state++; break; } @@ -173,7 +173,7 @@ static void CB2_MysteryEventMenu(void) CloseLink(); MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; break; } @@ -222,7 +222,7 @@ static void CB2_MysteryEventMenu(void) sub_800832C(); MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); ptr = (u8 *)&gMain; offset1 = offsetof(struct Main, state); asm("" ::: "r1"); @@ -234,7 +234,7 @@ static void CB2_MysteryEventMenu(void) register u8 *ptr2 asm("r1"); register int offset3 asm("r0"); register int dummy asm("r2"); - sub_8072044(gSystemText_DontCutLink); + MenuPrintMessageDefaultCoords(gSystemText_DontCutLink); ptr2 = (u8 *)&gMain; offset3 = offsetof(struct Main, state); if (dummy) @@ -249,7 +249,7 @@ static void CB2_MysteryEventMenu(void) MenuZeroFillWindowRect(6, 5, 23, 8); label: GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); ptr = (u8 *)&gMain; offset2 = offsetof(struct Main, state); ptr += offset2; @@ -287,14 +287,14 @@ static void CB2_MysteryEventMenu(void) case 11: if (gReceivedRemoteLinkPlayers) break; - unkVal = sub_812613C(unk_2000000); + unkVal = RunMysteryEventScript(unk_2000000); CpuFill32(0, unk_2000000, 0x7D4); if (!GetEventLoadMessage(gStringVar4, unkVal)) TrySavingData(NORMAL_SAVE); gMain.state++; break; case 12: - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state++; break; case 13: @@ -329,7 +329,7 @@ static void CB2_MysteryEventMenu(void) CloseLink(); MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; } } diff --git a/src/engine/mystery_event_script.c b/src/engine/mystery_event_script.c new file mode 100644 index 000000000..a6568f5de --- /dev/null +++ b/src/engine/mystery_event_script.c @@ -0,0 +1,462 @@ +#include "global.h" +#include "berry.h" +#include "easy_chat.h" +#include "event_data.h" +#include "mail_data.h" +#include "mystery_event_script.h" +#include "pokedex.h" +#include "pokemon.h" +#include "pokemon_size_record.h" +#include "script.h" +#include "species.h" +#include "strings.h" +#include "string_util.h" +#include "text.h" +#include "util.h" + +#if ENGLISH +#define LANGUAGE_MASK 0x2 +#elif GERMAN +#define LANGUAGE_MASK 0x4 +#endif + +#ifdef SAPPHIRE +#define VERSION_MASK 0x100 +#else +#define VERSION_MASK 0x80 +#endif + +extern void party_compaction(void); +extern void sub_813601C(void); + +extern ScrCmdFunc gMysteryEventScriptCmdTable[]; +extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; + +extern const u8 gOtherText_BerryObtainedDadHasIt[]; +extern const u8 gOtherText_BerryTransformed[]; +extern const u8 gOtherText_BerryAlreadyObtained[]; +extern const u8 gOtherText_SpecialRibbonReceived[]; +extern const u8 gOtherText_DexUpgraded[]; +extern const u8 gOtherText_RareWordAdded[]; +extern const u8 gOtherText_PokeWasSentOver[]; +extern const u8 gOtherText_PartyIsFull[]; +extern const u8 gOtherText_NewTrainerInHoenn[]; +extern const u8 gOtherText_DataCannotUseVersion[]; + +static EWRAM_DATA struct ScriptContext sMysteryEventScriptContext = {0}; + +static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4) +{ + if (!(a1 & LANGUAGE_MASK)) + return FALSE; + + if (!(a2 & LANGUAGE_MASK)) + return FALSE; + + if (!(a3 & 0x4)) + return FALSE; + + if (!(a4 & VERSION_MASK)) + return FALSE; + + return TRUE; +} + +static void SetIncompatible(void) +{ + StringExpandPlaceholders(gStringVar4, gOtherText_DataCannotUseVersion); + SetMysteryEventScriptStatus(3); +} + +static void InitMysteryEventScript(struct ScriptContext *ctx, u8 *script) +{ + InitScriptContext(ctx, gMysteryEventScriptCmdTable, gMysteryEventScriptCmdTableEnd); + SetupBytecodeScript(ctx, script); + ctx->data[0] = (u32)script; + ctx->data[1] = 0; + ctx->data[2] = 0; + ctx->data[3] = 0; +} + +static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx) +{ + if (RunScriptCommand(ctx) && ctx->data[3]) + return TRUE; + else + return FALSE; +} + +u32 RunMysteryEventScript(u8 *script) +{ + struct ScriptContext *ctx = &sMysteryEventScriptContext; + InitMysteryEventScript(ctx, script); + while (RunMysteryEventScriptCommand(ctx)) + ; + return ctx->data[2]; +} + +void SetMysteryEventScriptStatus(u32 val) +{ + sMysteryEventScriptContext.data[2] = val; +} + +static int CalcChecksum(u8 *data, int size) +{ + unsigned int i; + int sum = 0; + + for (i = 0; i < size; i++) + sum += data[i]; + + return sum; +} + +static u32 GetWord(u8 *ptr) +{ + return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); +} + +static void SetWord(u8 *ptr, u32 val) +{ + ptr[0] = val; + ptr[1] = val >> 8; + ptr[2] = val >> 16; + ptr[3] = val >> 24; +} + +bool8 unref_sub_81261B4(u8 *a1, int a2) +{ + if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12)) + { + int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; + int v5 = GetWord(a1 + 0x1A); + int v6 = CalcChecksum((u8*)v4, v5 - a2 + (int)a1 - v4); + SetWord(a1 + 0x12, v6); + return TRUE; + } + + return FALSE; +} + +bool8 unref_sub_812620C(u8 *a1, int a2) +{ + if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12)) + { + int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; + int v5 = GetWord(a1 + 0x1A); + int v6 = CalcCRC16((u8*)v4, v5 - a2 + (int)a1 - v4); + SetWord(a1 + 0x12, v6); + return TRUE; + } + + return FALSE; +} + +static u32 CalcRecordMixingGiftChecksum(void) +{ + u32 sum = 0; + int i; + char *data = (char *)&gSaveBlock1.recordMixingGift.data; + + for (i = 0; i < sizeof(gSaveBlock1.recordMixingGift.data); i++) + { + sum += data[i]; + } + + return sum; +} + +static bool32 IsRecordMixingGiftValid(void) +{ + struct RecordMixingGiftData *data = &gSaveBlock1.recordMixingGift.data; + + u32 checksum = CalcRecordMixingGiftChecksum(); + + if (!data->unk0) + return FALSE; + + if (!data->quantity) + return FALSE; + + if (!data->itemId) + return FALSE; + + if (checksum == 0) + return FALSE; + + if (checksum == gSaveBlock1.recordMixingGift.checksum) + return TRUE; + else + return FALSE; +} + +static void ClearRecordMixingGift(void) +{ + CpuFill16(0, &gSaveBlock1.recordMixingGift, sizeof(gSaveBlock1.recordMixingGift)); +} + +static void SetRecordMixingGift(u8 unk, u8 quantity, u16 itemId) +{ + if (!unk || !quantity || !itemId) + { + ClearRecordMixingGift(); + } + else + { + gSaveBlock1.recordMixingGift.data.unk0 = unk; + gSaveBlock1.recordMixingGift.data.quantity = quantity; + gSaveBlock1.recordMixingGift.data.itemId = itemId; + gSaveBlock1.recordMixingGift.checksum = CalcRecordMixingGiftChecksum(); + } +} + +u16 GetRecordMixingGift(void) +{ + struct RecordMixingGiftData *data = &gSaveBlock1.recordMixingGift.data; + + if (!IsRecordMixingGiftValid()) + { + ClearRecordMixingGift(); + return 0; + } + else + { + u16 itemId = data->itemId; + data->quantity--; + if (data->quantity == 0) + ClearRecordMixingGift(); + else + gSaveBlock1.recordMixingGift.checksum = CalcRecordMixingGiftChecksum(); + return itemId; + } +} + +bool8 MEScrCmd_end(struct ScriptContext *ctx) +{ + StopScript(ctx); + return TRUE; +} + +bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx) +{ + u16 v1; + u32 v2; + u16 v3; + u32 v4; + + ctx->data[1] = ScriptReadWord(ctx); + v1 = ScriptReadHalfword(ctx); + v2 = ScriptReadWord(ctx); + v3 = ScriptReadHalfword(ctx); + v4 = ScriptReadWord(ctx); + + if (CheckCompatibility(v1, v2, v3, v4) == TRUE) + ctx->data[3] = 1; + else + SetIncompatible(); + + return TRUE; +} + +bool8 MEScrCmd_nop(struct ScriptContext *ctx) +{ + return FALSE; +} + +bool8 MEScrCmd_setstatus(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + ctx->data[2] = value; + return FALSE; +} + +bool8 MEScrCmd_setmsg(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + u8 *str = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (value == 255 || value == ctx->data[2]) + StringExpandPlaceholders(gStringVar4, str); + return FALSE; +} + +bool8 MEScrCmd_runscript(struct ScriptContext *ctx) +{ + u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + ScriptContext2_RunNewScript(script); + return FALSE; +} + +bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx) +{ + u8 *str; + const u8 *message; + bool32 haveBerry = IsEnigmaBerryValid(); + u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + StringCopyN(gStringVar1, gSaveBlock1.enigmaBerry.berry.name, 7); + SetEnigmaBerry(berry); + StringCopyN(gStringVar2, gSaveBlock1.enigmaBerry.berry.name, 7); + + if (!haveBerry) + { + str = gStringVar4; + message = gOtherText_BerryObtainedDadHasIt; + } + else if (StringCompare(gStringVar1, gStringVar2)) + { + str = gStringVar4; + message = gOtherText_BerryTransformed; + } + else + { + str = gStringVar4; + message = gOtherText_BerryAlreadyObtained; + } + + StringExpandPlaceholders(str, message); + + ctx->data[2] = 2; + + if (IsEnigmaBerryValid() == TRUE) + VarSet(0x402D, 1); + else + ctx->data[2] = 1; + + return FALSE; +} + +bool8 MEScrCmd_giveribbon(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + u8 ribbonId = ScriptReadByte(ctx); + GiveGiftRibbonToParty(index, ribbonId); + StringExpandPlaceholders(gStringVar4, gOtherText_SpecialRibbonReceived); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_initramscript(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 objectId = ScriptReadByte(ctx); + u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *scriptEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + InitRamScript(script, scriptEnd - script, mapGroup, mapNum, objectId); + return FALSE; +} + +bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx) +{ + EnableNationalPokedex(); + StringExpandPlaceholders(gStringVar4, gOtherText_DexUpgraded); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_addrareword(struct ScriptContext *ctx) +{ + sub_80EB890(ScriptReadByte(ctx)); + StringExpandPlaceholders(gStringVar4, gOtherText_RareWordAdded); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx) +{ + u8 unk = ScriptReadByte(ctx); + u8 quantity = ScriptReadByte(ctx); + u16 itemId = ScriptReadHalfword(ctx); + SetRecordMixingGift(unk, quantity, itemId); + return FALSE; +} + +bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) +{ + struct MailStruct mail; + struct Pokemon pokemon; + u16 species; + u16 heldItem; + u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; + void *pokemonPtr = (void *)data; + void *mailPtr = (void *)(data + sizeof(struct Pokemon)); + + pokemon = *(struct Pokemon *)pokemonPtr; + species = GetMonData(&pokemon, MON_DATA_SPECIES2); + + if (species == SPECIES_EGG) + StringCopyN(gStringVar1, gSystemText_Egg, 11); + else + StringCopyN(gStringVar1, gSystemText_Pokemon2, 11); + + if (gPlayerPartyCount == 6) + { + StringExpandPlaceholders(gStringVar4, gOtherText_PartyIsFull); + ctx->data[2] = 3; + } + else + { + memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon)); + memcpy(&mail, mailPtr, sizeof(struct MailStruct)); + + if (species != SPECIES_EGG) + { + u16 pokedexNum = SpeciesToNationalPokedexNum(species); + GetSetPokedexFlag(pokedexNum, 2); + GetSetPokedexFlag(pokedexNum, 3); + } + + heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM); + if (ItemIsMail(heldItem)) + GiveMailToMon2(&gPlayerParty[5], &mail); + party_compaction(); + CalculatePlayerPartyCount(); + StringExpandPlaceholders(gStringVar4, gOtherText_PokeWasSentOver); + ctx->data[2] = 2; + } + + return FALSE; +} + +bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx) +{ + u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; + memcpy(gSaveBlock2.filler_A8.ereaderTrainer, (void *)data, sizeof(gSaveBlock2.filler_A8.ereaderTrainer)); + sub_813601C(); + StringExpandPlaceholders(gStringVar4, gOtherText_NewTrainerInHoenn); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_enableresetrtc(struct ScriptContext *ctx) +{ + EnableResetRTC(); + StringExpandPlaceholders(gStringVar4, gSystemText_ClockAdjustmentUsable); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_checksum(struct ScriptContext *ctx) +{ + int checksum = ScriptReadWord(ctx); + u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (checksum != CalcChecksum(data, dataEnd - data)) + { + ctx->data[3] = 0; + ctx->data[2] = 1; + } + return TRUE; +} + +bool8 MEScrCmd_crc(struct ScriptContext *ctx) +{ + int crc = ScriptReadWord(ctx); + u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (crc != CalcCRC16(data, dataEnd - data)) + { + ctx->data[3] = 0; + ctx->data[2] = 1; + } + return TRUE; +} diff --git a/src/name_string_util.c b/src/engine/name_string_util.c index f1a935453..f1a935453 100644 --- a/src/name_string_util.c +++ b/src/engine/name_string_util.c diff --git a/src/naming_screen.c b/src/engine/naming_screen.c index 6c107f022..3f8417e6d 100644 --- a/src/naming_screen.c +++ b/src/engine/naming_screen.c @@ -1618,7 +1618,7 @@ static void DisplaySentToPCMessage(void) StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC); BasicInitMenuWindow(&gWindowConfig_81E6E88); MenuDisplayMessageBox(); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); } static void sub_80B753C(void) diff --git a/src/option_menu.c b/src/engine/option_menu.c index 7f8d76528..dfc49b035 100644 --- a/src/option_menu.c +++ b/src/engine/option_menu.c @@ -486,61 +486,61 @@ __attribute__((naked)) static void FrameType_DrawChoices(u8 selection) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x10\n\ - lsls r0, 24\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - adds r0, r1\n\ - lsrs r5, r0, 24\n\ - ldr r1, _0808C368 @ =gSystemText_Type\n\ - mov r0, sp\n\ - bl StringCopy\n\ - ldr r1, _0808C36C @ =gSystemText_Terminator\n\ - mov r0, sp\n\ - bl StringAppend\n\ - adds r4, r0, 0\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __udivsi3\n\ - adds r1, r0, 0\n\ - lsls r0, r1, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0\n\ - beq _0808C370\n\ - adds r0, r1, 0\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - adds r4, 0x1\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - b _0808C380\n\ - .align 2, 0\n\ + push {r4-r6,lr}\n\ + sub sp, 0x10\n\ + lsls r0, 24\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + adds r0, r1\n\ + lsrs r5, r0, 24\n\ + ldr r1, _0808C368 @ =gSystemText_Type\n\ + mov r0, sp\n\ + bl StringCopy\n\ + ldr r1, _0808C36C @ =gSystemText_Terminator\n\ + mov r0, sp\n\ + bl StringAppend\n\ + adds r4, r0, 0\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __udivsi3\n\ + adds r1, r0, 0\n\ + lsls r0, r1, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0\n\ + beq _0808C370\n\ + adds r0, r1, 0\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + adds r4, 0x1\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + b _0808C380\n\ + .align 2, 0\n\ _0808C368: .4byte gSystemText_Type\n\ _0808C36C: .4byte gSystemText_Terminator\n\ _0808C370:\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - adds r4, 0x1\n\ - strb r6, [r4]\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + adds r4, 0x1\n\ + strb r6, [r4]\n\ _0808C380:\n\ - adds r4, 0x1\n\ - movs r0, 0xFF\n\ - strb r0, [r4]\n\ - mov r0, sp\n\ - movs r1, 0xF\n\ - movs r2, 0xF\n\ - bl MenuPrint\n\ - add sp, 0x10\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ + adds r4, 0x1\n\ + movs r0, 0xFF\n\ + strb r0, [r4]\n\ + mov r0, sp\n\ + movs r1, 0xF\n\ + movs r2, 0xF\n\ + bl MenuPrint\n\ + add sp, 0x10\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } #endif diff --git a/src/palette.c b/src/engine/palette.c index 94a4f8092..17e9ca178 100644 --- a/src/palette.c +++ b/src/engine/palette.c @@ -74,7 +74,7 @@ static bool8 IsSoftwarePaletteFadeFinishing(void); void LoadCompressedPalette(const void *src, u16 offset, u16 size) { - sub_800D238(src, sPaletteDecompressionBuffer); + LZDecompressWram(src, sPaletteDecompressionBuffer); CpuCopy16(sPaletteDecompressionBuffer, gPlttBufferUnfaded + offset, size); CpuCopy16(sPaletteDecompressionBuffer, gPlttBufferFaded + offset, size); } diff --git a/src/play_time.c b/src/engine/play_time.c index 9882c9c4b..9882c9c4b 100644 --- a/src/play_time.c +++ b/src/engine/play_time.c diff --git a/src/record_mixing.c b/src/engine/record_mixing.c index 9cbcce49c..8dff432c1 100644 --- a/src/record_mixing.c +++ b/src/engine/record_mixing.c @@ -10,11 +10,11 @@ #include "items.h" #include "load_save.h" #include "link.h" -#include "mauville_old_man.h" +#include "mauville_man.h" #include "menu.h" #include "mystery_event_script.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "save.h" #include "script.h" #include "secret_base.h" @@ -29,7 +29,7 @@ extern u8 ewram[]; #define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000)) #define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000)) -extern struct RecordMixing_UnknownStruct gUnknown_02038738; +extern struct RecordMixingDayCareMail gUnknown_02038738; extern u16 gSpecialVar_0x8005; u32 gUnknown_03005D2C; @@ -40,9 +40,9 @@ static u8 gUnknown_0300071C[4]; void *recordMixingSecretBases = &gSaveBlock1.secretBases; void *recordMixingTvShows = &gSaveBlock1.tvShows; void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC; -void *gUnknown_083D0278 = &gSaveBlock1.oldMan; +void *gUnknown_083D0278 = &gSaveBlock1.mauvilleMan; void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs; -struct RecordMixing_UnknownStruct *gUnknown_083D0280 = &gUnknown_02038738; +struct RecordMixingDayCareMail *gUnknown_083D0280 = &gUnknown_02038738; void *gUnknown_083D0284 = &gSaveBlock2.filler_A8; #define BUFFER_CHUNK_SIZE 200 @@ -59,7 +59,7 @@ struct PlayerRecords u8 filler1004[0x40]; u8 filler1044[0x40]; struct EasyChatPair easyChatPairs[5]; - struct RecordMixing_UnknownStruct filler10AC; + struct RecordMixingDayCareMail filler10AC; u8 filler1124[0xA4]; u16 filler11C8[0x34]; }; @@ -74,14 +74,14 @@ void RecordMixing_PrepareExchangePacket(void) memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004)); memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044)); memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs)); - gUnknown_02038738.data[0] = gSaveBlock1.filler_303C.data[0]; - gUnknown_02038738.data[1] = gSaveBlock1.filler_303C.data[1]; - sub_8041324(gSaveBlock1.daycareData, &gUnknown_02038738); - memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixing_UnknownStruct)); + gUnknown_02038738.mail[0] = gSaveBlock1.daycareData.misc.mail[0]; + gUnknown_02038738.mail[1] = gSaveBlock1.daycareData.misc.mail[1]; + sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738); + memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail)); memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124)); if (GetMultiplayerId() == 0) - unk_2018000.filler11C8[0] = sub_8126338(); + unk_2018000.filler11C8[0] = GetRecordMixingGift(); } void RecordMixing_ReceiveExchangePacket(u32 a) @@ -461,10 +461,10 @@ u8 sub_80B9BBC(u16 *a) void sub_80B9BC4(u8 *a, size_t b, u8 c[][2], u8 d, u8 e) { - struct RecordMixing_UnknownStructSub *r6 = (struct RecordMixing_UnknownStructSub *)(a + b * c[d][0]); - struct RecordMixing_UnknownStructSub *src = r6 + c[d][1]; - struct RecordMixing_UnknownStructSub sp0 = *src; - struct RecordMixing_UnknownStructSub *r8 = (struct RecordMixing_UnknownStructSub *)(a + b * c[e][0]); + struct DayCareMail *r6 = (struct DayCareMail *)(a + b * c[d][0]); + struct DayCareMail *src = r6 + c[d][1]; + struct DayCareMail sp0 = *src; + struct DayCareMail *r8 = (struct DayCareMail *)(a + b * c[e][0]); r6 += c[d][1]; *r6 = *(r8 + c[e][1]); @@ -511,7 +511,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) u16 i; // r3 u16 r7; u8 r1; - struct RecordMixing_UnknownStruct *r6; + struct DayCareMisc *r6; //asm("":::"r8"); SeedRng(gLinkPlayers[0].trainerId); @@ -526,7 +526,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) sp3C = 0; for (i = 0; i < r8; i++) { - r6 = (struct RecordMixing_UnknownStruct *)(a + b * i); + r6 = (struct DayCareMisc *)(a + b * i); if (r6->unk70 != 0) { for (r7 = 0; r7 < r6->unk70; r7++) @@ -540,7 +540,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9D46 for (r7 = 0, i = 0; i < r8; i++) { - r6 = (struct RecordMixing_UnknownStruct *)(a + b * i); + r6 = (struct DayCareMisc *)(a + b * i); if (sp1C[i][0] == 1 || sp1C[i][1] == 1) sp3C++; if (sp1C[i][0] == 1 && sp1C[i][1] == 0) @@ -596,7 +596,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9E3E for (i = 0; i < 4; i++) { - r6 = (struct RecordMixing_UnknownStruct *)a + b * c; + r6 = (struct DayCareMisc *)a + b * c; spC[i] = r6; } r1 = sub_80B9C4C(d) % 3; @@ -630,7 +630,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9EF0 //memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38); //memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38); - r6 = (struct RecordMixing_UnknownStruct *)(a + b * c); + r6 = (struct DayCareMisc *)(a + b * c); gSaveBlock1.filler_303C.data[0] = r6->data[0]; gSaveBlock1.filler_303C.data[1] = r6->data[1]; //memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38); diff --git a/src/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index d052992ad..d052992ad 100644 --- a/src/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c diff --git a/src/rng.c b/src/engine/rng.c index 7d4b5600e..7d4b5600e 100644 --- a/src/rng.c +++ b/src/engine/rng.c diff --git a/src/rtc.c b/src/engine/rtc.c index d73f943d2..d73f943d2 100644 --- a/src/rtc.c +++ b/src/engine/rtc.c diff --git a/src/save.c b/src/engine/save.c index adf39268e..eae3f4470 100644 --- a/src/save.c +++ b/src/engine/save.c @@ -3,7 +3,7 @@ #include "gba/flash_internal.h" #include "save.h" #include "load_save.h" -#include "rom4.h" +#include "overworld.h" #include "save_failed_screen.h" #define GETVALIDSTATUSBITFIELD ((1 << ARRAY_COUNT(gSaveSectionLocations)) - 1) diff --git a/src/save_failed_screen.c b/src/engine/save_failed_screen.c index b91e8b5bf..b91e8b5bf 100644 --- a/src/save_failed_screen.c +++ b/src/engine/save_failed_screen.c diff --git a/src/save_menu_util.c b/src/engine/save_menu_util.c index a2d17bd36..a2d17bd36 100644 --- a/src/save_menu_util.c +++ b/src/engine/save_menu_util.c diff --git a/src/script.c b/src/engine/script.c index e5be913c6..8625cfdc2 100644 --- a/src/script.c +++ b/src/engine/script.c @@ -3,6 +3,14 @@ #include "event_data.h" #define RAM_SCRIPT_MAGIC 51 +#define SCRIPT_STACK_SIZE 20 + +enum +{ + SCRIPT_MODE_STOPPED, + SCRIPT_MODE_BYTECODE, + SCRIPT_MODE_NATIVE, +}; EWRAM_DATA u8 *gUnknown_0202E8AC = NULL; @@ -19,66 +27,66 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable { s32 i; - ctx->mode = 0; - ctx->scriptPtr = 0; + ctx->mode = SCRIPT_MODE_STOPPED; + ctx->scriptPtr = NULL; ctx->stackDepth = 0; - ctx->nativePtr = 0; + ctx->nativePtr = NULL; ctx->cmdTable = cmdTable; ctx->cmdTableEnd = cmdTableEnd; for (i = 0; i < 4; i++) ctx->data[i] = 0; - for (i = 0; i < 20; i++) + for (i = 0; i < SCRIPT_STACK_SIZE; i++) ctx->stack[i] = 0; } u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr) { ctx->scriptPtr = ptr; - ctx->mode = 1; + ctx->mode = SCRIPT_MODE_BYTECODE; return 1; } -void SetupNativeScript(struct ScriptContext *ctx, void *ptr) +void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void)) { - ctx->mode = 2; + ctx->mode = SCRIPT_MODE_NATIVE; ctx->nativePtr = ptr; } void StopScript(struct ScriptContext *ctx) { - ctx->mode = 0; - ctx->scriptPtr = 0; + ctx->mode = SCRIPT_MODE_STOPPED; + ctx->scriptPtr = NULL; } -u8 RunScript(struct ScriptContext *ctx) +bool8 RunScriptCommand(struct ScriptContext *ctx) { - if (ctx->mode == 0) - return 0; + if (ctx->mode == SCRIPT_MODE_STOPPED) + return FALSE; switch (ctx->mode) { - case 0: - return 0; - case 2: + case SCRIPT_MODE_STOPPED: + return FALSE; + case SCRIPT_MODE_NATIVE: if (ctx->nativePtr) { - if (ctx->nativePtr() == 1) - ctx->mode = 1; - return 1; + if (ctx->nativePtr() == TRUE) + ctx->mode = SCRIPT_MODE_BYTECODE; + return TRUE; } - ctx->mode = 1; - case 1: + ctx->mode = SCRIPT_MODE_BYTECODE; + case SCRIPT_MODE_BYTECODE: while (1) { u8 cmdCode; - ScrCmdFunc *func; + ScrCmdFunc *cmdFunc; - if (!ctx->scriptPtr) + if (ctx->scriptPtr == NULL) { - ctx->mode = 0; - return 0; + ctx->mode = SCRIPT_MODE_STOPPED; + return FALSE; } if (ctx->scriptPtr == gNullScriptPtr) @@ -89,25 +97,25 @@ u8 RunScript(struct ScriptContext *ctx) cmdCode = *(ctx->scriptPtr); ctx->scriptPtr++; - func = &ctx->cmdTable[cmdCode]; + cmdFunc = &ctx->cmdTable[cmdCode]; - if (func >= ctx->cmdTableEnd) + if (cmdFunc >= ctx->cmdTableEnd) { - ctx->mode = 0; - return 0; + ctx->mode = SCRIPT_MODE_STOPPED; + return FALSE; } - if ((*func)(ctx) == 1) - return 1; + if ((*cmdFunc)(ctx) == TRUE) + return TRUE; } } - return 1; + return TRUE; } u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) { - if (ctx->stackDepth + 1 >= 20) + if (ctx->stackDepth + 1 >= SCRIPT_STACK_SIZE) { return 1; } @@ -191,7 +199,7 @@ bool8 ScriptContext2_RunScript(void) ScriptContext2_Enable(); - if (!RunScript(&sScriptContext1)) + if (!RunScriptCommand(&sScriptContext1)) { sScriptContext1Status = 2; ScriptContext2_Disable(); @@ -224,20 +232,20 @@ void ScriptContext2_RunNewScript(const u8 *ptr) { InitScriptContext(&sScriptContext2, &gScriptCmdTable, &gScriptCmdTableEnd); SetupBytecodeScript(&sScriptContext2, ptr); - while (RunScript(&sScriptContext2) == 1) + while (RunScriptCommand(&sScriptContext2) == 1) ; } -u8 *mapheader_get_tagged_pointer(u8 tag) +static u8 *mapheader_get_tagged_pointer(u8 tag) { u8 *mapScripts = gMapHeader.mapScripts; - if (!mapScripts) + if (mapScripts == NULL) return NULL; while (1) { - if (!*mapScripts) + if (*mapScripts == 0) return NULL; if (*mapScripts == tag) { @@ -248,14 +256,14 @@ u8 *mapheader_get_tagged_pointer(u8 tag) } } -void mapheader_run_script_by_tag(u8 tag) +static void mapheader_run_script_by_tag(u8 tag) { u8 *ptr = mapheader_get_tagged_pointer(tag); if (ptr) ScriptContext2_RunNewScript(ptr); } -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) +static u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) { u8 *ptr = mapheader_get_tagged_pointer(tag); @@ -316,7 +324,7 @@ void mapheader_run_first_tag4_script_list_match(void) ScriptContext2_RunNewScript(ptr); } -u32 CalculateRamScriptChecksum(void) +static u32 CalculateRamScriptChecksum(void) { u32 i; u32 sum = 0; diff --git a/src/sound.c b/src/engine/sound.c index 8d23b7d7a..a6a61c0b5 100644 --- a/src/sound.c +++ b/src/engine/sound.c @@ -4,6 +4,7 @@ #include "battle.h" #include "m4a.h" #include "main.h" +#include "pokemon.h" #include "songs.h" #include "task.h" @@ -13,9 +14,6 @@ struct Fanfare u16 duration; }; -// FIXME: different prototype than definition -u32 SpeciesToCryId(u32); - extern u16 gBattleTypeFlags; static EWRAM_DATA struct MusicPlayerInfo *gMPlay_PokemonCry = NULL; @@ -83,8 +81,6 @@ void MapMusicMain(void) PlayBGM(sCurrentMapMusic); break; case 2: - case 3: - case 4: break; case 5: if (IsBGMStopped()) @@ -355,21 +351,9 @@ void PlayCry5(u16 species, u8 mode) RestoreBGMVolumeAfterPokemonCry(); } -#define GET_CRY_PTR(a, b)\ -{\ - struct ToneData *tone;\ - if (v0)\ - tone = &a[index];\ - else\ - tone = &b[index];\ - gMPlay_PokemonCry = SetPokemonCryTone(tone);\ - break;\ -} - static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode) { - u32 cryId; - u32 v0; + bool32 v0; u32 release; u32 length; u32 pitch; @@ -378,10 +362,7 @@ static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode u8 table; species--; - - cryId = species; - - v0 = 0; + v0 = FALSE; release = 0; length = 140; pitch = 15360; @@ -427,26 +408,28 @@ static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode SetPokemonCryChorus(chorus); SetPokemonCryPriority(priority); - asm(""); - asm(""); - asm(""); - asm(""); - asm(""); - asm(""); - asm(""); - - cryId = SpeciesToCryId(cryId); - index = 0x7F; - asm("" ::: "r0"); - index &= cryId; - table = cryId >> 7; + species = SpeciesToCryId(species); + index = species & 0x7F; + table = species >> 7; switch (table) { - case 0: GET_CRY_PTR(voicegroup_84537C0, voicegroup_8452590); - case 1: GET_CRY_PTR(voicegroup_8453DC0, voicegroup_8452B90); - case 2: GET_CRY_PTR(voicegroup_84543C0, voicegroup_8453190); - case 3: GET_CRY_PTR(voicegroup_84549C0, voicegroup_8453790); + case 0: + gMPlay_PokemonCry = SetPokemonCryTone( + v0 ? &voicegroup_84537C0[index] : &voicegroup_8452590[index]); + break; + case 1: + gMPlay_PokemonCry = SetPokemonCryTone( + v0 ? &voicegroup_8453DC0[index] : &voicegroup_8452B90[index]); + break; + case 2: + gMPlay_PokemonCry = SetPokemonCryTone( + v0 ? &voicegroup_84543C0[index] : &voicegroup_8453190[index]); + break; + case 3: + gMPlay_PokemonCry = SetPokemonCryTone( + v0 ? &voicegroup_84549C0[index] : &voicegroup_8453790[index]); + break; } } diff --git a/src/sprite.c b/src/engine/sprite.c index fb8c2b648..fb8c2b648 100644 --- a/src/sprite.c +++ b/src/engine/sprite.c diff --git a/src/string_util.c b/src/engine/string_util.c index 9686256a1..9686256a1 100644 --- a/src/string_util.c +++ b/src/engine/string_util.c diff --git a/src/task.c b/src/engine/task.c index 7bd2b5937..7bd2b5937 100644 --- a/src/task.c +++ b/src/engine/task.c diff --git a/src/text.c b/src/engine/text.c index b27084b86..87903608f 100644 --- a/src/text.c +++ b/src/engine/text.c @@ -219,12 +219,12 @@ static const u8 sBrailleGlyphs[] = INCBIN_U8("graphics/fonts/font6_braille.1bpp" static const u32 sDownArrowTiles[] = INCBIN_U32("graphics/fonts/down_arrow.4bpp"); // clang-format off -#include "data/text/type1_map.h" -#include "data/text/type3_map.h" -#include "data/text/font1_widths.h" -#include "data/text/font4_widths.h" -#include "data/text/font0_widths.h" -#include "data/text/font3_widths.h" +#include "../data/text/type1_map.h" +#include "../data/text/type3_map.h" +#include "../data/text/font1_widths.h" +#include "../data/text/font4_widths.h" +#include "../data/text/font0_widths.h" +#include "../data/text/font3_widths.h" // clang-format on const u16 gUnknownPalette_81E6692[] = INCBIN_U16("graphics/fonts/unknown_81E6692.gbapal"); @@ -1943,7 +1943,7 @@ void InitWindowFromConfig(struct Window *win, const struct WindowConfig *winConf void InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { - struct WindowConfig *winConfig = win->config; + const struct WindowConfig *winConfig = win->config; win->textMode = winConfig->textMode; win->fontNum = winConfig->fontNum; win->language = GAME_LANGUAGE; @@ -2342,7 +2342,7 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to void sub_80034D4(u8 *tileData, const u8 *text) { - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6C74, tileData, text); + sub_8004E3C(&gWindowConfig_81E6C74, tileData, text); } u8 sub_80034EC(u8 *str) @@ -3645,7 +3645,7 @@ void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow) *shadow = win->shadowColor; } -void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text) +void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text) { sTempWindow.config = winConfig; InitWindow(&sTempWindow, text, 0, 0, 0); @@ -3653,7 +3653,7 @@ void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text) sub_8002F44(&sTempWindow); } -u8 GetStringWidthGivenWindowConfig(struct WindowConfig *winConfig, const u8 *s) +u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s) { sTempWindow.config = winConfig; InitWindow(&sTempWindow, s, 0, 0, 0); diff --git a/src/text_window.c b/src/engine/text_window.c index 9a88789d1..9a88789d1 100644 --- a/src/text_window.c +++ b/src/engine/text_window.c diff --git a/src/tileset_anim.c b/src/engine/tileset_anim.c index 34685381d..34685381d 100644 --- a/src/tileset_anim.c +++ b/src/engine/tileset_anim.c diff --git a/src/time_events.c b/src/engine/time_events.c index e1b9a2e9e..accb03db8 100644 --- a/src/time_events.c +++ b/src/engine/time_events.c @@ -4,7 +4,7 @@ #include "field_weather.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "script.h" #include "task.h" @@ -81,13 +81,13 @@ void UpdateShoalTideFlag(void) 1, }; - if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0())) + if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0())) { RtcCalcLocalTime(); if (tide[gLocalTime.hours]) FlagSet(SYS_SHOAL_TIDE); else - FlagReset(SYS_SHOAL_TIDE); + FlagClear(SYS_SHOAL_TIDE); } } diff --git a/src/engine/trade.c b/src/engine/trade.c new file mode 100644 index 000000000..6e78ba3ce --- /dev/null +++ b/src/engine/trade.c @@ -0,0 +1,5715 @@ +#include "global.h" +#include "name_string_util.h" +#include "string_util.h" +#include "text.h" +#include "main.h" +#include "species.h" +#include "items.h" +#include "moves.h" +#include "easy_chat.h" +#include "link.h" +#include "strings2.h" +#include "graphics.h" +#include "palette.h" +#include "task.h" +#include "menu.h" +#include "text_window.h" +#include "pokemon_icon.h" +#include "cable_club.h" +#include "party_menu.h" +#include "songs.h" +#include "sound.h" +#include "data2.h" +#include "pokemon_summary_screen.h" +#include "overworld.h" +#include "rom_8077ABC.h" +#include "daycare.h" +#include "event_data.h" +#include "strings.h" +#include "load_save.h" +#include "save.h" +#include "script.h" +#include "field_fadetransition.h" +#include "decompress.h" +#include "mail_data.h" +#include "evolution_scene.h" +#include "pokeball.h" +#include "pokedex.h" +#include "field_effect.h" +#include "util.h" +#include "battle_interface.h" +#include "trade.h" + +#ifdef ENGLISH +#define sub_804A96C_alt sub_804A96C +asm(".set sub_804A96C_alt, sub_804A96C"); +#endif + +#define Trade_SendData(ptr) (SendBlock(bitmask_all_link_players_but_self(), ptr->linkData, 20)) + +struct InGameTrade { + /*0x00*/ u8 name[11]; + /*0x0C*/ u16 species; + /*0x0E*/ u8 ivs[6]; + /*0x14*/ bool8 secondAbility; + /*0x18*/ u32 otId; + /*0x1C*/ u8 stats[5]; + /*0x24*/ u32 personality; + /*0x28*/ u16 heldItem; + /*0x2A*/ u8 mailNum; + /*0x2B*/ u8 otName[11]; + /*0x36*/ u8 otGender; + /*0x37*/ u8 sheen; + /*0x38*/ u16 playerSpecies; +}; + +struct UnkStructC { + /*0x00*/ u16 words[9]; + /*0x10*/ u8 string[8]; + /*0x1A*/ u8 otId[4]; + /*0x1E*/ u16 species; + /*0x20*/ u16 heldItem; +}; + +struct UnkStructD { + /*0x00*/ u8 filler_00[8]; + /*0x08*/ void *vramAddr; + /*0x0c*/ u8 filler_0c[4]; + /*0x10*/ u8 unk_10; + /*0x12*/ u16 unk_12[0x400]; +}; + +struct UnkStructE { + /*0x00*/ u8 unk_00; + /*0x02*/ u16 unk_02; + /*0x04*/ u8 unk_04; +}; + +struct TradeEwramSubstruct { + /*0x0000*/ u8 unk_0000; + /*0x0001*/ u8 unk_0001; + /*0x0004*/ struct Window window; + /*0x0034*/ u8 partyIcons[2][6]; + /*0x0040*/ u8 tradeMenuCursorSpriteIdx; + /*0x0041*/ u8 tradeMenuCursorPosition; + /*0x0042*/ u8 partyCounts[2]; + /*0x0044*/ u8 tradeMenuOptionsActive[13]; + /*0x0051*/ u8 unk_0051[2][6]; + /*0x005d*/ u8 unk_005d[2][6]; + /*0x005d*/ u8 unk_0069[2][6]; + /*0x0075*/ u8 unk_0075; + /*0x0076*/ u8 filler_0076[4]; + /*0x007a*/ u8 unk_007a; + /*0x007b*/ u8 unk_007b; + /*0x007c*/ u8 unk_007c; + /*0x007d*/ u8 unk_007d; + /*0x007e*/ u16 unk_007e; + /*0x0080*/ u8 unk_0080[2]; + /*0x0082*/ u8 unk_0082[2]; + /*0x0084*/ u8 unk_0084; + /*0x0085*/ u8 unk_0085; + /*0x0086*/ u8 unk_0086; + /*0x0087*/ u8 unk_0087; + /*0x0088*/ u8 filler_0088[2]; + /*0x008a*/ u8 unk_008a; + /*0x008b*/ u8 unk_008b; + /*0x008c*/ u16 linkData[20]; + /*0x00b4*/ u8 unk_00b4; + /*0x00b5*/ u8 unk_00b5[11]; + /*0x00c0*/ u8 filler_00c0[8]; + /*0x00c8*/ struct UnkStructD unk_00c8; + /*0x08dc*/ struct UnkStructE unk_08dc[4]; + /*0x08fc*/ u8 filler_08fc[0x704]; +}; + +IWRAM_DATA u8 gUnknown_03000508[8]; + +struct UnkStructF { + u8 filler_0000[9]; + u8 unk_0009; + u8 filler_000a[0xff6]; +}; + +struct TradeEwramStruct { + /*0x00000*/ u8 filler_00000[0x7000]; + /*0x07000*/ struct TradeEwramSubstruct unk_07000; + /*0x08000*/ struct UnkStructF unk_08000; + /*0x09000*/ u8 filler_09000[0x4000]; + /*0x0d000*/ u8 tileBuffers[13][256]; + /*0x0dd00*/ u8 filler_0dd00[0x1300]; + /*0x0f000*/ struct TradeEwramSubstruct2 unk_0f000; +}; + +static void sub_8047EC0(void); +static void sub_804AFB8(const struct WindowConfig *, u8 *, const u8 *, u8); +static void sub_804ACD8(const u8 *, u8 *, u8); +static void nullsub_5(u8, u8); +static void sub_804AA88(void); +static void sub_804A964(struct UnkStructD *, void *); +static void sub_80489F4(void); +static void sub_804AA0C(u8); +static bool8 sub_8048D44(void); +static void sub_804AF84(void); +static bool8 sub_804ABF8(void); +static void sub_804ACF4(u8); +static void sub_804A41C(u8); +static void sub_8048C70(void); +static void sub_8048B0C(u8); +static void sub_804AE3C(u8); +static void sub_804AF10(void); +static void sub_80494D8(void); +static void sub_8048AB4(void); +static void sub_804A940(struct UnkStructD *); +static void sub_804B41C(void); +static void sub_8049DE0(void); +static void sub_804AB30(void); +static void sub_8049ED4(u8); +static void sub_804A6DC(u8); +static void sub_804A938(struct UnkStructD *); +static void sub_804A9F4(u8); +static void sub_804AA00(u8); +static void sub_8049E9C(u8); +static void sub_804AADC(u16, u8); +static void sub_804A80C(void); +static u8 sub_80499F0(const u8 *, u8, u8); +static void sub_804A840(u8); +#ifdef NONMATCHING +static +#endif +u8 sub_804A2B4(u8 *, u8, u8); +static void sub_804A96C_alt(struct UnkStructD *, u8, u8, const u16 *, u8, u8, u16); +static void sub_804A96C(struct UnkStructD *, u8, u8, const u16 *, u8, u8, u16); +#ifdef NONMATCHING +static +#endif +void sub_804A33C(u8 *, u8, u8); +#ifdef NONMATCHING +static +#endif +void sub_804A51C(u8, u8, u8, u8, u8, u8); +static void sub_804D7AC(struct Sprite *); +static bool8 sub_804C29C(void); +static void sub_804DC18(void); +static u8 sub_804B2B0(void); +static void sub_804E144(void); +static void sub_804E1A0(u8); +static void sub_804DAD4(struct MailStruct *, const struct InGameTrade *); +static void sub_804DC88(void); +static void sub_804D6BC(struct Sprite *); +static void sub_804D738(struct Sprite *); +static void sub_804BBE8(u8); +static void sub_804B058(struct Sprite *); +static void sub_804B07C(struct Sprite *); +static void sub_804B0BC(struct Sprite *); +static void sub_804B104(struct Sprite *); +static void sub_804D80C(struct Sprite *); +static void sub_804E1DC(void); +static void sub_804BBCC(void); +static void sub_804D8E4(void); +static void sub_804C164(void); +static void sub_804C1A8(void); +#ifdef NONMATCHING +static +#endif +void sub_804DB84(void); + +extern u8 gUnknown_020297D8[2]; +extern u8 *gUnknown_020296CC[13]; +extern struct TradeEwramSubstruct *gUnknown_03004824; +extern struct MailStruct gUnknown_02029700[16]; + +#define ewram_2010000 (*(struct TradeEwramStruct *)(ewram + 0x10000)) + + +const u32 unref_data_820ABD4[] = { + 0x00000890, + 0x00003AC0, + 0x0000001C, + 0x00000530, + 0x00000024, + 0x00000064, + 0x000004D8 +}; + +const u16 gTradeMovesBoxTilemap[] = INCBIN_U16("graphics/trade/moves_box_map.bin"); +const u16 gTradePartyBoxTilemap[] = INCBIN_U16("graphics/trade/party_box_map.bin"); +const u16 gTradeStripesBG2Tilemap[] = INCBIN_U16("graphics/trade/stripes_bg2_map.bin"); +const u16 gTradeStripesBG3Tilemap[] = INCBIN_U16("graphics/trade/stripes_bg3_map.bin"); + +const struct OamData gOamData_820BFEC = { + .shape = ST_OAM_H_RECTANGLE, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_820BFF4[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820BFFC[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C004[] = { + ANIMCMD_FRAME(16, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C00C[] = { + ANIMCMD_FRAME(24, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C014[] = { + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C01C[] = { + ANIMCMD_FRAME(40, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_820C024[] = { + gSpriteAnim_820BFF4, + gSpriteAnim_820BFFC, + gSpriteAnim_820C004, + gSpriteAnim_820C00C, + gSpriteAnim_820C014, + gSpriteAnim_820C01C +}; + +const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text1.gbapal"); +const u16 UnrefTradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text2.gbapal"); + +const struct SpriteSheet gUnknown_0820C07C[] = { + {ewram_2010000.tileBuffers[ 0], 256, 200}, + {ewram_2010000.tileBuffers[ 1], 256, 201}, + {ewram_2010000.tileBuffers[ 2], 256, 202}, + {ewram_2010000.tileBuffers[ 3], 256, 203}, + {ewram_2010000.tileBuffers[ 4], 256, 204}, + {ewram_2010000.tileBuffers[ 5], 256, 205}, + {ewram_2010000.tileBuffers[ 6], 256, 206}, + {ewram_2010000.tileBuffers[ 7], 256, 207}, + {ewram_2010000.tileBuffers[ 8], 256, 208}, + {ewram_2010000.tileBuffers[ 9], 256, 209}, + {ewram_2010000.tileBuffers[10], 256, 210}, + {ewram_2010000.tileBuffers[11], 256, 211}, + {ewram_2010000.tileBuffers[12], 256, 212}, +}; + +const struct SpritePalette gSpritePalette_TradeScreenText = { + TradeScreenTextPalette, 4925 +}; + +const struct SpriteTemplate gSpriteTemplate_820C0EC = { + 200, + 4925, + &gOamData_820BFEC, + gSpriteAnimTable_820C024, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const struct OamData gOamData_820C104 = { + .shape = ST_OAM_H_RECTANGLE, + .size = 3, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_820C10C[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C114[] = { + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_820C11C[] = { + gSpriteAnim_820C10C, + gSpriteAnim_820C114 +}; + +const struct SpriteSheet gUnknown_0820C124 = { + gUnknown_08EA1DEC, 0x800, 300 +}; + +const struct SpritePalette gUnknown_0820C12C = { + gUnknown_08EA0328, 2345 +}; + +const struct SpriteTemplate gSpriteTemplate_820C134 = { + 300, + 2345, + &gOamData_820C104, + gSpriteAnimTable_820C11C, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const u8 *const gUnknown_0820C14C[] = { + TradeText_Cancel, + TradeText_ChoosePoke, + TradeText_Summary1, + TradeText_Trade1, + TradeText_CancelTradePrompt, + TradeText_PressBToExit +}; + +// This is used to determine the next mon to select when the D-Pad is +// pressed in a given direction. +// Note that the mons are laid out like this. +// 0-5 are the player's party and 6-11 are the trading partner's party. +// 12 is the cancel button. +// 0 1 6 7 +// 2 3 8 9 +// 4 5 10 11 +// 12 + +const u8 gTradeNextSelectedMonTable[][4][6] = { + { + { 4, 2, 12, 12, 0, 0}, + { 2, 4, 12, 12, 0, 0}, + { 7, 6, 1, 0, 0, 0}, + { 1, 6, 7, 0, 0, 0} + }, { + { 5, 3, 12, 12, 0, 0}, + { 3, 5, 12, 12, 0, 0}, + { 0, 7, 6, 1, 0, 0}, + { 6, 7, 0, 1, 0, 0} + }, { + { 0, 0, 0, 0, 0, 0}, + { 4, 0, 0, 0, 0, 0}, + { 9, 8, 7, 6, 0, 0}, + { 3, 1, 0, 0, 0, 0} + }, { + { 1, 1, 1, 1, 0, 0}, + { 5, 1, 1, 1, 0, 0}, + { 2, 9, 8, 7, 0, 0}, + { 8, 9, 6, 6, 0, 0} + }, { + { 2, 2, 2, 2, 0, 0}, + { 0, 0, 0, 0, 0, 0}, + {11, 10, 9, 8, 7, 6}, + { 5, 3, 1, 0, 0, 0} + }, { + { 3, 3, 3, 3, 0, 0}, + { 1, 1, 1, 1, 0, 0}, + { 4, 4, 4, 4, 0, 0}, + {10, 8, 6, 0, 0, 0} + }, { + {10, 8, 12, 0, 0, 0}, + { 8, 10, 12, 0, 0, 0}, + { 1, 0, 0, 0, 0, 0}, + { 7, 0, 1, 0, 0, 0} + }, { + {12, 0, 0, 0, 0, 0}, + { 9, 12, 0, 0, 0, 0}, + { 6, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0} + }, { + { 6, 0, 0, 0, 0, 0}, + {10, 6, 0, 0, 0, 0}, + { 3, 2, 1, 0, 0, 0}, + { 9, 7, 0, 0, 0, 0} + }, { + { 7, 0, 0, 0, 0, 0}, + {11, 12, 0, 0, 0, 0}, + { 8, 0, 0, 0, 0, 0}, + { 2, 1, 0, 0, 0, 0} + }, { + { 8, 0, 0, 0, 0, 0}, + { 6, 0, 0, 0, 0, 0}, + { 5, 4, 3, 2, 1, 0}, + {11, 9, 7, 0, 0, 0} + }, { + { 9, 0, 0, 0, 0, 0}, + {12, 0, 0, 0, 0, 0}, + {10, 0, 0, 0, 0, 0}, + { 4, 2, 0, 0, 0, 0} + }, { + {11, 9, 7, 6, 0, 0}, + { 7, 6, 0, 0, 0, 0}, + {12, 0, 0, 0, 0, 0}, + {12, 0, 0, 0, 0, 0} + } +}; + +const u8 gTradeMonSpriteCoords[][2] = { + // Your party + {1, 5}, + {8, 5}, + {1, 10}, + {8, 10}, + {1, 15}, + {8, 15}, + + // Friend's party + {16, 5}, + {23, 5}, + {16, 10}, + {23, 10}, + {16, 15}, + {23, 15}, + + {23, 18} // CANCEL +}; + +const u8 gTradeLevelDisplayCoords[2][6][2] = { + { + // Your party + {5, 4}, + {12, 4}, + {5, 9}, + {12, 9}, + {5, 14}, + {12, 14}, + }, + { + // Friend's party + {20, 4}, + {27, 4}, + {20, 9}, + {27, 9}, + {20, 14}, + {27, 14} + } +}; + +const u8 gTradeMonBoxCoords[2][6][2] = { + { + // Your party + {1, 3}, + {8, 3}, + {1, 8}, + {8, 8}, + {1, 13}, + {8, 13}, + }, + { + // Friend's party + {16, 3}, + {23, 3}, + {16, 8}, + {23, 8}, + {16, 13}, + {23, 13} + } +}; + +const u8 gTradeUnknownSpriteCoords[][2][2] = { + { + { 59, 10}, + {179, 10}, + }, + { + { 59, 10}, + {179, 10} + } +}; + +const u8 *const gUnknown_0820C2F0[] = { + TradeText_LinkStandby, + TradeText_TradeCancelled, + TradeText_OnlyPoke, + TradeText_NonTradablePoke, + TradeText_WaitingForFriend, + TradeText_WantToTrade +}; + +const u8 gTradeMessageWindowRects[][4] = { + {8, 7, 22, 12}, + {8, 7, 22, 12}, + {6, 7, 24, 12}, + {6, 7, 24, 12}, + {8, 7, 22, 12}, + {7, 7, 23, 12} +}; + +const struct MenuAction2 gUnknown_0820C320[] = { + {TradeText_Summary2, sub_804A9F4}, + {TradeText_Trade2, sub_804AA00} +}; + +const u8 gUnknown_0820C330[][2] = { + { 0, 14}, + {15, 29} +}; + +const u8 gUnknown_0820C334[][2] = { + { 3, 5}, + { 3, 7}, + {18, 5}, + {18, 7} +}; + +const u8 gOtherText_Terminator[] = _(""); +const u8 gOtherText_MaleSymbol3[] = _("♂"); +const u8 gOtherText_FemaleSymbol3[] = _("♀"); +const u8 gOtherText_GenderlessSymbol[] = _("$"); + +u8 *const unref_data_820C344 = gTileBuffer; +const u8 unref_strings_820C348[][13] = { + _("かいめの そうしん"), + _("かいめの じゅしん"), + _("ポケモンアイコンセット"), + _("OBJテキストセット"), + _("セルセット"), + _("OBJテキストADD"), + _("システムメッセージADD"), + _("はいけいセット"), +}; + +const u8 gUnknown_0820C3B0[] = _("ヌケニン"); +const u8 unref_string_0820C3B5[] = _("こうかんせいりつ "); +const u8 unref_string_0820C3C3[] = _("だめだたらしいよ "); +const u8 gUnknown_0820C3D1[][2] = { + { 4, 3}, + {19, 3}, + { 0, 0} +}; + +const u16 gTradeBallPalette[] = INCBIN_U16("graphics/trade/ball.gbapal"); +const u32 gTradeBallTiles[] = INCBIN_U32("graphics/trade/ball.4bpp"); +const u16 gUnknown_0820C9F8[][16] = { + INCBIN_U16("graphics/trade/unknown.gbapal"), + INCBIN_U16("graphics/trade/gba.gbapal"), + INCBIN_U16("graphics/trade/shadow.gbapal"), + {}, + INCBIN_U16("graphics/trade/misc.gbapal") +}; + +const u32 gUnknown_0820CA98[] = INCBIN_U32("graphics/trade/gba.4bpp"); +const u32 gUnknown_0820CA98_2[] = INCBIN_U32("graphics/trade/shadow.4bpp"); +const u32 gUnknown_0820DD98[] = INCBIN_U32("graphics/trade/pokeball_symbol.8bpp"); +const u16 gUnknown_0820F798[] = INCBIN_U16("graphics/trade/shadow_map.bin"); +const u16 gUnknown_08210798[] = INCBIN_U16("graphics/trade/gba_map.bin"); +const u16 gUnknown_08211798[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin"); +const u16 gUnknown_08211F98[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin"); +const u16 unused_08212098[] = INCBIN_U16("graphics/unused/unknown/8212098.gbapal"); +const u16 gTradeCableEndPalette[] = INCBIN_U16("graphics/trade/cable_end.gbapal"); +const u16 unused_082120D8[] = INCBIN_U16("graphics/unused/unknown/82120D8.gbapal"); +const u16 nullpal_082120F8[16] = {}; +const u16 gTradeGlowPalette[] = INCBIN_U16("graphics/trade/glow.gbapal"); +const u32 gTradeGlow1Tiles[] = INCBIN_U32("graphics/trade/glow1.4bpp"); +const u32 gTradeGlow2Tiles[] = INCBIN_U32("graphics/trade/glow2.4bpp"); +const u32 gTradeCableEndTiles[] = INCBIN_U32("graphics/trade/cable_end.4bpp"); +const u32 gTradeGBAScreenTiles[] = INCBIN_U32("graphics/trade/gba_screen.4bpp"); +const u32 gUnknown_08213738[] = INCBIN_U32("graphics/trade/gba_affine.8bpp"); +const u16 gUnknown_08215778[] = INCBIN_U16("graphics/trade/gba_affine_map.bin"); + +const struct OamData gOamData_8215878 = { + .affineMode = 1, + .size = 1 +}; + +const union AnimCmd gSpriteAnim_8215880[] = { + ANIMCMD_FRAME( 0, 3), + ANIMCMD_FRAME( 4, 3), + ANIMCMD_FRAME( 8, 3), + ANIMCMD_FRAME(12, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(20, 3), + ANIMCMD_FRAME(24, 3), + ANIMCMD_FRAME(28, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(36, 3), + ANIMCMD_FRAME(40, 3), + ANIMCMD_FRAME(44, 3), + ANIMCMD_LOOP(1), + ANIMCMD_FRAME( 0, 3), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_82158BC[] = { + ANIMCMD_FRAME( 0, 3), + ANIMCMD_FRAME( 4, 3), + ANIMCMD_FRAME( 8, 3), + ANIMCMD_FRAME(12, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(20, 3), + ANIMCMD_FRAME(24, 3), + ANIMCMD_FRAME(28, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(36, 3), + ANIMCMD_FRAME(40, 3), + ANIMCMD_FRAME(44, 3), + ANIMCMD_LOOP(2), + ANIMCMD_FRAME( 0, 3), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_82158F8[] = { + gSpriteAnim_8215880, + gSpriteAnim_82158BC +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215900[] = { + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215910[] = { + AFFINEANIMCMD_FRAME(-8, 0, 0, 20), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215920[] = { + AFFINEANIMCMD_FRAME(0x60, 0x100, 0, 0), + AFFINEANIMCMD_FRAME( 0, 0, 0, 5), + AFFINEANIMCMD_FRAME( 8, 0, 0, 20), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_8215940[] = { + gSpriteAffineAnim_8215900, + gSpriteAffineAnim_8215910, + gSpriteAffineAnim_8215920 +}; + +const struct SpriteSheet gUnknown_0821594C = { + (const u8 *)gTradeBallTiles, 0x600, 5557 +}; + +const struct SpritePalette gUnknown_08215954 = { + gTradeBallPalette, 5558 +}; + +const struct SpriteTemplate gSpriteTemplate_821595C = { + 5557, + 5558, + &gOamData_8215878, + gSpriteAnimTable_82158F8, + NULL, + gSpriteAffineAnimTable_8215940, + sub_804D6BC +}; + +const struct OamData gOamData_8215974 = { + .affineMode = 1, + .objMode = 1, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_821597C[] = { + ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215984[] = { + gSpriteAnim_821597C +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215988[] = { + AFFINEANIMCMD_FRAME(-10, -10, 0, 5), + AFFINEANIMCMD_FRAME(10, 10, 0, 5), + AFFINEANIMCMD_JUMP(0) +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_82159A0[] = { + gSpriteAffineAnim_8215988 +}; + +const struct SpriteSheet gUnknown_082159A4 = { + (const u8 *)gTradeGlow1Tiles, 0x200, 5550 +}; + +const struct SpritePalette gUnknown_082159AC = { + gTradeGlowPalette, 5551 +}; + +const struct SpritePalette gUnknown_082159B4 = { + gTradeCableEndPalette, 5555 +}; + +const struct SpriteTemplate gSpriteTemplate_82159BC = { + 5550, + 5551, + &gOamData_8215974, + gSpriteAnimTable_8215984, + NULL, + gSpriteAffineAnimTable_82159A0, + sub_804B058 +}; + +const struct OamData gOamData_82159D4 = { + .shape = ST_OAM_V_RECTANGLE, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_82159DC[] = { + ANIMCMD_FRAME(0, 5, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_82159E4[] = { + ANIMCMD_FRAME(8, 5, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_82159EC[] = { + gSpriteAnim_82159DC, + gSpriteAnim_82159E4 +}; + +const struct SpriteSheet gUnknown_082159F4 = { + (const u8 *)gTradeGlow2Tiles, 0x300, 5552 +}; + +const struct SpriteTemplate gSpriteTemplate_82159FC = { + 5552, + 5551, + &gOamData_82159D4, + gSpriteAnimTable_82159EC, + NULL, + gDummySpriteAffineAnimTable, + sub_804B07C +}; + +const struct OamData gOamData_8215A14 = { + .shape = ST_OAM_V_RECTANGLE, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_8215A1C[] = { + ANIMCMD_FRAME(0, 10), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215A24[] = { + gSpriteAnim_8215A1C +}; + +const struct SpriteSheet gUnknown_08215A28 = { + (const u8 *)gTradeCableEndTiles, 0x100, 5554 +}; + +const struct SpriteTemplate gSpriteTemplate_8215A30 = { + 5554, + 5555, + &gOamData_8215A14, + gSpriteAnimTable_8215A24, + NULL, + gDummySpriteAffineAnimTable, + sub_804B0BC +}; + +const struct OamData gOamData_8215A48 = { + .shape = ST_OAM_H_RECTANGLE, + .size = 3, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_8215A50[] = { + ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(96, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_LOOP(8), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215A74[] = { + gSpriteAnim_8215A50 +}; + +const struct SpriteSheet gUnknown_08215A78 = { + (const u8 *)gTradeGBAScreenTiles, 0x1000, 5556 +}; + +const struct SpriteTemplate gSpriteTemplate_8215A80 = { + 5556, + 5555, + &gOamData_8215A48, + gSpriteAnimTable_8215A74, + NULL, + gDummySpriteAffineAnimTable, + sub_804B104 +}; + +const u16 gTradeGlow2PaletteAnimTable[] = { + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215AB0[] = { + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_JUMP(0) +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_8215AC0[] = { + gSpriteAffineAnim_8215AB0 +}; + +const struct InGameTrade gIngameTrades[] = { +#if ENGLISH + { + _("MAKIT"), SPECIES_MAKUHITA, + 5, 5, 4, 4, 4, 4, + TRUE, 49562, + 5, 5, 5, 5, 30, + 0x9C40, + ITEM_X_ATTACK, -1, + _("ELYSSA"), MALE, 10, + SPECIES_SLAKOTH + }, { + _("SKITIT"), SPECIES_SKITTY, + 5, 4, 4, 5, 4, 4, + FALSE, 2259, + 5, 5, 30, 5, 5, + 0x498A2E17, + ITEM_GLITTER_MAIL, 0, + _("DARRELL"), FEMALE, 10, + SPECIES_PIKACHU + }, { + _("COROSO"), + SPECIES_CORSOLA, + 4, 4, 5, 4, 4, 5, + TRUE, 50183, + 5, 30, 5, 5, 5, + 0x4C970B7F, + ITEM_TROPIC_MAIL, 1, + _("LANE"), FEMALE, 10, + SPECIES_BELLOSSOM + } +#elif GERMAN + { + _("MAKIT"), SPECIES_MAKUHITA, + 5, 5, 4, 4, 4, 4, + TRUE, 49562, + 5, 5, 5, 5, 30, + 0x9C40, + ITEM_X_ATTACK, -1, + _("MAIK"), MALE, 10, + SPECIES_SLAKOTH + }, { + _("CONEC"), SPECIES_SKITTY, + 5, 4, 4, 5, 4, 4, + FALSE, 2259, + 5, 5, 30, 5, 5, + 0x498A2E17, + ITEM_GLITTER_MAIL, 0, + _("MADINA"), FEMALE, 10, + SPECIES_PIKACHU + }, { + _("CORASO"), + SPECIES_CORSOLA, + 4, 4, 5, 4, 4, 5, + TRUE, 50183, + 5, 30, 5, 5, 5, + 0x4C970B7F, + ITEM_TROPIC_MAIL, 1, + _("LIANA"), FEMALE, 10, + SPECIES_BELLOSSOM + } +#endif +}; + +const u16 gIngameTradeMail[][10] = { +#if ENGLISH + { + EC_POKEMON(PIKACHU), + EC_WORD_THANK_YOU, + EC_WORD_EXCL, + EC_WORD_MY, + EC_POKEMON(SKITTY), + EC_WORD_EATS, + EC_WORD_A_LOT, + EC_WORD_NOW, + EC_WORD_EXCL, + 0 + }, { + EC_WORD_I, + EC_WORD_WANT, + EC_WORD_TO, + EC_WORD_SEE, + EC_WORD_A, + EC_MOVE2(PETAL_DANCE), + EC_WORD_IT_S, + EC_WORD_SO, + EC_WORD_PRETTY, + 0 + } +#elif GERMAN + { + EC_POKEMON(PIKACHU), + EC_WORD_THANK_YOU, + EC_WORD_EXCL, + EC_WORD_MY, + EC_POKEMON(SKITTY), + EC_WORD_EATS, + 0xFFFF, + EC_WORD_A_LOT, + EC_WORD_EXCL, + 0 + }, { + EC_WORD_I, + EC_WORD_WANT, + EC_WORD_OF, + EC_MOVE2(PETAL_DANCE), + EC_WORD_WORKS, + EC_WORD_THE, + EC_WORD_IS, + EC_WORD_SO, + EC_WORD_PRETTY, + 0 + } +#endif +}; + +const s8 gTradeBallVerticalVelocityTable[] = { + 0, 0, 1, 0, + 1, 0, 1, 1, + 1, 1, 2, 2, + 2, 2, 3, 3, + 3, 3, 4, 4, + 4, 4, -4, -4, + -4, -3, -3, -3, + -3, -2, -2, -2, + -2, -1, -1, -1, + -1, 0, -1, 0, + -1, 0, 0, 0, + 0, 0, 1, 0, + 1, 0, 1, 1, + 1, 1, 2, 2, + 2, 2, 3, 3, + 3, 3, 4, 4, + 4, 4, -4, -3, + -3, -2, -2, -1, + -1, -1, 0, -1, + 0, 0, 0, 0, + 0, 0, 1, 0, + 1, 1, 1, 2, + 2, 3, 3, 4, + -4, -3, -2, -1, + -1, -1, 0, 0, + 0, 0, 1, 0, + 1, 1, 2, 3 +}; + +// .text + +void sub_8047CD8(void) +{ + SetMainCallback2(sub_8047EC0); +} + +static void sub_8047CE8(void) +{ + u8 mpId; + sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[0], gSaveBlock2.playerName, 0xC); + mpId = GetMultiplayerId(); + sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[3], gLinkPlayers[mpId ^ 1].name, 0xC); + sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[6], gUnknown_0820C14C[0], 0x8); + sub_804ACD8(gUnknown_0820C14C[1], gUnknown_020296CC[8], 0x14); + nullsub_5(3, 0); +} + +static void sub_8047D58(void) +{ + struct SpriteTemplate spriteTemplate; + int i; + u8 mpId; + u16 slen; + int language; + + slen = StringLength(gSaveBlock2.playerName); + language = slen <= 5 ? 0 : 1; + for (i = 0; i < 3; i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i; + CreateSprite(&spriteTemplate, gTradeUnknownSpriteCoords[language][0][0] + 32 * i, gTradeUnknownSpriteCoords[language][0][1], 1); + } + + mpId = GetMultiplayerId(); + slen = StringLength(gLinkPlayers[mpId ^ 1].name); + language = slen <= 5 ? 0 : 1; + for (i = 0; i < 3; i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i + 3; + CreateSprite(&spriteTemplate, gTradeUnknownSpriteCoords[language][1][0] + 32 * i, gTradeUnknownSpriteCoords[language][1][1], 1); + } + nullsub_5(5, 0); +} + +static void sub_8047E44(void) +{ + struct SpriteTemplate spriteTemplate; + int i; + + for (i = 0; i < 2; i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i + 6; + CreateSprite(&spriteTemplate, 0xd6 + 32 * i, 0x98, 1); + } + + for (i = 0; i < 5; i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i + 8; + CreateSprite(&spriteTemplate, 0x18 + 32 * i, 0x96, 1); + } +} + +static void sub_8047EC0(void) +{ + int i; + + switch (gMain.state) + { + case 0: + gUnknown_03004824 = &ewram_2010000.unk_07000; + sub_804AA88(); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sub_804A964(&gUnknown_03004824->unk_00c8, (void *)BG_SCREEN_ADDR(5)); + SetVBlankCallback(sub_80489F4); + InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&gUnknown_03004824->window); + MenuZeroFillScreen(); + sub_809D51C(); + gUnknown_03004824->unk_0075 = 0; + gUnknown_03004824->unk_007b = 0; + gUnknown_03004824->unk_007c = 0; + gUnknown_03004824->unk_0080[0] = 0; + gUnknown_03004824->unk_0080[1] = 0; + gUnknown_03004824->unk_0086 = 0; + gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_00b4 = 0; + gUnknown_03000508[0] = 0; + gMain.state ++; + sub_804AA0C(0); + CpuFill16(0, ewram_2010000.tileBuffers, sizeof(ewram_2010000.tileBuffers)); + for (i = 0; i < 13; i ++) + gUnknown_020296CC[i] = ewram_2010000.tileBuffers[i]; + break; + case 1: + gLinkType = 0x1122; + OpenLink(); + for (i = 0; i < PARTY_SIZE; i ++) + CreateMon(&gEnemyParty[i], 0, 0, 0x20, FALSE, 0, FALSE, 0); + gMain.state ++; + gUnknown_03004824->unk_00b4 = 0; + CreateTask(sub_8083C50, 1); + break; + case 2: + gUnknown_03004824->unk_00b4 ++; + if (gUnknown_03004824->unk_00b4 > 11) + { + gUnknown_03004824->unk_00b4 = 0; + gMain.state ++; + } + break; + case 3: + if (GetLinkPlayerCount_2() >= sub_800820C()) + { + if (IsLinkMaster()) + { + if (++gUnknown_03004824->unk_00b4 > 30) + { + sub_8007F4C(); + gMain.state ++; + } + } + else + gMain.state ++; + } + break; + case 4: + if (gReceivedRemoteLinkPlayers == 1 && IsLinkPlayerDataExchangeComplete() == TRUE) + { + CalculatePlayerPartyCount(); + gMain.state ++; + } + break; + case 5: + if (sub_8048D44()) + { + sub_804AF84(); + gMain.state ++; + } + break; + case 6: + CalculateEnemyPartyCount(); + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, 0, 0, 29, 19); + REG_DISPCNT = 0; + gUnknown_03004824->partyCounts[0] = gPlayerPartyCount; + gUnknown_03004824->partyCounts[1] = gEnemyPartyCount; + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2), sub_809D62C, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY)); + for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++) + gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY)); + nullsub_5(2, 0); + gMain.state ++; + break; + case 7: + LoadHeldItemIconGraphics(); + CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 0); + gMain.state ++; + break; + case 8: + CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 1); + gMain.state ++; + break; + case 9: + sub_8047CE8(); + gMain.state ++; + gUnknown_03004824->unk_00b4 = 0; + break; + case 10: + nullsub_5(4, 0); + if (sub_804ABF8()) + gMain.state ++; + break; + case 11: + sub_8047D58(); + gMain.state ++; + break; + case 12: + sub_8047E44(); + gUnknown_03004824->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[0][0] * 8 + 32, gTradeMonSpriteCoords[0][1] * 8, 2); + gUnknown_03004824->tradeMenuCursorPosition = 0; + gMain.state ++; + nullsub_5(6, 0); + break; + case 13: + sub_804ACF4(0); + sub_804A41C(0); + gUnknown_03004824->unk_0000 = 0; + gUnknown_03004824->unk_0001 = 0; + sub_8048C70(); + gMain.state ++; + nullsub_5(7, 0); + PlayBGM(BGM_P_SCHOOL); + break; + case 14: + sub_804ACF4(1); + sub_804A41C(1); + gMain.state ++; + // fallthrough + case 15: + sub_8048B0C(0); + gMain.state ++; + break; + case 16: + sub_8048B0C(1); + gMain.state ++; + break; + case 17: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gMain.state ++; + break; + case 18: + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gMain.state ++; + break; + case 19: + sub_804AE3C(0); + gMain.state ++; + break; + case 20: + sub_804AE3C(1); + sub_804AF10(); + gMain.state ++; + break; + case 21: + if (!gPaletteFade.active) + { + gMain.callback1 = sub_80494D8; + SetMainCallback2(sub_8048AB4); + gUnknown_03000508[0] = 0; + } + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_80484F4(void) +{ + int i; + struct UnkStructF *unkStructF; + + switch (gMain.state) + { + case 0: + gUnknown_03004824 = &ewram_2010000.unk_07000; + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sub_804A964(&gUnknown_03004824->unk_00c8, (void *)BG_SCREEN_ADDR(5)); + SetVBlankCallback(sub_80489F4); + InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&gUnknown_03004824->window); + MenuZeroFillScreen(); + sub_809D51C(); + gUnknown_03004824->unk_0075 = 0; + gUnknown_03004824->unk_007b = 0; + gUnknown_03004824->unk_007c = 0; + gUnknown_03004824->unk_0080[0] = 0; + gUnknown_03004824->unk_0080[1] = 0; + gUnknown_03004824->unk_0086 = 0; + gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_00b4 = 0; + gUnknown_03000508[0] = 0; + gMain.state ++; + for (i = 0; i < 13; i ++) + gUnknown_020296CC[i] = ewram_2010000.tileBuffers[i]; + break; + case 1: + gMain.state ++; + gUnknown_03004824->unk_00b4 = 0; + break; + case 2: + gMain.state ++; + break; + case 3: + gMain.state ++; + break; + case 4: + CalculatePlayerPartyCount(); + gMain.state ++; + break; + case 5: + gMain.state ++; + break; + case 6: + CalculateEnemyPartyCount(); + REG_DISPCNT = 0; + gUnknown_03004824->partyCounts[0] = gPlayerPartyCount; + gUnknown_03004824->partyCounts[1] = gEnemyPartyCount; + sub_804A41C(0); + sub_804A41C(1); + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY)); + for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++) + gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY)); + nullsub_5(2, 0); + gMain.state ++; + break; + case 7: + LoadHeldItemIconGraphics(); + CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 0); + gMain.state ++; + break; + case 8: + CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 1); + gMain.state ++; + break; + case 9: + sub_8047CE8(); + gMain.state ++; + gUnknown_03004824->unk_00b4 = 0; + break; + case 10: + nullsub_5(4, 0); + if (sub_804ABF8()) + { + gMain.state ++; + } + break; + case 11: + sub_8047D58(); + gMain.state ++; + break; + case 12: + sub_8047E44(); + unkStructF = &ewram_2010000.unk_08000; + if (gUnknown_03004824->tradeMenuCursorPosition < 6) + gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009; + else + gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009 + 6; + gUnknown_03004824->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[gUnknown_03004824->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_03004824->tradeMenuCursorPosition][1] * 8, 2); + gMain.state = 15; + nullsub_5(6, 0); + break; + case 15: + sub_8048B0C(0); + gMain.state ++; + break; + case 16: + sub_8048B0C(1); + gUnknown_03004824->unk_0000 = 0; + gUnknown_03004824->unk_0001 = 0; + sub_8048C70(); + nullsub_5(7, 0); + gMain.state ++; + break; + case 17: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gMain.state ++; + break; + case 18: + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gMain.state ++; + break; + case 19: + gMain.state ++; + break; + case 20: + sub_804AF10(); + gMain.state ++; + break; + case 21: + if (!gPaletteFade.active) + { + SetMainCallback2(sub_8048AB4); + gUnknown_03000508[0] = 0; + } + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_80489F4(void) +{ + sub_804A940(&gUnknown_03004824->unk_00c8); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +/*static*/ void sub_8048A14(void) +{ + if (++gUnknown_03004824->unk_00b4 >= 16) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 10; + } +} + +/*static*/ void sub_8048A50(void) +{ + if (!gPaletteFade.active) + { + gUnknown_020297D8[0] = gUnknown_03004824->tradeMenuCursorPosition; + gUnknown_020297D8[1] = gUnknown_03004824->unk_008a; + sub_800832C(); + gUnknown_03004824->unk_007b = 13; + } +} + +/*static*/ void sub_8048A90(void) +{ + if (!gReceivedRemoteLinkPlayers) + { + gMain.callback1 = NULL; + SetMainCallback2(sub_804B41C); + } +} + +static void sub_8048AB4(void) +{ + sub_8049DE0(); + sub_804AB30(); + sub_8049ED4(0); + sub_8049ED4(1); + REG_BG2HOFS = gUnknown_03004824->unk_0000++; + REG_BG3HOFS = gUnknown_03004824->unk_0001--; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +#ifdef NONMATCHING +// Only minor register permutations +#pragma push_macro("BLOCKSIZE") +#define BLOCKSIZE 0x800 +static void sub_8048B0C(u8 a0) +{ + int i; + u16 *dest; + const u16 *src; + u32 size; + switch (a0) + { + case 0: + for (i = 0; i < 48; i ++) + { + gPlttBufferUnfaded[i] = *(gUnknown_08EA02C8 + i); + gPlttBufferFaded[i] = *(gUnknown_08EA02C8 + i); + } + src = gUnknown_08EA0348; + dest = (u16 *)BG_VRAM; + size = 0x1280; + while (1) + { + DmaCopy16(3, src, dest, BLOCKSIZE * sizeof(u16)); + src += BLOCKSIZE; + dest += BLOCKSIZE; + size -= BLOCKSIZE * sizeof(u16); + if (size <= BLOCKSIZE * sizeof(u16)) + { + DmaCopy16(3, src, dest, size); + break; + } + } + for (i = 0; i < 0x400; i ++) + gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i]; + dest = (u16 *)BG_SCREEN_ADDR(6); + DmaCopy16(3, gTradeStripesBG2Tilemap, dest, 0x800); + break; + case 1: + src = gTradeStripesBG3Tilemap; + dest = (u16 *)BG_SCREEN_ADDR(7); + DmaCopy16(3, src, dest, 0x800); + sub_804A6DC(0); + sub_804A6DC(1); + sub_804A938(&gUnknown_03004824->unk_00c8); + REG_BG0CNT &= ~0x03; // BGCNT_PRIORITY(0) + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(5); + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(6); + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(7); + REG_BG0HOFS = 0; + REG_BG1HOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1VOFS = 0; + REG_BG2VOFS = 0; + REG_BG3VOFS = 0; + break; + } +} +#pragma pop_macro("BLOCKSIZE") +#else +asm(".include \"constants/gba_constants.inc\""); +__attribute__((naked)) +static void sub_8048B0C(u8 a0) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08048B1C\n" + "\tcmp r0, 0x1\n" + "\tbeq _08048BD0\n" + "\tb _08048C3A\n" + "_08048B1C:\n" + "\tldr r5, _08048BA0 @ =gUnknown_08EA0348\n" + "\tldr r0, _08048BA4 @ =gTradeStripesBG2Tilemap\n" + "\tmov r12, r0\n" + "\tldr r1, _08048BA8 @ =gUnknown_08EA02C8\n" + "\tldr r4, _08048BAC @ =gPlttBufferFaded\n" + "\tldr r3, _08048BB0 @ =gPlttBufferUnfaded\n" + "\tmovs r2, 0x2F\n" + "_08048B2A:\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r4]\n" + "\tadds r1, 0x2\n" + "\tadds r4, 0x2\n" + "\tadds r3, 0x2\n" + "\tsubs r2, 0x1\n" + "\tcmp r2, 0\n" + "\tbge _08048B2A\n" + "\tadds r3, r5, 0\n" + "\tmovs r4, 0xC0\n" + "\tlsls r4, 19\n" + "\tmovs r5, 0x94\n" + "\tlsls r5, 5\n" + "\tldr r1, _08048BB4 @ =0x040000d4\n" + "\tldr r6, _08048BB8 @ =0x80000800\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 5\n" + "\tmovs r7, 0x80\n" + "\tlsls r7, 24\n" + "_08048B54:\n" + "\tstr r3, [r1]\n" + "\tstr r4, [r1, 0x4]\n" + "\tstr r6, [r1, 0x8]\n" + "\tldr r0, [r1, 0x8]\n" + "\tadds r3, r2\n" + "\tadds r4, r2\n" + "\tsubs r5, r2\n" + "\tcmp r5, r2\n" + "\tbhi _08048B54\n" + "\tstr r3, [r1]\n" + "\tstr r4, [r1, 0x4]\n" + "\tlsrs r0, r5, 1\n" + "\torrs r0, r7\n" + "\tstr r0, [r1, 0x8]\n" + "\tldr r0, [r1, 0x8]\n" + "\tmovs r2, 0\n" + "\tldr r5, _08048BBC @ =0x000003ff\n" + "\tldr r4, _08048BC0 @ =gUnknown_03004824\n" + "\tldr r3, _08048BC4 @ =gUnknown_08EA15C8\n" + "_08048B7A:\n" + "\tldr r0, [r4]\n" + "\tlsls r1, r2, 1\n" + "\tadds r0, 0xDA\n" + "\tadds r0, r1\n" + "\tldrh r1, [r3]\n" + "\tstrh r1, [r0]\n" + "\tadds r3, 0x2\n" + "\tadds r2, 0x1\n" + "\tcmp r2, r5\n" + "\tble _08048B7A\n" + "\tldr r1, _08048BC8 @ =0x06003000\n" + "\tldr r0, _08048BB4 @ =0x040000d4\n" + "\tmov r2, r12\n" + "\tstr r2, [r0]\n" + "\tstr r1, [r0, 0x4]\n" + "\tldr r1, _08048BCC @ =0x80000400\n" + "\tstr r1, [r0, 0x8]\n" + "\tldr r0, [r0, 0x8]\n" + "\tb _08048C3A\n" + "\t.align 2, 0\n" + "_08048BA0: .4byte gUnknown_08EA0348\n" + "_08048BA4: .4byte gTradeStripesBG2Tilemap\n" + "_08048BA8: .4byte gUnknown_08EA02C8\n" + "_08048BAC: .4byte gPlttBufferFaded\n" + "_08048BB0: .4byte gPlttBufferUnfaded\n" + "_08048BB4: .4byte 0x040000d4\n" + "_08048BB8: .4byte 0x80000800\n" + "_08048BBC: .4byte 0x000003ff\n" + "_08048BC0: .4byte gUnknown_03004824\n" + "_08048BC4: .4byte gUnknown_08EA15C8\n" + "_08048BC8: .4byte 0x06003000\n" + "_08048BCC: .4byte 0x80000400\n" + "_08048BD0:\n" + "\tldr r1, _08048C40 @ =gTradeStripesBG3Tilemap\n" + "\tldr r2, _08048C44 @ =0x06003800\n" + "\tldr r0, _08048C48 @ =0x040000d4\n" + "\tstr r1, [r0]\n" + "\tstr r2, [r0, 0x4]\n" + "\tldr r1, _08048C4C @ =0x80000400\n" + "\tstr r1, [r0, 0x8]\n" + "\tldr r0, [r0, 0x8]\n" + "\tmovs r0, 0\n" + "\tbl sub_804A6DC\n" + "\tmovs r0, 0x1\n" + "\tbl sub_804A6DC\n" + "\tldr r0, _08048C50 @ =gUnknown_03004824\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0xC8\n" + "\tbl sub_804A938\n" + "\tldr r2, _08048C54 @ =REG_BG0CNT\n" + "\tldrh r1, [r2]\n" + "\tldr r0, _08048C58 @ =0x0000fffc\n" + "\tands r0, r1\n" + "\tstrh r0, [r2]\n" + "\tldr r1, _08048C5C @ =REG_BG1CNT\n" + "\tldr r2, _08048C60 @ =0x00000501\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tadds r1, 0x2\n" + "\tldr r2, _08048C64 @ =0x00000602\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tadds r1, 0x2\n" + "\tldr r2, _08048C68 @ =0x00000703\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r0, _08048C6C @ =REG_BG0HOFS\n" + "\tmovs r1, 0\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tsubs r0, 0xA\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "_08048C3A:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08048C40: .4byte gTradeStripesBG3Tilemap\n" + "_08048C44: .4byte 0x06003800\n" + "_08048C48: .4byte 0x040000d4\n" + "_08048C4C: .4byte 0x80000400\n" + "_08048C50: .4byte gUnknown_03004824\n" + "_08048C54: .4byte REG_BG0CNT\n" + "_08048C58: .4byte 0x0000fffc\n" + "_08048C5C: .4byte REG_BG1CNT\n" + "_08048C60: .4byte 0x00000501\n" + "_08048C64: .4byte 0x00000602\n" + "_08048C68: .4byte 0x00000703\n" + "_08048C6C: .4byte REG_BG0HOFS"); +} +#endif + +static void sub_8048C70(void) +{ + int i; + for (i = 0; i < PARTY_SIZE; i ++) + { + if (i < gUnknown_03004824->partyCounts[0]) + { + gSprites[gUnknown_03004824->partyIcons[0][i]].invisible = FALSE; + gUnknown_03004824->tradeMenuOptionsActive[i] = TRUE; + } + else + { + gUnknown_03004824->tradeMenuOptionsActive[i] = FALSE; + } + if (i < gUnknown_03004824->partyCounts[1]) + { + gSprites[gUnknown_03004824->partyIcons[1][i]].invisible = FALSE; + gUnknown_03004824->tradeMenuOptionsActive[i + 6] = TRUE; + } + else + { + gUnknown_03004824->tradeMenuOptionsActive[i + 6] = FALSE; + } + } + gUnknown_03004824->tradeMenuOptionsActive[12] = TRUE; +} + +static void nullsub_5(u8 a0, u8 a1) {} + +static void sub_8048D24(u8 *dest, const u8 *src, u32 size) +{ + int i; + for (i = 0; i < size; i ++) dest[i] = src[i]; +} + +static bool8 sub_8048D44(void) +{ + u8 mpId = GetMultiplayerId(); + int i; + u16 species; + u8 nickname[11]; + struct Pokemon *pokemon; + + SetLinkDebugValues(gUnknown_03004824->unk_0075 / 100, gUnknown_03004824->unk_0075 % 100); + switch (gUnknown_03004824->unk_0075) + { + case 0: + sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[0], 2 * sizeof(struct Pokemon)); + gUnknown_03004824->unk_0075 ++; + break; + case 1: + if (sub_8007ECC()) + { + if (GetBlockReceivedStatus() == 0) + { + gUnknown_03004824->unk_0075 ++; + } + else + { + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + } + break; + case 2: + if (mpId == 0) + { + sub_8007E9C(1); + } + gUnknown_03004824->unk_0075 ++; + break; + case 3: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)&gEnemyParty[0], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon)); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 4: + sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[2], 2 * sizeof(struct Pokemon)); + gUnknown_03004824->unk_0075 ++; + break; + case 5: + if (mpId == 0) + { + sub_8007E9C(1); + } + gUnknown_03004824->unk_0075 ++; + break; + case 6: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)&gEnemyParty[2], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon)); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 7: + sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[4], 2 * sizeof(struct Pokemon)); + gUnknown_03004824->unk_0075 ++; + break; + case 8: + if (mpId == 0) + { + sub_8007E9C(1); + } + gUnknown_03004824->unk_0075 ++; + break; + case 9: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)&gEnemyParty[4], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon)); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 10: + sub_8048D24(gBlockSendBuffer, (const u8 *)&gSaveBlock1.mail[0], 6 * sizeof(struct MailStruct) + 4); + gUnknown_03004824->unk_0075 ++; + break; + case 11: + if (mpId == 0) + { + sub_8007E9C(3); + } + gUnknown_03004824->unk_0075 ++; + break; + case 12: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)&gUnknown_02029700[0], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 6 * sizeof(struct MailStruct)); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 13: + sub_8048D24(gBlockSendBuffer, (const u8 *)gSaveBlock1.giftRibbons, 11); + gUnknown_03004824->unk_0075 ++; + break; + case 14: + if (mpId == 0) + { + sub_8007E9C(4); + } + gUnknown_03004824->unk_0075 ++; + break; + case 15: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)gUnknown_03004824->unk_00b5, (const u8 *)gBlockRecvBuffer[mpId ^ 1], 11); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 16: + pokemon = gEnemyParty; + for (i = 0; i < PARTY_SIZE; i ++) + { + if ((species = GetMonData(pokemon, MON_DATA_SPECIES)) != SPECIES_NONE && species == SPECIES_SHEDINJA && GetMonData(pokemon, MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) + { + GetMonData(pokemon, MON_DATA_NICKNAME, nickname); + if (!StringCompareWithoutExtCtrlCodes(nickname, gUnknown_0820C3B0)) + SetMonData(pokemon, MON_DATA_NICKNAME, gSpeciesNames[SPECIES_SHEDINJA]); + } + pokemon ++; + } + return TRUE; + } + return FALSE; +} + +static void sub_8049088(void) +{ + u8 string[28]; + StringCopy(string, gTradeText_TradeOkayPrompt); + sub_804ACD8(string, (u8 *)BG_CHAR_ADDR(4) + gUnknown_03004824->unk_007e * 32, 20); +} + +static void sub_80490BC(u8 mpId, u8 a1) +{ + if (a1 & 1) + { + switch (gBlockRecvBuffer[mpId][0]) + { + case 0xeeaa: + gUnknown_03004824->unk_0084 = 2; + break; + case 0xaabb: + gUnknown_03004824->unk_0084 = 1; + break; + case 0xbbbb: + gUnknown_03004824->unk_0086 = 1; + break; + case 0xbbcc: + gUnknown_03004824->unk_0086 = 2; + break; + } + ResetBlockReceivedFlag(0); + } + if (a1 & 2) + { + switch (gBlockRecvBuffer[1][0]) + { + case 0xeeaa: + gUnknown_03004824->unk_0085 = 2; + break; + case 0xaabb: + gUnknown_03004824->unk_008a = gBlockRecvBuffer[1][1] + 6; + gUnknown_03004824->unk_0085 = 1; + break; + case 0xbbbb: + gUnknown_03004824->unk_0087 = 1; + break; + case 0xbbcc: + gUnknown_03004824->unk_0087 = 2; + break; + } + ResetBlockReceivedFlag(1); + } +} + +static void sub_80491E4(u8 mpId, u8 status) +{ + if (status & 1) + { + switch (gBlockRecvBuffer[0][0]) + { + case 0xeebb: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + sub_804AA0C(4); + gUnknown_03004824->unk_007b = 11; + break; + case 0xeecc: + sub_804AA0C(5); + gUnknown_03004824->unk_007b = 8; + break; + case 0xdddd: + gUnknown_03004824->unk_008a = ((u8 *)gBlockRecvBuffer[0])[1 * sizeof(u16)] + 6; + sub_8049E9C(gUnknown_03004824->tradeMenuCursorPosition); + sub_8049E9C(gUnknown_03004824->unk_008a); + gUnknown_03004824->unk_007b = 7; + break; + case 0xccdd: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 10; + break; + case 0xddee: + sub_804AA0C(1); + gUnknown_03004824->unk_007b = 8; + break; + } + ResetBlockReceivedFlag(0); + } + if (status & 2) + { + ResetBlockReceivedFlag(1); + } +} + +static void sub_80492D8(void) +{ + if (gUnknown_03004824->unk_0084 && gUnknown_03004824->unk_0085) + { + if (gUnknown_03004824->unk_0084 == 1 && gUnknown_03004824->unk_0085 == 1) + { + gUnknown_03004824->unk_007b = 6; + gUnknown_03004824->linkData[0] = 0xdddd; + gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; + } + else if (gUnknown_03004824->unk_0084 == 1 && gUnknown_03004824->unk_0085 == 2) + { + sub_804AA0C(1); + gUnknown_03004824->linkData[0] = 0xeecc; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0086 = gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; + gUnknown_03004824->unk_007b = 8; + } + else if (gUnknown_03004824->unk_0084 == 2 && gUnknown_03004824->unk_0085 == 1) + { + sub_804AA0C(5); + gUnknown_03004824->linkData[0] = 0xddee; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0086 = gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; + gUnknown_03004824->unk_007b = 8; + } + else if (gUnknown_03004824->unk_0084 == 2 && gUnknown_03004824->unk_0085 == 2) + { + gUnknown_03004824->linkData[0] = 0xeebb; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; + gUnknown_03004824->unk_007b = 11; + } + } + if (gUnknown_03004824->unk_0086 && gUnknown_03004824->unk_0087) + { + if (gUnknown_03004824->unk_0086 == 1 && gUnknown_03004824->unk_0087 == 1) + { + gUnknown_03004824->linkData[0] = 0xccdd; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0086 = 0; + gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_007b = 9; + } + if (gUnknown_03004824->unk_0086 == 2 || gUnknown_03004824->unk_0087 == 2) + { + sub_804AA0C(1); + gUnknown_03004824->linkData[0] = 0xddee; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0086 = 0; + gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_007b = 8; + } + } +} + +static void sub_80494D8(void) +{ + u8 mpId = GetMultiplayerId(); + u8 status; + if ((status = GetBlockReceivedStatus())) + { + if (mpId == 0) + sub_80490BC(mpId, status); + else + sub_80491E4(mpId, status); + ResetBlockReceivedFlags(); + } + if (mpId == 0) + sub_80492D8(); +} + +static u8 sub_8049514(u8 oldPosition, u8 direction) +{ + int i; + u8 newPosition = 0; + for (i = 0; i < PARTY_SIZE; i ++) + { + if (gUnknown_03004824->tradeMenuOptionsActive[gTradeNextSelectedMonTable[oldPosition][direction][i]] == TRUE) + { + newPosition = gTradeNextSelectedMonTable[oldPosition][direction][i]; + break; + } + } + return newPosition; +} + +static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) +{ + u8 newPosition = sub_8049514(*tradeMenuCursorPosition, direction); + if (newPosition == 12) // CANCEL + { + StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 1); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = 0xe0; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = 0xa0; + } + else + { + StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 0); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8; + } + if (*tradeMenuCursorPosition != newPosition) + { + PlaySE(SE_SELECT); + } + *tradeMenuCursorPosition = newPosition; +} + +static void sub_8049620(void) +{ + sub_804AA0C(0); + gUnknown_03004824->unk_007b = 5; + if (GetMultiplayerId() == 1) + { + gUnknown_03004824->linkData[0] = 0xaabb; + gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition; + Trade_SendData(gUnknown_03004824); + } + else + { + gUnknown_03004824->unk_0084 = 1; + } +} + +static void sub_8049680(void) +{ + int i; + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 0); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 1); + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 2); + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 3); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) + { + DrawTextWindow(&gUnknown_03004824->window, 18, 14, 28, 19); + PrintMenuItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320); + InitMenu(0, 19, 15, 2, 0, 9); + gUnknown_03004824->unk_007b = 1; + } + else if (gUnknown_03004824->tradeMenuCursorPosition < 2 * PARTY_SIZE) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 2; + } + else if (gUnknown_03004824->tradeMenuCursorPosition == 2 * PARTY_SIZE) + { + DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + InitYesNoMenu(24, 14, 4); + gUnknown_03004824->unk_007b = 4; + sub_804ACD8(gUnknown_0820C14C[4], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); + } + } + if (gMain.newKeys & R_BUTTON) + { + for (i = 0; i < 10; i ++) + { + gUnknown_03004824->linkData[i] = i; + } + Trade_SendData(gUnknown_03004824); + } +} + +static void sub_8049804(void) +{ + HandleDestroyMenuCursors(); + sub_804A80C(); + gUnknown_03004824->unk_007b = 0; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE; + sub_804ACD8(gUnknown_0820C14C[1], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); +} + +static void sub_8049860(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (GetMenuCursorPos() == 0) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 2; + } + else if (sub_80499F0(gUnknown_03004824->unk_0051[0], gUnknown_03004824->partyCounts[0], gUnknown_03004824->tradeMenuCursorPosition) == 0) + { + sub_804AADC(3, 2); + gUnknown_03004824->unk_007b = 8; + } + else + { + sub_8049620(); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = TRUE; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8049804(); + } +} + +static void sub_8049954(void) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8049804(); + } +} + +static void sub_804997C(void) +{ + if (!gPaletteFade.active) + { + if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) + { + ShowPokemonSummaryScreen(gPlayerParty, gUnknown_03004824->tradeMenuCursorPosition, gUnknown_03004824->partyCounts[0] - 1, sub_80484F4, 4); + } + else + { + ShowPokemonSummaryScreen(gEnemyParty, gUnknown_03004824->tradeMenuCursorPosition - 6, gUnknown_03004824->partyCounts[1] - 1, sub_80484F4, 4); + } + } +} + +static u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition) +{ + u8 retval = 0; + int i; + for (i = 0; i < partyCount; i ++) + { + if (tradeMenuCursorPosition != i) + { + retval += src[i]; + } + } + return retval; +} + +static void sub_8049A20(void) +{ + u8 unk_0051[12]; + int i; + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + { + unk_0051[i] = gUnknown_03004824->unk_0051[0][i]; + } + if (sub_80499F0(unk_0051, gUnknown_03004824->partyCounts[0], gUnknown_03004824->tradeMenuCursorPosition) == 0) + { + sub_804AADC(3, 2); + gUnknown_03004824->linkData[0] = 0xbbcc; + sub_804AADC(0xb4, 0); + } + else + { + sub_804AADC(3, 1); + gUnknown_03004824->linkData[0] = 0xbbbb; + if (sub_8007ECC()) + { + Trade_SendData(gUnknown_03004824); + } + } +} + +static void sub_8049AC0(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (GetMenuCursorPos() == 0) + { + sub_8049A20(); + } + else + { + sub_804AADC(3, 1); + if (sub_8007ECC()) + { + gUnknown_03004824->linkData[0] = 0xbbcc; + Trade_SendData(gUnknown_03004824); + } + } + gUnknown_03004824->unk_007b = 100; + } + else if (gMain.newKeys & B_BUTTON) + { + sub_804AADC(3, 1); + if (GetMenuCursorPos() == 0) + { + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + gUnknown_03004824->linkData[0] = 0xbbcc; + Trade_SendData(gUnknown_03004824); + gUnknown_03004824->unk_007b = 100; + } +} + +static void sub_8049BC0(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (GetMenuCursorPos() == 0) + { + sub_804AA0C(4); + gUnknown_03004824->linkData[0] = 0xeeaa; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = TRUE; + gUnknown_03004824->unk_007b = 100; + } + else + { + sub_8049804(); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8049804(); + } +} + +static void sub_8049C8C(void) +{ + if (GetMultiplayerId() == 0) + { + sub_8049E9C(gUnknown_03004824->tradeMenuCursorPosition); + sub_8049E9C(gUnknown_03004824->unk_008a); + } + gUnknown_03004824->unk_007b = 7; +} + +static void sub_8049CC4(void) +{ + if (gUnknown_03004824->unk_0080[0] == 5 && gUnknown_03004824->unk_0080[1] == 5) + { + sub_8049088(); + gUnknown_03004824->unk_007b = 14; + } +} + +static void DisplayMessageAndContinueTask(void) +{ + gUnknown_03004824->unk_00b4++; + if (gUnknown_03004824->unk_00b4 > 120) + { + DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + InitYesNoMenu(24, 14, 4); + gUnknown_03004824->unk_00b4 = 0; + gUnknown_03004824->unk_007b = 3; + } +} + +static void sub_8049D44(void) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_804A840(0); + sub_804A840(1); + gUnknown_03004824->unk_007b = 0; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE; + } +} + +static void sub_8049D9C(void) +{ + if (!gPaletteFade.active) + { + sub_800832C(); + gUnknown_03004824->unk_007b = 12; + } +} + +static void sub_8049DC4(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + SetMainCallback2(sub_805465C); + } +} + +static void sub_8049DE0(void) +{ + switch (gUnknown_03004824->unk_007b) + { + case 0: + sub_8049680(); + break; + case 1: + sub_8049860(); + break; + case 2: + sub_804997C(); + break; + case 3: + sub_8049AC0(); + break; + case 4: + sub_8049BC0(); + break; + case 6: + sub_8049C8C(); + break; + case 7: + sub_8049CC4(); + break; + case 8: + sub_8049D44(); + break; + case 9: + sub_8048A14(); + break; + case 10: + sub_8048A50(); + break; + case 11: + sub_8049D9C(); + break; + case 12: + sub_8049DC4(); + break; + case 13: + sub_8048A90(); + break; + case 14: + DisplayMessageAndContinueTask(); + break; + case 15: + sub_8049954(); + break; + } +} + +static void sub_8049E9C(u8 a0) +{ + u8 v0 = a0 / 6; + if (gUnknown_03004824->unk_0080[v0] == 0) + { + gUnknown_03004824->unk_0080[v0] = 1; + gUnknown_03004824->unk_0082[v0] = a0; + } +} + +// TODO: Figure out what the f**k is going on here +#ifdef NONMATCHING +static void sub_8049ED4(u8 a0) +{ + u8 i; + s8 stringLength; + u8 whichParty = 1; + u8 whichPokemon; + u8 string1[40]; + u8 string2[56]; + u8 temp0 = gUnknown_03004824->unk_0082[a0]; + if (temp0 < PARTY_SIZE) + whichParty = 0; + whichPokemon = temp0 % PARTY_SIZE; + + switch (gUnknown_03004824->unk_0080[a0]) + { + case 1: + for (i = 0; i < gUnknown_03004824->partyCounts[a0]; i ++) + { + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].invisible = TRUE; + } + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].invisible = FALSE; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data0 = 20; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data2 = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data4 = gTradeMonSpriteCoords[6 * whichParty + whichPokemon][1] * 8 - 12; + StoreSpriteCallbackInData6(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], sub_809D62C); + gUnknown_03004824->unk_0080[a0] ++; + sub_8078A34(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]]); + HandleDestroyMenuCursors(); + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[whichParty][0], 0, gUnknown_0820C330[whichParty][1], 19); + sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * a0, 0, gTradePartyBoxTilemap, 15, 17, 0); + if (whichParty == 0) + { + sub_804A80C(); + } + break; + case 2: + if (gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].callback == sub_809D62C) + { + gUnknown_03004824->unk_0080[a0] = 3; + } + break; + case 3: + sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * whichParty, 0, gTradePartyBoxTilemap, 15, 17, 0); + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos1.x = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos1.y = gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][1] * 8 - 12; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos2.x = 0; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos2.y = 0; + stringLength = sub_804A2B4(string1 + 6, whichParty, whichPokemon); + string1[0] = 0xFC; + string1[1] = 0x06; + string1[2] = 0x04; + string1[3] = 0xFC; + string1[4] = 0x11; + string1[5] = (64 - stringLength) / 2; + sub_8003460(&gUnknown_03004824->window, string1, gUnknown_03004824->unk_007a + whichParty * 6 * 32, gUnknown_0820C334[whichParty][0], gUnknown_0820C334[whichParty][1]); + sub_804A33C(string2, whichParty, whichPokemon); + sub_8003460(&gUnknown_03004824->window, gOtherText_Terminator2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 32, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); + sub_8003460(&gUnknown_03004824->window, string2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 38, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); + gUnknown_03004824->unk_0080[a0] ++; + break; + case 4: + sub_804ACD8(gUnknown_0820C14C[5], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); + sub_804A51C(a0, whichPokemon, gUnknown_0820C3D1[a0][0] + 4, gUnknown_0820C3D1[a0][1] + 1, gUnknown_0820C3D1[a0][0], gUnknown_0820C3D1[a0][1]); + gUnknown_03004824->unk_0080[a0] ++; + break; + } +} +#else +__attribute__((naked)) +static void sub_8049ED4(u8 a0) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x74\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r10, r0\n" + "\tldr r0, _08049F24 @ =gUnknown_03004824\n" + "\tldr r5, [r0]\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x82\n" + "\tadd r0, r10\n" + "\tldrb r0, [r0]\n" + "\tmovs r1, 0x1\n" + "\tstr r1, [sp, 0x6C]\n" + "\tcmp r0, 0x5\n" + "\tbhi _08049EFE\n" + "\tmovs r2, 0\n" + "\tstr r2, [sp, 0x6C]\n" + "_08049EFE:\n" + "\tmovs r1, 0x6\n" + "\tbl __umodsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r8, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x80\n" + "\tmov r1, r10\n" + "\tadds r3, r0, r1\n" + "\tldrb r0, [r3]\n" + "\tcmp r0, 0x2\n" + "\tbne _08049F1A\n" + "\tb _0804A0AC\n" + "_08049F1A:\n" + "\tcmp r0, 0x2\n" + "\tbgt _08049F28\n" + "\tcmp r0, 0x1\n" + "\tbeq _08049F36\n" + "\tb _0804A294\n" + "\t.align 2, 0\n" + "_08049F24: .4byte gUnknown_03004824\n" + "_08049F28:\n" + "\tcmp r0, 0x3\n" + "\tbne _08049F2E\n" + "\tb _0804A0E4\n" + "_08049F2E:\n" + "\tcmp r0, 0x4\n" + "\tbne _08049F34\n" + "\tb _0804A244\n" + "_08049F34:\n" + "\tb _0804A294\n" + "_08049F36:\n" + "\tmovs r4, 0\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x42\n" + "\tadd r0, r10\n" + "\tldr r7, _0804A094 @ =gSprites\n" + "\tldr r2, [sp, 0x6C]\n" + "\tlsls r2, 1\n" + "\tmov r9, r2\n" + "\tldr r3, _0804A098 @ =gTradeMonSpriteCoords\n" + "\tmov r12, r3\n" + "\tmov r5, r10\n" + "\tlsls r5, 4\n" + "\tstr r5, [sp, 0x70]\n" + "\tldrb r0, [r0]\n" + "\tcmp r4, r0\n" + "\tbcs _08049F8E\n" + "\tadds r6, r7, 0\n" + "\tldr r2, _0804A09C @ =gUnknown_03004824\n" + "\tldr r0, [sp, 0x6C]\n" + "\tadd r0, r9\n" + "\tlsls r3, r0, 1\n" + "\tmovs r5, 0x4\n" + "_08049F62:\n" + "\tldr r0, [r2]\n" + "\tadds r1, r4, r3\n" + "\tadds r0, 0x34\n" + "\tadds r0, r1\n" + "\tldrb r1, [r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r6\n" + "\tadds r0, 0x3E\n" + "\tldrb r1, [r0]\n" + "\torrs r1, r5\n" + "\tstrb r1, [r0]\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x42\n" + "\tadd r0, r10\n" + "\tldrb r0, [r0]\n" + "\tcmp r4, r0\n" + "\tbcc _08049F62\n" + "_08049F8E:\n" + "\tldr r1, _0804A09C @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tldr r5, [sp, 0x6C]\n" + "\tadd r5, r9\n" + "\tlsls r3, r5, 1\n" + "\tmov r2, r8\n" + "\tadds r6, r2, r3\n" + "\tadds r0, 0x34\n" + "\tadds r0, r6\n" + "\tldrb r1, [r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tadds r0, 0x3E\n" + "\tldrb r2, [r0]\n" + "\tmovs r1, 0x5\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\tstrb r1, [r0]\n" + "\tldr r0, _0804A09C @ =gUnknown_03004824\n" + "\tldr r4, [r0]\n" + "\tadds r4, 0x34\n" + "\tadds r4, r6\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tmovs r1, 0x14\n" + "\tstrh r1, [r0, 0x2E]\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tlsls r5, 2\n" + "\tmov r1, r12\n" + "\tadds r0, r5, r1\n" + "\tldrb r0, [r0]\n" + "\tadds r3, 0x1\n" + "\tlsls r3, 1\n" + "\tadd r3, r12\n" + "\tldrb r1, [r3]\n" + "\tadds r0, r1\n" + "\tasrs r0, 1\n" + "\tlsls r0, 3\n" + "\tadds r0, 0xE\n" + "\tstrh r0, [r2, 0x32]\n" + "\tldrb r0, [r4]\n" + "\tlsls r1, r0, 4\n" + "\tadds r1, r0\n" + "\tlsls r1, 2\n" + "\tadds r1, r7\n" + "\tmov r0, r12\n" + "\tadds r0, 0x1\n" + "\tadds r5, r0\n" + "\tldrb r0, [r5]\n" + "\tlsls r0, 3\n" + "\tsubs r0, 0xC\n" + "\tstrh r0, [r1, 0x36]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tldr r1, _0804A0A0 @ =sub_809D62C\n" + "\tbl StoreSpriteCallbackInData6\n" + "\tldr r2, _0804A09C @ =gUnknown_03004824\n" + "\tldr r1, [r2]\n" + "\tadds r1, 0x80\n" + "\tadd r1, r10\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x34\n" + "\tadds r0, r6\n" + "\tldrb r1, [r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tbl sub_8078A34\n" + "\tbl HandleDestroyMenuCursors\n" + "\tldr r3, _0804A09C @ =gUnknown_03004824\n" + "\tldr r0, [r3]\n" + "\tadds r0, 0x4\n" + "\tldr r1, _0804A0A4 @ =gUnknown_0820C330\n" + "\tmov r5, r9\n" + "\tadds r2, r5, r1\n" + "\tldrb r2, [r2]\n" + "\tadds r1, 0x1\n" + "\tadd r1, r9\n" + "\tldrb r1, [r1]\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0x13\n" + "\tstr r1, [sp, 0x4]\n" + "\tmovs r1, 0\n" + "\tmovs r3, 0\n" + "\tbl FillWindowRect_DefaultPalette\n" + "\tldr r1, _0804A09C @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0xC8\n" + "\tldr r2, [sp, 0x70]\n" + "\tmov r3, r10\n" + "\tsubs r1, r2, r3\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tldr r3, _0804A0A8 @ =gTradePartyBoxTilemap\n" + "\tmovs r2, 0xF\n" + "\tstr r2, [sp]\n" + "\tmovs r2, 0x11\n" + "\tstr r2, [sp, 0x4]\n" + "\tmovs r5, 0\n" + "\tstr r5, [sp, 0x8]\n" + "\tmovs r2, 0\n" + "\tbl sub_804A96C_alt\n" + "\tldr r0, [sp, 0x6C]\n" + "\tcmp r0, 0\n" + "\tbeq _0804A08C\n" + "\tb _0804A294\n" + "_0804A08C:\n" + "\tbl sub_804A80C\n" + "\tb _0804A294\n" + "\t.align 2, 0\n" + "_0804A094: .4byte gSprites\n" + "_0804A098: .4byte gTradeMonSpriteCoords\n" + "_0804A09C: .4byte gUnknown_03004824\n" + "_0804A0A0: .4byte sub_809D62C\n" + "_0804A0A4: .4byte gUnknown_0820C330\n" + "_0804A0A8: .4byte gTradePartyBoxTilemap\n" + "_0804A0AC:\n" + "\tldr r2, _0804A0DC @ =gSprites\n" + "\tldr r1, [sp, 0x6C]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r1, r5, 0\n" + "\tadds r1, 0x34\n" + "\tadds r1, r0\n" + "\tldrb r1, [r1]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r2, 0x1C\n" + "\tadds r0, r2\n" + "\tldr r1, [r0]\n" + "\tldr r0, _0804A0E0 @ =sub_809D62C\n" + "\tcmp r1, r0\n" + "\tbeq _0804A0D4\n" + "\tb _0804A294\n" + "_0804A0D4:\n" + "\tmovs r0, 0x3\n" + "\tstrb r0, [r3]\n" + "\tb _0804A294\n" + "\t.align 2, 0\n" + "_0804A0DC: .4byte gSprites\n" + "_0804A0E0: .4byte sub_809D62C\n" + "_0804A0E4:\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0xC8\n" + "\tldr r2, [sp, 0x6C]\n" + "\tlsls r1, r2, 4\n" + "\tsubs r1, r2\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tldr r3, _0804A228 @ =gTradeMovesBoxTilemap\n" + "\tmovs r2, 0xF\n" + "\tstr r2, [sp]\n" + "\tmovs r7, 0x11\n" + "\tstr r7, [sp, 0x4]\n" + "\tmovs r5, 0\n" + "\tstr r5, [sp, 0x8]\n" + "\tmovs r2, 0\n" + "\tbl sub_804A96C_alt\n" + "\tldr r0, _0804A22C @ =gUnknown_03004824\n" + "\tldr r3, [r0]\n" + "\tldr r1, [sp, 0x6C]\n" + "\tlsls r6, r1, 1\n" + "\tadds r1, r6\n" + "\tmov r9, r1\n" + "\tlsls r1, 1\n" + "\tmov r2, r8\n" + "\tadds r0, r2, r1\n" + "\tadds r3, 0x34\n" + "\tadds r3, r0\n" + "\tldrb r0, [r3]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tldr r5, _0804A230 @ =gSprites\n" + "\tadds r2, r5\n" + "\tldr r4, _0804A234 @ =gTradeMonSpriteCoords\n" + "\tmov r0, r9\n" + "\tlsls r5, r0, 2\n" + "\tadds r0, r5, r4\n" + "\tldrb r0, [r0]\n" + "\tadds r1, 0x1\n" + "\tlsls r1, 1\n" + "\tadds r1, r4\n" + "\tldrb r1, [r1]\n" + "\tadds r0, r1\n" + "\tasrs r0, 1\n" + "\tlsls r0, 3\n" + "\tadds r0, 0xE\n" + "\tstrh r0, [r2, 0x20]\n" + "\tldrb r0, [r3]\n" + "\tlsls r1, r0, 4\n" + "\tadds r1, r0\n" + "\tlsls r1, 2\n" + "\tldr r2, _0804A230 @ =gSprites\n" + "\tadds r1, r2\n" + "\tadds r4, 0x1\n" + "\tadds r5, r4\n" + "\tldrb r0, [r5]\n" + "\tlsls r0, 3\n" + "\tsubs r0, 0xC\n" + "\tstrh r0, [r1, 0x22]\n" + "\tldrb r1, [r3]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tmovs r5, 0\n" + "\tstrh r5, [r0, 0x24]\n" + "\tldrb r1, [r3]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tstrh r5, [r0, 0x26]\n" + "\tmov r0, sp\n" + "\tadds r0, 0x12\n" + "\tldr r1, [sp, 0x6C]\n" + "\tmov r2, r8\n" + "\tbl sub_804A2B4\n" + "\tadd r1, sp, 0xC\n" + "\tmovs r3, 0xFC\n" + "\tstrb r3, [r1]\n" + "\tadds r2, r1, 0\n" + "\tmovs r1, 0x6\n" + "\tstrb r1, [r2, 0x1]\n" + "\tmovs r1, 0x4\n" + "\tstrb r1, [r2, 0x2]\n" + "\tadds r1, r2, 0\n" + "\tstrb r3, [r1, 0x3]\n" + "\tstrb r7, [r1, 0x4]\n" + "\tlsls r0, 24\n" + "\tasrs r0, 24\n" + "\tmovs r1, 0x40\n" + "\tsubs r1, r0\n" + "\tlsrs r0, r1, 31\n" + "\tadds r1, r0\n" + "\tasrs r1, 1\n" + "\tstrb r1, [r2, 0x5]\n" + "\tldr r0, _0804A22C @ =gUnknown_03004824\n" + "\tldr r1, [r0]\n" + "\tadds r0, r1, 0x4\n" + "\tadds r1, 0x7A\n" + "\tldrb r2, [r1]\n" + "\tmov r1, r9\n" + "\tlsls r1, 6\n" + "\tmov r9, r1\n" + "\tadd r2, r9\n" + "\tldr r4, _0804A238 @ =gUnknown_0820C334\n" + "\tldr r3, [sp, 0x6C]\n" + "\tlsls r1, r3, 2\n" + "\tadds r3, r1, r4\n" + "\tldrb r3, [r3]\n" + "\tldr r5, _0804A23C @ =gUnknown_0820C334 + 0x1\n" + "\tadds r1, r5\n" + "\tldrb r1, [r1]\n" + "\tstr r1, [sp]\n" + "\tadd r1, sp, 0xC\n" + "\tbl sub_8003460\n" + "\tadd r7, sp, 0x34\n" + "\tadds r0, r7, 0\n" + "\tldr r1, [sp, 0x6C]\n" + "\tmov r2, r8\n" + "\tbl sub_804A33C\n" + "\tldr r0, _0804A22C @ =gUnknown_03004824\n" + "\tldr r2, [r0]\n" + "\tadds r0, r2, 0x4\n" + "\tldr r1, _0804A240 @ =gOtherText_Terminator2\n" + "\tadds r2, 0x7A\n" + "\tldrb r2, [r2]\n" + "\tadd r2, r9\n" + "\tadds r2, 0x20\n" + "\tadds r6, 0x1\n" + "\tlsls r6, 1\n" + "\tadds r4, r6, r4\n" + "\tldrb r5, [r4]\n" + "\tldr r3, _0804A23C @ =gUnknown_0820C334 + 0x1\n" + "\tadds r6, r3\n" + "\tldrb r4, [r6]\n" + "\tadds r4, 0x1\n" + "\tlsls r4, 24\n" + "\tlsrs r4, 24\n" + "\tstr r4, [sp]\n" + "\tadds r3, r5, 0\n" + "\tbl sub_8003460\n" + "\tldr r0, _0804A22C @ =gUnknown_03004824\n" + "\tldr r1, [r0]\n" + "\tadds r0, r1, 0x4\n" + "\tadds r1, 0x7A\n" + "\tldrb r2, [r1]\n" + "\tadd r2, r9\n" + "\tadds r2, 0x26\n" + "\tstr r4, [sp]\n" + "\tadds r1, r7, 0\n" + "\tadds r3, r5, 0\n" + "\tbl sub_8003460\n" + "\tldr r2, _0804A22C @ =gUnknown_03004824\n" + "\tldr r1, [r2]\n" + "\tb _0804A28A\n" + "\t.align 2, 0\n" + "_0804A228: .4byte gTradeMovesBoxTilemap\n" + "_0804A22C: .4byte gUnknown_03004824\n" + "_0804A230: .4byte gSprites\n" + "_0804A234: .4byte gTradeMonSpriteCoords\n" + "_0804A238: .4byte gUnknown_0820C334\n" + "_0804A23C: .4byte gUnknown_0820C334 + 0x1\n" + "_0804A240: .4byte gOtherText_Terminator2\n" + "_0804A244:\n" + "\tldr r0, _0804A2A4 @ =gUnknown_0820C14C\n" + "\tldr r0, [r0, 0x14]\n" + "\tadds r1, r5, 0\n" + "\tadds r1, 0x7E\n" + "\tldrh r1, [r1]\n" + "\tlsls r1, 5\n" + "\tldr r3, _0804A2A8 @ =0x06010000\n" + "\tadds r1, r3\n" + "\tmovs r2, 0x14\n" + "\tbl sub_804ACD8\n" + "\tldr r0, _0804A2AC @ =gUnknown_0820C3D1\n" + "\tmov r5, r10\n" + "\tlsls r1, r5, 1\n" + "\tadds r4, r1, r0\n" + "\tldrb r2, [r4]\n" + "\tadds r2, 0x4\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tadds r0, 0x1\n" + "\tadds r1, r0\n" + "\tldrb r3, [r1]\n" + "\tadds r3, 0x1\n" + "\tlsls r3, 24\n" + "\tlsrs r3, 24\n" + "\tldrb r0, [r4]\n" + "\tstr r0, [sp]\n" + "\tldrb r0, [r1]\n" + "\tstr r0, [sp, 0x4]\n" + "\tmov r0, r10\n" + "\tmov r1, r8\n" + "\tbl sub_804A51C\n" + "\tldr r0, _0804A2B0 @ =gUnknown_03004824\n" + "\tldr r1, [r0]\n" + "_0804A28A:\n" + "\tadds r1, 0x80\n" + "\tadd r1, r10\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "_0804A294:\n" + "\tadd sp, 0x74\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804A2A4: .4byte gUnknown_0820C14C\n" + "_0804A2A8: .4byte 0x06010000\n" + "_0804A2AC: .4byte gUnknown_0820C3D1\n" + "_0804A2B0: .4byte gUnknown_03004824"); +} +#endif + +#ifdef NONMATCHING +static +#endif +u8 sub_804A2B4(u8 *a0, u8 whichParty, u8 whichPokemon) +{ + u8 string[11]; + if (whichParty == 0) + { + GetMonData(&gPlayerParty[whichPokemon], MON_DATA_NICKNAME, string); + StringCopy10(a0, string); + GetMonGender(&gPlayerParty[whichPokemon]); + GetMonData(&gPlayerParty[whichPokemon], MON_DATA_LEVEL); + } + else + { + GetMonData(&gEnemyParty[whichPokemon], MON_DATA_NICKNAME, string); + StringCopy10(a0, string); + GetMonGender(&gEnemyParty[whichPokemon]); + GetMonData(&gEnemyParty[whichPokemon], MON_DATA_LEVEL); + } + return GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, a0); +} + +#ifdef NONMATCHING +static +#endif +void sub_804A33C(u8 *a0, u8 whichParty, u8 whichPokemon) +{ + u16 i; + u16 moves[4]; + if (gUnknown_03004824->unk_005d[whichParty][whichPokemon] == 0) + { + for (i = 0; i < 4; i ++) + { + if (whichParty == 0) + moves[i] = GetMonData(&gPlayerParty[whichPokemon], MON_DATA_MOVE1 + i, NULL); + else + moves[i] = GetMonData(&gEnemyParty[whichPokemon], MON_DATA_MOVE1 + i, NULL); + } + StringCopy(a0, gOtherText_Terminator); + for (i = 0; i < 4; i ++) + { + if (moves[i] != 0) + { + StringAppend(a0, gMoveNames[moves[i]]); + } + StringAppend(a0, gOtherText_ControlAndMiscText); + } + } + else + { + StringCopy(a0, gOtherText_Terminator); + StringAppend(a0, gOtherText_FourQuestions); + } +} + +#ifdef NONMATCHING +static void sub_804A41C(u8 whichParty) +{ + u8 i; + u8 nickname[22]; + u8 string[40]; + struct Pokemon *pokemon; + + string[0] = 0xFC; + string[1] = 0x06; + string[2] = 0x04; + string[3] = 0xFC; + string[4] = 0x11; + string[5] = 0x00; + + for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++) + { + pokemon = whichParty == 0 ? &gPlayerParty[i] : &gEnemyParty[i]; + GetMonData(pokemon, MON_DATA_NICKNAME, nickname); + StringCopy10(string + 6, nickname); + GetMonGender(pokemon); + string[5] = (50 - GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, string + 6)) / 2; + sub_8003460(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]); + } +} +#else +__attribute__((naked)) +static void sub_804A41C(u8 whichParty) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x44\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tadd r3, sp, 0x1C\n" + "\tmovs r2, 0\n" + "\tmovs r1, 0xFC\n" + "\tstrb r1, [r3]\n" + "\tmovs r0, 0x6\n" + "\tstrb r0, [r3, 0x1]\n" + "\tmovs r0, 0x4\n" + "\tstrb r0, [r3, 0x2]\n" + "\tstrb r1, [r3, 0x3]\n" + "\tmovs r0, 0x11\n" + "\tstrb r0, [r3, 0x4]\n" + "\tstrb r2, [r3, 0x5]\n" + "\tmovs r6, 0\n" + "\tldr r1, _0804A470 @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x42\n" + "\tadds r0, r5\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbcs _0804A504\n" + "\tmov r8, r3\n" + "\tadds r7, r1, 0\n" + "\tldr r0, _0804A474 @ =gTradeMonSpriteCoords\n" + "\tmov r9, r0\n" + "\tmovs r4, 0x1\n" + "\tadd r4, r9\n" + "\tmov r10, r4\n" + "_0804A462:\n" + "\tcmp r5, 0\n" + "\tbne _0804A47C\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, _0804A478 @ =gPlayerParty\n" + "\tb _0804A484\n" + "\t.align 2, 0\n" + "_0804A470: .4byte gUnknown_03004824\n" + "_0804A474: .4byte gTradeMonSpriteCoords\n" + "_0804A478: .4byte gPlayerParty\n" + "_0804A47C:\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, _0804A514 @ =gEnemyParty\n" + "_0804A484:\n" + "\tadds r4, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x2\n" + "\tadd r2, sp, 0x4\n" + "\tbl GetMonData\n" + "\tmov r0, sp\n" + "\tadds r0, 0x22\n" + "\tadd r1, sp, 0x4\n" + "\tbl StringCopy10\n" + "\tadds r0, r4, 0\n" + "\tbl GetMonGender\n" + "\tmov r1, sp\n" + "\tadds r1, 0x22\n" + "\tldr r0, _0804A518 @ =gWindowConfig_81E7294\n" + "\tbl GetStringWidthGivenWindowConfig\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmovs r1, 0x32\n" + "\tsubs r1, r0\n" + "\tlsrs r0, r1, 31\n" + "\tadds r1, r0\n" + "\tasrs r1, 1\n" + "\tmov r0, r8\n" + "\tstrb r1, [r0, 0x5]\n" + "\tldr r1, [r7]\n" + "\tadds r0, r1, 0x4\n" + "\tadds r1, 0x7A\n" + "\tlsls r2, r5, 5\n" + "\tadds r2, r5\n" + "\tlsls r2, 2\n" + "\tldrb r1, [r1]\n" + "\tadds r2, r1\n" + "\tmovs r1, 0x16\n" + "\tmuls r1, r6\n" + "\tadds r2, r1\n" + "\tlsls r2, 16\n" + "\tlsrs r2, 16\n" + "\tlsls r1, r5, 1\n" + "\tadds r1, r5\n" + "\tlsls r1, 1\n" + "\tadds r1, r6, r1\n" + "\tlsls r1, 1\n" + "\tmov r4, r9\n" + "\tadds r3, r1, r4\n" + "\tldrb r3, [r3]\n" + "\tadd r1, r10\n" + "\tldrb r1, [r1]\n" + "\tstr r1, [sp]\n" + "\tmov r1, r8\n" + "\tbl sub_8003460\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r0, [r7]\n" + "\tadds r0, 0x42\n" + "\tadds r0, r5\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbcc _0804A462\n" + "_0804A504:\n" + "\tadd sp, 0x44\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804A514: .4byte gEnemyParty\n" + "_0804A518: .4byte gWindowConfig_81E7294"); +} +#endif + +#ifdef NONMATCHING +static +#endif +void sub_804A51C(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) +{ + u8 nickname[24]; + u8 level; + u8 gender; + u8 lv_div_10; + sub_804A96C(&gUnknown_03004824->unk_00c8, a4, a5, gTradeMonBoxTilemap, 6, 3, 0); + if (a0 == 0) + { + level = GetMonData(&gPlayerParty[a1], MON_DATA_LEVEL, NULL); + gender = GetMonGender(&gPlayerParty[a1]); + GetMonData(&gPlayerParty[a1], MON_DATA_NICKNAME, nickname); + } + else + { + level = GetMonData(&gEnemyParty[a1], MON_DATA_LEVEL, NULL); + gender = GetMonGender(&gEnemyParty[a1]); + GetMonData(&gEnemyParty[a1], MON_DATA_NICKNAME, nickname); + } + if (gUnknown_03004824->unk_005d[a0][a1] == 0) + { + lv_div_10 = level / 10; + if (lv_div_10 != 0) + { + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3] = lv_div_10 + 0x60; + } + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 + 1] = (u8)(level % 10) + 0x70; + if (gender == MON_MALE) + { + if (!NameHasGenderSymbol(nickname, MON_MALE)) + { + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] += 1; + } + } + else if (gender == MON_FEMALE) + { + if (!NameHasGenderSymbol(nickname, MON_FEMALE)) + { + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] += 2; + } + } + } + else + { + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 32] = gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 33]; + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] = gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 36] | 0x400; + } +#ifdef GERMAN + gUnknown_03004824->unk_00c8.unk_10 = 1; +#endif +} + +#ifdef NONMATCHING +static void sub_804A6DC(u8 whichParty) +{ + int i; + for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++) + { + sub_804A51C(whichParty, i, gTradeLevelDisplayCoords[whichParty][i][0], gTradeLevelDisplayCoords[whichParty][i][1], gTradeMonBoxCoords[whichParty][i][0], gTradeMonBoxCoords[whichParty][i][1]); + } +} +#else +__attribute__((naked)) +static void sub_804A6DC(u8 whichParty) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tsub sp, 0x8\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tmovs r7, 0\n" + "\tldr r0, _0804A734 @ =gUnknown_03004824\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x42\n" + "\tadds r0, r6\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tbge _0804A72C\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r6\n" + "\tldr r1, _0804A738 @ =gTradeLevelDisplayCoords\n" + "\tlsls r0, 2\n" + "\tadds r5, r0, r1\n" + "\tldr r1, _0804A73C @ =gTradeMonBoxCoords\n" + "\tadds r4, r0, r1\n" + "_0804A702:\n" + "\tlsls r1, r7, 24\n" + "\tlsrs r1, 24\n" + "\tldrb r2, [r5]\n" + "\tldrb r3, [r5, 0x1]\n" + "\tldrb r0, [r4]\n" + "\tstr r0, [sp]\n" + "\tldrb r0, [r4, 0x1]\n" + "\tstr r0, [sp, 0x4]\n" + "\tadds r0, r6, 0\n" + "\tbl sub_804A51C\n" + "\tadds r5, 0x2\n" + "\tadds r4, 0x2\n" + "\tadds r7, 0x1\n" + "\tldr r0, _0804A734 @ =gUnknown_03004824\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x42\n" + "\tadds r0, r6\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804A702\n" + "_0804A72C:\n" + "\tadd sp, 0x8\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804A734: .4byte gUnknown_03004824\n" + "_0804A738: .4byte gTradeLevelDisplayCoords\n" + "_0804A73C: .4byte gTradeMonBoxCoords"); +} +#endif + +static void sub_804A740(u8 whichParty) +{ + int i; + for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++) + { + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].invisible = FALSE; + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos1.x = gTradeMonSpriteCoords[6 * whichParty + i][0] * 8 + 14; + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos1.y = gTradeMonSpriteCoords[6 * whichParty + i][1] * 8 - 12; + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos2.x = 0; + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos2.y = 0; + } +} + +static void sub_804A80C(void) +{ + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); + sub_804A41C(1); +} + +static void sub_804A840(u8 whichParty) +{ + if (whichParty == 0) + { + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[0][0], 0, gUnknown_0820C330[0][1], 19); + sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 0, 0, gTradePartyBoxTilemap, 15, 17, 0); + sub_804A6DC(0); + sub_804A41C(0); + sub_804A740(0); + sub_804A938(&gUnknown_03004824->unk_00c8); + } + else + { + HandleDestroyMenuCursors(); + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); + sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15, 0, gTradePartyBoxTilemap, 15, 17, 0); + sub_804A6DC(1); + sub_804A41C(1); + sub_804A740(1); + sub_804A938(&gUnknown_03004824->unk_00c8); + } + sub_804ACD8(gUnknown_0820C14C[1], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); + gUnknown_03004824->unk_0080[whichParty] = 0; +} + +static void sub_804A938(struct UnkStructD *unkStructD) +{ + unkStructD->unk_10 = 1; +} + +static void sub_804A940(struct UnkStructD *unkStructD) +{ + if (unkStructD->unk_10) + { + CpuCopy16(unkStructD->unk_12, unkStructD->vramAddr, sizeof(unkStructD->unk_12)); + unkStructD->unk_10 = 0; + } +} + +static void sub_804A964(struct UnkStructD *unkStructD, void *dest) +{ + unkStructD->unk_10 = 0; + unkStructD->vramAddr = dest; +} + +static void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, const u16 *tilemap, u8 width, u8 height, u16 sp8) { + int y, x; + + for (y = 0; y < height; y++) + { + + for (x = 0; x < width; x++) + { + arg0->unk_12[(top * 32 + left) + y * 32 + x] = tilemap[width * y + x] | sp8; + } + } + +#if ENGLISH + arg0->unk_10 = 1; +#endif +} + +#if GERMAN +static void sub_804A96C_alt(struct UnkStructD *arg0, u8 left, u8 top, const u16 *tilemap, u8 width, u8 height, u16 sp8) { + sub_804A96C(arg0, left, top, tilemap, width, height, sp8); + + arg0->unk_10 = 1; +} +#endif + +static void sub_804A9F4(u8 unused) +{ + MenuZeroFillScreen(); +} + +static void sub_804AA00(u8 unused) +{ + MenuZeroFillScreen(); +} + +static void sub_804AA0C(u8 a0) +{ + DrawTextWindow(&gUnknown_03004824->window, gTradeMessageWindowRects[a0][0], gTradeMessageWindowRects[a0][1], gTradeMessageWindowRects[a0][2], gTradeMessageWindowRects[a0][3]); + sub_8003460(&gUnknown_03004824->window, gUnknown_0820C2F0[a0], 0x180 + gUnknown_03004824->unk_007a, gTradeMessageWindowRects[a0][0] + 1, gTradeMessageWindowRects[a0][1] + 1); +} + +static void sub_804AA88(void) +{ + int i; + for (i = 0; i < 4; i ++) + { + gUnknown_03004824->unk_08dc[i].unk_00 = 0; + gUnknown_03004824->unk_08dc[i].unk_02 = 0; + gUnknown_03004824->unk_08dc[i].unk_04 |= 0xff; + } +} + +static void sub_804AADC(u16 a0, u8 a1) +{ + int i; + for (i = 0; i < 4; i ++) + { + if (gUnknown_03004824->unk_08dc[i].unk_00 == 0) + { + gUnknown_03004824->unk_08dc[i].unk_02 = a0; + gUnknown_03004824->unk_08dc[i].unk_04 = a1; + gUnknown_03004824->unk_08dc[i].unk_00 = 1; + break; + } + } +} + +static void sub_804AB30(void) +{ + int i; + for (i = 0; i < 4; i ++) + { + if (gUnknown_03004824->unk_08dc[i].unk_00) + { + if (gUnknown_03004824->unk_08dc[i].unk_02 != 0) + { + gUnknown_03004824->unk_08dc[i].unk_02 --; + continue; + } + switch (gUnknown_03004824->unk_08dc[i].unk_04) + { + case 0: + Trade_SendData(gUnknown_03004824); + break; + case 1: + sub_804AA0C(0); + break; + case 2: + sub_804AA0C(2); + break; + case 3: + sub_804AA0C(3); + break; + case 4: + sub_804AA0C(3); + break; + case 5: + sub_804AA0C(3); + break; + } + gUnknown_03004824->unk_08dc[i].unk_00 = 0; + } + } +} + +static bool8 sub_804ABF8(void) +{ + switch (gUnknown_03004824->unk_00b4) + { + case 8: + gUnknown_03004824->unk_007e = LoadSpriteSheet(&gUnknown_0820C07C[gUnknown_03004824->unk_00b4]); + gUnknown_03004824->unk_00b4 ++; + return FALSE; + case 13: + LoadSpritePalette(&gSpritePalette_TradeScreenText); + gUnknown_03004824->unk_00b4 ++; + return FALSE; + case 14: + LoadSpritePalette(&gUnknown_0820C12C); + gUnknown_03004824->unk_00b4 ++; + return FALSE; + case 15: + LoadSpriteSheet(&gUnknown_0820C124); + gUnknown_03004824->unk_00b4 ++; + // fallthrough + case 16: + gUnknown_03004824->unk_00b4 = 0; + return TRUE; + default: + LoadSpriteSheet(&gUnknown_0820C07C[gUnknown_03004824->unk_00b4]); + gUnknown_03004824->unk_00b4 ++; + return FALSE; + } +} + +static void sub_804ACD8(const u8 *src, u8 *dest, u8 a2) +{ + sub_804AFB8(&gWindowConfig_81E725C, dest, src, a2); +} + +#ifdef NONMATCHING +static void sub_804ACF4(u8 who) +{ + struct Pokemon *pokemon; + int i; + switch (who) + { + case 0: + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + { + pokemon = &gPlayerParty[i]; + if (GetMonData(pokemon, MON_DATA_IS_EGG) == TRUE) + { + gUnknown_03004824->unk_0051[0][i] = 0; + gUnknown_03004824->unk_005d[0][i] = 1; + } + else if (GetMonData(pokemon, MON_DATA_HP) == 0) + { + gUnknown_03004824->unk_0051[0][i] = 0; + gUnknown_03004824->unk_005d[0][i] = 0; + } + else + { + gUnknown_03004824->unk_0051[0][i] = 1; + gUnknown_03004824->unk_005d[0][i] = 0; + } + } + break; + case 1: + for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++) + { + pokemon = &gEnemyParty[i]; + if (GetMonData(pokemon, MON_DATA_IS_EGG) == TRUE) + { + gUnknown_03004824->unk_0051[1][i] = 0; + gUnknown_03004824->unk_005d[1][i] = 1; + } + else if (GetMonData(pokemon, MON_DATA_HP) == 0) + { + gUnknown_03004824->unk_0051[1][i] = 0; + gUnknown_03004824->unk_005d[1][i] = 0; + } + else + { + gUnknown_03004824->unk_0051[1][i] = 1; + gUnknown_03004824->unk_005d[1][i] = 0; + } + } + break; + } +} +#else +static __attribute__((naked)) void sub_804ACF4(u8 who) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r9\n" + "\tmov r6, r8\n" + "\tpush {r6,r7}\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r8, r0\n" + "\tcmp r0, 0\n" + "\tbeq _0804AD0C\n" + "\tcmp r0, 0x1\n" + "\tbeq _0804ADA0\n" + "\tb _0804AE2C\n" + "_0804AD0C:\n" + "\tmovs r7, 0\n" + "\tldr r1, _0804AD4C @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x42\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804AD1C\n" + "\tb _0804AE2C\n" + "_0804AD1C:\n" + "\tadds r6, r1, 0\n" + "\tmovs r5, 0\n" + "\tmov r9, r5\n" + "_0804AD22:\n" + "\tmovs r0, 0x64\n" + "\tadds r1, r7, 0\n" + "\tmuls r1, r0\n" + "\tldr r0, _0804AD50 @ =gPlayerParty\n" + "\tadds r4, r1, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x2D\n" + "\tbl GetMonData\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0x1\n" + "\tbne _0804AD54\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tmov r2, r9\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tb _0804AD84\n" + "\t.align 2, 0\n" + "_0804AD4C: .4byte gUnknown_03004824\n" + "_0804AD50: .4byte gPlayerParty\n" + "_0804AD54:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x39\n" + "\tbl GetMonData\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0\n" + "\tbne _0804AD72\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tb _0804AD84\n" + "_0804AD72:\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tmovs r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tmov r1, r9\n" + "_0804AD84:\n" + "\tstrb r1, [r0]\n" + "\tldr r0, _0804AD9C @ =gUnknown_03004824\n" + "\tadds r5, 0x1\n" + "\tadds r7, 0x1\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x42\n" + "\tadd r0, r8\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804AD22\n" + "\tb _0804AE2C\n" + "\t.align 2, 0\n" + "_0804AD9C: .4byte gUnknown_03004824\n" + "_0804ADA0:\n" + "\tmovs r7, 0\n" + "\tldr r1, _0804ADE0 @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x43\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tbge _0804AE2C\n" + "\tadds r6, r1, 0\n" + "\tmovs r5, 0x6\n" + "\tmovs r2, 0\n" + "\tmov r9, r2\n" + "_0804ADB6:\n" + "\tmovs r0, 0x64\n" + "\tadds r1, r7, 0\n" + "\tmuls r1, r0\n" + "\tldr r0, _0804ADE4 @ =gEnemyParty\n" + "\tadds r4, r1, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x2D\n" + "\tbl GetMonData\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0x1\n" + "\tbne _0804ADE8\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tmov r2, r9\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tb _0804AE18\n" + "\t.align 2, 0\n" + "_0804ADE0: .4byte gUnknown_03004824\n" + "_0804ADE4: .4byte gEnemyParty\n" + "_0804ADE8:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x39\n" + "\tbl GetMonData\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0\n" + "\tbne _0804AE06\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tb _0804AE18\n" + "_0804AE06:\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tmovs r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tmov r1, r9\n" + "_0804AE18:\n" + "\tstrb r1, [r0]\n" + "\tldr r0, _0804AE38 @ =gUnknown_03004824\n" + "\tadds r5, 0x1\n" + "\tadds r7, 0x1\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x42\n" + "\tadd r0, r8\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804ADB6\n" + "_0804AE2C:\n" + "\tpop {r3,r4}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804AE38: .4byte gUnknown_03004824"); +} +#endif + +static void sub_804AE3C(u8 who) +{ + u16 i; + u16 curHp; + u16 maxHp; + switch (who) + { + case 0: + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + { + curHp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + maxHp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + gUnknown_03004824->unk_0069[0][i] = GetHPBarLevel(curHp, maxHp); + } + break; + case 1: + for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++) + { + curHp = GetMonData(&gEnemyParty[i], MON_DATA_HP); + maxHp = GetMonData(&gEnemyParty[i], MON_DATA_MAX_HP); + gUnknown_03004824->unk_0069[1][i] = GetHPBarLevel(curHp, maxHp); + } + break; + } +} + +static void sub_804AF10(void) +{ + int i, j; + for (i = 0; i < 2; i ++) + { + for (j = 0; j < gUnknown_03004824->partyCounts[i]; j ++) + { + sub_809D824(&gSprites[gUnknown_03004824->partyIcons[i][j]], 4 - gUnknown_03004824->unk_0069[i][j]); + } + } +} + +static void sub_804AF84(void) +{ + int i; + for (i = 0; i < 11; i ++) + if (gSaveBlock1.giftRibbons[i] == 0 && gUnknown_03004824->unk_00b5[i] != 0) + gSaveBlock1.giftRibbons[i] = gUnknown_03004824->unk_00b5[i]; +} + +static void sub_804AFB8(const struct WindowConfig *windowConfig, u8 *dest, const u8 *src, u8 size) +{ + u8 i; + u8 *tileBuffer; + size = (size + 3) / 4; + tileBuffer = gTileBuffer; + CpuFill16(0, tileBuffer, size * 0x80); + CpuFill16(0, tileBuffer + windowConfig->width * 0x20, size * 0x80); + sub_8004E3C(windowConfig, tileBuffer, src); + for (i = 0; i < size; i ++) + { + CpuCopy16(&tileBuffer[32 * (i * 4)], &dest[32 * (i * 8)], 0x80); + CpuCopy16(&tileBuffer[32 * (i * 4 + windowConfig->width)], &dest[32 * (i * 8 + 4)], 0x80); + } +} + +static void sub_804B058(struct Sprite *sprite) +{ + if (++ sprite->data0 == 10) + { + PlaySE(SE_BOWA); + sprite->data0 = 0; + } +} + +static void sub_804B07C(struct Sprite *sprite) +{ + if (sprite->data1 == 0) + { + if (++ sprite->data0 == 12) + sprite->data0 = 0; + LoadPalette(&gTradeGlow2PaletteAnimTable[sprite->data0], 16 * (sprite->oam.paletteNum + 16) + 4, 2); + } +} + +static void sub_804B0BC(struct Sprite *sprite) +{ + sprite->data0 ++; + sprite->pos2.y ++; + if (sprite->data0 == 10) + DestroySprite(sprite); +} + +static void sub_804B0E0(struct Sprite *sprite) +{ + sprite->data0 ++; + sprite->pos2.y --; + if (sprite->data0 == 10) + DestroySprite(sprite); +} + +static void sub_804B104(struct Sprite *sprite) +{ + if (++ sprite->data0 == 15) + { + PlaySE(SE_W107); + sprite->data0 = 0; + } +} + +static void sub_804B128(void) +{ + struct BgAffineDstData dest; + DoBgAffineSet(&dest, gUnknown_03004828->unk_0104 << 8, gUnknown_03004828->unk_0106 << 8, gUnknown_03004828->unk_010c, gUnknown_03004828->unk_010e, gUnknown_03004828->unk_0118, gUnknown_03004828->unk_0118, gUnknown_03004828->unk_011c); + REG_BG2PA = dest.pa; + REG_BG2PB = dest.pb; + REG_BG2PC = dest.pc; + REG_BG2PD = dest.pd; + REG_BG2X = dest.dx; + REG_BG2Y = dest.dy; +} + +#ifdef NONMATCHING +static void sub_804B1BC(void) +{ + REG_BG1VOFS = gUnknown_03004828->bg1vofs; + REG_BG1HOFS = gUnknown_03004828->bg1hofs; + if ((REG_DISPCNT & 7) == DISPCNT_MODE_0) + { + REG_BG2VOFS = gUnknown_03004828->bg2vofs; + REG_BG2HOFS = gUnknown_03004828->bg2hofs; + } + else + { + sub_804B128(); + } +} +#else +__attribute__((naked)) static void sub_804B1BC(void) +{ + asm_unified("\tpush {lr}\n" + "\tldr r1, _0804B1FC @ =REG_BG1VOFS\n" + "\tldr r0, _0804B200 @ =gUnknown_03004828\n" + "\tldr r2, [r0]\n" + "\tmovs r3, 0x88\n" + "\tlsls r3, 1\n" + "\tadds r0, r2, r3\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tsubs r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tadds r0, r2, r3\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 19\n" + "\tldrh r0, [r0]\n" + "\tmovs r1, 0x7\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0804B208\n" + "\tldr r1, _0804B204 @ =REG_BG2VOFS\n" + "\tadds r3, 0x2\n" + "\tadds r0, r2, r3\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tsubs r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tadds r0, r2, r3\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tb _0804B20C\n" + "\t.align 2, 0\n" + "_0804B1FC: .4byte REG_BG1VOFS\n" + "_0804B200: .4byte gUnknown_03004828\n" + "_0804B204: .4byte REG_BG2VOFS\n" + "_0804B208:\n" + "\tbl sub_804B128\n" + "_0804B20C:\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif + +static void sub_804B210(void) +{ + sub_804B1BC(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_804B228(void) +{ + gUnknown_03004828->unk_00b4 = 0; + gUnknown_03004828->unk_00b2 = 0; + gUnknown_03004828->unk_00b3 = 0; +} + +#ifdef NONMATCHING +static +#endif +void sub_804B24C(void) +{ + if (gUnknown_03004828->unk_00b2 == gUnknown_03004828->unk_00b3) + { + gUnknown_03004828->unk_00b4 ++; + } + else + { + gUnknown_03004828->unk_00b4 = 0; + } + if (gUnknown_03004828->unk_00b4 > 0xb4) + { + gUnknown_03004828->unk_00b4 = 0; + gUnknown_03004828->unk_00b3 = 0; + gUnknown_03004828->unk_00b2 = 0; + } + gUnknown_03004828->unk_00b3 = gUnknown_03004828->unk_00b2; +} + +static u8 sub_804B2B0(void) +{ + if (gReceivedRemoteLinkPlayers) + return GetMultiplayerId(); + return 0; +} + +static void sub_804B2D0(u8 whichParty, u8 a1) +{ + u8 v0; + struct Pokemon *pokemon; + u16 species; + u32 personality; + + v0 = 0; + pokemon = NULL; + if (whichParty == 0) + { + pokemon = &gPlayerParty[gUnknown_020297D8[0]]; + v0 = 1; + } + if (whichParty == 1) + { + pokemon = &gEnemyParty[gUnknown_020297D8[1] % 6]; + v0 = 3; + } + switch (a1) + { + case 0: + species = GetMonData(pokemon, MON_DATA_SPECIES2); + personality = GetMonData(pokemon, MON_DATA_PERSONALITY); + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)ewram, gUnknown_081FAF4C[whichParty * 2 + 1], species, personality); + LoadCompressedObjectPalette(GetMonSpritePalStruct(pokemon)); + gUnknown_03004828->tradeSpecies[whichParty] = species; + break; + case 1: + GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(pokemon)->tag, v0); + gUnknown_03004828->pokePicSpriteIdxs[whichParty] = CreateSprite(&gUnknown_02024E8C, 0x78, 0x3c, 0x6); + gSprites[gUnknown_03004828->pokePicSpriteIdxs[whichParty]].invisible = TRUE; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy; + break; + } +} + +#ifdef NONMATCHING +static void sub_804B41C(void) +// Link trade init +{ + switch (gMain.state) + { + case 0: + REG_DISPCNT = 0; + ResetTasks(); + CloseLink(); + gUnknown_03004828 = &ewram_2010000.unk_0f000; + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(sub_804B210); + sub_804B228(); + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); + LoadTextWindowGraphics(&gUnknown_03004828->window); + MenuZeroFillScreen(); + gLinkType = 0x1144; + gMain.state ++; + LZDecompressVram(gUnknown_08D00000, (void *)VRAM); + CpuCopy16(gUnknown_08D00524, ewram, 0x1000); + DmaCopy16Defvars(3, ewram, (void *)BG_SCREEN_ADDR(5), 0x500); + LoadCompressedPalette(gUnknown_08D004E0, 0, 32); + gUnknown_03004828->unk_00b6 = 0; + gUnknown_03004828->unk_00c4 = 0; + gUnknown_03004828->isLinkTrade = TRUE; + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x40; + gUnknown_03004828->unk_0108 = 0; + gUnknown_03004828->unk_010a = 0; + gUnknown_03004828->unk_010c = 0x78; + gUnknown_03004828->unk_010e = 0x50; + gUnknown_03004828->unk_0118 = 0x100; + gUnknown_03004828->unk_011c = 0; + break; + case 1: + OpenLink(); + gMain.state ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 2: + if (++ gUnknown_03004828->unk_00c0 > 60) + { + gUnknown_03004828->unk_00c0 = 0; + gMain.state ++; + } + break; + case 3: + if (IsLinkMaster()) + { + if (GetLinkPlayerCount_2() >= sub_800820C() && ++ gUnknown_03004828->unk_00c0 > 30) + { + sub_8007F4C(); + gMain.state ++; + } + } + else + { + gMain.state ++; + } + break; + case 4: + sub_804B24C(); + if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE) gMain.state ++; + break; + case 5: + gUnknown_03004828->unk_009c = 0; + gUnknown_03004828->unk_009d = 0; + gUnknown_03004828->unk_00bd = 0; + sub_804B2D0(0, 0); + gMain.state ++; + break; + case 6: + sub_804B2D0(0, 1); + gMain.state ++; + break; + case 7: + sub_804B2D0(1, 0); + gMain.state ++; + break; + case 8: + sub_804B2D0(1, 1); + gMain.state ++; + break; + case 9: + sub_804C164(); + LoadSpriteSheet(&gUnknown_0821594C); + LoadSpritePalette(&gUnknown_08215954); + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5); + gMain.state ++; + break; + case 10: + gMain.state ++; + // fallthrough + case 11: + sub_804BBE8(5); + sub_804BBE8(0); + sub_804C1A8(); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gMain.state ++; + break; + case 12: + if (!gPaletteFade.active) + { + SetMainCallback2(sub_804DB84); + } + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} +#else +static __attribute__((naked)) void sub_804B41C(void) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tsub sp, 0x4\n" + "\tldr r1, _0804B43C @ =gMain\n" + "\tldr r2, _0804B440 @ =0x0000043c\n" + "\tadds r0, r1, r2\n" + "\tldrb r0, [r0]\n" + "\tadds r2, r1, 0\n" + "\tcmp r0, 0xC\n" + "\tbls _0804B430\n" + "\tb _0804B76E_break\n" + "_0804B430:\n" + "\tlsls r0, 2\n" + "\tldr r1, _0804B444 @ =_0804B448\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_0804B43C: .4byte gMain\n" + "_0804B440: .4byte 0x0000043c\n" + "_0804B444: .4byte _0804B448\n" + "\t.align 2, 0\n" + "_0804B448:\n" + "\t.4byte _0804B47C_case00\n" + "\t.4byte _0804B5AC_case01\n" + "\t.4byte _0804B5D4_case02\n" + "\t.4byte _0804B5FC_case03\n" + "\t.4byte _0804B648_case04\n" + "\t.4byte _0804B678_case05\n" + "\t.4byte _0804B6A8_case06\n" + "\t.4byte _0804B6B2_case07\n" + "\t.4byte _0804B6CC_case08\n" + "\t.4byte _0804B6E4_case09\n" + "\t.4byte _0804B71C_case10\n" + "\t.4byte _0804B726_case11\n" + "\t.4byte _0804B75C_case12\n" + "_0804B47C_case00:\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 19\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r1]\n" + "\tbl ResetTasks\n" + "\tbl CloseLink\n" + "\tldr r6, _0804B570 @ =gUnknown_03004828\n" + "\tldr r5, _0804B574 @ =0x0201f000\n" + "\tstr r5, [r6]\n" + "\tbl ResetSpriteData\n" + "\tbl FreeAllSpritePalettes\n" + "\tldr r0, _0804B578 @ =sub_804B210\n" + "\tbl SetVBlankCallback\n" + "\tbl sub_804B228\n" + "\tldr r4, _0804B57C @ =gWindowConfig_81E6F84\n" + "\tadds r0, r4, 0\n" + "\tbl SetUpWindowConfig\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x4\n" + "\tadds r1, r4, 0\n" + "\tbl InitWindowFromConfig\n" + "\tmovs r0, 0x2\n" + "\tbl SetTextWindowBaseTileNum\n" + "\tldr r1, [r6]\n" + "\tadds r1, 0x34\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x4\n" + "\tbl LoadTextWindowGraphics\n" + "\tbl MenuZeroFillScreen\n" + "\tldr r1, _0804B580 @ =gLinkType\n" + "\tldr r4, _0804B584 @ =0x00001144\n" + "\tadds r0, r4, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r1, _0804B588 @ =gMain\n" + "\tldr r0, _0804B58C @ =0x0000043c\n" + "\tadds r1, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804B590 @ =gUnknown_08D00000\n" + "\tmovs r1, 0xC0\n" + "\tlsls r1, 19\n" + "\tbl LZDecompressVram\n" + "\tldr r0, _0804B594 @ =gUnknown_08D00524\n" + "\tldr r1, _0804B598 @ =0xfffe1000\n" + "\tadds r5, r1\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 4\n" + "\tadds r1, r5, 0\n" + "\tbl CpuSet\n" + "\tldr r1, _0804B59C @ =0x06002800\n" + "\tldr r0, _0804B5A0 @ =0x040000d4\n" + "\tstr r5, [r0]\n" + "\tstr r1, [r0, 0x4]\n" + "\tldr r1, _0804B5A4 @ =0x80000280\n" + "\tstr r1, [r0, 0x8]\n" + "\tldr r0, [r0, 0x8]\n" + "\tldr r0, _0804B5A8 @ =gUnknown_08D004E0\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0x20\n" + "\tbl LoadCompressedPalette\n" + "\tldr r1, [r6]\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0xB6\n" + "\tmovs r2, 0\n" + "\tstrh r2, [r0]\n" + "\tadds r0, 0xE\n" + "\tstrh r2, [r0]\n" + "\tmovs r4, 0x8F\n" + "\tlsls r4, 1\n" + "\tadds r1, r4\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r3, [r6]\n" + "\tmovs r1, 0x82\n" + "\tlsls r1, 1\n" + "\tadds r0, r3, r1\n" + "\tmovs r1, 0x40\n" + "\tstrh r1, [r0]\n" + "\tsubs r4, 0x18\n" + "\tadds r0, r3, r4\n" + "\tstrh r1, [r0]\n" + "\tadds r1, 0xC8\n" + "\tadds r0, r3, r1\n" + "\tstrh r2, [r0]\n" + "\tadds r4, 0x4\n" + "\tadds r0, r3, r4\n" + "\tstrh r2, [r0]\n" + "\tmovs r0, 0x86\n" + "\tlsls r0, 1\n" + "\tadds r1, r3, r0\n" + "\tmovs r0, 0x78\n" + "\tstrh r0, [r1]\n" + "\tadds r4, 0x4\n" + "\tadds r1, r3, r4\n" + "\tmovs r0, 0x50\n" + "\tstrh r0, [r1]\n" + "\tadds r0, 0xC8\n" + "\tadds r1, r3, r0\n" + "\tsubs r0, 0x18\n" + "\tstrh r0, [r1]\n" + "\tmovs r1, 0x8E\n" + "\tlsls r1, 1\n" + "\tadds r0, r3, r1\n" + "\tstrh r2, [r0]\n" + "\tb _0804B76E_break\n" + "\t.align 2, 0\n" + "_0804B570: .4byte gUnknown_03004828\n" + "_0804B574: .4byte 0x0201f000\n" + "_0804B578: .4byte sub_804B210\n" + "_0804B57C: .4byte gWindowConfig_81E6F84\n" + "_0804B580: .4byte gLinkType\n" + "_0804B584: .4byte 0x00001144\n" + "_0804B588: .4byte gMain\n" + "_0804B58C: .4byte 0x0000043c\n" + "_0804B590: .4byte gUnknown_08D00000\n" + "_0804B594: .4byte gUnknown_08D00524\n" + "_0804B598: .4byte 0xfffe1000\n" + "_0804B59C: .4byte 0x06002800\n" + "_0804B5A0: .4byte 0x040000d4\n" + "_0804B5A4: .4byte 0x80000280\n" + "_0804B5A8: .4byte gUnknown_08D004E0\n" + "_0804B5AC_case01:\n" + "\tbl OpenLink\n" + "\tldr r1, _0804B5C8 @ =gMain\n" + "\tldr r2, _0804B5CC @ =0x0000043c\n" + "\tadds r1, r2\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tmovs r2, 0\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804B5D0 @ =gUnknown_03004828\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0xC0\n" + "\tstr r2, [r0]\n" + "\tb _0804B76E_break\n" + "\t.align 2, 0\n" + "_0804B5C8: .4byte gMain\n" + "_0804B5CC: .4byte 0x0000043c\n" + "_0804B5D0: .4byte gUnknown_03004828\n" + "_0804B5D4_case02:\n" + "\tldr r0, _0804B5F4 @ =gUnknown_03004828\n" + "\tldr r0, [r0]\n" + "\tadds r1, r0, 0\n" + "\tadds r1, 0xC0\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstr r0, [r1]\n" + "\tcmp r0, 0x3C\n" + "\tbhi _0804B5E8\n" + "\tb _0804B76E_break\n" + "_0804B5E8:\n" + "\tmovs r0, 0\n" + "\tstr r0, [r1]\n" + "\tldr r4, _0804B5F8 @ =0x0000043c\n" + "\tadds r1, r2, r4\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B5F4: .4byte gUnknown_03004828\n" + "_0804B5F8: .4byte 0x0000043c\n" + "_0804B5FC_case03:\n" + "\tbl IsLinkMaster\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0804B608\n" + "\tb _0804B746\n" + "_0804B608:\n" + "\tbl GetLinkPlayerCount_2\n" + "\tadds r4, r0, 0\n" + "\tbl sub_800820C\n" + "\tlsls r4, 24\n" + "\tlsls r0, 24\n" + "\tcmp r4, r0\n" + "\tbcs _0804B61C\n" + "\tb _0804B76E_break\n" + "_0804B61C:\n" + "\tldr r0, _0804B63C @ =gUnknown_03004828\n" + "\tldr r1, [r0]\n" + "\tadds r1, 0xC0\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstr r0, [r1]\n" + "\tcmp r0, 0x1E\n" + "\tbhi _0804B62E\n" + "\tb _0804B76E_break\n" + "_0804B62E:\n" + "\tbl sub_8007F4C\n" + "\tldr r1, _0804B640 @ =gMain\n" + "\tldr r0, _0804B644 @ =0x0000043c\n" + "\tadds r1, r0\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B63C: .4byte gUnknown_03004828\n" + "_0804B640: .4byte gMain\n" + "_0804B644: .4byte 0x0000043c\n" + "_0804B648_case04:\n" + "\tbl sub_804B24C\n" + "\tldr r0, _0804B66C @ =gReceivedRemoteLinkPlayers\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x1\n" + "\tbeq _0804B656\n" + "\tb _0804B76E_break\n" + "_0804B656:\n" + "\tbl IsLinkPlayerDataExchangeComplete\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq _0804B664\n" + "\tb _0804B76E_break\n" + "_0804B664:\n" + "\tldr r1, _0804B670 @ =gMain\n" + "\tldr r4, _0804B674 @ =0x0000043c\n" + "\tadds r1, r4\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B66C: .4byte gReceivedRemoteLinkPlayers\n" + "_0804B670: .4byte gMain\n" + "_0804B674: .4byte 0x0000043c\n" + "_0804B678_case05:\n" + "\tldr r2, _0804B69C @ =gUnknown_03004828\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x9C\n" + "\tmovs r1, 0\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x9D\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0xBD\n" + "\tstrb r1, [r0]\n" + "\tmovs r0, 0\n" + "\tbl sub_804B2D0\n" + "\tldr r1, _0804B6A0 @ =gMain\n" + "\tldr r0, _0804B6A4 @ =0x0000043c\n" + "\tadds r1, r0\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B69C: .4byte gUnknown_03004828\n" + "_0804B6A0: .4byte gMain\n" + "_0804B6A4: .4byte 0x0000043c\n" + "_0804B6A8_case06:\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0x1\n" + "\tbl sub_804B2D0\n" + "\tb _0804B746\n" + "_0804B6B2_case07:\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0\n" + "\tbl sub_804B2D0\n" + "\tldr r1, _0804B6C4 @ =gMain\n" + "\tldr r4, _0804B6C8 @ =0x0000043c\n" + "\tadds r1, r4\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B6C4: .4byte gMain\n" + "_0804B6C8: .4byte 0x0000043c\n" + "_0804B6CC_case08:\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x1\n" + "\tbl sub_804B2D0\n" + "\tldr r1, _0804B6DC @ =gMain\n" + "\tldr r0, _0804B6E0 @ =0x0000043c\n" + "\tadds r1, r0\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B6DC: .4byte gMain\n" + "_0804B6E0: .4byte 0x0000043c\n" + "_0804B6E4_case09:\n" + "\tbl sub_804C164\n" + "\tldr r0, _0804B704 @ =gUnknown_0821594C\n" + "\tbl LoadSpriteSheet\n" + "\tldr r0, _0804B708 @ =gUnknown_08215954\n" + "\tbl LoadSpritePalette\n" + "\tldr r1, _0804B70C @ =REG_BG1CNT\n" + "\tldr r2, _0804B710 @ =0x00000502\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r1, _0804B714 @ =gMain\n" + "\tldr r4, _0804B718 @ =0x0000043c\n" + "\tadds r1, r4\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B704: .4byte gUnknown_0821594C\n" + "_0804B708: .4byte gUnknown_08215954\n" + "_0804B70C: .4byte REG_BG1CNT\n" + "_0804B710: .4byte 0x00000502\n" + "_0804B714: .4byte gMain\n" + "_0804B718: .4byte 0x0000043c\n" + "_0804B71C_case10:\n" + "\tldr r0, _0804B754 @ =0x0000043c\n" + "\tadds r1, r2, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "_0804B726_case11:\n" + "\tmovs r0, 0x5\n" + "\tbl sub_804BBE8\n" + "\tmovs r0, 0\n" + "\tbl sub_804BBE8\n" + "\tbl sub_804C1A8\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "_0804B746:\n" + "\tldr r1, _0804B758 @ =gMain\n" + "\tldr r2, _0804B754 @ =0x0000043c\n" + "\tadds r1, r2\n" + "_0804B74C:\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tb _0804B76E_break\n" + "\t.align 2, 0\n" + "_0804B754: .4byte 0x0000043c\n" + "_0804B758: .4byte gMain\n" + "_0804B75C_case12:\n" + "\tldr r0, _0804B788 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0804B76E_break\n" + "\tldr r0, _0804B78C @ =sub_804DB84\n" + "\tbl SetMainCallback2\n" + "_0804B76E_break:\n" + "\tbl RunTasks\n" + "\tbl AnimateSprites\n" + "\tbl BuildOamBuffer\n" + "\tbl UpdatePaletteFade\n" + "\tadd sp, 0x4\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804B788: .4byte gPaletteFade\n" + "_0804B78C: .4byte sub_804DB84"); +} +#endif + +static void sub_804B790(void) +// In-game trade init +{ + u8 otName[11]; + switch (gMain.state) + { + case 0: + gUnknown_020297D8[0] = gSpecialVar_0x8005; + gUnknown_020297D8[1] = 6; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + GetMonData(&gEnemyParty[0], MON_DATA_OT_NAME, otName); + StringCopy(gLinkPlayers[1].name, otName); + REG_DISPCNT = 0; + ResetTasks(); + gUnknown_03004828 = &ewram_2010000.unk_0f000; + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(sub_804B210); + sub_804B228(); + SetUpWindowConfig(&gWindowConfig_81E717C); + InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E717C); + gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); + LoadTextWindowGraphics(&gUnknown_03004828->window); + MenuZeroFillScreen(); + gLinkType = 0x1144; + gUnknown_03004828->isLinkTrade = FALSE; + gUnknown_03004828->unk_00b6 = 0; + gUnknown_03004828->unk_00c4 = 0; + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x40; + gUnknown_03004828->unk_0108 = 0; + gUnknown_03004828->unk_010a = 0; + gUnknown_03004828->unk_010c = 0x78; + gUnknown_03004828->unk_010e = 0x50; + gUnknown_03004828->unk_0118 = 0x100; + gUnknown_03004828->unk_011c = 0; + gUnknown_03004828->unk_00c0 = 0; + gMain.state = 5; + break; + case 5: + sub_804B2D0(0, 0); + gMain.state ++; + break; + case 6: + sub_804B2D0(0, 1); + gMain.state ++; + break; + case 7: + sub_804B2D0(1, 0); + gMain.state ++; + break; + case 8: + sub_804B2D0(1, 1); + gMain.state ++; + break; + case 9: + sub_804C164(); + LoadSpriteSheet(&gUnknown_0821594C); + LoadSpritePalette(&gUnknown_08215954); + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5); + gMain.state ++; + break; + case 10: + gMain.state ++; + // fallthrough + case 11: + sub_804BBE8(5); + sub_804BBE8(0); + sub_804C1A8(); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gMain.state ++; + break; + case 12: + if (!gPaletteFade.active) + { + SetMainCallback2(sub_804BBCC); + } + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804BA18(u8 partyIdx) +{ + struct Pokemon *pokemon = &gPlayerParty[partyIdx]; + if (!GetMonData(pokemon, MON_DATA_IS_EGG)) + { + u16 species = SpeciesToNationalPokedexNum(GetMonData(pokemon, MON_DATA_SPECIES, NULL)); + GetSetPokedexFlag(species, 2); + GetSetPokedexFlag(species, 3); + } +} + +static void sub_804BA64(void) +{ + u8 mpId = GetMultiplayerId(); + if (gLinkPlayers[mpId ^ 1].lp_field_2 == 0x8000) + EnableNationalPokedex(); +} + +static void sub_804BA94(u8 a0, u8 a1) +{ + u8 friendship; + struct Pokemon *playerPokemon = &gPlayerParty[a0]; + u16 playerMail = GetMonData(playerPokemon, MON_DATA_MAIL); + + struct Pokemon *friendPokemon = &gEnemyParty[a1]; + u16 friendMail = GetMonData(friendPokemon, MON_DATA_MAIL); + + if (playerMail != 0xff) + ClearMailStruct(&gSaveBlock1.mail[playerMail]); + + // This is where the actual trade happens!! + gUnknown_03004828->pokemon = *playerPokemon; + *playerPokemon = *friendPokemon; + *friendPokemon = gUnknown_03004828->pokemon; + + friendship = 70; + if (!GetMonData(playerPokemon, MON_DATA_IS_EGG)) + SetMonData(playerPokemon, MON_DATA_FRIENDSHIP, &friendship); + + if (friendMail != 0xff) + GiveMailToMon2(playerPokemon, &gUnknown_02029700[friendMail]); + + sub_804BA18(a0); + if (gReceivedRemoteLinkPlayers) + sub_804BA64(); +} + +static void sub_804BB78(void) +{ + switch (gUnknown_03004828->unk_00bd) + { + case 1: + if (sub_8007ECC()) + { + Trade_SendData(gUnknown_03004828); + gUnknown_03004828->unk_00bd ++; + } + // fallthrough + case 2: + gUnknown_03004828->unk_00bd = 0; + break; + } +} + +static void sub_804BBCC(void) +{ + sub_804C29C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804BBE8(u8 a0) +{ + int i; + u16 *buffer; + switch (a0) + { + case 0: + LoadPalette(gUnknown_0820C9F8, 0x10, 0xa0); + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(1), 0x1300, 0x1000); + DmaCopy16Defvars(3, gUnknown_0820F798, (void *)BG_SCREEN_ADDR(18), 0x1000); + gUnknown_03004828->bg2vofs = 0; + gUnknown_03004828->bg2hofs = 0xb4; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256; + break; + case 1: + gUnknown_03004828->bg1hofs = 0; + gUnknown_03004828->bg1vofs = 0x15c; + REG_BG1VOFS = 0x15c; + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_TXT256x512; + + DmaCopy16Defvars(3, gUnknown_08210798, (void *)BG_SCREEN_ADDR(5), 0x1000); + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(0), 0x1300, 0x1000); + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON; + break; + case 2: + gUnknown_03004828->bg1vofs = 0; + gUnknown_03004828->bg1hofs = 0; + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON; + DmaCopy16Defvars(3, gUnknown_08211798, (void *)BG_SCREEN_ADDR(5), 0x800); + break; + case 3: + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON; + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x40; + gUnknown_03004828->unk_010c = 0x78; + gUnknown_03004828->unk_010e = -0x46; + gUnknown_03004828->unk_011c = 0; + DmaCopyLarge16(3, gUnknown_0820DD98, (void *)BG_CHAR_ADDR(1), 0x1a00, 0x1000); + DmaCopy16Defvars(3, gUnknown_08211F98, (void *)BG_SCREEN_ADDR(18), 0x100); + break; + case 4: + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18); + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x5c; + gUnknown_03004828->unk_0118 = 0x20; + gUnknown_03004828->unk_011a = 0x400; + gUnknown_03004828->unk_011c = 0; + DmaCopyLarge16(3, gUnknown_08213738, (void *)BG_CHAR_ADDR(1), 0x2040, 0x1000); + DmaCopy16Defvars(3, gUnknown_08215778, (void *)BG_SCREEN_ADDR(18), 0x100); + break; + case 5: + gUnknown_03004828->bg1vofs = 0; + gUnknown_03004828->bg1hofs = 0; + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5); + LZDecompressVram(gUnknown_08D00000, (void *)BG_CHAR_ADDR(0)); + CpuCopy16(gUnknown_08D00524, buffer = (u16 *)ewram, 0x1000); + LoadCompressedPalette(gUnknown_08D004E0, 0x70, 0x20); + FillPalette(0, 0, 2); + for (i = 0; i < 0x280; i ++) + buffer[i] |= 0x7000; + DmaCopy16Defvars(3, ewram, (void *)BG_SCREEN_ADDR(5), 0x500); + MenuZeroFillWindowRect(2, 15, 27, 18); + break; + case 6: + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18); + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x5c; + gUnknown_03004828->unk_0118 = 0x100; + gUnknown_03004828->unk_011a = 0x80; + gUnknown_03004828->unk_010c = 0x78; + gUnknown_03004828->unk_010e = 0x50; + gUnknown_03004828->unk_011c = 0; + DmaCopyLarge16(3, gUnknown_08213738, (void *)BG_CHAR_ADDR(1), 0x2040, 0x1000); + DmaCopy16Defvars(3, gUnknown_08215778, (void *)BG_SCREEN_ADDR(18), 0x100); + break; + case 7: + gUnknown_03004828->bg2vofs = 0; + gUnknown_03004828->bg2hofs = 0; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256; + LoadPalette(gUnknown_0820C9F8, 0x10, 0xa0); + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(1), 0x1300, 0x1000); + DmaCopy16Defvars(3, gUnknown_0820F798, (void *)BG_SCREEN_ADDR(18), 0x1000); + break; + } +} + +static void sub_804C0F8(u8 a0) +{ + if (a0 == 0) + { + if (gUnknown_03004828->bg1vofs < 0x10a) + { + gUnknown_03004828->unk_010e ++; + gUnknown_03004828->unk_011c += 64; + } + } + else + { + if (gUnknown_03004828->unk_010e > -0x40) + { + gUnknown_03004828->unk_010e --; + gUnknown_03004828->unk_011c += 64; + } + } +} + +static void sub_804C164(void) +{ + LoadSpriteSheet(&gUnknown_082159A4); + LoadSpriteSheet(&gUnknown_082159F4); + LoadSpriteSheet(&gUnknown_08215A28); + LoadSpriteSheet(&gUnknown_08215A78); + LoadSpritePalette(&gUnknown_082159AC); + LoadSpritePalette(&gUnknown_082159B4); +} + +static void sub_804C1A8(void) +{ + u8 mpId; + u8 string[20]; + const struct InGameTrade *ingameTrade; + if (gUnknown_03004828->isLinkTrade) + { + mpId = GetMultiplayerId(); + StringCopy(gStringVar1, gLinkPlayers[mpId ^ 1].name); + GetMonData(&gEnemyParty[gUnknown_020297D8[1] % 6], MON_DATA_NICKNAME, string); + StringCopy10(gStringVar3, string); + GetMonData(&gPlayerParty[gUnknown_020297D8[0]], MON_DATA_NICKNAME, string); + StringCopy10(gStringVar2, string); + } + else + { + ingameTrade = &gIngameTrades[gSpecialVar_0x8004]; + StringCopy(gStringVar1, ingameTrade->otName); + StringCopy10(gStringVar3, ingameTrade->name); + GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, string); + StringCopy10(gStringVar2, string); + } +} + +static bool8 sub_804C29C(void) +{ + u16 evoTarget; + + switch (gUnknown_03004828->unk_00c4) + { + case 0: + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x = -0xb4; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[0]].y_offset; + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_0124 = GetCurrentMapMusic(); + PlayBGM(BGM_SHINKA); + break; + case 1: + if (gUnknown_03004828->bg2hofs > 0) + { + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x += 3; + gUnknown_03004828->bg2hofs -= 3; + } + else + { + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x = 0; + gUnknown_03004828->bg2hofs = 0; + gUnknown_03004828->unk_00c4 = 10; + } + break; + + case 10: + StringExpandPlaceholders(gStringVar4, gTradeText_WillBeSent); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gUnknown_03004828->unk_00c4 = 11; + gUnknown_03004828->unk_00c0 = 0; + break; + case 11: + if (++gUnknown_03004828->unk_00c0 == 80) + { + gUnknown_03004828->unk_0102 = sub_8047580(gUnknown_03004828->pokePicSpriteIdxs[0], gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.paletteNum, 0x78, 0x20, 0x2, 0x1, 0x14, 0xfffff); + gUnknown_03004828->unk_00c4 ++; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_ByeBye); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + } + break; + case 12: + if (gSprites[gUnknown_03004828->unk_0102].callback == SpriteCallbackDummy && sub_80035AC(&gUnknown_03004828->window) == TRUE) + { + gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, 0x20, 0); + gSprites[gUnknown_03004828->unk_0103].callback = sub_804D738; + DestroySprite(&gSprites[gUnknown_03004828->unk_0102]); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 13: + // The game waits here for the sprite to finish its animation sequence. + break; + case 14: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 20; + break; + + case 20: + if (!gPaletteFade.active) + { + sub_804BBE8(4); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 21: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 22: + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 = 23; + } + break; + case 23: + if (gUnknown_03004828->unk_011a > 0x100) + { + gUnknown_03004828->unk_011a -= 0x34; + } + else + { + sub_804BBE8(1); + gUnknown_03004828->unk_011a = 0x80; + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + } + gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a; + break; + case 24: + if (++ gUnknown_03004828->unk_00c0 > 20) + { + sub_804BBE8(3); + sub_804B128(); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_8215A80, 0x78, 0x50, 0); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 25: + if (gSprites[gUnknown_03004828->unk_00bb].animEnded) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + REG_BLDCNT = 0x640; + REG_BLDALPHA = 0x40C; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 26: + if (-- gUnknown_03004828->bg1vofs == 0x13C) + { + gUnknown_03004828->unk_00c4 ++; + } + if (gUnknown_03004828->bg1vofs == 0x148) + { + gUnknown_03004828->unk_00bc = CreateSprite(&gSpriteTemplate_8215A30, 0x80, 0x41, 0); + } + break; + case 27: + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159BC, 0x80, 0x50, 3); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x80, 0x50, 0); + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_00bb], 1); + gUnknown_03004828->unk_00c4 ++; + break; + case 28: + if ((gUnknown_03004828->bg1vofs -= 2) == 0xA6) + { + gUnknown_03004828->unk_00c4 = 200; + } + sub_804C0F8(0); + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + break; + case 200: + gSprites[gUnknown_03004828->unk_00ba].pos1.y -= 2; + gSprites[gUnknown_03004828->unk_00bb].pos1.y -= 2; + sub_804C0F8(0); + if (gSprites[gUnknown_03004828->unk_00ba].pos1.y < -8) + { + gUnknown_03004828->unk_00c4 = 29; + } + break; + case 29: + BeginNormalPaletteFade(-1, -1, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 30; + break; + case 30: + if (!gPaletteFade.active) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + sub_804BBE8(2); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 31: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159FC, 0x6f, 0xaa, 0); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x81, -0xa, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 32: + if (!gPaletteFade.active) + { + PlaySE(SE_TK_WARPOUT); + gUnknown_03004828->unk_00c4 ++; + } + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + break; + case 33: + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0x5a) + { + gSprites[gUnknown_03004828->unk_00ba].data1 = 1; + gSprites[gUnknown_03004828->unk_00bb].data1 = 1; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 34: + BlendPalettes(1, 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 35: + BlendPalettes(1, 0, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 36: + BlendPalettes(1, 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 37: + if (!IsPokeSpriteNotFlipped(gUnknown_03004828->tradeSpecies[0])) + { + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].affineAnims = gSpriteAffineAnimTable_8215AC0; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0, 3, 3); + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0); + } + else + { + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0); + } + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]], 0); + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos1.x = 0x3c; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.x = 0xb4; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos1.y = 0xc0; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.y = -0x20; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].invisible = FALSE; + gUnknown_03004828->unk_00c4 ++; + break; + case 38: + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y -= 3; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.y += 3; + if (-0xa0 > gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y && gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y >= -0xa3) + { + PlaySE(SE_TK_WARPIN); + } + if (gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y < -0xde) + { + gSprites[gUnknown_03004828->unk_00ba].data1 = 0; + gSprites[gUnknown_03004828->unk_00bb].data1 = 0; + gUnknown_03004828->unk_00c4 ++; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = TRUE; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].invisible = TRUE; + BlendPalettes(1, 0, 0xffff); + } + break; + case 39: + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0xde) + { + BeginNormalPaletteFade(-1, -1, 0, 16, 0); + gUnknown_03004828->unk_00c4 ++; + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + } + break; + case 40: + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + sub_804BBE8(1); + gUnknown_03004828->bg1vofs = 0xa6; + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159BC, 0x80, -0x14, 3); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x80, -0x14, 0); + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_00bb], 1); + } + break; + case 41: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 42: + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + sub_804C0F8(1); + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 43: + sub_804C0F8(1); + gSprites[gUnknown_03004828->unk_00ba].pos2.y += 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y + gSprites[gUnknown_03004828->unk_00ba].pos1.y == 64) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 44: + sub_804C0F8(1); + if ((gUnknown_03004828->bg1vofs += 2) > 0x13c) + { + gUnknown_03004828->bg1vofs = 0x13c; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 45: + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 46: + if (++ gUnknown_03004828->unk_00c0 == 10) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 47: + if (++ gUnknown_03004828->bg1vofs > 0x15c) + { + gUnknown_03004828->bg1vofs = 0x15c; + gUnknown_03004828->unk_00c4 ++; + } + if (gUnknown_03004828->bg1vofs == 0x148) + gUnknown_03004828->unk_00bc = CreateSprite(&gSpriteTemplate_8215A30, 0x80, 0x41, 0); + gSprites[gUnknown_03004828->unk_00bc].callback = sub_804B0E0; + break; + case 48: + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_8215A80, 0x78, 0x50, 0); + gUnknown_03004828->unk_00c4 = 50; + break; + + case 50: + if (gSprites[gUnknown_03004828->unk_00bb].animEnded) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + sub_804BBE8(6); + gUnknown_03004828->unk_00c4 ++; + PlaySE(SE_W028); + } + break; + case 51: + if (gUnknown_03004828->unk_011a < 0x400) + { + gUnknown_03004828->unk_011a += 0x34; + } + else + { + gUnknown_03004828->unk_011a = 0x400; + gUnknown_03004828->unk_00c4 ++; + } + gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a; + break; + case 52: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 60; + break; + + case 60: + if (!gPaletteFade.active) + { + sub_804BBE8(5); + sub_804BBE8(7); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 61: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 62: + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 63: + gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, -0x8, 0); + gSprites[gUnknown_03004828->unk_0103].data3 = 0x4a; + gSprites[gUnknown_03004828->unk_0103].callback = sub_804D80C; + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_0103], 1); + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->unk_0103], 2); + BlendPalettes(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 64: + BeginNormalPaletteFade(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 1, 16, 0, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 65: + if (gSprites[gUnknown_03004828->unk_0103].callback == SpriteCallbackDummy) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 66: + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.x = 0x78; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[1]].y_offset + 60; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.x = 0; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.y = 0; + CreatePokeballSprite(gUnknown_03004828->pokePicSpriteIdxs[1], gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].oam.paletteNum, 0x78, 0x54, 2, 1, 0x14, 0xfffff); + FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->unk_0103]); + DestroySprite(&gSprites[gUnknown_03004828->unk_0103]); + gUnknown_03004828->unk_00c4 ++; + break; + case 67: + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_SentOverPoke); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 68: + if (++ gUnknown_03004828->unk_00c0 == 4) + { + PlayFanfare(BGM_FANFA5); + } + if (gUnknown_03004828->unk_00c0 == 0xf0) + { + gUnknown_03004828->unk_00c4 ++; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_TakeGoodCare); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gUnknown_03004828->unk_00c0 = 0; + } + break; + case 69: // OneHand + if (++ gUnknown_03004828->unk_00c0 == 60) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 70: + sub_804E1DC(); + gUnknown_03004828->unk_00c4 ++; + break; + case 71: + if (gUnknown_03004828->isLinkTrade) + { + return TRUE; + } + else if (gMain.newKeys & A_BUTTON) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 72: // Only if in-game trade + sub_804BA94(gSpecialVar_0x8005, 0); + gCB2_AfterEvolution = sub_804BBCC; + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gUnknown_020297D8[0]], TRUE, ITEM_NONE); + if (evoTarget != SPECIES_NONE) + TradeEvolutionScene(&gPlayerParty[gUnknown_020297D8[0]], evoTarget, gUnknown_03004828->pokePicSpriteIdxs[1], gUnknown_020297D8[0]); + gUnknown_03004828->unk_00c4 ++; + break; + case 73: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 74: + if (!gPaletteFade.active) + { + PlayBGM(gUnknown_03004828->unk_0124); + SetMainCallback2(c2_exit_to_overworld_2_switch); + sub_804D8E4(); + } + break; + } + return FALSE; +} + +static void sub_804D588(void) +{ + u16 evoTarget; + switch (gMain.state) + { + case 0: + gMain.state = 4; + gSoftResetDisabled = TRUE; + break; + case 4: + gCB2_AfterEvolution = sub_804DC88; + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gUnknown_020297D8[0]], TRUE, ITEM_NONE); + if (evoTarget != SPECIES_NONE) + TradeEvolutionScene(&gPlayerParty[gUnknown_020297D8[0]], evoTarget, gUnknown_03004828->pokePicSpriteIdxs[1], gUnknown_020297D8[0]); + else + SetMainCallback2(sub_804DC88); + gUnknown_020297D8[0] = 255; + break; + } + if (!HasLinkErrorOccurred()) + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804D63C(void) +{ + u8 blockReceivedStatus; + sub_804B2B0(); + blockReceivedStatus = GetBlockReceivedStatus(); + if (blockReceivedStatus & 0x01) + { + if (gBlockRecvBuffer[0][0] == 0xdcba) + { + SetMainCallback2(sub_804D588); + } + if (gBlockRecvBuffer[0][0] == 0xabcd) + { + gUnknown_03004828->unk_009c = 1; + } + ResetBlockReceivedFlag(0); + } + if (blockReceivedStatus & 0x02) + { + if (gBlockRecvBuffer[1][0] == 0xabcd) + { + gUnknown_03004828->unk_009d = 1; + } + ResetBlockReceivedFlag(1); + } +} + +static void sub_804D6BC(struct Sprite *sprite) +{ + sprite->pos1.y += sprite->data0 / 10; + sprite->data5 += sprite->data1; + sprite->pos1.x = sprite->data5 / 10; + if (sprite->pos1.y > 0x4c) + { + sprite->pos1.y = 0x4c; + sprite->data0 = -(sprite->data0 * sprite->data2) / 100; + sprite->data3 ++; + } + if (sprite->pos1.x == 0x78) + sprite->data1 = 0; + sprite->data0 += sprite->data4; + if (sprite->data3 == 4) + { + sprite->data7 = 1; + sprite->callback = SpriteCallbackDummy; + } +} + +static void sub_804D738(struct Sprite *sprite) +{ + sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data0]; + if (sprite->data0 == 22) + PlaySE(SE_KON); + if (++ sprite->data0 == 44) + { + PlaySE(SE_W025); + sprite->callback = sub_804D7AC; + sprite->data0 = 0; + BeginNormalPaletteFade(1 << (16 + sprite->oam.paletteNum), -1, 0, 16, -1); + } +} + +static void sub_804D7AC(struct Sprite *sprite) +{ + if (sprite->data1 == 20) + StartSpriteAffineAnim(sprite, 1); + if (++ sprite->data1 > 20) + { + sprite->pos2.y -= gTradeBallVerticalVelocityTable[sprite->data0]; + if (++ sprite->data0 == 23) + { + DestroySprite(sprite); + gUnknown_03004828->unk_00c4 = 14; // Resume the master trade animation + } + } +} + +static void sub_804D80C(struct Sprite *sprite) +{ + if (sprite->data2 == 0) + { + if ((sprite->pos1.y += 4) > sprite->data3) + { + sprite->data2 ++; + sprite->data0 = 0x16; + PlaySE(SE_KON); + } + } + else + { + if (sprite->data0 == 0x42) + PlaySE(SE_KON2); + if (sprite->data0 == 0x5c) + PlaySE(SE_KON3); + if (sprite->data0 == 0x6b) + PlaySE(SE_KON4); + sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data0]; + if (++sprite->data0 == 0x6c) + sprite->callback = SpriteCallbackDummy; + } +} + +u16 sub_804D89C(void) +{ + const struct InGameTrade *inGameTrade = &gIngameTrades[gSpecialVar_0x8004]; + StringCopy(gStringVar1, gSpeciesNames[inGameTrade->playerSpecies]); + StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]); + return inGameTrade->playerSpecies; +} + +static void sub_804D8E4(void) +{ + u8 nickname[32]; + const struct InGameTrade *inGameTrade = &gIngameTrades[gSpecialVar_0x8004]; + GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]); +} + +static void sub_804D948(u8 whichPlayerMon, u8 whichInGameTrade) +{ + const struct InGameTrade *inGameTrade = &gIngameTrades[whichInGameTrade]; + u8 level = GetMonData(&gPlayerParty[whichPlayerMon], MON_DATA_LEVEL); + + struct MailStruct mail; + u8 metLocation = 0xFE; + u8 isMail; + u8 *item; + struct Pokemon *pokemon = &gEnemyParty[0]; + + CreateMon(pokemon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, TRUE, inGameTrade->otId); + + SetMonData(pokemon, MON_DATA_HP_IV, &inGameTrade->ivs[0]); + SetMonData(pokemon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]); + SetMonData(pokemon, MON_DATA_DEF_IV, &inGameTrade->ivs[2]); + SetMonData(pokemon, MON_DATA_SPD_IV, &inGameTrade->ivs[3]); + SetMonData(pokemon, MON_DATA_SPATK_IV, &inGameTrade->ivs[4]); + SetMonData(pokemon, MON_DATA_SPDEF_IV, &inGameTrade->ivs[5]); + SetMonData(pokemon, MON_DATA_NICKNAME, inGameTrade->name); + SetMonData(pokemon, MON_DATA_OT_NAME, inGameTrade->otName); + SetMonData(pokemon, MON_DATA_OT_GENDER, &inGameTrade->otGender); + SetMonData(pokemon, MON_DATA_ALT_ABILITY, &inGameTrade->secondAbility); + SetMonData(pokemon, MON_DATA_BEAUTY, &inGameTrade->stats[1]); + SetMonData(pokemon, MON_DATA_CUTE, &inGameTrade->stats[2]); + SetMonData(pokemon, MON_DATA_COOL, &inGameTrade->stats[0]); + SetMonData(pokemon, MON_DATA_SMART, &inGameTrade->stats[3]); + SetMonData(pokemon, MON_DATA_TOUGH, &inGameTrade->stats[4]); + SetMonData(pokemon, MON_DATA_SHEEN, &inGameTrade->sheen); + SetMonData(pokemon, MON_DATA_MET_LOCATION, &metLocation); + + isMail = FALSE; + if (inGameTrade->heldItem != ITEM_NONE) + { + if (ItemIsMail(inGameTrade->heldItem)) + { + sub_804DAD4(&mail, inGameTrade); + gUnknown_02029700[0] = mail; + SetMonData(pokemon, MON_DATA_MAIL, &isMail); + SetMonData(pokemon, MON_DATA_HELD_ITEM, (u8 *)&inGameTrade->heldItem); + } + else + { + item = (u8 *)&inGameTrade->heldItem; + SetMonData(pokemon, MON_DATA_HELD_ITEM, item); + } + } + CalculateMonStats(&gEnemyParty[0]); +} + +static void sub_804DAD4(struct MailStruct *mail, const struct InGameTrade *trade) { + s32 i; + + for (i = 0; i < 9; i++) + { + mail->words[i] = gIngameTradeMail[trade->mailNum][i]; + } + + StringCopy(mail->playerName, trade->otName); + +#if GERMAN + PadNameString(mail->playerName, CHAR_SPACE); +#endif + + mail->trainerId[0] = trade->otId >> 24; + mail->trainerId[1] = trade->otId >> 16; + mail->trainerId[2] = trade->otId >> 8; + mail->trainerId[3] = trade->otId; + mail->species = trade->species; + mail->itemId = trade->heldItem; +} + +u16 sub_804DB2C(void) +{ + if (GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_IS_EGG)) + return SPECIES_NONE; + return GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_SPECIES); +} + +void sub_804DB68(void) +{ + sub_804D948(gSpecialVar_0x8005, gSpecialVar_0x8004); +} + +#ifdef NONMATCHING +static +#endif +void sub_804DB84(void) +{ + if (sub_804C29C() == TRUE) + { + DestroySprite(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]]); + FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]]); + sub_804BA94(gUnknown_020297D8[0], gUnknown_020297D8[1] % 6); + gUnknown_03004828->linkData[0] = 0xabcd; + gUnknown_03004828->unk_00bd = 1; + SetMainCallback2(sub_804DC18); + } + sub_804BB78(); + sub_804D63C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804DC18(void) +{ + u8 mpId = sub_804B2B0(); + sub_804D63C(); + if (mpId == 0 && gUnknown_03004828->unk_009c == 1 && gUnknown_03004828->unk_009d == 1) + { + gUnknown_03004828->linkData[0] = 0xdcba; + Trade_SendData(gUnknown_03004828); + gUnknown_03004828->unk_009c = 2; + gUnknown_03004828->unk_009d = 2; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804DC88(void) +{ + switch (gMain.state) + { + case 0: + gUnknown_03004828 = &ewram_2010000.unk_0f000; + gMain.state ++; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gOtherText_LinkStandby2); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + break; + case 1: + sub_80084A4(); + gMain.state = 100; + gUnknown_03004828->unk_00c0 = 0; + break; + case 100: + if (++ gUnknown_03004828->unk_00c0 > 180) + { + gMain.state = 101; + gUnknown_03004828->unk_00c0 = 0; + } + if (sub_8007ECC()) + { + gMain.state = 2; + } + break; + case 101: + if (sub_8007ECC()) + { + gMain.state = 2; + } + break; + case 2: + gMain.state = 50; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + sub_8003460(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + break; + case 50: + SetSecretBase2Field_9_AndHideBG(); + IncrementGameStat(GAME_STAT_POKEMON_TRADES); + sub_8125D80(); + gMain.state ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 51: + if (++ gUnknown_03004828->unk_00c0 == 5) + { + gMain.state ++; + } + break; + case 52: + if (sub_8125DA8()) + { + ClearSecretBase2Field_9_2(); + gMain.state = 4; + } + else + { + gUnknown_03004828->unk_00c0 = 0; + gMain.state = 51; + } + break; + case 4: + sub_8125DDC(); + gMain.state = 40; + gUnknown_03004828->unk_00c0 = 0; + break; + case 40: + if (++ gUnknown_03004828->unk_00c0 > 50) + { + gUnknown_03004828->unk_00c0 = 0; + gMain.state = 41; + } + break; + case 41: + sub_80084A4(); + gMain.state = 42; + break; + case 42: + if (sub_8007ECC()) + { + sub_8125E04(); + gSoftResetDisabled = FALSE; + gMain.state = 5; + } + break; + case 5: + if (++ gUnknown_03004828->unk_00c0 > 60) + { + gMain.state ++; + sub_80084A4(); + } + break; + case 6: + if (sub_8007ECC()) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gMain.state ++; + } + break; + case 7: + if (!gPaletteFade.active) + { + FadeOutBGM(3); + gMain.state ++; + } + break; + case 8: + if (IsBGMStopped() == TRUE) + { + sub_800832C(); + gMain.state ++; + } + break; + case 9: + if (!gReceivedRemoteLinkPlayers) + { + SetMainCallback2(sub_804E144); + } + break; + } + if (!HasLinkErrorOccurred()) + { + RunTasks(); + } + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804E144(void) +{ + if (!gPaletteFade.active) + SetMainCallback2((sub_8047CD8)); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_804E174(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_804E1A0, 10); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); +} + +static void sub_804E1A0(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_804B790); + gFieldCallback = sub_8080990; + DestroyTask(taskId); + } +} + +static void sub_804E1DC(void) +{ + u8 i; + u8 numRibbons = 0; + for (i = 0; i < 12; i ++) + { + numRibbons += GetMonData(&gEnemyParty[gUnknown_020297D8[1] % 6], MON_DATA_CHAMPION_RIBBON + i); + } + if (numRibbons != 0) + FlagSet(SYS_RIBBON_GET); +} + +void sub_804E22C(void) +{ + const u16 *src; + u16 *dest; + LZDecompressVram(gUnknown_08D00000, (u8 *)VRAM); + CpuCopy16(gUnknown_08D00524, ewram, 0x1000); + src = (const u16 *)ewram; + dest = (u16 *)(BG_SCREEN_ADDR(5)); + DmaCopy16(3, src, dest, 0x500) + LoadCompressedPalette(gUnknown_08D004E0, 0, 32); + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5); +} diff --git a/src/trainer_card.c b/src/engine/trainer_card.c index 626c5a7bf..bcb62ede6 100644 --- a/src/trainer_card.c +++ b/src/engine/trainer_card.c @@ -10,7 +10,7 @@ #include "money.h" #include "palette.h" #include "pokedex.h" -#include "rom4.h" +#include "overworld.h" #include "script_pokemon_80C4.h" #include "songs.h" #include "sound.h" @@ -509,7 +509,7 @@ static void sub_8093688(void) ewram0.var_5 = 0; ewram0.var_6 = 0; for (i = 0; i < 4; i++) - sub_80EB3FC(ewram0.var_20[i], ewram0.var_64.var_28[i]); + EasyChat_GetWordText(ewram0.var_20[i], ewram0.var_64.var_28[i]); sub_80936D4(); } diff --git a/src/trig.c b/src/engine/trig.c index e16a69e63..e16a69e63 100644 --- a/src/trig.c +++ b/src/engine/trig.c diff --git a/src/util.c b/src/engine/util.c index 582b9f806..582b9f806 100644 --- a/src/util.c +++ b/src/engine/util.c diff --git a/src/field/bard_music.c b/src/field/bard_music.c new file mode 100644 index 000000000..daf003233 --- /dev/null +++ b/src/field/bard_music.c @@ -0,0 +1,69 @@ +#include "global.h" +#include "bard_music.h" +#include "easy_chat.h" + +struct BardSound +{ + /*0x00*/ u8 var00; + /*0x01*/ s8 var01; + /*0x02*/ u16 var02; + /*0x04*/ u16 volume; + /*0x06*/ u16 var06; +}; + +extern const struct BardSound (*const gBardMusicTable[])[][6]; +extern s16 *gUnknown_08417068[]; +extern u32 gUnknown_084170F4[]; + +static s16 CalcWordPitch(u32 arg0, u32 songPos) +{ + return gUnknown_08417068[arg0][songPos]; +} + +#if ENGLISH +const struct BardSound *GetWordSounds(u16 group, u16 word) +{ + const struct BardSound (*sounds)[][6] = gBardMusicTable[group]; + + return (*sounds)[word]; +} +#elif GERMAN +const struct BardSound *GetWordSounds(u16 group, u16 word) +{ + const struct BardSound (*sounds)[][6] = gBardMusicTable[group]; + u32 index = de_sub_80EB748(group, word); + + return (*sounds)[index]; +} +#endif + +s32 GetWordPhonemes(struct BardSong *song, const struct BardSound *src, u16 arg2) +{ + s32 i; + s32 j; + s32 thirty; + + for (i = 0; i < 6; i++) + { + song->phonemes[i].sound = src[i].var00; + if (src[i].var00 != 0xFF) + { + s32 length = src[i].var01 + gUnknown_084170F4[src[i].var00]; + + song->phonemes[i].length = length; + song->phonemes[i].volume = src[i].volume; + song->var04 += length; + } + } + + for (j = 0, thirty = 30; j < i; j++) + song->phonemes[j].pitch = CalcWordPitch(thirty + arg2, j); + + song->currWord++; + song->currPhoneme = 0; + song->phonemeTimer = 0; + song->state = 0; + song->voiceInflection = 0; + + //warning: no return statement in function returning non-void +} diff --git a/src/berry.c b/src/field/berry.c index fa15672e7..d82eab2a6 100644 --- a/src/berry.c +++ b/src/field/berry.c @@ -974,7 +974,7 @@ const struct Berry gBerries[] = const struct BerryTree gBlankBerryTree = {0}; -extern u8 BerryTreeScript; +extern u8 S_BerryTree[]; extern u16 gScriptLastTalked; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -1078,7 +1078,7 @@ bool32 FieldObjectInteractionWaterBerryTree(void) bool8 IsPlayerFacingPlantedBerryTree(void) { - if (GetFieldObjectScriptPointerForComparison() == &BerryTreeScript + if (GetFieldObjectScriptPointerForComparison() == S_BerryTree && GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0) return TRUE; else @@ -1087,7 +1087,7 @@ bool8 IsPlayerFacingPlantedBerryTree(void) bool8 TryToWaterBerryTree(void) { - if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript) + if (GetFieldObjectScriptPointerForComparison() != S_BerryTree) return FALSE; else return FieldObjectInteractionWaterBerryTree(); diff --git a/src/berry_tag_screen.c b/src/field/berry_tag_screen.c index ff430e7b2..1413a02ca 100644 --- a/src/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -10,7 +10,7 @@ #include "menu.h" #include "menu_helpers.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "songs.h" #include "sound.h" #include "sprite.h" @@ -61,9 +61,9 @@ static void sub_8146440(u8 taskId); static void sub_8146480(u8 taskid); static void sub_81464E4(void); static void sub_8146600(u8 berry); -// static void sub_81466A0(void); +static void sub_81466A0(void); static void sub_81466E8(u8 taskId, s8 direction); -// static void sub_8146798(u8 berry); +static void sub_8146798(u8 berry); static void sub_8146810(s8 berry); static void sub_81468BC(void); @@ -347,7 +347,7 @@ static void sub_8146600(u8 berry) gUnknown_0203932E[4] = sub_80A7E5C(208); } -void sub_81466A0(void) +static void sub_81466A0(void) { u16 i; @@ -361,105 +361,36 @@ void sub_81466A0(void) } } -__attribute__((naked)) static void sub_81466E8(u8 taskId, s8 direction) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - lsls r1, 24\n\ - lsrs r2, r1, 24\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - ldr r1, _08146748 @ =gTasks + 0x8\n\ - adds r6, r0, r1\n\ - ldr r4, _0814674C @ =gBagPocketScrollStates\n\ - movs r0, 0xC\n\ - adds r0, r4\n\ - mov r8, r0\n\ - ldrb r1, [r0, 0x1]\n\ - ldrb r0, [r4, 0xC]\n\ - adds r1, r0\n\ - cmp r1, 0\n\ - bne _08146718\n\ - lsls r0, r2, 24\n\ - cmp r0, 0\n\ - blt _0814678C\n\ -_08146718:\n\ - adds r0, r1, 0x1\n\ - lsls r5, r2, 24\n\ - mov r1, r8\n\ - ldrb r1, [r1, 0x2]\n\ - cmp r0, r1\n\ - bne _08146728\n\ - cmp r5, 0\n\ - bgt _0814678C\n\ -_08146728:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - mov r2, r8\n\ - ldrb r3, [r2, 0x1]\n\ - ldrb r4, [r4, 0xC]\n\ - mov r12, r4\n\ - adds r0, r3, r4\n\ - asrs r2, r5, 24\n\ - adds r1, r0, r2\n\ - cmp r1, 0\n\ - bge _08146750\n\ - negs r0, r0\n\ - strh r0, [r6, 0x2]\n\ - b _08146766\n\ - .align 2, 0\n\ -_08146748: .4byte gTasks + 0x8\n\ -_0814674C: .4byte gBagPocketScrollStates\n\ -_08146750:\n\ - mov r4, r8\n\ - ldrb r0, [r4, 0x2]\n\ - cmp r1, r0\n\ - blt _08146764\n\ - subs r0, r3\n\ - mov r1, r12\n\ - subs r0, r1\n\ - subs r0, 0x1\n\ - strh r0, [r6, 0x2]\n\ - b _08146766\n\ -_08146764:\n\ - strh r2, [r6, 0x2]\n\ -_08146766:\n\ - ldr r0, _08146780 @ =gTasks\n\ - lsls r1, r7, 2\n\ - adds r1, r7\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _08146784 @ =sub_8146798\n\ - str r0, [r1]\n\ - cmp r5, 0\n\ - bge _08146788\n\ - movs r2, 0x10\n\ - negs r2, r2\n\ - adds r0, r2, 0\n\ - b _0814678A\n\ - .align 2, 0\n\ -_08146780: .4byte gTasks\n\ -_08146784: .4byte sub_8146798\n\ -_08146788:\n\ - movs r0, 0x10\n\ -_0814678A:\n\ - strh r0, [r6]\n\ -_0814678C:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + u8 berryPocket = 3; + s16 *data = gTasks[taskId].data; + + if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos == 0 + && direction < 0) + return; + if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + 1 == gBagPocketScrollStates[berryPocket].numSlots + && direction > 0) + return; + + PlaySE(SE_SELECT); + if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction < 0) + data[1] = -(gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos); + else if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction >= gBagPocketScrollStates[berryPocket].numSlots) + data[1] = gBagPocketScrollStates[berryPocket].numSlots - gBagPocketScrollStates[berryPocket].scrollTop - gBagPocketScrollStates[berryPocket].cursorPos - 1; + else + data[1] = direction; + + gTasks[taskId].func = sub_8146798; + + if (direction < 0) + data[0] = -16; + else + data[0] = 16; + } -void sub_8146798(u8 taskId) +static void sub_8146798(u8 taskId) { s16 *taskData = gTasks[taskId].data; @@ -478,94 +409,38 @@ void sub_8146798(u8 taskId) } } -__attribute__((naked)) static void sub_8146810(s8 berry) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - adds r4, r3, 0\n\ - lsls r0, r3, 24\n\ - asrs r1, r0, 24\n\ - cmp r1, 0\n\ - ble _08146848\n\ - ldr r0, _08146840 @ =gBagPocketScrollStates\n\ - adds r4, r0, 0\n\ - adds r4, 0xC\n\ - ldrb r2, [r0, 0xC]\n\ - adds r1, r2, r1\n\ - adds r6, r0, 0\n\ - cmp r1, 0x7\n\ - ble _08146844\n\ - adds r0, r3, 0\n\ - adds r0, 0xF9\n\ - adds r0, r2, r0\n\ - ldrb r1, [r4, 0x1]\n\ - adds r0, r1\n\ - strb r0, [r4, 0x1]\n\ - movs r0, 0x7\n\ - b _0814686E\n\ - .align 2, 0\n\ -_08146840: .4byte gBagPocketScrollStates\n\ -_08146844:\n\ - adds r0, r2, r3\n\ - b _0814686E\n\ -_08146848:\n\ - ldr r0, _08146868 @ =gBagPocketScrollStates\n\ - adds r5, r0, 0\n\ - adds r5, 0xC\n\ - ldrb r2, [r0, 0xC]\n\ - adds r1, r2, r1\n\ - adds r6, r0, 0\n\ - cmp r1, 0\n\ - bge _0814686C\n\ - adds r0, r2, r3\n\ - ldrb r1, [r5, 0x1]\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strb r0, [r5, 0x1]\n\ - strb r1, [r6, 0xC]\n\ - b _08146870\n\ - .align 2, 0\n\ -_08146868: .4byte gBagPocketScrollStates\n\ -_0814686C:\n\ - adds r0, r2, r4\n\ -_0814686E:\n\ - strb r0, [r6, 0xC]\n\ -_08146870:\n\ - ldr r2, _081468AC @ =gScriptItemId\n\ - movs r0, 0x3\n\ - lsls r0, 2\n\ - adds r0, r6\n\ - ldrb r1, [r0, 0x1]\n\ - ldrb r0, [r0]\n\ - adds r1, r0\n\ - ldr r0, _081468B0 @ =gCurrentBagPocketItemSlots\n\ - ldr r0, [r0]\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrh r0, [r1]\n\ - strh r0, [r2]\n\ - ldr r0, _081468B4 @ =gUnknown_0203932C\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, _081468B8 @ =gSprites\n\ - adds r0, r1\n\ - bl DestroySprite\n\ - bl sub_81466A0\n\ - bl sub_80A7DD4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_081468AC: .4byte gScriptItemId\n\ -_081468B0: .4byte gCurrentBagPocketItemSlots\n\ -_081468B4: .4byte gUnknown_0203932C\n\ -_081468B8: .4byte gSprites\n\ - .syntax divided\n"); + u8 berryPocket = 3; + + if (berry > 0) + { + if (gBagPocketScrollStates[berryPocket].cursorPos + berry > 7) + { + gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos - 7 + berry; + gBagPocketScrollStates[berryPocket].cursorPos = 7; + } + else + { + gBagPocketScrollStates[berryPocket].cursorPos += berry; + } + } + else + { + if (gBagPocketScrollStates[berryPocket].cursorPos + berry < 0) + { + gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos + berry; + gBagPocketScrollStates[berryPocket].cursorPos = 0; + } + else + { + gBagPocketScrollStates[berryPocket].cursorPos += berry; + } + } + gScriptItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId; + DestroySprite(&gSprites[gUnknown_0203932C]); + sub_81466A0(); + sub_80A7DD4(); } static void sub_81468BC(void) diff --git a/src/bike.c b/src/field/bike.c index 58a4f38f4..8df901b40 100644 --- a/src/bike.c +++ b/src/field/bike.c @@ -6,12 +6,10 @@ #include "flags.h" #include "global.fieldmap.h" #include "metatile_behavior.h" -#include "rom4.h" +#include "overworld.h" #include "songs.h" #include "sound.h" -extern u8 sub_80608A4(u8); - extern u8 gUnknown_02039250; extern u8 gUnknown_02039251; extern u8 gUnknown_0202E854; @@ -937,14 +935,14 @@ void GetOnOffBike(u8 var) if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) { SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); - sav1_reset_battle_music_maybe(); - sub_8053E90(); + Overworld_ClearSavedMusic(); + Overworld_PlaySpecialMapMusic(); } else { SetPlayerAvatarTransitionFlags(var); - sav1_set_battle_music_maybe(BGM_CYCLING); - sub_8053FB0(BGM_CYCLING); + Overworld_SetSavedMusic(BGM_CYCLING); + Overworld_ChangeMusicTo(BGM_CYCLING); } } diff --git a/src/birch_pc.c b/src/field/birch_pc.c index 5fb6427c3..9872dd54d 100644 --- a/src/birch_pc.c +++ b/src/field/birch_pc.c @@ -91,15 +91,15 @@ const u8 *GetPokedexRatingText(u16 count) return gBirchDexRatingText_LessThan200; if (count == 200) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - || GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + || GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } if (count == 201) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - && GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + && GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } diff --git a/src/braille_puzzles.c b/src/field/braille_puzzles.c index b8d7cd386..b11b1ff3a 100644 --- a/src/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -6,6 +6,7 @@ #include "fieldmap.h" #include "flags.h" #include "main.h" +#include "map_constants.h" #include "map_obj_lock.h" #include "menu.h" #include "rom6.h" @@ -19,11 +20,13 @@ extern u8 gPlayerPartyCount; extern u8 gLastFieldPokeMenuOpened; -extern u8 gIslandCave_EventScript_OpenRegiiceChamber[]; // regiice event script +extern u8 S_OpenRegiceChamber[]; // regiice event script bool8 ShouldDoBrailleDigEffect(void) { - if (!FlagGet(SYS_BRAILLE_DIG) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x47)) + if (!FlagGet(SYS_BRAILLE_DIG) + && (gSaveBlock1.location.mapGroup == MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM + && gSaveBlock1.location.mapNum == MAP_ID_SEALED_CHAMBER_OUTER_ROOM)) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 3) return TRUE; @@ -52,10 +55,11 @@ void DoBrailleDigEffect(void) bool8 CheckRelicanthWailord(void) { + // First comes Relicanth. if (GetMonData(&gPlayerParty, MON_DATA_SPECIES2, 0) == SPECIES_RELICANTH) { CalculatePlayerPartyCount(); - + // Last comes Wailord if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES2, 0) == SPECIES_WAILORD) return TRUE; } @@ -64,7 +68,7 @@ bool8 CheckRelicanthWailord(void) bool8 ShouldDoBrailleStrengthEffect(void) { - if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x6)) + if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS)) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23) return TRUE; @@ -94,7 +98,7 @@ void DoBrailleStrengthEffect(void) bool8 ShouldDoBrailleFlyEffect(void) { - if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x44)) + if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB)) { if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25) return TRUE; @@ -105,8 +109,8 @@ bool8 ShouldDoBrailleFlyEffect(void) void DoBrailleFlyEffect(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - FieldEffectStart(0x3C); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB); } bool8 FldEff_UseFlyAncientTomb(void) @@ -120,7 +124,7 @@ bool8 FldEff_UseFlyAncientTomb(void) void UseFlyAncientTomb_Callback(void) { - FieldEffectActiveListRemove(0x3C); + FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB); UseFlyAncientTomb_Finish(); } @@ -158,7 +162,7 @@ void Task_BrailleWait(u8 taskId) if (BrailleWait_CheckButtonPress() != FALSE) { MenuZeroFillScreen(); - PlaySE(5); + PlaySE(SE_SELECT); data[0] = 2; } else @@ -191,7 +195,7 @@ void Task_BrailleWait(u8 taskId) break; case 4: sub_8064E2C(); - ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber); + ScriptContext1_SetupScript(S_OpenRegiceChamber); DestroyTask(taskId); break; } @@ -199,14 +203,14 @@ void Task_BrailleWait(u8 taskId) bool32 BrailleWait_CheckButtonPress(void) { - u16 var = 0xFF; + u16 keyMask = A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON | DPAD_ANY; - if (gSaveBlock2.optionsButtonMode == 1) - var |= 0x300; - if (gSaveBlock2.optionsButtonMode == 2) - var |= 0x200; + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + keyMask |= L_BUTTON | R_BUTTON; + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A) + keyMask |= L_BUTTON; - if ((var & gMain.newKeys) != FALSE) + if (gMain.newKeys & keyMask) return TRUE; else return FALSE; diff --git a/src/choose_party.c b/src/field/choose_party.c index d8df44028..9cdf63fc8 100644 --- a/src/choose_party.c +++ b/src/field/choose_party.c @@ -6,9 +6,10 @@ #include "name_string_util.h" #include "palette.h" #include "party_menu.h" +#include "pokemon_menu.h" #include "pokemon.h" #include "pokemon_summary_screen.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "songs.h" #include "sound.h" @@ -50,10 +51,8 @@ extern void PartyMenuPrintMonsLevelOrStatus(void); extern void PrintPartyMenuMonNicknames(void); extern void sub_806BC3C(u8, u8); extern u8 sub_806B58C(u8); -extern void sub_806D538(); extern u16 sub_806BE38(); extern u8 sub_806CA38(); -extern void sub_808B5B4(); extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8); extern u8 sub_806B124(); extern void sub_806C994(); @@ -84,8 +83,6 @@ extern void PartyMenuDoPutNicknameTilemap(u16, u8, u8, u8, const u8 *); extern void box_print(u8, int, const u8 *); extern void sub_806BCE8(void); extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int); -extern u16 sub_806BD80(); -extern void sub_806BF74(); static void ClearPartySelection(void); static bool8 IsMonAllowedInBattleTower(struct Pokemon *); @@ -211,11 +208,10 @@ bool8 sub_8121E78(void) return FALSE; } -#ifdef NONMATCHING static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) { - u16 r3; - s32 i; + u16 species; + s32 i = 0; if (GetMonData(pkmn, MON_DATA_IS_EGG)) return FALSE; @@ -232,97 +228,16 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) && GetMonData(pkmn, MON_DATA_LEVEL) > 50) return FALSE; - r3 = GetMonData(pkmn, MON_DATA_SPECIES); - // Can't stop the compiler from optimizing out the first index - for (i = 0; gBattleTowerBanlist[i] != 0xFFFF; i++) + // Check if the pkmn is in the ban list + species = GetMonData(pkmn, MON_DATA_SPECIES); + while (gBattleTowerBanlist[i] != 0xFFFF) { - if (gBattleTowerBanlist[i] == r3) + if (gBattleTowerBanlist[i] == species) return FALSE; + i++; } return TRUE; } -#else -__attribute__((naked)) -static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) -{ - asm_unified( - "push {r4,lr}\n\ - adds r4, r0, 0\n\ - movs r1, 0x2D\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _0812207C\n\ - ldr r0, _08122058 @ =0x0201b000\n\ - ldr r1, _0812205C @ =0x00000263\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08122060\n\ - adds r0, r4, 0\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _0812207C\n\ - b _081220B6\n\ - .align 2, 0\n\ -_08122058: .4byte 0x0201b000\n\ -_0812205C: .4byte 0x00000263\n\ -_08122060:\n\ - ldr r0, _08122080 @ =gSaveBlock2\n\ - ldr r1, _08122084 @ =0x00000554\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08122088\n\ - adds r0, r4, 0\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x32\n\ - bls _08122088\n\ -_0812207C:\n\ - movs r0, 0\n\ - b _081220B8\n\ - .align 2, 0\n\ -_08122080: .4byte gSaveBlock2\n\ -_08122084: .4byte 0x00000554\n\ -_08122088:\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - ldr r1, _081220C0 @ =gBattleTowerBanlist\n\ - movs r0, 0\n\ - lsls r0, 1\n\ - adds r2, r0, r1\n\ - ldrh r0, [r2]\n\ - ldr r1, _081220C4 @ =0x0000ffff\n\ - cmp r0, r1\n\ - beq _081220B6\n\ - adds r4, r1, 0\n\ - adds r1, r2, 0\n\ -_081220A8:\n\ - ldrh r0, [r1]\n\ - cmp r0, r3\n\ - beq _0812207C\n\ - adds r1, 0x2\n\ - ldrh r0, [r1]\n\ - cmp r0, r4\n\ - bne _081220A8\n\ -_081220B6:\n\ - movs r0, 0x1\n\ -_081220B8:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_081220C0: .4byte gBattleTowerBanlist\n\ -_081220C4: .4byte 0x0000ffff\n" - ); -} -#endif static u8 sub_81220C8(void) { diff --git a/src/coins.c b/src/field/coins.c index 3c6356612..91a4b508d 100644 --- a/src/coins.c +++ b/src/field/coins.c @@ -6,47 +6,47 @@ #define MAX_COINS 9999 -void UpdateCoinsWindow(s32 a, u8 b, u8 c) +void UpdateCoinsWindow(s32 coins, u8 x, u8 y) { - PrintCoins(a, 4, b + 2, c + 1); + PrintCoins(coins, 4, x + 2, y + 1); } -void ShowCoinsWindow(u32 a, u8 b, u8 c) +void ShowCoinsWindow(u32 coins, u8 x, u8 y) { - MenuDrawTextWindow(b, c, b + 9, c + 3); - UpdateCoinsWindow(a, b, c); + MenuDrawTextWindow(x, y, x + 9, y + 3); + UpdateCoinsWindow(coins, x, y); } -void HideCoinsWindow(u8 a, u8 b) +void HideCoinsWindow(u8 x, u8 y) { - MenuZeroFillWindowRect(a, b, a + 9, b + 3); + MenuZeroFillWindowRect(x, y, x + 9, y + 3); } -void PrintCoins(s32 a, u8 b, u8 c, u8 d) +void PrintCoins(s32 coins, u8 b, u8 x, u8 y) { u8 string[16]; u8 *ptr; u8 r1; u8 foo; - ConvertIntToDecimalString(string, a); + ConvertIntToDecimalString(string, coins); r1 = (b * 6 + 0x21 - 8 * (b + 2)); - c = c - r1 / 8; + x = x - r1 / 8; foo = r1 % 8; ptr = gStringVar1; if (foo) { - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x11; ptr[2] = 8 - (foo); ptr += 3; } - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x11; ptr[2] = (b - StringLength(string)) * 6; ptr += 3; StringCopy(ptr, string); - MenuPrint(gOtherText_Coins2, c, d); + MenuPrint(gOtherText_Coins2, x, y); } u16 GetCoins(void) diff --git a/src/coord_event_weather.c b/src/field/coord_event_weather.c index 9c5a1ca4d..9c5a1ca4d 100644 --- a/src/coord_event_weather.c +++ b/src/field/coord_event_weather.c diff --git a/src/field/daycare.c b/src/field/daycare.c new file mode 100644 index 000000000..591b5b188 --- /dev/null +++ b/src/field/daycare.c @@ -0,0 +1,1690 @@ +#include "global.h" +#include "daycare.h" +#include "pokemon.h" +#include "event_data.h" +#include "species.h" +#include "items.h" +#include "text.h" +#include "string_util.h" +#include "mail_data.h" +#include "name_string_util.h" +#include "pokemon_storage_system.h" +#include "rng.h" +#include "moves.h" +#include "trade.h" +#include "strings2.h" +#include "data/pokemon/egg_moves.h" +#include "party_menu.h" +#include "field_effect.h" +#include "main.h" +#include "menu.h" +#include "sound.h" +#include "songs.h" +#include "script.h" +#include "overworld.h" + +IWRAM_DATA u16 gUnknown_03000470[52]; +IWRAM_DATA u16 gUnknown_030004D8[4]; +IWRAM_DATA u16 gUnknown_030004E0[4]; +IWRAM_DATA u16 gUnknown_030004E8[12]; +IWRAM_DATA u16 gUnknown_03000500[4]; + +static void sub_80417F4(struct DayCareMail *); +static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *); +static u8 daycare_relationship_score(struct DayCareData *); + +const u8 *const gUnknown_08209AC4[] = { + DaycareText_GetAlongVeryWell, + DaycareText_GetAlong, + DaycareText_DontLikeOther, + DaycareText_PlayOther +}; + +const u8 gUnknown_08209AD4[] = _("タマゴ"); + +u8 *GetMonNick(struct Pokemon *mon, u8 *dest) +{ + s8 nickname[POKEMON_NAME_LENGTH * 2]; + + GetMonData(mon, MON_DATA_NICKNAME, nickname); + return StringCopy10(dest, nickname); +} + +u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest) +{ + s8 nickname[POKEMON_NAME_LENGTH * 2]; + + GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); + return StringCopy10(dest, nickname); +} + +u8 Daycare_CountPokemon(struct DayCareData *daycare_data) +{ + u8 i, count; + count = 0; + + for(i = 0;i <= 1;i++) + if(GetBoxMonData(&daycare_data->mons[i], MON_DATA_SPECIES) != 0) + count++; + + return count; +} + +void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixingDayCareMail * daycareMailEtc) +{ + u8 i; + u8 specCount; + specCount = 0; + for (i=0; i<2; i++) + { + if (GetBoxMonData(&box_pokemon[i], MON_DATA_SPECIES) != SPECIES_NONE) + { + specCount ++; + if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE) + { + daycareMailEtc->unk74[i] = 0; + } else + { + daycareMailEtc->unk74[i] = 1; + } + } else + { + daycareMailEtc->unk74[i] = 1; + } + } + daycareMailEtc->unk70 = specCount; +} + +static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) +{ + u8 i; + + for(i = 0;i <= 1;i++) + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0) + return i; + + return -1; +} + +static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data) +{ + s8 empty_slot; + u8 mail; + u8 *names; + + empty_slot = Daycare_FindEmptySpot(daycare_data->mons); + if(MonHasMail(mon)) { + StringCopy((names = daycare_data->misc.mail[empty_slot].names), gSaveBlock2.playerName); + PadNameString(names, 0xFC); + names += 8; + GetMonNick(mon, names); + mail = GetMonData(mon, MON_DATA_MAIL); + daycare_data->misc.mail[empty_slot].message = gSaveBlock1.mail[mail]; + TakeMailFromMon(mon); + } + daycare_data->mons[empty_slot] = mon->box; + BoxMonRestorePP(&daycare_data->mons[empty_slot]); + daycare_data->misc.countersEtc.steps[empty_slot] = 0; + ZeroMonData(mon); + party_compaction(); + CalculatePlayerPartyCount(); +} + +void Daycare_SendPokemon_Special() +{ + Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData); +} + +static void sub_80414C0(struct DayCareData * daycare_data) +{ + if((GetBoxMonData(&daycare_data->mons[1], MON_DATA_SPECIES) != 0) && GetBoxMonData(&daycare_data->mons[0], MON_DATA_SPECIES) == 0) + { + daycare_data->mons[0] = daycare_data->mons[1]; + ZeroBoxMonData(&daycare_data->mons[1]); + daycare_data->misc.mail[0] = daycare_data->misc.mail[1]; + daycare_data->misc.countersEtc.steps[0] = daycare_data->misc.countersEtc.steps[1]; + daycare_data->misc.countersEtc.steps[1] = 0; + sub_80417F4(&daycare_data->misc.mail[1]); + } +} + +u8 TryIncrementMonLevel(struct Pokemon *); +extern u16 gMoveToLearn; + +static void DayCare_LevelUpMoves(struct Pokemon * mon) +{ + s32 i; + u8 r6; + u16 temp; + + for (i = 0; i < MAX_LEVEL; i++) + { + if (TryIncrementMonLevel(mon)) + { + r6 = 1; + while ((temp = MonTryLearningNewMove(mon, r6)) != 0) + { + r6 = 0; + if (temp == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn); + } + } + else + break; + } + + CalculateMonStats(mon); +} + +static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) +{ + u16 species; + u32 experience; + struct Pokemon pokemon; + + GetBoxMonNick(&daycare_data->mons[slot], gStringVar1); + species = GetBoxMonData(&daycare_data->mons[slot], MON_DATA_SPECIES); + sub_803B4B4(&daycare_data->mons[slot], &pokemon); + if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) + { + experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->misc.countersEtc.steps[slot]; + SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); + DayCare_LevelUpMoves(&pokemon); + } + gPlayerParty[PARTY_SIZE - 1] = pokemon; + if (daycare_data->misc.mail[slot].message.itemId) + { + GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->misc.mail[slot].message); + sub_80417F4(&daycare_data->misc.mail[slot]); + } + party_compaction(); + ZeroBoxMonData(&daycare_data->mons[slot]); + daycare_data->misc.countersEtc.steps[slot] = 0; + sub_80414C0(daycare_data); + CalculatePlayerPartyCount(); + return species; +} + +u16 sub_8041648() +{ + return sub_8041570(&gSaveBlock1.daycareData, gSpecialVar_0x8004); +} + +u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ + struct BoxPokemon temp = *mon; + u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; + SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); + return GetLevelFromBoxMonExp(&temp); +} + +static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) +{ + u8 levelBefore; + u8 levelAfter; + + levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]); + levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->misc.countersEtc.steps[slot]); + return levelAfter - levelBefore; +} + +static u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) +{ + u8 levelDelta = sub_80416A0(dayCareData, slot); + GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, levelDelta, STR_CONV_MODE_LEFT_ALIGN, 2); + return levelDelta; +} + +static u16 sub_8041728(struct DayCareData *dayCareData, u8 slot) +{ + u16 cost; + + u8 levelDelta = sub_80416A0(dayCareData, slot); + GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); + cost = 100 + 100 * levelDelta; + ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5); + return cost; +} + +void sub_8041770(void) +{ + gSpecialVar_0x8005 = sub_8041728(&gSaveBlock1.daycareData, gSpecialVar_0x8004); +} + +void sub_8041790(u16 i) +{ + gSaveBlock1.daycareData.misc.countersEtc.steps[0] += i; + gSaveBlock1.daycareData.misc.countersEtc.steps[1] += i; +} + +u8 sub_80417B8(void) +{ + if (GetBoxMonData(&gSaveBlock1.daycareData.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0) + return sub_80416E8(&gSaveBlock1.daycareData, gSpecialVar_0x8004); + return 0; +} + +static void sub_80417F4(struct DayCareMail *mail) +{ + u8 zero; + u8 *names; + u8 *names2; + int i; + zero = 0; + for (i = 7, names = mail->names + 7; i >= 0; i --) + *names-- = zero; + names2 = mail->names + 8; + zero = 0; + names = mail->names + 18; + do *names-- = zero; while ((int)names >= (int)names2); + ClearMailStruct(&mail->message); +} + +void unref_sub_8041824(struct DayCareData *dayCareData) +{ + u8 slot; + for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++) + { + ZeroBoxMonData(&dayCareData->mons[slot]); + dayCareData->misc.countersEtc.steps[slot] = 0; + sub_80417F4(&dayCareData->misc.mail[slot]); + } + dayCareData->misc.countersEtc.personalityLo = 0; + dayCareData->misc.countersEtc.unk_11a = 0; +} + +u16 sub_8041870(u16 species) +{ + int i, j, k; + bool8 found; + for (i = 0; i < 5; i ++) + { + found = FALSE; + for (j = 1; j < NUM_SPECIES; j ++) + { + for (k = 0; k < 5; k ++) + { + if (gEvolutionTable[j].evolutions[k].targetSpecies == species) + { + species = j; + found = TRUE; + break; + } + } + if (found) + break; + } + if (j == 412) + break; + } + return species; +} + +static void sub_80418F0(struct DayCareData *dayCareData) +{ + dayCareData->misc.countersEtc.personalityLo = (Random() % 0xfffe) + 1; + FlagSet(0x86); +} + +static void sub_804191C(struct DayCareData *dayCareData) +{ + dayCareData->misc.countersEtc.personalityLo = Random() | 0x8000; + FlagSet(0x86); +} + +void sub_8041940(void) +{ + sub_80418F0(&gSaveBlock1.daycareData); +} + +void sub_8041950(void) +{ + sub_804191C(&gSaveBlock1.daycareData); +} + +static void sub_8041960(u8 *data, u8 idx) +{ + int i, j; + u8 temp[6]; + data[idx] = 0xff; + for (i = 0; i < 6; i ++) + temp[i] = data[i]; + j = 0; + for (i = 0; i < 6; i ++) + if (temp[i] != 0xff) + data[j++] = temp[i]; +} + +static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) +{ + u8 i; + u8 selectedIvs[3]; + u8 allIvs[6]; + u8 whichParent[3]; + u8 iv; + for (i = 0; i < 6; i ++) + allIvs[i] = i; + for (i = 0; i < 3; i ++) + { + selectedIvs[i] = allIvs[Random() % (6 - i)]; + sub_8041960(allIvs, selectedIvs[i]); + } + for (i = 0; i < 3; i ++) + whichParent[i] = Random() % 2; + for (i = 0; i < 3; i ++) + { + switch (selectedIvs[i]) + { + case 0: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_HP_IV); + SetMonData(egg, MON_DATA_HP_IV, &iv); + break; + case 1: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_ATK_IV); + SetMonData(egg, MON_DATA_ATK_IV, &iv); + break; + case 2: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_DEF_IV); + SetMonData(egg, MON_DATA_DEF_IV, &iv); + break; + case 3: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPD_IV); + SetMonData(egg, MON_DATA_SPD_IV, &iv); + break; + case 4: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV); + SetMonData(egg, MON_DATA_SPATK_IV, &iv); + break; + case 5: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPDEF_IV); + SetMonData(egg, MON_DATA_SPDEF_IV, &iv); + break; + } + } +} + +#ifdef NONMATCHING +static +#endif +u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves) +{ + u16 eggMoveIdx; + u16 numMovesFound; + u16 species; + u16 i; + + numMovesFound = 0; + eggMoveIdx = 0; + species = GetMonData(pokemon, MON_DATA_SPECIES); + for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i ++) + { + if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) + { + eggMoveIdx = i + 1; + break; + } + } + for (i = 0; i < 10; i ++) + { + if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) + { + break; + } + eggMoves[i] = gEggMoves[eggMoveIdx + i]; + numMovesFound++; + } + return numMovesFound; +} + +#ifdef NONMATCHING + +void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) +{ + u16 numSharedParentMoves; + u8 numLevelUpMoves; + u8 numEggMoves; + u16 i, j; + + numSharedParentMoves = 0; + for (i = 0; i < 4; i ++) + { + gUnknown_03000500[i] = 0; + gUnknown_030004D8[i] = 0; + gUnknown_030004E0[i] = 0; + } + for (i = 0; i < 10; i ++) + gUnknown_030004E8[i] = 0; + for (i = 0; i < 50; i ++) + gUnknown_03000470[i] = 0; + + numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), gUnknown_03000470); + for (i = 0; i < 4; i ++) + { + gUnknown_030004D8[i] = GetBoxMonData(dad, MON_DATA_MOVE1 + i); + gUnknown_03000500[i] = GetBoxMonData(mom, MON_DATA_MOVE1 + i); + } + numEggMoves = pokemon_get_eggmoves(egg, gUnknown_030004E8); + + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] != MOVE_NONE) + { + for (j = 0; j < numEggMoves; j ++) + { + if (gUnknown_030004D8[i] == gUnknown_030004E8[j]) + { + if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]); + break; + } + } + } + else + break; + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] != MOVE_NONE) + { + for (j = 0; j < 50 + 8; j ++) + { + if (gUnknown_030004D8[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j)) + { + if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]); + } + } + } + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] == MOVE_NONE) + break; + for (j = 0; j < 4; j ++) + { + if (gUnknown_030004D8[i] == gUnknown_03000500[j] && gUnknown_030004D8[i] != MOVE_NONE) + gUnknown_030004E0[numSharedParentMoves++] = gUnknown_030004D8[i]; + } + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004E0[i] == MOVE_NONE) + break; + for (j = 0; j < numLevelUpMoves; j ++) + { + if (gUnknown_03000470[j] != MOVE_NONE && gUnknown_030004E0[i] == gUnknown_03000470[j]) + { + if (GiveMoveToMon(egg, gUnknown_030004E0[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004E0[i]); + break; + } + } + } +} +#else +__attribute__((naked)) +void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0xC\n" + "\tadds r7, r0, 0\n" + "\tmov r10, r1\n" + "\tmov r9, r2\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp]\n" + "\tmovs r6, 0\n" + "\tldr r5, _08041CC8 @ =gUnknown_03000500\n" + "\tmovs r2, 0\n" + "\tldr r4, _08041CCC @ =gUnknown_030004D8\n" + "\tldr r3, _08041CD0 @ =gUnknown_030004E0\n" + "_08041BE4:\n" + "\tlsls r1, r6, 1\n" + "\tadds r0, r1, r5\n" + "\tstrh r2, [r0]\n" + "\tadds r0, r1, r4\n" + "\tstrh r2, [r0]\n" + "\tadds r1, r3\n" + "\tstrh r2, [r1]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041BE4\n" + "\tmovs r6, 0\n" + "\tldr r2, _08041CD4 @ =gUnknown_030004E8\n" + "\tmovs r1, 0\n" + "_08041C02:\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x9\n" + "\tbls _08041C02\n" + "\tmovs r6, 0\n" + "\tldr r2, _08041CD8 @ =gUnknown_03000470\n" + "\tmovs r1, 0\n" + "_08041C18:\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x31\n" + "\tbls _08041C18\n" + "\tadds r0, r7, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetMonData\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r1, _08041CD8 @ =gUnknown_03000470\n" + "\tbl GetLevelUpMovesBySpecies\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r6, 0\n" + "\tldr r1, _08041CCC @ =gUnknown_030004D8\n" + "\tmov r8, r1\n" + "_08041C46:\n" + "\tadds r5, r6, 0\n" + "\tadds r5, 0xD\n" + "\tmov r0, r10\n" + "\tadds r1, r5, 0\n" + "\tbl GetBoxMonData\n" + "\tlsls r4, r6, 1\n" + "\tmov r2, r8\n" + "\tadds r1, r4, r2\n" + "\tstrh r0, [r1]\n" + "\tmov r0, r9\n" + "\tadds r1, r5, 0\n" + "\tbl GetBoxMonData\n" + "\tldr r1, _08041CC8 @ =gUnknown_03000500\n" + "\tadds r4, r1\n" + "\tstrh r0, [r4]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041C46\n" + "\tldr r1, _08041CD4 @ =gUnknown_030004E8\n" + "\tadds r0, r7, 0\n" + "\tbl pokemon_get_eggmoves\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r8, r0\n" + "\tmovs r6, 0\n" + "_08041C82:\n" + "\tldr r0, _08041CCC @ =gUnknown_030004D8\n" + "\tlsls r1, r6, 1\n" + "\tadds r2, r1, r0\n" + "\tldrh r1, [r2]\n" + "\tmov r9, r0\n" + "\tcmp r1, 0\n" + "\tbeq _08041CF8\n" + "\tmovs r5, 0\n" + "\tcmp r5, r8\n" + "\tbcs _08041CEA\n" + "\tadds r4, r2, 0\n" + "\tldr r2, _08041CDC @ =0x0000ffff\n" + "_08041C9A:\n" + "\tldr r0, _08041CD4 @ =gUnknown_030004E8\n" + "\tlsls r1, r5, 1\n" + "\tadds r1, r0\n" + "\tldrh r0, [r4]\n" + "\tldrh r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbne _08041CE0\n" + "\tadds r1, r0, 0\n" + "\tadds r0, r7, 0\n" + "\tstr r2, [sp, 0x8]\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, [sp, 0x8]\n" + "\tcmp r0, r2\n" + "\tbne _08041CEA\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "\tb _08041CEA\n" + "\t.align 2, 0\n" + "_08041CC8: .4byte gUnknown_03000500\n" + "_08041CCC: .4byte gUnknown_030004D8\n" + "_08041CD0: .4byte gUnknown_030004E0\n" + "_08041CD4: .4byte gUnknown_030004E8\n" + "_08041CD8: .4byte gUnknown_03000470\n" + "_08041CDC: .4byte 0x0000ffff\n" + "_08041CE0:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, r8\n" + "\tbcc _08041C9A\n" + "_08041CEA:\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tldr r3, _08041E14 @ =gUnknown_030004D8\n" + "\tmov r9, r3\n" + "\tcmp r6, 0x3\n" + "\tbls _08041C82\n" + "_08041CF8:\n" + "\tmovs r6, 0\n" + "_08041CFA:\n" + "\tlsls r0, r6, 1\n" + "\tmov r2, r9\n" + "\tadds r1, r0, r2\n" + "\tldrh r1, [r1]\n" + "\tadds r2, r0, 0\n" + "\tadds r6, 0x1\n" + "\tmov r8, r6\n" + "\tcmp r1, 0\n" + "\tbeq _08041D5C\n" + "\tmovs r5, 0\n" + "\tldr r0, _08041E14 @ =gUnknown_030004D8\n" + "\tadds r4, r2, r0\n" + "\tldr r6, _08041E18 @ =0x0000ffff\n" + "\tmov r9, r0\n" + "_08041D16:\n" + "\tldr r3, _08041E1C @ =0x00000121\n" + "\tadds r0, r5, r3\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tbl ItemIdToBattleMoveId\n" + "\tldrh r1, [r4]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _08041D52\n" + "\tlsls r1, r5, 24\n" + "\tlsrs r1, 24\n" + "\tadds r0, r7, 0\n" + "\tbl CanMonLearnTMHM\n" + "\tcmp r0, 0\n" + "\tbeq _08041D52\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, r6\n" + "\tbne _08041D52\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "_08041D52:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, 0x39\n" + "\tbls _08041D16\n" + "_08041D5C:\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041CFA\n" + "\tmovs r6, 0\n" + "\tmov r2, r9\n" + "\tldrh r0, [r2]\n" + "\tldr r3, _08041E20 @ =gUnknown_030004E0\n" + "\tmov r10, r3\n" + "\tcmp r0, 0\n" + "\tbeq _08041DC6\n" + "\tmov r4, r9\n" + "\tldr r0, _08041E24 @ =gUnknown_03000500\n" + "\tmov r9, r0\n" + "\tmov r12, r10\n" + "_08041D7C:\n" + "\tmovs r5, 0\n" + "\tlsls r2, r6, 1\n" + "\tadds r6, 0x1\n" + "\tmov r8, r6\n" + "\tadds r3, r2, r4\n" + "_08041D86:\n" + "\tlsls r0, r5, 1\n" + "\tadd r0, r9\n" + "\tldrh r2, [r3]\n" + "\tadds r1, r2, 0\n" + "\tldrh r0, [r0]\n" + "\tcmp r1, r0\n" + "\tbne _08041DA8\n" + "\tcmp r1, 0\n" + "\tbeq _08041DA8\n" + "\tldr r1, [sp]\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tstr r0, [sp]\n" + "\tlsls r1, 1\n" + "\tadd r1, r12\n" + "\tstrh r2, [r1]\n" + "_08041DA8:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, 0x3\n" + "\tbls _08041D86\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbhi _08041DC6\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r4\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08041D7C\n" + "_08041DC6:\n" + "\tmovs r6, 0\n" + "\tmov r2, r10\n" + "\tldrh r0, [r2]\n" + "\tcmp r0, 0\n" + "\tbeq _08041E50\n" + "_08041DD0:\n" + "\tmovs r5, 0\n" + "\tadds r3, r6, 0x1\n" + "\tmov r8, r3\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r5, r0\n" + "\tbcs _08041E38\n" + "\tldr r2, _08041E18 @ =0x0000ffff\n" + "_08041DDE:\n" + "\tldr r1, _08041E28 @ =gUnknown_03000470\n" + "\tlsls r0, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tcmp r1, 0\n" + "\tbeq _08041E2C\n" + "\tlsls r0, r6, 1\n" + "\tmov r3, r10\n" + "\tadds r4, r0, r3\n" + "\tldrh r0, [r4]\n" + "\tcmp r0, r1\n" + "\tbne _08041E2C\n" + "\tadds r1, r0, 0\n" + "\tadds r0, r7, 0\n" + "\tstr r2, [sp, 0x8]\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, [sp, 0x8]\n" + "\tcmp r0, r2\n" + "\tbne _08041E38\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "\tb _08041E38\n" + "\t.align 2, 0\n" + "_08041E14: .4byte gUnknown_030004D8\n" + "_08041E18: .4byte 0x0000ffff\n" + "_08041E1C: .4byte 0x00000121\n" + "_08041E20: .4byte gUnknown_030004E0\n" + "_08041E24: .4byte gUnknown_03000500\n" + "_08041E28: .4byte gUnknown_03000470\n" + "_08041E2C:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r5, r0\n" + "\tbcc _08041DDE\n" + "_08041E38:\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbhi _08041E50\n" + "\tldr r0, _08041E60 @ =gUnknown_030004E0\n" + "\tlsls r1, r6, 1\n" + "\tadds r1, r0\n" + "\tldrh r1, [r1]\n" + "\tmov r10, r0\n" + "\tcmp r1, 0\n" + "\tbne _08041DD0\n" + "_08041E50:\n" + "\tadd sp, 0xC\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08041E60: .4byte gUnknown_030004E0"); +} +#endif + +static void RemoveEggFromDayCare(struct DayCareData *dayCareData) +{ + dayCareData->misc.countersEtc.personalityLo = 0; + dayCareData->misc.countersEtc.unk_11a = 0; +} + +void sub_8041E7C(void) +{ + RemoveEggFromDayCare(&gSaveBlock1.daycareData); +} + +static void incense_effects(u16 *species, struct DayCareData *dayCareData) +{ + u16 momItem, dadItem; + if (*species == SPECIES_WYNAUT || *species == SPECIES_AZURILL) + { + momItem = GetBoxMonData(&dayCareData->mons[0], MON_DATA_HELD_ITEM); + dadItem = GetBoxMonData(&dayCareData->mons[1], MON_DATA_HELD_ITEM); + if (*species == SPECIES_WYNAUT && momItem != ITEM_LAX_INCENSE && dadItem != ITEM_LAX_INCENSE) + { + *species = SPECIES_WOBBUFFET; + } + if (*species == SPECIES_AZURILL && momItem != ITEM_SEA_INCENSE && dadItem != ITEM_SEA_INCENSE) + { + *species = SPECIES_MARILL; + } + } +} + +static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_species_from_mom +{ + u16 i; + u16 species[2]; + u16 eggSpecies; + u8 buffer; + for (i=0; i<2; i++) + { + species[i] = GetBoxMonData(&dayCareData->mons[i], MON_DATA_SPECIES); + if (species[i] == SPECIES_DITTO) + { + a1[0] = i ^ 1; + a1[1] = i; + } + else if (GetBoxMonGender(&dayCareData->mons[i]) == MON_FEMALE) + { + a1[0] = i; + a1[1] = i ^ 1; + } + } + eggSpecies = sub_8041870(species[a1[0]]); + if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->misc.countersEtc.personalityLo & 0x8000) + { + eggSpecies = SPECIES_NIDORAN_M; + } + if (eggSpecies == SPECIES_ILLUMISE && dayCareData->misc.countersEtc.personalityLo & 0x8000) + { + eggSpecies = SPECIES_VOLBEAT; + } + if (species[a1[1]] == SPECIES_DITTO && GetBoxMonGender(&dayCareData->mons[a1[0]]) != MON_FEMALE) + { + buffer = a1[1]; + a1[1] = a1[0]; + a1[0] = buffer; + } + return eggSpecies; +} + +static void sub_8041FC4(struct DayCareData *dayCareData) // give_egg +{ + struct Pokemon egg; + u16 species; + u8 parents[2]; + u8 isEgg; + species = sub_8041EEC(dayCareData, parents); + incense_effects(&species, dayCareData); + sub_80420FC(&egg, species, dayCareData); + InheritIVs(&egg, dayCareData); + daycare_build_child_moveset(&egg, &dayCareData->mons[parents[1]], &dayCareData->mons[parents[0]]); + isEgg = TRUE; + SetMonData(&egg, MON_DATA_IS_EGG, &isEgg); + gPlayerParty[5] = egg; + party_compaction(); + CalculatePlayerPartyCount(); + RemoveEggFromDayCare(dayCareData); +} + + +void sub_8042044(struct Pokemon *mon, u16 species, u8 overwriteMetLocation) // scr_create_egg +{ + u8 metLevel; + u16 ball; + u8 language; + u8 metLocation; + u8 isEgg; + CreateMon(mon, species, 5, 0x20, FALSE, 0, FALSE, 0); + metLevel = 0; + ball = ITEM_POKE_BALL; + language = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball); + SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); + SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); + SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); + SetMonData(mon, MON_DATA_LANGUAGE, &language); + if (overwriteMetLocation) + { + metLocation = 0xfd; + SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation); + } + isEgg = TRUE; + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); +} + +static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *dayCareData) +{ + u32 personality; + u16 ball; + u8 metLevel; + u8 language; + personality = dayCareData->misc.countersEtc.personalityLo | (Random() << 16); + CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0); + metLevel = 0; + ball = ITEM_POKE_BALL; + language = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball); + SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); + SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); + SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); + SetMonData(mon, MON_DATA_LANGUAGE, &language); +} + +void sp0B8_daycare(void) +{ + sub_8041FC4(&gSaveBlock1.daycareData); +} + +#ifdef NONMATCHING +static bool8 sub_80421B0(struct DayCareData *dayCareData) +{ + struct BoxPokemon *parent; + u32 i; + int v0; + int steps; + v0 = 0; + for (i=0, parent=&dayCareData->mons[0]; i<2; parent++, i++) + { + if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0)) + { + dayCareData->misc.countersEtc.steps[i]++; + v0++; + } + } + if (dayCareData->misc.countersEtc.personalityLo == 0 && v0 == 2 && dayCareData->misc.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff)) + { + sub_8041940(); + } + if ((++dayCareData->misc.countersEtc.unk_11a) == 0xff) + { + for (i=0; i<gPlayerPartyCount; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP); + if (steps == 0) + { + gSpecialVar_0x8004 = i; + return TRUE; + } + steps--; + SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, (u8 *)&steps); + } + } + } + return FALSE; +} +#else +__attribute__((naked)) +static bool8 sub_80421B0(struct DayCareData *dayCareData) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tsub sp, 0x8\n" + "\tadds r7, r0, 0\n" + "\tmovs r2, 0\n" + "\tmovs r6, 0\n" + "\tadds r5, r7, 0\n" + "_080421BC:\n" + "\tlsls r4, r6, 2\n" + "\tadds r0, r5, 0\n" + "\tmovs r1, 0x5\n" + "\tstr r2, [sp, 0x4]\n" + "\tbl GetBoxMonData\n" + "\tldr r2, [sp, 0x4]\n" + "\tcmp r0, 0\n" + "\tbeq _080421DE\n" + "\tmovs r0, 0x88\n" + "\tlsls r0, 1\n" + "\tadds r1, r7, r0\n" + "\tadds r1, r4\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstr r0, [r1]\n" + "\tadds r2, 0x1\n" + "_080421DE:\n" + "\tadds r5, 0x50\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x1\n" + "\tbls _080421BC\n" + "\tmovs r1, 0x8C\n" + "\tlsls r1, 1\n" + "\tadds r0, r7, r1\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08042226\n" + "\tcmp r2, 0x2\n" + "\tbne _08042226\n" + "\tsubs r1, 0x4\n" + "\tadds r0, r7, r1\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0xFF\n" + "\tbne _08042226\n" + "\tadds r0, r7, 0\n" + "\tbl daycare_relationship_score\n" + "\tadds r4, r0, 0\n" + "\tlsls r4, 24\n" + "\tlsrs r4, 24\n" + "\tbl Random\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmovs r1, 0x64\n" + "\tmuls r0, r1\n" + "\tldr r1, _08042240 @ =0x0000ffff\n" + "\tbl __udivsi3\n" + "\tcmp r4, r0\n" + "\tbls _08042226\n" + "\tbl sub_8041940\n" + "_08042226:\n" + "\tmovs r0, 0x8D\n" + "\tlsls r0, 1\n" + "\tadds r1, r7, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0xFF\n" + "\tbne _08042290\n" + "\tmovs r6, 0\n" + "\tb _08042288\n" + "\t.align 2, 0\n" + "_08042240: .4byte 0x0000ffff\n" + "_08042244:\n" + "\tmovs r0, 0x64\n" + "\tadds r1, r6, 0\n" + "\tmuls r1, r0\n" + "\tldr r0, _08042270 @ =gPlayerParty\n" + "\tadds r4, r1, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x2D\n" + "\tbl GetMonData\n" + "\tcmp r0, 0\n" + "\tbeq _08042286\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x20\n" + "\tbl GetMonData\n" + "\tstr r0, [sp]\n" + "\tcmp r0, 0\n" + "\tbne _08042278\n" + "\tldr r0, _08042274 @ =gSpecialVar_0x8004\n" + "\tstrh r6, [r0]\n" + "\tmovs r0, 0x1\n" + "\tb _08042292\n" + "\t.align 2, 0\n" + "_08042270: .4byte gPlayerParty\n" + "_08042274: .4byte gSpecialVar_0x8004\n" + "_08042278:\n" + "\tsubs r0, 0x1\n" + "\tstr r0, [sp]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x20\n" + "\tmov r2, sp\n" + "\tbl SetMonData\n" + "_08042286:\n" + "\tadds r6, 0x1\n" + "_08042288:\n" + "\tldr r0, _0804229C @ =gPlayerPartyCount\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbcc _08042244\n" + "_08042290:\n" + "\tmovs r0, 0\n" + "_08042292:\n" + "\tadd sp, 0x8\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_0804229C: .4byte gPlayerPartyCount"); +} +#endif + +bool8 sub_80422A0(void) +{ + return sub_80421B0(&gSaveBlock1.daycareData); +} + +static bool8 sub_80422B4(struct DayCareData *dayCareData) +{ + return (u32)((-dayCareData->misc.countersEtc.personalityLo) | dayCareData->misc.countersEtc.personalityLo) >> 31; +} + +static void sub_80422C4(struct DayCareData *dayCareData) +{ + u8 language; + if (GetBoxMonData(&dayCareData->mons[0], MON_DATA_SPECIES) != 0) + { + GetBoxMonNick(&dayCareData->mons[0], gStringVar1); + language = GetBoxMonData(&dayCareData->mons[0], MON_DATA_LANGUAGE); + GetBoxMonData(&dayCareData->mons[0], MON_DATA_OT_NAME, gStringVar3); + ConvertInternationalString(gStringVar3, language); + } + if (GetBoxMonData(&dayCareData->mons[1], MON_DATA_SPECIES) != 0) + { + GetBoxMonNick(&dayCareData->mons[1], gStringVar2); + } +} + +u16 sub_8042328(void) +{ + GetBoxMonNick(&gPlayerParty[gLastFieldPokeMenuOpened].box, gStringVar1); + return GetBoxMonData(&gPlayerParty[gLastFieldPokeMenuOpened].box, MON_DATA_SPECIES); +} + +void sp0B5_daycare(void) +{ + sub_80422C4(&gSaveBlock1.daycareData); +} + +u8 sp0B6_daycare(void) +{ + u8 monCount; + if (sub_80422B4(&gSaveBlock1.daycareData)) + { + return 1; + } + monCount = Daycare_CountPokemon(&gSaveBlock1.daycareData); + if (monCount != 0) + { + return monCount + 1; + } + return 0; +} + +#ifdef NONMATCHING +static +#endif +bool8 sub_80423A8(u16 *a, u16 *b) +{ + int i, j; + u16 *v0, *v1, v2; + for (i=0, v0=a; i<2; v0++, i++) + { + for (j=0, v2=*v0, v1=b; j<2; v1++, j++) + { + if (v2 == *v1) + { + return TRUE; + } + } + } + return FALSE; +} + +#ifdef NONMATCHING +static u8 daycare_relationship_score(struct DayCareData *dayCareData) +{ + u16 species[2]; + u32 otIds[2]; + u32 genders[2]; + u16 eggGroups[2][2]; + int i; + u16 *spc; + u32 *ids; + u32 *gnd; + u16 *egg1; + u16 *egg2; + struct BoxPokemon *parent; + for (i=0, parent=&dayCareData->mons[0], spc=species, ids=otIds, gnd=genders, egg1=&eggGroups[0][0], egg2=&eggGroups[0][1]; i<2; spc++, egg1+=2, egg2+=2, parent++, i++) + { + *spc = GetBoxMonData(parent, MON_DATA_SPECIES); + *ids++ = GetBoxMonData(parent, MON_DATA_OT_ID); + *gnd++ = GetGenderFromSpeciesAndPersonality(*spc, GetBoxMonData(parent, MON_DATA_PERSONALITY)); + *egg1 = gBaseStats[*spc].eggGroup1; + *egg2 = gBaseStats[*spc].eggGroup2; + } + if (eggGroups[0][0] == 0xf) + { + return 0; + } + if (eggGroups[1][0] == 0xf) + { + return 0; + } + if (eggGroups[0][0] == 0xd && eggGroups[1][0] == 0xd) + { + return 0; + } + else if (eggGroups[0][0] == 0xd || eggGroups[1][0] == 0xd) + { + if (otIds[0] == otIds[1]) + { + return 20; + } + return 50; + } + if (genders[0] == genders[1] || genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS) + { + return 0; + } + if (!sub_80423A8(eggGroups[0], eggGroups[1])) + { + return 0; + } + if (species[0] == species[1]) + { + if (otIds[0] == otIds[1]) + { + return 50; + } + return 70; + } + else + { + if (otIds[0] != otIds[1]) + { + return 50; + } + return 20; + } +} +#else +__attribute__((naked)) +static u8 daycare_relationship_score(struct DayCareData *dayCareData) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x2C\n" + "\tmovs r1, 0\n" + "\tmov r8, r1\n" + "\tmov r2, sp\n" + "\tadds r2, 0x8\n" + "\tstr r2, [sp, 0x1C]\n" + "\tadd r1, sp, 0xC\n" + "\tmov r10, r1\n" + "\tadds r2, 0xC\n" + "\tstr r2, [sp, 0x20]\n" + "\tmov r1, sp\n" + "\tadds r1, 0x2\n" + "\tldr r2, _08042488 @ =gBaseStats\n" + "\tmov r9, r2\n" + "\tldr r5, [sp, 0x1C]\n" + "\tadds r7, r1, 0\n" + "\tmov r6, sp\n" + "\tldr r1, [sp, 0x20]\n" + "\tstr r1, [sp, 0x24]\n" + "\tmov r2, r10\n" + "\tstr r2, [sp, 0x28]\n" + "\tadds r4, r0, 0\n" + "_0804240E:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetBoxMonData\n" + "\tstrh r0, [r5]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x1\n" + "\tbl GetBoxMonData\n" + "\tldr r1, [sp, 0x28]\n" + "\tstm r1!, {r0}\n" + "\tstr r1, [sp, 0x28]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl GetBoxMonData\n" + "\tadds r1, r0, 0\n" + "\tldrh r0, [r5]\n" + "\tbl GetGenderFromSpeciesAndPersonality\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tldr r2, [sp, 0x24]\n" + "\tstm r2!, {r0}\n" + "\tstr r2, [sp, 0x24]\n" + "\tldrh r1, [r5]\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tadd r0, r9\n" + "\tldrb r0, [r0, 0x14]\n" + "\tstrh r0, [r6]\n" + "\tldrh r1, [r5]\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tadd r0, r9\n" + "\tldrb r0, [r0, 0x15]\n" + "\tstrh r0, [r7]\n" + "\tadds r5, 0x2\n" + "\tadds r7, 0x4\n" + "\tadds r6, 0x4\n" + "\tadds r4, 0x50\n" + "\tmovs r0, 0x1\n" + "\tadd r8, r0\n" + "\tmov r1, r8\n" + "\tcmp r1, 0x1\n" + "\tbls _0804240E\n" + "\tmov r0, sp\n" + "\tldrh r1, [r0]\n" + "\tcmp r1, 0xF\n" + "\tbeq _08042484\n" + "\tldrh r0, [r0, 0x4]\n" + "\tcmp r0, 0xF\n" + "\tbeq _08042484\n" + "\tcmp r1, 0xD\n" + "\tbne _0804248C\n" + "\tcmp r0, 0xD\n" + "\tbne _08042490\n" + "_08042484:\n" + "\tmovs r0, 0\n" + "\tb _080424E4\n" + "\t.align 2, 0\n" + "_08042488: .4byte gBaseStats\n" + "_0804248C:\n" + "\tcmp r0, 0xD\n" + "\tbne _0804249C\n" + "_08042490:\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbeq _080424DE\n" + "\tb _080424E2\n" + "_0804249C:\n" + "\tldr r0, [sp, 0x14]\n" + "\tldr r2, [sp, 0x20]\n" + "\tldr r1, [r2, 0x4]\n" + "\tcmp r0, r1\n" + "\tbeq _08042484\n" + "\tcmp r0, 0xFF\n" + "\tbeq _08042484\n" + "\tcmp r1, 0xFF\n" + "\tbeq _08042484\n" + "\tadd r1, sp, 0x4\n" + "\tmov r0, sp\n" + "\tbl sub_80423A8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08042484\n" + "\tldr r0, [sp, 0x1C]\n" + "\tldrh r1, [r0, 0x2]\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, r1\n" + "\tbne _080424D4\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbeq _080424E2\n" + "\tmovs r0, 0x46\n" + "\tb _080424E4\n" + "_080424D4:\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbne _080424E2\n" + "_080424DE:\n" + "\tmovs r0, 0x14\n" + "\tb _080424E4\n" + "_080424E2:\n" + "\tmovs r0, 0x32\n" + "_080424E4:\n" + "\tadd sp, 0x2C\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif + +u8 daycare_relationship_score_from_savegame(void) +{ + return daycare_relationship_score(&gSaveBlock1.daycareData); +} + +void sp0B9_daycare_relationship_comment(void) +{ + u8 whichString; + u8 relationshipScore; + + relationshipScore = daycare_relationship_score_from_savegame(); + whichString = 0; + if (relationshipScore == 0) + whichString = 3; + if (relationshipScore == 20) + whichString = 2; + if (relationshipScore == 50) + whichString = 1; + if (relationshipScore == 70) + whichString = 0; + StringCopy(gStringVar4, gUnknown_08209AC4[whichString]); +} + +#ifdef NONMATCHING +bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) +{ + u8 i; + u8 flags[2]; + + // This portion is nonmatching + flags[1] = 0; + flags[0] = 0; + for (i = 0; name[i] != EOS; i ++) + // End nonmatching portion + + { + if (name[i] == CHAR_MALE) flags[0] ++; + if (name[i] == CHAR_FEMALE) flags[1] ++; + } + if (genderRatio == MON_MALE && flags[0] && !flags[1]) return TRUE; + if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) return TRUE; + return FALSE; +} +#else +__attribute__((naked)) +bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) +{ + asm_unified("\n" + "\tpush {r4,r5,lr}\n" + "\tsub sp, 0x4\n" + "\tadds r4, r0, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r5, r1, 24\n" + "\tmov r2, sp\n" + "\tmov r1, sp\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r1, 0x1]\n" + "\tstrb r0, [r2]\n" + "\tmovs r3, 0\n" + "\tldrb r0, [r4]\n" + "\tcmp r0, 0xFF\n" + "\tbeq _0804258C\n" + "_08042564:\n" + "\tadds r1, r4, r3\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0xB5\n" + "\tbne _08042572\n" + "\tldrb r0, [r2]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r2]\n" + "_08042572:\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0xB6\n" + "\tbne _0804257E\n" + "\tldrb r0, [r2, 0x1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r2, 0x1]\n" + "_0804257E:\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tadds r0, r4, r3\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0xFF\n" + "\tbne _08042564\n" + "_0804258C:\n" + "\tcmp r5, 0\n" + "\tbne _080425A0\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _080425A0\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0, 0x1]\n" + "\tcmp r0, 0\n" + "\tbeq _080425B4\n" + "_080425A0:\n" + "\tcmp r5, 0xFE\n" + "\tbne _080425B8\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0, 0x1]\n" + "\tcmp r0, 0\n" + "\tbeq _080425B8\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _080425B8\n" + "_080425B4:\n" + "\tmovs r0, 0x1\n" + "\tb _080425BA\n" + "_080425B8:\n" + "\tmovs r0, 0\n" + "_080425BA:\n" + "\tadd sp, 0x4\n" + "\tpop {r4,r5}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif + +static u8 *AppendGenderSymbol(u8 *name, u8 gender) +{ + if (gender == MON_MALE) + { + if (!NameHasGenderSymbol(name, MON_MALE)) + return StringAppend(name, gOtherText_MaleSymbol3); + } + + else if (gender == MON_FEMALE) + { + if (!NameHasGenderSymbol(name, MON_FEMALE)) + return StringAppend(name, gOtherText_FemaleSymbol3); + } + return StringAppend(name, gOtherText_GenderlessSymbol); +} + +static u8 *MonAppendGenderSymbol(u8 *name, struct BoxPokemon *boxMon) +{ + return AppendGenderSymbol(name, GetBoxMonGender(boxMon)); +} + +static void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest) +{ + u8 buffers[2][20]; + u8 i; + *dest = EOS; + for (i = 0; i < 2; i ++) + { + GetBoxMonNick(&dayCareData->mons[i], buffers[i]); + MonAppendGenderSymbol(buffers[i], &dayCareData->mons[i]); + } + StringCopy(dest, buffers[0]); + StringAppend(dest, gOtherText_NewLine2); + StringAppend(dest, buffers[1]); + StringAppend(dest, gOtherText_NewLine2); + StringAppend(dest, gOtherText_CancelAndLv); +} + +static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest) +{ + u8 i; + u8 level; + *dest = EOS; + for (i = 0; i < 2; i ++) + { + level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->misc.countersEtc.steps[i]); + dest[0] = 0x34; + dest[1] = 0xFC; + dest[2] = 0x14; + dest[3] = 0x06; + dest = ConvertIntToDecimalStringN(dest + 4, level, STR_CONV_MODE_RIGHT_ALIGN, 3); + dest[0] = 0xFC; + dest[1] = 0x14; + dest[2] = 0x00; + dest = StringCopy(dest + 3, gOtherText_NewLine2); + } + *dest = EOS; +} + +static void DaycareLevelMenuProcessKeyInput(u8 taskId) +{ + if (gMain.newKeys & DPAD_UP) + { + if (gTasks[taskId].data[0] != 0) + { + gTasks[taskId].data[0] --; + MoveMenuCursor(-1); + PlaySE(SE_SELECT); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (gTasks[taskId].data[0] != 2) + { + gTasks[taskId].data[0] ++; + MoveMenuCursor(+1); + PlaySE(SE_SELECT); + } + } + else if (gMain.newKeys & A_BUTTON) + { + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gLastFieldPokeMenuOpened = gScriptResult = gTasks[taskId].data[0]; + DestroyTask(taskId); + MenuZeroFillWindowRect(15, 6, 29, 13); + EnableBothScriptContexts(); + } + else if (gMain.newKeys & B_BUTTON) + { + HandleDestroyMenuCursors(); + gLastFieldPokeMenuOpened = gScriptResult = 2; + DestroyTask(taskId); + MenuZeroFillWindowRect(15, 6, 29, 13); + EnableBothScriptContexts(); + } +} + +void ShowDaycareLevelMenu(void) +{ + u8 buffer[100]; + MenuDrawTextWindow(15, 6, 29, 13); + DaycareLevelMenuGetText(&gSaveBlock1.daycareData, buffer); + MenuPrint(buffer, 16, 7); + DaycareLevelMenuGetLevelText(&gSaveBlock1.daycareData, buffer); + MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE); + InitMenu(0, 16, 7, 3, 0, 13); + CreateTask(DaycareLevelMenuProcessKeyInput, 3); +} + +void ChooseSendDaycareMon(void) +{ + OpenPartyMenu(6, 0); + gMain.savedCallback = c2_exit_to_overworld_2_switch; +} diff --git a/src/decoration.c b/src/field/decoration.c index da33b3ab7..e067191e9 100644 --- a/src/decoration.c +++ b/src/field/decoration.c @@ -1,7 +1,7 @@ #include "global.h" #include "main.h" #include "map_object_constants.h" -#include "rom4.h" +#include "overworld.h" #include "sound.h" #include "songs.h" #include "string_util.h" @@ -619,7 +619,7 @@ const u8 DecorDesc_REGISTEEL_DOLL[] = _( "Place it on a mat\n" "or a desk."); #elif GERMAN -#include "data/decoration/descriptions_de.h" +#include "../data/decoration/descriptions_de.h" #endif const u16 DecorGfx_SMALL_DESK[] = { @@ -1389,7 +1389,7 @@ const struct Decoration gDecorations[] = { {DECOR_REGISTEEL_DOLL, _("REGISTEEL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGISTEEL_DOLL, DecorGfx_REGISTEEL_DOLL} }; #elif GERMAN -#include "data/decoration/decorations.h" +#include "../data/decoration/decorations.h" #endif const u8 *const gUnknown_083EC5E4[] = { @@ -2199,7 +2199,7 @@ void sub_80FF0E0(u8 taskId) void sub_80FF114(u8 taskId) { DrawWholeMapView(); - warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); + Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); warp_in(); } void sub_80FF160(u8 taskId) @@ -2322,7 +2322,7 @@ void sub_80FF474(void) { if (FlagGet(i + 0xae) == 1) { - FlagReset(i + 0xae); + FlagClear(i + 0xae); for (j=0; j<gMapHeader.events->mapObjectCount; j++) { if (gMapHeader.events->mapObjects[j].flagId == i + 0xae) diff --git a/src/decoration_inventory.c b/src/field/decoration_inventory.c index 35ba7e228..083cb260c 100644 --- a/src/decoration_inventory.c +++ b/src/field/decoration_inventory.c @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/5/17. + // #include "global.h" diff --git a/src/dewford_trend.c b/src/field/dewford_trend.c index aaf4dd66a..aaf4dd66a 100644 --- a/src/dewford_trend.c +++ b/src/field/dewford_trend.c diff --git a/src/diploma.c b/src/field/diploma.c index ba7de58aa..27601404c 100644 --- a/src/diploma.c +++ b/src/field/diploma.c @@ -4,7 +4,7 @@ #include "menu.h" #include "palette.h" #include "pokedex.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "string_util.h" #include "strings2.h" @@ -35,7 +35,7 @@ static void VBlankCB(void) TransferPlttBuffer(); } -void sub_8145D88(void) +void CB2_ShowDiploma(void) { u32 savedIme; diff --git a/src/easy_chat.c b/src/field/easy_chat.c index cca8c1355..6014b3d14 100644 --- a/src/easy_chat.c +++ b/src/field/easy_chat.c @@ -19,8 +19,10 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; +IWRAM_DATA u8 gUnknown_03000740; -u8 *sub_80EB3FC(u8 *dst, u16 word) +// returns the end of the destination buffer text +u8 *EasyChat_GetWordText(u8 *dst, u16 word) { u16 group; u16 wordIndex; @@ -32,13 +34,13 @@ u8 *sub_80EB3FC(u8 *dst, u16 word) if (word == 0xFFFF) { - dst[0] = EOS; + *dst = EOS; return dst; } else { - group = word >> 9; - wordIndex = word & 0x1FF; + group = EC_GROUP(word); + wordIndex = EC_INDEX(word); switch (group) { case EC_GROUP_POKEMON: // 0 @@ -59,7 +61,7 @@ u8 *sub_80EB3FC(u8 *dst, u16 word) dst = StringCopy(dst, src); break; } - dst[0] = EOS; + *dst = EOS; return dst; } } @@ -77,7 +79,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) for (n = 0; n < i1; n++) { - dst = sub_80EB3FC(dst, words[0]); + dst = EasyChat_GetWordText(dst, words[0]); if (words[0] != 0xFFFF) { @@ -90,7 +92,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) word = words[0]; words++; - dst = sub_80EB3FC(dst, word); + dst = EasyChat_GetWordText(dst, word); dst[0] = CHAR_NEWLINE; dst++; @@ -115,7 +117,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) for (n = 0; n < i1; n++) { - dst = sub_80EB3FC(dst, words[0]); + dst = EasyChat_GetWordText(dst, words[0]); if (words[0] != 0xFFFF) { @@ -128,7 +130,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) word = words[0]; words++; - dst = sub_80EB3FC(dst, word); + dst = EasyChat_GetWordText(dst, word); // Only difference with ConvertEasyChatWordsToString dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL; @@ -144,7 +146,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) u16 unref_sub_80EB5E0(u16 arg0) { - u8 *chars; + const u8 *chars; u16 i; u16 length; int group, word; @@ -153,8 +155,8 @@ u16 unref_sub_80EB5E0(u16 arg0) if (arg0 == 0xFFFF) return 0; - group = arg0 >> 9; - word = arg0 & 0x1FF; + group = EC_GROUP(arg0); + word = EC_INDEX(arg0); switch (group) { case EC_GROUP_POKEMON: // 0 @@ -321,7 +323,7 @@ void sub_80EB83C(void) group = EC_GROUP_LIFESTYLE; local2 = sub_80EB784(group); - sub_80EB3FC(gStringVar2, local2); + EasyChat_GetWordText(gStringVar2, local2); } u8 sub_80EB868(u8 arg0) @@ -428,7 +430,7 @@ static u16 sub_80EB9D8(void) for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) { const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); - const u8 local2 = GetNationalPokedexFlag(dexNum, 0); + const u8 local2 = GetSetPokedexFlag(dexNum, 0); if (local2) { diff --git a/src/event_data.c b/src/field/event_data.c index 0484bae02..43d49c417 100644 --- a/src/event_data.c +++ b/src/field/event_data.c @@ -36,10 +36,10 @@ void ClearTempFieldEventData(void) { memset(gSaveBlock1.flags, 0, TEMP_FLAGS_SIZE); memset(gSaveBlock1.vars, 0, TEMP_VARS_SIZE); - FlagReset(SYS_ENC_UP_ITEM); - FlagReset(SYS_ENC_DOWN_ITEM); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_CTRL_OBJ_DELETE); + FlagClear(SYS_ENC_UP_ITEM); + FlagClear(SYS_ENC_DOWN_ITEM); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_CTRL_OBJ_DELETE); } // probably had different flag splits at one point. @@ -53,7 +53,7 @@ void DisableNationalPokedex(void) u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX); gSaveBlock2.pokedex.nationalMagic = 0; *nationalDexVar = 0; - FlagReset(SYS_NATIONAL_DEX); + FlagClear(SYS_NATIONAL_DEX); } void EnableNationalPokedex(void) @@ -77,7 +77,7 @@ bool32 IsNationalPokedexEnabled(void) void DisableMysteryGift(void) { - FlagReset(SYS_EXDATA_ENABLE); + FlagClear(SYS_EXDATA_ENABLE); } void EnableMysteryGift(void) @@ -93,7 +93,7 @@ bool32 IsMysteryGiftEnabled(void) void DisableResetRTC(void) { VarSet(VAR_RESET_RTC_ENABLE, 0); - FlagReset(SYS_RESET_RTC_ENABLE); + FlagClear(SYS_RESET_RTC_ENABLE); } void EnableResetRTC(void) @@ -114,10 +114,8 @@ u16 *GetVarPointer(u16 id) { if (id < 0x4000) return NULL; - - if ((s16)id >= 0) + if (id < 0x8000) return &gSaveBlock1.vars[id - 0x4000]; - return gSpecialVars[id - 0x8000]; } @@ -162,7 +160,7 @@ u8 FlagSet(u16 id) return 0; } -u8 FlagReset(u16 id) +u8 FlagClear(u16 id) { u8 *ptr = GetFlagPointer(id); if (ptr) diff --git a/src/field_camera.c b/src/field/field_camera.c index db51cf054..db51cf054 100644 --- a/src/field_camera.c +++ b/src/field/field_camera.c diff --git a/src/field_control_avatar.c b/src/field/field_control_avatar.c index a8f6b6b9b..ff8e8504c 100644 --- a/src/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -13,7 +13,7 @@ #include "flags.h" #include "item_menu.h" #include "metatile_behavior.h" -#include "rom4.h" +#include "overworld.h" #include "safari_zone.h" #include "script.h" #include "secret_base.h" @@ -57,7 +57,7 @@ extern u8 gUnknown_081A4363[]; extern u8 gUnknown_081C346A[]; extern u8 gUnknown_081616E1[]; extern u8 Event_WorldMap[]; -extern u8 Event_RunningShoesManual[]; +extern u8 S_RunningShoesManual[]; extern u8 PictureBookShelfScript[]; extern u8 BookshelfScript[]; extern u8 PokemonCenterBookshelfScript[]; @@ -70,13 +70,13 @@ extern u8 gUnknown_0815F43A[]; extern u8 gUnknown_0815F523[]; extern u8 gUnknown_0815F528[]; extern u8 UseSurfScript[]; -extern u8 UseWaterfallScript[]; -extern u8 CannotUseWaterfallScript[]; +extern u8 S_UseWaterfall[]; +extern u8 S_CannotUseWaterfall[]; extern u8 UseDiveScript[]; -extern u8 UnderwaterUseDiveScript[]; -extern u8 GraniteCave_B1F_EventScript_1C6BC5[]; +extern u8 S_UseDiveUnderwater[]; +extern u8 S_FallDownHole[]; extern u8 gUnknown_081A14B8[]; -extern u8 Event_EggHatch[]; +extern u8 S_EggHatch[]; extern u8 gUnknown_0815FD0D[]; extern u8 gUnknown_081C6BDE[]; @@ -391,7 +391,7 @@ static u8 *sub_8068500(struct MapPosition *position, u8 b, u8 c) if (MetatileBehavior_IsRegionMap(b) == TRUE) return Event_WorldMap; if (sub_805791C(b) == TRUE) - return Event_RunningShoesManual; + return S_RunningShoesManual; if (MetatileBehavior_IsPictureBookShelf(b) == TRUE) return PictureBookShelfScript; if (MetatileBehavior_IsBookShelf(b) == TRUE) @@ -428,9 +428,9 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) if (MetatileBehavior_IsWaterfall(b) == TRUE) { if (FlagGet(BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE) - return UseWaterfallScript; + return S_UseWaterfall; else - return CannotUseWaterfallScript; + return S_CannotUseWaterfall; } return NULL; } @@ -447,9 +447,9 @@ static bool32 sub_8068770(void) static bool32 sub_80687A4(void) { - if (FlagGet(BADGE07_GET) && gMapHeader.mapType == 5 && sub_8068F18() == 1) + if (FlagGet(BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1) { - ScriptContext1_SetupScript(UnderwaterUseDiveScript); + ScriptContext1_SetupScript(S_UseDiveUnderwater); return TRUE; } return FALSE; @@ -485,7 +485,7 @@ bool8 sub_8068870(u16 a) { if (MetatileBehavior_IsCrackedFloorHole(a)) { - ScriptContext1_SetupScript(GraniteCave_B1F_EventScript_1C6BC5); + ScriptContext1_SetupScript(S_FallDownHole); return TRUE; } return FALSE; @@ -503,7 +503,7 @@ bool8 sub_8068894(void) if (sub_80422A0()) { IncrementGameStat(13); - ScriptContext1_SetupScript(Event_EggHatch); + ScriptContext1_SetupScript(S_EggHatch); return TRUE; } if (SafariZoneTakeStep() == TRUE) @@ -549,14 +549,14 @@ static bool8 overworld_poison_step(void) { u16 *ptr; - if (gMapHeader.mapType != 9) + if (gMapHeader.mapType != MAP_TYPE_SECRET_BASE) { ptr = GetVarPointer(VAR_POISON_STEP_COUNTER); (*ptr)++; (*ptr) %= 4; if (*ptr == 0) { - switch (overworld_poison()) + switch (DoPoisonFieldEffect()) { case 0: return FALSE; @@ -698,7 +698,7 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi warp1_set_2(warpEvent->unk7, warpEvent->mapNum, warpEvent->mapGroup); sub_80535C4(position->x, position->y); - mapHeader = get_mapheader_by_bank_and_number(warpEvent->unk7, warpEvent->mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->unk7, warpEvent->mapNum); if (mapHeader->events->warps[warpEvent->mapGroup].mapNum == 0x7F) saved_warp2_set(mapHeader->events->warps[b].mapGroup, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, b); } @@ -730,7 +730,7 @@ static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, return FALSE; } -static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d) +static s8 map_warp_check(struct MapHeader *mapHeader, u16 x, u16 y, u8 warpId) { s32 i; struct WarpEvent *warpEvent = mapHeader->events->warps; @@ -738,9 +738,9 @@ static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d) for (i = 0; i < warpCount; i++, warpEvent++) { - if ((u16)warpEvent->x == b && (u16)warpEvent->y == c) + if ((u16)warpEvent->x == x && (u16)warpEvent->y == y) { - if ((u8)warpEvent->warpId == d || (u8)warpEvent->warpId == 0) + if ((u8)warpEvent->warpId == warpId || (u8)warpEvent->warpId == 0) return i; } } @@ -767,7 +767,7 @@ static u8 *trigger_activate(struct CoordEvent *coordEvent) return NULL; } -static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16 c, u8 d) +static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 d) { s32 i; struct CoordEvent *coordEvents = mapHeader->events->coordEvents; @@ -776,7 +776,7 @@ static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16 for (i = 0; i < coordEventCount; i++) { - if ((u16)coordEvents[i].x == b && (u16)coordEvents[i].y == c) + if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y) { if (coordEvents[i].unk4 == d || coordEvents[i].unk4 == 0) { @@ -813,7 +813,7 @@ static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHea int dive_warp(struct MapPosition *position, u16 b) { - if (gMapHeader.mapType == 5 && sub_805750C(b) == 0) + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(b) == 0) { if (sub_80538B0(position->x - 7, position->y - 7)) { @@ -843,7 +843,7 @@ u8 sub_8068F18(void) PlayerGetDestCoords(&x, &y); r5 = MapGridGetMetatileBehaviorAt(x, y); - if (gMapHeader.mapType == 5 && sub_805750C(r5) == 0) + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(r5) == 0) { if (sub_80538B0(x - 7, y - 7) == TRUE) return 1; diff --git a/src/field_door.c b/src/field/field_door.c index 791ed4c94..ab46f0696 100644 --- a/src/field_door.c +++ b/src/field/field_door.c @@ -3,6 +3,7 @@ #include "field_camera.h" #include "fieldmap.h" #include "metatile_behavior.h" +#include "songs.h" #include "task.h" extern struct DoorAnimFrame gDoorOpenAnimFrames[]; @@ -212,10 +213,10 @@ bool8 FieldIsDoorAnimationRunning(void) return FuncIsActiveTask(Task_AnimateDoor); } -u32 sub_8058790(u32 x, u32 y) +u32 GetDoorSoundEffect(u32 x, u32 y) { if (cur_mapdata_get_door_x2_at(gDoorAnimGraphicsTable, x, y) == 0) - return 8; + return SE_DOOR; else - return 18; + return SE_JIDO_DOA; } diff --git a/src/field_effect.c b/src/field/field_effect.c index 3632d7053..afe020ac7 100644 --- a/src/field_effect.c +++ b/src/field/field_effect.c @@ -9,7 +9,7 @@ #include "menu.h" #include "palette.h" #include "text.h" -#include "rom4.h" +#include "overworld.h" #include "task.h" #include "sound.h" #include "songs.h" @@ -28,7 +28,7 @@ #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} -EWRAM_DATA u32 gUnknown_0202FF84[8] = {0}; +EWRAM_DATA u32 gFieldEffectArguments[8] = {0}; const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp"); const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal"); @@ -618,13 +618,13 @@ bool8 FieldEffectActiveListContains(u8 id) return FALSE; } -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer) +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer) { struct SpriteTemplate spriteTemplate; - LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[gender], buffer); - LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[gender], buffer); - spriteTemplate.tileTag = gTrainerFrontPicTable[gender].tag; - spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[gender].tag; + LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer); + LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer); + spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag; + spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag; spriteTemplate.oam = &gOamData_839F0F4; spriteTemplate.anims = gDummySpriteAnimTable; spriteTemplate.images = NULL; @@ -660,7 +660,7 @@ u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subprio const struct CompressedSpritePalette *spritePalette; HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gUnknown_081FAF4C[3] /* this is actually u8* or something, pointing to ewram */, gUnknown_081FAF4C[3], species, g); - spritePalette = sub_80409C8(species, d, g); + spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, d, g); LoadCompressedObjectPalette(spritePalette); GetMonSpriteTemplate_803C56C(species, 3); gUnknown_02024E8C.paletteTag = spritePalette->tag; @@ -1203,17 +1203,17 @@ void task00_8084310(u8 taskId) { return; } - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - if ((int)gUnknown_0202FF84[0] > 5) + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + if ((int)gFieldEffectArguments[0] > 5) { - gUnknown_0202FF84[0] = 0; + gFieldEffectArguments[0] = 0; } FieldEffectStart(FLDEFF_USE_FLY); task->data[0]++; } if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { - flag_var_implications_of_teleport_(); + Overworld_ResetStateAfterFly(); warp_in(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08084390; @@ -1223,7 +1223,7 @@ void task00_8084310(u8 taskId) void mapldr_08084390(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_black(); CreateTask(c3_080843F8, 0); gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1; @@ -1264,7 +1264,7 @@ extern void CameraObjectReset1(void); void sub_8086748(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -1533,7 +1533,7 @@ void sub_8086C40(void) void sub_8086C94(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); CreateTask(sub_8086CBC, 0); @@ -1665,7 +1665,7 @@ bool8 FldEff_UseWaterfall(void) { u8 taskId; taskId = CreateTask(sub_8086F64, 0xff); - gTasks[taskId].data[1] = gUnknown_0202FF84[0]; + gTasks[taskId].data[1] = gFieldEffectArguments[0]; sub_8086F64(taskId); return FALSE; } @@ -1689,7 +1689,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject)) { FieldObjectClearAnimIfSpecialAnimFinished(mapObject); - gUnknown_0202FF84[0] = task->data[1]; + gFieldEffectArguments[0] = task->data[1]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; } @@ -1738,8 +1738,8 @@ bool8 FldEff_UseDive(void) { u8 taskId; taskId = CreateTask(Task_Dive, 0xff); - gTasks[taskId].data[15] = gUnknown_0202FF84[0]; - gTasks[taskId].data[14] = gUnknown_0202FF84[1]; + gTasks[taskId].data[15] = gFieldEffectArguments[0]; + gTasks[taskId].data[14] = gFieldEffectArguments[1]; Task_Dive(taskId); return FALSE; } @@ -1759,7 +1759,7 @@ bool8 sub_8087124(struct Task *task) bool8 dive_2_unknown(struct Task *task) { ScriptContext2_Enable(); - gUnknown_0202FF84[0] = task->data[15]; + gFieldEffectArguments[0] = task->data[15]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; return FALSE; @@ -1820,10 +1820,10 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite { sprite->pos2.y = 0; task->data[3] = 1; - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP); PlaySE(SE_W153); task->data[0]++; @@ -1894,11 +1894,10 @@ bool8 sub_80873F4(struct Task *task, struct MapObject *mapObject, struct Sprite } void sub_8087470(u8); -extern u8 sub_80608A4(u8); void mapldr_080851BC(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); gFieldCallback = NULL; @@ -1924,10 +1923,10 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite { if (sub_807D770()) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); task->data[0]++; } @@ -1966,9 +1965,9 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36] u8 FldEff_LavaridgeGymWarp(void) { u8 spriteId; - sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); - gSprites[spriteId].oam.priority = gUnknown_0202FF84[3]; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + gSprites[spriteId].oam.priority = gFieldEffectArguments[3]; gSprites[spriteId].coordOffsetEnabled = 1; return spriteId; } @@ -2009,10 +2008,10 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite { if (task->data[1] > 3) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); task->data[0]++; } else @@ -2064,9 +2063,9 @@ bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite u8 FldEff_PopOutOfAsh(void) { u8 spriteId; - sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); - gSprites[spriteId].oam.priority = gUnknown_0202FF84[3]; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + gSprites[spriteId].oam.priority = gFieldEffectArguments[3]; gSprites[spriteId].coordOffsetEnabled = 1; return spriteId; } @@ -2135,7 +2134,7 @@ void sub_8087A74(u8); void mapldr_080859D4(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -2267,7 +2266,7 @@ void sub_8087D78(struct Task *task) { if (!gPaletteFade.active && sub_8054034() == TRUE) { - sub_8053570(); + Overworld_SetWarpDestToLastHealLoc(); warp_in(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08085D88; @@ -2279,7 +2278,7 @@ void sub_8087E1C(u8); void mapldr_08085D88(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -2385,26 +2384,26 @@ void sub_8088890(struct Sprite *); bool8 FldEff_FieldMoveShowMon(void) { u8 taskId; - if (is_light_level_1_2_3_5_or_6(sav1_map_get_light_level()) == TRUE) + if (is_map_type_1_2_3_5_or_6(Overworld_GetMapTypeOfSaveblockLocation()) == TRUE) { taskId = CreateTask(sub_8088120, 0xff); } else { taskId = CreateTask(sub_808847C, 0xff); } - gTasks[taskId].data[15] = sub_8088830(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); + gTasks[taskId].data[15] = sub_8088830(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); return FALSE; } bool8 FldEff_FieldMoveShowMonInit(void) { struct Pokemon *pokemon; - u32 flag = gUnknown_0202FF84[0] & 0x80000000; - pokemon = &gPlayerParty[(u8)gUnknown_0202FF84[0]]; - gUnknown_0202FF84[0] = GetMonData(pokemon, MON_DATA_SPECIES); - gUnknown_0202FF84[1] = GetMonData(pokemon, MON_DATA_OT_ID); - gUnknown_0202FF84[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); - gUnknown_0202FF84[0] |= flag; + u32 flag = gFieldEffectArguments[0] & 0x80000000; + pokemon = &gPlayerParty[(u8)gFieldEffectArguments[0]]; + gFieldEffectArguments[0] = GetMonData(pokemon, MON_DATA_SPECIES); + gFieldEffectArguments[1] = GetMonData(pokemon, MON_DATA_OT_ID); + gFieldEffectArguments[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); + gFieldEffectArguments[0] |= flag; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); return FALSE; @@ -2879,9 +2878,9 @@ u8 FldEff_UseSurf(void) { u8 taskId; taskId = CreateTask(sub_8088954, 0xff); - gTasks[taskId].data[15] = gUnknown_0202FF84[0]; - sav1_reset_battle_music_maybe(); - sub_8053FB0(0x016d); + gTasks[taskId].data[15] = gFieldEffectArguments[0]; + Overworld_ClearSavedMusic(); + Overworld_ChangeMusicTo(0x016d); return FALSE; } @@ -2919,7 +2918,7 @@ void sub_8088A30(struct Task *task) mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject)) { - gUnknown_0202FF84[0] = task->data[15] | 0x80000000; + gFieldEffectArguments[0] = task->data[15] | 0x80000000; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; } @@ -2934,9 +2933,9 @@ void sub_8088A78(struct Task *task) sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3)); FieldObjectClearAnimIfSpecialAnimFinished(mapObject); FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18)); - gUnknown_0202FF84[0] = task->data[1]; - gUnknown_0202FF84[1] = task->data[2]; - gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId; + gFieldEffectArguments[0] = task->data[1]; + gFieldEffectArguments[1] = task->data[2]; + gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId; mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB); task->data[0]++; } @@ -2970,7 +2969,7 @@ u8 FldEff_NPCFlyOut(void) sprite->oam.paletteNum = 0; sprite->oam.priority = 1; sprite->callback = sub_8088BC4; - sprite->data1 = gUnknown_0202FF84[0]; + sprite->data1 = gFieldEffectArguments[0]; PlaySE(SE_W019); return spriteId; } @@ -3009,7 +3008,7 @@ u8 FldEff_UseFly(void) { u8 taskId; taskId = CreateTask(sub_8088C70, 0xfe); - gTasks[taskId].data[1] = gUnknown_0202FF84[0]; + gTasks[taskId].data[1] = gFieldEffectArguments[0]; return 0; } @@ -3040,7 +3039,7 @@ void sub_8088CF8(struct Task *task) if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { task->data[0]++; - gUnknown_0202FF84[0] = task->data[1]; + gFieldEffectArguments[0] = task->data[1]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); } } diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c new file mode 100644 index 000000000..2ad8bdce3 --- /dev/null +++ b/src/field/field_effect_helpers.c @@ -0,0 +1,1632 @@ +#include "global.h" +#include "sprite.h" +#include "fieldmap.h" +#include "metatile_behavior.h" +#include "songs.h" +#include "sound.h" +#include "field_map_obj.h" +#include "field_camera.h" +#include "field_map_obj_helpers.h" +#include "field_weather.h" +#include "field_effect.h" +#include "field_ground_effect.h" +#include "field_effect_helpers.h" + +static void sub_81269E0(struct Sprite *); +static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); +static void npc_pal_op_A(struct MapObject *, u8); +static void npc_pal_op_B(struct MapObject *, u8); +static void sub_81275A0(struct Sprite *); +static void sub_81275C4(struct Sprite *); +static void sub_8127DA0(struct Sprite *); +static void sub_8127DD0(struct Sprite *); +static void sub_8127E30(struct Sprite *); +static void sub_812882C(struct Sprite *, u8, u8); +static void sub_81278D8(struct Sprite *); +static void sub_8127FD4(struct MapObject *, struct Sprite *); +static void sub_812800C(struct MapObject *, struct Sprite *); +static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); +static void sub_8128174(struct Sprite *); +static u32 ShowDisguiseFieldEffect(u8, u8, u8); + +const u8 UnusedEggString_8401E28[] = _("タマゴ"); + +const u16 gUnknown_08401E2C[] = { + 0x0c, + 0x1c, + 0x2c +}; + +const u8 gUnknown_08401E32[] = { + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E36[] = { + 4, + 4, + 4, + 16 +}; + +void (*const gUnknown_08401E40[])(struct Sprite *) = { + sub_81275A0, + sub_81275C4 +}; + +void (*const gUnknown_08401E48[])(struct Sprite *) = { + sub_8127DA0, + sub_8127DD0, + sub_8127E30 +}; + +const u8 gUnknown_08401E54[] = { + 0, + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E5A[] = { + 3, + 7 +}; + +void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) +{ + struct Sprite *newSprite; + + newSprite = &gSprites[obj_unfreeze(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)]; + newSprite->callback = sub_81269E0; + newSprite->oam.priority = 3; + newSprite->oam.paletteNum = gUnknown_0830FD14[newSprite->oam.paletteNum]; + newSprite->usingSheet = TRUE; + newSprite->anims = gDummySpriteAnimTable; + StartSpriteAnim(newSprite, 0); + newSprite->affineAnims = gDummySpriteAffineAnimTable; + newSprite->affineAnimBeginning = TRUE; + newSprite->subspriteMode = 0; + newSprite->data0 = sprite->data0; + newSprite->data1 = mapObject->localId; + newSprite->data7 = flag; + npc_pal_op(mapObject, newSprite); + if (!flag) + { + newSprite->oam.affineMode = 1; + } +} + +static s16 sub_81268D0(struct MapObject *mapObject) +{ + return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2; +} + +static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 whichElement; + u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)]; + + memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C); + sprite->data2 = 0; + if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E)))) + { + sprite->data2 = unk_8041e2c[whichElement - 1]; + npc_pal_op_A(mapObject, sprite->oam.paletteNum); + } + else + { + npc_pal_op_B(mapObject, sprite->oam.paletteNum); + } +} + +static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum) +{ + const struct MapObjectGraphicsInfo *graphicsInfo; + + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (graphicsInfo->paletteTag2 != 0x11ff) + { + if (graphicsInfo->paletteSlot == 0) + { + npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum); + } + else if (graphicsInfo->paletteSlot == 10) + { + npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum); + } + else + { + pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum); + } + sub_807D78C(paletteNum); + } +} + +static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) +{ + const struct MapObjectGraphicsInfo *graphicsInfo; + + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (graphicsInfo->paletteTag2 != 0x11ff) + { + pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum); + sub_807D78C(paletteNum); + } +} + +static void sub_81269E0(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *oldSprite; + + mapObject = &gMapObjects[sprite->data0]; + oldSprite = &gSprites[mapObject->spriteId]; + if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1) + { + sprite->inUse = FALSE; + } + else + { + sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum]; + sprite->oam.shape = oldSprite->oam.shape; + sprite->oam.size = oldSprite->oam.size; + sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10; + sprite->oam.tileNum = oldSprite->oam.tileNum; + sprite->subspriteTables = oldSprite->subspriteTables; + sprite->subspriteTableNum = oldSprite->subspriteTableNum; + sprite->invisible = oldSprite->invisible; + sprite->pos1.x = oldSprite->pos1.x; + sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data2; + sprite->centerToCornerVecX = oldSprite->centerToCornerVecX; + sprite->centerToCornerVecY = oldSprite->centerToCornerVecY; + sprite->pos2.x = oldSprite->pos2.x; + sprite->pos2.y = -oldSprite->pos2.y; + sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled; + if (sprite->data7 == FALSE) + { + sprite->oam.matrixNum = 0; + if (oldSprite->oam.matrixNum & 0x8) + { + sprite->oam.matrixNum = 1; + } + } + } +} + +u8 sub_8126B54(void) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + sprite->invisible = TRUE; + } + return spriteId; +} + +void objid_set_invisible(u8 spriteId) +{ + gSprites[spriteId].invisible = TRUE; +} + +void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) +{ + s16 x2; + s16 y2; + struct Sprite *sprite; + + sprite = &gSprites[spriteId]; + if (sprite->invisible || sprite->data0 != x || sprite->data1 != y) + { + sub_80603CC(x, y, &x2, &y2); + sprite = &gSprites[spriteId]; + sprite->pos1.x = x2 + 8; + sprite->pos1.y = y2 + 8; + sprite->invisible = FALSE; + sprite->data0 = x; + sprite->data1 = y; + StartSpriteAnim(sprite, animNum - 1); + } +} + +u32 FldEff_Shadow(void) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + u8 spriteId; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].data0 = gFieldEffectArguments[0]; + gSprites[spriteId].data1 = gFieldEffectArguments[1]; + gSprites[spriteId].data2 = gFieldEffectArguments[2]; + gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; + } + return 0; +} + +void oamc_shadow(struct Sprite *sprite) +{ + u8 mapObjectId; + struct MapObject *mapObject; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + { + FieldEffectStop(sprite, FLDEFF_SHADOW); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->oam.priority = linkedSprite->oam.priority; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y + sprite->data3; + if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F)) + { + FieldEffectStop(sprite, FLDEFF_SHADOW); + } + } +} + +u32 FldEff_TallGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + sprite->data5 = gFieldEffectArguments[6]; + if (gFieldEffectArguments[7]) + { + SeekSpriteAnim(sprite, 4); + } + } + return 0; +} + +void unc_grass_normal(struct Sprite *sprite) +{ + u8 mapNum; + u8 mapGroup; + u8 metatileBehavior; + u8 localId; + u8 mapObjectId; + struct MapObject *mapObject; + + mapNum = sprite->data5 >> 8; + mapGroup = sprite->data5; + if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + { + sprite->data1 -= gCamera.x; + sprite->data2 -= gCamera.y; + sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + } + localId = sprite->data3 >> 8; + mapNum = sprite->data3; + mapGroup = sprite->data4; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + { + FieldEffectStop(sprite, FLDEFF_TALL_GRASS); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + { + sprite->data7 = TRUE; + } + metatileBehavior = 0; + if (sprite->animCmdIndex == 0) + { + metatileBehavior = 4; + } + sub_806487C(sprite, 0); + sub_812882C(sprite, sprite->data0, metatileBehavior); + } +} + +u32 FldEff_JumpTallGrass(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = 12; + } + return 0; +} + +u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) +{ + struct Sprite *sprite; + u8 i; + + for (i = 0; i < MAX_SPRITES; i ++) + { + if (gSprites[i].inUse) + { + sprite = &gSprites[i]; + if (sprite->callback == unc_grass_normal && (x == sprite->data1 && y == sprite->data2) && (localId == (u8)(sprite->data3 >> 8) && mapNum == (sprite->data3 & 0xFF) && mapGroup == sprite->data4)) + { + return i; + } + } + } + return MAX_SPRITES; +} + +u32 FldEff_LongGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]); + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + sprite->data5 = gFieldEffectArguments[6]; + if (gFieldEffectArguments[7]) + { + SeekSpriteAnim(sprite, 6); + } + } + return 0; +} + +void unc_grass_tall(struct Sprite *sprite) +{ + u8 mapNum; + u8 mapGroup; + u8 metatileBehavior; + u8 localId; + u8 mapObjectId; + struct MapObject *mapObject; + + mapNum = sprite->data5 >> 8; + mapGroup = sprite->data5; + if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + { + sprite->data1 -= gCamera.x; + sprite->data2 -= gCamera.y; + sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + } + localId = sprite->data3 >> 8; + mapNum = sprite->data3; + mapGroup = sprite->data4; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + { + FieldEffectStop(sprite, FLDEFF_LONG_GRASS); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + { + sprite->data7 = TRUE; + } + sub_806487C(sprite, 0); + sub_812882C(sprite, sprite->data0, 0); + } +} + +u32 FldEff_JumpLongGrass(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = 18; + } + return 0; +} + +u32 FldEff_ShortGrass(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &(gSprites[spriteId]); + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + } + return 0; +} + +void sub_8127334(struct Sprite *sprite) +{ + u8 mapObjectId; + s16 x; + s16 y; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18) + { + FieldEffectStop(sprite, FLDEFF_SHORT_GRASS); + } + else + { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + y = linkedSprite->pos1.y; + x = linkedSprite->pos1.x; + if (x != sprite->data3 || y != sprite->data4) + { + sprite->data3 = x; + sprite->data4 = y; + if (sprite->animEnded) + { + StartSpriteAnim(sprite, 0); + } + } + sprite->pos1.x = x; + sprite->pos1.y = y; + sprite->pos2.y = (graphicsInfo->height >> 1) - 8; + sprite->subpriority = linkedSprite->subpriority - 1; + sprite->oam.priority = linkedSprite->oam.priority; + sub_806487C(sprite, linkedSprite->invisible); + } +} + +u32 FldEff_SandFootprints(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data7 = FLDEFF_SAND_FOOTPRINTS; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return 0; +} + +u32 FldEff_DeepSandFootprints(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return spriteId; +} + +u32 FldEff_BikeTireTracks(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return spriteId; +} + +void sub_8127584(struct Sprite *sprite) +{ + gUnknown_08401E40[sprite->data0](sprite); +} + +static void sub_81275A0(struct Sprite *sprite) +{ + if (++sprite->data1 > 40) + { + sprite->data0 = 1; + } + sub_806487C(sprite, FALSE); +} + +static void sub_81275C4(struct Sprite *sprite) +{ + sprite->invisible ^= 1; + sprite->data1 ++; + sub_806487C(sprite, sprite->invisible); + if (sprite->data1 > 56) + { + FieldEffectStop(sprite, sprite->data7); + } +} + +u32 FldEff_Splash(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->oam.priority = linkedSprite->oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->pos2.y = (graphicsInfo->height >> 1) - 4; + PlaySE(SE_MIZU); + } + return 0; +} + +void sub_81276B4(struct Sprite *sprite) +{ + u8 mapObjectId; + + if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + { + FieldEffectStop(sprite, FLDEFF_SPLASH); + } + else + { + sprite->pos1.x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x; + sprite->pos1.y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y; + sub_806487C(sprite, FALSE); + } +} + +u32 FldEff_JumpSmallSplash(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH; + } + return 0; +} + +u32 FldEff_JumpBigSplash(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = FLDEFF_JUMP_BIG_SPLASH; + } + return 0; +} + +u32 FldEff_FeetInFlowingWater(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->callback = sub_81278D8; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = -1; + sprite->data4 = -1; + sprite->pos2.y = (graphicsInfo->height >> 1) - 4; + StartSpriteAnim(sprite, 1); + } + return 0; +} + +static void sub_81278D8(struct Sprite *sprite) +{ + u8 mapObjectId; + struct Sprite *linkedSprite; + struct MapObject *mapObject; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19) + { + FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y; + sprite->subpriority = linkedSprite->subpriority; + sub_806487C(sprite, FALSE); + if (mapObject->coords2.x != sprite->data3 || mapObject->coords2.y != sprite->data4) + { + sprite->data3 = mapObject->coords2.x; + sprite->data4 = mapObject->coords2.y; + if (!sprite->invisible) + { + PlaySE(SE_MIZU); + } + } + } +} + +u32 FldEff_Ripple(void) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_RIPPLE; + } + return 0; +} + +u32 FldEff_HotSpringsWater(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + } + return 0; +} + +void sub_8127A7C(struct Sprite *sprite) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21) + { + FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER); + } + else + { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8; + sprite->subpriority = linkedSprite->subpriority - 1; + sub_806487C(sprite, FALSE); + } +} + +u32 FldEff_Unknown19(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_UNKNOWN_19; + } + return 0; +} + +u32 FldEff_Unknown20(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_UNKNOWN_20; + } + return 0; +} + +u32 FldEff_Unknown21(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_UNKNOWN_21; + } + return 0; +} + +u32 FldEff_Unknown22(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_UNKNOWN_22; + } + return 0; +} + +void ash(s16 x, s16 y, u16 c, s16 d) +{ + gFieldEffectArguments[0] = x; + gFieldEffectArguments[1] = y; + gFieldEffectArguments[2] = 0x52; + gFieldEffectArguments[3] = 1; + gFieldEffectArguments[4] = c; + gFieldEffectArguments[5] = d; + FieldEffectStart(FLDEFF_ASH); +} + +u32 FldEff_Ash(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + } + return 0; +} + +void sub_8127D84(struct Sprite *sprite) +{ + gUnknown_08401E48[sprite->data0](sprite); +} + +static void sub_8127DA0(struct Sprite *sprite) +{ + sprite->invisible = TRUE; + sprite->animPaused = TRUE; + if (--sprite->data4 == 0) + { + sprite->data0 = 1; + } +} + +static void sub_8127DD0(struct Sprite *sprite) +{ + sprite->invisible = FALSE; + sprite->animPaused = FALSE; + MapGridSetMetatileIdAt(sprite->data1, sprite->data2, sprite->data3); + CurrentMapDrawMetatileAt(sprite->data1, sprite->data2); + gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE; + sprite->data0 = 2; +} + +static void sub_8127E30(struct Sprite *sprite) +{ + sub_806487C(sprite, FALSE); + if (sprite->animEnded) + { + FieldEffectStop(sprite, FLDEFF_ASH); + } +} + +u32 FldEff_SurfBlob(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96); + if (spriteId !=MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.paletteNum = 0; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = -1; + sprite->data6 = -1; + sprite->data7 = -1; + } + FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); + return spriteId; +} + +void sub_8127ED0(u8 spriteId, u8 value) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF) | (value & 0xF); +} + +void sub_8127EFC(u8 spriteId, u8 value) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4); +} + +void sub_8127F28(u8 spriteId, u8 value, s16 data1) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8); + gSprites[spriteId].data1 = data1; +} + +static u8 sub_8127F5C(struct Sprite *sprite) +{ + return sprite->data0 & 0xF; +} + +static u8 sub_8127F64(struct Sprite *sprite) +{ + return (sprite->data0 & 0xF0) >> 4; +} + +static u8 sub_8127F70(struct Sprite *sprite) +{ + return (sprite->data0 & 0xF00) >> 8; +} + +void sub_8127F7C(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *linkedSprite; + + mapObject = &gMapObjects[sprite->data2]; + linkedSprite = &gSprites[mapObject->spriteId]; + sub_8127FD4(mapObject, sprite); + sub_812800C(mapObject, sprite); + sub_81280A0(mapObject, linkedSprite, sprite); + sprite->oam.priority = linkedSprite->oam.priority; +} + +static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)]; + + memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54); + if (sub_8127F64(sprite) == 0) + { + StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]); + } +} + +#ifdef NONMATCHING +static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +{ + s16 x; + s16 y; + u8 i; + + x = mapObject->coords2.x; + y = mapObject->coords2.y; + if (sprite->pos2.y == 0 && (x != sprite->data6 || y != sprite->data7)) + { + sprite->data5 = sprite->pos2.y; + for (sprite->data6 = x, sprite->data7 = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data6, y = sprite->data7) + { + MoveCoords(i, &x, &y); + if (MapGridGetZCoordAt(x, y) == 3) + { + sprite->data5 ++; + break; + } + } + } +} +#else +__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x4\n" + "\tadds r4, r1, 0\n" + "\tldrh r2, [r0, 0x10]\n" + "\tmov r1, sp\n" + "\tstrh r2, [r1]\n" + "\tldrh r1, [r0, 0x12]\n" + "\tmov r0, sp\n" + "\tadds r0, 0x2\n" + "\tstrh r1, [r0]\n" + "\tmovs r2, 0x26\n" + "\tldrsh r3, [r4, r2]\n" + "\tmov r8, r0\n" + "\tcmp r3, 0\n" + "\tbne _08128094\n" + "\tmov r0, sp\n" + "\tmovs r5, 0\n" + "\tldrsh r2, [r0, r5]\n" + "\tmovs r5, 0x3A\n" + "\tldrsh r0, [r4, r5]\n" + "\tcmp r2, r0\n" + "\tbne _08128048\n" + "\tlsls r0, r1, 16\n" + "\tasrs r0, 16\n" + "\tmovs r5, 0x3C\n" + "\tldrsh r1, [r4, r5]\n" + "\tcmp r0, r1\n" + "\tbeq _08128094\n" + "_08128048:\n" + "\tstrh r3, [r4, 0x38]\n" + "\tstrh r2, [r4, 0x3A]\n" + "\tmov r1, r8\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r1, r2]\n" + "\tstrh r0, [r4, 0x3C]\n" + "\tmovs r5, 0x1\n" + "\tmov r7, r8\n" + "\tmov r6, sp\n" + "_0812805A:\n" + "\tadds r0, r5, 0\n" + "\tmov r1, sp\n" + "\tadds r2, r7, 0\n" + "\tbl MoveCoords\n" + "\tmovs r1, 0\n" + "\tldrsh r0, [r6, r1]\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r7, r2]\n" + "\tbl MapGridGetZCoordAt\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x3\n" + "\tbne _08128080\n" + "\tldrh r0, [r4, 0x38]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r4, 0x38]\n" + "\tb _08128094\n" + "_08128080:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tldrh r0, [r4, 0x3A]\n" + "\tstrh r0, [r6]\n" + "\tldrh r0, [r4, 0x3C]\n" + "\tmov r1, r8\n" + "\tstrh r0, [r1]\n" + "\tcmp r5, 0x4\n" + "\tbls _0812805A\n" + "_08128094:\n" + "\tadd sp, 0x4\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif + +static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) +{ + u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)]; + u8 v0; + + memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A); + v0 = sub_8127F5C(sprite); + if (v0 != 0) + { + if (((u16)(++ sprite->data4) & unk_8401E5A[sprite->data5]) == 0) + { + sprite->pos2.y += sprite->data3; + } + if ((sprite->data4 & 0x0F) == 0) + { + sprite->data3 = -sprite->data3; + } + if (v0 != 2) + { + if (sub_8127F70(sprite) == 0) + { + linkedSprite->pos2.y = sprite->pos2.y; + } + else + { + linkedSprite->pos2.y = sprite->data1 + sprite->pos2.y; + } + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y + 8; + } + } +} + +u8 sub_8128124(u8 oldSpriteId) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); + sprite = &gSprites[spriteId]; + sprite->callback = sub_8128174; + sprite->invisible = TRUE; + sprite->data0 = oldSpriteId; + sprite->data1 = 1; + return spriteId; +} + +static void sub_8128174(struct Sprite *sprite) +{ + struct Sprite *oldSprite; + + oldSprite = &gSprites[sprite->data0]; + if (((sprite->data2++) & 0x03) == 0) + { + oldSprite->pos2.y += sprite->data1; + } + if ((sprite->data2 & 0x0F) == 0) + { + sprite->data1 = -sprite->data1; + } +} + +u32 FldEff_Dust(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = 10; + } + return 0; +} + +u32 FldEff_SandPile(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + sprite->pos2.y = (graphicsInfo->height >> 1) - 2; + SeekSpriteAnim(sprite, 2); + } + return 0; +} + +void sub_81282E0(struct Sprite *sprite) +{ + u8 mapObjectId; + s16 x; + s16 y; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20) + { + FieldEffectStop(sprite, FLDEFF_SAND_PILE); + } + else + { + y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y; + x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x; + if (x != sprite->data3 || y != sprite->data4) + { + sprite->data3 = x; + sprite->data4 = y; + if (sprite->animEnded) + { + StartSpriteAnim(sprite, 0); + } + } + sprite->pos1.x = x; + sprite->pos1.y = y; + sprite->subpriority = gSprites[gMapObjects[mapObjectId].spriteId].subpriority; + sub_806487C(sprite, FALSE); + } +} + +u32 FldEff_Bubbles(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = 1; + } + return 0; +} + +void sub_8128410(struct Sprite *sprite) +{ + sprite->data0 += 0x80; + sprite->data0 &= 0x100; + sprite->pos1.y -= sprite->data0 >> 8; + sub_806487C(sprite, FALSE); + if (sprite->invisible || sprite->animEnded) + { + FieldEffectStop(sprite, FLDEFF_BUBBLES); + } +} + +u32 FldEff_BerryTreeGrowthSparkle(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->oam.paletteNum = 5; + sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; + } + return 0; +} + +u32 FldEff_TreeDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 0x18, 0x04); +} + + +u32 FldEff_MountainDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 0x19, 0x03); +} + + +u32 FldEff_SandDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 0x1C, 0x02); +} + +static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) +{ + u8 spriteId; + struct Sprite *sprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId)) + { + FieldEffectActiveListRemove(fldEff); + return MAX_SPRITES; + } + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled ++; + sprite->oam.paletteNum = paletteNum; + sprite->data1 = fldEff; + sprite->data2 = gFieldEffectArguments[0]; + sprite->data3 = gFieldEffectArguments[1]; + sprite->data4 = gFieldEffectArguments[2]; + } + return spriteId; +} + +void sub_81285AC(struct Sprite *sprite) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data2, sprite->data3, sprite->data4, &mapObjectId)) + { + FieldEffectStop(sprite, sprite->data1); + } + // else { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + sprite->invisible = linkedSprite->invisible; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16; + sprite->subpriority = linkedSprite->subpriority - 1; + if (sprite->data0 == 1) + { + sprite->data0 ++; + StartSpriteAnim(sprite, 1); + } + if (sprite->data0 == 2 && sprite->animEnded) + { + sprite->data7 = 1; + } + if (sprite->data0 == 3) + { + FieldEffectStop(sprite, sprite->data1); + } + // } +} + +void sub_812869C(struct MapObject *mapObject) +{ + if (mapObject->mapobj_unk_21 == 1) + { + gSprites[mapObject->mapobj_unk_1A].data0 ++; + } +} + +bool8 sub_81286C4(struct MapObject *mapObject) +{ + struct Sprite *sprite; + + if (mapObject->mapobj_unk_21 == 2) + { + return TRUE; + } + if (mapObject->mapobj_unk_21 == 0) + { + return TRUE; + } + sprite = &gSprites[mapObject->mapobj_unk_1A]; + if (sprite->data7) + { + mapObject->mapobj_unk_21 = 2; + sprite->data0 ++; + return TRUE; + } + return FALSE; +} + +u32 FldEff_Sparkle(void) +{ + u8 spriteId; + + gFieldEffectArguments[0] += 7; + gFieldEffectArguments[1] += 7; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = gFieldEffectArguments[2]; + gSprites[spriteId].coordOffsetEnabled = TRUE; + } + return 0; +} + +void sub_8128774(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + if (sprite->animEnded) + { + sprite->invisible = TRUE; + sprite->data0 ++; + } + if (sprite->data0 == 0) + { + return; + } + } + if (++ sprite->data1 >= 35) + { + FieldEffectStop(sprite, FLDEFF_SPARKLE); + } +} + +void sub_81287C4(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + FieldEffectStop(sprite, sprite->data1); + } + else + { + sub_806487C(sprite, FALSE); + SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0); + } +} + +void sub_8128800(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + FieldEffectStop(sprite, sprite->data0); + } + else + { + sub_806487C(sprite, FALSE); + } +} + +#ifdef NONMATCHING +static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +{ + u8 i; + s16 xlo; + s16 xhi; + s16 lx; + s16 lyhi; + s16 ly; + s16 ylo; + s16 yhi; + struct MapObject *mapObject; // r4 + const struct MapObjectGraphicsInfo *graphicsInfo; // destroyed + struct Sprite *linkedSprite; // r5 + + SetObjectSubpriorityByZCoord(z, sprite, offset); + for (i = 0; i < 16; i ++) + { + mapObject = &gMapObjects[i]; + if (mapObject->active) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + linkedSprite = &gSprites[mapObject->spriteId]; + xhi = sprite->pos1.x + sprite->centerToCornerVecX; + xlo = sprite->pos1.x - sprite->centerToCornerVecX; + lx = linkedSprite->pos1.x; + if (xhi < lx && xlo > lx) + { + lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY; + ly = linkedSprite->pos1.y; + ylo = sprite->pos1.y - sprite->centerToCornerVecY; + yhi = ylo + linkedSprite->centerToCornerVecY; + if ((lyhi < yhi || lyhi < ylo) && ly > yhi) + { + if (sprite->subpriority <= linkedSprite->subpriority) + { + sprite->subpriority = linkedSprite->subpriority + 2; + break; + } + } + } + } + } +} +#else +__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tadds r6, r0, 0\n" + "\tadds r0, r1, 0\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tadds r1, r6, 0\n" + "\tbl SetObjectSubpriorityByZCoord\n" + "\tmovs r7, 0\n" + "_08128842:\n" + "\tlsls r0, r7, 3\n" + "\tadds r0, r7\n" + "\tlsls r0, 2\n" + "\tldr r1, _081288DC @ =gMapObjects\n" + "\tadds r4, r0, r1\n" + "\tldrb r0, [r4]\n" + "\tlsls r0, 31\n" + "\tcmp r0, 0\n" + "\tbeq _081288E4\n" + "\tldrb r0, [r4, 0x5]\n" + "\tbl GetFieldObjectGraphicsInfo\n" + "\tldrb r1, [r4, 0x4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _081288E0 @ =gSprites\n" + "\tadds r5, r0, r1\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x28\n" + "\tmovs r2, 0\n" + "\tldrsb r2, [r0, r2]\n" + "\tldrh r0, [r6, 0x20]\n" + "\tadds r1, r0, r2\n" + "\tsubs r0, r2\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tmovs r0, 0x20\n" + "\tldrsh r2, [r5, r0]\n" + "\tcmp r1, r2\n" + "\tbge _081288E4\n" + "\tlsls r0, r4, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r2\n" + "\tble _081288E4\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x29\n" + "\tmovs r3, 0\n" + "\tldrsb r3, [r0, r3]\n" + "\tldrh r2, [r5, 0x22]\n" + "\tadds r2, r3\n" + "\tldrh r4, [r5, 0x22]\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x29\n" + "\tmovs r1, 0\n" + "\tldrsb r1, [r0, r1]\n" + "\tldrh r0, [r6, 0x22]\n" + "\tsubs r0, r1\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tadds r3, r0, r3\n" + "\tlsls r2, 16\n" + "\tasrs r2, 16\n" + "\tlsls r3, 16\n" + "\tasrs r3, 16\n" + "\tcmp r2, r3\n" + "\tblt _081288BC\n" + "\tcmp r2, r0\n" + "\tbge _081288E4\n" + "_081288BC:\n" + "\tlsls r0, r4, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r3\n" + "\tble _081288E4\n" + "\tadds r2, r6, 0\n" + "\tadds r2, 0x43\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x43\n" + "\tldrb r1, [r0]\n" + "\tldrb r0, [r2]\n" + "\tcmp r0, r1\n" + "\tbhi _081288E4\n" + "\tadds r0, r1, 0x2\n" + "\tstrb r0, [r2]\n" + "\tb _081288EE\n" + "\t.align 2, 0\n" + "_081288DC: .4byte gMapObjects\n" + "_081288E0: .4byte gSprites\n" + "_081288E4:\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tcmp r7, 0xF\n" + "\tbls _08128842\n" + "_081288EE:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c new file mode 100644 index 000000000..82776d18c --- /dev/null +++ b/src/field/field_fadetransition.c @@ -0,0 +1,626 @@ +#include "global.h" +#include "cable_club.h" +#include "fieldmap.h" +#include "field_door.h" +#include "field_effect.h" +#include "field_fadetransition.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "field_player_avatar.h" +#include "field_special_scene.h" +#include "field_weather.h" +#include "fldeff_flash.h" +#include "link.h" +#include "main.h" +#include "map_obj_lock.h" +#include "metatile_behavior.h" +#include "palette.h" +#include "overworld.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "start_menu.h" +#include "task.h" + +void sub_8080B9C(u8); +void task_map_chg_seq_0807E20C(u8); +void task_map_chg_seq_0807E2CC(u8); +void task0A_fade_n_map_maybe(u8); +void sub_808115C(u8); + +void palette_bg_fill_white(void) +{ + CpuFastFill16(RGB_WHITE, gPlttBufferFaded, PLTT_SIZE); +} + +void palette_bg_fill_black(void) +{ + CpuFastFill16(RGB_BLACK, gPlttBufferFaded, PLTT_SIZE); +} + +void pal_fill_for_map_transition(void) +{ + u8 map_light = get_map_type_from_warp0(); + switch (fade_type_for_given_maplight_pair(map_light, Overworld_GetMapTypeOfSaveblockLocation())) + { + case 0: + fade_screen(0, 0); + palette_bg_fill_black(); + break; + case 1: + fade_screen(2, 0); + palette_bg_fill_white(); + } +} + +void pal_fill_black(void) +{ + fade_screen(0, 0); + palette_bg_fill_black(); +} + +void fade_8080918(void) +{ + u8 light_level = Overworld_GetMapTypeOfSaveblockLocation(); + switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType)) + { + case 0: + fade_screen(1, 0); + break; + case 1: + fade_screen(3, 0); + } +} + +void sub_8080958(u8 arg) +{ + sub_8059B88(!arg); +} + +void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID) +{ + if (sub_8080E70() == TRUE) + { + DestroyTask(taskID); + EnableBothScriptContexts(); + } +} + +void sub_8080990(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + pal_fill_black(); + CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); +} + +void sub_80809B0(void) +{ + ScriptContext2_Enable(); + pal_fill_black(); + CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); +} + +void task_mpl_807DD60(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[1] = sub_8083664(); + task->data[0]++; + break; + case 1: + if (gTasks[task->data[1]].isActive != TRUE) + { + pal_fill_for_map_transition(); + task->data[0]++; + } + break; + case 2: + if (sub_8080E70() == TRUE) + { + ScriptContext2_Disable(); + DestroyTask(taskId); + } + } +} + +void sub_8080A3C(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + palette_bg_fill_black(); + CreateTask(task_mpl_807DD60, 10); +} + +void sub_8080A5C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + sub_80084A4(); + task->data[0]++; + break; + case 1: + if (sub_8007ECC()) + { + pal_fill_for_map_transition(); + task->data[0]++; + } + break; + case 2: + if (sub_8080E70() == TRUE) + { + sub_8007B14(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + } +} + +void sub_8080AC4(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + palette_bg_fill_black(); + CreateTask(sub_8080A5C, 10); +} + +void sub_8080AE4(void) +{ + s16 x, y; + u8 behavior; + TaskFunc func; + PlayerGetDestCoords(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsDoor(behavior) == TRUE) + func = sub_8080B9C; + else if (MetatileBehavior_IsNonAnimDoor(behavior) == TRUE) + func = task_map_chg_seq_0807E20C; + else + func = task_map_chg_seq_0807E2CC; + CreateTask(func, 10); +} + +void mapldr_default(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_for_map_transition(); + sub_8080AE4(); + ScriptContext2_Enable(); +} + +void sub_8080B60(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_black(); + sub_8080AE4(); + ScriptContext2_Enable(); +} + +void sub_8080B78(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_for_map_transition(); + PlaySE(SE_TK_WARPOUT); + CreateTask(task_map_chg_seq_0807E2CC, 10); + ScriptContext2_Enable(); +} + +void sub_8080B9C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->data[0]) + { + case 0: + sub_8080958(0); + FreezeMapObjects(); + PlayerGetDestCoords(x, y); + FieldSetDoorOpened(*x, *y); + task->data[0] = 1; + break; + case 1: + if (sub_8080E70()) + { + u8 mapObjId; + sub_8080958(1); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 8); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + u8 mapObjId; + task->data[1] = FieldAnimateDoorClose(*x, *y); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + UnfreezeMapObjects(); + task->data[0] = 4; + } + break; + case 4: + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void task_map_chg_seq_0807E20C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->data[0]) + { + case 0: + sub_8080958(0); + FreezeMapObjects(); + PlayerGetDestCoords(x, y); + task->data[0] = 1; + break; + case 1: + if (sub_8080E70()) + { + u8 mapObjId; + sub_8080958(1); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], GetGoSpeed0AnimId(player_get_direction_lower_nybble())); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + UnfreezeMapObjects(); + task->data[0] = 3; + } + break; + case 3: + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void task_map_chg_seq_0807E2CC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + FreezeMapObjects(); + ScriptContext2_Enable(); + gTasks[taskId].data[0]++; + break; + case 1: + if (sub_8080E70()) + { + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_8080DC4(u8 taskId) +{ + if (sub_8080E70() == TRUE) + { + DestroyTask(taskId); + CreateTask(sub_80712B4, 80); + } +} + +void atk17_seteffectuser(void) +{ + pal_fill_black(); + CreateStartMenuTask(sub_8080DC4); + ScriptContext2_Enable(); +} + +void task_mpl_807E3C8(u8 taskId) +{ + if (sub_8080E70() == 1) + { + ScriptContext2_Disable(); + DestroyTask(taskId); + sub_8064E2C(); + } +} + +void sub_8080E28(void) +{ + ScriptContext2_Enable(); + pal_fill_black(); + CreateTask(task_mpl_807E3C8, 10); +} + +void sub_8080E44(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + pal_fill_black(); + CreateTask(task_mpl_807E3C8, 10); +} + +bool32 sub_8080E64(void) +{ + return gPaletteFade.active; +} + +bool32 sub_8080E70(void) +{ + if (sub_807D770() == TRUE) + return TRUE; + else + return FALSE; +} + +void sub_8080E88(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlayRainSoundEffect(); + PlaySE(SE_KAIDAN); + gFieldCallback = mapldr_default; + CreateTask(task0A_fade_n_map_maybe, 10); +} + +void sp13E_warp_to_last_warp(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlayRainSoundEffect(); + gFieldCallback = mapldr_default; + CreateTask(task0A_fade_n_map_maybe, 10); +} + +void sub_8080EF0(void) +{ + ScriptContext2_Enable(); + gFieldCallback = mapldr_default; + CreateTask(sub_808115C, 10); +} + +void sp13F_fall_to_last_warp(void) +{ + sp13E_warp_to_last_warp(); + gFieldCallback = sub_8086748; +} + +void sub_8080F2C(u8 metatileBehavior) +{ + ScriptContext2_Enable(); + sub_8086A2C(metatileBehavior, 10); +} + +void sub_8080F48(void) +{ + ScriptContext2_Enable(); + sub_80871B8(10); +} + +void sub_8080F58(void) +{ + ScriptContext2_Enable(); + sub_8087654(10); +} + +void sub_8080F68(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlaySE(SE_TK_WARPIN); + CreateTask(task0A_fade_n_map_maybe, 10); + gFieldCallback = sub_8080B78; +} + +void sub_8080F9C(void) +{ + ScriptContext2_Enable(); + fade_8080918(); + CreateTask(task0A_fade_n_map_maybe, 10); + gFieldCallback = sub_80C791C; +} + +void sub_8080FC4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_8080E64() && sub_8054034()) + { + task->data[0]++; + } + break; + case 2: + warp_in(); + SetMainCallback2(sub_8054588); + DestroyTask(taskId); + break; + } +} + +void DoCableClubWarp(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlaySE(SE_KAIDAN); + CreateTask(sub_8080FC4, 10); +} + +void sub_8081050(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + ClearLinkCallback_2(); + fade_screen(1, 0); + sub_8053FF8(); + PlaySE(SE_KAIDAN); + data[0]++; + break; + case 1: + if (!sub_8080E64() && sub_8054034()) + { + sub_800832C(); + data[0]++; + } + break; + case 2: + if (!gReceivedRemoteLinkPlayers) + { + warp_in(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + } + break; + } +} + +void sub_80810DC(void) +{ + CreateTask(sub_8081050, 10); +} + +void task0A_fade_n_map_maybe(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + FreezeMapObjects(); + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_8080E64() && sub_8054034()) + { + task->data[0]++; + } + break; + case 2: + warp_in(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + break; + } +} + +void sub_808115C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->data[0]) + { + case 0: + FreezeMapObjects(); + PlayerGetDestCoords(x, y); + PlaySE(GetDoorSoundEffect(*x, *y - 1)); + task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); + task->data[0] = 1; + break; + case 1: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + u8 mapObjId; + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[mapObjId]); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 9); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + u8 mapObjId; + task->data[1] = FieldAnimateDoorClose(*x, *y - 1); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]); + sub_8080958(0); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + task->data[0] = 4; + } + break; + case 4: + sub_8053FF8(); + fade_8080918(); + PlayRainSoundEffect(); + task->data[0] = 0; + task->func = task0A_fade_n_map_maybe; + break; + } +} + +void sub_80812C8(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + FreezeMapObjects(); + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_8080E64() && sub_8054034()) + { + task->data[0]++; + } + break; + case 2: + warp_in(); + SetMainCallback2(sub_8054534); + DestroyTask(taskId); + break; + } +} + +void sub_8081334(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlayRainSoundEffect(); + PlaySE(SE_KAIDAN); + gFieldCallback = sub_8080B60; + CreateTask(sub_80812C8, 10); +} diff --git a/src/field/field_ground_effect.c b/src/field/field_ground_effect.c new file mode 100644 index 000000000..5af8ea3e3 --- /dev/null +++ b/src/field/field_ground_effect.c @@ -0,0 +1,796 @@ +#include "global.h" +#include "field_ground_effect.h" +#include "field_effect.h" +#include "field_effect_helpers.h" +#include "field_map_obj_helpers.h" +#include "fieldmap.h" +#include "metatile_behavior.h" + +static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8); +static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8); +static void DoTracksGroundEffect_BikeTireTracks( + struct MapObject *mapObj, struct Sprite *sprite, u8); +void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite); +u8 GetReflectionTypeByMetatileBehavior(u32 behavior); + +static void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags) +{ + FieldObjectUpdateMetatileBehaviors(mapObj); + GetGroundEffectFlags_Reflection(mapObj, flags); + GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags); + GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags); + GetGroundEffectFlags_SandPile(mapObj, flags); + GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); + GetGroundEffectFlags_ShortGrass(mapObj, flags); + GetGroundEffectFlags_HotSprings(mapObj, flags); +} + +static void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags) +{ + FieldObjectUpdateMetatileBehaviors(mapObj); + GetGroundEffectFlags_Reflection(mapObj, flags); + GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags); + GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags); + GetGroundEffectFlags_Tracks(mapObj, flags); + GetGroundEffectFlags_SandPile(mapObj, flags); + GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); + GetGroundEffectFlags_Puddle(mapObj, flags); + GetGroundEffectFlags_ShortGrass(mapObj, flags); + GetGroundEffectFlags_HotSprings(mapObj, flags); +} + +static void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags) +{ + FieldObjectUpdateMetatileBehaviors(mapObj); + GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); + GetGroundEffectFlags_SandPile(mapObj, flags); + GetGroundEffectFlags_Puddle(mapObj, flags); + GetGroundEffectFlags_Ripple(mapObj, flags); + GetGroundEffectFlags_ShortGrass(mapObj, flags); + GetGroundEffectFlags_HotSprings(mapObj, flags); + GetGroundEffectFlags_Seaweed(mapObj, flags); + GetGroundEffectFlags_JumpLanding(mapObj, flags); +} + +void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj) +{ + mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y); + mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y); +} + +void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags) +{ + u32 reflectionFlags[2] = { 0x00000020, 0x00000010 }; + u8 type = FieldObjectCheckForReflectiveSurface(mapObj); + + if (type) + { + if (!mapObj->mapobj_bit_17) + { + mapObj->mapobj_bit_17 = 0; + mapObj->mapobj_bit_17 = 1; + *flags |= reflectionFlags[type - 1]; + } + } + else + { + mapObj->mapobj_bit_17 = 0; + } +} + +void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E)) + *flags |= 0x1; +} + +void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E)) + *flags |= 0x2; +} + +void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) + *flags |= 0x4; +} + +void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) + *flags |= 0x8; +} + +void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F)) + { + *flags |= 0x100; + } + else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F) + || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F)) + { + *flags |= 0x80; + } +} + +void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F)) + { + if (!mapObj->mapobj_bit_20) + { + mapObj->mapobj_bit_20 = 0; + mapObj->mapobj_bit_20 = 1; + *flags |= 0x800; + } + } + else + { + mapObj->mapobj_bit_20 = 0; + } +} + +void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags) +{ + if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F)) + || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F))) + { + if (!mapObj->mapobj_bit_19) + { + mapObj->mapobj_bit_19 = 0; + mapObj->mapobj_bit_19 = 1; + *flags |= 0x40; + } + } + else + { + mapObj->mapobj_bit_19 = 0; + } +} + +void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F)) + { + *flags |= 0x400; + } +} + +void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E)) + *flags |= 0x200; +} + +void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F)) + { + if (!mapObj->mapobj_bit_18) + { + mapObj->mapobj_bit_18 = 0; + mapObj->mapobj_bit_18 = 1; + *flags |= 0x20000; + } + } + else + { + mapObj->mapobj_bit_18 = 0; + } +} + +void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F)) + { + if (!mapObj->mapobj_bit_21) + { + mapObj->mapobj_bit_21 = 0; + mapObj->mapobj_bit_21 = 1; + *flags |= 0x40000; + } + } + else + { + mapObj->mapobj_bit_21 = 0; + } +} + +void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E)) + *flags |= 0x80000; +} + +void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags) +{ + typedef bool8 (*MetatileFunc)(u8); + + static const MetatileFunc metatileFuncs[] = { + MetatileBehavior_IsTallGrass, + MetatileBehavior_IsLongGrass, + MetatileBehavior_IsPuddle, + MetatileBehavior_IsSurfableWaterOrUnderwater, + MetatileBehavior_IsShallowFlowingWater, + MetatileBehavior_IsATile, + }; + + static const u32 jumpLandingFlags[] = { + 0x00001000, // Landing in tall grass + 0x00002000, // Landing in long grass + 0x00004000, // Landing on puddle + 0x00008000, // Landing on surfable water or underwater + 0x00004000, // Landing on shallow flowing water + 0x00010000, // Landing on any other type of ground + }; + + if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25) + { + u8 i; + + for (i = 0; i < 6; i++) + { + if (metatileFuncs[i](mapObj->mapobj_unk_1E)) + { + *flags |= jumpLandingFlags[i]; + return; + } + } + } +} + +u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj) +{ + const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId); + + // ceil div by tile width? + s16 width = (info->width + 8) >> 4; + s16 height = (info->height + 8) >> 4; + s16 i; + s16 j; + u8 result; + u8 b; + s16 one; + +#define RETURN_REFLECTION_TYPE_AT(x, y) \ + b = MapGridGetMetatileBehaviorAt(x, y); \ + result = GetReflectionTypeByMetatileBehavior(b); \ + if (result != 0) \ + return result; + + for (i = 0, one = 1; i < height; i++) + { + RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x, mapObj->coords2.y + one + i) + RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x, mapObj->coords3.y + one + i) + for (j = 1; j < width; j++) + { + RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x + j, mapObj->coords2.y + one + i) + RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x - j, mapObj->coords2.y + one + i) + RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x + j, mapObj->coords3.y + one + i) + RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x - j, mapObj->coords3.y + one + i) + } + } + return 0; + +#undef RETURN_REFLECTION_TYPE_AT +} + +u8 GetReflectionTypeByMetatileBehavior(u32 behavior) +{ + if (MetatileBehavior_IsIce(behavior)) + return 1; + else if (MetatileBehavior_IsReflective(behavior)) + return 2; + else + return 0; +} + +u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z) +{ + static bool8 (*const unknown_08376040[])(u8) = { + MetatileBehavior_IsJumpSouth, + MetatileBehavior_IsJumpNorth, + MetatileBehavior_IsJumpWest, + MetatileBehavior_IsJumpEast, + }; + + u8 b; + u8 index = z; + + if (index == 0) + return 0; + else if (index > 4) + index -= 4; + + index--; + b = MapGridGetMetatileBehaviorAt(x, y); + + if (unknown_08376040[index](b) == 1) + return index + 1; + + return 0; +} + +void FieldObjectSetSpriteOamTableForLongGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + if (mapObj->mapobj_bit_4) + return; + + if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) + return; + + if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1F)) + return; + + sprite->subspriteTableNum = 4; + + if (ZCoordToPriority(mapObj->elevation) == 1) + sprite->subspriteTableNum = 5; +} + +bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y) +{ + u8 mapZ; + + if (z == 0) + return FALSE; + + mapZ = MapGridGetZCoordAt(x, y); + + if (mapZ == 0 || mapZ == 0xF) + return FALSE; + + if (mapZ != z) + return TRUE; + + return FALSE; +} + +static const u8 sUnknown_08376050[] = { + 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73 +}; + +// Each byte corresponds to a sprite priority for a field object. +// This is directly the inverse of gFieldObjectPriorities_08376070. +static const u8 sFieldObjectPriorities_08376060[] = { + 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2 +}; + +// Each byte corresponds to a sprite priority for a field object. +// This is the inverse of gFieldObjectPriorities_08376060. +// 1 = Above player sprite +// 2 = Below player sprite +static const u8 sFieldObjectPriorities_08376070[] = { + 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1, +}; + +void FieldObjectUpdateZCoordAndPriority(struct MapObject *mapObj, struct Sprite *sprite) +{ + if (mapObj->mapobj_bit_26) + return; + + FieldObjectUpdateZCoord(mapObj); + + sprite->subspriteTableNum = sFieldObjectPriorities_08376070[mapObj->elevation]; + sprite->oam.priority = sFieldObjectPriorities_08376060[mapObj->elevation]; +} + +void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z) +{ + sprite->subspriteTableNum = sFieldObjectPriorities_08376070[z]; + sprite->oam.priority = sFieldObjectPriorities_08376060[z]; +} + +u8 ZCoordToPriority(u8 z) +{ + return sFieldObjectPriorities_08376060[z]; +} + +void FieldObjectUpdateZCoord(struct MapObject *mapObj) +{ + u8 z = MapGridGetZCoordAt(mapObj->coords2.x, mapObj->coords2.y); + u8 z2 = MapGridGetZCoordAt(mapObj->coords3.x, mapObj->coords3.y); + + if (z == 0xF || z2 == 0xF) + return; + + mapObj->mapobj_unk_0B_0 = z; + + if (z != 0 && z != 0xF) + mapObj->elevation = z; +} + +void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b) +{ + s32 tmp = sprite->centerToCornerVecY; + u32 tmpa = *(u16 *)&sprite->pos1.y; + u32 tmpb = *(u16 *)&gSpriteCoordOffsetY; + s32 tmp2 = (tmpa - tmp) + tmpb; + u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2; + sprite->subpriority = tmp3 + sUnknown_08376050[a] + b; +} + +void FieldObjectUpdateSubpriority(struct MapObject *mapObj, struct Sprite *sprite) +{ + if (mapObj->mapobj_bit_26) + return; + + SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1); +} + +bool8 AreZCoordsCompatible(u8 a, u8 b) +{ + if (a == 0 || b == 0) + return TRUE; + + if (a != b) + return FALSE; + + return TRUE; +} + +void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 *ptr; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; + + ptr = (u8 *)&gSaveBlock1; + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) + | (u8)gSaveBlock1.location.mapGroup; + + gFieldEffectArguments[7] = 1; + FieldEffectStart(FLDEFF_TALL_GRASS); +} + +void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 *ptr; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; + + ptr = (u8 *)&gSaveBlock1; + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) + | (u8)gSaveBlock1.location.mapGroup; + + gFieldEffectArguments[7] = 0; + FieldEffectStart(FLDEFF_TALL_GRASS); +} + +void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 *ptr; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; + + ptr = (u8 *)&gSaveBlock1; + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) + | (u8)gSaveBlock1.location.mapGroup; + + gFieldEffectArguments[7] = 1; + FieldEffectStart(FLDEFF_LONG_GRASS); +} + +void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 *ptr; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; + + ptr = (u8 *)&gSaveBlock1; + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) + | (u8)gSaveBlock1.location.mapGroup; + + gFieldEffectArguments[7] = 0; + FieldEffectStart(FLDEFF_LONG_GRASS); +} + +void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite) +{ + SetUpReflection(mapObj, sprite, 0); +} + +void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite) +{ + SetUpReflection(mapObj, sprite, 1); +} + +void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_FEET_IN_FLOWING_WATER, mapObj); +} + +static void (*const gUnknown_08376080[])(struct MapObject *mapObj, struct Sprite *sprite, u8 a) = { + nullsub, DoTracksGroundEffect_Footprints, DoTracksGroundEffect_BikeTireTracks, +}; + +void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite) +{ + const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId); + gUnknown_08376080[info->tracks](mapObj, sprite, 0); +} + +void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite) +{ + const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId); + gUnknown_08376080[info->tracks](mapObj, sprite, 1); +} + +static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8 a) +{ +} + +static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8 a) +{ + // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) + u16 sandFootprints_FieldEffectData[2] = { + FLDEFF_SAND_FOOTPRINTS, + FLDEFF_DEEP_SAND_FOOTPRINTS + }; + + gFieldEffectArguments[0] = mapObj->coords3.x; + gFieldEffectArguments[1] = mapObj->coords3.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = mapObj->mapobj_unk_18; + FieldEffectStart(sandFootprints_FieldEffectData[a]); +} + +static void DoTracksGroundEffect_BikeTireTracks( + struct MapObject *mapObj, struct Sprite *sprite, u8 a) +{ + // Specifies which bike track shape to show next. + // For example, when the bike turns from up to right, it will show + // a track that curves to the right. + // Each 4-byte row corresponds to the initial direction of the bike, and + // each byte in that row is for the next direction of the bike in the order + // of down, up, left, right. + static const u8 bikeTireTracks_Transitions[4][4] = { + 1, 2, 7, 8, + 1, 2, 6, 5, + 5, 8, 3, 4, + 6, 7, 3, 4, + }; + + if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y) + { + gFieldEffectArguments[0] = mapObj->coords3.x; + gFieldEffectArguments[1] = mapObj->coords3.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = + bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5]; + FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS); + } +} + +void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite) +{ + DoRippleFieldEffect(mapObj, sprite); +} + +void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_SPLASH, mapObj); +} + +void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_SAND_PILE, mapObj); +} + +void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 spriteId; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + FieldEffectStart(FLDEFF_JUMP_TALL_GRASS); + + spriteId = sub_8126FF0( + mapObj->localId, mapObj->mapNum, mapObj->mapGroup, mapObj->coords2.x, mapObj->coords2.y); + + if (spriteId == MAX_SPRITES) + GroundEffect_SpawnOnTallGrass(mapObj, sprite); +} + +void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + FieldEffectStart(FLDEFF_JUMP_LONG_GRASS); +} + +void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH); +} + +void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH); +} + +void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_DUST); +} + +void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_SHORT_GRASS, mapObj); +} + +void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_HOT_SPRINGS_WATER, mapObj); +} + +void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + FieldEffectStart(FLDEFF_BUBBLES); +} + +static void (*const gUnknown_083760A0[])(struct MapObject *mapObj, struct Sprite *sprite) = { + GroundEffect_SpawnOnTallGrass, + sub_8063E94, + sub_8063EE0, + sub_8063F2C, + GroundEffect_WaterReflection, + GroundEffect_IceReflection, + GroundEffect_FlowingWater, + sub_8063FA0, + sub_8063FCC, + GroundEffect_Ripple, + GroundEffect_StepOnPuddle, + GroundEffect_SandPile, + GroundEffect_JumpOnTallGrass, + GroundEffect_JumpOnLongGrass, + GroundEffect_JumpOnShallowWater, + GroundEffect_JumpOnWater, + GroundEffect_JumpLandingDust, + GroundEffect_ShortGrass, + GroundEffect_HotSprings, + GroundEffect_Seaweed +}; + +void sub_8064218(struct MapObject *mapObj, struct Sprite *sprite, u32 flags) +{ + u8 i; + for (i = 0; i < ARRAY_COUNT(gUnknown_083760A0); i++, flags >>= 1) + if (flags & 1) + gUnknown_083760A0[i](mapObj, sprite); +} + +void filters_out_some_ground_effects(struct MapObject *mapObj, u32 *flags) +{ + if (mapObj->mapobj_bit_4) + { + mapObj->mapobj_bit_18 = 0; + mapObj->mapobj_bit_20 = 0; + mapObj->mapobj_bit_19 = 0; + mapObj->mapobj_bit_21 = 0; + *flags &= 0xFFF9F7BD; + } +} + +void FilterOutStepOnPuddleGroundEffectIfJumping(struct MapObject *mapObj, u32 *flags) +{ + if (mapObj->mapobj_bit_5) + *flags &= 0xFFFFFBFF; +} + +void DoGroundEffects_OnSpawn(struct MapObject *mapObj, struct Sprite *sprite) +{ + u32 flags; + + if (mapObj->mapobj_bit_2) + { + flags = 0; + FieldObjectUpdateZCoordAndPriority(mapObj, sprite); + GetAllGroundEffectFlags_OnSpawn(mapObj, &flags); + FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite); + sub_8064218(mapObj, sprite, flags); + mapObj->mapobj_bit_2 = 0; + mapObj->mapobj_bit_4 = 0; + } +} + +void DoGroundEffects_OnBeginStep(struct MapObject *mapObj, struct Sprite *sprite) +{ + u32 flags; + + if (mapObj->mapobj_bit_2) + { + flags = 0; + FieldObjectUpdateZCoordAndPriority(mapObj, sprite); + GetAllGroundEffectFlags_OnBeginStep(mapObj, &flags); + FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite); + filters_out_some_ground_effects(mapObj, &flags); + sub_8064218(mapObj, sprite, flags); + mapObj->mapobj_bit_2 = 0; + mapObj->mapobj_bit_4 = 0; + } +} + +void DoGroundEffects_OnFinishStep(struct MapObject *mapObj, struct Sprite *sprite) +{ + u32 flags; + + if (mapObj->mapobj_bit_3) + { + flags = 0; + FieldObjectUpdateZCoordAndPriority(mapObj, sprite); + GetAllGroundEffectFlags_OnFinishStep(mapObj, &flags); + FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite); + FilterOutStepOnPuddleGroundEffectIfJumping(mapObj, &flags); + sub_8064218(mapObj, sprite, flags); + mapObj->mapobj_bit_3 = 0; + mapObj->mapobj_bit_5 = 0; + } +} diff --git a/src/field_map_obj.c b/src/field/field_map_obj.c index f60b1b233..0cba448a9 100644 --- a/src/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -11,7 +11,7 @@ #include "fieldmap.h" #include "palette.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "metatile_behavior.h" #include "map_constants.h" @@ -1901,7 +1901,7 @@ extern void CameraObjectReset1(void); extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u8 gReservedSpritePaletteCount; -extern struct Camera gUnknown_0202E844; +extern struct Camera gCamera; static u8 gUnknown_030005A4; static u16 gUnknown_030005A6; @@ -2462,24 +2462,24 @@ extern void sub_8064970(struct Sprite *); extern void sub_8060470(s16 *, s16 *, s16, s16); extern void InitObjectPriorityByZCoord(); -u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) +u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction) { const struct MapObjectGraphicsInfo *gfxInfo; struct SpriteTemplate spriteTemplate; const struct SubspriteTable *subspriteTables; u8 spriteId; - gfxInfo = GetFieldObjectGraphicsInfo(a); - MakeObjectTemplateFromFieldObjectGraphicsInfo(a, sub_8064970, &spriteTemplate, &subspriteTables); + gfxInfo = GetFieldObjectGraphicsInfo(graphicsId); + MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, sub_8064970, &spriteTemplate, &subspriteTables); #ifdef NONMATCHING spriteTemplate.paletteTag = 0xFFFF; #else *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; #endif - c += 7; - d += 7; - sub_8060470(&c, &d, 8, 16); - spriteId = CreateSpriteAtEnd(&spriteTemplate, c, d, 0); + x += 7; + y += 7; + sub_8060470(&x, &y, 8, 16); + spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0); if (spriteId != 64) { struct Sprite *sprite = &gSprites[spriteId]; @@ -2490,7 +2490,7 @@ u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) sprite->oam.paletteNum = gfxInfo->paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->data0 = b; - sprite->data1 = e; + sprite->data1 = elevation; if (gfxInfo->paletteSlot == 10) npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot); if (subspriteTables != NULL) @@ -2498,9 +2498,9 @@ u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) SetSubspriteTables(sprite, subspriteTables); sprite->subspriteMode = 2; } - InitObjectPriorityByZCoord(sprite, e); - SetObjectSubpriorityByZCoord(e, sprite, 1); - StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(f)); + InitObjectPriorityByZCoord(sprite, elevation); + SetObjectSubpriorityByZCoord(elevation, sprite, 1); + StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(direction)); } return spriteId; } @@ -2986,24 +2986,21 @@ void UpdateFieldObjectCoordsForCameraUpdate(void) s16 deltaX; s16 deltaY; -#ifndef NONMATCHING - asm(""::"r"(i)); //makes the compiler store i in r3 -#endif - - if (gUnknown_0202E844.field_0) + if (gCamera.field_0) { - for (i = 0, deltaX = gUnknown_0202E844.x, deltaY = gUnknown_0202E844.y; i < 16; i++) + deltaX = gCamera.x; + deltaY = gCamera.y; + for (i = 0; i < 16; i++) { - struct MapObject *mapObject = &gMapObjects[i]; - if (mapObject->active) + if (gMapObjects[i].active) { - mapObject->coords1.x -= deltaX; - mapObject->coords1.y -= deltaY; - mapObject->coords2.x -= deltaX; - mapObject->coords2.y -= deltaY; - mapObject->coords3.x -= deltaX; - mapObject->coords3.y -= deltaY; + gMapObjects[i].coords1.x -= deltaX; + gMapObjects[i].coords1.y -= deltaY; + gMapObjects[i].coords2.x -= deltaX; + gMapObjects[i].coords2.y -= deltaY; + gMapObjects[i].coords3.x -= deltaX; + gMapObjects[i].coords3.y -= deltaY; } } } @@ -3244,7 +3241,7 @@ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 m return FindFieldObjectTemplateInArrayByLocalId(localId, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount); else { - struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum); + struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); return FindFieldObjectTemplateInArrayByLocalId(localId, mapHeader->events->mapObjects, mapHeader->events->mapObjectCount); } @@ -3895,11 +3892,11 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp { if (!(sprite->data7 & 4) && sprite->animNum == 4) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; - FieldEffectStart(0x17); + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE); sprite->animNum = 0; } return 0; @@ -3934,11 +3931,11 @@ u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sp sprite->data1 = 3; sprite->data2 = 0; sprite->data7 |= 2; - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; - FieldEffectStart(0x17); + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE); return 1; } @@ -5030,32 +5027,30 @@ u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -#ifdef NONMATCHING - -u8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { return 0; } -u8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { - int direction; - direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2); - FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2))); mapObject->mapobj_bit_1 = 1; sprite->data1 = 2; return 1; } -u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { + u32 direction; s16 x; s16 y; - int direction; - direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2); + + direction = a2; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); FieldObjectMoveDestCoords(mapObject, direction, &x, &y); FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction)); - if (!npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y)))) + if (npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y)))) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } @@ -5063,9 +5058,115 @@ u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3 sprite->data1 = 2; return 1; } -#endif -asm(".section .text_fmocb2_c\n"); +bool8 sub_805F4F0(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_8060744(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F5A8(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_806079C(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F660(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_80607C8(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectSetRegularAnim(mapObject, sprite, sub_806084C(direction)); + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F760(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_80608A4(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + x = mapObject->coords2.x; + y = mapObject->coords2.y; + sub_8060320(direction, &x, &y, 2, 2); + FieldObjectSetRegularAnim(mapObject, sprite, GetJumpLedgeAnimId(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0); @@ -5086,8 +5187,8 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - mapObject->mapobj_unk_1A = FieldEffectStart(0x1c); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; } @@ -5106,8 +5207,8 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - mapObject->mapobj_unk_1A = FieldEffectStart(0x1d); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; } @@ -5364,53 +5465,38 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction) } bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y); -bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y); +static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y); bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); -u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn) { + u8 direction; + direction = dirn; if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) - { return 1; - } - if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) - { + else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) return 2; - } else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) - { + else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) return 2; - } - if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) - { + else if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) return 3; - } - if (CheckForCollisionBetweenFieldObjects(mapObject, x, y)) - { + else if (DoesObjectCollideWithObjectAt(mapObject, x, y)) return 4; - } return 0; } u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction) { - u8 flags; - flags = 0; + u8 flags = 0; + if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) - { flags |= 1; - } if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))) - { flags |= 2; - } if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) - { flags |= 4; - } - if (CheckForCollisionBetweenFieldObjects(mapObject, x, y)) - { + if (DoesObjectCollideWithObjectAt(mapObject, x, y)) flags |= 8; - } return flags; } @@ -5418,25 +5504,22 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, { s16 minv; s16 maxv; + if (mapObject->mapobj_unk_19 != 0) { minv = mapObject->coords1.x - (mapObject->mapobj_unk_19); maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19); if (minv > x || maxv < x) - { - return 1; - } + return TRUE; } if (mapObject->mapobj_unk_19b != 0) { minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b); maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b); if (minv > y || maxv < y) - { - return 1; - } + return TRUE; } - return 0; + return FALSE; } bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction) @@ -5448,23 +5531,19 @@ bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 return 0; } -bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y) +static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y) { - struct MapObject *mapObject2; u8 i; - for (i=0; i<16; i++) + + for (i = 0; i < 16; i++) { - mapObject2 = &gMapObjects[i]; + struct MapObject *mapObject2 = &gMapObjects[i]; + if (mapObject2->active && mapObject2 != mapObject) { - if ((mapObject2->coords2.x != x || mapObject2->coords2.y != y) && (mapObject2->coords3.x != x || mapObject2->coords3.y != y)) - { - continue; - } - if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0)) - { - return 1; - } + if (((mapObject2->coords2.x == x && mapObject2->coords2.y == y) || (mapObject2->coords3.x == x && mapObject2->coords3.y == y)) + && AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0)) + return TRUE; } } return 0; @@ -5504,23 +5583,26 @@ void unref_sub_80602F8(u8 direction, s16 *x, s16 *y) *y += gDirectionToVector[direction].y << 4; } -void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY) +void sub_8060320(u32 dirn, s16 *x, s16 *y, s16 deltaX, s16 deltaY) { + u8 direction = dirn; + s16 dx2 = deltaX; + s16 dy2 = deltaY; if (gDirectionToVector[direction].x > 0) { - *x += deltaX; + *x += dx2; } if (gDirectionToVector[direction].x < 0) { - *x -= deltaX; + *x -= dx2; } if (gDirectionToVector[direction].y > 0) { - *y += deltaY; + *y += dy2; } if (gDirectionToVector[direction].y < 0) { - *y -= deltaY; + *y -= dy2; } } @@ -5587,11 +5669,12 @@ void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y) } } -void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y) +void FieldObjectMoveDestCoords(struct MapObject *mapObject, u32 direction, s16 *x, s16 *y) { + u8 newDirn = direction; *x = mapObject->coords2.x; *y = mapObject->coords2.y; - MoveCoords(direction, x, y); + MoveCoords(newDirn, x, y); } bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject) @@ -5705,193 +5788,34 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback FieldObjectUpdateSubpriority(mapObject, sprite); } - -u8 GetFaceDirectionAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756C8, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetSimpleGoAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756CD, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetGoSpeed0AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756D2, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_8060744(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756D7, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 d2s_08064034(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756DC, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_806079C(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756E1, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80607C8(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756E6, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80607F4(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756EB, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetJumpLedgeAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756F0, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_806084C(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756F5, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_8060878(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756FA, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80608A4(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756FF, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80608D0(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375704, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay32AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375709, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay16AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_0837570E, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay8AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375713, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay4AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375718, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} +#define dirn_to_anim(name, table)\ +u8 name(u32 idx)\ +{\ + u8 direction;\ + u8 animIds[sizeof(table)];\ + direction = idx;\ + memcpy(animIds, (table), sizeof(table));\ + if (direction > DIR_EAST) direction = 0;\ + return animIds[direction];\ +} + +dirn_to_anim(GetFaceDirectionAnimId, gUnknown_083756C8) +dirn_to_anim(GetSimpleGoAnimId, gUnknown_083756CD) +dirn_to_anim(GetGoSpeed0AnimId, gUnknown_083756D2) +dirn_to_anim(sub_8060744, gUnknown_083756D7) +dirn_to_anim(d2s_08064034, gUnknown_083756DC) +dirn_to_anim(sub_806079C, gUnknown_083756E1) +dirn_to_anim(sub_80607C8, gUnknown_083756E6) +dirn_to_anim(sub_80607F4, gUnknown_083756EB) +dirn_to_anim(GetJumpLedgeAnimId, gUnknown_083756F0) +dirn_to_anim(sub_806084C, gUnknown_083756F5) +dirn_to_anim(sub_8060878, gUnknown_083756FA) +dirn_to_anim(sub_80608A4, gUnknown_083756FF) +dirn_to_anim(sub_80608D0, gUnknown_08375704) +dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_08375709) +dirn_to_anim(GetStepInPlaceDelay16AnimId, gUnknown_0837570E) +dirn_to_anim(GetStepInPlaceDelay8AnimId, gUnknown_08375713) +dirn_to_anim(GetStepInPlaceDelay4AnimId, gUnknown_08375718) u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction) { @@ -6019,65 +5943,23 @@ u8 GetOppositeDirection(u8 direction) return directions[direction - 1]; } -int zffu_offset_calc(u8 a0, u8 a1) +u32 zffu_offset_calc(u8 a0, u8 a1) { return gUnknown_08375757[a0 - 1][a1 - 1]; } -#ifdef NONMATCHING -int state_to_direction(u8 a0, u8 a1, u8 a2) +u32 state_to_direction(u8 a0, u32 a1, u32 a2) { - int zffuOffset; - asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call."); - if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4) + u32 zffuOffset; + u8 a1_2 = a1; + u8 a2_2 = a2; + if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST) { return 0; } - zffuOffset = zffu_offset_calc(a1, a2); + zffuOffset = zffu_offset_calc(a1_2, a2); return gUnknown_08375767[a0 - 1][zffuOffset - 1]; } -#else -__attribute__((naked)) -int state_to_direction(u8 a0, u8 a1, u8 a2) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r0, r1, 0\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - cmp r1, 0\n\ - beq _08060BFC\n\ - cmp r2, 0\n\ - beq _08060BFC\n\ - cmp r1, 0x4\n\ - bhi _08060BFC\n\ - cmp r2, 0x4\n\ - bls _08060C00\n\ -_08060BFC:\n\ - movs r0, 0\n\ - b _08060C12\n\ -_08060C00:\n\ - adds r1, r2, 0\n\ - bl zffu_offset_calc\n\ - ldr r2, _08060C18 @ =gUnknown_08375767\n\ - lsls r1, r4, 2\n\ - subs r1, 0x5\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ -_08060C12:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08060C18: .4byte gUnknown_08375767\n\ -.syntax divided\n"); -} -#endif void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite) { @@ -7490,24 +7372,24 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite) bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - FieldEffectStart(0x0); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1); sprite->data2 = 1; return TRUE; } bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - FieldEffectStart(0x21); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2); sprite->data2 = 1; return TRUE; } bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - FieldEffectStart(0x2e); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_HEART_ICON); sprite->data2 = 1; return TRUE; } @@ -8303,12 +8185,12 @@ void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite) } void sub_80634E8(struct MapObject *, struct Sprite *); -void npc_update_obj_anim_flag(struct MapObject *, struct Sprite *); +static void UpdateMapObjSpriteVisibility(struct MapObject *, struct Sprite *); void sub_80634D0(struct MapObject *mapObject, struct Sprite *sprite) { sub_80634E8(mapObject, sprite); - npc_update_obj_anim_flag(mapObject, sprite); + UpdateMapObjSpriteVisibility(mapObject, sprite); } #ifdef NONMATCHING @@ -8464,7 +8346,7 @@ _080635C0:\n\ } #endif -void npc_update_obj_anim_flag(struct MapObject *mapObject, struct Sprite *sprite) +void UpdateMapObjSpriteVisibility(struct MapObject *mapObject, struct Sprite *sprite) { sprite->invisible = 0; if (mapObject->mapobj_bit_13 || mapObject->mapobj_bit_14) diff --git a/src/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c index 87be8e011..b453d3794 100644 --- a/src/field_map_obj_helpers.c +++ b/src/field/field_map_obj_helpers.c @@ -294,7 +294,7 @@ void sub_8064990(u8 a1, u8 dir) u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); return FieldEffectStart(fieldEffectId); } @@ -303,16 +303,16 @@ void DoShadowFieldEffect(struct MapObject *mapObject) if (!mapObject->mapobj_bit_22) { mapObject->mapobj_bit_22 = 1; - oe_exec_and_other_stuff(3, mapObject); + oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject); } } void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite) { const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); - gUnknown_0202FF84[0] = sprite->pos1.x; - gUnknown_0202FF84[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; - gUnknown_0202FF84[2] = 151; - gUnknown_0202FF84[3] = 3; - FieldEffectStart(5); + gFieldEffectArguments[0] = sprite->pos1.x; + gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; + gFieldEffectArguments[2] = 151; + gFieldEffectArguments[3] = 3; + FieldEffectStart(FLDEFF_RIPPLE); } diff --git a/src/field_message_box.c b/src/field/field_message_box.c index 35aac7ac9..35aac7ac9 100644 --- a/src/field_message_box.c +++ b/src/field/field_message_box.c diff --git a/src/field_player_avatar.c b/src/field/field_player_avatar.c index 2a7b2f3e0..6c1c9123a 100644 --- a/src/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -14,7 +14,7 @@ #include "metatile_behavior.h" #include "party_menu.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rotating_gate.h" #include "script.h" #include "songs.h" @@ -666,10 +666,10 @@ void PlayerAvatarTransition_Surfing(struct MapObject *a) sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3)); FieldObjectTurn(a, a->placeholder18); SetPlayerAvatarStateMask(8); - gUnknown_0202FF84[0] = a->coords2.x; - gUnknown_0202FF84[1] = a->coords2.y; - gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId; - unk = FieldEffectStart(8); + gFieldEffectArguments[0] = a->coords2.x; + gFieldEffectArguments[1] = a->coords2.y; + gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId; + unk = FieldEffectStart(FLDEFF_SURF_BLOB); a->mapobj_unk_1A = unk; sub_8127ED0(unk, 1); } @@ -1224,13 +1224,13 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c) { FieldObjectClearAnimIfSpecialAnimFinished(b); FieldObjectClearAnimIfSpecialAnimFinished(c); - FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2])); - FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2])); - gUnknown_0202FF84[0] = c->coords2.x; - gUnknown_0202FF84[1] = c->coords2.y; - gUnknown_0202FF84[2] = c->elevation; - gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority; - FieldEffectStart(10); + FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId((u8)task->data[2])); + FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId((u8)task->data[2])); + gFieldEffectArguments[0] = c->coords2.x; + gFieldEffectArguments[1] = c->coords2.y; + gFieldEffectArguments[2] = c->elevation; + gFieldEffectArguments[3] = gSprites[c->spriteId].oam.priority; + FieldEffectStart(FLDEFF_DUST); PlaySE(SE_W070); task->data[0]++; } @@ -1365,8 +1365,8 @@ void sub_805A20C(u8 a) u8 taskId; ScriptContext2_Enable(); - sav1_reset_battle_music_maybe(); - sub_8053F84(); + Overworld_ClearSavedMusic(); + Overworld_ChangeMusicToDefault(); gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING; gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT; gPlayerAvatar.unk6 = 1; @@ -1385,7 +1385,7 @@ static void taskFF_0805D1D4(u8 taskId) return; } sub_8127ED0(playerMapObj->mapobj_unk_1A, 2); - FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0(gTasks[taskId].data[0])); + FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0((u8)gTasks[taskId].data[0])); gTasks[taskId].func = sub_805A2D0; } @@ -1406,7 +1406,7 @@ static void sub_805A2D0(u8 taskId) /* Fishing */ -static u8 (*const gUnknown_0830FCB4[])(struct Task *) = +static u8 (*const sFishingStateFuncs[])(struct Task *) = { Fishing1, Fishing2, @@ -1429,17 +1429,33 @@ static u8 (*const gUnknown_0830FCB4[])(struct Task *) = static void Task_Fishing(u8 taskId); static void sub_805A954(void); -void StartFishing(u8 a) +#define tStep data[0] +#define tFrameCounter data[1] +#define tNumDots data[2] +#define tDotsRequired data[3] +#define tRoundsPlayed data[12] +#define tMinRoundsRequired data[13] +#define tPlayerGfxId data[14] +#define tFishingRod data[15] + +#define FISHING_START_ROUND 3 +#define FISHING_GOT_BITE 6 +#define FISHING_ON_HOOK 9 +#define FISHING_NO_BITE 11 +#define FISHING_GOT_AWAY 12 +#define FISHING_SHOW_RESULT 13 + +void StartFishing(u8 rod) { u8 taskId = CreateTask(Task_Fishing, 0xFF); - gTasks[taskId].data[15] = a; + gTasks[taskId].tFishingRod = rod; Task_Fishing(taskId); } static void Task_Fishing(u8 taskId) { - while (gUnknown_0830FCB4[gTasks[taskId].data[0]](&gTasks[taskId])) + while (sFishingStateFuncs[gTasks[taskId].tStep](&gTasks[taskId])) ; } @@ -1447,7 +1463,7 @@ u8 Fishing1(struct Task *task) { ScriptContext2_Enable(); gPlayerAvatar.unk6 = 1; - task->data[0]++; + task->tStep++; return 0; } @@ -1457,23 +1473,25 @@ u8 Fishing2(struct Task *task) const s16 arr1[] = {1, 1, 1}; const s16 arr2[] = {1, 3, 6}; - task->data[12] = 0; - task->data[13] = arr1[task->data[15]] + (Random() % arr2[task->data[15]]); - task->data[14] = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId; + task->tRoundsPlayed = 0; + task->tMinRoundsRequired = arr1[task->tFishingRod] + (Random() % arr2[task->tFishingRod]); + task->tPlayerGfxId = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId; playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; FieldObjectClearAnimIfSpecialAnimActive(playerMapObj); playerMapObj->mapobj_bit_11 = 1; sub_8059C3C(playerMapObj->mapobj_unk_18); - task->data[0]++; + task->tStep++; return 0; } u8 Fishing3(struct Task *task) { sub_805A954(); - task->data[1]++; - if (task->data[1] > 0x3B) - task->data[0]++; + + // Wait one second before starting dot game + task->tFrameCounter++; + if (task->tFrameCounter >= 60) + task->tStep++; return 0; } @@ -1482,87 +1500,92 @@ u8 Fishing4(struct Task *task) u32 randVal; MenuDisplayMessageBox(); - task->data[0]++; - task->data[1] = 0; - task->data[2] = 0; + task->tStep++; + task->tFrameCounter = 0; + task->tNumDots = 0; randVal = Random(); randVal %= 10; - task->data[3] = randVal + 1; - if (task->data[12] == 0) - task->data[3] = randVal + 4; - if (task->data[3] > 9) - task->data[3] = 10; + task->tDotsRequired = randVal + 1; + if (task->tRoundsPlayed == 0) + task->tDotsRequired = randVal + 4; + if (task->tDotsRequired >= 10) + task->tDotsRequired = 10; return 1; } +// Play a round of the dot game u8 Fishing5(struct Task *task) { const u8 dot[] = _("·"); sub_805A954(); - task->data[1]++; + task->tFrameCounter++; if (gMain.newKeys & A_BUTTON) { - task->data[0] = 11; - if (task->data[12] != 0) - task->data[0] = 12; + task->tStep = FISHING_NO_BITE; + if (task->tRoundsPlayed != 0) + task->tStep = FISHING_GOT_AWAY; return 1; } else { - if (task->data[1] > 0x13) + if (task->tFrameCounter >= 20) { - task->data[1] = 0; - if (task->data[2] >= task->data[3]) + task->tFrameCounter = 0; + if (task->tNumDots >= task->tDotsRequired) { - task->data[0]++; - if (task->data[12] != 0) - task->data[0]++; - task->data[12]++; + task->tStep++; + if (task->tRoundsPlayed != 0) + task->tStep++; + task->tRoundsPlayed++; } else { - MenuPrint(dot, task->data[2] + 4, 15); - task->data[2]++; + MenuPrint(dot, task->tNumDots + 4, 15); + task->tNumDots++; } } return 0; } } +// Determine if fish bites u8 Fishing6(struct Task *task) { sub_805A954(); - task->data[0]++; - if (!GetFishingWildMonListHeader() || (Random() & 1)) - task->data[0] = 11; + task->tStep++; + if (!DoesCurrentMapHaveFishingMons() || (Random() & 1)) + task->tStep = FISHING_NO_BITE; else StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FE08(player_get_direction_lower_nybble())); return 1; } +// Oh! A Bite! u8 Fishing7(struct Task *task) { sub_805A954(); MenuPrint(gOtherText_OhABite, 4, 17); - task->data[0]++; - task->data[1] = 0; + task->tStep++; + task->tFrameCounter = 0; return 0; } +// We have a bite. Now, wait for the player to press A, or the timer to expire. u8 Fishing8(struct Task *task) { - const s16 arr[3] = {36, 33, 30}; + const s16 reelTimeouts[3] = {36, 33, 30}; sub_805A954(); - task->data[1]++; - if (task->data[1] >= arr[task->data[15]]) - task->data[0] = 12; + task->tFrameCounter++; + if (task->tFrameCounter >= reelTimeouts[task->tFishingRod]) + task->tStep = FISHING_GOT_AWAY; else if (gMain.newKeys & A_BUTTON) - task->data[0]++; + task->tStep++; return 0; } +// Determine if we're going to play the dot game again u8 Fishing9(struct Task *task) { const s16 arr[][2] = @@ -1573,17 +1596,18 @@ u8 Fishing9(struct Task *task) }; sub_805A954(); - task->data[0]++; - if (task->data[12] < task->data[13]) + task->tStep++; + if (task->tRoundsPlayed < task->tMinRoundsRequired) { - task->data[0] = 3; + task->tStep = FISHING_START_ROUND; } - else if (task->data[12] < 2) + else if (task->tRoundsPlayed < 2) { - s16 randVal = Random() % 100; + // probability of having to play another round + s16 probability = Random() % 100; - if (arr[task->data[15]][task->data[12]] > randVal) - task->data[0] = 3; + if (arr[task->tFishingRod][task->tRoundsPlayed] > probability) + task->tStep = FISHING_START_ROUND; } return 0; } @@ -1591,72 +1615,73 @@ u8 Fishing9(struct Task *task) u8 Fishing10(struct Task *task) { sub_805A954(); - sub_8072044(gOtherText_PokeOnHook); + MenuPrintMessageDefaultCoords(gOtherText_PokeOnHook); MenuDisplayMessageBox(); - task->data[0]++; - task->data[1] = 0; + task->tStep++; + task->tFrameCounter = 0; return 0; } u8 Fishing11(struct Task *task) { - if (task->data[1] == 0) - { + if (task->tFrameCounter == 0) sub_805A954(); - if (task->data[1] == 0) + + if (task->tFrameCounter == 0) + { + if (MenuUpdateWindowText()) { - if (MenuUpdateWindowText()) - { - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - sub_805B980(playerMapObj, task->data[14]); - FieldObjectTurn(playerMapObj, playerMapObj->placeholder18); - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); - gSprites[gPlayerAvatar.spriteId].pos2.x = 0; - gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - MenuZeroFillScreen(); - task->data[1]++; - return 0; - } - else - { - if (task->data[1] == 0) - return 0; - } + struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + + sub_805B980(playerMapObj, task->tPlayerGfxId); + FieldObjectTurn(playerMapObj, playerMapObj->placeholder18); + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) + sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); + gSprites[gPlayerAvatar.spriteId].pos2.x = 0; + gSprites[gPlayerAvatar.spriteId].pos2.y = 0; + MenuZeroFillScreen(); + task->tFrameCounter++; + return 0; } } - gPlayerAvatar.unk6 = 0; - ScriptContext2_Disable(); - FishingWildEncounter(task->data[15]); - sub_80BE97C(1); - DestroyTask(FindTaskIdByFunc(Task_Fishing)); + + if (task->tFrameCounter != 0) + { + gPlayerAvatar.unk6 = 0; + ScriptContext2_Disable(); + FishingWildEncounter(task->tFishingRod); + sub_80BE97C(1); + DestroyTask(FindTaskIdByFunc(Task_Fishing)); + } return 0; } +// Not even a nibble u8 Fishing12(struct Task *task) { sub_805A954(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble())); - sub_8072044(gOtherText_NotEvenANibble); - task->data[0] = 13; + MenuPrintMessageDefaultCoords(gOtherText_NotEvenANibble); + task->tStep = FISHING_SHOW_RESULT; return 1; } +// It got away u8 Fishing13(struct Task *task) { sub_805A954(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble())); - sub_8072044(gOtherText_ItGotAway); - task->data[0]++; + MenuPrintMessageDefaultCoords(gOtherText_ItGotAway); + task->tStep++; return 1; } +// Display the message u8 Fishing14(struct Task *task) { sub_805A954(); MenuDisplayMessageBox(); - task->data[0]++; + task->tStep++; return 0; } @@ -1667,13 +1692,13 @@ u8 Fishing15(struct Task *task) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - sub_805B980(playerMapObj, task->data[14]); + sub_805B980(playerMapObj, task->tPlayerGfxId); FieldObjectTurn(playerMapObj, playerMapObj->placeholder18); if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); gSprites[gPlayerAvatar.spriteId].pos2.x = 0; gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - task->data[0]++; + task->tStep++; } return 0; } @@ -1692,6 +1717,10 @@ u8 Fishing16(struct Task *task) return 0; } +#undef tStep +#undef tFrameCounter +#undef tFishingRod + static void sub_805A954(void) { struct Sprite *playerSprite = &gSprites[gPlayerAvatar.spriteId]; diff --git a/src/field_poison.c b/src/field/field_poison.c index 8c9e029e1..1244b9c62 100644 --- a/src/field_poison.c +++ b/src/field/field_poison.c @@ -108,7 +108,7 @@ void ExecuteWhiteOut(void) ScriptContext1_Stop(); } -s32 overworld_poison(void) +s32 DoPoisonFieldEffect(void) { struct Pokemon *pkmn = &gPlayerParty[0]; u32 numPoisoned = 0; diff --git a/src/field_region_map.c b/src/field/field_region_map.c index 7cb22e5df..7cb22e5df 100644 --- a/src/field_region_map.c +++ b/src/field/field_region_map.c diff --git a/src/field_screen_effect.c b/src/field/field_screen_effect.c index 79913e1c5..0c76d254d 100644 --- a/src/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -3,7 +3,7 @@ #include "field_camera.h" #include "menu.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "task.h" #include "text.h" @@ -21,11 +21,11 @@ extern u16 gUnknown_03004DE0[][0x3C0]; const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; -const s32 gUnknown_0839ACE8 = 4; +const s32 gMaxFlashLevel = 4; -const static u32 gUnknown_0839ACEC[3] = +const static struct UnknownTaskStruct gUnknown_0839ACEC = { - REG_ADDR_WIN0H, + (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, 1 }; @@ -137,11 +137,11 @@ static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6) void sub_8081594(u8 a1) { - u8 index = sav1_get_flash_used_on_map(); + u8 flashLevel = Overworld_GetFlashLevel(); u8 value = 0; if (!a1) value = 1; - sub_8081534(120, 80, gUnknown_0839ACDC[index], gUnknown_0839ACDC[a1], value, 1); + sub_8081534(120, 80, gUnknown_0839ACDC[flashLevel], gUnknown_0839ACDC[a1], value, 1); sub_8081510(); ScriptContext2_Enable(); } @@ -220,7 +220,8 @@ static void sub_80816A8(u8 taskId) 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[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); + sub_80895F8(gUnknown_0839ACEC); data[0] = 1; break; case 1: @@ -326,7 +327,7 @@ static void task50_0807F0C8(u8); void sub_8081924(void) { - sub_8054044(); + Overworld_FadeOutMapMusic(); CreateTask(task50_0807F0C8, 80); } diff --git a/src/field_special_scene.c b/src/field/field_special_scene.c index 82a7a13e3..d4b59c8a2 100644 --- a/src/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -8,7 +8,7 @@ #include "fieldmap.h" #include "main.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "script_movement.h" #include "songs.h" @@ -250,7 +250,7 @@ bool8 sub_80C7754(void) } else { - warp1_set(mapGroup, mapNum, -1, x, y); + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y); return TRUE; } } @@ -273,7 +273,7 @@ void Task_HandlePorthole(u8 taskId) case IDLE_CHECK: // idle and move. if (gMain.newKeys & A_BUTTON) data[1] = 1; - if (!sub_80A212C(0xFF, location->mapNum, location->mapGroup)) + if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup)) return; if (CountSSTidalStep(1) == TRUE) { @@ -294,18 +294,18 @@ void Task_HandlePorthole(u8 taskId) // run this once. if (*var == 2) // which direction? { - exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F); + ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F); data[0] = IDLE_CHECK; // run case 1. } else { - exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961); + ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961); data[0] = IDLE_CHECK; // run case 1. } break; case EXIT_PORTHOLE: // exit porthole. - FlagReset(0x4001); - FlagReset(0x4000); + FlagClear(0x4001); + FlagClear(0x4000); copy_saved_warp2_bank_and_enter_x_to_warp1(0); sp13E_warp_to_last_warp(); DestroyTask(taskId); diff --git a/src/field_specials.c b/src/field/field_specials.c index 454bd8d96..36362d098 100644 --- a/src/field_specials.c +++ b/src/field/field_specials.c @@ -12,7 +12,7 @@ #include "field_player_avatar.h" #include "main.h" #include "map_constants.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "songs.h" #include "string_util.h" @@ -61,44 +61,44 @@ static void RecordCyclingRoadResults(u32, u8); static struct ElevatorMenu gUnknown_03000760[20]; -void sub_810D6A4(void) { - SetMainCallback2(sub_8145D88); +void ScrSpecial_ShowDiploma(void) +{ + SetMainCallback2(CB2_ShowDiploma); ScriptContext2_Enable(); } -void sub_810D6B8(void) { +void ScrSpecial_ViewWallClock(void) +{ gMain.savedCallback = c2_exit_to_overworld_2_switch; SetMainCallback2(CB2_ViewWallClock); ScriptContext2_Enable(); } -void ResetCyclingRoadChallengeData(void) { +void ResetCyclingRoadChallengeData(void) +{ gUnknown_02039250 = 0; gUnknown_02039251 = 0; gUnknown_02039254 = 0; } -void BeginCyclingRoadChallenge(void) { +void ScrSpecial_BeginCyclingRoadChallenge(void) +{ gUnknown_02039250 = 1; gUnknown_02039251 = 0; gUnknown_02039254 = gMain.vblankCounter1; } -u16 GetPlayerAvatarBike(void) { +u16 GetPlayerAvatarBike(void) +{ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) - { return 1; - } - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE)) - { return 2; - } - return 0; } -void DetermineCyclingRoadResults(u32 arg0, u8 arg1) { +static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) +{ u8 result; if (arg1 <= 99) @@ -213,7 +213,7 @@ void UpdateCyclingRoadState(void) { if (VarGet(0x40a9) == 2 || VarGet(0x40a9) == 3) { VarSet(0x40a9, 0); - sav1_set_battle_music_maybe(SE_STOP); + Overworld_SetSavedMusic(SE_STOP); } } @@ -225,7 +225,7 @@ void SetSSTidalFlag(void) void ResetSSTidalFlag(void) { - FlagReset(SYS_CRUISE_MODE); + FlagClear(SYS_CRUISE_MODE); } bool32 CountSSTidalStep(u16 delta) @@ -700,11 +700,11 @@ void CableCarWarp(void) { if (gSpecialVar_0x8004 != 0) { - warp1_set(MAP_GROUP_ROUTE112_CABLE_CAR_STATION, MAP_ID_ROUTE112_CABLE_CAR_STATION, -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP_ROUTE112_CABLE_CAR_STATION, MAP_ID_ROUTE112_CABLE_CAR_STATION, -1, 6, 4); } else { - warp1_set(MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION, MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION, MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -1, 6, 4); } } @@ -1453,7 +1453,7 @@ void ResetTrickHouseEndRoomFlag(void) u16 *specVar = &gSpecialVar_0x8004; u16 flag = 0x259; *specVar = flag; - FlagReset(flag); + FlagClear(flag); } bool8 CheckLeadMonCool(void) @@ -1868,7 +1868,7 @@ void GivLeadMonEffortRibbon(void) SetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, &ribbonSet); } -bool8 GetLeadMonEVCount(void) +bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void) { if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= 510) { @@ -1919,7 +1919,7 @@ bool8 IsStarterInParty(void) u8 i; u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE)); u8 partyCount = CalculatePlayerPartyCount(); - for (i=0; i<partyCount; i++) + for (i = 0; i < partyCount; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == starter) { @@ -2005,7 +2005,7 @@ bool8 sub_810F828(void) void SetRoute119Weather(void) { - if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE) + if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE) { SetSav1Weather(0x14); } @@ -2013,7 +2013,7 @@ void SetRoute119Weather(void) void SetRoute123Weather(void) { - if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE) + if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE) { SetSav1Weather(0x15); } @@ -2140,10 +2140,10 @@ void sub_810FAA0(void) sub_810FF48(); sub_810FD80(); gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours; - FlagReset(0x315); - FlagReset(0x316); - FlagReset(0x317); - FlagReset(0x318); + FlagClear(0x315); + FlagClear(0x316); + FlagClear(0x317); + FlagClear(0x318); VarSet(VAR_0x4095, 1); } } diff --git a/src/field_tasks.c b/src/field/field_tasks.c index caf2ce6b9..da6f162c2 100644 --- a/src/field_tasks.c +++ b/src/field/field_tasks.c @@ -1,5 +1,5 @@ // -// Created by scott on 6/22/2017. + // #include "global.h" @@ -10,7 +10,7 @@ #include "item.h" #include "items.h" #include "event_data.h" -#include "rom4.h" +#include "overworld.h" #include "clock.h" #include "script.h" #include "field_special_scene.h" @@ -48,21 +48,25 @@ void Task_RunPerStepCallback(u8 taskId) gUnknown_08376364[idx](taskId); } -static void RunTimeBasedEvents(s16 *taskData) +#define tState data[0] +#define tAmbientCryState data[1] +#define tAmbientCryDelay data[2] + +static void RunTimeBasedEvents(s16 *data) { - switch (*taskData) + switch (tState) { case 0: if (gMain.vblankCounter1 & 0x1000) { DoTimeBasedEvents(); - (*taskData)++; + tState++; } break; case 1: if (!(gMain.vblankCounter1 & 0x1000)) { - (*taskData)--; + tState--; } break; } @@ -70,14 +74,19 @@ static void RunTimeBasedEvents(s16 *taskData) void Task_RunTimeBasedEvents(u8 taskId) { - s16 *taskData = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; + if (!ScriptContext2_IsEnabled()) { - RunTimeBasedEvents(taskData); - sub_80540D0(taskData + 1, taskData + 2); + RunTimeBasedEvents(data); + UpdateAmbientCry(&tAmbientCryState, &tAmbientCryDelay); } } +#undef tState +#undef tAmbientCryState +#undef tAmbientCryDelay + void Task_MuddySlope(u8); void SetUpFieldTasks(void) @@ -836,11 +845,11 @@ void Task_MuddySlope(u8 taskId) } break; } - if (gUnknown_0202E844.field_0 && mapIndices != data[0]) + if (gCamera.field_0 && mapIndices != data[0]) { data[0] = mapIndices; - x2 = gUnknown_0202E844.x; - y2 = gUnknown_0202E844.y; + x2 = gCamera.x; + y2 = gCamera.y; } else { diff --git a/src/field_weather.c b/src/field/field_weather.c index 5ff2eddf9..443a38357 100644 --- a/src/field_weather.c +++ b/src/field/field_weather.c @@ -55,7 +55,7 @@ extern struct Weather gWeather; extern u8 *gUnknown_083970E8; extern u8 (*gUnknown_08396FC8[][4])(void); extern u8 (*gUnknown_083970B8[])(void); -extern u8 *gUnknown_030006DC; +IWRAM_DATA u8 *gUnknown_030006DC; extern u8 gUnknown_083970C8; extern u8 (*gUnknown_0202FC48)[32]; extern u8 gUnknown_0202F9E8[32]; diff --git a/src/fieldmap.c b/src/field/fieldmap.c index 0e0ec246c..7a31ae720 100644 --- a/src/fieldmap.c +++ b/src/field/fieldmap.c @@ -1,7 +1,7 @@ #include "global.h" #include "fieldmap.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "secret_base.h" #include "tv.h" @@ -22,7 +22,7 @@ struct Coords32 EWRAM_DATA static u16 gUnknown_02029828[0x2800] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; -EWRAM_DATA struct Camera gUnknown_0202E844 = {0}; +EWRAM_DATA struct Camera gCamera = {0}; EWRAM_DATA static struct ConnectionFlags gUnknown_0202E850 = {0}; struct BackupMapData gUnknown_03004870; @@ -31,7 +31,7 @@ static const struct ConnectionFlags sDummyConnectionFlags = {0}; struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection) { - return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum); + return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum); } void not_trainer_hill_battle_pyramid(void) @@ -713,7 +713,7 @@ bool8 CameraMove(int x, int y) unsigned int direction; struct MapConnection *connection; int old_x, old_y; - gUnknown_0202E844.field_0 = FALSE; + gCamera.field_0 = FALSE; direction = GetPostCameraMoveMapBorderId(x, y); if (direction + 1 <= 1) { @@ -728,14 +728,14 @@ bool8 CameraMove(int x, int y) connection = sub_8056A64(direction, gSaveBlock1.pos.x, gSaveBlock1.pos.y); sub_8056918(connection, direction, x, y); sub_80538F0(connection->mapGroup, connection->mapNum); - gUnknown_0202E844.field_0 = TRUE; - gUnknown_0202E844.x = old_x - gSaveBlock1.pos.x; - gUnknown_0202E844.y = old_y - gSaveBlock1.pos.y; + gCamera.field_0 = TRUE; + gCamera.x = old_x - gSaveBlock1.pos.x; + gCamera.y = old_y - gSaveBlock1.pos.y; gSaveBlock1.pos.x += x; gSaveBlock1.pos.y += y; sub_80566F0(direction); } - return gUnknown_0202E844.field_0; + return gCamera.field_0; } struct MapConnection *sub_8056A64(u8 direction, int x, int y) diff --git a/src/fldeff_cut.c b/src/field/fldeff_cut.c index b394d1e4c..00643a979 100644 --- a/src/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -8,7 +8,7 @@ #include "metatile_behavior.h" #include "metatile_behaviors.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "rom6.h" #include "script.h" #include "songs.h" @@ -28,7 +28,7 @@ extern struct MapPosition gUnknown_0203923C; extern u8 gLastFieldPokeMenuOpened; -extern u8 UseCutScript; +extern u8 S_UseCut[]; bool8 SetUpFieldMove_Cut(void) { @@ -38,7 +38,7 @@ bool8 SetUpFieldMove_Cut(void) if(npc_before_player_of_type(0x52) == TRUE) // is in front of tree? { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_80A2634; return TRUE; } @@ -57,7 +57,7 @@ bool8 SetUpFieldMove_Cut(void) if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE || MetatileBehavior_IsAshGrass(tileBehavior) == TRUE) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_80A25E8; return TRUE; } @@ -70,8 +70,8 @@ bool8 SetUpFieldMove_Cut(void) void sub_80A25E8(void) { - FieldEffectStart(1); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_UseCutOnGrass(void) @@ -86,8 +86,8 @@ bool8 FldEff_UseCutOnGrass(void) void sub_80A2634(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - ScriptContext1_SetupScript(&UseCutScript); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(S_UseCut); } bool8 FldEff_UseCutOnTree(void) @@ -102,8 +102,8 @@ bool8 FldEff_UseCutOnTree(void) void sub_80A2684(void) { - FieldEffectActiveListRemove(1); - FieldEffectStart(0x3A); + FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS); + FieldEffectStart(FLDEFF_CUT_GRASS); } bool8 FldEff_CutGrass(void) @@ -272,19 +272,16 @@ void sub_80A2AB8(void) { u8 i; - for(i = 1; i < 8; i++) - { + for (i = 1; i < 8; i++) DestroySprite(&gSprites[gCutGrassSpriteArray[i]]); - } - - FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], 0x3A); + FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], FLDEFF_CUT_GRASS); sub_8064E2C(); ScriptContext2_Disable(); } void sub_80A2B00(void) { - PlaySE(0x80); - FieldEffectActiveListRemove(2); + PlaySE(SE_W015); + FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE); EnableBothScriptContexts(); } diff --git a/src/fldeff_flash.c b/src/field/fldeff_flash.c index 6c2633567..1ee8a8f05 100644 --- a/src/fldeff_flash.c +++ b/src/field/fldeff_flash.c @@ -4,7 +4,7 @@ #include "main.h" #include "palette.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "rom6.h" #include "script.h" #include "songs.h" @@ -51,7 +51,7 @@ bool8 SetUpFieldMove_Flash(void) { if (gMapHeader.cave == TRUE && !FlagGet(SYS_USE_FLASH)) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_810CBFC; return TRUE; } @@ -62,7 +62,7 @@ bool8 SetUpFieldMove_Flash(void) void sub_810CBFC(void) { u8 taskId = oei_task_add(); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16; gTasks[taskId].data[9] = (uintptr_t)sub_810CC34; } @@ -123,8 +123,8 @@ void sub_810CC80(void) bool8 sub_810CD5C(void) { u8 i; - u8 v0 = get_map_light_from_warp0(); - u8 v1 = sav1_map_get_light_level(); + u8 v0 = get_map_type_from_warp0(); + u8 v1 = Overworld_GetMapTypeOfSaveblockLocation(); for (i = 0; gUnknown_083F7FC4[i].unk0; i++) { diff --git a/src/fldeff_softboiled.c b/src/field/fldeff_softboiled.c index cb26d9966..cb26d9966 100644 --- a/src/fldeff_softboiled.c +++ b/src/field/fldeff_softboiled.c diff --git a/src/fldeff_strength.c b/src/field/fldeff_strength.c index 81f4f63c6..d9603d094 100644 --- a/src/fldeff_strength.c +++ b/src/field/fldeff_strength.c @@ -18,14 +18,14 @@ extern u16 gScriptResult; extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); -extern u8 UseStrengthScript[]; +extern u8 S_UseStrength[]; bool8 SetUpFieldMove_Strength(void) { if (ShouldDoBrailleStrengthEffect()) { gScriptResult = gLastFieldPokeMenuOpened; - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_811AA38; } else @@ -33,7 +33,7 @@ bool8 SetUpFieldMove_Strength(void) if (npc_before_player_of_type(87) != TRUE) return 0; gScriptResult = gLastFieldPokeMenuOpened; - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_811AA18; } @@ -42,14 +42,14 @@ bool8 SetUpFieldMove_Strength(void) static void sub_811AA18(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - ScriptContext1_SetupScript(UseStrengthScript); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(S_UseStrength); } static void sub_811AA38(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - FieldEffectStart(40); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_STRENGTH); } bool8 FldEff_UseStrength(void) @@ -58,7 +58,7 @@ bool8 FldEff_UseStrength(void) gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16; gTasks[taskId].data[9] = (u32)sub_811AA9C; - GetMonNickname(&gPlayerParty[gUnknown_0202FF84[0]], gStringVar1); + GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1); return FALSE; } diff --git a/src/fldeff_sweetscent.c b/src/field/fldeff_sweetscent.c index 4c3e6bf4a..b9dbf619d 100644 --- a/src/fldeff_sweetscent.c +++ b/src/field/fldeff_sweetscent.c @@ -23,15 +23,15 @@ extern u8 SweetScentNothingHereScript[]; bool8 SetUpFieldMove_SweetScent(void) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_812BFD4; return TRUE; } static void sub_812BFD4(void) { - FieldEffectStart(51); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_SWEET_SCENT); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_SweetScent() @@ -51,7 +51,7 @@ static void sub_812C01C(void) BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F); taskId = CreateTask(sub_812C084, 0); gTasks[taskId].data[0] = 0; - FieldEffectActiveListRemove(51); + FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT); } static void sub_812C084(u8 taskId) diff --git a/src/fldeff_teleport.c b/src/field/fldeff_teleport.c index 74e68df06..af48fb414 100644 --- a/src/fldeff_teleport.c +++ b/src/field/fldeff_teleport.c @@ -3,7 +3,7 @@ #include "field_effect.h" #include "field_player_avatar.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "rom6.h" #include "task.h" @@ -13,9 +13,9 @@ extern void (*gUnknown_03005CE4)(void); bool8 SetUpFieldMove_Teleport(void) { - if (is_light_level_1_2_3_or_6(gMapHeader.mapType) == TRUE) + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = hm_teleport_run_dp02scr; return TRUE; } @@ -25,9 +25,9 @@ bool8 SetUpFieldMove_Teleport(void) void hm_teleport_run_dp02scr(void) { - new_game(); - FieldEffectStart(63); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + Overworld_ResetStateAfterTeleport(); + FieldEffectStart(FLDEFF_USE_TELEPORT); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_UseTeleport(void) @@ -41,6 +41,6 @@ bool8 FldEff_UseTeleport(void) void sub_814A404(void) { - FieldEffectActiveListRemove(63); + FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT); sub_8087BA8(); } diff --git a/src/heal_location.c b/src/field/heal_location.c index 42bc18567..42bc18567 100644 --- a/src/heal_location.c +++ b/src/field/heal_location.c diff --git a/src/hof_pc.c b/src/field/hof_pc.c index 4646d171c..267ed4274 100644 --- a/src/hof_pc.c +++ b/src/field/hof_pc.c @@ -2,7 +2,7 @@ #include "hall_of_fame.h" #include "main.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "script_menu.h" #include "task.h" @@ -28,10 +28,10 @@ void ReturnFromHallOfFamePC(void) static void ReshowPCMenuAfterHallOfFamePC(void) { ScriptContext2_Enable(); - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); - TryCreatePCMenu(); - sub_80B5838(); + ScrSpecial_CreatePCMenu(); + ScriptMenu_DisplayPCStartupPrompt(); CreateTask(Task_WaitForPaletteFade, 10); } diff --git a/src/item.c b/src/field/item.c index 36871285a..fd49f5c39 100644 --- a/src/item.c +++ b/src/field/item.c @@ -30,11 +30,11 @@ enum }; #if ENGLISH -#include "data/item_descriptions_en.h" -#include "data/items_en.h" +#include "../data/item_descriptions_en.h" +#include "../data/items_en.h" #elif GERMAN -#include "data/item_descriptions_de.h" -#include "data/items_de.h" +#include "../data/item_descriptions_de.h" +#include "../data/items_de.h" #endif static void CompactPCItems(void); diff --git a/src/item_menu.c b/src/field/item_menu.c index 350ba3db4..c508bcacf 100644 --- a/src/item_menu.c +++ b/src/field/item_menu.c @@ -23,7 +23,7 @@ #include "party_menu.h" #include "player_pc.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "songs.h" #include "sound.h" @@ -56,14 +56,6 @@ extern void sub_804E990(u8); extern void sub_802E424(u8); extern void sub_8064E2C(void); -struct PocketScrollState -{ - u8 cursorPos; - u8 scrollTop; - u8 numSlots; - u8 cursorMax; -}; - struct UnknownStruct2 { u8 unk0; @@ -160,7 +152,7 @@ static u8 sReturnLocation; static const u8 *sPopupMenuActionList; // common -void (*gUnknown_03005D00)(u8) = NULL; +void (*gFieldItemUseCallback)(u8) = NULL; extern u16 gUnknown_030041B4; extern struct PocketScrollState gBagPocketScrollStates[]; extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots @@ -2321,164 +2313,164 @@ __attribute__((naked)) static void sub_80A5600(u8 taskId) { asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - movs r5, 0\n\ - ldr r2, _080A563C @ =gMain\n\ - ldrh r0, [r2, 0x30]\n\ - movs r1, 0xF0\n\ - ands r1, r0\n\ - cmp r1, 0x40\n\ - bne _080A5648\n\ - ldr r4, _080A5640 @ =sPopupMenuSelection\n\ - ldrb r0, [r4]\n\ - cmp r0, 0\n\ - bne _080A561E\n\ - b _080A5736\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r5, 0\n\ + ldr r2, _080A563C @ =gMain\n\ + ldrh r0, [r2, 0x30]\n\ + movs r1, 0xF0\n\ + ands r1, r0\n\ + cmp r1, 0x40\n\ + bne _080A5648\n\ + ldr r4, _080A5640 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _080A561E\n\ + b _080A5736\n\ _080A561E:\n\ - adds r1, r0, 0\n\ - ldr r0, _080A5644 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - subs r1, 0x1\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x8\n\ - bne _080A5630\n\ - b _080A5736\n\ + adds r1, r0, 0\n\ + ldr r0, _080A5644 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x1\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + bne _080A5630\n\ + b _080A5736\n\ _080A5630:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - b _080A56D2\n\ - .align 2, 0\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + b _080A56D2\n\ + .align 2, 0\n\ _080A563C: .4byte gMain\n\ _080A5640: .4byte sPopupMenuSelection\n\ _080A5644: .4byte sPopupMenuActionList\n\ _080A5648:\n\ - cmp r1, 0x80\n\ - bne _080A5680\n\ - ldr r4, _080A5674 @ =sPopupMenuSelection\n\ - ldrb r1, [r4]\n\ - ldr r0, _080A5678 @ =gUnknown_02038564\n\ - ldrb r0, [r0]\n\ - subs r0, 0x1\n\ - cmp r1, r0\n\ - beq _080A5736\n\ - cmp r1, 0x2\n\ - beq _080A5736\n\ - ldr r0, _080A567C @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0, 0x1]\n\ - cmp r0, 0x8\n\ - beq _080A5736\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - b _080A56D2\n\ - .align 2, 0\n\ + cmp r1, 0x80\n\ + bne _080A5680\n\ + ldr r4, _080A5674 @ =sPopupMenuSelection\n\ + ldrb r1, [r4]\n\ + ldr r0, _080A5678 @ =gUnknown_02038564\n\ + ldrb r0, [r0]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + beq _080A5736\n\ + cmp r1, 0x2\n\ + beq _080A5736\n\ + ldr r0, _080A567C @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0, 0x1]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + b _080A56D2\n\ + .align 2, 0\n\ _080A5674: .4byte sPopupMenuSelection\n\ _080A5678: .4byte gUnknown_02038564\n\ _080A567C: .4byte sPopupMenuActionList\n\ _080A5680:\n\ - cmp r1, 0x20\n\ - bne _080A56B0\n\ - ldr r4, _080A56A8 @ =sPopupMenuSelection\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x2\n\ - bls _080A5736\n\ - adds r1, r0, 0\n\ - ldr r0, _080A56AC @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - subs r1, 0x3\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x8\n\ - beq _080A5736\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x3\n\ - negs r0, r0\n\ - b _080A56D2\n\ - .align 2, 0\n\ + cmp r1, 0x20\n\ + bne _080A56B0\n\ + ldr r4, _080A56A8 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x2\n\ + bls _080A5736\n\ + adds r1, r0, 0\n\ + ldr r0, _080A56AC @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x3\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x3\n\ + negs r0, r0\n\ + b _080A56D2\n\ + .align 2, 0\n\ _080A56A8: .4byte sPopupMenuSelection\n\ _080A56AC: .4byte sPopupMenuActionList\n\ _080A56B0:\n\ - cmp r1, 0x10\n\ - bne _080A56E4\n\ - ldr r4, _080A56DC @ =sPopupMenuSelection\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x2\n\ - bhi _080A5736\n\ - adds r1, r0, 0\n\ - ldr r0, _080A56E0 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x3]\n\ - cmp r0, 0x8\n\ - beq _080A5736\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x3\n\ + cmp r1, 0x10\n\ + bne _080A56E4\n\ + ldr r4, _080A56DC @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x2\n\ + bhi _080A5736\n\ + adds r1, r0, 0\n\ + ldr r0, _080A56E0 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x3]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x3\n\ _080A56D2:\n\ - bl MoveMenuCursor3\n\ - strb r0, [r4]\n\ - b _080A5736\n\ - .align 2, 0\n\ + bl MoveMenuCursor3\n\ + strb r0, [r4]\n\ + b _080A5736\n\ + .align 2, 0\n\ _080A56DC: .4byte sPopupMenuSelection\n\ _080A56E0: .4byte sPopupMenuActionList\n\ _080A56E4:\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080A5768\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080A5736\n\ - ldr r1, _080A574C @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x1C]\n\ - ldr r1, _080A5750 @ =gBagPocketScrollStates\n\ - ldr r0, _080A5754 @ =sCurrentBagPocket\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r2, [r0]\n\ - adds r0, r4, 0\n\ - adds r1, r2, 0\n\ - bl sub_80A48E8\n\ - ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\ - bl sub_80A4DA4\n\ - ldr r1, _080A575C @ =sItemPopupMenuActions\n\ - ldr r0, _080A5760 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - ldrb r0, [r0, 0x5]\n\ - lsls r0, 3\n\ - adds r1, 0x4\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - adds r0, r4, 0\n\ - bl _call_via_r5\n\ + ldrh r1, [r2, 0x2E]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5768\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080A5736\n\ + ldr r1, _080A574C @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r1, _080A5750 @ =gBagPocketScrollStates\n\ + ldr r0, _080A5754 @ =sCurrentBagPocket\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r2, [r0]\n\ + adds r0, r4, 0\n\ + adds r1, r2, 0\n\ + bl sub_80A48E8\n\ + ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A575C @ =sItemPopupMenuActions\n\ + ldr r0, _080A5760 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + ldrb r0, [r0, 0x5]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ _080A5736:\n\ - cmp r5, 0\n\ - bne _080A57BE\n\ - ldr r0, _080A5764 @ =sPopupMenuSelection\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080A57AC\n\ - movs r0, 0xC\n\ - bl sub_8072DDC\n\ - b _080A57BE\n\ - .align 2, 0\n\ + cmp r5, 0\n\ + bne _080A57BE\n\ + ldr r0, _080A5764 @ =sPopupMenuSelection\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080A57AC\n\ + movs r0, 0xC\n\ + bl sub_8072DDC\n\ + b _080A57BE\n\ + .align 2, 0\n\ _080A574C: .4byte gTasks\n\ _080A5750: .4byte gBagPocketScrollStates\n\ _080A5754: .4byte sCurrentBagPocket\n\ @@ -2487,47 +2479,47 @@ _080A575C: .4byte sItemPopupMenuActions\n\ _080A5760: .4byte sPopupMenuActionList\n\ _080A5764: .4byte sPopupMenuSelection\n\ _080A5768:\n\ - ldr r1, _080A5798 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x1C]\n\ - ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\ - bl sub_80A4DA4\n\ - ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\ - ldr r0, _080A57A4 @ =sPopupMenuSelection\n\ - ldrb r2, [r0]\n\ - ldr r0, _080A57A8 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - lsls r0, 3\n\ - adds r1, 0x4\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - adds r0, r4, 0\n\ - bl _call_via_r5\n\ - b _080A5736\n\ - .align 2, 0\n\ + ldr r1, _080A5798 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\ + ldr r0, _080A57A4 @ =sPopupMenuSelection\n\ + ldrb r2, [r0]\n\ + ldr r0, _080A57A8 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ + b _080A5736\n\ + .align 2, 0\n\ _080A5798: .4byte gTasks\n\ _080A579C: .4byte gBGTilemapBuffers + 0x800\n\ _080A57A0: .4byte sItemPopupMenuActions\n\ _080A57A4: .4byte sPopupMenuSelection\n\ _080A57A8: .4byte sPopupMenuActionList\n\ _080A57AC:\n\ - cmp r0, 0x2\n\ - bhi _080A57B8\n\ - movs r0, 0x2F\n\ - bl sub_8072DCC\n\ - b _080A57BE\n\ + cmp r0, 0x2\n\ + bhi _080A57B8\n\ + movs r0, 0x2F\n\ + bl sub_8072DCC\n\ + b _080A57BE\n\ _080A57B8:\n\ - movs r0, 0x30\n\ - bl sub_8072DCC\n\ + movs r0, 0x30\n\ + bl sub_8072DCC\n\ _080A57BE:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } @@ -2726,7 +2718,7 @@ void ExecuteItemUseFromBlackPalette(void) static void Task_CallItemUseOnFieldCallback(u8 taskId) { if (sub_807D770() == TRUE) - gUnknown_03005D00(taskId); + gFieldItemUseCallback(taskId); } void sub_80A5D04(void) @@ -3123,7 +3115,7 @@ static void sub_80A6760(u8 taskId) static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); - RemoveMoneyLabelObject(0, 0); + CloseMoneyWindow(0, 0); MenuZeroFillWindowRect(0, 4, 13, 13); MenuZeroFillWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A6760; @@ -3131,20 +3123,20 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) static void BuyMenuDisplayMessage(u16 itemId, u16 quantity) { - sub_80B7A94(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11); + PrintMoneyAmount(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11); ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(itemId) / 2 * quantity, STR_CONV_MODE_LEFT_ALIGN, 6); } static void sub_80A683C(void) { - sub_80B7C14(gSaveBlock1.money, 0, 0); + OpenMoneyWindow(gSaveBlock1.money, 0, 0); sub_80A4008(gBGTilemapBuffers[1], 1, 1, 12, 2); } static void sub_80A6870(u16 itemId, u8 quantity) { - sub_80B79B8(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity); - sub_80B7BEC(gSaveBlock1.money, 0, 0); + AddMoney(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity); + UpdateMoneyWindow(gSaveBlock1.money, 0, 0); } static void sub_80A68A4(void) @@ -4500,7 +4492,7 @@ static void LoadBerryPic(u8 berryId) spritePal.data = (u16 *)sBerryGraphicsTable[berryId].lzPalette; spritePal.tag = 0x7544; LoadCompressedObjectPalette((struct CompressedSpritePalette *)&spritePal); - sub_800D238(sBerryGraphicsTable[berryId].lzPic, ewramBerryPicTemp); + LZDecompressWram(sBerryGraphicsTable[berryId].lzPic, ewramBerryPicTemp); DrawBerryPic(ewramBerryPicTemp, ewramBerryPic); } } diff --git a/src/item_use.c b/src/field/item_use.c index 1750c1584..68da27fdb 100644 --- a/src/item_use.c +++ b/src/field/item_use.c @@ -26,7 +26,7 @@ #include "pokeblock.h" #include "pokemon_item_effect.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "rom_8094928.h" #include "script.h" #include "songs.h" @@ -36,10 +36,10 @@ #include "task.h" #include "vars.h" -extern void (* gUnknown_03005D00)(u8); -extern void (* gFieldCallback)(void); -extern void (* gUnknown_0300485C)(void); -extern void (* gUnknown_03004AE4)(u8, u16, TaskFunc); +extern void (*gFieldItemUseCallback)(u8); +extern void (*gFieldCallback)(void); +extern void (*gUnknown_0300485C)(void); +extern void (*gUnknown_03004AE4)(u8, u16, TaskFunc); extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; @@ -106,11 +106,13 @@ void SetUpItemUseOnFieldCallback(u8 taskId) { if (gTasks[taskId].data[2] != 1) { - gFieldCallback = (void *)ExecuteItemUseFromBlackPalette; + gFieldCallback = ExecuteItemUseFromBlackPalette; ItemMenu_ConfirmNormalFade(taskId); } else - gUnknown_03005D00(taskId); + { + gFieldItemUseCallback(taskId); + } } void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) @@ -185,9 +187,9 @@ void ItemUseOutOfBattle_Bike(u8 taskId) } else { - if (IsBikingAllowedByMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE) + if (Overworld_IsBikingAllowed() == TRUE && IsBikingDisallowedByPlayer() == FALSE) { - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Bike; SetUpItemUseOnFieldCallback(taskId); } else @@ -241,7 +243,7 @@ void ItemUseOutOfBattle_Rod(u8 taskId) { if (CanFish() == TRUE) { - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Rod; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Rod; SetUpItemUseOnFieldCallback(taskId); } else @@ -257,7 +259,7 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 var) { IncrementGameStat(0x27); - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Itemfinder; SetUpItemUseOnFieldCallback(var); } @@ -342,7 +344,7 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId) sub_80C9720(taskId); // hidden item detected? - if(gTasks[taskId].data[2] == TRUE) + if (gTasks[taskId].data[2] == TRUE) return TRUE; else return FALSE; @@ -354,11 +356,11 @@ bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y) struct BgEvent *bgEvent = events->bgEvents; int i; - for(i = 0; i < bgEventCount; i++) + for (i = 0; i < bgEventCount; i++) { - if(bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed? + if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed? { - if(!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600)) + if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600)) return TRUE; else return FALSE; @@ -376,7 +378,7 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y) mapHeader = mapconnection_get_mapheader(connection); - switch(connection->direction) + switch (connection->direction) { // same weird temp variable behavior seen in HiddenItemAtPos case 2: @@ -592,7 +594,7 @@ void sub_80C9838(u8 taskId, s16 x, s16 y) s16 *data = gTasks[taskId].data; s16 var1, var2, var3, var4; - if(data[2] == FALSE) + if (data[2] == FALSE) { data[0] = x; data[1] = y; @@ -602,34 +604,34 @@ void sub_80C9838(u8 taskId, s16 x, s16 y) { // data[0] and data[1] contain the player's coordinates. // x and y contain the item's coordinates. - if(data[0] < 0) + if (data[0] < 0) var1 = data[0] * -1; // item is to the left else var1 = data[0]; // item is to the right - if(data[1] < 0) + if (data[1] < 0) var2 = data[1] * -1; // item is to the north else var2 = data[1]; // item is to the south - if(x < 0) + if (x < 0) var3 = x * -1; else var3 = x; - if(y < 0) + if (y < 0) var4 = y * -1; else var4 = y; - if(var1 + var2 > var3 + var4) + if (var1 + var2 > var3 + var4) { data[0] = x; data[1] = y; } else { - if(var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y))) + if (var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y))) { data[0] = x; data[1] = y; @@ -642,40 +644,40 @@ u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY) { s16 abX, abY; - if(itemX == 0 && itemY == 0) + if (itemX == 0 && itemY == 0) return DIR_NONE; // player is standing on the item. // get absolute X distance. - if(itemX < 0) + if (itemX < 0) abX = itemX * -1; else abX = itemX; // get absolute Y distance. - if(itemY < 0) + if (itemY < 0) abY = itemY * -1; else abY = itemY; - if(abX > abY) + if (abX > abY) { - if(itemX < 0) + if (itemX < 0) return DIR_EAST; else return DIR_NORTH; } else { - if(abX < abY) + if (abX < abY) { - if(itemY < 0) + if (itemY < 0) return DIR_SOUTH; else return DIR_WEST; } - if(abX == abY) + if (abX == abY) { - if(itemY < 0) + if (itemY < 0) return DIR_SOUTH; else return DIR_WEST; @@ -694,7 +696,7 @@ void SetPlayerDirectionTowardsItem(u8 direction) void DisplayItemRespondingMessageAndExitItemfinder(u8 taskId) { - if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE) + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE) DisplayItemMessageOnField(taskId, gOtherText_ItemfinderResponding, ExitItemfinder, 0); } @@ -702,7 +704,7 @@ void RotatePlayerAndExitItemfinder(u8 taskId) { s16 *data = gTasks[taskId].data; - if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE || data[2] == FALSE) { SetPlayerDirectionTowardsItem(gItemFinderDirections[data[5]]); @@ -710,18 +712,18 @@ void RotatePlayerAndExitItemfinder(u8 taskId) data[5] = (data[5] + 1) & 3; data[3]++; - if(data[3] == 4) + if (data[3] == 4) DisplayItemMessageOnField(taskId, gOtherText_ItemfinderItemUnderfoot, ExitItemfinder, 0); } } void ItemUseOutOfBattle_PokeblockCase(u8 taskId) { - if(sub_80F9344() == TRUE) + if (sub_80F9344() == TRUE) { DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); } - else if(gTasks[taskId].data[2] != TRUE) + else if (gTasks[taskId].data[2] != TRUE) { sub_810BA7C(0); ItemMenu_ConfirmNormalFade(taskId); @@ -739,7 +741,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, GetCoins(), 0, 4); StringExpandPlaceholders(gStringVar4, gOtherText_Coins3); - if(!gTasks[taskId].data[2]) + if (!gTasks[taskId].data[2]) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); @@ -752,20 +754,20 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) void sub_80C9BB8(u8 var) { - if(gMain.newKeys & A_BUTTON) + if (gMain.newKeys & A_BUTTON) CleanUpItemMenuMessage(var); } void sub_80C9BD8(u8 var) { - if(gMain.newKeys & A_BUTTON) + if (gMain.newKeys & A_BUTTON) CleanUpOverworldMessage(var); } // unused void ItemUseOutOfBattle_SSTicket(u8 taskId) { - if(gTasks[taskId].data[2] == 0) + if (gTasks[taskId].data[2] == 0) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1); @@ -778,9 +780,9 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) void sub_80C9C7C(u8 taskId) { - if(IsPlayerFacingPlantedBerryTree() == TRUE) + if (IsPlayerFacingPlantedBerryTree() == TRUE) { - gUnknown_03005D00 = sub_80C9D00; + gFieldItemUseCallback = sub_80C9D00; gFieldCallback = ExecuteItemUseFromBlackPalette; gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; @@ -803,9 +805,9 @@ void sub_80C9D00(u8 taskId) void ItemUseOutOfBattle_WailmerPail(u8 taskId) { - if(TryToWaterBerryTree() == TRUE) + if (TryToWaterBerryTree() == TRUE) { - gUnknown_03005D00 = sub_80C9D74; + gFieldItemUseCallback = sub_80C9D74; SetUpItemUseOnFieldCallback(taskId); } else @@ -839,9 +841,9 @@ void ItemUseOutOfBattle_SacredAsh(u8 taskId) gLastFieldPokeMenuOpened = 0; - for(i = 0; i < 6; i++) + for (i = 0; i < 6; i++) { - if(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) { gLastFieldPokeMenuOpened = i; break; @@ -874,7 +876,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if(gScriptItemId >= ITEM_HM01) + if (gScriptItemId >= ITEM_HM01) DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM else DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM @@ -882,13 +884,13 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) void sub_80C9EE4(u8 taskId) { - PlaySE(2); + PlaySE(SE_PC_LOGON); gTasks[taskId].func = sub_80C9F10; } void sub_80C9F10(u8 taskId) { - if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gScriptItemId)]); StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove); @@ -909,7 +911,7 @@ void sub_80C9FC0(u8 var) sub_80C9D98(var); } -void sub_80C9FDC(void) +static void PrepareItemUseMessage(void) { RemoveBagItem(gScriptItemId, 1); sub_80A3E0C(); @@ -919,10 +921,10 @@ void sub_80C9FDC(void) void ItemUseOutOfBattle_Repel(u8 var) { - if(VarGet(VAR_REPEL_STEP_COUNT) == FALSE) + if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE) { VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gScriptItemId)); - sub_80C9FDC(); + PrepareItemUseMessage(); DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1); } else @@ -941,26 +943,26 @@ void sub_80CA098(u8 taskId) { if(++gTasks[taskId].data[15] > 7) { - PlaySE(0x75); + PlaySE(SE_BIDORO); DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); } } void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) { - if(gScriptItemId == 43) + if (gScriptItemId == ITEM_WHITE_FLUTE) { FlagSet(SYS_ENC_UP_ITEM); - FlagReset(SYS_ENC_DOWN_ITEM); + FlagClear(SYS_ENC_DOWN_ITEM); sub_80CA07C(); StringExpandPlaceholders(gStringVar4, gOtherText_UsedFlute); gTasks[taskId].func = sub_80CA098; gTasks[taskId].data[15] = 0; } - else if(gScriptItemId == 42) + else if (gScriptItemId == ITEM_BLACK_FLUTE) { FlagSet(SYS_ENC_DOWN_ITEM); - FlagReset(SYS_ENC_UP_ITEM); + FlagClear(SYS_ENC_UP_ITEM); sub_80CA07C(); StringExpandPlaceholders(gStringVar4, gOtherText_UsedRepel); gTasks[taskId].func = sub_80CA098; @@ -975,17 +977,17 @@ void task08_080A1C44(u8 taskId) DestroyTask(taskId); } -void sub_80CA18C(u8 taskId) +void EscapeRopeCallback(u8 taskId) { - sub_8053014(); - sub_80C9FDC(); + Overworld_ResetStateAfterDigEscRope(); + PrepareItemUseMessage(); gTasks[taskId].data[0] = 0; DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44, 0); } -bool8 sub_80CA1C8(void) +bool8 CanUseEscapeRopeOnCurrMap(void) { - if(gMapHeader.mapType == MAP_TYPE_UNDERGROUND) + if (gMapHeader.mapType == MAP_TYPE_UNDERGROUND) return TRUE; else return FALSE; @@ -993,9 +995,9 @@ bool8 sub_80CA1C8(void) void ItemUseOutOfBattle_EscapeRope(u8 taskId) { - if(sub_80CA1C8() == TRUE) // is map type an area you can use escape rope? + if (CanUseEscapeRopeOnCurrMap() == TRUE) { - gUnknown_03005D00 = sub_80CA18C; + gFieldItemUseCallback = EscapeRopeCallback; SetUpItemUseOnFieldCallback(taskId); } else @@ -1012,7 +1014,7 @@ void ItemUseOutOfBattle_EvolutionStone(u8 var) void ItemUseInBattle_PokeBall(u8 var) { - if(PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? + if (PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? { RemoveBagItem(gScriptItemId, 1); sub_80A7094(var); @@ -1026,7 +1028,7 @@ void ItemUseInBattle_PokeBall(u8 var) void sub_80CA294(u8 var) { - if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) sub_80A7094(var); } @@ -1034,7 +1036,7 @@ void sub_80CA2BC(u8 taskId) { if(++gTasks[taskId].data[15] > 7) { - PlaySE(1); + PlaySE(SE_KAIFUKU); RemoveBagItem(gScriptItemId, 1); DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1); } @@ -1046,7 +1048,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId) MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if(ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE) + if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE) { DisplayItemMessageOnField(taskId, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1); } @@ -1059,7 +1061,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId) void sub_80CA394(u8 taskId) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { sub_8094E4C(); gpu_pal_allocator_reset__manage_upper_four(); @@ -1095,7 +1097,7 @@ void unref_sub_80CA448(u8 var) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if(ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE) + if (ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE) { RemoveBagItem(gScriptItemId, 1); GetMonNickname(&gPlayerParty[0], gStringVar1); @@ -1114,7 +1116,7 @@ void ItemUseInBattle_Escape(u8 taskId) if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) { - sub_80C9FDC(); + PrepareItemUseMessage(); DisplayItemMessageOnField(taskId, gStringVar4, sub_80A7094, 1); } else @@ -1125,7 +1127,7 @@ void ItemUseInBattle_Escape(u8 taskId) void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) { - switch(GetItemEffectType(gScriptItemId) - 1) + switch (GetItemEffectType(gScriptItemId) - 1) { case 1: case 2: @@ -1168,7 +1170,7 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) void ItemUseInBattle_EnigmaBerry(u8 taskId) { - switch(GetItemEffectType(gScriptItemId)) + switch (GetItemEffectType(gScriptItemId)) { case 0: ItemUseInBattle_StatIncrease(taskId); diff --git a/src/landmark.c b/src/field/landmark.c index 6a53716bb..6a53716bb 100644 --- a/src/landmark.c +++ b/src/field/landmark.c diff --git a/src/lottery_corner.c b/src/field/lottery_corner.c index c2c25b9ac..c2c25b9ac 100644 --- a/src/lottery_corner.c +++ b/src/field/lottery_corner.c diff --git a/src/map_name_popup.c b/src/field/map_name_popup.c index 01105d0db..01105d0db 100644 --- a/src/map_name_popup.c +++ b/src/field/map_name_popup.c diff --git a/src/map_obj_lock.c b/src/field/map_obj_lock.c index bd40bcacc..2856320b8 100644 --- a/src/map_obj_lock.c +++ b/src/field/map_obj_lock.c @@ -75,7 +75,7 @@ bool8 sub_8064DB4(void) } } -void sub_8064DD8(void) +void LockSelectedMapObject(void) { u8 taskId; FreezeMapObjectsExceptOne(gSelectedMapObject); diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c new file mode 100644 index 000000000..33bc39648 --- /dev/null +++ b/src/field/mauville_man.c @@ -0,0 +1,1311 @@ +#include "global.h" +#include "bard_music.h" +#include "mauville_man.h" +#include "easy_chat.h" +#include "event_data.h" +#include "field_message_box.h" +#include "m4a.h" +#include "menu.h" +#include "overworld.h" +#include "rng.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "trader.h" + +#define MACRO1(a) (((a) % 4) + (((a) / 8) & 1)) + +extern struct MusicPlayerInfo gMPlay_SE2; + +extern u16 gScriptResult; +extern u16 gSpecialVar_0x8004; + +extern const u8 gTextStoryteller_Story1Title[]; +extern const u8 gTextStoryteller_Story1Action[]; +extern const u8 gTextStoryteller_Story1Text[]; +extern const u8 gTextStoryteller_Story2Title[]; +extern const u8 gTextStoryteller_Story2Action[]; +extern const u8 gTextStoryteller_Story2Text[]; +extern const u8 gTextStoryteller_Story3Title[]; +extern const u8 gTextStoryteller_Story3Action[]; +extern const u8 gTextStoryteller_Story3Text[]; +extern const u8 gTextStoryteller_Story4Title[]; +extern const u8 gTextStoryteller_Story4Action[]; +extern const u8 gTextStoryteller_Story4Text[]; +extern const u8 gTextStoryteller_Story5Title[]; +extern const u8 gTextStoryteller_Story5Action[]; +extern const u8 gTextStoryteller_Story5Text[]; +extern const u8 gTextStoryteller_Story6Title[]; +extern const u8 gTextStoryteller_Story6Action[]; +extern const u8 gTextStoryteller_Story6Text[]; +extern const u8 gTextStoryteller_Story7Title[]; +extern const u8 gTextStoryteller_Story7Action[]; +extern const u8 gTextStoryteller_Story7Text[]; +extern const u8 gTextStoryteller_Story8Title[]; +extern const u8 gTextStoryteller_Story8Action[]; +extern const u8 gTextStoryteller_Story8Text[]; +extern const u8 gTextStoryteller_Story9Title[]; +extern const u8 gTextStoryteller_Story9Action[]; +extern const u8 gTextStoryteller_Story9Text[]; +extern const u8 gTextStoryteller_Story10Title[]; +extern const u8 gTextStoryteller_Story10Action[]; +extern const u8 gTextStoryteller_Story10Text[]; +extern const u8 gTextStoryteller_Story11Title[]; +extern const u8 gTextStoryteller_Story11Action[]; +extern const u8 gTextStoryteller_Story11Text[]; +extern const u8 gTextStoryteller_Story12Title[]; +extern const u8 gTextStoryteller_Story12Action[]; +extern const u8 gTextStoryteller_Story12Text[]; +extern const u8 gTextStoryteller_Story13Title[]; +extern const u8 gTextStoryteller_Story13Action[]; +extern const u8 gTextStoryteller_Story13Text[]; +extern const u8 gTextStoryteller_Story14Title[]; +extern const u8 gTextStoryteller_Story14Action[]; +extern const u8 gTextStoryteller_Story14Text[]; +extern const u8 gTextStoryteller_Story15Title[]; +extern const u8 gTextStoryteller_Story15Action[]; +extern const u8 gTextStoryteller_Story15Text[]; +extern const u8 gTextStoryteller_Story16Title[]; +extern const u8 gTextStoryteller_Story16Action[]; +extern const u8 gTextStoryteller_Story16Text[]; +extern const u8 gTextStoryteller_Story17Title[]; +extern const u8 gTextStoryteller_Story17Action[]; +extern const u8 gTextStoryteller_Story17Text[]; +extern const u8 gTextStoryteller_Story18Title[]; +extern const u8 gTextStoryteller_Story18Action[]; +extern const u8 gTextStoryteller_Story18Text[]; +extern const u8 gTextStoryteller_Story19Title[]; +extern const u8 gTextStoryteller_Story19Action[]; +extern const u8 gTextStoryteller_Story19Text[]; +extern const u8 gTextStoryteller_Story20Title[]; +extern const u8 gTextStoryteller_Story20Action[]; +extern const u8 gTextStoryteller_Story20Text[]; +extern const u8 gTextStoryteller_Story21Title[]; +extern const u8 gTextStoryteller_Story21Action[]; +extern const u8 gTextStoryteller_Story21Text[]; +extern const u8 gTextStoryteller_Story22Title[]; +extern const u8 gTextStoryteller_Story22Action[]; +extern const u8 gTextStoryteller_Story22Text[]; +extern const u8 gTextStoryteller_Story23Title[]; +extern const u8 gTextStoryteller_Story23Action[]; +extern const u8 gTextStoryteller_Story23Text[]; +extern const u8 gTextStoryteller_Story24Title[]; +extern const u8 gTextStoryteller_Story24Action[]; +extern const u8 gTextStoryteller_Story24Text[]; +extern const u8 gTextStoryteller_Story25Title[]; +extern const u8 gTextStoryteller_Story25Action[]; +extern const u8 gTextStoryteller_Story25Text[]; +extern const u8 gTextStoryteller_Story26Title[]; +extern const u8 gTextStoryteller_Story26Action[]; +extern const u8 gTextStoryteller_Story26Text[]; +extern const u8 gTextStoryteller_Story27Title[]; +extern const u8 gTextStoryteller_Story27Action[]; +extern const u8 gTextStoryteller_Story27Text[]; +extern const u8 gTextStoryteller_Story28Title[]; +extern const u8 gTextStoryteller_Story28Action[]; +extern const u8 gTextStoryteller_Story28Text[]; +extern const u8 gTextStoryteller_Story29Title[]; +extern const u8 gTextStoryteller_Story29Action[]; +extern const u8 gTextStoryteller_Story29Text[]; +extern const u8 gTextStoryteller_Story30Title[]; +extern const u8 gTextStoryteller_Story30Action[]; +extern const u8 gTextStoryteller_Story30Text[]; +extern const u8 gTextStoryteller_Story31Title[]; +extern const u8 gTextStoryteller_Story31Action[]; +extern const u8 gTextStoryteller_Story31Text[]; +extern const u8 gTextStoryteller_Story32Title[]; +extern const u8 gTextStoryteller_Story32Action[]; +extern const u8 gTextStoryteller_Story32Text[]; +extern const u8 gTextStoryteller_Story33Title[]; +extern const u8 gTextStoryteller_Story33Action[]; +extern const u8 gTextStoryteller_Story33Text[]; +extern const u8 gTextStoryteller_Story34Title[]; +extern const u8 gTextStoryteller_Story34Action[]; +extern const u8 gTextStoryteller_Story34Text[]; +extern const u8 gTextStoryteller_Story35Title[]; +extern const u8 gTextStoryteller_Story35Action[]; +extern const u8 gTextStoryteller_Story35Text[]; +extern const u8 gTextStoryteller_Story36Title[]; +extern const u8 gTextStoryteller_Story36Action[]; +extern const u8 gTextStoryteller_Story36Text[]; + +extern struct BardSong gUnknown_03005DA0; + +EWRAM_DATA static u16 gUnknown_020388BC = 0; // set but not used? + +static const u16 sDefaultBardSongLyrics[] = +{ +#ifdef ENGLISH + EC_WORD_SISTER, + EC_WORD_EATS, + EC_WORD_SWEETS, + EC_WORD_VORACIOUS, + EC_WORD_AND, + EC_WORD_DROOLING, +#else + EC_WORD_SISTER, + EC_WORD_MUST_BE, + EC_WORD_SWEETS, + EC_WORD_VORACIOUS, + EC_WORD_DROOLING, + EC_WORD_THICK, +#endif +}; + +static const u8 *const sGiddyAdjectives[] = +{ + OtherText_SoPretty, + OtherText_SoDarling, + OtherText_SoRelaxed, + OtherText_SoSunny, + OtherText_SoDesirable, + OtherText_SoExciting, + OtherText_SoAmusing, + OtherText_SoMagical, +}; + +static const u8 *const sGiddyQuestions[] = +{ + OtherText_WantVacationNicePlace, + OtherText_BoughtCrayonsIsNice, + OtherText_IfWeCouldFloat, + OtherText_SandWashesAwayMakeSad, + OtherText_WhatsBottomSeaLike, + OtherText_SeeSettingSun, + OtherText_LyingInGreenGrass, + OtherText_SecretBasesWonderful, +}; + +static void sub_80F7DC0(void); +static void Task_BardSong(u8); +static void StartBardSong(u8); +static void StorytellerSetup(void); +static void sub_80F8428(void); + +static void SetupBard(void) +{ + u16 i; + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + + bard->id = MAUVILLE_MAN_BARD; + bard->hasChangedSong = FALSE; + for (i = 0; i < 6; i++) + bard->songLyrics[i] = sDefaultBardSongLyrics[i]; +} + +static void SetupHipster(void) +{ + struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; + + hipster->id = MAUVILLE_MAN_HIPSTER; + hipster->alreadySpoken = FALSE; +} + +static void SetupStoryteller(void) +{ + StorytellerSetup(); +} + +static void SetupGiddy(void) +{ + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + giddy->id = MAUVILLE_MAN_GIDDY; + giddy->taleCounter = 0; +} + +static void SetupTrader(void) +{ + TraderSetup(); +} + +void SetupMauvilleOldMan(void) +{ + u16 trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0]; + + // Determine man based on the last digit of the player's trainer ID. + switch ((trainerId % 10) / 2) + { + case MAUVILLE_MAN_BARD: + SetupBard(); + break; + case MAUVILLE_MAN_HIPSTER: + SetupHipster(); + break; + case MAUVILLE_MAN_TRADER: + SetupTrader(); + break; + case MAUVILLE_MAN_STORYTELLER: + SetupStoryteller(); + break; + case MAUVILLE_MAN_GIDDY: + SetupGiddy(); + break; + } + sub_80F83D0(); +} + +static u8 GetCurrentMauvilleOldMan(void) +{ + struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common; + + return common->id; +} + +void ScrSpecial_GetCurrentMauvilleMan(void) +{ + gScriptResult = GetCurrentMauvilleOldMan(); +} + +void ScrSpecial_HasBardSongBeenChanged(void) +{ + u16 *scriptResult = &gScriptResult; // why?? + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + + *scriptResult = bard->hasChangedSong; +} + +void ScrSpecial_SaveBardSongLyrics(void) +{ + u16 i; + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + + StringCopy(bard->playerName, gSaveBlock2.playerName); + + for (i = 0; i < 4; i++) + bard->playerTrainerId[i] = gSaveBlock2.playerTrainerId[i]; + + for (i = 0; i < 6; i++) + bard->songLyrics[i] = bard->temporaryLyrics[i]; + + bard->hasChangedSong = TRUE; +} + +// Copies lyrics into gStringVar4 +void PrepareSongText(void) +{ + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match. + u16 *lyrics; + u16 lineNum; + u8 *wordEnd; + u8 *str; + + lyrics = bard->temporaryLyrics; + if (specialVar == 0) + lyrics = bard->songLyrics; + wordEnd = gStringVar4; + str = wordEnd; + // Put three words on each line + for (lineNum = 0; lineNum < 2; lineNum++) + { + wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++)); + while (wordEnd != str) + { + if (*str == CHAR_SPACE) + *str = CHAR_SONG_WORD_SEPARATOR; + str++; + } + + str++; + *(wordEnd++) = CHAR_SPACE; + + wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++)); + while (wordEnd != str) + { + if (*str == CHAR_SPACE) + *str = CHAR_SONG_WORD_SEPARATOR; + str++; + } + + str++; + *(wordEnd++) = CHAR_NEWLINE; + + wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++)); + while (wordEnd != str) + { + if (*str == CHAR_SPACE) + *str = CHAR_SONG_WORD_SEPARATOR; + str++; + } + + if (lineNum == 0) + { + *(wordEnd++) = EXT_CTRL_CODE_BEGIN; + *(wordEnd++) = 15; + } + } +} + +void ScrSpecial_PlayBardSong(void) +{ + StartBardSong(gSpecialVar_0x8004); + MenuDisplayMessageBox(); + ScriptContext1_Stop(); +} + +void ScrSpecial_GetHipsterSpokenFlag(void) +{ + u16 *scriptResult = &gScriptResult; // again?? + struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; + + *scriptResult = hipster->alreadySpoken; +} + +void ScrSpecial_SetHipsterSpokenFlag(void) +{ + struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; + + hipster->alreadySpoken = TRUE; +} + +void ScrSpecial_HipsterTeachWord(void) +{ + u16 var = sub_80EB8EC(); + + if (var == 0xFFFF) + { + gScriptResult = FALSE; + } + else + { + EasyChat_GetWordText(gStringVar1, var); + gScriptResult = TRUE; + } +} + +void ScrSpecial_GiddyShouldTellAnotherTale(void) +{ + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + if (giddy->taleCounter == 10) + { + gScriptResult = FALSE; + giddy->taleCounter = 0; + } + else + { + gScriptResult = TRUE; + } +} + +void ScrSpecial_GenerateGiddyLine(void) +{ + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + if (giddy->taleCounter == 0) + sub_80F7DC0(); + + if (giddy->randomWords[giddy->taleCounter] != 0xFFFF) // is not the last element of the array? + { + u8 *stringPtr; + u32 adjective = Random(); + + adjective %= 8; + stringPtr = EasyChat_GetWordText(gStringVar4, giddy->randomWords[giddy->taleCounter]); + stringPtr = StringCopy(stringPtr, gOtherText_Is); + stringPtr = StringCopy(stringPtr, sGiddyAdjectives[adjective]); + StringCopy(stringPtr, gOtherText_DontYouAgree); + } + else + { + StringCopy(gStringVar4, sGiddyQuestions[giddy->questionList[giddy->questionNum++]]); + } + + if (!(Random() % 10)) + giddy->taleCounter = 10; + else + giddy->taleCounter++; + + gScriptResult = TRUE; +} + +#ifdef NONMATCHING +static void sub_80F7DC0(void) +{ + u16 arr[][2] = + { + { 0x0, 0}, + { 0xC, 0}, + { 0xD, 0}, + {0x12, 0}, + {0x13, 0}, + {0x15, 0}, + }; + u16 i; + u16 r10; + u16 r7; + + for (i = 0; i < 8; i++) + { + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + //gSaveBlock1.mauvilleMan.giddy.questionList[i] = i; + giddy->questionList[i] = i; + } + + // Scramble questions + for (i = 0; i < 8; i++) + { + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + /* + u16 r1 = Random() % (i + 1); + u8 r7 = gSaveBlock1.mauvilleMan.giddy.questionList[i]; + gSaveBlock1.mauvilleMan.giddy.questionList[i] = gSaveBlock1.mauvilleMan.giddy.questionList[r1]; + gSaveBlock1.mauvilleMan.giddy.questionList[r1] = r7; + */ + u16 r1 = Random() % (i + 1); + u8 r7 = giddy->questionList[i]; + giddy->questionList[i] = giddy->questionList[r1]; + giddy->questionList[r1] = r7; + } + + r10 = 0; + for (i = 0; i < 6; i++) + { + arr[i][1] = sub_80EAE88(arr[i][0]); + r10 += arr[i][1]; + } + + { + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + giddy->questionNum = 0; + } + //gSaveBlock1.mauvilleMan.giddy.questionNum = 0; + + r7 = 0; + for (i = 0; i < 10; i++) + { + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + u16 var = Random() % 10; + if (var < 3 && r7 < 8) + { + //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = 0xFFFF; + giddy->randomWords[i] = 0xFFFF; + r7++; + } + //_080F7E90 + else + { + s16 r2 = Random() % r10; + + u16 r1 = 0; + + while (i < 6) // comparing the wrong variable + { + r2 = arr[r1][1] - r2; + if (r2 <= 0) + break; + r1++; + } + + if (r1 == 6) + r1 = 0; + //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = sub_80EB784(arr[r1][0]); + giddy->randomWords[i] = sub_80EB784(arr[r1][0]); + } + } +} +#else + +static const u16 gUnknown_083E53C8[][2] = +{ + { 0x0, 0}, + { 0xC, 0}, + { 0xD, 0}, + {0x12, 0}, + {0x13, 0}, + {0x15, 0}, +}; + +__attribute__((naked)) +static void sub_80F7DC0(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x18\n\ + ldr r1, _080F7E84 @ =gUnknown_083E53C8\n\ + mov r0, sp\n\ + movs r2, 0x18\n\ + bl memcpy\n\ + movs r5, 0\n\ + movs r0, 0x2\n\ + add r0, sp\n\ + mov r8, r0\n\ + ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\ + adds r1, 0x18\n\ + adds r3, r1, 0\n\ +_080F7DE4:\n\ + adds r0, r3, r5\n\ + strb r5, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x7\n\ + bls _080F7DE4\n\ + movs r5, 0\n\ + ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\ + adds r2, 0x4\n\ + mov r9, r2\n\ + adds r6, r1, 0\n\ +_080F7DFC:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r4, r5, 0x1\n\ + adds r1, r4, 0\n\ + bl __modsi3\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + adds r2, r6, r5\n\ + ldrb r7, [r2]\n\ + adds r1, r6, r1\n\ + ldrb r0, [r1]\n\ + strb r0, [r2]\n\ + strb r7, [r1]\n\ + lsls r4, 16\n\ + lsrs r5, r4, 16\n\ + cmp r5, 0x7\n\ + bls _080F7DFC\n\ + movs r3, 0\n\ + mov r10, r3\n\ + movs r5, 0\n\ +_080F7E2A:\n\ + lsls r4, r5, 2\n\ + mov r1, sp\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + bl sub_80EAE88\n\ + add r4, r8\n\ + strh r0, [r4]\n\ + add r0, r10\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r10, r0\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x5\n\ + bls _080F7E2A\n\ + movs r0, 0\n\ + ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\ + strb r0, [r2, 0x2]\n\ + movs r7, 0\n\ + movs r5, 0\n\ +_080F7E56:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r1, 0x2\n\ + bhi _080F7E90\n\ + cmp r7, 0x7\n\ + bhi _080F7E90\n\ + lsls r0, r5, 1\n\ + add r0, r9\n\ + ldr r1, _080F7E8C @ =0x0000ffff\n\ + strh r1, [r0]\n\ + adds r0, r7, 0x1\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + adds r4, r5, 0x1\n\ + b _080F7EE2\n\ + .align 2, 0\n\ +_080F7E84: .4byte gUnknown_083E53C8\n\ +_080F7E88: .4byte gSaveBlock1 + 0x2D94\n\ +_080F7E8C: .4byte 0x0000ffff\n\ +_080F7E90:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r1, r10\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + movs r1, 0\n\ + adds r4, r5, 0x1\n\ + lsls r6, r5, 1\n\ + cmp r5, 0x5\n\ + bhi _080F7ECC\n\ + mov r3, r8\n\ + ldrh r0, [r3]\n\ + b _080F7EC2\n\ +_080F7EB2:\n\ + adds r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r5, 0x5\n\ + bhi _080F7ECC\n\ + lsls r0, r1, 2\n\ + adds r0, r3, r0\n\ + ldrh r0, [r0]\n\ +_080F7EC2:\n\ + subs r0, r2, r0\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r0, 0\n\ + bgt _080F7EB2\n\ +_080F7ECC:\n\ + cmp r1, 0x6\n\ + bne _080F7ED2\n\ + movs r1, 0\n\ +_080F7ED2:\n\ + lsls r0, r1, 2\n\ + add r0, sp\n\ + ldrh r0, [r0]\n\ + bl sub_80EB784\n\ + mov r2, r9\n\ + adds r1, r2, r6\n\ + strh r0, [r1]\n\ +_080F7EE2:\n\ + lsls r0, r4, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x9\n\ + bls _080F7E56\n\ + add sp, 0x18\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +static void sub_80F7EFC(void) +{ + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + + bard->hasChangedSong = FALSE; +} + +static void sub_80F7F0C(void) +{ + struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; + + hipster->alreadySpoken = FALSE; +} + +static void sub_80F7F18(void) +{ + sub_8109A20(); +} + +static void sub_80F7F24(void) +{ + sub_80F8428(); +} + +void sub_80F7F30(void) +{ + switch (GetCurrentMauvilleOldMan()) + { + case MAUVILLE_MAN_BARD: + sub_80F7EFC(); + break; + case MAUVILLE_MAN_HIPSTER: + sub_80F7F0C(); + break; + case MAUVILLE_MAN_STORYTELLER: + sub_80F7F24(); + break; + case MAUVILLE_MAN_TRADER: + sub_80F7F18(); + break; + case MAUVILLE_MAN_GIDDY: + break; + } + sub_80F83D0(); +} + +#define tState data[0] +#define tCharIndex data[3] +#define tCurrWord data[4] +#define tUseTemporaryLyrics data[5] + +static void StartBardSong(bool8 useTemporaryLyrics) +{ + u8 taskId = CreateTask(Task_BardSong, 0x50); + + gTasks[taskId].tUseTemporaryLyrics = useTemporaryLyrics; +} + +static void BardSing(struct Task *task, struct BardSong *song) +{ + switch (task->tState) + { + case 0: // Initialize song + { + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + u16 *lyrics; + s32 i; + + // Copy lyrics + if (gSpecialVar_0x8004 == 0) + lyrics = bard->songLyrics; + else + lyrics = bard->temporaryLyrics; + for (i = 0; i < 6; i++) + song->lyrics[i] = lyrics[i]; + + // Clear phonemes + for (i = 0; i < 6; i++) + { + song->phonemes[i].sound = 0xFFFF; + song->phonemes[i].length = 0; + song->phonemes[i].pitch = 0; + song->phonemes[i].volume = 0; + } + song->currWord = 0; + song->currPhoneme = 0; + song->var04 = 0; + } + break; + case 1: // Wait for BGM to end + break; + case 2: // Initialize word + { + u16 word = song->lyrics[song->currWord]; + const struct BardSound *sounds = GetWordSounds(EC_GROUP(word), EC_INDEX(word)); + + song->var04 = 0; + GetWordPhonemes(song, sounds, MACRO1(word)); + } + break; + case 3: + case 4: + { + struct BardPhoneme *phoneme = &song->phonemes[song->currPhoneme]; + + switch (song->state) + { + case 0: + if (song->phonemeTimer == 0) // Timer has expired. Move to next phoneme + { + if (song->currPhoneme == 6 || phoneme->sound == 0xFF) + { + song->state = 0xFE; + break; + } + song->phonemeTimer = phoneme->length; + if (phoneme->sound <= 50) + { + u16 num = phoneme->sound / 3; + + m4aSongNumStart(249 + num * 3); + } + song->state = 1; + } + else + { + if (song->voiceInflection > 10) + song->volume -= 2; + if (song->voiceInflection & 1) + song->pitch += 64; + else + song->pitch -= 64; + m4aMPlayVolumeControl(&gMPlay_SE2, 0xFFFF, song->volume); + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, song->pitch); + song->voiceInflection++; + } + song->phonemeTimer--; + break; + case 1: + song->currPhoneme++; + song->state = 0; + if (phoneme->sound <= 50) + { + song->volume = 0x100 + phoneme->volume * 16; + m4aMPlayVolumeControl(&gMPlay_SE2, 0xFFFF, song->volume); + song->pitch = 0x200 + phoneme->pitch; + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, song->pitch); + } + break; + case 0xFE: + m4aMPlayStop(&gMPlay_SE2); + song->state = 0xFF; + break; + } + } + break; + case 5: + break; + } +} + +static void Task_BardSong(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; // r5 + + BardSing(task, &gUnknown_03005DA0); + switch (task->tState) + { + case 0: // Initialize song + PrepareSongText(); + InitWindowFromConfig(gMenuWindowPtr, &gWindowConfig_81E6CE4); + sub_8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); + task->data[1] = 0; + task->data[2] = 0; + task->tCharIndex = 0; + task->tCurrWord = 0; + FadeOutBGMTemporarily(4); + task->tState = 1; + break; + case 1: // Wait for BGM to end + if (IsBGMPausedOrStopped()) + task->tState = 2; + break; + case 2: // Initialize word + { + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + u8 *str = gStringVar4 + task->tCharIndex; + u16 wordLen = 0; + // Can't get it to match without hacking + u32 temp; + register s16 zero asm("r1"); + + while (*str != CHAR_SPACE + && *str != CHAR_NEWLINE + && *str != EXT_CTRL_CODE_BEGIN + && *str != EOS) + { + str++; + wordLen++; + } + if (!task->tUseTemporaryLyrics) + gUnknown_020388BC = MACRO1(bard->songLyrics[task->tCurrWord]); + else + gUnknown_020388BC = MACRO1(bard->temporaryLyrics[task->tCurrWord]); + temp = gUnknown_03005DA0.var04 / wordLen; + zero = 0; + gUnknown_03005DA0.var04 = temp; + if (gUnknown_03005DA0.var04 <= 0) + gUnknown_03005DA0.var04 = 1; + task->tCurrWord++; + if (task->data[2] == 0) + task->tState = 3; + else + task->tState = 5; + task->data[1] = zero; + } + break; + case 5: + if (task->data[2] == 0) + task->tState = 3; + else + task->data[2]--; + break; + case 3: + if (gStringVar4[task->tCharIndex] == EOS) + { + FadeInNewBGM(BGM_POKECEN, 6); + m4aMPlayFadeOutTemporarily(&gMPlay_SE2, 2); + EnableBothScriptContexts(); + DestroyTask(taskId); + } + else if (gStringVar4[task->tCharIndex] == CHAR_SPACE) + { + sub_8003418(gMenuWindowPtr); + task->tCharIndex++; + task->tState = 2; + task->data[2] = 0; + } + else if (gStringVar4[task->tCharIndex] == CHAR_NEWLINE) + { + task->tCharIndex++; + task->tState = 2; + task->data[2] = 0; + } + else if (gStringVar4[task->tCharIndex] == EXT_CTRL_CODE_BEGIN) + { + task->tCharIndex += 2; // skip over control codes + task->tState = 2; + task->data[2] = 8; + } + else if (gStringVar4[task->tCharIndex] == CHAR_SONG_WORD_SEPARATOR) + { + gStringVar4[task->tCharIndex] = CHAR_SPACE; // restore it back to a space + sub_8003418(gMenuWindowPtr); + task->tCharIndex++; + task->data[2] = 0; + } + else + { + switch (task->data[1]) + { + case 0: + sub_8003418(gMenuWindowPtr); + task->data[1]++; + break; + case 1: + task->data[1]++; + break; + case 2: + task->tCharIndex++; + task->data[1] = 0; + task->data[2] = gUnknown_03005DA0.var04; + task->tState = 4; + break; + } + } + break; + case 4: + task->data[2]--; + if (task->data[2] == 0) + task->tState = 3; + break; + } +} + +void sub_80F83D0(void) +{ + VarSet(0x4010, 0x45 + GetCurrentMauvilleOldMan()); +} + +struct Story +{ + u8 stat; + u8 minVal; + const u8 *title; + const u8 *action; + const u8 *fullText; +}; + +static const struct Story sStorytellerStories[] = +{ + {0x32, 1, gTextStoryteller_Story1Title, gTextStoryteller_Story1Action, gTextStoryteller_Story1Text}, + {0x02, 1, gTextStoryteller_Story2Title, gTextStoryteller_Story2Action, gTextStoryteller_Story2Text}, + {0x03, 1, gTextStoryteller_Story3Title, gTextStoryteller_Story3Action, gTextStoryteller_Story3Text}, + {0x04, 1, gTextStoryteller_Story4Title, gTextStoryteller_Story4Action, gTextStoryteller_Story4Text}, + {0x06, 1, gTextStoryteller_Story5Title, gTextStoryteller_Story5Action, gTextStoryteller_Story5Text}, + {0x09, 1, gTextStoryteller_Story6Title, gTextStoryteller_Story6Action, gTextStoryteller_Story6Text}, + {0x0B, 1, gTextStoryteller_Story7Title, gTextStoryteller_Story7Action, gTextStoryteller_Story7Text}, + {0x0C, 1, gTextStoryteller_Story8Title, gTextStoryteller_Story8Action, gTextStoryteller_Story8Text}, + {0x0D, 1, gTextStoryteller_Story9Title, gTextStoryteller_Story9Action, gTextStoryteller_Story9Text}, + {0x0E, 1, gTextStoryteller_Story10Title, gTextStoryteller_Story10Action, gTextStoryteller_Story10Text}, + {0x0F, 1, gTextStoryteller_Story11Title, gTextStoryteller_Story11Action, gTextStoryteller_Story11Text}, + {0x10, 1, gTextStoryteller_Story12Title, gTextStoryteller_Story12Action, gTextStoryteller_Story12Text}, + {0x11, 1, gTextStoryteller_Story13Title, gTextStoryteller_Story13Action, gTextStoryteller_Story13Text}, + {0x12, 1, gTextStoryteller_Story14Title, gTextStoryteller_Story14Action, gTextStoryteller_Story14Text}, + {0x13, 1, gTextStoryteller_Story15Title, gTextStoryteller_Story15Action, gTextStoryteller_Story15Text}, + {0x14, 1, gTextStoryteller_Story16Title, gTextStoryteller_Story16Action, gTextStoryteller_Story16Text}, + {0x1A, 1, gTextStoryteller_Story17Title, gTextStoryteller_Story17Action, gTextStoryteller_Story17Text}, + {0x1B, 1, gTextStoryteller_Story18Title, gTextStoryteller_Story18Action, gTextStoryteller_Story18Text}, + {0x1C, 1, gTextStoryteller_Story19Title, gTextStoryteller_Story19Action, gTextStoryteller_Story19Text}, + {0x1D, 2, gTextStoryteller_Story20Title, gTextStoryteller_Story20Action, gTextStoryteller_Story20Text}, + {0x1E, 1, gTextStoryteller_Story21Title, gTextStoryteller_Story21Action, gTextStoryteller_Story21Text}, + {0x21, 1, gTextStoryteller_Story22Title, gTextStoryteller_Story22Action, gTextStoryteller_Story22Text}, + {0x24, 1, gTextStoryteller_Story23Title, gTextStoryteller_Story23Action, gTextStoryteller_Story23Text}, + {0x25, 1, gTextStoryteller_Story24Title, gTextStoryteller_Story24Action, gTextStoryteller_Story24Text}, + {0x26, 1, gTextStoryteller_Story25Title, gTextStoryteller_Story25Action, gTextStoryteller_Story25Text}, + {0x27, 1, gTextStoryteller_Story26Title, gTextStoryteller_Story26Action, gTextStoryteller_Story26Text}, + {0x28, 1, gTextStoryteller_Story27Title, gTextStoryteller_Story27Action, gTextStoryteller_Story27Text}, + {0x29, 1, gTextStoryteller_Story28Title, gTextStoryteller_Story28Action, gTextStoryteller_Story28Text}, + {0x2A, 1, gTextStoryteller_Story29Title, gTextStoryteller_Story29Action, gTextStoryteller_Story29Text}, + {0x2B, 1, gTextStoryteller_Story30Title, gTextStoryteller_Story30Action, gTextStoryteller_Story30Text}, + {0x2C, 1, gTextStoryteller_Story31Title, gTextStoryteller_Story31Action, gTextStoryteller_Story31Text}, + {0x2D, 1, gTextStoryteller_Story32Title, gTextStoryteller_Story32Action, gTextStoryteller_Story32Text}, + {0x2E, 1, gTextStoryteller_Story33Title, gTextStoryteller_Story33Action, gTextStoryteller_Story33Text}, + {0x2F, 1, gTextStoryteller_Story34Title, gTextStoryteller_Story34Action, gTextStoryteller_Story34Text}, + {0x30, 1, gTextStoryteller_Story35Title, gTextStoryteller_Story35Action, gTextStoryteller_Story35Text}, + {0x31, 1, gTextStoryteller_Story36Title, gTextStoryteller_Story36Action, gTextStoryteller_Story36Text}, +}; + +static void StorytellerSetup(void) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + s32 i; + + storyteller->id = MAUVILLE_MAN_STORYTELLER; + storyteller->alreadyRecorded = FALSE; + for (i = 0; i < 4; i++) + { + storyteller->gameStatIDs[i] = 0; + storyteller->trainerNames[0][i] = EOS; // Maybe they meant storyteller->trainerNames[i][0] instead? + } +} + +static void sub_80F8428(void) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + storyteller->id = MAUVILLE_MAN_STORYTELLER; + storyteller->alreadyRecorded = FALSE; +} + +static u32 StorytellerGetGameStat(u8 stat) +{ + if (stat == NUM_GAME_STATS) + stat = 0; + return GetGameStat(stat); +} + +static const struct Story *GetStoryByStat(u32 stat) +{ + s32 i; + + for (i = 0; i < 36; i++) + { + if (sStorytellerStories[i].stat == stat) + return &sStorytellerStories[i]; + } + return &sStorytellerStories[35]; +} + +static const u8 *GetStoryTitleByStat(u32 stat) +{ + return GetStoryByStat(stat)->title; +} + +static const u8 *GetStoryTextByStat(u32 stat) +{ + return GetStoryByStat(stat)->fullText; +} + +static const u8 *GetStoryActionByStat(u32 stat) +{ + return GetStoryByStat(stat)->action; +} + +static u8 GetFreeStorySlot(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + if (storyteller->gameStatIDs[i] == 0) + break; + } + return i; +} + +static u32 StorytellerGetRecordedTrainerStat(u32 trainer) +{ + u8 *ptr = gSaveBlock1.mauvilleMan.storyteller.statValues[trainer]; + + return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); +} + +static void StorytellerSetRecordedTrainerStat(u32 trainer, u32 val) +{ + u8 *ptr = gSaveBlock1.mauvilleMan.storyteller.statValues[trainer]; + + ptr[0] = val; + ptr[1] = val >> 8; + ptr[2] = val >> 16; + ptr[3] = val >> 24; +} + +static bool32 HasTrainerStatIncreased(u32 trainer) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + if (StorytellerGetGameStat(storyteller->gameStatIDs[trainer]) > StorytellerGetRecordedTrainerStat(trainer)) + return TRUE; + else + return FALSE; +} + +static void GetStoryByStattellerPlayerName(u32 player, void *dst) +{ + u8 *name = gSaveBlock1.mauvilleMan.storyteller.trainerNames[player]; + + memset(dst, EOS, 8); + memcpy(dst, name, 7); +} + +static void StorytellerSetPlayerName(u32 player, const u8 *src) +{ + u8 *name = gSaveBlock1.mauvilleMan.storyteller.trainerNames[player]; + u8 len = StringLength(src); + + memset(name, EOS, 7); + StringCopyN(name, src, len); +} + +static void StorytellerRecordNewStat(u32 player, u32 stat) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + storyteller->gameStatIDs[player] = stat; + StorytellerSetPlayerName(player, gSaveBlock2.playerName); + StorytellerSetRecordedTrainerStat(player, StorytellerGetGameStat(stat)); + ConvertIntToDecimalStringN(gStringVar1, StorytellerGetGameStat(stat), 0, 10); + StringCopy(gStringVar2, GetStoryActionByStat(stat)); +} + +static void ScrambleStatList(u8 *arr, s32 count) +{ + s32 i; + + for (i = 0; i < count; i++) + arr[i] = i; + for (i = 0; i < count; i++) + { + u32 a = Random() % count; + u32 b = Random() % count; + u8 temp = arr[a]; + arr[a] = arr[b]; + arr[b] = temp; + } +} + +// What purpose does this struct even serve? Only the length field is used. +static const struct {u32 length; struct MauvilleManStoryteller *unused1; u32 unused2;} sStorytellerStuff = +{ + 36, + &gSaveBlock1.mauvilleMan.storyteller, // unused + 12, // unused +}; + +static bool8 StorytellerInitializeRandomStat(void) +{ + u8 arr[sStorytellerStuff.length]; + s32 i; + s32 j; + + ScrambleStatList(arr, 36); + for (i = 0; i < 36; i++) + { + u8 stat = sStorytellerStories[arr[i]].stat; + u8 minVal = sStorytellerStories[arr[i]].minVal; + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + for (j = 0; j < 4; j++) + { + if (gSaveBlock1.mauvilleMan.storyteller.gameStatIDs[j] == stat) + break; + } + if (j == 4 && StorytellerGetGameStat(stat) >= minVal) + { + storyteller->alreadyRecorded = TRUE; + StorytellerRecordNewStat(GetFreeStorySlot(), stat); + return TRUE; + } + } + return FALSE; +} + +static void StorytellerDisplayStory(u32 player) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + u8 stat = storyteller->gameStatIDs[player]; + + ConvertIntToDecimalStringN(gStringVar1, StorytellerGetRecordedTrainerStat(player), 0, 10); + StringCopy(gStringVar2, GetStoryActionByStat(stat)); + GetStoryByStattellerPlayerName(player, gStringVar3); + ShowFieldMessage(GetStoryTextByStat(stat)); +} + +static void PrintStoryList(void) +{ + s32 i; + + MenuDrawTextWindow(0, 0, 25, 4 + GetFreeStorySlot() * 2); + for (i = 0; i < 4; i++) + { + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + u8 stat = storyteller->gameStatIDs[i]; + + if (stat == 0) + break; + MenuPrint(GetStoryTitleByStat(stat), 1, 2 + i * 2); + } + MenuPrint(gPCText_Cancel, 1, 2 + i * 2); +} + +static u8 gUnknown_03000748; + +static void Task_StoryListMenu(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s32 selection; + + switch (task->data[0]) + { + case 0: + PrintStoryList(); + InitMenu(0, 1, 2, GetFreeStorySlot() + 1, 0, 24); + task->data[0]++; + break; + case 1: + selection = ProcessMenuInput(); + if (selection == -2) + break; + if (selection == -1 || selection == GetFreeStorySlot()) + { + gScriptResult = 0; + } + else + { + gScriptResult = 1; + gUnknown_03000748 = selection; + } + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 25, 12); + DestroyTask(taskId); + EnableBothScriptContexts(); + break; + } +} + +// Sets gScriptResult to TRUE if player selected a story +void ScrSpecial_StorytellerStoryListMenu(void) +{ + CreateTask(Task_StoryListMenu, 0x50); +} + +void ScrSpecial_StorytellerDisplayStory(void) +{ + StorytellerDisplayStory(gUnknown_03000748); +} + +u8 ScrSpecial_StorytellerGetFreeStorySlot(void) +{ + return GetFreeStorySlot(); +} + +// Returns TRUE if stat has increased +bool8 ScrSpecial_StorytellerUpdateStat(void) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + u8 r4 = storyteller->gameStatIDs[gUnknown_03000748]; + + if (HasTrainerStatIncreased(gUnknown_03000748) == TRUE) + { + StorytellerRecordNewStat(gUnknown_03000748, r4); + return TRUE; + } + return FALSE; +} + +bool8 ScrSpecial_HasStorytellerAlreadyRecorded(void) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + if (storyteller->alreadyRecorded == FALSE) + return FALSE; + else + return TRUE; +} + +bool8 ScrSpecial_StorytellerInitializeRandomStat(void) +{ + return StorytellerInitializeRandomStat(); +} diff --git a/src/menu_helpers.c b/src/field/menu_helpers.c index 9915d67ac..14e823355 100644 --- a/src/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -7,7 +7,7 @@ #include "map_constants.h" #include "menu.h" #include "menu_helpers.h" -#include "rom4.h" +#include "overworld.h" #include "songs.h" #include "sound.h" #include "sprite.h" @@ -140,7 +140,7 @@ static void PrintMessage(const u8 *str, u16 tile) { sub_80A3FA0(&gBGTilemapBuffers[1][0], 2, 15, 26, 4, tile); } - sub_8072044(str); + MenuPrintMessageDefaultCoords(str); } static void sub_80F9090(u8 taskId) diff --git a/src/metatile_behavior.c b/src/field/metatile_behavior.c index d05ba0b89..d05ba0b89 100644 --- a/src/metatile_behavior.c +++ b/src/field/metatile_behavior.c diff --git a/src/money.c b/src/field/money.c index 5d9d0b689..5d0f0ae8d 100644 --- a/src/money.c +++ b/src/field/money.c @@ -25,7 +25,7 @@ bool8 IsEnoughMoney(u32 budget, u32 cost) return FALSE; } -void sub_80B79B8(u32 *arg0, u32 arg1) +void AddMoney(u32 *arg0, u32 arg1) { if (*arg0 > *arg0 + arg1) { @@ -40,7 +40,7 @@ void sub_80B79B8(u32 *arg0, u32 arg1) } } -void sub_80B79E0(u32 *arg0, u32 arg1) +void RemoveMoney(u32 *arg0, u32 arg1) { if (*arg0 < arg1) { @@ -52,39 +52,25 @@ void sub_80B79E0(u32 *arg0, u32 arg1) } } -void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) +void GetMoneyAmountText(u8 *buffer, u32 amount, u8 arg2) { u8 width; u8 i; - if (arg1 > 999999) - { + if (amount > 999999) width = 7; - } - else if (arg1 > 99999) - { + else if (amount > 99999) width = 6; - } - else if (arg1 > 10000) - { + else if (amount > 10000) width = 5; - } - else if (arg1 > 999) - { + else if (amount > 999) width = 4; - } - else if (arg1 > 99) - { + else if (amount > 99) width = 3; - } - else if (arg1 > 9) - { + else if (amount > 9) width = 2; - } else - { width = 1; - } buffer[0] = EXT_CTRL_CODE_BEGIN; buffer[1] = 0x14; @@ -100,7 +86,7 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) buffer[0] = CHAR_CURRENCY; buffer += 1; - buffer = ConvertIntToDecimalString(buffer, arg1); + buffer = ConvertIntToDecimalString(buffer, amount); buffer[0] = EXT_CTRL_CODE_BEGIN; buffer[1] = 0x14; @@ -108,16 +94,18 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) buffer[3] = EOS; } -void sub_80B7A94(u32 arg0, u8 size, u8 x, u8 y) +void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y) { u8 buffer[16]; u8 stringWidth; - sub_80B79F8(buffer, arg0, size); + GetMoneyAmountText(buffer, amount, size); stringWidth = sub_8072CA4(buffer); if (stringWidth >= (size + 1) * 8) + { MenuPrint(buffer, x, y); + } else { int xPlusOne = x + 1; @@ -148,7 +136,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) } __attribute__((naked)) -void sub_80B7B34(void) +void sub_80B7B34(u8 var1, u8 var2, int var3) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -241,15 +229,15 @@ _080B7BE8: .4byte 0x0600f840\n\ .syntax divided\n"); } -void sub_80B7BEC(u32 arg0, u8 x, u8 y) +void UpdateMoneyWindow(u32 amount, u8 x, u8 y) { - sub_80B7A94(arg0, 6, x + 6, y + 1); + PrintMoneyAmount(amount, 6, x + 6, y + 1); } -void sub_80B7C14(u32 arg0, u8 x, u8 y) +void OpenMoneyWindow(u32 amount, u8 x, u8 y) { MenuDrawTextWindow(x, y, x + 13, y + 3); - sub_80B7BEC(arg0, x, y); + UpdateMoneyWindow(amount, x, y); LoadCompressedObjectPic(&gUnknown_083CF584); LoadCompressedObjectPalette(&gUnknown_083CF58C); @@ -257,7 +245,7 @@ void sub_80B7C14(u32 arg0, u8 x, u8 y) gUnknown_02038734 = CreateSprite(&gSpriteTemplate_83CF56C, x * 8 + 19, y * 8 + 11, 0); } -void RemoveMoneyLabelObject(u8 x, u8 y) +void CloseMoneyWindow(u8 x, u8 y) { DestroySpriteAndFreeResources(&gSprites[gUnknown_02038734]); FreeSpritePaletteByTag(SPRITE_TAG_MONEY); @@ -271,5 +259,5 @@ bool8 sub_80B7CE8(void) void sub_80B7D0C(void) { - sub_80B79E0(&gSaveBlock1.money, gSpecialVar_0x8005); + RemoveMoney(&gSaveBlock1.money, gSpecialVar_0x8005); } diff --git a/src/rom4.c b/src/field/overworld.c index f9006efba..d6f255409 100644 --- a/src/rom4.c +++ b/src/field/overworld.c @@ -1,5 +1,5 @@ #include "global.h" -#include "rom4.h" +#include "overworld.h" #include "battle_setup.h" #include "berry.h" #include "cable_club.h" @@ -25,6 +25,7 @@ #include "link.h" #include "load_save.h" #include "main.h" +#include "map_constants.h" #include "map_name_popup.h" #include "menu.h" #include "metatile_behavior.h" @@ -40,6 +41,7 @@ #include "secret_base.h" #include "songs.h" #include "sound.h" +#include "species.h" #include "start_menu.h" #include "task.h" #include "tileset_anim.h" @@ -60,28 +62,10 @@ struct UnkTVStruct u32 tv_field_4; }; -EWRAM_DATA struct WarpData gUnknown_020297F0 = {0}; -EWRAM_DATA struct WarpData gUnknown_020297F8 = {0}; -EWRAM_DATA struct WarpData gUnknown_02029800 = {0}; -EWRAM_DATA struct WarpData gUnknown_02029808 = {0}; -EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0}; -EWRAM_DATA u16 gUnknown_02029814 = 0; -EWRAM_DATA bool8 gUnknown_02029816 = FALSE; -EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0}; - -static u8 gUnknown_03000580[4]; -static u16 (*gUnknown_03000584)(u32); -static u8 gUnknown_03000588; - -u16 word_3004858; -void (*gFieldCallback)(void); -u8 gUnknown_03004860; -u8 gFieldLinkPlayerCount; - extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; -extern u8 EventScript_LeagueWhiteOut[]; +extern u8 S_WhiteOut[]; extern u8 gUnknown_0819FC9F[]; extern u8 SingleBattleColosseum_EventScript_1A436F[]; extern u8 SingleBattleColosseum_EventScript_1A4379[]; @@ -102,71 +86,165 @@ extern u8 TradeRoom_PromptToCancelLink[]; extern u8 TradeRoom_TerminateLink[]; extern u8 gUnknown_081A4508[]; -extern u8 (*gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8); -extern u8 (*gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8); -extern void (*gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *); - extern struct MapData * const gMapAttributes[]; extern struct MapHeader * const * const gMapGroups[]; -extern const struct WarpData gDummyWarpData; -extern s32 gUnknown_0839ACE8; -extern u32 gUnknown_08216694[]; +extern s32 gMaxFlashLevel; + +EWRAM_DATA struct WarpData gUnknown_020297F0 = {0}; +EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position +EWRAM_DATA struct WarpData gUnknown_02029800 = {0}; +EWRAM_DATA struct WarpData gUnknown_02029808 = {0}; +EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0}; +EWRAM_DATA static u16 sAmbientCrySpecies = 0; +EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; +EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0}; + +static u8 gUnknown_03000580[4]; +static u16 (*gUnknown_03000584)(u32); +static u8 gUnknown_03000588; + +u16 word_3004858; +void (*gFieldCallback)(void); +u8 gUnknown_03004860; +u8 gFieldLinkPlayerCount; + +static const struct WarpData sDummyWarpData = +{ + .mapGroup = -1, + .mapNum = -1, + .warpId = -1, + .x = -1, + .y = -1, +}; + +static const u8 sUnusedData[] = +{ + 0xB0, 0x04, 0x00, 0x00, + 0x10, 0x0E, 0x00, 0x00, + 0xB0, 0x04, 0x00, 0x00, + 0x60, 0x09, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, + 0xD4, 0xFF, 0xFF, 0xFF, + 0x2C, 0x00, 0x00, 0x00, +}; + +const struct UCoords32 gUnknown_0821664C[] = +{ + { 0, 0}, + { 0, 1}, + { 0, -1}, + {-1, 0}, + { 1, 0}, + {-1, 1}, + { 1, 1}, + {-1, -1}, + { 1, -1}, +}; + +const struct UnknownTaskStruct gUnknown_08216694 = +{ + (void *)REG_ADDR_WIN0H, + ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, + 1, + 0, +}; + +static u8 sub_8055C68(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8055C88(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8055C8C(struct LinkPlayerMapObject *, struct MapObject *, u8); -void DoWhiteOut(void) +static u8 (*const gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = { - ScriptContext2_RunNewScript(EventScript_LeagueWhiteOut); + sub_8055C68, + sub_8055C88, + sub_8055C8C, +}; + +static u8 sub_8055CAC(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8055CB0(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8055D18(struct LinkPlayerMapObject *, struct MapObject *, u8); + +static u8 (*const gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = +{ + sub_8055CAC, + sub_8055CB0, + sub_8055CB0, + sub_8055CB0, + sub_8055CB0, + sub_8055CAC, + sub_8055CAC, + sub_8055D18, + sub_8055D18, + sub_8055D18, + sub_8055D18, +}; + +static void sub_8055D30(struct LinkPlayerMapObject *, struct MapObject *); +static void sub_8055D38(struct LinkPlayerMapObject *, struct MapObject *); + +static void (*const gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *) = +{ + sub_8055D30, + sub_8055D38, +}; + + +static void DoWhiteOut(void) +{ + ScriptContext2_RunNewScript(S_WhiteOut); gSaveBlock1.money /= 2; - HealPlayerParty(); - sub_8053050(); - sub_8053570(); + ScrSpecial_HealPlayerParty(); + Overworld_ResetStateAfterWhiteOut(); + Overworld_SetWarpDestToLastHealLoc(); warp_in(); } -void flag_var_implications_of_teleport_(void) +void Overworld_ResetStateAfterFly(void) { player_avatar_init_params_reset(); - FlagReset(SYS_CYCLING_ROAD); - FlagReset(SYS_CRUISE_MODE); - FlagReset(SYS_SAFARI_MODE); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_USE_FLASH); + FlagClear(SYS_CYCLING_ROAD); + FlagClear(SYS_CRUISE_MODE); + FlagClear(SYS_SAFARI_MODE); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_USE_FLASH); } -void new_game(void) +void Overworld_ResetStateAfterTeleport(void) { player_avatar_init_params_reset(); - FlagReset(SYS_CYCLING_ROAD); - FlagReset(SYS_CRUISE_MODE); - FlagReset(SYS_SAFARI_MODE); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_USE_FLASH); + FlagClear(SYS_CYCLING_ROAD); + FlagClear(SYS_CRUISE_MODE); + FlagClear(SYS_SAFARI_MODE); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_USE_FLASH); ScriptContext2_RunNewScript(gUnknown_0819FC9F); } -void sub_8053014(void) +void Overworld_ResetStateAfterDigEscRope(void) { player_avatar_init_params_reset(); - FlagReset(SYS_CYCLING_ROAD); - FlagReset(SYS_CRUISE_MODE); - FlagReset(SYS_SAFARI_MODE); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_USE_FLASH); + FlagClear(SYS_CYCLING_ROAD); + FlagClear(SYS_CRUISE_MODE); + FlagClear(SYS_SAFARI_MODE); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_USE_FLASH); } -void sub_8053050(void) +void Overworld_ResetStateAfterWhiteOut(void) { player_avatar_init_params_reset(); - FlagReset(SYS_CYCLING_ROAD); - FlagReset(SYS_CRUISE_MODE); - FlagReset(SYS_SAFARI_MODE); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_USE_FLASH); + FlagClear(SYS_CYCLING_ROAD); + FlagClear(SYS_CRUISE_MODE); + FlagClear(SYS_SAFARI_MODE); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_USE_FLASH); } void sub_805308C(void) { - FlagReset(SYS_SAFARI_MODE); - sub_8054164(); + FlagClear(SYS_SAFARI_MODE); + ChooseAmbientCrySpecies(); ResetCyclingRoadChallengeData(); UpdateLocationHistoryForRoamer(); RoamerMoveToOtherLocationSet(); @@ -205,23 +283,27 @@ void SetGameStat(u8 index, u32 value) gSaveBlock1.gameStats[index] = value; } -void sub_8053154(void) +void LoadMapObjTemplatesFromHeader(void) { + // Clear map object templates CpuFill32(0, gSaveBlock1.mapObjectTemplates, sizeof(gSaveBlock1.mapObjectTemplates)); + + // Copy map header events to save block CpuCopy32(gMapHeader.events->mapObjects, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate)); } -void sub_8053198(void) +static void LoadSaveblockMapObjScripts(void) { struct MapObjectTemplate *mapObjectTemplates = gSaveBlock1.mapObjectTemplates; s32 i; + for (i = 0; i < 64; i++) mapObjectTemplates[i].script = gMapHeader.events->mapObjects[i].script; } -void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y) +void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y) { s32 i; for (i = 0; i < 64; i++) @@ -231,28 +313,27 @@ void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y) { mapObjectTemplate->x = x; mapObjectTemplate->y = y; - break; + return; } } } -void update_saveblock1_field_object_movement_behavior(u8 localId, u8 movementType) +void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType) { - s32 i = 0; - struct MapObjectTemplate *mapObjectTemplate = gSaveBlock1.mapObjectTemplates; - do + s32 i; + + for (i = 0; i < 64; i++) { + struct MapObjectTemplate *mapObjectTemplate = &gSaveBlock1.mapObjectTemplates[i]; if (mapObjectTemplate->localId == localId) { mapObjectTemplate->movementType = movementType; - break; + return; } - mapObjectTemplate++; - i++; - } while (i < 64); + } } -void mapdata_load_assets_to_gpu_and_full_redraw(void) +static void mapdata_load_assets_to_gpu_and_full_redraw(void) { move_tilemap_camera_to_upper_left_corner(); copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData); @@ -261,7 +342,7 @@ void mapdata_load_assets_to_gpu_and_full_redraw(void) cur_mapheader_run_tileset_funcs_after_some_cpuset(); } -struct MapData *get_mapdata_header(void) +static struct MapData *get_mapdata_header(void) { u16 mapDataId = gSaveBlock1.mapDataId; if (mapDataId) @@ -269,15 +350,15 @@ struct MapData *get_mapdata_header(void) return NULL; } -void warp_shift(void) +static void ApplyCurrentWarp(void) { gUnknown_020297F0 = gSaveBlock1.location; - gSaveBlock1.location = gUnknown_020297F8; - gUnknown_02029800 = gDummyWarpData; - gUnknown_02029808 = gDummyWarpData; + gSaveBlock1.location = gWarpDestination; + gUnknown_02029800 = sDummyWarpData; + gUnknown_02029808 = sDummyWarpData; } -void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { warp->mapGroup = mapGroup; warp->mapNum = mapNum; @@ -286,7 +367,7 @@ void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 warp->y = y; } -bool32 warp_data_is_not_neg_1(struct WarpData *warp) +static bool32 warp_data_is_not_neg_1(struct WarpData *warp) { if (warp->mapGroup != -1) return FALSE; @@ -301,31 +382,27 @@ bool32 warp_data_is_not_neg_1(struct WarpData *warp) return TRUE; } -struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum) +struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum) { return gMapGroups[mapGroup][mapNum]; } -struct MapHeader * const warp1_get_mapheader(void) +struct MapHeader *const warp1_get_mapheader(void) { - return get_mapheader_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum); + return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); } -void set_current_map_header_from_sav1_save_old_name(void) +static void set_current_map_header_from_sav1_save_old_name(void) { - struct MapHeader *dest = &gMapHeader; - struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); - *dest = *src; - gSaveBlock1.mapDataId = dest->mapDataId; - dest->mapData = get_mapdata_header(); + gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); + gSaveBlock1.mapDataId = gMapHeader.mapDataId; + gMapHeader.mapData = get_mapdata_header(); } -void sub_805338C(void) +static void LoadSaveblockMapHeader(void) { - struct MapHeader *dest = &gMapHeader; - struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); - *dest = *src; - dest->mapData = get_mapdata_header(); + gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); + gMapHeader.mapData = get_mapdata_header(); } void sub_80533CC(void) @@ -349,115 +426,117 @@ void sub_80533CC(void) void warp_in(void) { - warp_shift(); + ApplyCurrentWarp(); set_current_map_header_from_sav1_save_old_name(); sub_80533CC(); } -void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_020297F8, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gWarpDestination, mapGroup, mapNum, warpId, x, y); } void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId) { - warp1_set(mapGroup, mapNum, warpId, -1, -1); + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, -1, -1); } void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId) { - warp_set(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, gSaveBlock1.pos.x, gSaveBlock1.pos.y); + SetWarpData(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, gSaveBlock1.pos.x, gSaveBlock1.pos.y); } void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, x, y); } void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused) { - gUnknown_020297F8 = gSaveBlock1.warp2; + gWarpDestination = gSaveBlock1.warp2; } void sub_8053538(u8 a1) { const struct HealLocation *warp = GetHealLocation(a1); + if (warp) - warp1_set(warp->group, warp->map, -1, warp->x, warp->y); + Overworld_SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y); } -void sub_8053570(void) +void Overworld_SetWarpDestToLastHealLoc(void) { - gUnknown_020297F8 = gSaveBlock1.warp3; + gWarpDestination = gSaveBlock1.lastHealLocation; } -void sub_8053588(u8 a1) +void Overworld_SetHealLocationWarp(u8 healLocationId) { - const struct HealLocation *warp = GetHealLocation(a1); - if (warp) - warp_set(&gSaveBlock1.warp3, warp->group, warp->map, -1, warp->x, warp->y); + const struct HealLocation *healLocation = GetHealLocation(healLocationId); + + if (healLocation != NULL) + SetWarpData(&gSaveBlock1.lastHealLocation, healLocation->group, healLocation->map, -1, healLocation->x, healLocation->y); } void sub_80535C4(s16 a1, s16 a2) { - u8 v4 = sav1_map_get_light_level(); - u8 v5 = get_map_light_level_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum); - if (is_light_level_1_2_3_5_or_6(v4) && is_light_level_1_2_3_5_or_6(v5) != TRUE) + u8 currMapType = Overworld_GetMapTypeOfSaveblockLocation(); + u8 destMapType = GetMapTypeByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); + if (is_map_type_1_2_3_5_or_6(currMapType) && is_map_type_1_2_3_5_or_6(destMapType) != TRUE) sub_805363C(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, a1 - 7, a2 - 6); } void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp4, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp4, mapGroup, mapNum, warpId, x, y); } void sub_8053678(void) { - gUnknown_020297F8 = gSaveBlock1.warp4; + gWarpDestination = gSaveBlock1.warp4; } void sub_8053690(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y); } -void warp1_set_to_warp2(void) +static void warp1_set_to_warp2(void) { - gUnknown_020297F8 = gUnknown_02029800; + gWarpDestination = gUnknown_02029800; } void sub_80536E4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y); } void sub_8053720(s16 x, s16 y) { if (warp_data_is_not_neg_1(&gUnknown_02029808) == TRUE) { - gUnknown_020297F8 = gUnknown_020297F0; + gWarpDestination = gUnknown_020297F0; } else { - warp1_set(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y); + Overworld_SetWarpDestination(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y); } } void sub_8053778(void) { - gUnknown_020297F8 = gSaveBlock1.warp1; + gWarpDestination = gSaveBlock1.warp1; } void unref_sub_8053790(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp1, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp1, mapGroup, mapNum, warpId, x, y); } void sub_80537CC(u8 a1) { const struct HealLocation *warp = GetHealLocation(a1); if (warp) - warp_set(&gSaveBlock1.warp1, warp->group, warp->map, -1, warp->x, warp->y); + SetWarpData(&gSaveBlock1.warp1, warp->group, warp->map, -1, warp->x, warp->y); } void gpu_sync_bg_hide() @@ -465,7 +544,7 @@ void gpu_sync_bg_hide() gSaveBlock1.warp1 = gSaveBlock1.warp2; } -struct MapConnection *sub_8053818(u8 dir) +struct MapConnection *GetMapConnection(u8 dir) { s32 i; s32 count = gMapHeader.connections->count; @@ -483,10 +562,11 @@ struct MapConnection *sub_8053818(u8 dir) bool8 sub_8053850(u8 dir, u16 x, u16 y) { - struct MapConnection *connection = sub_8053818(dir); - if (connection) + struct MapConnection *connection = GetMapConnection(dir); + + if (connection != NULL) { - warp1_set(connection->mapGroup, connection->mapNum, -1, x, y); + Overworld_SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y); } else { @@ -512,20 +592,20 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) { s32 i; - warp1_set(mapGroup, mapNum, -1, -1, -1); + Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1); sub_8053F0C(); - warp_shift(); + ApplyCurrentWarp(); set_current_map_header_from_sav1_save_old_name(); - sub_8053154(); + LoadMapObjTemplatesFromHeader(); ClearTempFieldEventData(); ResetCyclingRoadChallengeData(); prev_quest_postbuffer_cursor_backup_reset(); sub_8082BD0(mapGroup, mapNum); DoTimeBasedEvents(); sub_80806E4(); - sub_8054164(); - sub_8053C98(); - sav1_reset_battle_music_maybe(); + ChooseAmbientCrySpecies(); + SetDefaultFlashLevel(); + Overworld_ClearSavedMusic(); mapheader_run_script_with_tag_x3(); not_trainer_hill_battle_pyramid(); sub_8056D38(gMapHeader.mapData); @@ -549,9 +629,9 @@ void sub_8053994(u32 a1) bool8 v3; set_current_map_header_from_sav1_save_old_name(); - sub_8053154(); - v2 = is_light_level_1_2_3_5_or_6(gMapHeader.mapType); - v3 = is_light_level_8_or_9(gMapHeader.mapType); + LoadMapObjTemplatesFromHeader(); + v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType); + v3 = Overworld_MapTypeIsIndoors(gMapHeader.mapType); ClearTempFieldEventData(); ResetCyclingRoadChallengeData(); prev_quest_postbuffer_cursor_backup_reset(); @@ -559,11 +639,11 @@ void sub_8053994(u32 a1) if (a1 != 1) DoTimeBasedEvents(); sub_80806E4(); - sub_8054164(); + ChooseAmbientCrySpecies(); if (v2) - FlagReset(SYS_USE_FLASH); - sub_8053C98(); - sav1_reset_battle_music_maybe(); + FlagClear(SYS_USE_FLASH); + SetDefaultFlashLevel(); + Overworld_ClearSavedMusic(); mapheader_run_script_with_tag_x3(); UpdateLocationHistoryForRoamer(); RoamerMoveToOtherLocationSet(); @@ -600,11 +680,11 @@ void walkrun_find_lowest_active_bit_in_bitfield(void) struct UnkPlayerStruct *sub_8053AA8(void) { struct UnkPlayerStruct playerStruct; - u8 light = sav1_map_get_light_level(); + u8 mapType = Overworld_GetMapTypeOfSaveblockLocation(); u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1(); - u8 v4 = sub_8053B00(&gUnknown_02029810, v2, light); + u8 v4 = sub_8053B00(&gUnknown_02029810, v2, mapType); playerStruct.player_field_0 = v4; - playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, light); + playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, mapType); gUnknown_02029810 = playerStruct; return &gUnknown_02029810; } @@ -617,7 +697,7 @@ u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) return 16; if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) return 8; - if (IsBikingAllowedByMap() != TRUE) + if (Overworld_IsBikingAllowed() != TRUE) return 1; if (playerStruct->player_field_0 == 2) return 2; @@ -655,10 +735,12 @@ u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) return MapGridGetMetatileBehaviorAt(gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7); } -bool32 IsBikingAllowedByMap(void) +bool32 Overworld_IsBikingAllowed(void) { // is player in cycling road entrance? - if (gSaveBlock1.location.mapGroup == 29 && (gSaveBlock1.location.mapNum == 11 || gSaveBlock1.location.mapNum == 12)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE + && (gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE + || gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE)) return TRUE; // is player indoor, in a secret base, or underwater? @@ -669,37 +751,37 @@ bool32 IsBikingAllowedByMap(void) if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) return FALSE; - // is player in SeafloorCavern_Room9? - if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 36) + // Thou shalt not bike on the sacred resting grounds of Kyogre/Groudon. + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 + && gSaveBlock1.location.mapNum == MAP_ID_SEAFLOOR_CAVERN_ROOM9) return FALSE; - - // is player in CaveOfOrigin_B4F? - if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 42) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_CAVE_OF_ORIGIN_B4F + && gSaveBlock1.location.mapNum == MAP_ID_CAVE_OF_ORIGIN_B4F) return FALSE; return TRUE; } -void sub_8053C98(void) +void SetDefaultFlashLevel(void) { if (!gMapHeader.cave) - gSaveBlock1.flashUsed = 0; + gSaveBlock1.flashLevel = 0; else if (FlagGet(SYS_USE_FLASH)) - gSaveBlock1.flashUsed = 1; + gSaveBlock1.flashLevel = 1; else - gSaveBlock1.flashUsed = gUnknown_0839ACE8; + gSaveBlock1.flashLevel = gMaxFlashLevel; } -void sub_8053CE4(s32 a1) +void Overworld_SetFlashLevel(s32 flashLevel) { - if (a1 < 0 || a1 > gUnknown_0839ACE8) - a1 = 0; - gSaveBlock1.flashUsed = a1; + if (flashLevel < 0 || flashLevel > gMaxFlashLevel) + flashLevel = 0; + gSaveBlock1.flashLevel = flashLevel; } -u8 sav1_get_flash_used_on_map(void) +u8 Overworld_GetFlashLevel(void) { - return gSaveBlock1.flashUsed; + return gSaveBlock1.flashLevel; } void sub_8053D14(u16 mapDataId) @@ -708,60 +790,63 @@ void sub_8053D14(u16 mapDataId) gMapHeader.mapData = get_mapdata_header(); } -bool16 sub_8053D30(struct WarpData *warp) +static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) { if (!FlagGet(SYS_WEATHER_CTRL)) return FALSE; - if (warp->mapGroup != 0) - return FALSE; - switch (warp->mapNum) + if (warp->mapGroup == 0) { - case 5: - case 6: - case 7: - case 8: - return TRUE; - case 39: - case 40: - case 41: - case 42: - case 43: - return TRUE; + switch (warp->mapNum) + { + case MAP_ID_LILYCOVE_CITY: + case MAP_ID_MOSSDEEP_CITY: + case MAP_ID_SOOTOPOLIS_CITY: + case MAP_ID_EVER_GRANDE_CITY: + return TRUE; + case MAP_ID_ROUTE124: + case MAP_ID_ROUTE125: + case MAP_ID_ROUTE126: + case MAP_ID_ROUTE127: + case MAP_ID_ROUTE128: + return TRUE; + } } return FALSE; } -bool16 sub_8053D6C(struct WarpData *warp) +static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) { - if (VarGet(0x40B3)) + if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED)) return FALSE; - if (warp->mapGroup != 32) + if (warp->mapGroup != MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F) return FALSE; - if (warp->mapNum == 0 || warp->mapNum == 1) + if (warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F + || warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F) return TRUE; return FALSE; } -u16 sub_8053D9C(struct WarpData *warp) +static u16 GetLocationMusic(struct WarpData *warp) { - if (sub_8053D30(warp) == TRUE) + if (ShouldLegendaryMusicPlayAtLocation(warp) == TRUE) return LEGENDARY_MUSIC; - else if (sub_8053D6C(warp) == TRUE) + else if (IsInfiltratedWeatherInstitute(warp) == TRUE) return BGM_TOZAN; else - return get_mapheader_by_bank_and_number(warp->mapGroup, warp->mapNum)->music; + return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music; } -u16 sav1_map_get_music(void) +u16 GetCurrLocationDefaultMusic(void) { u16 music; - if (gSaveBlock1.location.mapGroup == 0 - && gSaveBlock1.location.mapNum == 26 + // Play the desert music only when the sandstorm is active on Route 111. + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE111 + && gSaveBlock1.location.mapNum == MAP_ID_ROUTE111 && GetSav1Weather() == 8) return BGM_ASHROAD; - music = sub_8053D9C(&gSaveBlock1.location); + music = GetLocationMusic(&gSaveBlock1.location); if (music != 0x7FFF) { return music; @@ -775,36 +860,37 @@ u16 sav1_map_get_music(void) } } -u16 warp1_target_get_music(void) +u16 GetWarpDestinationMusic(void) { - u16 music = sub_8053D9C(&gUnknown_020297F8); + u16 music = GetLocationMusic(&gWarpDestination); if (music != 0x7FFF) { return music; } else { - if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 2) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_MAUVILLE_CITY + && gSaveBlock1.location.mapNum == MAP_ID_MAUVILLE_CITY) return BGM_DOORO_X1; else return BGM_GRANROAD; } } -void call_map_music_set_to_zero(void) +void Overworld_ResetMapMusic(void) { ResetMapMusic(); } -void sub_8053E90(void) +void Overworld_PlaySpecialMapMusic(void) { - u16 music = sav1_map_get_music(); + u16 music = GetCurrLocationDefaultMusic(); if (music != LEGENDARY_MUSIC) { - if (gSaveBlock1.battleMusic) - music = gSaveBlock1.battleMusic; - else if (sav1_map_get_light_level() == 5) + if (gSaveBlock1.savedMusic) + music = gSaveBlock1.savedMusic; + else if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER) music = BGM_DEEPDEEP; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) music = BGM_NAMINORI; @@ -814,21 +900,21 @@ void sub_8053E90(void) PlayNewMapMusic(music); } -void sav1_set_battle_music_maybe(u16 songNum) +void Overworld_SetSavedMusic(u16 songNum) { - gSaveBlock1.battleMusic = songNum; + gSaveBlock1.savedMusic = songNum; } -void sav1_reset_battle_music_maybe(void) +void Overworld_ClearSavedMusic(void) { - gSaveBlock1.battleMusic = 0; + gSaveBlock1.savedMusic = 0; } void sub_8053F0C(void) { if (FlagGet(SPECIAL_FLAG_1) != TRUE) { - u16 newMusic = warp1_target_get_music(); + u16 newMusic = GetWarpDestinationMusic(); u16 currentMusic = GetCurrentMapMusic(); if (newMusic != LEGENDARY_MUSIC) { @@ -847,24 +933,24 @@ void sub_8053F0C(void) } } -void sub_8053F84(void) +void Overworld_ChangeMusicToDefault(void) { u16 currentMusic = GetCurrentMapMusic(); - if (currentMusic != sav1_map_get_music()) - FadeOutAndPlayNewMapMusic(sav1_map_get_music(), 8); + if (currentMusic != GetCurrLocationDefaultMusic()) + FadeOutAndPlayNewMapMusic(GetCurrLocationDefaultMusic(), 8); } -void sub_8053FB0(u16 music) +void Overworld_ChangeMusicTo(u16 newMusic) { u16 currentMusic = GetCurrentMapMusic(); - if (currentMusic != music && currentMusic != LEGENDARY_MUSIC) - FadeOutAndPlayNewMapMusic(music, 8); + if (currentMusic != newMusic && currentMusic != LEGENDARY_MUSIC) + FadeOutAndPlayNewMapMusic(newMusic, 8); } -u8 is_warp1_light_level_8_or_9(void) +u8 GetMapMusicFadeoutSpeed(void) { struct MapHeader *mapHeader = warp1_get_mapheader(); - if (is_light_level_8_or_9(mapHeader->mapType) == TRUE) + if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE) return 2; else return 4; @@ -872,10 +958,10 @@ u8 is_warp1_light_level_8_or_9(void) void sub_8053FF8(void) { - u16 music = warp1_target_get_music(); + u16 music = GetWarpDestinationMusic(); if (FlagGet(SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic()) { - u8 speed = is_warp1_light_level_8_or_9(); + u8 speed = GetMapMusicFadeoutSpeed(); FadeOutMapMusic(speed); } } @@ -885,48 +971,50 @@ bool8 sub_8054034(void) return IsNotWaitingForBGMStop(); } -void sub_8054044(void) +void Overworld_FadeOutMapMusic(void) { FadeOutMapMusic(4); } -void sub_8054050(void) +static void PlayAmbientCry(void) { s16 x, y; - PlayerGetDestCoords((u16 *)&x, (u16 *)&y); - if (gUnknown_02029816 != TRUE - || MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) - { - s8 pan = (Random() % 88) + 212; - s8 volume = (Random() % 30) + 50; - PlayCry2(gUnknown_02029814, pan, volume, 1); - } + s8 pan; + s8 volume; + + PlayerGetDestCoords(&x, &y); + if (sIsAmbientCryWaterMon == TRUE + && !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) + return; + pan = (Random() % 88) + 212; + volume = (Random() % 30) + 50; + PlayCry2(sAmbientCrySpecies, pan, volume, 1); } -void sub_80540D0(s16 *a1, u16 *a2) +void UpdateAmbientCry(s16 *state, u16 *delayCounter) { - switch (*a1) + switch (*state) { case 0: - if (!gUnknown_02029814) - *a1 = 4; + if (sAmbientCrySpecies == SPECIES_NONE) + *state = 4; else - *a1 = 1; + *state = 1; break; case 1: - *a2 = (Random() % 2400) + 1200; - *a1 = 3; + *delayCounter = (Random() % 2400) + 1200; + *state = 3; break; case 2: - *a2 = (Random() % 1200) + 1200; - *a1 = 3; + *delayCounter = (Random() % 1200) + 1200; + *state = 3; break; case 3: - (*a2)--; - if (*a2 == 0) + (*delayCounter)--; + if (*delayCounter == 0) { - sub_8054050(); - *a1 = 2; + PlayAmbientCry(); + *state = 2; } break; case 4: @@ -934,58 +1022,70 @@ void sub_80540D0(s16 *a1, u16 *a2) } } -void sub_8054164(void) +void ChooseAmbientCrySpecies(void) { - if ((gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 45) && !IsMirageIslandPresent()) + if ((gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE130 + && gSaveBlock1.location.mapNum == MAP_ID_ROUTE130) + && !IsMirageIslandPresent()) { - gUnknown_02029816 = TRUE; - gUnknown_02029814 = GetMirageIslandMon(); + // Only play water pokemon cries on this route + // when Mirage Island is not present + sIsAmbientCryWaterMon = TRUE; + sAmbientCrySpecies = GetLocalWaterMon(); } else { - gUnknown_02029814 = GetLocalWildMon(&gUnknown_02029816); + sAmbientCrySpecies = GetLocalWildMon(&sIsAmbientCryWaterMon); } } -u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum) +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum) { - return get_mapheader_by_bank_and_number(mapGroup, mapNum)->mapType; + return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->mapType; } -u8 get_map_light_level_from_warp(struct WarpData *warp) +u8 GetMapTypeByWarpData(struct WarpData *warp) { - return get_map_light_level_by_bank_and_number(warp->mapGroup, warp->mapNum); + return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum); } -u8 sav1_map_get_light_level(void) +u8 Overworld_GetMapTypeOfSaveblockLocation(void) { - return get_map_light_level_from_warp(&gSaveBlock1.location); + return GetMapTypeByWarpData(&gSaveBlock1.location); } -u8 get_map_light_from_warp0(void) +u8 get_map_type_from_warp0(void) { - return get_map_light_level_from_warp(&gUnknown_020297F0); + return GetMapTypeByWarpData(&gUnknown_020297F0); } -bool8 is_light_level_1_2_3_5_or_6(u8 a1) +bool8 is_map_type_1_2_3_5_or_6(u8 mapType) { - if (a1 == 3 || a1 == 1 || a1 == 5 || a1 == 2 || a1 == 6) + if (mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_UNDERWATER + || mapType == MAP_TYPE_CITY + || mapType == MAP_TYPE_6) return TRUE; else return FALSE; } -bool8 is_light_level_1_2_3_or_6(u8 a1) +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType) { - if (a1 == 3 || a1 == 1 || a1 == 6 || a1 == 2) + if (mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_6 + || mapType == MAP_TYPE_CITY) return TRUE; else return FALSE; } -bool8 is_light_level_8_or_9(u8 a1) +bool8 Overworld_MapTypeIsIndoors(u8 mapType) { - if (a1 == 8 || a1 == 9) + if (mapType == MAP_TYPE_INDOOR + || mapType == MAP_TYPE_SECRET_BASE) return TRUE; else return FALSE; @@ -993,17 +1093,17 @@ bool8 is_light_level_8_or_9(u8 a1) u8 unref_sub_8054260(void) { - return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId; + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId; } u8 sav1_map_get_name(void) { - return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId; + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId; } u8 sav1_map_get_battletype(void) { - return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType; + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType; } void ResetSafariZoneFlag_(void) @@ -1046,7 +1146,7 @@ void c1_overworld(void) c1_overworld_normal(gMain.newKeys, gMain.heldKeys); } -void c2_overworld_basic(void) +void OverworldBasic(void) { ScriptContext2_RunScript(); RunTasks(); @@ -1058,9 +1158,10 @@ void c2_overworld_basic(void) sub_8072EDC(); } -void sub_8054398(void) +// This CB2 is used when starting +void CB2_OverworldBasic(void) { - c2_overworld_basic(); + OverworldBasic(); } void c2_overworld(void) @@ -1068,7 +1169,7 @@ void c2_overworld(void) int fading = (gPaletteFade.active != 0); if (fading) SetVBlankCallback(NULL); - c2_overworld_basic(); + OverworldBasic(); if (fading) SetFieldVBlankCallback(); } @@ -1085,7 +1186,7 @@ void sub_80543DC(u16 (*a1)(u32)) void sub_80543E8(void) { - if (gFieldCallback) + if (gFieldCallback != NULL) gFieldCallback(); else mapldr_default(); @@ -1265,8 +1366,8 @@ void CB2_ContinueSavedGame(void) FieldClearVBlankHBlankCallbacks(); StopMapMusic(); ResetSafariZoneFlag_(); - sub_805338C(); - sub_8053198(); + LoadSaveblockMapHeader(); + LoadSaveblockMapObjScripts(); UnfreezeMapObjects(); DoTimeBasedEvents(); sub_805308C(); @@ -1317,11 +1418,11 @@ void VBlankCB_Field(void) void sub_8054814(void) { - u8 val = sav1_get_flash_used_on_map(); + u8 val = Overworld_GetFlashLevel(); if (val) { sub_80815E0(val); - sub_80895F8(gUnknown_08216694[0], gUnknown_08216694[1], gUnknown_08216694[2]); + sub_80895F8(gUnknown_08216694); } } @@ -1886,27 +1987,27 @@ void sub_8055280(u16 a1) u16 sub_80552B0(u32 a1) { - if (gMain.heldKeys & 0x40) + if (gMain.heldKeys & DPAD_UP) { return 19; } - else if (gMain.heldKeys & 0x80) + else if (gMain.heldKeys & DPAD_DOWN) { return 18; } - else if (gMain.heldKeys & 0x20) + else if (gMain.heldKeys & DPAD_LEFT) { return 20; } - else if (gMain.heldKeys & 0x10) + else if (gMain.heldKeys & DPAD_RIGHT) { return 21; } - else if (gMain.newKeys & 8) + else if (gMain.newKeys & START_BUTTON) { return 24; } - else if (gMain.newKeys & 1) + else if (gMain.newKeys & A_BUTTON) { return 25; } @@ -2434,27 +2535,27 @@ void sub_8055BFC(u8 linkPlayerId, u8 a2) } } -u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3); } -u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { return 1; } -u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3); } -u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { return 0; } -u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { s16 x, y; @@ -2474,18 +2575,18 @@ u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *m } } -u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19); return 0; } -void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) +static void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) { linkPlayerMapObj->mode = 0; } -void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) +static void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) { mapObj->mapobj_unk_21--; linkPlayerMapObj->mode = 1; diff --git a/src/party_menu.c b/src/field/party_menu.c index 1fcd2cdda..39477e293 100644 --- a/src/party_menu.c +++ b/src/field/party_menu.c @@ -33,15 +33,6 @@ #include "species.h" #include "party_menu.h" -#define DATA_COUNT (6) - -struct Unk2001000 -{ - u8 unk0; - u8 unk1; - u8 unk2; -}; - struct Unk201C000 { /*0x00*/ struct Pokemon *pokemon; @@ -68,8 +59,6 @@ struct UnknownStruct5 u16 *unk4; }; -extern u8 ewram[]; -#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000)) #define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) #define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000)) diff --git a/src/player_pc.c b/src/field/player_pc.c index 6d52c560a..83e6dd221 100644 --- a/src/player_pc.c +++ b/src/field/player_pc.c @@ -18,7 +18,7 @@ #include "songs.h" #include "name_string_util.h" #include "mail.h" -#include "rom4.h" +#include "overworld.h" #include "player_pc.h" extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16); @@ -106,7 +106,7 @@ static const u8 *const gPCText_OptionDescList[] = gMenuText_GoBackToPrev }; -static const struct MenuAction2 gPCText_PlayerPCOptionsText[] = +static const struct MenuAction2 sPlayerPCMenuActions[] = { { SecretBaseText_ItemStorage, PlayerPC_ItemStorage }, { gPCText_Mailbox, PlayerPC_Mailbox }, @@ -226,7 +226,7 @@ void PlayerPC(void) static void InitPlayerPCMenu(u8 taskId) { MenuDrawTextWindow(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); - PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, (struct MenuAction *)gPCText_PlayerPCOptionsText, gPcItemMenuOptionOrder); + PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder); InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9); TASK.FUNC = PlayerPCProcessMenuInput; } @@ -247,13 +247,13 @@ static void PlayerPCProcessMenuInput(u8 taskId) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - gPCText_PlayerPCOptionsText[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId); + sPlayerPCMenuActions[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId); } else if (gMain.newKeys & B_BUTTON) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - gPCText_PlayerPCOptionsText[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT. + sPlayerPCMenuActions[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT. } } diff --git a/src/pokeblock.c b/src/field/pokeblock.c index 775280f6e..34f4ffa35 100644 --- a/src/pokeblock.c +++ b/src/field/pokeblock.c @@ -1,9 +1,9 @@ // -// Created by scott on 6/27/2017. + // #include "global.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "script.h" #include "strings.h" @@ -25,7 +25,6 @@ #include "sound.h" #include "songs.h" #include "safari_zone.h" -#include "use_pokeblock.h" #include "event_data.h" #include "pokeblock.h" @@ -379,7 +378,7 @@ static bool8 sub_810B998(void) ewram[0x1ffff]++; break; case 1: - sub_800D238(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); + LZDecompressWram(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); ewram[0x1ffff]++; break; case 2: @@ -582,7 +581,7 @@ static void sub_810BDAC(bool8 flag) v0 = ((i % 3) << 6) + 0x1a1 + (i / 3) * 6; if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { - if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0) + if (GetPokeblockData(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0) { gBGTilemapBuffers[2][v0] = (i << 12) + 23; gBGTilemapBuffers[2][v0 + 32] = (i << 12) + 24; @@ -817,7 +816,7 @@ static void sub_810C368(u8 taskId) sub_80F98A4(1); BasicInitMenuWindow(&gWindowConfig_81E6E50); MenuDrawTextWindow(7, v0 + 4, 13, 11); - PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, (const struct MenuAction *)gUnknown_083F7EF4, gUnknown_03000758); + PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); gScriptItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; gTasks[taskId].func = sub_810C40C; @@ -894,7 +893,7 @@ static void sub_810C5EC(u8 taskId) static void sub_810C610(u8 taskId) { MenuZeroFillWindowRect(7, 6, 13, 11); - sub_810CA6C((gUnknown_02039248.unk0 + gUnknown_02039248.unk1)); + PokeblockClearIfExists((gUnknown_02039248.unk0 + gUnknown_02039248.unk1)); StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0); sub_810BC98(); @@ -942,9 +941,9 @@ static void sub_810C748(u8 taskId) static void sub_810C788(u8 taskId) { - s16 v0 = sub_810CAE4(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); + s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); - sub_810CA6C(gScriptItemId); + PokeblockClearIfExists(gScriptItemId); gScriptItemId = gSaveBlock1.pokeblocks[gScriptItemId].color << 8; if (v0 == 0) { @@ -967,7 +966,7 @@ static void sub_810C854(u8 taskId) SafariZoneActivatePokeblockFeeder(gScriptItemId); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); gScriptResult = gScriptItemId; - sub_810CA6C(gScriptItemId); + PokeblockClearIfExists(gScriptItemId); BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C2C8; } @@ -1024,10 +1023,10 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock) { u8 contestStat; u8 maxRating; - u8 rating = sub_810CA9C(pokeblock, 1); + u8 rating = GetPokeblockData(pokeblock, 1); for (contestStat=1; contestStat<5; contestStat++) { - maxRating = sub_810CA9C(pokeblock, contestStat + 1); + maxRating = GetPokeblockData(pokeblock, contestStat + 1); if (rating < maxRating) { rating = maxRating; @@ -1038,7 +1037,7 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock) u8 sub_810C9E8(struct Pokeblock *pokeblock) { - u8 feel = sub_810CA9C(pokeblock, 6); + u8 feel = GetPokeblockData(pokeblock, 6); if (feel > 99) feel = 99; return feel; @@ -1068,7 +1067,7 @@ bool8 sub_810CA34(struct Pokeblock *pokeblock) return TRUE; } -bool8 sub_810CA6C(u8 pokeblockIdx) +bool8 PokeblockClearIfExists(u8 pokeblockIdx) { if (gSaveBlock1.pokeblocks[pokeblockIdx].color == 0) { @@ -1078,33 +1077,33 @@ bool8 sub_810CA6C(u8 pokeblockIdx) return TRUE; } -s16 sub_810CA9C(const struct Pokeblock *pokeblock, u8 field) +s16 GetPokeblockData(const struct Pokeblock *pokeblock, u8 field) { - if (field == 0) + if (field == PBLOCK_COLOR) return pokeblock->color; - if (field == 1) + if (field == PBLOCK_SPICY) return pokeblock->spicy; - if (field == 2) + if (field == PBLOCK_DRY) return pokeblock->dry; - if (field == 3) + if (field == PBLOCK_SWEET) return pokeblock->sweet; - if (field == 4) + if (field == PBLOCK_BITTER) return pokeblock->bitter; - if (field == 5) + if (field == PBLOCK_SOUR) return pokeblock->sour; - if (field == 6) + if (field == PBLOCK_FEEL) return pokeblock->feel; return 0; } -s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock) +s16 PokeblockGetGain(u8 nature, const struct Pokeblock *pokeblock) { u8 flavor; s16 curGain; s16 totalGain = 0; for (flavor=0; flavor<5; flavor++) { - curGain = sub_810CA9C(pokeblock, flavor + 1); + curGain = GetPokeblockData(pokeblock, flavor + 1); if (curGain > 0) { totalGain += curGain * gPokeblockFlavorCompatibilityTable[5 * nature + flavor]; @@ -1113,9 +1112,9 @@ s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock) return totalGain; } -void sub_810CB44(struct Pokeblock *pokeblock, u8 *dest) +void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest) { - u8 color = sub_810CA9C(pokeblock, 0); + u8 color = GetPokeblockData(pokeblock, PBLOCK_COLOR); StringCopy(dest, gPokeblockNames[color]); } @@ -1124,7 +1123,7 @@ bool8 sub_810CB68(u8 nature, u8 *dest) u8 flavor; for (flavor=0; flavor<5; flavor++) { - if (sub_810CAE4(nature, &gUnknown_083F7F9C[flavor]) > 0) + if (PokeblockGetGain(nature, &gUnknown_083F7F9C[flavor]) > 0) { StringCopy(dest, gPokeblockNames[flavor + 1]); return TRUE; diff --git a/src/pokenav.c b/src/field/pokenav.c index 84ed7b14b..21d7bb4e3 100644 --- a/src/pokenav.c +++ b/src/field/pokenav.c @@ -38,3 +38,5 @@ void sub_80F700C(u8 *arg0, u16 arg1) { ptr[2] = 0x80; ptr[3] = 0xFF; } + +IWRAM_DATA MainCallback gUnknown_03000744; diff --git a/src/region_map.c b/src/field/region_map.c index 076dfecec..bfd2729c2 100644 --- a/src/region_map.c +++ b/src/field/region_map.c @@ -9,7 +9,7 @@ #include "palette.h" #include "pokemon_menu.h" #include "region_map.h" -#include "rom4.h" +#include "overworld.h" #include "secret_base.h" #include "songs.h" #include "sprite.h" @@ -140,12 +140,12 @@ static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map static const u8 sRegionMapBkgnd_ImageLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz"); static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz"); -#include "data/region_map_layout.h" +#include "../data/region_map_layout.h" #if ENGLISH -#include "data/region_map_names_en.h" +#include "../data/region_map_names_en.h" #elif GERMAN -#include "data/region_map_names_de.h" +#include "../data/region_map_names_de.h" #endif struct RegionMapLocation @@ -714,7 +714,7 @@ static void InitializeCursorPosition(void) return; } - switch (get_map_light_level_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1) + switch (GetMapTypeByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1) { default: case 0: @@ -733,7 +733,7 @@ static void InitializeCursorPosition(void) break; case 3: case 6: - mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapData->width; @@ -742,7 +742,7 @@ static void InitializeCursorPosition(void) y = gSaveBlock1.warp4.y; break; case 8: - mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapData->width; @@ -758,12 +758,12 @@ static void InitializeCursorPosition(void) if (gRegionMap->mapSecId != MAPSEC_UNK_0x57) { r4 = &gSaveBlock1.warp4; - mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum); } else { r4 = &gSaveBlock1.warp2; - mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; } gRegionMap->playerIsInCave = FALSE; @@ -850,7 +850,7 @@ static void sub_80FB600(void) default: case 0: { - struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum); + struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); u16 r1; gRegionMap->mapSecId = mapHeader->regionMapSectionId; diff --git a/src/roamer.c b/src/field/roamer.c index 948828d5e..948828d5e 100644 --- a/src/roamer.c +++ b/src/field/roamer.c diff --git a/src/rotating_gate.c b/src/field/rotating_gate.c index bb3c31dfc..e8ab7e1bf 100644 --- a/src/rotating_gate.c +++ b/src/field/rotating_gate.c @@ -12,11 +12,11 @@ #define ROTATING_GATE_PUZZLE_MAX 14 #define GATE_ARM_MAX_LENGTH 2 -#define GATE_ROTATION(rotationDirection, arm, longArm) \ +#define GATE_ROT(rotationDirection, arm, longArm) \ ((rotationDirection & 15) << 4) | ((arm & 7) << 1) | (longArm & 1) -#define GATE_ROTATION_CLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_CLOCKWISE, arm, longArm) -#define GATE_ROTATION_ANTICLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_ANTICLOCKWISE, arm, longArm) -#define GATE_ROTATION_NONE 255 +#define GATE_ROT_CW(arm, longArm) GATE_ROT(ROTATE_CLOCKWISE, arm, longArm) +#define GATE_ROT_ACW(arm, longArm) GATE_ROT(ROTATE_ANTICLOCKWISE, arm, longArm) +#define GATE_ROT_NONE 255 static void SpriteCallback_RotatingGate(struct Sprite *sprite); static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY); @@ -181,7 +181,8 @@ enum struct RotatingGatePuzzle { - struct Coords16 pos; + s16 x; + s16 y; u8 shape; u8 orientation; }; @@ -193,32 +194,34 @@ struct Coords8 }; // Fortree -static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] = { - { { 12, 5 }, GATE_SHAPE_L4, GATE_ORIENTATION_0 }, - { { 14, 7 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 }, - { { 16, 4 }, GATE_SHAPE_T2, GATE_ORIENTATION_90 }, - { { 15, 14 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 }, - { { 18, 13 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, - { { 8, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, - { { 16, 20 }, GATE_SHAPE_T4, GATE_ORIENTATION_90 }, +static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] = +{ + {12, 5, GATE_SHAPE_L4, GATE_ORIENTATION_0}, + {14, 7, GATE_SHAPE_L4, GATE_ORIENTATION_270}, + {16, 4, GATE_SHAPE_T2, GATE_ORIENTATION_90}, + {15, 14, GATE_SHAPE_L2, GATE_ORIENTATION_0}, + {18, 13, GATE_SHAPE_T1, GATE_ORIENTATION_180}, + { 8, 20, GATE_SHAPE_T1, GATE_ORIENTATION_180}, + {16, 20, GATE_SHAPE_T4, GATE_ORIENTATION_90}, }; // Trickhouse -static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] = { - { { 13, 3 }, GATE_SHAPE_T1, GATE_ORIENTATION_270 }, - { { 12, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, - { { 3, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, - { { 3, 9 }, GATE_SHAPE_T2, GATE_ORIENTATION_270 }, - { { 8, 8 }, GATE_SHAPE_L1, GATE_ORIENTATION_90 }, - { { 2, 12 }, GATE_SHAPE_T3, GATE_ORIENTATION_180 }, - { { 9, 13 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 }, - { { 3, 14 }, GATE_SHAPE_L3, GATE_ORIENTATION_90 }, - { { 9, 15 }, GATE_SHAPE_L4, GATE_ORIENTATION_180 }, - { { 3, 18 }, GATE_SHAPE_T2, GATE_ORIENTATION_180 }, - { { 2, 19 }, GATE_SHAPE_T1, GATE_ORIENTATION_0 }, - { { 5, 21 }, GATE_SHAPE_L1, GATE_ORIENTATION_0 }, - { { 9, 19 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 }, - { { 12, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_90 }, +static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] = +{ + {13, 3, GATE_SHAPE_T1, GATE_ORIENTATION_270}, + {12, 6, GATE_SHAPE_T1, GATE_ORIENTATION_180}, + { 3, 6, GATE_SHAPE_T1, GATE_ORIENTATION_180}, + { 3, 9, GATE_SHAPE_T2, GATE_ORIENTATION_270}, + { 8, 8, GATE_SHAPE_L1, GATE_ORIENTATION_90}, + { 2, 12, GATE_SHAPE_T3, GATE_ORIENTATION_180}, + { 9, 13, GATE_SHAPE_L2, GATE_ORIENTATION_0}, + { 3, 14, GATE_SHAPE_L3, GATE_ORIENTATION_90}, + { 9, 15, GATE_SHAPE_L4, GATE_ORIENTATION_180}, + { 3, 18, GATE_SHAPE_T2, GATE_ORIENTATION_180}, + { 2, 19, GATE_SHAPE_T1, GATE_ORIENTATION_0}, + { 5, 21, GATE_SHAPE_L1, GATE_ORIENTATION_0}, + { 9, 19, GATE_SHAPE_L4, GATE_ORIENTATION_270}, + {12, 20, GATE_SHAPE_T1, GATE_ORIENTATION_90}, }; static const u8 sRotatingGateTiles_1[] = INCBIN_U8("graphics/rotating_gates/1.4bpp"); @@ -230,7 +233,8 @@ static const u8 sRotatingGateTiles_7[] = INCBIN_U8("graphics/rotating_gates/7.4b static const u8 sRotatingGateTiles_0[] = INCBIN_U8("graphics/rotating_gates/0.4bpp"); static const u8 sRotatingGateTiles_4[] = INCBIN_U8("graphics/rotating_gates/4.4bpp"); -static const struct OamData sOamData_RotatingGateLarge = { +static const struct OamData sOamData_RotatingGateLarge = +{ .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = 0, @@ -246,7 +250,8 @@ static const struct OamData sOamData_RotatingGateLarge = { .affineParam = 0, }; -static const struct OamData sOamData_RotatingGateRegular = { +static const struct OamData sOamData_RotatingGateRegular = +{ .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = 0, @@ -262,145 +267,178 @@ static const struct OamData sOamData_RotatingGateRegular = { .affineParam = 0, }; -static const struct SpriteSheet sRotatingGatesGraphicsTable[] = { - { sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1 }, - { sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2 }, - { sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3 }, - { sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4 }, - { sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1 }, - { sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2 }, - { sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3 }, - { sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4 }, - { NULL }, +static const struct SpriteSheet sRotatingGatesGraphicsTable[] = +{ + {sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1}, + {sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2}, + {sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3}, + {sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4}, + {sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1}, + {sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2}, + {sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3}, + {sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4}, + {NULL}, }; -static const union AnimCmd sSpriteAnim_RotatingGateLarge[] = { - ANIMCMD_FRAME(0, 0), ANIMCMD_END, +static const union AnimCmd sSpriteAnim_RotatingGateLarge[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, }; -static const union AnimCmd sSpriteAnim_RotatingGateRegular[] = { +static const union AnimCmd sSpriteAnim_RotatingGateRegular[] = +{ ANIMCMD_FRAME(0, 0), ANIMCMD_END, }; -static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] = { +static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] = +{ sSpriteAnim_RotatingGateLarge, }; -static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] = { +static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] = +{ sSpriteAnim_RotatingGateRegular, }; -static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_JUMP(0), +static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_JUMP(0), +static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), + AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_JUMP(0), +static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), + AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_JUMP(0), +static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), + AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), + AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = { +static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = +{ sSpriteAffineAnim_Rotated0, sSpriteAffineAnim_Rotated90, sSpriteAffineAnim_Rotated180, @@ -423,7 +461,8 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = sSpriteAffineAnim_RotatingClockwise270to360Faster, }; -static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = { +static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = +{ .tileTag = ROTATING_GATE_TILE_TAG, .paletteTag = 0xFFFF, .oam = &sOamData_RotatingGateLarge, @@ -433,7 +472,8 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = { .callback = SpriteCallback_RotatingGate, }; -static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { +static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = +{ .tileTag = ROTATING_GATE_TILE_TAG, .paletteTag = 0xFFFF, .oam = &sOamData_RotatingGateRegular, @@ -449,62 +489,36 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { // given direction. This information is compared against the gate // "arm" layout to see if there is an arm at the position in order to // produce the final rotation. -static const u8 sRotatingGate_RotationInfoNorth[4][4] = { - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, - { GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 1), - GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 0), - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 0), - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 1) }, - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, +static const u8 sRotatingGate_RotationInfoNorth[4 * 4] = +{ + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_CW(GATE_ARM_WEST, 1), GATE_ROT_CW(GATE_ARM_WEST, 0), GATE_ROT_ACW(GATE_ARM_EAST, 0), GATE_ROT_ACW(GATE_ARM_EAST, 1), + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, }; -static const u8 sRotatingGate_RotationInfoSouth[4][4] = { - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, - { GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 1), - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 0), - GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 0), - GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 1) }, - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, +static const u8 sRotatingGate_RotationInfoSouth[4 * 4] = +{ + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_ACW(GATE_ARM_WEST, 1), GATE_ROT_ACW(GATE_ARM_WEST, 0), GATE_ROT_CW(GATE_ARM_EAST, 0), GATE_ROT_CW(GATE_ARM_EAST, 1), + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, }; -static const u8 sRotatingGate_RotationInfoWest[4][4] = { - { GATE_ROTATION_NONE, - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 1), - GATE_ROTATION_NONE, - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 0), - GATE_ROTATION_NONE, - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 0), - GATE_ROTATION_NONE, - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 1), - GATE_ROTATION_NONE, - GATE_ROTATION_NONE }, +static const u8 sRotatingGate_RotationInfoWest[4 * 4] = +{ + GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_NORTH, 1), GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_NORTH, 0), GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_SOUTH, 0), GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_SOUTH, 1), GATE_ROT_NONE, GATE_ROT_NONE, }; -static const u8 sRotatingGate_RotationInfoEast[4][4] = { - { GATE_ROTATION_NONE, - GATE_ROTATION_NONE, - GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 1), - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_NONE, - GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 0), - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_NONE, - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 0), - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_NONE, - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 1), - GATE_ROTATION_NONE }, +static const u8 sRotatingGate_RotationInfoEast[4 * 4] = +{ + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_NORTH, 1), GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_NORTH, 0), GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_SOUTH, 0), GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_SOUTH, 1), GATE_ROT_NONE, }; // These tables describe the relative coordinate positions the arms @@ -519,49 +533,86 @@ static const struct Coords8 sRotatingGate_ArmPositionsAntiClockwiseRotation[] = // Describes where the gates "arms" are in the order north, east, south, west. // These are adjusted using the current orientation to perform collision checking -static const u8 sRotatingGate_ArmLayout[][GATE_ARM_WEST + 1][GATE_ARM_MAX_LENGTH] = { +static const u8 sRotatingGate_ArmLayout[][4 * 2] = +{ // L-shape gates { - { 1, 0 }, { 1, 0 }, { 0, 0 }, { 0, 0 }, + 1, 0, + 1, 0, + 0, 0, + 0, 0, }, { - { 1, 1 }, { 1, 0 }, { 0, 0 }, { 0, 0 }, + 1, 1, + 1, 0, + 0, 0, + 0, 0, }, { - { 1, 0 }, { 1, 1 }, { 0, 0 }, { 0, 0 }, + 1, 0, + 1, 1, + 0, 0, + 0, 0, }, { - { 1, 1 }, { 1, 1 }, { 0, 0 }, { 0, 0 }, + 1, 1, + 1, 1, + 0, 0, + 0, 0, }, // T-shape gates { - { 1, 0 }, { 1, 0 }, { 1, 0 }, { 0, 0 }, + 1, 0, + 1, 0, + 1, 0, + 0, 0, }, { - { 1, 1 }, { 1, 0 }, { 1, 0 }, { 0, 0 }, + 1, 1, + 1, 0, + 1, 0, + 0, 0, }, { - { 1, 0 }, { 1, 1 }, { 1, 0 }, { 0, 0 }, + 1, 0, + 1, 1, + 1, 0, + 0, 0, }, { - { 1, 0 }, { 1, 0 }, { 1, 1 }, { 0, 0 }, + 1, 0, + 1, 0, + 1, 1, + 0, 0, }, // Unused T-shape gates // These have 2-3 long arms and cannot actually be used anywhere // since configuration for them is missing from the other tables. { - { 1, 1 }, { 1, 1 }, { 1, 0 }, { 0, 0 }, + 1, 1, + 1, 1, + 1, 0, + 0, 0, }, { - { 1, 1 }, { 1, 0 }, { 1, 1 }, { 0, 0 }, + 1, 1, + 1, 0, + 1, 1, + 0, 0, }, { - { 1, 0 }, { 1, 1 }, { 1, 1 }, { 0, 0 }, + 1, 0, + 1, 1, + 1, 1, + 0, 0, }, { - { 1, 1 }, { 1, 1 }, { 1, 1 }, { 0, 0 }, + 1, 1, + 1, 1, + 1, 1, + 0, 0, }, }; @@ -675,8 +726,8 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - x3 = gRotatingGate_PuzzleConfig[i].pos.x + 7; - y3 = gRotatingGate_PuzzleConfig[i].pos.y + 7; + x3 = gRotatingGate_PuzzleConfig[i].x + 7; + y3 = gRotatingGate_PuzzleConfig[i].y + 7; if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) @@ -697,24 +748,18 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) gate = &gRotatingGate_PuzzleConfig[gateId]; if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1) - { template = sSpriteTemplate_RotatingGateRegular; - } else - { template = sSpriteTemplate_RotatingGateLarge; - } template.tileTag = gate->shape + ROTATING_GATE_TILE_TAG; spriteId = CreateSprite(&template, 0, 0, 0x94); if (spriteId == MAX_SPRITES) - { return MAX_SPRITES; - } - x = gate->pos.x + 7; - y = gate->pos.y + 7; + x = gate->x + 7; + y = gate->y + 7; sprite = &gSprites[spriteId]; sprite->data0 = gateId; @@ -769,7 +814,7 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite) u16 y; s16 y2; - sprite->invisible = 0; + sprite->invisible = FALSE; x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX; y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY; @@ -778,12 +823,12 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite) if ((s16)x > DISPLAY_WIDTH + 0x10 - 1 || x2 < -0x10) { - sprite->invisible = 1; + sprite->invisible = TRUE; } if ((s16)y > DISPLAY_HEIGHT + 0x10 - 1 || y2 < -0x10) { - sprite->invisible = 1; + sprite->invisible = TRUE; } } @@ -811,8 +856,8 @@ static void RotatingGate_DestroyGatesOutsideViewport(void) for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - xGate = gRotatingGate_PuzzleConfig[i].pos.x + 7; - yGate = gRotatingGate_PuzzleConfig[i].pos.y + 7; + xGate = gRotatingGate_PuzzleConfig[i].x + 7; + yGate = gRotatingGate_PuzzleConfig[i].y + 7; if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) continue; @@ -851,8 +896,8 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) orientation = RotatingGate_GetGateOrientation(gateId); shape = gRotatingGate_PuzzleConfig[gateId].shape; - x = gRotatingGate_PuzzleConfig[gateId].pos.x + 7; - y = gRotatingGate_PuzzleConfig[gateId].pos.y + 7; + x = gRotatingGate_PuzzleConfig[gateId].x + 7; + y = gRotatingGate_PuzzleConfig[gateId].y + 7; // Loop through the gate's "arms" clockwise (north, south, east, west) for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++) @@ -878,118 +923,119 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) return 1; } #else -__attribute__((naked)) static int RotatingGate_CanRotate(u8 a, int puzzleType) +__attribute__((naked)) +static int RotatingGate_CanRotate(u8 a, int puzzleType) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r1, 0x1\n\ - bne _080C7EAC\n\ - ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\ - mov r10, r0\n\ - b _080C7EB8\n\ - .align 2, 0\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r1, 0x1\n\ + bne _080C7EAC\n\ + ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\ + mov r10, r0\n\ + b _080C7EB8\n\ + .align 2, 0\n\ _080C7EA8: .4byte sRotatingGate_ArmPositionsAntiClockwiseRotation\n\ _080C7EAC:\n\ - cmp r1, 0x2\n\ - beq _080C7EB4\n\ + cmp r1, 0x2\n\ + beq _080C7EB4\n\ _080C7EB0:\n\ - movs r0, 0\n\ - b _080C7F48\n\ + movs r0, 0\n\ + b _080C7F48\n\ _080C7EB4:\n\ - ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\ - mov r10, r1\n\ + ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\ + mov r10, r1\n\ _080C7EB8:\n\ - adds r0, r4, 0\n\ - bl RotatingGate_GetGateOrientation\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp]\n\ - ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\ - ldr r1, [r0]\n\ - lsls r0, r4, 3\n\ - adds r0, r1\n\ - ldrb r2, [r0, 0x4]\n\ - ldrh r1, [r0]\n\ - adds r1, 0x7\n\ - ldrh r0, [r0, 0x2]\n\ - adds r0, 0x7\n\ - movs r3, 0\n\ - lsls r2, 3\n\ - str r2, [sp, 0x4]\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - mov r9, r1\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - mov r8, r0\n\ + adds r0, r4, 0\n\ + bl RotatingGate_GetGateOrientation\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp]\n\ + ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\ + ldr r1, [r0]\n\ + lsls r0, r4, 3\n\ + adds r0, r1\n\ + ldrb r2, [r0, 0x4]\n\ + ldrh r1, [r0]\n\ + adds r1, 0x7\n\ + ldrh r0, [r0, 0x2]\n\ + adds r0, 0x7\n\ + movs r3, 0\n\ + lsls r2, 3\n\ + str r2, [sp, 0x4]\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + mov r9, r1\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + mov r8, r0\n\ _080C7EE8:\n\ - movs r6, 0\n\ - ldr r2, [sp]\n\ - adds r7, r2, r3\n\ - lsls r0, r3, 1\n\ - adds r5, r7, 0\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1\n\ - ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\ - adds r4, r0, r2\n\ + movs r6, 0\n\ + ldr r2, [sp]\n\ + adds r7, r2, r3\n\ + lsls r0, r3, 1\n\ + adds r5, r7, 0\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1\n\ + ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\ + adds r4, r0, r2\n\ _080C7EFA:\n\ - adds r0, r5, 0\n\ - cmp r5, 0\n\ - bge _080C7F02\n\ - adds r0, r7, 0x3\n\ + adds r0, r5, 0\n\ + cmp r5, 0\n\ + bge _080C7F02\n\ + adds r0, r7, 0x3\n\ _080C7F02:\n\ - asrs r0, 2\n\ - lsls r0, 2\n\ - subs r0, r5, r0\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - ldrb r0, [r4]\n\ - cmp r0, 0\n\ - beq _080C7F38\n\ - lsls r1, 2\n\ - add r1, r10\n\ - movs r0, 0\n\ - ldrsb r0, [r1, r0]\n\ - add r0, r9\n\ - ldrb r1, [r1, 0x1]\n\ - lsls r1, 24\n\ - asrs r1, 24\n\ - add r1, r8\n\ - str r3, [sp, 0x8]\n\ - bl MapGridIsImpassableAt\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r3, [sp, 0x8]\n\ - cmp r0, 0x1\n\ - beq _080C7EB0\n\ + asrs r0, 2\n\ + lsls r0, 2\n\ + subs r0, r5, r0\n\ + lsls r0, 1\n\ + adds r0, r6\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + beq _080C7F38\n\ + lsls r1, 2\n\ + add r1, r10\n\ + movs r0, 0\n\ + ldrsb r0, [r1, r0]\n\ + add r0, r9\n\ + ldrb r1, [r1, 0x1]\n\ + lsls r1, 24\n\ + asrs r1, 24\n\ + add r1, r8\n\ + str r3, [sp, 0x8]\n\ + bl MapGridIsImpassableAt\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r3, [sp, 0x8]\n\ + cmp r0, 0x1\n\ + beq _080C7EB0\n\ _080C7F38:\n\ - adds r4, 0x1\n\ - adds r6, 0x1\n\ - cmp r6, 0x1\n\ - ble _080C7EFA\n\ - adds r3, 0x1\n\ - cmp r3, 0x3\n\ - ble _080C7EE8\n\ - movs r0, 0x1\n\ + adds r4, 0x1\n\ + adds r6, 0x1\n\ + cmp r6, 0x1\n\ + ble _080C7EFA\n\ + adds r3, 0x1\n\ + cmp r3, 0x3\n\ + ble _080C7EE8\n\ + movs r0, 0x1\n\ _080C7F48:\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ _080C7F58: .4byte sRotatingGate_ArmPositionsClockwiseRotation\n\ _080C7F5C: .4byte gRotatingGate_PuzzleConfig\n\ _080C7F60: .4byte sRotatingGate_ArmLayout\n\ @@ -997,7 +1043,6 @@ _080C7F60: .4byte sRotatingGate_ArmLayout\n\ } #endif -#ifdef NONMATCHING static int RotatingGate_HasArm(u8 gateId, u8 armInfo) { int isLongArm; @@ -1010,56 +1055,8 @@ static int RotatingGate_HasArm(u8 gateId, u8 armInfo) armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4; shape = gRotatingGate_PuzzleConfig[gateId].shape; - return sRotatingGate_ArmLayout[shape][armOrientation][isLongArm]; + return sRotatingGate_ArmLayout[shape][armOrientation * 2 + isLongArm]; } -#else -__attribute__((naked)) static int RotatingGate_HasArm(u8 a, u8 b) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - adds r4, r1, 0\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r6, r0, 0\n\ - lsls r4, 24\n\ - lsrs r5, r4, 24\n\ - lsrs r4, 25\n\ - movs r0, 0x1\n\ - ands r5, r0\n\ - adds r0, r6, 0\n\ - bl RotatingGate_GetGateOrientation\n\ - subs r4, r0\n\ - adds r1, r4, 0x4\n\ - adds r0, r1, 0\n\ - cmp r1, 0\n\ - bge _080C7F8A\n\ - adds r0, r4, 0x7\n\ -_080C7F8A:\n\ - asrs r0, 2\n\ - lsls r0, 2\n\ - subs r0, r1, r0\n\ - ldr r1, _080C7FB0 @ =gRotatingGate_PuzzleConfig\n\ - ldr r2, [r1]\n\ - lsls r1, r6, 3\n\ - adds r1, r2\n\ - ldrb r1, [r1, 0x4]\n\ - ldr r2, _080C7FB4 @ =sRotatingGate_ArmLayout\n\ - lsls r0, 24\n\ - asrs r0, 23\n\ - adds r0, r5\n\ - lsls r1, 3\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080C7FB0: .4byte gRotatingGate_PuzzleConfig\n\ -_080C7FB4: .4byte sRotatingGate_ArmLayout\n\ -.syntax divided\n"); -} -#endif static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirection) { @@ -1073,79 +1070,23 @@ static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirecti } } -#ifdef NONMATCHING static u8 RotatingGate_GetRotationInfo(u8 direction, s16 x, s16 y) { - register const u8(*ptr)[][4] asm("r3"); + register const u8 *ptr; if (direction == DIR_NORTH) - ptr = &sRotatingGate_RotationInfoNorth; + ptr = sRotatingGate_RotationInfoNorth; else if (direction == DIR_SOUTH) - ptr = &sRotatingGate_RotationInfoSouth; + ptr = sRotatingGate_RotationInfoSouth; else if (direction == DIR_WEST) - ptr = &sRotatingGate_RotationInfoWest; + ptr = sRotatingGate_RotationInfoWest; else if (direction == DIR_EAST) - ptr = &sRotatingGate_RotationInfoEast; + ptr = sRotatingGate_RotationInfoEast; else - return GATE_ROTATION_NONE; + return GATE_ROT_NONE; - return (*ptr)[y][x]; -} -#else -__attribute__((naked)) static u8 RotatingGate_GetRotationInfo(u8 a, s16 b, s16 c) -{ - asm(".syntax unified\n\ - push {lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r3, r0, 0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - cmp r0, 0x2\n\ - bne _080C8008\n\ - ldr r3, _080C8004 @ =sRotatingGate_RotationInfoNorth\n\ - b _080C802A\n\ - .align 2, 0\n\ -_080C8004: .4byte sRotatingGate_RotationInfoNorth\n\ -_080C8008:\n\ - cmp r0, 0x1\n\ - bne _080C8014\n\ - ldr r3, _080C8010 @ =sRotatingGate_RotationInfoSouth\n\ - b _080C802A\n\ - .align 2, 0\n\ -_080C8010: .4byte sRotatingGate_RotationInfoSouth\n\ -_080C8014:\n\ - cmp r0, 0x3\n\ - bne _080C8020\n\ - ldr r3, _080C801C @ =sRotatingGate_RotationInfoWest\n\ - b _080C802A\n\ - .align 2, 0\n\ -_080C801C: .4byte sRotatingGate_RotationInfoWest\n\ -_080C8020:\n\ - cmp r3, 0x4\n\ - beq _080C8028\n\ - movs r0, 0xFF\n\ - b _080C8038\n\ -_080C8028:\n\ - ldr r3, _080C803C @ =sRotatingGate_RotationInfoEast\n\ -_080C802A:\n\ - lsls r0, r2, 16\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - asrs r0, 14\n\ - adds r0, r1\n\ - adds r0, r3, r0\n\ - ldrb r0, [r0]\n\ -_080C8038:\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080C803C: .4byte sRotatingGate_RotationInfoEast\n\ -.syntax divided\n"); + return ptr[y * 4 + x]; } -#endif void RotatingGate_InitPuzzle(void) { @@ -1178,36 +1119,24 @@ void RotatingGate_InitPuzzleAndGraphics(void) bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) { int i; - s16 gateX; - s16 gateY; - register u32 rotationInfo asm("r0"); - int rotationDirection; - int armInfo; - s16 centerX; - s16 centerY; if (!GetCurrentMapRotatingGatePuzzleType()) - { - return 0; - } - + return FALSE; for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - gateX = gRotatingGate_PuzzleConfig[i].pos.x + 7; - gateY = gRotatingGate_PuzzleConfig[i].pos.y + 7; + s16 gateX = gRotatingGate_PuzzleConfig[i].x + 7; + s16 gateY = gRotatingGate_PuzzleConfig[i].y + 7; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { - centerX = x - gateX + 2; - centerY = y - gateY + 2; - rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY); + s16 centerX = x - gateX + 2; + s16 centerY = y - gateY + 2; + u8 rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY); - if (rotationInfo != GATE_ROTATION_NONE) + if (rotationInfo != GATE_ROT_NONE) { - rotationDirection = rotationInfo >> 4; - armInfo = rotationInfo & 0xF; - - asm("" ::"r"(armInfo)); + u8 rotationDirection = ((rotationInfo & 0xF0) >> 4); + u8 armInfo = rotationInfo & 0xF; if (RotatingGate_HasArm(i, armInfo)) { @@ -1215,14 +1144,12 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) { RotatingGate_TriggerRotationAnimation(i, rotationDirection); RotatingGate_RotateInDirection(i, rotationDirection); - return 0; + return FALSE; } - - return 1; + return TRUE; } } } } - - return 0; + return FALSE; } diff --git a/src/safari_zone.c b/src/field/safari_zone.c index a47c8e951..14fd1ddc4 100644 --- a/src/safari_zone.c +++ b/src/field/safari_zone.c @@ -4,7 +4,7 @@ #include "field_fadetransition.h" #include "field_player_avatar.h" #include "main.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "string_util.h" #include "text.h" @@ -51,7 +51,7 @@ void SetSafariZoneFlag(void) void ResetSafariZoneFlag(void) { - FlagReset(SYS_SAFARI_MODE); + FlagClear(SYS_SAFARI_MODE); } void EnterSafariMode(void) diff --git a/src/scrcmd.c b/src/field/scrcmd.c index 7d719371e..28584d4d0 100644 --- a/src/scrcmd.c +++ b/src/field/scrcmd.c @@ -31,7 +31,7 @@ #include "party_menu.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "script.h" #include "script_menu.h" @@ -50,11 +50,11 @@ typedef void (*NativeFunc)(void); extern u32 gUnknown_0202E8AC; static EWRAM_DATA u32 gUnknown_0202E8B0 = 0; -static EWRAM_DATA u16 gUnknown_0202E8B4 = 0; -static EWRAM_DATA u16 gUnknown_0202E8B6 = 0; -static EWRAM_DATA u16 gUnknown_0202E8B8 = 0; -static EWRAM_DATA u16 gUnknown_0202E8BA = 0; -static EWRAM_DATA u16 gUnknown_0202E8BC = 0; +static EWRAM_DATA u16 sPauseCounter = 0; +static EWRAM_DATA u16 sMovingNpcId = 0; +static EWRAM_DATA u16 sMovingNpcMapBank = 0; +static EWRAM_DATA u16 sMovingNpcMapId = 0; +static EWRAM_DATA u16 sFieldEffectScriptId = 0; extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; @@ -91,12 +91,12 @@ static u8 * const sScriptStringVars[] = gStringVar3, }; -bool8 ScrCmd_snop(struct ScriptContext *ctx) +bool8 ScrCmd_nop(struct ScriptContext *ctx) { return FALSE; } -bool8 ScrCmd_snop1(struct ScriptContext *ctx) +bool8 ScrCmd_nop1(struct ScriptContext *ctx) { return FALSE; } @@ -107,30 +107,34 @@ bool8 ScrCmd_end(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_jumpasm(struct ScriptContext *ctx) +bool8 ScrCmd_gotonative(struct ScriptContext *ctx) { - u32 addr = ScriptReadWord(ctx); - SetupNativeScript(ctx, (void *)addr); + bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx); + + SetupNativeScript(ctx, addr); return TRUE; } bool8 ScrCmd_special(struct ScriptContext *ctx) { u16 index = ScriptReadHalfword(ctx); + gSpecials[index](); return FALSE; } -bool8 ScrCmd_specialval(struct ScriptContext *ctx) +bool8 ScrCmd_specialvar(struct ScriptContext *ctx) { u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); + *var = gSpecials[ScriptReadHalfword(ctx)](); return FALSE; } -bool8 ScrCmd_callasm(struct ScriptContext *ctx) +bool8 ScrCmd_callnative(struct ScriptContext *ctx) { NativeFunc func = (NativeFunc)ScriptReadWord(ctx); + func(); return FALSE; } @@ -141,9 +145,10 @@ bool8 ScrCmd_waitstate(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_jump(struct ScriptContext *ctx) +bool8 ScrCmd_goto(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); + ScriptJump(ctx, ptr); return FALSE; } @@ -156,25 +161,27 @@ bool8 ScrCmd_return(struct ScriptContext *ctx) bool8 ScrCmd_call(struct ScriptContext *ctx) { - u8 *ptr = (u8 *)ScriptReadWord(ctx); + ScriptCall(ctx, ptr); return FALSE; } -bool8 ScrCmd_jumpif(struct ScriptContext *ctx) +bool8 ScrCmd_goto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)ScriptReadWord(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptJump(ctx, ptr); return FALSE; } -bool8 ScrCmd_callif(struct ScriptContext *ctx) +bool8 ScrCmd_call_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)ScriptReadWord(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptCall(ctx, ptr); return FALSE; @@ -184,13 +191,15 @@ bool8 ScrCmd_setvaddress(struct ScriptContext *ctx) { u32 addr1 = (u32)ctx->scriptPtr - 1; u32 addr2 = ScriptReadWord(ctx); + gUnknown_0202E8B0 = addr2 - addr1; return FALSE; } -bool8 ScrCmd_vjump(struct ScriptContext *ctx) +bool8 ScrCmd_vgoto(struct ScriptContext *ctx) { u32 addr = ScriptReadWord(ctx); + ScriptJump(ctx, (u8 *)(addr - gUnknown_0202E8B0)); return FALSE; } @@ -198,32 +207,36 @@ bool8 ScrCmd_vjump(struct ScriptContext *ctx) bool8 ScrCmd_vcall(struct ScriptContext *ctx) { u32 addr = ScriptReadWord(ctx); + ScriptCall(ctx, (u8 *)(addr - gUnknown_0202E8B0)); return FALSE; } -bool8 ScrCmd_if5(struct ScriptContext *ctx) +bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptJump(ctx, ptr); return FALSE; } -bool8 ScrCmd_if6(struct ScriptContext *ctx) +bool8 ScrCmd_vcall_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptCall(ctx, ptr); return FALSE; } -bool8 ScrCmd_jumpstd(struct ScriptContext *ctx) +bool8 ScrCmd_gotostd(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); u8 **ptr = &gStdScripts[index]; + if (ptr < gStdScripts_End) ScriptJump(ctx, *ptr); return FALSE; @@ -233,15 +246,17 @@ bool8 ScrCmd_callstd(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); u8 **ptr = &gStdScripts[index]; + if (ptr < gStdScripts_End) ScriptCall(ctx, *ptr); return FALSE; } -bool8 ScrCmd_jumpstdif(struct ScriptContext *ctx) +bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 index = ScriptReadByte(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) { u8 **ptr = &gStdScripts[index]; @@ -251,10 +266,11 @@ bool8 ScrCmd_jumpstdif(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_callstdif(struct ScriptContext *ctx) +bool8 ScrCmd_callstd_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 index = ScriptReadByte(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) { u8 **ptr = &gStdScripts[index]; @@ -264,50 +280,55 @@ bool8 ScrCmd_callstdif(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_jumpram(struct ScriptContext *ctx) +bool8 ScrCmd_gotoram(struct ScriptContext *ctx) { ScriptJump(ctx, (u8 *)gUnknown_0202E8AC); return FALSE; } -bool8 ScrCmd_die(struct ScriptContext *ctx) +bool8 ScrCmd_killscript(struct ScriptContext *ctx) { ClearRamScript(); StopScript(ctx); return TRUE; } -bool8 ScrCmd_setbyte(struct ScriptContext *ctx) +bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext *ctx) { u8 value = ScriptReadByte(ctx); - sub_8126160(value); + + SetMysteryEventScriptStatus(value); return FALSE; } -bool8 ScrCmd_loadptr(struct ScriptContext *ctx) +bool8 ScrCmd_loadword(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = ScriptReadWord(ctx); return FALSE; } -bool8 ScrCmd_loadbytefrompointer(struct ScriptContext *ctx) +bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = *(u8 *)ScriptReadWord(ctx); return FALSE; } -bool8 ScrCmd_writebytetooffset(struct ScriptContext *ctx) +bool8 ScrCmd_writebytetoaddr(struct ScriptContext *ctx) { u8 value = ScriptReadByte(ctx); + *(u8 *)ScriptReadWord(ctx) = value; return FALSE; } -bool8 ScrCmd_setbufferbyte(struct ScriptContext *ctx) +bool8 ScrCmd_loadbyte(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = ScriptReadByte(ctx); return FALSE; } @@ -315,14 +336,16 @@ bool8 ScrCmd_setbufferbyte(struct ScriptContext *ctx) bool8 ScrCmd_setptrbyte(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + *(u8 *)ScriptReadWord(ctx) = ctx->data[index]; return FALSE; } -bool8 ScrCmd_copybuffers(struct ScriptContext *ctx) +bool8 ScrCmd_copylocal(struct ScriptContext *ctx) { u8 destIndex = ScriptReadByte(ctx); u8 srcIndex = ScriptReadByte(ctx); + ctx->data[destIndex] = ctx->data[srcIndex]; return FALSE; } @@ -359,73 +382,81 @@ u8 compare_012(u16 a1, u16 a2) { if (a1 < a2) return 0; - if (a1 == a2) return 1; - return 2; } -bool8 ScrCmd_comparebuffers(struct ScriptContext *ctx) +// comparelocaltolocal +bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = ctx->data[ScriptReadByte(ctx)]; + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparebuffertobyte(struct ScriptContext *ctx) +// comparelocaltoimm +bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = ScriptReadByte(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparebuffertoptrbyte(struct ScriptContext *ctx) +bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = *(u8 *)ScriptReadWord(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytetobuffer(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = ctx->data[ScriptReadByte(ctx)]; + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytetobyte(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = ScriptReadByte(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytes(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = *(u8 *)ScriptReadWord(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compare(struct ScriptContext *ctx) +bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx) { u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); u16 value2 = ScriptReadHalfword(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparevars(struct ScriptContext *ctx) +bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx) { u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); + ctx->comparisonResult = compare_012(*ptr1, *ptr2); return FALSE; } @@ -447,6 +478,7 @@ bool8 ScrCmd_subvar(struct ScriptContext *ctx) bool8 ScrCmd_random(struct ScriptContext *ctx) { u16 max = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = Random() % max; return FALSE; } @@ -455,6 +487,7 @@ bool8 ScrCmd_additem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = AddBagItem(itemId, (u8)quantity); return FALSE; } @@ -463,6 +496,7 @@ bool8 ScrCmd_removeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = RemoveBagItem(itemId, (u8)quantity); return FALSE; } @@ -471,6 +505,7 @@ bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckBagHasSpace(itemId, (u8)quantity); return FALSE; } @@ -479,6 +514,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckBagHasItem(itemId, (u8)quantity); return FALSE; } @@ -486,6 +522,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = GetPocketByItemId(itemId); return FALSE; } @@ -494,6 +531,7 @@ bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = AddPCItem(itemId, quantity); return FALSE; } @@ -502,6 +540,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckPCHasItem(itemId, quantity); return FALSE; } @@ -509,6 +548,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) bool8 ScrCmd_adddecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = IsThereStorageSpaceForDecoration(decorId); return FALSE; } @@ -516,6 +556,7 @@ bool8 ScrCmd_adddecor(struct ScriptContext *ctx) bool8 ScrCmd_removedecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_81340A8(decorId); return FALSE; } @@ -523,13 +564,15 @@ bool8 ScrCmd_removedecor(struct ScriptContext *ctx) bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_8134074(decorId); return FALSE; } -bool8 ScrCmd_testdecor(struct ScriptContext *ctx) +bool8 ScrCmd_hasdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_8133FE4(decorId); return FALSE; } @@ -542,7 +585,7 @@ bool8 ScrCmd_setflag(struct ScriptContext *ctx) bool8 ScrCmd_clearflag(struct ScriptContext *ctx) { - FlagReset(ScriptReadHalfword(ctx)); + FlagClear(ScriptReadHalfword(ctx)); return FALSE; } @@ -552,23 +595,24 @@ bool8 ScrCmd_checkflag(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_inccounter(struct ScriptContext *ctx) +bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) { IncrementGameStat(ScriptReadByte(ctx)); return FALSE; } -bool8 ScrCmd_lighten(struct ScriptContext *ctx) +bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx) { sub_8081594(ScriptReadByte(ctx)); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_darken(struct ScriptContext *ctx) +bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx) { - u16 value = VarGet(ScriptReadHalfword(ctx)); - sub_8053CE4(value); + u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetFlashLevel(flashLevel); return FALSE; } @@ -591,6 +635,7 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) { u8 duration = ScriptReadByte(ctx); u8 delay = ScriptReadByte(ctx); + fade_screen(duration, delay); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; @@ -598,36 +643,37 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) bool8 s28_pause_asm() { - gUnknown_0202E8B4--; + sPauseCounter--; - if (gUnknown_0202E8B4 == 0) + if (sPauseCounter == 0) return TRUE; else return FALSE; } -bool8 ScrCmd_pause(struct ScriptContext *ctx) +bool8 ScrCmd_delay(struct ScriptContext *ctx) { - gUnknown_0202E8B4 = ScriptReadHalfword(ctx); + sPauseCounter = ScriptReadHalfword(ctx); SetupNativeScript(ctx, s28_pause_asm); return TRUE; } -bool8 ScrCmd_compareflags(struct ScriptContext *ctx) +bool8 ScrCmd_initclock(struct ScriptContext *ctx) { u8 hour = VarGet(ScriptReadHalfword(ctx)); u8 minute = VarGet(ScriptReadHalfword(ctx)); + RtcInitLocalTimeOffset(hour, minute); return FALSE; } -bool8 ScrCmd_checkdailyflags(struct ScriptContext *ctx) +bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx) { DoTimeBasedEvents(); return FALSE; } -bool8 ScrCmd_resetvars(struct ScriptContext *ctx) +bool8 ScrCmd_gettime(struct ScriptContext *ctx) { RtcCalcLocalTime(); gSpecialVar_0x8000 = gLocalTime.hours; @@ -638,8 +684,9 @@ bool8 ScrCmd_resetvars(struct ScriptContext *ctx) bool8 ScrCmd_setweather(struct ScriptContext *ctx) { - u16 value = VarGet(ScriptReadHalfword(ctx)); - SetSav1Weather(value); + u16 weather = VarGet(ScriptReadHalfword(ctx)); + + SetSav1Weather(weather); return FALSE; } @@ -661,47 +708,51 @@ bool8 ScrCmd_tileeffect(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setmapfooter(struct ScriptContext *ctx) +bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); + sub_8053D14(value); return FALSE; } bool8 ScrCmd_warp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080E88(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warpmuted(struct ScriptContext *ctx) +bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sp13E_warp_to_last_warp(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warpwalk(struct ScriptContext *ctx) +bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080EF0(); player_avatar_init_params_reset(); return TRUE; @@ -709,18 +760,16 @@ bool8 ScrCmd_warpwalk(struct ScriptContext *ctx) bool8 ScrCmd_warphole(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); u16 x; u16 y; PlayerGetDestCoords(&x, &y); - - if (v1 == 0xFF && v2 == 0xFF) + if (mapGroup == 0xFF && mapNum == 0xFF) sub_8053720(x - 7, y - 7); else - warp1_set(v1, v2, -1, x - 7, y - 7); - + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); sp13F_fall_to_last_warp(); player_avatar_init_params_reset(); return TRUE; @@ -728,78 +777,85 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080F68(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warp3(struct ScriptContext *ctx) +bool8 ScrCmd_setwarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warpplace(struct ScriptContext *ctx) +bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - saved_warp2_set_2(0, v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + saved_warp2_set_2(0, mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp4(struct ScriptContext *ctx) +bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_8053690(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_8053690(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp5(struct ScriptContext *ctx) +bool8 ScrCmd_setholewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_80536E4(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_80536E4(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp6(struct ScriptContext *ctx) +bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_805363C(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_805363C(mapGroup, mapNum, warpId, x, y); return FALSE; } bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) { - u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); - u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr1 = gSaveBlock1.pos.x; - *ptr2 = gSaveBlock1.pos.y; + u16 *pX = GetVarPointer(ScriptReadHalfword(ctx)); + u16 *pY = GetVarPointer(ScriptReadHalfword(ctx)); + + *pX = gSaveBlock1.pos.x; + *pY = gSaveBlock1.pos.y; return FALSE; } @@ -809,13 +865,13 @@ bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_playsfx(struct ScriptContext *ctx) +bool8 ScrCmd_playse(struct ScriptContext *ctx) { PlaySE(ScriptReadHalfword(ctx)); return FALSE; } -bool8 s30_music_check_asm() +static bool8 WaitForSoundEffectFinish() { if (!IsSEPlaying()) return TRUE; @@ -823,222 +879,238 @@ bool8 s30_music_check_asm() return FALSE; } -bool8 ScrCmd_checksound(struct ScriptContext *ctx) +bool8 ScrCmd_waitse(struct ScriptContext *ctx) { - SetupNativeScript(ctx, s30_music_check_asm); + SetupNativeScript(ctx, WaitForSoundEffectFinish); return TRUE; } -bool8 ScrCmd_fanfare(struct ScriptContext *ctx) +bool8 ScrCmd_playfanfare(struct ScriptContext *ctx) { PlayFanfare(ScriptReadHalfword(ctx)); return FALSE; } -bool8 s32_fanfare_wait_asm() +static bool8 WaitForFanfareFinish() { return IsFanfareTaskInactive(); } bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx) { - SetupNativeScript(ctx, s32_fanfare_wait_asm); + SetupNativeScript(ctx, WaitForFanfareFinish); return TRUE; } -bool8 ScrCmd_playmusic(struct ScriptContext *ctx) +bool8 ScrCmd_playbgm(struct ScriptContext *ctx) { u16 songId = ScriptReadHalfword(ctx); bool8 val = ScriptReadByte(ctx); + if (val == TRUE) - sav1_set_battle_music_maybe(songId); + Overworld_SetSavedMusic(songId); PlayNewMapMusic(songId); return FALSE; } -bool8 ScrCmd_playmusicbattle(struct ScriptContext *ctx) +bool8 ScrCmd_savebgm(struct ScriptContext *ctx) { - sav1_set_battle_music_maybe(ScriptReadHalfword(ctx)); + Overworld_SetSavedMusic(ScriptReadHalfword(ctx)); return FALSE; } -bool8 ScrCmd_fadedefault(struct ScriptContext *ctx) +bool8 ScrCmd_fadedefaultbgm(struct ScriptContext *ctx) { - sub_8053F84(); + Overworld_ChangeMusicToDefault(); return FALSE; } -bool8 ScrCmd_fademusic(struct ScriptContext *ctx) +bool8 ScrCmd_fadenewbgm(struct ScriptContext *ctx) { - sub_8053FB0(ScriptReadHalfword(ctx)); + Overworld_ChangeMusicTo(ScriptReadHalfword(ctx)); return FALSE; } -bool8 ScrCmd_fadeout(struct ScriptContext *ctx) +bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx) { - u8 val = ScriptReadByte(ctx); - if (val) - FadeOutBGMTemporarily(4 * val); + u8 speed = ScriptReadByte(ctx); + + if (speed != 0) + FadeOutBGMTemporarily(4 * speed); else FadeOutBGMTemporarily(4); SetupNativeScript(ctx, IsBGMPausedOrStopped); return TRUE; } -bool8 ScrCmd_fadein(struct ScriptContext *ctx) +bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) { - u8 val = ScriptReadByte(ctx); - if (val) - FadeInBGM(4 * val); + u8 speed = ScriptReadByte(ctx); + + if (speed != 0) + FadeInBGM(4 * speed); else FadeInBGM(4); return FALSE; } -bool8 ScrCmd_move(struct ScriptContext *ctx) +bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - void *v2 = (void *)ScriptReadWord(ctx); - exec_movement(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2); - gUnknown_0202E8B6 = v1; + u16 localId = VarGet(ScriptReadHalfword(ctx)); + void *movementScript = (void *)ScriptReadWord(ctx); + + ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, movementScript); + sMovingNpcId = localId; return FALSE; } -bool8 ScrCmd_movecoords(struct ScriptContext *ctx) +bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - void *v2 = (void *)ScriptReadWord(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - exec_movement(v1, v4, v3, v2); - gUnknown_0202E8B6 = v1; + u16 localId = VarGet(ScriptReadHalfword(ctx)); + void *movementScript = (void *)ScriptReadWord(ctx); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript); + sMovingNpcId = localId; return FALSE; } -bool8 s51a_0806B288(void) +static bool8 WaitForMovementFinish(void) { - return sub_80A212C(gUnknown_0202E8B6, gUnknown_0202E8BA, gUnknown_0202E8B8); + return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank); } -bool8 ScrCmd_waitmove(struct ScriptContext *ctx) +bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - if (v1) - gUnknown_0202E8B6 = v1; - gUnknown_0202E8B8 = gSaveBlock1.location.mapGroup; - gUnknown_0202E8BA = gSaveBlock1.location.mapNum; - SetupNativeScript(ctx, s51a_0806B288); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + if (localId != 0) + sMovingNpcId = localId; + sMovingNpcMapBank = gSaveBlock1.location.mapGroup; + sMovingNpcMapId = gSaveBlock1.location.mapNum; + SetupNativeScript(ctx, WaitForMovementFinish); return TRUE; } -bool8 ScrCmd_waitmovexy(struct ScriptContext *ctx) +bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2; - u8 v3; + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapBank; + u8 mapId; - if (v1) - gUnknown_0202E8B6 = v1; - - v2 = ScriptReadByte(ctx); - v3 = ScriptReadByte(ctx); - gUnknown_0202E8B8 = v2; - gUnknown_0202E8BA = v3; - SetupNativeScript(ctx, s51a_0806B288); + if (localId != 0) + sMovingNpcId = localId; + mapBank = ScriptReadByte(ctx); + mapId = ScriptReadByte(ctx); + sMovingNpcMapBank = mapBank; + sMovingNpcMapId = mapId; + SetupNativeScript(ctx, WaitForMovementFinish); return TRUE; } -bool8 ScrCmd_disappear(struct ScriptContext *ctx) +bool8 ScrCmd_removeobject(struct ScriptContext *ctx) { - u16 objectId = VarGet(ScriptReadHalfword(ctx)); - RemoveFieldObjectByLocalIdAndMap(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_disappearxy(struct ScriptContext *ctx) +bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); + RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup); return FALSE; } -bool8 ScrCmd_reappear(struct ScriptContext *ctx) +bool8 ScrCmd_addobject(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); + show_sprite(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_reappearxy(struct ScriptContext *ctx) +bool8 ScrCmd_addobject_at(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); + show_sprite(objectId, mapNum, mapGroup); return FALSE; } -bool8 ScrCmd_movesprite(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - u32 v3 = VarGet(ScriptReadHalfword(ctx)); - sub_805C0F8(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2, v3); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_805C0F8(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y); return FALSE; } -bool8 ScrCmd_movespriteperm(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - u32 v3 = VarGet(ScriptReadHalfword(ctx)); - update_saveblock1_field_object_coords(v1, v2, v3); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetMapObjTemplateCoords(localId, x, y); return FALSE; } -bool8 ScrCmd_moveoffscreen(struct ScriptContext *ctx) +bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - sub_805C78C(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + sub_805C78C(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_spritevisible(struct ScriptContext *ctx) +bool8 ScrCmd_showobject(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - npc_by_local_id_and_map_set_field_1_bit_x20(v1, v3, v2, 0); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0); return FALSE; } -bool8 ScrCmd_spriteinvisible(struct ScriptContext *ctx) +bool8 ScrCmd_hideobject(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - npc_by_local_id_and_map_set_field_1_bit_x20(v1, v3, v2, 1); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1); return FALSE; } -bool8 ScrCmd_spritelevelup(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectpriority(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - sub_805BCF0(v1, v3, v2, v4 + 83); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 priority = ScriptReadByte(ctx); + + sub_805BCF0(localId, mapNum, mapGroup, priority + 83); return FALSE; } -bool8 ScrCmd_restorespritelevel(struct ScriptContext *ctx) +bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - sub_805BD48(v1, v3, v2); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + sub_805BD48(localId, mapNum, mapGroup); return FALSE; } @@ -1052,39 +1124,43 @@ bool8 ScrCmd_faceplayer(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_spriteface(struct ScriptContext *ctx) +bool8 ScrCmd_turnobject(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - FieldObjectTurnByLocalIdAndMap(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 direction = ScriptReadByte(ctx); + + FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, direction); return FALSE; } -bool8 ScrCmd_spritebehave(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - update_saveblock1_field_object_movement_behavior(v1, v2); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 movementType = ScriptReadByte(ctx); + + Overworld_SetMapObjTemplateMovementType(localId, movementType); return FALSE; } -bool8 ScrCmd_createvsprite(struct ScriptContext *ctx) +bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); + u8 graphicsId = ScriptReadByte(ctx); u8 v2 = ScriptReadByte(ctx); - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u32 v4 = VarGet(ScriptReadHalfword(ctx)); - u8 v5 = ScriptReadByte(ctx); - u8 v6 = ScriptReadByte(ctx); - sub_805B410(v1, v2, v3, v4, v5, v6); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u32 y = VarGet(ScriptReadHalfword(ctx)); + u8 elevation = ScriptReadByte(ctx); + u8 direction = ScriptReadByte(ctx); + + sub_805B410(graphicsId, v2, x, y, elevation, direction); return FALSE; } -bool8 ScrCmd_vspriteface(struct ScriptContext *ctx) +bool8 ScrCmd_turnvobject(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - sub_8064990(v1, v2); + u8 direction = ScriptReadByte(ctx); + + sub_8064990(v1, direction); return FALSE; } @@ -1112,7 +1188,7 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) { if (gMapObjects[gSelectedMapObject].active) { - sub_8064DD8(); + LockSelectedMapObject(); SetupNativeScript(ctx, sub_8064DB4); } else @@ -1120,7 +1196,6 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) ScriptFreezeMapObjects(); SetupNativeScript(ctx, sub_8064CFC); } - return TRUE; } } @@ -1154,34 +1229,36 @@ bool8 ScrCmd_release(struct ScriptContext *ctx) bool8 ScrCmd_message(struct ScriptContext *ctx) { u8 *msg = (u8 *)ScriptReadWord(ctx); - if (!msg) + + if (msg == NULL) msg = (u8 *)ctx->data[0]; ShowFieldMessage(msg); return FALSE; } -bool8 ScrCmd_message2(struct ScriptContext *ctx) +bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx) { u8 *msg = (u8 *)ScriptReadWord(ctx); - if (!msg) + + if (msg == NULL) msg = (u8 *)ctx->data[0]; ShowFieldAutoScrollMessage(msg); return FALSE; } -bool8 ScrCmd_waittext(struct ScriptContext *ctx) +bool8 ScrCmd_waitmessage(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsFieldMessageBoxHidden); return TRUE; } -bool8 ScrCmd_closebutton(struct ScriptContext *ctx) +bool8 ScrCmd_closemessage(struct ScriptContext *ctx) { HideFieldMessageBox(); return FALSE; } -bool8 WaitForAorBPress(void) +static bool8 WaitForAorBPress(void) { if (gMain.newKeys & A_BUTTON) return TRUE; @@ -1198,9 +1275,10 @@ bool8 ScrCmd_waitbutton(struct ScriptContext *ctx) bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - if (yes_no_box(v1, v2) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + + if (ScriptMenu_YesNo(left, top) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1213,11 +1291,12 @@ bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) bool8 ScrCmd_multichoice(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - if (sub_80B5054(v1, v2, v3, v4) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1228,14 +1307,15 @@ bool8 ScrCmd_multichoice(struct ScriptContext *ctx) } } -bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx) +bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - u8 v5 = ScriptReadByte(ctx); - if (sub_80B50B0(v1, v2, v3, v5, v4) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 defaultChoice = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1246,24 +1326,26 @@ bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx) } } -bool8 ScrCmd_showbox(struct ScriptContext *ctx) +bool8 ScrCmd_drawbox(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - MenuDrawTextWindow(v1, v2, v3, v4); + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 right = ScriptReadByte(ctx); + u8 bottom = ScriptReadByte(ctx); + + MenuDrawTextWindow(left, top, right, bottom); return FALSE; } -bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx) +bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - u8 v5 = ScriptReadByte(ctx); - if (sub_80B5578(v1, v2, v3, v5, v4) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 numColumns = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1274,23 +1356,26 @@ bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx) } } -bool8 ScrCmd_hidebox(struct ScriptContext *ctx) +bool8 ScrCmd_erasebox(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - MenuZeroFillWindowRect(v1, v2, v3, v4); + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 right = ScriptReadByte(ctx); + u8 bottom = ScriptReadByte(ctx); + + MenuZeroFillWindowRect(left, top, right, bottom); return FALSE; } -bool8 ScrCmd_clearbox(struct ScriptContext *ctx) +// unused +bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - if (Multichoice(v1, v2, v3, v4) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1301,28 +1386,30 @@ bool8 ScrCmd_clearbox(struct ScriptContext *ctx) } } -bool8 ScrCmd_showpokepic(struct ScriptContext *ctx) +bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - sub_80B58C4(v1, v2, v3); + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + ScriptMenu_ShowPokemonPic(species, x, y); return FALSE; } -bool8 ScrCmd_hidepokepic(struct ScriptContext *ctx) +bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx) { - void *func = picbox_close(); - if (!func) - return FALSE; + bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); + if (func == NULL) + return FALSE; SetupNativeScript(ctx, func); return TRUE; } -bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) +bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); + if (v1) sub_8106630(v1); ShowContestWinner(); @@ -1330,9 +1417,10 @@ bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_braillemsg(struct ScriptContext *ctx) +bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); + u8 v2 = ptr[0]; u8 v3 = ptr[1]; u8 v4 = ptr[2]; @@ -1345,24 +1433,27 @@ bool8 ScrCmd_braillemsg(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_vtext(struct ScriptContext *ctx) +bool8 ScrCmd_vmessage(struct ScriptContext *ctx) { u32 v1 = ScriptReadWord(ctx); + ShowFieldMessage((u8 *)(v1 - gUnknown_0202E8B0)); return FALSE; } -bool8 ScrCmd_bufferpoke(struct ScriptContext *ctx) +bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]); return FALSE; } -bool8 ScrCmd_bufferfirstpoke(struct ScriptContext *ctx) +bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); + u8 *dest = sScriptStringVars[stringVarIndex]; u8 partyIndex = GetLeadMonIndex(); u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL); @@ -1370,113 +1461,126 @@ bool8 ScrCmd_bufferfirstpoke(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferpartypoke(struct ScriptContext *ctx) +bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); StringGetEnd10(sScriptStringVars[stringVarIndex]); return FALSE; } -bool8 ScrCmd_bufferitem(struct ScriptContext *ctx) +bool8 ScrCmd_getitemname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); + CopyItemName(itemId, sScriptStringVars[stringVarIndex]); return FALSE; } -bool8 ScrCmd_bufferdecor(struct ScriptContext *ctx) +bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gDecorations[decorId].name); return FALSE; } -bool8 ScrCmd_bufferattack(struct ScriptContext *ctx) +bool8 ScrCmd_getmovename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gMoveNames[moveId]); return FALSE; } -bool8 ScrCmd_buffernum(struct ScriptContext *ctx) +bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); u8 v2 = sub_80BF0B8(v1); + ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2); return FALSE; } -bool8 ScrCmd_bufferstd(struct ScriptContext *ctx) +bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gUnknown_083CE048[index]); return FALSE; } -bool8 ScrCmd_buffertext(struct ScriptContext *ctx) +bool8 ScrCmd_getstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u8 *text = (u8 *)ScriptReadWord(ctx); + StringCopy(sScriptStringVars[stringVarIndex], text); return FALSE; } -bool8 ScrCmd_vloadptr(struct ScriptContext *ctx) +bool8 ScrCmd_vloadword(struct ScriptContext *ctx) { u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + StringExpandPlaceholders(gStringVar4, ptr); return FALSE; } -bool8 ScrCmd_vbuffer(struct ScriptContext *ctx) +bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u32 addr = ScriptReadWord(ctx); + u8 *src = (u8 *)(addr - gUnknown_0202E8B0); u8 *dest = sScriptStringVars[stringVarIndex]; StringCopy(dest, src); return FALSE; } -bool8 ScrCmd_givepokemon(struct ScriptContext *ctx) +bool8 ScrCmd_givepoke(struct ScriptContext *ctx) { - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u8 v5 = ScriptReadByte(ctx); - u16 v7 = VarGet(ScriptReadHalfword(ctx)); - u32 v8 = ScriptReadWord(ctx); - u32 v9 = ScriptReadWord(ctx); - u8 v10 = ScriptReadByte(ctx); - gScriptResult = ScriptGiveMon(v3, v5, v7, v8, v9, v10); + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 level = ScriptReadByte(ctx); + u16 item = VarGet(ScriptReadHalfword(ctx)); + u32 unkParam1 = ScriptReadWord(ctx); + u32 unkParam2 = ScriptReadWord(ctx); + u8 unkParam3 = ScriptReadByte(ctx); + + gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); return FALSE; } bool8 ScrCmd_giveegg(struct ScriptContext *ctx) { - u16 value = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = ScriptGiveEgg(value); + u16 species = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = ScriptGiveEgg(species); return FALSE; } bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = ScriptReadHalfword(ctx); - ScriptSetMonMoveSlot(v2, v4, v3); + u8 partyIndex = ScriptReadByte(ctx); + u8 slot = ScriptReadByte(ctx); + u16 move = ScriptReadHalfword(ctx); + + ScriptSetMonMoveSlot(partyIndex, move, slot); return FALSE; } -bool8 ScrCmd_checkattack(struct ScriptContext *ctx) +bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx) { u8 i; u16 moveId = ScriptReadHalfword(ctx); + gScriptResult = 6; for (i = 0; i < 6; i++) { @@ -1498,17 +1602,19 @@ bool8 ScrCmd_givemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - sub_80B79B8(&gSaveBlock1.money, amount); + AddMoney(&gSaveBlock1.money, amount); return FALSE; } -bool8 ScrCmd_paymoney(struct ScriptContext *ctx) +bool8 ScrCmd_takemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - sub_80B79E0(&gSaveBlock1.money, amount); + RemoveMoney(&gSaveBlock1.money, amount); return FALSE; } @@ -1516,120 +1622,131 @@ bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) gScriptResult = IsEnoughMoney(gSaveBlock1.money, amount); return FALSE; } -bool8 ScrCmd_showmoney(struct ScriptContext *ctx) +bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - sub_80B7C14(gSaveBlock1.money, v2, v3); + OpenMoneyWindow(gSaveBlock1.money, x, y); return FALSE; } -bool8 ScrCmd_hidemoney(struct ScriptContext *ctx) +bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - RemoveMoneyLabelObject(v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + CloseMoneyWindow(x, y); return FALSE; } -bool8 ScrCmd_updatemoney(struct ScriptContext *ctx) +bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - sub_80B7BEC(gSaveBlock1.money, v2, v3); + UpdateMoneyWindow(gSaveBlock1.money, x, y); return FALSE; } -bool8 ScrCmd_showcoins(struct ScriptContext *ctx) +bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - ShowCoinsWindow(gSaveBlock1.coins, v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + ShowCoinsWindow(gSaveBlock1.coins, x, y); return FALSE; } -bool8 ScrCmd_hidecoins(struct ScriptContext *ctx) +bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - HideCoinsWindow(v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + HideCoinsWindow(x, y); return FALSE; } -bool8 ScrCmd_updatecoins(struct ScriptContext *ctx) +bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - UpdateCoinsWindow(gSaveBlock1.coins, v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + UpdateCoinsWindow(gSaveBlock1.coins, x, y); return FALSE; } bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) { - ctx->scriptPtr = TrainerBattleConfigure(ctx->scriptPtr); + ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr); return FALSE; } -bool8 ScrCmd_reptrainerbattle(struct ScriptContext *ctx) +bool8 ScrCmd_battlebegin(struct ScriptContext *ctx) { - sub_80825E4(); + BattleSetup_StartTrainerBattle(); return TRUE; } -bool8 ScrCmd_endtrainerbattle(struct ScriptContext *ctx) +bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx) { - ctx->scriptPtr = sub_80826E8(); + ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); return FALSE; } -bool8 ScrCmd_endtrainerbattle2(struct ScriptContext *ctx) +bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx) { - ctx->scriptPtr = sub_8082700(); + ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); return FALSE; } bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); - ctx->comparisonResult = trainer_flag_check(index); + + ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); return FALSE; } -bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) +bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); + trainer_flag_set(index); return FALSE; } -bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) +bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); + trainer_flag_clear(index); return FALSE; } bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) { - u16 v2 = ScriptReadHalfword(ctx); - u8 v4 = ScriptReadByte(ctx); - u16 v5 = ScriptReadHalfword(ctx); - ScriptWildBattle(v2, v4, v5); + u16 species = ScriptReadHalfword(ctx); + u8 level = ScriptReadByte(ctx); + u16 item = ScriptReadHalfword(ctx); + + CreateScriptedWildMon(species, level, item); return FALSE; } bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) { - StartBattle_ScriptedWild(); + BattleSetup_StartScriptedWildBattle(); ScriptContext1_Stop(); return TRUE; } @@ -1637,6 +1754,7 @@ bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) bool8 ScrCmd_pokemart(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreatePokemartMenu(ptr); ScriptContext1_Stop(); return TRUE; @@ -1645,6 +1763,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreateDecorationShop1Menu(ptr); ScriptContext1_Stop(); return TRUE; @@ -1653,34 +1772,38 @@ bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreateDecorationShop2Menu(ptr); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_pokecasino(struct ScriptContext *ctx) +bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) { u8 v2 = VarGet(ScriptReadHalfword(ctx)); + PlaySlotMachine(v2, c2_exit_to_overworld_1_continue_scripts_restart_music); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_event_8a(struct ScriptContext *ctx) +bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - if (!v3) - PlantBerryTree(v2, 0, v4, FALSE); + u8 treeId = ScriptReadByte(ctx); + u8 berry = ScriptReadByte(ctx); + u8 growthStage = ScriptReadByte(ctx); + + if (berry == 0) + PlantBerryTree(treeId, 0, growthStage, FALSE); else - PlantBerryTree(v2, v3, v4, FALSE); + PlantBerryTree(treeId, berry, growthStage, FALSE); return FALSE; } -bool8 ScrCmd_event_96(struct ScriptContext *ctx) +bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = GetPriceReduction(value); return FALSE; } @@ -1713,54 +1836,58 @@ bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_doanimation(struct ScriptContext *ctx) +bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) { u16 effectId = VarGet(ScriptReadHalfword(ctx)); - gUnknown_0202E8BC = effectId; - FieldEffectStart(gUnknown_0202E8BC); + + sFieldEffectScriptId = effectId; + FieldEffectStart(sFieldEffectScriptId); return FALSE; } -bool8 ScrCmd_setanimation(struct ScriptContext *ctx) +bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - gUnknown_0202FF84[v2] = (s16)VarGet(ScriptReadHalfword(ctx)); + u8 argNum = ScriptReadByte(ctx); + + gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx)); return FALSE; } static bool8 sub_8067B48() { - if (!FieldEffectActiveListContains(gUnknown_0202E8BC)) + if (!FieldEffectActiveListContains(sFieldEffectScriptId)) return TRUE; else return FALSE; } -bool8 ScrCmd_checkanimation(struct ScriptContext *ctx) +bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) { - gUnknown_0202E8BC = VarGet(ScriptReadHalfword(ctx)); + sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx)); SetupNativeScript(ctx, sub_8067B48); return TRUE; } bool8 ScrCmd_sethealplace(struct ScriptContext *ctx) { - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - sub_8053588(v2); + u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetHealLocationWarp(healLocationId); return FALSE; } -bool8 ScrCmd_checkgender(struct ScriptContext *ctx) +bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) { gScriptResult = gSaveBlock2.playerGender; return FALSE; } -bool8 ScrCmd_pokecry(struct ScriptContext *ctx) +bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) { - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u16 v5 = VarGet(ScriptReadHalfword(ctx)); - PlayCry5(v3, v5); + u16 species = VarGet(ScriptReadHalfword(ctx)); + u16 mode = VarGet(ScriptReadHalfword(ctx)); + + PlayCry5(species, mode); return FALSE; } @@ -1772,34 +1899,37 @@ bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx) bool8 ScrCmd_setmaptile(struct ScriptContext *ctx) { - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u16 v5 = VarGet(ScriptReadHalfword(ctx)); - u16 v7 = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + u16 tileId = VarGet(ScriptReadHalfword(ctx)); u16 v8 = VarGet(ScriptReadHalfword(ctx)); - v3 += 7; - v5 += 7; + + x += 7; + y += 7; if (!v8) - MapGridSetMetatileIdAt(v3, v5, v7); + MapGridSetMetatileIdAt(x, y, tileId); else - MapGridSetMetatileIdAt(v3, v5, v7 | 0xC00); + MapGridSetMetatileIdAt(x, y, tileId | 0xC00); return FALSE; } -bool8 ScrCmd_setdooropened(struct ScriptContext *ctx) +bool8 ScrCmd_opendoor(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; - PlaySE(sub_8058790(x, y)); + PlaySE(GetDoorSoundEffect(x, y)); FieldAnimateDoorOpen(x, y); return FALSE; } -bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) +bool8 ScrCmd_closedoor(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldAnimateDoorClose(x, y); @@ -1814,43 +1944,46 @@ static bool8 IsDoorAnimationStopped() return FALSE; } -bool8 ScrCmd_doorchange(struct ScriptContext *ctx) +bool8 ScrCmd_waitdooranim(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsDoorAnimationStopped); return TRUE; } -bool8 ScrCmd_setdooropened2(struct ScriptContext *ctx) +bool8 ScrCmd_setdooropen(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldSetDoorOpened(x, y); return FALSE; } -bool8 ScrCmd_setdoorclosed2(struct ScriptContext *ctx) +bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldSetDoorClosed(x, y); return FALSE; } -bool8 ScrCmd_event_b1(struct ScriptContext *ctx) +bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx) { u8 v3 = ScriptReadByte(ctx); u16 v5 = VarGet(ScriptReadHalfword(ctx)); u16 v7 = VarGet(ScriptReadHalfword(ctx)); u16 v9 = VarGet(ScriptReadHalfword(ctx)); + ScriptAddElevatorMenuItem(v3, v5, v7, v9); return FALSE; } -bool8 ScrCmd_event_b2(struct ScriptContext *ctx) +bool8 ScrCmd_showelevmenu(struct ScriptContext *ctx) { ScriptShowElevatorMenu(); ScriptContext1_Stop(); @@ -1867,21 +2000,21 @@ bool8 ScrCmd_checkcoins(struct ScriptContext *ctx) bool8 ScrCmd_givecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); + if (GiveCoins(coins) == TRUE) gScriptResult = 0; else gScriptResult = 1; - return FALSE; } -bool8 ScrCmd_removecoins(struct ScriptContext *ctx) +bool8 ScrCmd_takecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); + if (TakeCoins(coins) == TRUE) gScriptResult = 0; else gScriptResult = 1; - return FALSE; } diff --git a/src/field/script_menu.c b/src/field/script_menu.c new file mode 100644 index 000000000..e25e74d8c --- /dev/null +++ b/src/field/script_menu.c @@ -0,0 +1,1178 @@ +#include "global.h" +#include "script.h" +#include "script_menu.h" +#include "event_data.h" +#include "field_effect.h" +#include "menu.h" +#include "palette.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "strings.h" +#include "task.h" + +// multichoice lists +const struct MenuAction MultichoiceList_00[] = +{ + {OtherText_Petalburg, NULL}, + {OtherText_Slateport, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_02[] = +{ + {OtherText_Enter, NULL}, + {OtherText_Info3, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_03[] = +{ + {OtherText_WhatsAContest, NULL}, + {OtherText_TypesOfContest, NULL}, + {OtherText_Ranks, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_04[] = +{ + {OtherText_CoolContest, NULL}, + {OtherText_BeautyContest, NULL}, + {OtherText_CuteContest, NULL}, + {OtherText_SmartContest, NULL}, + {OtherText_ToughContest, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_06[] = +{ + {OtherText_Decoration, NULL}, + {OtherText_PackUp, NULL}, + {OtherText_Registry, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_05[] = +{ + {OtherText_Decoration, NULL}, + {OtherText_PackUp, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_07[] = +{ + {OtherText_Register, NULL}, + {OtherText_Registry, NULL}, + {OtherText_Information, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_12[] = +{ + {OtherText_Mach, NULL}, + {OtherText_Acro, NULL}, +}; + +const struct MenuAction MultichoiceList_13[] = +{ + {OtherText_Poison, NULL}, + {OtherText_Paralysis, NULL}, + {OtherText_Sleep, NULL}, + {OtherText_Burn, NULL}, + {OtherText_Frozen, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_14[] = +{ + {OtherText_Dewford, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_16[] = +{ + {OtherText_SawIt, NULL}, + {OtherText_NotYet, NULL}, +}; + +const struct MenuAction MultichoiceList_17[] = +{ + {OtherText_Yes, NULL}, + {OtherText_No, NULL}, + {OtherText_Info3, NULL}, +}; + +const struct MenuAction MultichoiceList_18[] = +{ + {OtherText_SingleBattle, NULL}, + {OtherText_DoubleBattle, NULL}, + {OtherText_MultiBattle, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_19[] = +{ + {OtherText_Littleroot, NULL}, + {OtherText_Slateport, NULL}, + {OtherText_Lilycove, NULL}, +}; + +const struct MenuAction MultichoiceList_20[] = +{ + {OtherText_Yes, NULL}, + {OtherText_No, NULL}, + {OtherText_Info3, NULL}, +}; + +const struct MenuAction MultichoiceList_23[] = +{ + {OtherText_MakeAChallenge, NULL}, + {OtherText_ObtainInformation, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_24[] = +{ + {OtherText_Lv50_2, NULL}, + {OtherText_Lv100_2, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_25[] = +{ + {OtherText_Zigzagoon, NULL}, + {OtherText_Nincada, NULL}, + {OtherText_Poochyena, NULL}, +}; + +const struct MenuAction MultichoiceList_26[] = +{ + {OtherText_Nincada2, NULL}, + {OtherText_Lotad, NULL}, + {OtherText_Roselia, NULL}, +}; + +const struct MenuAction MultichoiceList_27[] = +{ + {OtherText_Shroomish, NULL}, + {OtherText_Nincada3, NULL}, + {OtherText_Surskit, NULL}, +}; + +const struct MenuAction MultichoiceList_28[] = +{ + {OtherText_Treecko, NULL}, + {OtherText_Torchic, NULL}, + {OtherText_Mudkip, NULL}, +}; + +const struct MenuAction MultichoiceList_29[] = +{ + {OtherText_Seedot, NULL}, + {OtherText_Shroomish2, NULL}, + {OtherText_Spinda, NULL}, +}; + +const struct MenuAction MultichoiceList_30[] = +{ + {OtherText_Shroomish3, NULL}, + {OtherText_Zigzagoon2, NULL}, + {OtherText_Wurmple, NULL}, +}; + +const struct MenuAction MultichoiceList_31[] = +{ + {OtherText_PokeBall, NULL}, + {OtherText_SuperPotion, NULL}, + {OtherText_SamePrice, NULL}, +}; + +const struct MenuAction MultichoiceList_32[] = +{ + {OtherText_Yen135, NULL}, + {OtherText_Yen155, NULL}, + {OtherText_Yen175, NULL}, +}; + +const struct MenuAction MultichoiceList_33[] = +{ + {OtherText_CostMore, NULL}, + {OtherText_CostLess, NULL}, + {OtherText_SamePrice2, NULL}, +}; + +const struct MenuAction MultichoiceList_34[] = +{ + {OtherText_MaleSymbol, NULL}, + {OtherText_FemaleSymbol, NULL}, + {OtherText_Neither, NULL}, +}; + +const struct MenuAction MultichoiceList_35[] = +{ + {OtherText_Males, NULL}, + {OtherText_Females, NULL}, + {OtherText_SameNumber, NULL}, +}; + +const struct MenuAction MultichoiceList_36[] = +{ + {OtherText_Male, NULL}, + {OtherText_Female, NULL}, + {OtherText_ItDepends, NULL}, +}; + +const struct MenuAction MultichoiceList_37[] = +{ + {OtherText_Six2, NULL}, + {OtherText_Eight2, NULL}, + {OtherText_Ten, NULL}, +}; + +const struct MenuAction MultichoiceList_38[] = +{ + {OtherText_One, NULL}, + {OtherText_Two, NULL}, + {OtherText_Three, NULL}, +}; + +const struct MenuAction MultichoiceList_39[] = +{ + {OtherText_Six, NULL}, + {OtherText_Seven, NULL}, + {OtherText_Eight, NULL}, +}; + +const struct MenuAction MultichoiceList_42[] = +{ + {OtherText_FreshWater, NULL}, + {OtherText_SodaPop, NULL}, + {OtherText_Lemonade, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_43[] = +{ + {OtherText_HowToRide, NULL}, + {OtherText_HowToTurn, NULL}, + {OtherText_SandySlopes, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_44[] = +{ + {OtherText_Wheelies, NULL}, + {OtherText_BunnyHops, NULL}, + {OtherText_Jumping, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_45[] = +{ + {OtherText_Satisfied, NULL}, + {OtherText_Dissatisfied, NULL}, +}; + +const struct MenuAction MultichoiceList_46[] = +{ + {OtherText_Deepseatooth, NULL}, + {OtherText_Deepseascale, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_47[] = +{ + {OtherText_BlueFlute2, NULL}, + {OtherText_YellowFlute2, NULL}, + {OtherText_RedFlute2, NULL}, + {OtherText_WhiteFlute2, NULL}, + {OtherText_BlackFlute2, NULL}, + {OtherText_GlassChair, NULL}, + {OtherText_GlassDesk, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_48[] = +{ + {OtherText_TreeckoDoll, NULL}, + {OtherText_TorchicDoll, NULL}, + {OtherText_MudkipDoll, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_55[] = +{ + {OtherText_TM32, NULL}, + {OtherText_TM29, NULL}, + {OtherText_TM35, NULL}, + {OtherText_TM24, NULL}, + {OtherText_TM13, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_49[] = +{ + {OtherText_50Coins, NULL}, + {OtherText_500Coins, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_50[] = +{ + {OtherText_Excellent, NULL}, + {OtherText_NotSoHot, NULL}, +}; + +const struct MenuAction MultichoiceList_52[] = +{ + {OtherText_Lilycove, NULL}, + {OtherText_BattleTower, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_53[] = +{ + {OtherText_Slateport, NULL}, + {OtherText_Lilycove, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_54[] = +{ + {OtherText_Right, NULL}, + {OtherText_Left, NULL}, +}; + +const struct MenuAction MultichoiceList_56[] = +{ + {OtherText_Slateport, NULL}, + {OtherText_BattleTower, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_57[] = +{ + {OtherText_1F_2, NULL}, + {OtherText_2F_2, NULL}, + {OtherText_3F_2, NULL}, + {OtherText_4F_2, NULL}, + {OtherText_5F_2, NULL}, +}; + +const struct MenuAction MultichoiceList_58[] = +{ + {OtherText_RedShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_59[] = +{ + {OtherText_YellowShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_60[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_YellowShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_61[] = +{ + {OtherText_BlueShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_62[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_BlueShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_63[] = +{ + {OtherText_YellowShard, NULL}, + {OtherText_BlueShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_64[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_YellowShard, NULL}, + {OtherText_BlueShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_65[] = +{ + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_66[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_67[] = +{ + {OtherText_YellowShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_68[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_YellowShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_69[] = +{ + {OtherText_BlueShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_70[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_BlueShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_71[] = +{ + {OtherText_YellowShard, NULL}, + {OtherText_BlueShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_72[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_YellowShard, NULL}, + {OtherText_BlueShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_01[] = +{ + {gOtherText_CancelNoTerminator, NULL}, +}; + +struct MultichoiceListStruct +{ + const struct MenuAction *list; + u8 count; +}; + +const struct MultichoiceListStruct gMultichoiceLists[] = +{ + {MultichoiceList_00, ARRAY_COUNT(MultichoiceList_00)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_02, ARRAY_COUNT(MultichoiceList_02)}, + {MultichoiceList_03, ARRAY_COUNT(MultichoiceList_03)}, + {MultichoiceList_04, ARRAY_COUNT(MultichoiceList_04)}, + {MultichoiceList_05, ARRAY_COUNT(MultichoiceList_05)}, + {MultichoiceList_06, ARRAY_COUNT(MultichoiceList_06)}, + {MultichoiceList_07, ARRAY_COUNT(MultichoiceList_07)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_12, ARRAY_COUNT(MultichoiceList_12)}, + {MultichoiceList_13, ARRAY_COUNT(MultichoiceList_13)}, + {MultichoiceList_14, ARRAY_COUNT(MultichoiceList_14)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_16, ARRAY_COUNT(MultichoiceList_16)}, + {MultichoiceList_17, ARRAY_COUNT(MultichoiceList_17)}, + {MultichoiceList_18, ARRAY_COUNT(MultichoiceList_18)}, + {MultichoiceList_19, ARRAY_COUNT(MultichoiceList_19)}, + {MultichoiceList_20, ARRAY_COUNT(MultichoiceList_20)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_23, ARRAY_COUNT(MultichoiceList_23)}, + {MultichoiceList_24, ARRAY_COUNT(MultichoiceList_24)}, + {MultichoiceList_25, ARRAY_COUNT(MultichoiceList_25)}, + {MultichoiceList_26, ARRAY_COUNT(MultichoiceList_26)}, + {MultichoiceList_27, ARRAY_COUNT(MultichoiceList_27)}, + {MultichoiceList_28, ARRAY_COUNT(MultichoiceList_28)}, + {MultichoiceList_29, ARRAY_COUNT(MultichoiceList_29)}, + {MultichoiceList_30, ARRAY_COUNT(MultichoiceList_30)}, + {MultichoiceList_31, ARRAY_COUNT(MultichoiceList_31)}, + {MultichoiceList_32, ARRAY_COUNT(MultichoiceList_32)}, + {MultichoiceList_33, ARRAY_COUNT(MultichoiceList_33)}, + {MultichoiceList_34, ARRAY_COUNT(MultichoiceList_34)}, + {MultichoiceList_35, ARRAY_COUNT(MultichoiceList_35)}, + {MultichoiceList_36, ARRAY_COUNT(MultichoiceList_36)}, + {MultichoiceList_37, ARRAY_COUNT(MultichoiceList_37)}, + {MultichoiceList_38, ARRAY_COUNT(MultichoiceList_38)}, + {MultichoiceList_39, ARRAY_COUNT(MultichoiceList_39)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_42, ARRAY_COUNT(MultichoiceList_42)}, + {MultichoiceList_43, ARRAY_COUNT(MultichoiceList_43)}, + {MultichoiceList_44, ARRAY_COUNT(MultichoiceList_44)}, + {MultichoiceList_45, ARRAY_COUNT(MultichoiceList_45)}, + {MultichoiceList_46, ARRAY_COUNT(MultichoiceList_46)}, + {MultichoiceList_47, ARRAY_COUNT(MultichoiceList_47)}, + {MultichoiceList_48, ARRAY_COUNT(MultichoiceList_48)}, + {MultichoiceList_49, ARRAY_COUNT(MultichoiceList_49)}, + {MultichoiceList_50, ARRAY_COUNT(MultichoiceList_50)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_52, ARRAY_COUNT(MultichoiceList_52)}, + {MultichoiceList_53, ARRAY_COUNT(MultichoiceList_53)}, + {MultichoiceList_54, ARRAY_COUNT(MultichoiceList_54)}, + {MultichoiceList_55, ARRAY_COUNT(MultichoiceList_55)}, + {MultichoiceList_56, ARRAY_COUNT(MultichoiceList_56)}, + {MultichoiceList_57, ARRAY_COUNT(MultichoiceList_57)}, + {MultichoiceList_58, ARRAY_COUNT(MultichoiceList_58)}, + {MultichoiceList_59, ARRAY_COUNT(MultichoiceList_59)}, + {MultichoiceList_60, ARRAY_COUNT(MultichoiceList_60)}, + {MultichoiceList_61, ARRAY_COUNT(MultichoiceList_61)}, + {MultichoiceList_62, ARRAY_COUNT(MultichoiceList_62)}, + {MultichoiceList_63, ARRAY_COUNT(MultichoiceList_63)}, + {MultichoiceList_64, ARRAY_COUNT(MultichoiceList_64)}, + {MultichoiceList_65, ARRAY_COUNT(MultichoiceList_65)}, + {MultichoiceList_66, ARRAY_COUNT(MultichoiceList_66)}, + {MultichoiceList_67, ARRAY_COUNT(MultichoiceList_67)}, + {MultichoiceList_68, ARRAY_COUNT(MultichoiceList_68)}, + {MultichoiceList_69, ARRAY_COUNT(MultichoiceList_69)}, + {MultichoiceList_70, ARRAY_COUNT(MultichoiceList_70)}, + {MultichoiceList_71, ARRAY_COUNT(MultichoiceList_71)}, + {MultichoiceList_72, ARRAY_COUNT(MultichoiceList_72)}, +}; + +const u8 *const gUnknown_083CE048[] = +{ + OtherText_Cool2, + OtherText_Beauty3, + OtherText_Cute2, + OtherText_Smart2, + OtherText_Tough2, + OtherText_Normal, + OtherText_Super, + OtherText_Hyper, + OtherText_Master, + OtherText_Cool3, + OtherText_Beauty4, + OtherText_Cute3, + OtherText_Smart3, + OtherText_Tough3, + OtherText_Items, + OtherText_KeyItems, + OtherText_Balls, + OtherText_TMsHMs, + OtherText_Berries, +}; + +extern u8 gPCText_WhichPCShouldBeAccessed[]; + +extern u16 gScriptResult; + +static void Task_HandleMultichoiceInput(u8); +static void Task_HandleYesNoInput(u8); +static void Task_HandleMultichoiceGridInput(u8); +static u16 GetStringWidthInTilesForScriptMenu(const u8 *str); +static void DrawMultichoiceMenu(u8, u8, u8, const struct MenuAction *list, u8, u8); +static void StartScriptMenuTask(u8, u8, u8, u8, u8, u8); +static void sub_80B53B4(u8, u8, u8, const struct MenuAction *list, u8); +static bool8 IsPicboxClosed(void); + +bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, 0); + return TRUE; + } +} + +bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 defaultChoice) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, defaultChoice); + return TRUE; + } +} + +static u16 GetStringWidthInTilesForScriptMenu(const u8 *str) +{ + // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. + return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8; +} + +static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos) +{ + u16 width = GetStringWidthInTilesForScriptMenu(list[0].text); + u16 newWidth; + u8 i; + u8 right; + u8 bottom; + + for (i = 1; i < count; i++) + { + newWidth = GetStringWidthInTilesForScriptMenu(list[i].text); + if (width < newWidth) + width = newWidth; + } + + right = width; + right = (right + left) + 1; + + if (right > 29) + { + left = left + (29 - right); + right = 29; + } + + bottom = top + (2 * count + 1); + + MenuDrawTextWindow(left, top, right, bottom); + PrintMenuItems(left + 1, top + 1, count, list); + InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1); + StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); +} + +#define tLeft data[0] +#define tTop data[1] +#define tRight data[2] +#define tBottom data[3] +#define tIgnoreBPress data[4] +#define tDoWrap data[5] + +static void StartScriptMenuTask(u8 left, u8 top, u8 right, u8 bottom, u8 ignoreBPress, u8 count) +{ + u8 taskId = CreateTask(Task_HandleMultichoiceInput, 80); + + gTasks[taskId].tLeft = left; + gTasks[taskId].tTop = top; + gTasks[taskId].tRight = right; + gTasks[taskId].tBottom = bottom; + gTasks[taskId].tIgnoreBPress = ignoreBPress; + + if (count > 3) + gTasks[taskId].tDoWrap = TRUE; + else + gTasks[taskId].tDoWrap = FALSE; +} + +static void Task_HandleMultichoiceInput(u8 taskId) +{ + s8 selection; + + if (!gPaletteFade.active) + { + if (!gTasks[taskId].tDoWrap) + selection = ProcessMenuInputNoWrap(); + else + selection = ProcessMenuInput(); + + if (selection != -2) + { + if (selection == -1) + { + if (gTasks[taskId].tIgnoreBPress) + return; + PlaySE(SE_SELECT); + gScriptResult = 127; + } + else + { + gScriptResult = selection; + } + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); + DestroyTask(taskId); + EnableBothScriptContexts(); + } + } +} + +bool8 Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + sub_80B53B4(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress); + return TRUE; + } +} + +static void sub_80B53B4(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress) +{ + u16 width = GetStringWidthInTilesForScriptMenu(list[0].text); + u16 newWidth; + u8 i; + u8 right; + u8 bottom; + + for (i = 1; i < count; i++) + { + newWidth = GetStringWidthInTilesForScriptMenu(list[i].text); + if (width < newWidth) + width = newWidth; + } + + right = width; + right = (right + left) + 2; + bottom = top + (2 * count + 1); + + PrintMenuItems(left, top, count, list); + InitMenu(0, left, top, count, 0, right - left - 1); + StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); +} + +bool8 ScriptMenu_YesNo(u8 left, u8 top) +{ + u8 taskId; + + if (FuncIsActiveTask(Task_HandleYesNoInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + DisplayYesNoMenu(left, top, 1); + taskId = CreateTask(Task_HandleYesNoInput, 0x50); + gTasks[taskId].tLeft = left; + gTasks[taskId].tTop = top; + return TRUE; + } +} + +// unused +bool8 IsScriptActive(void) +{ + if (gScriptResult == 0xFF) + return FALSE; + else + return TRUE; +} + +static void Task_HandleYesNoInput(u8 taskId) +{ + u8 left, top; + + if (gTasks[taskId].tRight < 5) + { + gTasks[taskId].tRight++; + return; + } + + switch (ProcessMenuInputNoWrap()) + { + case -2: + return; + case -1: + case 1: + PlaySE(SE_SELECT); + gScriptResult = 0; + break; + case 0: + gScriptResult = 1; + break; + } + + left = gTasks[taskId].tLeft; + top = gTasks[taskId].tTop; + + MenuZeroFillWindowRect(left, top, left + 6, top + 5); + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 columnCount) +{ + u8 bottom = 0; + + if (FuncIsActiveTask(Task_HandleMultichoiceGridInput) == TRUE) + { + return FALSE; + } + else + { + u8 taskId; + u8 width; + + gScriptResult = 0xFF; + + sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0); + + taskId = CreateTask(Task_HandleMultichoiceGridInput, 80); + + if (!((gMultichoiceLists[multichoiceId].count >> 1) < columnCount || (gMultichoiceLists[multichoiceId].count & 1)) + || columnCount == 1 || gMultichoiceLists[multichoiceId].count == columnCount) + { + bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 1 + top; + } + else + { + bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 3 + top; + } + + width = sub_807288C(columnCount); + gTasks[taskId].tLeft = left; + gTasks[taskId].tTop = top; + gTasks[taskId].tRight = width + left + 2; + gTasks[taskId].tBottom = bottom; + gTasks[taskId].tIgnoreBPress = ignoreBPress; + return TRUE; + } +} + +static void Task_HandleMultichoiceGridInput(u8 taskId) +{ + s8 selection = sub_80727CC(); + + if (selection != -2) + { + if (selection == -1) + { + if (gTasks[taskId].tIgnoreBPress) + return; + PlaySE(SE_SELECT); + gScriptResult = 127; + } + else + { + gScriptResult = selection; + } + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); + DestroyTask(taskId); + EnableBothScriptContexts(); + } +} + +#undef tLeft +#undef tTop +#undef tRight +#undef tBottom +#undef tIgnoreBPress +#undef tDoWrap + +bool8 ScrSpecial_CreatePCMenu(void) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + ScriptMenu_CreatePCMenu(); + return TRUE; + } +} + +#if ENGLISH +void ScriptMenu_CreatePCMenu(void) +{ + u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC); + u8 width; + u8 numChoices; + + if (playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC)) + width = playersPCWidth; + else + width = 8; + + if (FlagGet(SYS_GAME_CLEAR)) // player has cleared game? + { + numChoices = 4; + MenuDrawTextWindow(0, 0, width + 2, 9); + MenuPrint(gPCText_HallOfFame, 1, 5); + MenuPrint(gPCText_LogOff, 1, 7); + } + else + { + numChoices = 3; + MenuDrawTextWindow(0, 0, width + 2, 7); + MenuPrint(gPCText_LogOff, 1, 5); + } + + if (FlagGet(SYS_PC_LANETTE)) // player met lanette? + MenuPrint(gPCText_LanettesPC, 1, 1); + else + MenuPrint(gPCText_SomeonesPC, 1, 1); + + MenuPrint(gPCText_PlayersPC, 1, 3); + InitMenu(0, 1, 1, numChoices, 0, width + 1); + StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); +} +#elif GERMAN +__attribute__((naked)) +void ScriptMenu_CreatePCMenu(void) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + sub sp, 0x18\n\ + ldr r0, _080B5748 @ =0x0000084b\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080B5750\n\ + ldr r0, _080B574C @ =gPCText_LanettesPC\n\ + b _080B5752\n\ + .align 2, 0\n\ +_080B5748: .4byte 0x0000084b\n\ +_080B574C: .4byte gPCText_LanettesPC\n\ +_080B5750:\n\ + ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\ +_080B5752:\n\ + bl GetStringWidthInTilesForScriptMenu\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + movs r4, 0x1\n\ + ldr r0, _080B57EC @ =gPCText_PlayersPC\n\ + bl GetStringWidthInTilesForScriptMenu\n\ + lsls r1, r4, 2\n\ + add r1, sp\n\ + adds r1, 0x8\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [r1]\n\ + ldr r0, _080B57F0 @ =gPCText_LogOff\n\ + bl GetStringWidthInTilesForScriptMenu\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x10]\n\ + movs r4, 0x3\n\ + ldr r0, _080B57F4 @ =0x00000804\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080B5798\n\ + ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ + bl GetStringWidthInTilesForScriptMenu\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x14]\n\ + movs r4, 0x4\n\ +_080B5798:\n\ + movs r5, 0\n\ + cmp r5, r4\n\ + bge _080B57B4\n\ + add r2, sp, 0x8\n\ + adds r1, r4, 0\n\ +_080B57A2:\n\ + ldr r0, [r2]\n\ + cmp r5, r0\n\ + bge _080B57AC\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ +_080B57AC:\n\ + adds r2, 0x4\n\ + subs r1, 0x1\n\ + cmp r1, 0\n\ + bne _080B57A2\n\ +_080B57B4:\n\ + ldr r0, _080B57F4 @ =0x00000804\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080B57FC\n\ + movs r7, 0x4\n\ + adds r4, r5, 0x2\n\ + lsls r2, r4, 24\n\ + lsrs r2, 24\n\ + movs r0, 0\n\ + movs r1, 0\n\ + movs r3, 0x9\n\ + bl MenuDrawTextWindow\n\ + ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ + movs r1, 0x1\n\ + movs r2, 0x5\n\ + bl MenuPrint\n\ + ldr r0, _080B57F0 @ =gPCText_LogOff\n\ + movs r1, 0x1\n\ + movs r2, 0x7\n\ + bl MenuPrint\n\ + b _080B5818\n\ + .align 2, 0\n\ +_080B57E8: .4byte gPCText_SomeonesPC\n\ +_080B57EC: .4byte gPCText_PlayersPC\n\ +_080B57F0: .4byte gPCText_LogOff\n\ +_080B57F4: .4byte 0x00000804\n\ +_080B57F8: .4byte gPCText_HallOfFame\n\ +_080B57FC:\n\ + movs r7, 0x3\n\ + adds r4, r5, 0x2\n\ + lsls r2, r4, 24\n\ + lsrs r2, 24\n\ + movs r0, 0\n\ + movs r1, 0\n\ + movs r3, 0x7\n\ + bl MenuDrawTextWindow\n\ + ldr r0, _080B5834 @ =gPCText_LogOff\n\ + movs r1, 0x1\n\ + movs r2, 0x5\n\ + bl MenuPrint\n\ +_080B5818:\n\ + adds r6, r4, 0\n\ + ldr r0, _080B5838 @ =0x0000084b\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080B5840\n\ + ldr r0, _080B583C @ =gPCText_LanettesPC\n\ + movs r1, 0x1\n\ + movs r2, 0x1\n\ + bl MenuPrint\n\ + b _080B584A\n\ + .align 2, 0\n\ +_080B5834: .4byte gPCText_LogOff\n\ +_080B5838: .4byte 0x0000084b\n\ +_080B583C: .4byte gPCText_LanettesPC\n\ +_080B5840:\n\ + ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\ + movs r1, 0x1\n\ + movs r2, 0x1\n\ + bl MenuPrint\n\ +_080B584A:\n\ + ldr r0, _080B588C @ =gPCText_PlayersPC\n\ + movs r1, 0x1\n\ + movs r2, 0x3\n\ + bl MenuPrint\n\ + movs r4, 0\n\ + str r4, [sp]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x4]\n\ + movs r0, 0\n\ + movs r1, 0x1\n\ + movs r2, 0x1\n\ + adds r3, r7, 0\n\ + bl InitMenu\n\ + lsls r2, r6, 24\n\ + lsrs r2, 24\n\ + lsls r3, r7, 1\n\ + adds r3, 0x1\n\ + str r4, [sp]\n\ + str r7, [sp, 0x4]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl StartScriptMenuTask\n\ + add sp, 0x18\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B5888: .4byte gPCText_SomeonesPC\n\ +_080B588C: .4byte gPCText_PlayersPC\n\ + .syntax divided\n"); +} +#endif + +void ScriptMenu_DisplayPCStartupPrompt(void) +{ + MenuDisplayMessageBox(); + MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15); +} + +#define tState data[0] +#define tMonSpecies data[1] +#define tMonSpriteId data[2] +#define tWindowX data[3] +#define tWindowY data[4] + +static void Task_PokemonPicWindow(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->tState) + { + case 0: + task->tState++; + break; + case 1: + break; + case 2: + FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId]); + task->tState++; + break; + case 3: + MenuZeroFillWindowRect(task->tWindowX, task->tWindowY, task->tWindowX + 9, task->tWindowY + 10); + DestroyTask(taskId); + break; + } +} + +bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y) +{ + u8 taskId; + u8 spriteId; + + if (FindTaskIdByFunc(Task_PokemonPicWindow) != 0xFF) + { + return FALSE; + } + else + { + MenuDrawTextWindow(x, y, x + 9, y + 10); + taskId = CreateTask(Task_PokemonPicWindow, 0x50); + gTasks[taskId].tState = 0; + gTasks[taskId].tMonSpecies = species; + spriteId = CreateMonSprite_PicBox(species, x * 8 + 40, y * 8 + 40, 0); + gTasks[taskId].tMonSpriteId = spriteId; + gTasks[taskId].tWindowX = x; + gTasks[taskId].tWindowY = y; + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].oam.priority = 0; + return TRUE; + } +} + +bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void) +{ + u8 taskId = FindTaskIdByFunc(Task_PokemonPicWindow); + + if (taskId == 0xFF) + return NULL; + gTasks[taskId].tState++; + return IsPicboxClosed; +} + +static bool8 IsPicboxClosed(void) +{ + if (FindTaskIdByFunc(Task_PokemonPicWindow) == 0xFF) + return TRUE; + else + return FALSE; +} + +#undef tState +#undef tMonSpecies +#undef tMonSpriteId +#undef tWindowX +#undef tWindowY diff --git a/src/script_movement.c b/src/field/script_movement.c index e25b60a3c..30e10b451 100644 --- a/src/script_movement.c +++ b/src/field/script_movement.c @@ -13,33 +13,33 @@ static bool8 sub_80A21F4(u8, u8, u8 *); static u8 sub_80A2260(u8, u8); static bool8 sub_80A2370(u8, u8); static void sub_80A23C8(u8, u8, u8, u8 *); -static void sub_80A2408(u8); +static void UnfreezeObjects(u8); static void Task_80A244C(u8); static void sub_80A2490(u8, u8, u8, u8 *); -bool8 exec_movement(u8 a, u8 b, u8 c, u8 *d) +bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, u8 *movementScript) { u8 mapObjId; - if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId)) + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjId)) return TRUE; if (!FuncIsActiveTask(Task_80A244C)) sub_80A2198(50); - return sub_80A21F4(sub_80A21E0(), mapObjId, d); + return sub_80A21F4(sub_80A21E0(), mapObjId, movementScript); } -bool8 sub_80A212C(u8 a, u8 b, u8 c) +bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank) { u8 mapObjId; u8 r4; u8 r1; - if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId)) - return 1; + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &mapObjId)) + return TRUE; r4 = sub_80A21E0(); r1 = sub_80A2260(r4, mapObjId); if (r1 == 16) - return 1; + return TRUE; return sub_80A2370(r4, r1); } @@ -50,7 +50,7 @@ void sub_80A2178(void) taskId = sub_80A21E0(); if (taskId != 0xFF) { - sub_80A2408(taskId); + UnfreezeObjects(taskId); DestroyTask(taskId); } } @@ -70,27 +70,31 @@ static u8 sub_80A21E0(void) return FindTaskIdByFunc(Task_80A244C); } -static bool8 sub_80A21F4(u8 taskId, u8 b, u8 *c) +static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, u8 *movementScript) { u8 r4; - r4 = sub_80A2260(taskId, b); + r4 = sub_80A2260(taskId, mapObjId); if (r4 != 16) { if (sub_80A2370(taskId, r4) == 0) + { return TRUE; + } else { - sub_80A23C8(taskId, r4, b, c); + sub_80A23C8(taskId, r4, mapObjId, movementScript); return FALSE; } } r4 = sub_80A2260(taskId, 0xFF); if (r4 == 16) + { return TRUE; + } else { - sub_80A23C8(taskId, r4, b, c); + sub_80A23C8(taskId, r4, mapObjId, movementScript); return FALSE; } } @@ -156,9 +160,9 @@ static bool8 sub_80A2370(u8 taskId, u8 b) return FALSE; } -static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *b) +static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *movementScript) { - gUnknown_020384F8[a] = b; + gUnknown_020384F8[a] = movementScript; } static u8 *sub_80A23B8(u8 a) @@ -166,23 +170,23 @@ static u8 *sub_80A23B8(u8 a) return gUnknown_020384F8[a]; } -static void sub_80A23C8(u8 taskId, u8 b, u8 c, u8 *d) +static void sub_80A23C8(u8 taskId, u8 b, u8 mapObjId, u8 *movementScript) { sub_80A2318(taskId, b); - npc_obj_offscreen_culling_and_flag_update(b, d); - sub_80A22D0(taskId, b, c); + npc_obj_offscreen_culling_and_flag_update(b, movementScript); + sub_80A22D0(taskId, b, mapObjId); } -static void sub_80A2408(u8 a) +static void UnfreezeObjects(u8 taskId) { - u8 *ptr; + u8 *pMapObjId; u8 i; - ptr = (u8 *)&gTasks[a].data[1]; - for (i = 0; i < 16; i++, ptr++) + pMapObjId = (u8 *)&gTasks[taskId].data[1]; + for (i = 0; i < 16; i++, pMapObjId++) { - if (*ptr != 0xFF) - UnfreezeMapObject(&gMapObjects[*ptr]); + if (*pMapObjId != 0xFF) + UnfreezeMapObject(&gMapObjects[*pMapObjId]); } } @@ -199,23 +203,23 @@ static void Task_80A244C(u8 taskId) } } -static void sub_80A2490(u8 taskId, u8 b, u8 c, u8 *d) +static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, u8 *d) { u8 var; - if (FieldObjectIsSpecialAnimActive(&gMapObjects[c]) - && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[c])) + if (FieldObjectIsSpecialAnimActive(&gMapObjects[mapObjId]) + && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId])) return; var = *d; if (var == 0xFE) { sub_80A2348(taskId, b); - FreezeMapObject(&gMapObjects[c]); + FreezeMapObject(&gMapObjects[mapObjId]); } else { - if (!FieldObjectSetSpecialAnim(&gMapObjects[c], var)) + if (!FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], var)) { d++; npc_obj_offscreen_culling_and_flag_update(b, d); diff --git a/src/secret_base.c b/src/field/secret_base.c index 4e8331f5c..f221d7f16 100644 --- a/src/secret_base.c +++ b/src/field/secret_base.c @@ -14,7 +14,7 @@ #include "metatile_behavior.h" #include "palette.h" #include "pokemon.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "string_util.h" #include "strings.h" @@ -270,7 +270,7 @@ void sub_80BBAF0(void) bool8 sub_80BBB24(void) { - if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) + if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0) return FALSE; return TRUE; } @@ -301,7 +301,7 @@ void sub_80BBBEC(u8 taskid) s8 idx; if (!gPaletteFade.active) { idx = 4 * (gUnknown_020387DC / 10); - warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); + Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); warp_in(); gFieldCallback = sub_80BBB90; SetMainCallback2(CB2_LoadMap); @@ -380,7 +380,7 @@ void sub_80BBDD0(void) gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + 0x3f20; VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); gScriptResult = gMapHeader.events->mapObjects[objid].localId; - FlagReset(gSpecialVar_0x8004 + 0xAE); + FlagClear(gSpecialVar_0x8004 + 0xAE); show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); @@ -690,7 +690,7 @@ _080BBEDA:\n\ adds r0, 0xAE\n\ lsls r0, 16\n\ lsrs r0, 16\n\ - bl FlagReset\n\ + bl FlagClear\n\ ldr r3, _080BBF9C @ =gScriptResult\n\ ldrb r0, [r3]\n\ mov r4, r10\n\ diff --git a/src/field/shop.c b/src/field/shop.c new file mode 100644 index 000000000..375205935 --- /dev/null +++ b/src/field/shop.c @@ -0,0 +1,1351 @@ +#include "global.h" +#include "shop.h" +#include "decompress.h" +#include "field_fadetransition.h" +#include "field_weather.h" +#include "item_menu.h" +#include "main.h" +#include "menu.h" +#include "menu_helpers.h" +#include "money.h" +#include "palette.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "strings.h" +#include "task.h" +#include "tv.h" +#include "unknown_task.h" +#include "field_map_obj.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "item.h" +#include "decoration.h" +#include "items.h" +#include "songs.h" +#include "overworld.h" +#include "decoration_inventory.h" +#include "field_camera.h" + +#define ewram18000 ((u16 *)(ewram + 0x18000)) +#define ewram18300 ((u16 *)(ewram + 0x18300)) + +extern bool8 sub_80A52C4(u8, u8); + +extern u8 ewram[]; +extern u8 gBuyMenuFrame_Gfx[]; +extern u16 gBuyMenuFrame_Tilemap[]; +extern u16 gMenuMoneyPal[16]; + +void sub_80B39D0(int var1, int var2, bool32 hasControlCode); +void sub_80B3A70(void); +void sub_80B4378(u8); +void sub_80B43F0(u8); +void Task_ExitBuyMenu(u8); +void sub_80B4470(u8); +void sub_80B2EFC(u8 taskId); +void sub_80B2F30(u8 taskId); +void HandleShopMenuQuit(u8 taskId); +void sub_80B3BF4(u8 taskId); +void sub_80B3D7C(u8 taskId); + +// iwram +static struct MartInfo gMartInfo; + +// ewram +EWRAM_DATA u32 gMartTotalCost = 0; +EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; // game freak barely uses 2d arrays wtf? +EWRAM_DATA struct ItemSlot gUnknown_02038724[3] = {0}; // tv.c uses this, so it cant be static +EWRAM_DATA u8 gUnknown_02038730 = 0; +EWRAM_DATA u8 gUnknown_02038731 = 0; + +// rodata +static const struct MenuAction2 sBuySellQuitMenuActions[] = +{ + { MartText_Buy, sub_80B2EFC }, + { MartText_Sell, sub_80B2F30 }, + { MartText_Quit2, HandleShopMenuQuit }, +}; + +static const u8 gUnknown_083CC6E8[] = {0, 1, 2}; // BUY SELL EXIT +static const u8 gUnknown_083CC6EB[] = {0, 2}; // BUY EXIT + +static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0}; + +static const struct YesNoFuncTable gUnknown_083CC708[] = +{ + sub_80B3BF4, + sub_80B3D7C +}; + +u8 CreateShopMenu(u8 martType) +{ + ScriptContext2_Enable(); + gMartInfo.martType = martType; + gMartInfo.cursor = 0; + + if (martType == MART_TYPE_0) + { + gMartInfo.numChoices = 2; + MenuDrawTextWindow(0, 0, 10, 7); + PrintMenuItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); + } + else + { + gMartInfo.numChoices = 1; + MenuDrawTextWindow(0, 0, 10, 5); + PrintMenuItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); + } + InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel + + return CreateTask(sub_80B2E38, 8); +} + +void SetShopMenuCallback(void *callbackPtr) +{ + gMartInfo.callback = callbackPtr; +} + +void SetShopItemsForSale(u16 *items) +{ + u16 i = 0; + + gMartInfo.itemList = items; + gMartInfo.itemCount = 0; + + while (gMartInfo.itemList[i]) + { + gMartInfo.itemCount++; + i++; + } +} + +void sub_80B2E38(u8 var) +{ + const u8 local = var; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (gMartInfo.cursor) // can move cursor up? + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(-1); + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (gMartInfo.cursor != gMartInfo.numChoices) // can move cursor down? + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gMartInfo.martType == MART_TYPE_0) + { + sBuySellQuitMenuActions[gUnknown_083CC6E8[gMartInfo.cursor]].func(local); + } + else + { + sBuySellQuitMenuActions[gUnknown_083CC6EB[gMartInfo.cursor]].func(local); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + HandleShopMenuQuit(local); + } +} + +void sub_80B2EFC(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; + gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; + gTasks[taskId].func = sub_80B2FA0; + fade_screen(1, 0); +} + +void sub_80B2F30(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16; + gTasks[taskId].data[9] = (u32)sub_80A6300; + gTasks[taskId].func = sub_80B2FA0; + fade_screen(1, 0); +} + +void HandleShopMenuQuit(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 11, 8); + sub_80BE3BC(); + ScriptContext2_Disable(); + DestroyTask(taskId); + + if (gMartInfo.callback) + gMartInfo.callback(); // run the callback if it exists. +} + +void sub_80B2FA0(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9])); + DestroyTask(taskId); + } +} + +void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) +{ + CreateShopMenu(gMartInfo.martType); + DestroyTask(taskId); +} + +void Task_ExitSellMenu(u8 taskId) +{ + if (sub_807D770() == 1) + { + if (gMartInfo.martType == MART_TYPE_2) + DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0); + else + DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0); + } +} + +void sub_80B3050(void) +{ + pal_fill_black(); + CreateTask(Task_ExitSellMenu, 0x8); +} + +void sub_80B3068(u8 taskId) +{ + Task_ExitSellMenu(taskId); +} + +void unref_sub_80B3078(u8 taskId) +{ + gTasks[taskId].func = Task_ExitSellMenu; +} + +void sub_80B3094(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); +} + +void sub_80B30AC(void) +{ + void *addr; + void *addr2; + void *addr3; + u16 *tempArr; + u16 *tempArr2; + u16 *tempArr3; + + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + // temp vars needed to match for some dumb reason + tempArr = gBGTilemapBuffers[1]; + addr = (void *)(VRAM + 0xE800); + DmaCopy16(3, tempArr, addr, 0x800); + tempArr2 = gBGTilemapBuffers[2]; + addr2 = (void *)(VRAM + 0xE000); + DmaCopy16(3, tempArr2, addr2, 0x800); + tempArr3 = gBGTilemapBuffers[3]; + addr3 = (void *)(VRAM + 0xF000); + DmaCopy16(3, tempArr3, addr3, 0x800); +} + +// this function is fugly. pls fix +void BuyMenuDrawGraphics(void) +{ + void *addr; + register u16 zero2 asm("r5"); + + sub_80F9438(); + remove_some_task(); + REG_BG1HOFS = (zero2 = 0); + REG_BG1VOFS = zero2; + REG_BG2HOFS = zero2; + REG_BG2VOFS = zero2; + REG_BG3HOFS = zero2; + REG_BG3VOFS = zero2; + gPaletteFade.bufferTransferDisabled = 1; + addr = (void*)OAM; + { + register const u32 zero asm("r6") = 0; + DmaFill32(3, zero, addr, OAM_SIZE); + LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00)); + LZDecompressWram(gBuyMenuFrame_Tilemap, (void *)0x02018000); + LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal)); + FreeAllSpritePalettes(); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + SetUpWindowConfig(&gWindowConfig_81E6DFC); + InitMenuWindow(&gWindowConfig_81E6DFC); + BuyMenuDrawMapGraphics(); + gMartInfo.cursor = zero; + gMartInfo.choicesAbove = zero2; + MenuZeroFillWindowRect(0, 0, 0x20, 0x20); + OpenMoneyWindow(gSaveBlock1.money, 0, 0); + sub_80B3764(0, 7); + sub_80B37EC(); + sub_80B3270(); + CreateTask(sub_80B40E8, 0x8); + sub_80B3240(); + asm("":::"r4"); // what?? + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero); + gPaletteFade.bufferTransferDisabled = 0; + SetVBlankCallback(sub_80B30AC); + SetMainCallback2(sub_80B3094); + } +} + +void sub_80B3240(void) +{ + u16 tempArr[2] = {0x41EE, 0x7FFF}; + + LoadPalette(&tempArr[1], 0xD1, 2); + LoadPalette(&tempArr[0], 0xD8, 2); +} + +void sub_80B3270(void) +{ + sub_80F944C(); + + if (gMartInfo.itemCount > 7) + { + CreateVerticalScrollIndicators(0, 172, 12); + CreateVerticalScrollIndicators(1, 172, 148); + sub_80F979C(0, 1); + } +} + +void sub_80B32A4(void) +{ + if (gMartInfo.choicesAbove == 0) + sub_80F979C(0, 1); + else + sub_80F979C(0, 0); + + if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount) + sub_80F979C(1, 1); + else + sub_80F979C(1, 0); +} + +void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) +{ + array[offset1 + offset2] = 0xC3E1; + array[offset1 + offset2 + 1] = 0xC3E1; +} + +void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) +{ + array[offset1 + offset2] = array2[0]; + array[offset1 + offset2 + 1] = array2[1]; + array[offset1 + offset2 + 32] = array2[2]; + array[offset1 + offset2 + 33] = array2[3]; +} + +void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) +{ + u8 tempVar4 = var4; + s16 offset1 = var1 * 2; + s16 offset2 = (var2 * 0x40) + 0x40; + + switch (tempVar4) + { + case 0: // _080B335C + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); + break; + case 1: // _080B3364 + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); + break; + case 2: // _080B3398 + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); + break; + } +} + +void sub_80B33D0(s16 var1, int var2, u16 *var3) +{ + s16 offset1 = var1 * 2; + s16 offset2 = (var2 * 0x40) + 0x40; + + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); +} + +void sub_80B3420(void) +{ + s16 facingX; + s16 facingY; + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); + facingX -= 3; + facingY -= 3; + + for (y = 0; y < 6; y++) + { + for (x = 0; x < 7; x++) + { + u16 metatileId = MapGridGetMetatileIdAt(facingX + x, facingY + y); + + if (y != 5 && x != 6) + { + s32 r3 = MapGridGetMetatileLayerTypeAt(facingX + x, facingY + y); + + if (metatileId < 512) + BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8, r3); + else + BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8, r3); + } + else + { + if (metatileId < 512) + sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8); + else + sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8); + } + + if (y == 0 && x != 0 && x != 6) + sub_80B32EC(gBGTilemapBuffers[1], x * 2, 64); + } + } +} + +void BuyMenuDrawMapGraphics(void) +{ + sub_80F9020(); + sub_80B356C(); + sub_80B368C(); + sub_80B3420(); +} + +void sub_80B356C(void) +{ + s16 facingX; + s16 facingY; + u8 playerHeight; + u8 y; + u8 x; + u8 r8 = 0; + + GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); + playerHeight = PlayerGetZCoord(); + for (y = 0; y < 16; y++) + gUnknown_020386A4[y][MAP_OBJ_ID] = 16; + for (y = 0; y < 5; y++) + { + for (x = 0; x < 7; x++) + { + u8 mapObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, playerHeight); + + if (mapObjId != 16) + { + gUnknown_020386A4[r8][MAP_OBJ_ID] = mapObjId; + gUnknown_020386A4[r8][X_COORD] = x; + gUnknown_020386A4[r8][Y_COORD] = y; + if (gMapObjects[mapObjId].mapobj_unk_18 == 1) + gUnknown_020386A4[r8][ANIM_NUM] = 0; + if (gMapObjects[mapObjId].mapobj_unk_18 == 2) + gUnknown_020386A4[r8][ANIM_NUM] = 1; + if (gMapObjects[mapObjId].mapobj_unk_18 == 3) + gUnknown_020386A4[r8][ANIM_NUM] = 2; + if (gMapObjects[mapObjId].mapobj_unk_18 == 4) + gUnknown_020386A4[r8][ANIM_NUM] = 3; + r8++; + } + } + } +} + +void sub_80B368C(void) +{ + u8 i; + + for (i = 0; i < 16; i++) // max objects? + { + if (gUnknown_020386A4[i][MAP_OBJ_ID] == 16) + continue; + + StartSpriteAnim(&gSprites[AddPseudoFieldObject( + gMapObjects[gUnknown_020386A4[i][MAP_OBJ_ID]].graphicsId, + SpriteCallbackDummy, + (u16)gUnknown_020386A4[i][X_COORD] * 16 + 8, + (u16)gUnknown_020386A4[i][Y_COORD] * 16 + 32, + 2)], + gUnknown_020386A4[i][ANIM_NUM]); + } +} + +void sub_80B3720(void) +{ + s16 i; + + for (i = 0; i < 0x400; i++) + { + if (ewram18000[i] != 0) + gBGTilemapBuffers[1][i] = ewram18000[i] + 0xC3E0; + } +} + +void sub_80B3764(int var1, int var2) +{ + sub_80B3720(); + sub_80B39D0(var1, var2, 0); + InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF); +} + +void sub_80B379C(void) +{ + u16 i, j; + + for (i = 0; i < 8; i++) + for (j = 0; j < 14; j++) + gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0; +} + +void sub_80B37EC(void) +{ + sub_80B3A70(); +} + +void sub_80B37F8(u8 taskId) +{ + u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor; + u16 itemId = gMartInfo.itemList[itemListIndex]; + u32 price = (ItemId_GetPrice(itemId) >> GetPriceReduction(1)); + + PrintMoneyAmount(gTasks[taskId].data[1] * price, 6, 6, 11); + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; + gStringVar1[1] = 0x14; + gStringVar1[2] = 0x6; + ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2); + MenuPrint(gOtherText_xString1, 1, 11); + sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); +} + +void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) +{ + u8 *stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + { + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x1; + stringPtr[2] = 0x2; + stringPtr += 3; + } + + CopyItemName(itemId, stringPtr); + + sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1); + stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + stringPtr = &gStringVar1[3]; + + GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4); + MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); +} + +void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) +{ + u8 *stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + { + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x1; + stringPtr[2] = 0x2; + stringPtr += 3; + } + + StringCopy(stringPtr, gDecorations[itemId].name); + sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1); + stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + stringPtr = &gStringVar1[3]; + + if (gDecorations[itemId].price == 10000) + { + sub_80B7B34(0x19, var2, hasControlCode); // huh??? + } + else + { + GetMoneyAmountText(stringPtr, gDecorations[itemId].price, 0x4); + MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1); + } +} + +void sub_80B39D0(int var1, int var2, bool32 hasControlCode) +{ + u8 i; + + for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) + { + if (gMartInfo.martType == MART_TYPE_0) + sub_80B389C(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + else + sub_80B3930(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + } + + if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount) + { + MenuFillWindowRectWithBlankTile(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3); + MenuPrint(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2); + } +} + +void sub_80B3A70(void) +{ + if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) + { + if (gMartInfo.martType == MART_TYPE_0) + { + sub_8072AB0(ItemId_GetDescription(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]), + 0x4, 0x68, 0x68, 0x30, 0); + } + else + sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description, + 0x4, 0x68, 0x68, 0x30, 0); + } + else + { + sub_8072AB0(gOtherText_QuitShopping, 0x4, 0x68, 0x68, 0x30, 0); + } +} + +void sub_80B3AEC(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // huh??? + PlaySE(SE_SELECT); + + if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].data[1] >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) + DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, sub_80B4378, 0xC3E1); + else + sub_80B4378(taskId); + } +} + +void sub_80B3B80(u8 taskId) +{ + IncrementGameStat(0x26); + RemoveMoney(&gSaveBlock1.money, gMartTotalCost); + PlaySE(SE_REGI); + UpdateMoneyWindow(gSaveBlock1.money, 0, 0); + gTasks[taskId].func = sub_80B3AEC; +} + +void sub_80B3BD0(u8 taskId) +{ + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? + sub_80B4378(taskId); +} + +void sub_80B3BF4(u8 taskId) +{ + MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); + sub_80B379C(); + sub_80B3420(); + + if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + if (gMartInfo.martType == MART_TYPE_0) + { + if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].data[1])) + { + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1); + sub_80B4470(taskId); + } + else + DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, sub_80B3BD0, 0xC3E1); + } + else // a normal mart is only type 0, so types 1 and 2 are decoration marts. + { + if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) + { + if (gMartInfo.martType == MART_TYPE_1) + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, sub_80B3B80, 0xC3E1); + else + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, sub_80B3B80, 0xC3E1); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_SpaceForIsFull); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3BD0, 0xC3E1); + } + } + } + else + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); +} + +void sub_80B3D38(u8 taskId) +{ + DisplayYesNoMenu(7, 8, 1); + sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1); + DoYesNoFuncWithChoice(taskId, gUnknown_083CC708); +} + +void sub_80B3D7C(u8 taskId) +{ + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); + MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); + sub_80B4378(taskId); +} + +void sub_80B3DC8(u8 taskId) +{ + if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE) + sub_80B37F8(taskId); + + if (gMain.newKeys & A_BUTTON) + { + gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase. + MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); + sub_80B379C(); + sub_80B3420(); + CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].data[1], 0, 0x2); + ConvertIntToDecimalStringN(gStringVar3, gMartTotalCost, 0, 0x8); + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + } + else if (gMain.newKeys & B_BUTTON) + { + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); + sub_80B4378(taskId); + } +} + +void sub_80B3EFC(u8 taskId) +{ + u16 var; + + gTasks[taskId].data[1] = 1; + MenuDrawTextWindow(0, 0xA, 0xD, 0xD); + sub_80B37F8(taskId); + + var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); + if (var > 99) + gMartInfo.curItemCount = 99; + else + gMartInfo.curItemCount = var; + + gTasks[taskId].func = sub_80B3DC8; +} + +#ifdef NONMATCHING +void sub_80B3F88(void) +{ + u16 *r1; + u16 *r2; + register u8 *r10 asm("r10"); + s32 i; + s32 j; + struct Window *r8 = &gMenuWindow; + + r1 = r8->tilemap; + r1 += 0x1EF; + r2 = r1; + r2 += 64; + r10 = r8->tileData; + + for (i = 0; i < 14; i++) + { + for (j = 0; j < 15; j++) + { + if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1) + r2[j] = r8->tileDataStartOffset + 1; + else + r2[j] = r1[j] + 0x3C; + } + + r1 -= 32; + r2 -= 32; + } + + { + u8 *r1 = r10 + 0x3A20; + u8 *r2 = r1 + 0x780; + for (i = 0; i < 14; i++) + { + DmaCopy16(3, r1, r2, 0x1E0); + r2 -= 0x3C0; + r1 -= 0x3C0; + } + } +} +#else +__attribute__((naked)) +void sub_80B3F88(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r0, _080B4020 @ =gMenuWindow\n\ + mov r8, r0\n\ + ldr r1, [r0, 0x28]\n\ + ldr r3, _080B4024 @ =0x000003de\n\ + adds r1, r3\n\ + adds r2, r1, 0\n\ + adds r2, 0x80\n\ + ldr r7, [r0, 0x24]\n\ + mov r10, r7\n\ + ldr r0, _080B4028 @ =0x000003ff\n\ + mov r9, r0\n\ + movs r6, 0xD\n\ +_080B3FAC:\n\ + adds r3, r2, 0\n\ + subs r3, 0x40\n\ + str r3, [sp]\n\ + movs r7, 0x40\n\ + negs r7, r7\n\ + adds r7, r1\n\ + mov r12, r7\n\ + adds r3, r2, 0\n\ + adds r4, r1, 0\n\ + movs r5, 0xE\n\ +_080B3FC0:\n\ + ldrh r2, [r4]\n\ + mov r1, r9\n\ + ands r1, r2\n\ + mov r7, r8\n\ + ldrh r0, [r7, 0x1A]\n\ + adds r0, 0x1\n\ + cmp r1, r0\n\ + ble _080B3FD4\n\ + adds r0, r2, 0\n\ + adds r0, 0x3C\n\ +_080B3FD4:\n\ + strh r0, [r3]\n\ + adds r3, 0x2\n\ + adds r4, 0x2\n\ + subs r5, 0x1\n\ + cmp r5, 0\n\ + bge _080B3FC0\n\ + ldr r2, [sp]\n\ + mov r1, r12\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B3FAC\n\ + ldr r1, _080B402C @ =0x00003a20\n\ + add r1, r10\n\ + movs r0, 0xF0\n\ + lsls r0, 3\n\ + adds r2, r1, r0\n\ + ldr r3, _080B4030 @ =0x040000d4\n\ + ldr r5, _080B4034 @ =0x800000f0\n\ + ldr r4, _080B4038 @ =0xfffffc40\n\ + movs r6, 0xD\n\ +_080B3FFC:\n\ + str r1, [r3]\n\ + str r2, [r3, 0x4]\n\ + str r5, [r3, 0x8]\n\ + ldr r0, [r3, 0x8]\n\ + adds r2, r4\n\ + adds r1, r4\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B3FFC\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B4020: .4byte gMenuWindow\n\ +_080B4024: .4byte 0x000003de\n\ +_080B4028: .4byte 0x000003ff\n\ +_080B402C: .4byte 0x00003a20\n\ +_080B4030: .4byte 0x040000d4\n\ +_080B4034: .4byte 0x800000f0\n\ +_080B4038: .4byte 0xfffffc40\n\ + .syntax divided"); +} +#endif + +#ifdef NONMATCHING +void sub_80B403C(void) +{ + u16 *r1; + u16 *r2; + u8 *r10; + s32 i; + s32 j; + struct Window *r8 = &gMenuWindow; + + r1 = r8->tilemap; + r1 += 0x4F; + r2 = r1; + r2 += 64; + r10 = r8->tileData; + + for (i = 0; i < 14; i++) + { + for (j = 0; j < 15; j++) + { + if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1) + r2[j] = r8->tileDataStartOffset + 1; + else + r2[j] = r1[j] + 0x3C; + } + + r1 += 32; + r2 += 32; + } + + { + register u8 *r1 asm("r1") = r10 + 0x960; + register u8 *r2 asm("r2") = r1; + + r1 += 0x780; + for (i = 0; i < 14; i++) + { + DmaCopy16(3, r1, r2, 0x1E0); + r1 += 0x3C0; + r2 += 0x3C0; + } + } +} +#else +__attribute__((naked)) +void sub_80B403C(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r0, _080B40D8 @ =gMenuWindow\n\ + mov r8, r0\n\ + ldr r2, [r0, 0x28]\n\ + adds r1, r2, 0\n\ + adds r1, 0x9E\n\ + adds r2, r1, 0\n\ + adds r1, 0x80\n\ + ldr r3, [r0, 0x24]\n\ + mov r10, r3\n\ + ldr r7, _080B40DC @ =0x000003ff\n\ + mov r9, r7\n\ + movs r6, 0xD\n\ +_080B4060:\n\ + adds r0, r2, 0\n\ + adds r0, 0x40\n\ + str r0, [sp]\n\ + movs r3, 0x40\n\ + adds r3, r1\n\ + mov r12, r3\n\ + adds r3, r2, 0\n\ + adds r4, r1, 0\n\ + movs r5, 0xE\n\ +_080B4072:\n\ + ldrh r2, [r4]\n\ + mov r1, r9\n\ + ands r1, r2\n\ + mov r7, r8\n\ + ldrh r0, [r7, 0x1A]\n\ + adds r0, 0x1\n\ + cmp r1, r0\n\ + ble _080B4086\n\ + adds r0, r2, 0\n\ + subs r0, 0x3C\n\ +_080B4086:\n\ + strh r0, [r3]\n\ + adds r3, 0x2\n\ + adds r4, 0x2\n\ + subs r5, 0x1\n\ + cmp r5, 0\n\ + bge _080B4072\n\ + ldr r2, [sp]\n\ + mov r1, r12\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B4060\n\ + movs r1, 0x96\n\ + lsls r1, 4\n\ + add r1, r10\n\ + adds r2, r1, 0\n\ + movs r0, 0xF0\n\ + lsls r0, 3\n\ + adds r1, r0\n\ + ldr r3, _080B40E0 @ =0x040000d4\n\ + ldr r5, _080B40E4 @ =0x800000f0\n\ + movs r4, 0xF0\n\ + lsls r4, 2\n\ + movs r6, 0xD\n\ +_080B40B4:\n\ + str r1, [r3]\n\ + str r2, [r3, 0x4]\n\ + str r5, [r3, 0x8]\n\ + ldr r0, [r3, 0x8]\n\ + adds r2, r4\n\ + adds r1, r4\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B40B4\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B40D8: .4byte gMenuWindow\n\ +_080B40DC: .4byte 0x000003ff\n\ +_080B40E0: .4byte 0x040000d4\n\ +_080B40E4: .4byte 0x800000f0\n\ + .syntax divided"); +} +#endif + +void sub_80B40E8(u8 taskId) // Mart_DoCursorAction +{ + if (!gPaletteFade.active) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) // only up can be pressed + { + if (gMartInfo.cursor == 0) + { + if (gMartInfo.choicesAbove == 0) // if there are no choices above, dont bother + return; + + PlaySE(SE_SELECT); + gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove. + sub_80B3F88(); + sub_80B39D0(0, 0, 0); + sub_80B3A70(); + sub_80B32A4(); + } + else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor. + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(-1); // move cursor up + sub_80B3A70(); + } + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) // only down can be pressed + { + if (gMartInfo.cursor == 7) // are you at the bottom of the menu? + { + if (gMartInfo.choicesAbove + gMartInfo.cursor == gMartInfo.itemCount) // are you at cancel? + return; + + PlaySE(SE_SELECT); + gMartInfo.choicesAbove++; + sub_80B403C(); + sub_80B39D0(7, 7, 0); + sub_80B3A70(); + sub_80B32A4(); + } + else if (gMartInfo.cursor != gMartInfo.itemCount) + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(1); + sub_80B3A70(); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + + if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) // did you not hit CANCEL? + { + PauseVerticalScrollIndicator(0); + PauseVerticalScrollIndicator(1); + sub_80F979C(1, 1); + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0xC, 0xD, 0x13); + + if (gMartInfo.martType == MART_TYPE_0) + { + gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); // set 1x price + if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + } + else // _080B42BA + { + CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_HowManyYouWant); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3EFC, 0xC3E1); + } + } + else // _080B428C + { + gMartTotalCost = gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].price; + + if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + } + else + { + StringCopy(gStringVar1, gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].name); + ConvertIntToDecimalStringN(gStringVar2, gMartTotalCost, 0, 0x8); + + if (gMartInfo.martType == MART_TYPE_1) + { + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe2); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3); + } + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + } + } + } + else + sub_80B43F0(taskId); + } + else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu + { + PlaySE(SE_SELECT); + sub_80B43F0(taskId); + } + } +} + +void sub_80B4378(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0xE, 0x1D, 0x13); + MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); + sub_80B3420(); + sub_80B3764(6, 7); + sub_80B37EC(); + StartVerticalScrollIndicators(0); + StartVerticalScrollIndicators(1); + sub_80B32A4(); + gTasks[taskId].func = sub_80B40E8; +} + +void sub_80B43F0(u8 taskId) +{ + gFieldCallback = sub_80B3050; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_ExitBuyMenu; +} + +void Task_ExitBuyMenu(u8 taskId) +{ + if (!gPaletteFade.active) + { + CloseMoneyWindow(0, 0); + BuyMenuFreeMemory(); + SetMainCallback2(c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + } +} + +void sub_80B4470(u8 taskId) +{ + u16 i; + + for (i = 0; i < 3; i++) + { + if (gUnknown_02038724[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] + && gUnknown_02038724[i].quantity != 0) + { + if (gUnknown_02038724[i].quantity + gTasks[taskId].data[1] > 255) + gUnknown_02038724[i].quantity = 255; + else + gUnknown_02038724[i].quantity += gTasks[taskId].data[1]; + return; + } + } + + if (gUnknown_02038730 < 3) + { + gUnknown_02038724[gUnknown_02038730].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]; + gUnknown_02038724[gUnknown_02038730].quantity = gTasks[taskId].data[1]; + gUnknown_02038730++; + } +} + +void ClearItemPurchases(void) +{ + gUnknown_02038730 = 0; + ClearItemSlots(gUnknown_02038724, 3); +} + +void CreatePokemartMenu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_0); + SetShopItemsForSale(itemList); + ClearItemPurchases(); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void CreateDecorationShop1Menu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_1); + SetShopItemsForSale(itemList); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void CreateDecorationShop2Menu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_2); + SetShopItemsForSale(itemList); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void sub_80B45B4(u8 taskId, const s16 *list, u16 c) +{ + s16 r5 = gTasks[taskId].data[4] - 1; + s16 r3 = gTasks[taskId].data[5] - 1; + s16 r4 = gTasks[taskId].data[1]; + s16 y; + s16 x; + + if (gTasks[taskId].data[2] == 0) + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]); + } + } + } + } + else + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[2 - r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]); + } + } + } + } +} + +static const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280}; +static const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281}; +static const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288}; +static const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289}; +static const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4}; +static const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5}; +static const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC}; + +void sub_80B4710(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[3] = 1; + + switch (data[0]) + { + case 0: + sub_80B45B4(taskId, gUnknown_083CC714, 0); + break; + case 1: + sub_80B45B4(taskId, gUnknown_083CC71A, 0); + break; + case 2: + sub_80B45B4(taskId, gUnknown_083CC720, 0xC00); + break; + case 3: + sub_80B45B4(taskId, gUnknown_083CC726, 0); + break; + case 4: + sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00); + break; + case 5: + sub_80B45B4(taskId, gUnknown_083CC732, 0); + break; + case 6: + sub_80B45B4(taskId, gUnknown_083CC738, 0); + break; + } + + data[0] = (data[0] + 1) & 7; + if (!data[0]) + { + DrawWholeMapView(); + data[1] = (data[1] + 1) % 3; + data[3] = 0; + } +} + +u8 sub_80B47D8(u16 var) +{ + u8 taskId = CreateTask(sub_80B4710, 0); + s16 *data = gTasks[taskId].data; + + PlayerGetDestCoords(&data[4], &data[5]); + data[0] = 0; + data[1] = 0; + data[2] = var; + sub_80B4710(taskId); + return taskId; +} + +void sub_80B4824(u8 var) +{ + gUnknown_02038731 = sub_80B47D8(var); +} + +void sub_80B483C(void) +{ + DestroyTask(gUnknown_02038731); +} + +bool8 sub_80B4850(void) +{ + if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2) + return FALSE; + else + return TRUE; +} diff --git a/src/slot_machine.c b/src/field/slot_machine.c index c9a06a758..e8e4f271b 100644 --- a/src/slot_machine.c +++ b/src/field/slot_machine.c @@ -71,7 +71,7 @@ void sub_8106448(void) { u32 offsetRead, offsetWrite; u32 size; - sub_800D238(gSlotMachine_Gfx, (void *) 0x02010000); + LZDecompressWram(gSlotMachine_Gfx, (void *) 0x02010000); offsetRead = 0x02010000; offsetWrite = BG_VRAM; diff --git a/src/start_menu.c b/src/field/start_menu.c index 411690aff..6e44090df 100644 --- a/src/start_menu.c +++ b/src/field/start_menu.c @@ -15,7 +15,7 @@ #include "pokedex.h" #include "pokemon_menu.h" #include "pokenav.h" -#include "rom4.h" +#include "overworld.h" #include "safari_zone.h" #include "save.h" #include "save_menu_util.h" @@ -505,7 +505,7 @@ static u8 RunSaveDialogCallback(void) return saveDialogCallback(); } -void InitSaveDialog(void) +void ScrSpecial_DoSaveDialog(void) { sub_807160C(); CreateTask(Task_SaveDialog, 0x50); @@ -515,7 +515,7 @@ static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void)) { StringExpandPlaceholders(gStringVar4, ptr); MenuDisplayMessageBox(); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); savingComplete = TRUE; saveDialogCallback = func; } diff --git a/src/starter_choose.c b/src/field/starter_choose.c index 2b28df4f0..2b28df4f0 100644 --- a/src/starter_choose.c +++ b/src/field/starter_choose.c diff --git a/src/trader.c b/src/field/trader.c index ea06058e9..61f48fad8 100644 --- a/src/trader.c +++ b/src/field/trader.c @@ -3,6 +3,7 @@ #include "decoration_inventory.h" #include "event_data.h" #include "main.h" +#include "mauville_man.h" #include "menu.h" #include "menu_helpers.h" #include "script.h" @@ -36,7 +37,7 @@ void sub_810993C(void) { u8 i, j; u8 buffer[12]; - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; for (i = 0; i < 3; i++) { @@ -55,13 +56,13 @@ void sub_810993C(void) } } -void sub_81099CC(void) +void TraderSetup(void) { u8 i; - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; - trader->unk0 = 2; - trader->unk31 = 0; + trader->id = MAUVILLE_MAN_TRADER; + trader->alreadyTraded = FALSE; for (i = 0; i < 4; i++) { @@ -74,8 +75,8 @@ void sub_81099CC(void) void sub_8109A20(void) { - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; - trader->unk31 = 0; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + trader->alreadyTraded = FALSE; } void sub_8109A30(u8 value) @@ -83,12 +84,12 @@ void sub_8109A30(u8 value) VarSet(VAR_RECYCLE_GOODS, value); } -void sub_8109A48(u8 taskId) +void CreateAvailableDecorationsMenu(u8 taskId) { u8 i; u8 numChoices = 1; u8 numDecorations = 0; - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; for (i = 0; i < 4; i++) { @@ -139,9 +140,9 @@ void sub_8109B34(u8 taskId, u8 decorationId) EnableBothScriptContexts(); } -void sub_8109B7C(u8 taskId) +void Task_HandleGetDecorationMenuInput(u8 taskId) { - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; if (gMain.newKeys & DPAD_UP) { @@ -174,13 +175,13 @@ void sub_8109B7C(u8 taskId) } } -void sub_8109C44(void) +void ScrSpecial_GetTraderTradedFlag(void) { - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; - gScriptResult = trader->unk31; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + gScriptResult = trader->alreadyTraded; } -void sub_8109C58(void) +void ScrSpecial_DoesPlayerHaveNoDecorations(void) { u8 i; @@ -195,7 +196,7 @@ void sub_8109C58(void) gScriptResult = TRUE; } -void sub_8109C90(void) +void ScrSpecial_IsDecorationFull(void) { gScriptResult = FALSE; if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category @@ -206,7 +207,7 @@ void sub_8109C90(void) } } -void sub_8109CF0(void) +void ScrSpecial_TraderMenuGiveDecoration(void) { CreateTask(sub_80FE7A8, 0); } @@ -242,20 +243,20 @@ void sub_8109DAC(u8 taskId) EnableBothScriptContexts(); } -void sub_8109DE0(void) +void ScrSpecial_TraderDoDecorationTrade(void) { - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; sub_81340A8(gSpecialVar_0x8006); IsThereStorageSpaceForDecoration(gSpecialVar_0x8004); StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName); trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006; sub_810993C(); - trader->unk31 = 1; + trader->alreadyTraded = TRUE; } -void sub_8109E34(void) +void ScrSpecial_TraderMenuGetDecoration(void) { - u8 taskId = CreateTask(sub_8109B7C, 0); - sub_8109A48(taskId); + u8 taskId = CreateTask(Task_HandleGetDecorationMenuInput, 0); + CreateAvailableDecorationsMenu(taskId); } diff --git a/src/field/trainer_see.c b/src/field/trainer_see.c new file mode 100644 index 000000000..5a8ebbafc --- /dev/null +++ b/src/field/trainer_see.c @@ -0,0 +1,519 @@ +#include "global.h" +#include "trainer_see.h" +#include "battle_setup.h" +#include "field_effect.h" +#include "field_map_obj.h" +#include "field_player_avatar.h" +#include "script.h" +#include "sprite.h" +#include "task.h" +#include "util.h" + +const u8 gSpriteImage_839B308[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/0.4bpp"); +const u8 gSpriteImage_839B388[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/1.4bpp"); +const u8 gSpriteImage_839B408[] = INCBIN_U8("graphics/unknown_sprites/839B408.4bpp"); + +u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y); + +static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, s16, s16) = +{ + GetTrainerApproachDistanceSouth, + GetTrainerApproachDistanceNorth, + GetTrainerApproachDistanceWest, + GetTrainerApproachDistanceEast, +}; + +extern struct SpriteTemplate gSpriteTemplate_839B510; +extern struct SpriteTemplate gSpriteTemplate_839B528; + +bool8 CheckTrainers(void) +{ + u8 mapObjId; + + for (mapObjId = 0; mapObjId < 16; mapObjId++) + { + if (gMapObjects[mapObjId].active + && (gMapObjects[mapObjId].trainerType == 1 || gMapObjects[mapObjId].trainerType == 3) + && CheckTrainer(mapObjId)) + return TRUE; + } + return FALSE; +} + +bool8 CheckTrainer(u8 mapObjId) +{ + u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjId); + + if (GetTrainerFlagFromScriptPointer(scriptPtr)) + { + return FALSE; + } + else + { + struct MapObject *trainerObj = &gMapObjects[mapObjId]; + bool8 canApproach = TrainerCanApproachPlayer(trainerObj); + + if (canApproach) + { + TrainerWantsBattle(mapObjId, scriptPtr); + sub_80842C8(trainerObj, (canApproach - 1)); + return TRUE; + } + else + { + return FALSE; + } + } +} + +bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj) +{ + s16 x, y; + u8 i; + u8 approachDistance; + + PlayerGetDestCoords(&x, &y); + if (trainerObj->trainerType == 1) // can only see in one direction + { + approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); + return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, trainerObj->mapobj_unk_18); + } + else // can see in all directions + { + for (i = 0; i < 4; i++) + { + approachDistance = sDirectionalApproachDistanceFuncs[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); + if (CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east + return approachDistance; + } + } + return FALSE; +} + +// Returns how far south the player is from trainer. 0 if out of trainer's sight. +u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +{ + if (trainerObj->coords2.x == x + && y > trainerObj->coords2.y + && y <= trainerObj->coords2.y + range) + return (y - trainerObj->coords2.y); + else + return 0; +} + +// Returns how far north the player is from trainer. 0 if out of trainer's sight. +u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +{ + if (trainerObj->coords2.x == x + && y < trainerObj->coords2.y + && y >= trainerObj->coords2.y - range) + return (trainerObj->coords2.y - y); + else + return 0; +} + +// Returns how far west the player is from trainer. 0 if out of trainer's sight. +u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +{ + if (trainerObj->coords2.y == y + && x < trainerObj->coords2.x + && x >= trainerObj->coords2.x - range) + return (trainerObj->coords2.x - x); + else + return 0; +} + +// Returns how far east the player is from trainer. 0 if out of trainer's sight. +u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +{ + if (trainerObj->coords2.y == y + && x > trainerObj->coords2.x + && x <= trainerObj->coords2.x + range) + return (x - trainerObj->coords2.x); + else + return 0; +} + +#ifdef BUGFIX_TRAINERAPPROACH +#define COLLISION_MASK ~1 +#else +#define COLLISION_MASK 1 +#endif + +bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approachDistance, u8 direction) +{ + s16 x, y; + u8 unk19_temp; + u8 unk19b_temp; + u8 i; + u8 collision; + + if (approachDistance == 0) + return FALSE; + + x = trainerObj->coords2.x; + y = trainerObj->coords2.y; + + for (i = 0; i <= approachDistance - 1; i++, MoveCoords(direction, &x, &y)) + { + collision = sub_8060024((struct MapObject *)trainerObj, x, y, direction); + if (collision != 0 && (collision & COLLISION_MASK)) + return FALSE; + } + + // preserve mapobj_unk_19 before clearing. + unk19_temp = trainerObj->mapobj_unk_19; + unk19b_temp = trainerObj->mapobj_unk_19b; + trainerObj->mapobj_unk_19 = 0; + trainerObj->mapobj_unk_19b = 0; + + collision = npc_block_way((struct MapObject *)trainerObj, x, y, direction); + + trainerObj->mapobj_unk_19 = unk19_temp; + trainerObj->mapobj_unk_19b = unk19b_temp; + if (collision == 4) + return approachDistance; + + return FALSE; +} + +#define tTrainerObjHi data[1] +#define tTrainerObjLo data[2] + +void sub_80842C8(struct MapObject *trainerObj, u8 b) +{ + u8 taskId = CreateTask(RunTrainerSeeFuncList, 0x50); + struct Task *task = &gTasks[taskId]; + + task->tTrainerObjHi = (u32)(trainerObj) >> 16; + task->tTrainerObjLo = (u32)(trainerObj); + task->data[3] = b; +} + +void sub_80842FC(TaskFunc followupFunc) +{ + TaskFunc taskFunc = RunTrainerSeeFuncList; + u8 taskId = FindTaskIdByFunc(taskFunc); + + SetTaskFuncWithFollowupFunc(taskId, taskFunc, followupFunc); + gTasks[taskId].data[0] = 1; + taskFunc(taskId); +} + +static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); + +static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct MapObject *trainerObj) = +{ + sub_8084394, + sub_8084398, + sub_80843DC, + sub_808441C, + sub_8084478, + sub_8084534, + sub_8084578, + sub_80845AC, + sub_80845C8, + sub_80845FC, + sub_8084654, + sub_80846C8, +}; + +void RunTrainerSeeFuncList(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + struct MapObject *trainerObj = (struct MapObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo)); + + if (!trainerObj->active) + { + SwitchTaskToFollowupFunc(taskId); + } + else + { + while (gTrainerSeeFuncList[task->data[0]](taskId, task, trainerObj)) + ; + } +} + +static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj) // cant be void because it is called with RunTrainerSeeFuncList with arguments. +{ + return FALSE; +} + +static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + u8 direction; + + FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1); + direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18); + FieldObjectSetSpecialAnim(trainerObj, direction); + task->data[0]++; + return TRUE; +} + +static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (FieldEffectActiveListContains(0)) + { + return FALSE; + } + else + { + task->data[0]++; + if (trainerObj->animPattern == 57 || trainerObj->animPattern == 58) + task->data[0] = 6; + if (trainerObj->animPattern == 63) + task->data[0] = 8; + return TRUE; + } +} + +static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + { + if (task->data[3]) + { + FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18)); + task->data[3]--; + } + else + { + FieldObjectSetSpecialAnim(trainerObj, 0x3E); + task->data[0]++; + } + } + return FALSE; +} + +static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + struct MapObject *playerObj; + + if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + return FALSE; + + npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18)); + sub_805C774(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18)); + sub_805C754(trainerObj); + + playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj)) + return FALSE; + + sub_80597E8(); + FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18))); + task->data[0]++; + return FALSE; +} + +static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call. +{ + struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + + if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) + || FieldObjectClearAnimIfSpecialAnimFinished(playerObj)) + SwitchTaskToFollowupFunc(taskId); + return FALSE; +} + +static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) + || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + { + FieldObjectSetSpecialAnim(trainerObj, 0x59); + task->data[0]++; + } + return FALSE; +} + +static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + task->data[0] = 3; + + return FALSE; +} + +static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) + || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + { + FieldObjectSetSpecialAnim(trainerObj, 0x3E); + task->data[0]++; + } + return FALSE; +} + +static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj)) + { + gFieldEffectArguments[0] = trainerObj->coords2.x; + gFieldEffectArguments[1] = trainerObj->coords2.y; + gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1; + gFieldEffectArguments[3] = 2; + task->data[4] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); + task->data[0]++; + } + return FALSE; +} + +static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + struct Sprite *sprite; + + if (gSprites[task->data[4]].animCmdIndex == 2) + { + trainerObj->mapobj_bit_26 = 0; + trainerObj->mapobj_bit_2 = 1; + + sprite = &gSprites[trainerObj->spriteId]; + sprite->oam.priority = 2; + FieldObjectClearAnimIfSpecialAnimFinished(trainerObj); + FieldObjectSetSpecialAnim(trainerObj, sub_806084C(trainerObj->mapobj_unk_18)); + task->data[0]++; + } + return FALSE; +} + +static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (!FieldEffectActiveListContains(49)) + task->data[0] = 3; + + return FALSE; +} + +static bool8 (*const gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *) = +{ + sub_80845C8, + sub_80845FC, + sub_8084654, + sub_80846C8, +}; + +void sub_80846E4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + struct MapObject *mapObj; + + // another mapObj loaded into by loadword? + LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj); + if (!task->data[7]) + { + FieldObjectClearAnim(mapObj); + task->data[7]++; + } + gTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj); + if (task->data[0] == 3 && !FieldEffectActiveListContains(49)) + { + npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18)); + sub_805C774(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18)); + DestroyTask(taskId); + } + else + mapObj->mapobj_bit_7 = 0; +} + +void sub_8084794(struct MapObject *var) +{ + StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var); +} + +static void Task_DestroyTrainerApproachTask(u8); + +void ScrSpecial_EndTrainerApproach(void) +{ + sub_80842FC(Task_DestroyTrainerApproachTask); +} + +static void Task_DestroyTrainerApproachTask(u8 taskId) +{ + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +u8 FldEff_ExclamationMarkIcon1(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 0, 0); + + return 0; +} + +u8 FldEff_ExclamationMarkIcon2(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x52); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 33, 1); + + return 0; +} + +u8 FldEff_HeartIcon(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B528, 0, 0, 0x52); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 46, 0); + + return 0; +} + +void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) +{ + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = 1; + + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = -5; + sprite->data7 = a2; + + StartSpriteAnim(sprite, a3); +} + +void objc_exclamation_mark_probably(struct Sprite *sprite) +{ + u8 mapObjId; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjId) + || sprite->animEnded) + { + FieldEffectStop(sprite, (u8)sprite->data7); + } + else + { + struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId]; + sprite->data4 += sprite->data3; + sprite->pos1.x = mapObjSprite->pos1.x; + sprite->pos1.y = mapObjSprite->pos1.y - 16; + sprite->pos2.x = mapObjSprite->pos2.x; + sprite->pos2.y = mapObjSprite->pos2.y + sprite->data4; + if (sprite->data4) + sprite->data3++; + else + sprite->data3 = 0; + } +} diff --git a/src/tv.c b/src/field/tv.c index c5b47cdae..e9b5e850d 100644 --- a/src/tv.c +++ b/src/field/tv.c @@ -15,7 +15,7 @@ #include "species.h" #include "pokedex.h" #include "naming_screen.h" -#include "rom4.h" +#include "overworld.h" #include "map_constants.h" #include "strings.h" #include "battle.h" @@ -31,7 +31,7 @@ #include "pokedex.h" #include "region_map.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "script_menu.h" #include "species.h" @@ -235,7 +235,7 @@ void UpdateTVScreensOnMap(int width, int height) } else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) { - FlagReset(SYS_TV_WATCH); + FlagClear(SYS_TV_WATCH); SetTVMetatilesOnMap(width, height, 0x3); } break; @@ -316,14 +316,14 @@ void GabbyAndTyBeforeInterview(void) { u8 i; - gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.Poke1Species; - gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.OpponentSpecies; - gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.LastUsedMove; + gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.poke1Species; + gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.opponentSpecies; + gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.lastUsedMove; if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) gSaveBlock1.gabbyAndTyData.battleNum ++; gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0; - if (gBattleResults.PlayerFaintCounter) + if (gBattleResults.playerFaintCounter) gSaveBlock1.gabbyAndTyData.valA_1 = 1; else gSaveBlock1.gabbyAndTyData.valA_1 = 0; @@ -388,7 +388,7 @@ bool8 GabbyAndTyGetLastQuote(void) if (gSaveBlock1.gabbyAndTyData.quote == 0xffff) return FALSE; - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); + EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); gSaveBlock1.gabbyAndTyData.quote |= 0xffff; return TRUE; } @@ -489,14 +489,14 @@ void sub_80BDEC8(void) sub_80BEB20(); sub_80BE778(); - if (gBattleResults.CaughtPoke == 0) + if (gBattleResults.caughtPoke == 0) { sub_80BE074(); } else { sub_80BE028(); - if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.CaughtPoke], gBattleResults.CaughtNick) != 0) + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.caughtPoke], gBattleResults.caughtNick) != 0) { gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) @@ -527,8 +527,8 @@ void sub_80BDEC8(void) pokemonToday->var12 = total; pokemonToday->ball = item; StringCopy(pokemonToday->playerName, gSaveBlock2.playerName); - StringCopy(pokemonToday->nickname, gBattleResults.CaughtNick); - pokemonToday->species = gBattleResults.CaughtPoke; + StringCopy(pokemonToday->nickname, gBattleResults.caughtNick); + pokemonToday->species = gBattleResults.caughtPoke; sub_80BE138((TVShow *)pokemonToday); pokemonToday->language = GAME_LANGUAGE; pokemonToday->language2 = sub_80BDEAC(pokemonToday->nickname); @@ -550,8 +550,8 @@ void sub_80BE028(void) worldOfMasters->var00 = TVSHOW_WORLD_OF_MASTERS; } worldOfMasters->var02++; - worldOfMasters->var04 = gBattleResults.CaughtPoke; - worldOfMasters->var08 = gBattleResults.Poke1Species; + worldOfMasters->var04 = gBattleResults.caughtPoke; + worldOfMasters->var08 = gBattleResults.poke1Species; worldOfMasters->var0a = gMapHeader.regionMapSectionId; } @@ -577,8 +577,8 @@ void sub_80BE074(void) zero = 0; pokemonTodayFailed->var00 = TVSHOW_POKEMON_TODAY_FAILED; pokemonTodayFailed->var01 = zero; - pokemonTodayFailed->species = gBattleResults.Poke1Species; - pokemonTodayFailed->species2 = gBattleResults.LastOpponentSpecies; + pokemonTodayFailed->species = gBattleResults.poke1Species; + pokemonTodayFailed->species2 = gBattleResults.lastOpponentSpecies; pokemonTodayFailed->var10 = total; pokemonTodayFailed->var11 = gBattleOutcome; pokemonTodayFailed->var12 = gMapHeader.regionMapSectionId; @@ -942,7 +942,6 @@ void sub_80BE97C(bool8 flag) void sub_80BE9D4(void) { - //TVShow *show; gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) { @@ -1556,7 +1555,7 @@ u16 sub_80BF674(u16 species) rspecies = (Random() % (NUM_SPECIES - 1)) + 1; cspecies = rspecies; - while (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) + while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) { if (cspecies == SPECIES_BULBASAUR) cspecies = NUM_SPECIES - 1; @@ -1624,7 +1623,7 @@ void sub_80BF79C(TVShow *arg0) break; i++; } - sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]); + EasyChat_GetWordText(gStringVar3, arg0->recentHappenings.var04[i]); } u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) @@ -2320,7 +2319,7 @@ void sub_80C03A8(u8 showidx) void sub_80C03C8(u16 species, u8 showidx) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) gSaveBlock1.tvShows[showidx].common.var01 = 0; } @@ -2575,20 +2574,20 @@ void DoTVShowBravoTrainerPokemonProfile(void) break; case 3: TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); - sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]); + EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]); sub_80BF088(2, bravoTrainer->contestResult + 1); gUnknown_020387E8 = 5; break; case 4: TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); - sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]); + EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]); sub_80BF088(2, bravoTrainer->contestResult + 1); gUnknown_020387E8 = 5; break; case 5: TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); - sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]); + EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]); if (bravoTrainer->var14) gUnknown_020387E8 = 6; else @@ -2597,7 +2596,7 @@ void DoTVShowBravoTrainerPokemonProfile(void) case 6: StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); StringCopy(gStringVar2, gMoveNames[bravoTrainer->var14]); - sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]); + EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]); gUnknown_020387E8 = 7; break; case 7: @@ -2680,7 +2679,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void) gUnknown_020387E8 = 11; break; case 11: - sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]); + EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]); if (bravoTrainerTower->var1b == 0) gUnknown_020387E8 = 12; else @@ -2688,7 +2687,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void) break; case 12: case 13: - sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]); + EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]); TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language); TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language); gUnknown_020387E8 = 14; @@ -3106,12 +3105,12 @@ void DoTVShowPokemonFanClubOpinions(void) case 3: TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]); - sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[0]); + EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[0]); gUnknown_020387E8 = 4; break; case 4: TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); - sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[1]); + EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[1]); TVShowDone(); break; } @@ -3176,7 +3175,7 @@ void DoTVShowInSearchOfTrainers(void) gUnknown_020387E8 = 8; break; case 8: - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); + EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); gScriptResult = 1; diff --git a/src/use_pokeblock.c b/src/field/use_pokeblock.c index 3aa2f1fa5..e946a9cfc 100644 --- a/src/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -1,10 +1,11 @@ // -// Created by Scott Norton on 5/31/17. + +// Modified by Dizzy Egg on 8/15/17. // #include "global.h" #include "main.h" -#include "rom4.h" +#include "overworld.h" #include "string_util.h" #include "strings.h" #include "sprite.h" @@ -16,8 +17,6 @@ #include "sound.h" #include "songs.h" #include "pokeblock.h" -#include "pokeblock_feed.h" -#include "use_pokeblock.h" #define GFX_TAG_CONDITIONUPDOWN 0 @@ -29,7 +28,7 @@ const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); #endif -const u32 gUnknown_08406118[] = { +static const u32 sContestStatsMonData[] = { MON_DATA_COOL, MON_DATA_TOUGH, MON_DATA_SMART, @@ -37,11 +36,11 @@ const u32 gUnknown_08406118[] = { MON_DATA_BEAUTY }; -const u8 gUnknown_0840612C[] = { +static const u8 gUnknown_0840612C[] = { 0, 4, 3, 2, 1 }; -const u8 *const gUnknown_08406134[] = { +static const u8 *const sContextStatNames[] = { OtherText_Coolness, OtherText_Toughness, OtherText_Smartness, @@ -49,18 +48,18 @@ const u8 *const gUnknown_08406134[] = { OtherText_Beauty }; -const struct SpriteSheet gSpriteSheet_ConditionUpDown = { +static const struct SpriteSheet gSpriteSheet_ConditionUpDown = { (u8 *)ConditionUpDownTiles, sizeof ConditionUpDownTiles, GFX_TAG_CONDITIONUPDOWN }; -const struct SpritePalette gSpritePalette_ConditionUpDown = { +static const struct SpritePalette gSpritePalette_ConditionUpDown = { ConditionUpDownPalette, GFX_TAG_CONDITIONUPDOWN }; -const s16 gUnknown_08406158[][2] = { +static const s16 gUnknown_08406158[][2] = { {0x9c, 0x1e}, {0x75, 0x35}, {0x75, 0x70}, @@ -68,28 +67,28 @@ const s16 gUnknown_08406158[][2] = { {0xc5, 0x35} }; -const struct OamData gOamData_840616C = { +static const struct OamData gOamData_840616C = { .shape = 1, .size = 2, .priority = 1 }; -const union AnimCmd gSpriteAnim_8406174[] = { +static const union AnimCmd gSpriteAnim_8406174[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_840617C[] = { +static const union AnimCmd gSpriteAnim_840617C[] = { ANIMCMD_FRAME(8, 5), ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_8406184[] = { +static const union AnimCmd *const gSpriteAnimTable_8406184[] = { gSpriteAnim_8406174, gSpriteAnim_840617C }; -const struct SpriteTemplate gSpriteTemplate_840618C = { +static const struct SpriteTemplate gSpriteTemplate_840618C = { GFX_TAG_CONDITIONUPDOWN, GFX_TAG_CONDITIONUPDOWN, &gOamData_840616C, @@ -99,47 +98,44 @@ const struct SpriteTemplate gSpriteTemplate_840618C = { SpriteCallbackDummy }; -asm(".text\n" - ".include \"constants/gba_constants.inc\""); - static EWRAM_DATA struct UnkPokenavStruct_Sub1 *gUnknown_02039304 = NULL; static EWRAM_DATA MainCallback gUnknown_02039308 = NULL; static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL; -EWRAM_DATA u8 gUnknown_02039310 = 0; -EWRAM_DATA s16 gUnknown_02039312 = 0; +EWRAM_DATA u8 gPokeblockMonID = 0; +EWRAM_DATA s16 gPokeblockGain = 0; extern u16 gKeyRepeatStartDelay; extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock -void launch_c3_walk_stairs_and_run_once(void (*const)(void)); -void sub_81361E4(void); -void sub_813622C(void); -void sub_8136244(void); -void sub_8136264(void); -void sub_8136294(void); -void sub_81365A0(void); -void sub_81365C8(void); -void sub_8136638(void); -void sub_81368A4(void); +static void launch_c3_walk_stairs_and_run_once(void (*const)(void)); +static void sub_81361E4(void); +static void sub_813622C(void); +static void sub_8136244(void); +static void sub_8136264(void); +static void sub_8136294(void); +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 sub_8136B44(void); -u8 sub_81370E4(u8); -void sub_8136BB8(void); -s8 sub_8136C40(void); -bool8 sub_8137058(void); -void sub_8136D60(void); -void sub_8136808(void); -void sub_8136D8C(void); -u8 sub_81370A4(u8); -void sub_81369CC(void); -void sub_8136EF0(void); -void sub_8137138(void); -void sub_8136C6C(void); -bool8 sub_8136D00(void); -void sub_8136DC0(u8 *, u8, s16); -void sub_8136DA0(const u8 *); -void sub_8136F74(struct Pokeblock *, struct Pokemon *); -void sub_81371DC(struct Sprite *); +static void sub_8136B44(void); +static u8 sub_81370E4(u8); +static void sub_8136BB8(void); +static s8 sub_8136C40(void); +static bool8 sub_8137058(void); +static void sub_8136D60(void); +static void sub_8136808(void); +static void sub_8136D8C(void); +static u8 sub_81370A4(u8); +static void sub_81369CC(void); +static void sub_8136EF0(void); +static void sub_8137138(void); +static void sub_8136C6C(void); +static bool8 sub_8136D00(void); +static void Pokeblock_BufferEnhancedStatText(u8 *, u8, s16); +static void Pokeblock_MenuWindowTextPrint(const u8 *); +static void sub_8136F74(struct Pokeblock *, struct Pokemon *); +static void sub_81371DC(struct Sprite *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -151,18 +147,18 @@ void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) SetMainCallback2(sub_8136244); } -void sub_8136174(void) +static void sub_8136174(void) { gUnknown_02039304->pokeblock = gUnknown_0203930C; gUnknown_02039304->callback = gUnknown_02039308; - gUnknown_02039310 = sub_81370E4(gUnknown_02039310); - gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1; + gPokeblockMonID = sub_81370E4(gPokeblockMonID); + gUnknown_02039304->unk56 = gPokeblockMonID < 4 ? 0 : 1; gUnknown_083DFEC4->unkD162[0] = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_81361E4); } -void sub_81361E4(void) +static void sub_81361E4(void) { gUnknown_02039304->unk0(); AnimateSprites(); @@ -176,7 +172,7 @@ void sub_81361E4(void) } } -void sub_813622C(void) +static void sub_813622C(void) { sub_81368A4(); AnimateSprites(); @@ -184,7 +180,7 @@ void sub_813622C(void) UpdatePaletteFade(); } -void sub_8136244(void) +static void sub_8136244(void) { gUnknown_02039304->unk0(); AnimateSprites(); @@ -192,7 +188,7 @@ void sub_8136244(void) UpdatePaletteFade(); } -void sub_8136264(void) +static void sub_8136264(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -201,13 +197,13 @@ void sub_8136264(void) sub_8089668(); } -void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) +static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) { gUnknown_02039304->unk0 = func; gUnknown_02039304->unk50 = 0; } -void sub_8136294(void) +static void sub_8136294(void) { bool32 c1LinkRelatedActive; switch (gUnknown_02039304->unk50) @@ -346,7 +342,7 @@ void sub_8136294(void) } } -void sub_81365A0(void) +static void sub_81365A0(void) { while (!gUnknown_02039304->unk55) { @@ -354,7 +350,7 @@ void sub_81365A0(void) } } -void sub_81365C8(void) +static void sub_81365C8(void) { switch (gUnknown_02039304->unk50) { @@ -374,7 +370,7 @@ void sub_81365C8(void) } } -void sub_8136638(void) +static void sub_8136638(void) { switch (gUnknown_02039304->unk50) { @@ -464,12 +460,12 @@ void sub_8136638(void) } } -void sub_8136808(void) +static void sub_8136808(void) { switch (gUnknown_02039304->unk50) { case 0: - gUnknown_02039310 = sub_81370A4(gUnknown_083DFEC4->unk87DC); + gPokeblockMonID = sub_81370A4(gUnknown_083DFEC4->unk87DC); gUnknown_02039308 = gUnknown_02039304->callback; gUnknown_0203930C = gUnknown_02039304->pokeblock; BeginNormalPaletteFade(-1, 0, 0, 16, 0); @@ -479,18 +475,18 @@ void sub_8136808(void) if (!gPaletteFade.active) { gMain.savedCallback = sub_8136174; - SetMainCallback2(sub_8147ADC); + SetMainCallback2(CB2_PreparePokeblockFeedScene); } break; } } -void sub_81368A4(void) +static void sub_81368A4(void) { switch (gUnknown_02039304->unk50) { case 0: - if (gUnknown_083DFEC4->unk87DC != gUnknown_02039310) + if (gUnknown_083DFEC4->unk87DC != gPokeblockMonID) { sub_80F5060(gUnknown_02039304->unk56); gUnknown_02039304->unk50++; @@ -538,7 +534,7 @@ void sub_81368A4(void) } } -void sub_81369CC(void) +static void sub_81369CC(void) { switch (gUnknown_02039304->unk50) { @@ -578,14 +574,14 @@ void sub_81369CC(void) case 5: if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00()) { - sub_810CA6C((u8)gScriptItemId); + PokeblockClearIfExists((u8)gScriptItemId); launch_c3_walk_stairs_and_run_once(sub_8136B44); } break; } } -void sub_8136B44(void) +static void sub_8136B44(void) { switch (gUnknown_02039304->unk50) { @@ -609,7 +605,7 @@ void sub_8136B44(void) } } -void sub_8136BB8(void) +static void sub_8136BB8(void) { GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer); StringGetEnd10(gUnknown_02039304->stringBuffer); @@ -621,7 +617,7 @@ void sub_8136BB8(void) MoveMenuCursor(0); } -s8 sub_8136C40(void) +static s8 sub_8136C40(void) { s8 retval = ProcessMenuInputNoWrap(); if ((u8)(retval + 1) < 3) @@ -632,124 +628,68 @@ s8 sub_8136C40(void) return retval; } -void sub_8136C6C(void) +static void sub_8136C6C(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); MenuDrawTextWindow(0, 16, 29, 19); for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); if (gUnknown_02039304->unk53 < 5) { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); } else { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0); + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0); } - sub_8136DA0(gUnknown_02039304->stringBuffer); + Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer); } -#ifdef NONMATCHING -bool8 sub_8136D00(void) +static bool8 sub_8136D00(void) { while (1) { - if (++gUnknown_02039304->unk53 >= 5) + gUnknown_02039304->unk53++; + if (gUnknown_02039304->unk53 < 5) { - break; + if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + break; } - if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + else { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); - sub_8136DA0(gUnknown_02039304->stringBuffer); - return TRUE; + gUnknown_02039304->unk53 = 5; + return FALSE; } } - gUnknown_02039304->unk53 = 5; - return FALSE; -} -#else -__attribute__((naked)) -bool8 sub_8136D00(void) -{ - asm_unified("\tpush {r4,r5,lr}\n" - "\tldr r4, _08136D30 @ =gUnknown_02039304\n" - "\tadds r3, r4, 0\n" - "\tmovs r5, 0x5\n" - "_08136D08:\n" - "\tldr r0, [r3]\n" - "\tadds r0, 0x53\n" - "\tldrb r1, [r0]\n" - "\tadds r1, 0x1\n" - "\tstrb r1, [r0]\n" - "\tldr r2, [r3]\n" - "\tadds r1, r2, 0\n" - "\tadds r1, 0x53\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0x4\n" - "\tbhi _08136D34\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x61\n" - "\tldrb r1, [r1]\n" - "\tadds r0, r1\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbne _08136D3A\n" - "\tb _08136D08\n" - "\t.align 2, 0\n" - "_08136D30: .4byte gUnknown_02039304\n" - "_08136D34:\n" - "\tstrb r5, [r1]\n" - "\tmovs r0, 0\n" - "\tb _08136D5A\n" - "_08136D3A:\n" - "\tldr r2, [r4]\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x10\n" - "\tadds r1, r2, 0\n" - "\tadds r1, 0x53\n" - "\tldrb r1, [r1]\n" - "\tadds r2, 0x61\n" - "\tadds r2, r1\n" - "\tldrb r2, [r2]\n" - "\tbl sub_8136DC0\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x10\n" - "\tbl sub_8136DA0\n" - "\tmovs r0, 0x1\n" - "_08136D5A:\n" - "\tpop {r4,r5}\n" - "\tpop {r1}\n" - "\tbx r1"); + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer); + return TRUE; } -#endif -void sub_8136D60(void) +static void sub_8136D60(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); MenuDrawTextWindow(0, 16, 29, 19); MenuPrint(gOtherText_WontEat, 1, 17); } -void sub_8136D8C(void) +static void sub_8136D8C(void) { MenuZeroFillScreen(); BasicInitMenuWindow(&gWindowConfig_81E7080); } -void sub_8136DA0(const u8 *message) +static void Pokeblock_MenuWindowTextPrint(const u8 *message) { MenuDrawTextWindow(0, 16, 29, 19); MenuPrint(message, 1, 17); } #ifdef NONMATCHING -void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2) { - u16 v0 = a2; if (a2 != 0) { - if ((v0 = max(a2, 0)) == 0); - StringCopy(dest, gUnknown_08406134[a1]); + StringCopy(dest, sContextStatNames[statID]); StringAppend(dest, gOtherText_WasEnhanced); } else @@ -759,7 +699,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) } #else __attribute__((naked)) -void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2) { asm_unified("\tpush {r4,lr}\n" "\tadds r4, r0, 0\n" @@ -775,7 +715,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) "\tmovs r0, 0\n" "_08136DD8:\n" "\tlsls r0, 16\n" - "\tldr r1, _08136DF4 @ =gUnknown_08406134\n" + "\tldr r1, _08136DF4 @ =sContextStatNames\n" "\tlsls r0, r3, 2\n" "\tadds r0, r1\n" "\tldr r1, [r0]\n" @@ -786,7 +726,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) "\tbl StringAppend\n" "\tb _08136E04\n" "\t.align 2, 0\n" - "_08136DF4: .4byte gUnknown_08406134\n" + "_08136DF4: .4byte sContextStatNames\n" "_08136DF8: .4byte gOtherText_WasEnhanced\n" "_08136DFC:\n" "\tldr r1, _08136E0C @ =gOtherText_NothingChanged\n" @@ -801,16 +741,16 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) } #endif -void sub_8136E10(struct Pokemon *pokemon, u8 *data) +static void Pokeblock_GetMonContestStats(struct Pokemon *pokemon, u8 *data) { u16 i; for (i=0; i<5; i++) { - data[i] = GetMonData(pokemon, gUnknown_08406118[i]); + data[i] = GetMonData(pokemon, sContestStatsMonData[i]); } } -void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +static void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) { u16 i; s16 cstat; @@ -820,14 +760,14 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) sub_8136F74(pokeblock, pokemon); for (i=0; i<5; i++) { - data = GetMonData(pokemon, gUnknown_08406118[i]); + data = GetMonData(pokemon, sContestStatsMonData[i]); cstat = data + gUnknown_02039304->unk66[i]; if (cstat < 0) cstat = 0; if (cstat > 255) cstat = 255; data = cstat; - SetMonData(pokemon, gUnknown_08406118[i], &data); + SetMonData(pokemon, sContestStatsMonData[i], &data); } cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN); cstat = cstat + pokeblock->feel; @@ -838,21 +778,21 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) } } -void sub_8136EF0(void) +static void sub_8136EF0(void) { u16 i; struct Pokemon *pokemon = gPlayerParty; pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; - sub_8136E10(pokemon, gUnknown_02039304->unk57); + Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk57); sub_8136E40(gUnknown_02039304->pokeblock, pokemon); - sub_8136E10(pokemon, gUnknown_02039304->unk5c); + Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk5c); for (i=0; i<5; i++) { gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i]; } } -void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +static void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) { s8 direction; s8 i; @@ -864,9 +804,9 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) gUnknown_02039304->unk66[2] = pokeblock->bitter; gUnknown_02039304->unk66[3] = pokeblock->sweet; gUnknown_02039304->unk66[4] = pokeblock->dry; - if (gUnknown_02039312 > 0) + if (gPokeblockGain > 0) direction = 1; - else if (gUnknown_02039312 < 0) + else if (gPokeblockGain < 0) direction = -1; else return; @@ -884,7 +824,7 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) } } -bool8 sub_8137058(void) +static bool8 sub_8137058(void) { struct Pokemon *pokemon = gPlayerParty; pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; @@ -893,7 +833,7 @@ bool8 sub_8137058(void) return FALSE; } -u8 sub_81370A4(u8 a0) +static u8 sub_81370A4(u8 a0) { u8 i; for (i=0; i<PARTY_SIZE; i++) @@ -908,7 +848,7 @@ u8 sub_81370A4(u8 a0) return 0; } -u8 sub_81370E4(u8 a0) +static u8 sub_81370E4(u8 a0) { u8 ct; u8 i; @@ -927,7 +867,7 @@ u8 sub_8137124(u8 a0) return sub_81370A4(a0); } -void sub_8137138(void) +static void sub_8137138(void) { u16 flavor; u8 spriteidx; @@ -951,7 +891,7 @@ void sub_8137138(void) } } -void sub_81371DC(struct Sprite *sprite) +static void sub_81371DC(struct Sprite *sprite) { if (sprite->data0 <= 5) sprite->pos2.y -= 2; diff --git a/src/wallclock.c b/src/field/wallclock.c index 8db13dc2d..8db13dc2d 100644 --- a/src/wallclock.c +++ b/src/field/wallclock.c diff --git a/src/wild_encounter.c b/src/field/wild_encounter.c index 96f47c067..390898917 100644 --- a/src/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -5,11 +5,12 @@ #include "event_data.h" #include "field_player_avatar.h" #include "fieldmap.h" +#include "map_constants.h" #include "metatile_behavior.h" #include "pokeblock.h" #include "rng.h" #include "roamer.h" -#include "rom4.h" +#include "overworld.h" #include "safari_zone.h" #include "script.h" #include "species.h" @@ -2901,7 +2902,7 @@ const struct WildPokemonInfo Underwater2_WaterMonsInfo = {4, Underwater2_WaterMo extern u16 gRoute119WaterTileData[]; extern u16 gScriptResult; extern struct WildPokemon gWildFeebasRoute119Data; -extern u8 Event_RepelWoreOff[]; +extern u8 S_RepelWoreOff[]; EWRAM_DATA static u8 sWildEncountersDisabled = 0; EWRAM_DATA static u32 sFeebasRngValue = 0; @@ -2911,7 +2912,7 @@ EWRAM_DATA static u32 sFeebasRngValue = 0; static u16 FeebasRandom(void); static void FeebasSeedRng(u16 seed); -static bool8 RepelCheck(u8 level); +static bool8 IsWildLevelAllowedByRepel(u8 level); static void ApplyFluteEncounterRateMod(u32 *encRate); static void ApplyCleanseTagEncounterRateMod(u32 *encRate); @@ -2952,7 +2953,8 @@ static bool8 CheckFeebas(void) u8 route119section = 0; u16 waterTileNum; - if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 0x22) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE119 + && gSaveBlock1.location.mapNum == MAP_ID_ROUTE119) { GetXYCoordsOneStepInFrontOfPlayer(&x, &y); x -= 7; @@ -3161,7 +3163,7 @@ static u8 PickWildMonNature(void) } for (i = 0; i < 25; i++) { - if (sub_810CAE4(natures[i], safariPokeblock) > 0) + if (PokeblockGetGain(natures[i], safariPokeblock) > 0) return natures[i]; } } @@ -3193,7 +3195,7 @@ static bool8 GenerateWildMon(struct WildPokemonInfo *wildMonInfo, u8 area, bool8 break; } level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]); - if (checkRepel == TRUE && RepelCheck(level) == FALSE) + if (checkRepel == TRUE && IsWildLevelAllowedByRepel(level) == FALSE) return FALSE; else { @@ -3215,7 +3217,7 @@ static bool8 SetUpMassOutbreakEncounter(bool8 checkRepel) { u16 i; - if (checkRepel == TRUE && RepelCheck(gSaveBlock1.outbreakPokemonLevel) == 0) + if (checkRepel == TRUE && IsWildLevelAllowedByRepel(gSaveBlock1.outbreakPokemonLevel) == FALSE) return FALSE; else { @@ -3302,9 +3304,9 @@ bool8 StandardWildEncounter(u16 a, u16 b) if (TryStartRoamerEncounter() == TRUE) { roamer = &gSaveBlock1.roamer; - if (RepelCheck(roamer->level)) + if (IsWildLevelAllowedByRepel(roamer->level)) { - StartBattle_Roamer(); + BattleSetup_StartRoamerBattle(); return 1; } } @@ -3312,7 +3314,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) { if (DoMassOutbreakEncounterTest() == TRUE && SetUpMassOutbreakEncounter(1) == TRUE) { - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); return 1; } if (GenerateWildMon(gWildMonHeaders[headerNum].landMonsInfo, 0, TRUE) == TRUE) @@ -3336,9 +3338,9 @@ bool8 StandardWildEncounter(u16 a, u16 b) if (TryStartRoamerEncounter() == TRUE) { roamer = &gSaveBlock1.roamer; - if (RepelCheck(roamer->level)) + if (IsWildLevelAllowedByRepel(roamer->level)) { - StartBattle_Roamer(); + BattleSetup_StartRoamerBattle(); return 1; } } @@ -3349,7 +3351,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) { label: //_0808527A - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); return 1; } } @@ -3361,7 +3363,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) return 0; } -void RockSmashWildEncounter(void) +void ScrSpecial_RockSmashWildEncounter(void) { u16 headerNum = GetCurrentMapWildMonHeader(); @@ -3377,7 +3379,7 @@ void RockSmashWildEncounter(void) else if (DoWildEncounterTest(wildPokemonInfo->encounterRate, 1) == TRUE && GenerateWildMon(wildPokemonInfo, 2, TRUE) == TRUE) { - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); gScriptResult = 1; return; } @@ -3403,14 +3405,14 @@ bool8 SweetScentWildEncounter(void) return FALSE; if (TryStartRoamerEncounter() == TRUE) { - StartBattle_Roamer(); + BattleSetup_StartRoamerBattle(); return TRUE; } if (DoMassOutbreakEncounterTest() == TRUE) - SetUpMassOutbreakEncounter(0); + SetUpMassOutbreakEncounter(FALSE); else GenerateWildMon(wildPokemonInfo, 0, FALSE); - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); return TRUE; } else if (MetatileBehavior_IsWaterWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == 1) @@ -3420,18 +3422,18 @@ bool8 SweetScentWildEncounter(void) return FALSE; if (TryStartRoamerEncounter() == TRUE) { - StartBattle_Roamer(); + BattleSetup_StartRoamerBattle(); return TRUE; } GenerateWildMon(wildPokemonInfo, 1, FALSE); - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); return TRUE; } } return FALSE; } -bool8 GetFishingWildMonListHeader(void) +bool8 DoesCurrentMapHaveFishingMons(void) { u16 headerNum = GetCurrentMapWildMonHeader(); @@ -3460,7 +3462,7 @@ void FishingWildEncounter(u8 rod) } IncrementGameStat(12); sub_80BEA50(species); - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); } u16 GetLocalWildMon(bool8 *isWaterMon) @@ -3497,7 +3499,7 @@ u16 GetLocalWildMon(bool8 *isWaterMon) } } -u16 GetMirageIslandMon(void) +u16 GetLocalWaterMon(void) { u16 headerNum = GetCurrentMapWildMonHeader(); @@ -3521,20 +3523,21 @@ bool8 UpdateRepelCounter(void) VarSet(VAR_REPEL_STEP_COUNT, steps); if (steps == 0) { - ScriptContext1_SetupScript(Event_RepelWoreOff); + ScriptContext1_SetupScript(S_RepelWoreOff); return TRUE; } } return FALSE; } -//Returns FALSE if Repel prevents wild Pokemon at the specified level from appearing -static bool8 RepelCheck(u8 level) +static bool8 IsWildLevelAllowedByRepel(u8 wildLevel) { u8 i; if (!VarGet(VAR_REPEL_STEP_COUNT)) + { return TRUE; + } else { for (i = 0; i < 6; i++) @@ -3542,7 +3545,9 @@ static bool8 RepelCheck(u8 level) // UB: Too few arguments for function 'GetMonData' if (GetMonData(&gPlayerParty[i], MON_DATA_HP) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) { - if (level < (u8)GetMonData(&gPlayerParty[i], MON_DATA_LEVEL)) + u8 ourLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + + if (wildLevel < ourLevel) return FALSE; else return TRUE; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c deleted file mode 100644 index 364d55e51..000000000 --- a/src/field_fadetransition.c +++ /dev/null @@ -1,87 +0,0 @@ -#include "global.h" -#include "gba/syscall.h" -#include "field_fadetransition.h" -#include "field_player_avatar.h" -#include "field_weather.h" -#include "fldeff_flash.h" -#include "global.fieldmap.h" -#include "rom4.h" -#include "script.h" -#include "task.h" - -extern u16 gPlttBufferFaded[]; - -void palette_bg_fill_white(void) -{ - u32 source_color = 0x7fff7fff; - CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24)); -} - -void palette_bg_fill_black(void) -{ - u32 source_color = 0; - CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24)); -} - -void pal_fill_for_map_transition(void) -{ - u8 map_light = get_map_light_from_warp0(); - switch (fade_type_for_given_maplight_pair(map_light, sav1_map_get_light_level())) - { - case 0: - fade_screen(0, 0); - palette_bg_fill_black(); - break; - case 1: - fade_screen(2, 0); - palette_bg_fill_white(); - } -} - -void pal_fill_black(void) -{ - fade_screen(0, 0); - palette_bg_fill_black(); -} - -void fade_8080918(void) -{ - u8 light_level = sav1_map_get_light_level(); - switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType)) - { - case 0: - fade_screen(1, 0); - break; - case 1: - fade_screen(3, 0); - } -} - -void sub_8080958(u8 arg) -{ - sub_8059B88(!arg); -} - -void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID) -{ - if (sub_8080E70() == 1) - { - DestroyTask(taskID); - EnableBothScriptContexts(); - } -} - -void sub_8080990(void) -{ - ScriptContext2_Enable(); - sub_8053E90(); - pal_fill_black(); - CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a); -} - -void sub_80809B0(void) -{ - ScriptContext2_Enable(); - pal_fill_black(); - CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a); -} diff --git a/src/field_ground_effect.c b/src/field_ground_effect.c deleted file mode 100644 index 42862d0ff..000000000 --- a/src/field_ground_effect.c +++ /dev/null @@ -1,240 +0,0 @@ -#include "global.h" -#include "field_ground_effect.h" -#include "fieldmap.h" -#include "metatile_behavior.h" - -extern u32 gUnknown_08376008[]; - -void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags) -{ - FieldObjectUpdateMetatileBehaviors(mapObj); - GetGroundEffectFlags_Reflection(mapObj, flags); - GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags); - GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags); - GetGroundEffectFlags_SandPile(mapObj, flags); - GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); - GetGroundEffectFlags_ShortGrass(mapObj, flags); - GetGroundEffectFlags_HotSprings(mapObj, flags); -} - -void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags) -{ - FieldObjectUpdateMetatileBehaviors(mapObj); - GetGroundEffectFlags_Reflection(mapObj, flags); - GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags); - GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags); - GetGroundEffectFlags_Tracks(mapObj, flags); - GetGroundEffectFlags_SandPile(mapObj, flags); - GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); - GetGroundEffectFlags_Puddle(mapObj, flags); - GetGroundEffectFlags_ShortGrass(mapObj, flags); - GetGroundEffectFlags_HotSprings(mapObj, flags); -} - -void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags) -{ - FieldObjectUpdateMetatileBehaviors(mapObj); - GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); - GetGroundEffectFlags_SandPile(mapObj, flags); - GetGroundEffectFlags_Puddle(mapObj, flags); - GetGroundEffectFlags_Ripple(mapObj, flags); - GetGroundEffectFlags_ShortGrass(mapObj, flags); - GetGroundEffectFlags_HotSprings(mapObj, flags); - GetGroundEffectFlags_Seaweed(mapObj, flags); - GetGroundEffectFlags_JumpLanding(mapObj, flags); -} - -void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj) -{ - mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y); - mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y); -} - -void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags) -{ - u32 reflectionFlags[2] = { 0x00000020, 0x00000010 }; - u8 type = FieldObjectCheckForReflectiveSurface(mapObj); - - if (type) - { - if (!mapObj->mapobj_bit_17) - { - mapObj->mapobj_bit_17 = 0; - mapObj->mapobj_bit_17 = 1; - *flags |= reflectionFlags[type - 1]; - } - } - else - { - mapObj->mapobj_bit_17 = 0; - } -} - -void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E)) - *flags |= 0x1; -} - -void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E)) - *flags |= 0x2; -} - -void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) - *flags |= 0x4; -} - -void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) - *flags |= 0x8; -} - -void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F)) - { - *flags |= 0x100; - } - else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F) - || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F)) - { - *flags |= 0x80; - } -} - -void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E) - && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F)) - { - if (!mapObj->mapobj_bit_20) - { - mapObj->mapobj_bit_20 = 0; - mapObj->mapobj_bit_20 = 1; - *flags |= 0x800; - } - } - else - { - mapObj->mapobj_bit_20 = 0; - } -} - -void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags) -{ - if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E) && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F)) - || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E) && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F))) - { - if (!mapObj->mapobj_bit_19) - { - mapObj->mapobj_bit_19 = 0; - mapObj->mapobj_bit_19 = 1; - *flags |= 0x40; - } - } - else - { - mapObj->mapobj_bit_19 = 0; - } -} - -void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E) - && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F)) - { - *flags |= 0x400; - } -} - -void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E)) - *flags |= 0x200; -} - -void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E) - && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F)) - { - if (!mapObj->mapobj_bit_18) - { - mapObj->mapobj_bit_18 = 0; - mapObj->mapobj_bit_18 = 1; - *flags |= 0x20000; - } - } - else - { - mapObj->mapobj_bit_18 = 0; - } -} - -void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E) - && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F)) - { - if (!mapObj->mapobj_bit_21) - { - mapObj->mapobj_bit_21 = 0; - mapObj->mapobj_bit_21 = 1; - *flags |= 0x40000; - } - } - else - { - mapObj->mapobj_bit_21 = 0; - } -} - -void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E)) - *flags |= 0x80000; -} - -void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags) -{ - typedef bool8 (*MetatileFunc)(u8); - - static const MetatileFunc metatileFuncs[] = - { - MetatileBehavior_IsTallGrass, - MetatileBehavior_IsLongGrass, - MetatileBehavior_IsPuddle, - MetatileBehavior_IsSurfableWaterOrUnderwater, - MetatileBehavior_IsShallowFlowingWater, - MetatileBehavior_IsATile, - }; - - static const u32 jumpLandingFlags[] = - { - 0x00001000, // Landing in tall grass - 0x00002000, // Landing in long grass - 0x00004000, // Landing on puddle - 0x00008000, // Landing on surfable water or underwater - 0x00004000, // Landing on shallow flowing water - 0x00010000, // Landing on any other type of ground - }; - - if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25) - { - u8 i; - - for (i = 0; i < 6; i++) - { - if (metatileFuncs[i](mapObj->mapobj_unk_1E)) - { - *flags |= jumpLandingFlags[i]; - return; - } - } - } -} diff --git a/src/agb_flash.c b/src/libs/agb_flash.c index 340d469a7..340d469a7 100644 --- a/src/agb_flash.c +++ b/src/libs/agb_flash.c diff --git a/src/agb_flash_1m.c b/src/libs/agb_flash_1m.c index e249fab9a..e249fab9a 100644 --- a/src/agb_flash_1m.c +++ b/src/libs/agb_flash_1m.c diff --git a/src/agb_flash_le.c b/src/libs/agb_flash_le.c index 39d956e27..39d956e27 100644 --- a/src/agb_flash_le.c +++ b/src/libs/agb_flash_le.c diff --git a/src/agb_flash_mx.c b/src/libs/agb_flash_mx.c index 67348901f..67348901f 100644 --- a/src/agb_flash_mx.c +++ b/src/libs/agb_flash_mx.c diff --git a/src/libc.c b/src/libs/libc.c index 920673e3e..920673e3e 100644 --- a/src/libc.c +++ b/src/libs/libc.c diff --git a/src/m4a_2.c b/src/libs/m4a_2.c index 2d3c65848..2d3c65848 100644 --- a/src/m4a_2.c +++ b/src/libs/m4a_2.c diff --git a/src/m4a_4.c b/src/libs/m4a_4.c index 99195ec00..2e1d140b4 100644 --- a/src/m4a_4.c +++ b/src/libs/m4a_4.c @@ -45,7 +45,7 @@ void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 mplayInfo->ident = ID_NUMBER; } -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch) +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch) { s32 i; u32 bit; diff --git a/src/m4a_tables.c b/src/libs/m4a_tables.c index 91f00a31d..91f00a31d 100644 --- a/src/m4a_tables.c +++ b/src/libs/m4a_tables.c diff --git a/src/siirtc.c b/src/libs/siirtc.c index 965a068f1..965a068f1 100644 --- a/src/siirtc.c +++ b/src/libs/siirtc.c diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c deleted file mode 100644 index 93684fc60..000000000 --- a/src/mauville_old_man.c +++ /dev/null @@ -1,247 +0,0 @@ -#include "global.h" -#include "mauville_old_man.h" -#include "easy_chat.h" -#include "menu.h" -#include "rng.h" -#include "script.h" -#include "string_util.h" -#include "strings.h" -#include "trader.h" - -extern u16 gScriptResult; -extern u16 gSpecialVar_0x8004; - -extern u32 gUnknown_083E5388[]; -extern u32 gUnknown_083E53A8[]; - -extern u16 gUnknown_083E537C[]; - -void sub_80F7A34(void) -{ - u16 i; - OldMan *oldMan = &gSaveBlock1.oldMan; - - oldMan->oldMan1.unk_2D94 = 0; - oldMan->oldMan1.unk_2DBD = 0; - - for(i = 0; i < 6; i++) - oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i]; -} - -void sub_80F7A6C(void) -{ - struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1; - - bard->unk_2D94 = 1; - bard->unk_2D95 = 0; -} - -void sub_80F7A7C(void) -{ - sub_80F83F8(); -} - -void sub_80F7A88(void) -{ - OldMan *oldMan = &gSaveBlock1.oldMan; - - oldMan->oldMan1.unk_2D94 = 4; - oldMan->oldMan1.unk_2D95 = 0; -} - -void sub_80F7A98(void) -{ - sub_81099CC(); -} - -void SetMauvilleOldMan(void) -{ - u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2; - - switch(var) - { - case 0: - sub_80F7A34(); - break; - case 1: - sub_80F7A6C(); - break; - case 2: - sub_80F7A98(); - break; - case 3: - sub_80F7A7C(); - break; - case 4: - sub_80F7A88(); - break; - } - sub_80F83D0(); -} - -u8 GetCurrentMauvilleOldMan(void) -{ - OldMan *oldMan = &gSaveBlock1.oldMan; - - return oldMan->oldMan1.unk_2D94; -} - -void sub_80F7B14(void) -{ - gScriptResult = GetCurrentMauvilleOldMan(); -} - -void sub_80F7B2C(void) -{ - u16 *scriptPtr = &gScriptResult; // why?? - OldMan *oldMan = &gSaveBlock1.oldMan; - - *scriptPtr = oldMan->oldMan1.unk_2DBD; -} - -void sub_80F7B40(void) -{ - u16 i; - OldMan *oldMan = &gSaveBlock1.oldMan; - //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct; - - StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName); - - for(i = 0; i < 4; i++) - oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i]; - - for(i = 0; i < 6; i++) - oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i]; - - oldMan->oldMan1.unk_2DBD = 1; -} - -void sub_80F7BA0(void) -{ - struct UnkMauvilleOldManStruct *oldMan = &gSaveBlock1.oldMan.oldMan1; - u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match. - u16 *r5; - u16 i; - u8 *ptr; - u8 *r4; - - r5 = oldMan->mauvilleOldMan_ecArray2; - if (specialVar == 0) - r5 = oldMan->mauvilleOldMan_ecArray; - ptr = gStringVar4; - r4 = ptr; - for (i = 0; i < 2; i++) - { - ptr = sub_80EB3FC(ptr, *(r5++)); - while (ptr != r4) - { - if (*r4 == 0) - *r4 = 0x37; - r4++; - } - r4++; - *(ptr++) = 0; - ptr = sub_80EB3FC(ptr, *(r5++)); - while (ptr != r4) - { - if (*r4 == 0) - *r4 = 0x37; - r4++; - } - r4++; - *(ptr++) = 0xFE; - ptr = sub_80EB3FC(ptr, *(r5++)); - while (ptr != r4) - { - if (*r4 == 0) - *r4 = 0x37; - r4++; - } - //_080F7C2A - if (i == 0) - { - *(ptr++) = EXT_CTRL_CODE_BEGIN; - *(ptr++) = 0xF; - } - } -} - -void sub_80F7C54(void) -{ - sub_80F7F80(gSpecialVar_0x8004); - MenuDisplayMessageBox(); - ScriptContext1_Stop(); -} - -void sub_80F7C70(void) -{ - u16 *scriptPtr = &gScriptResult; // again?? - OldMan *oldMan = &gSaveBlock1.oldMan; - - *scriptPtr = oldMan->oldMan1.unk_2D95; -} - -void sub_80F7C84(void) -{ - OldMan *oldMan = &gSaveBlock1.oldMan; - - oldMan->oldMan1.unk_2D95 = 1; -} - -void sub_80F7C90(void) -{ - u16 var = sub_80EB8EC(); - - if(var == 0xFFFF) - { - gScriptResult = FALSE; - } - else - { - sub_80EB3FC(gStringVar1, var); - gScriptResult = TRUE; - } -} - -void sub_80F7CC8(void) -{ - OldMan *oldMan = &gSaveBlock1.oldMan; - - if(oldMan->oldMan1.unk_2D95 == 10) - { - gScriptResult = FALSE; - oldMan->oldMan1.unk_2D95 = 0; - } - else - gScriptResult = TRUE; -} - -void sub_80F7CF4(void) -{ - struct UnkMauvilleOldManStruct2 *oldMan = &gSaveBlock1.oldMan.oldMan2; - - if(oldMan->unk1 == 0) - sub_80F7DC0(); - - if(oldMan->mauvilleOldMan_ecArray[oldMan->unk1] != 0xFFFF) // is not the last element of the array? - { - u8 *stringPtr; - u32 random = Random(); - - random %= 8; - stringPtr = sub_80EB3FC(gStringVar4, oldMan->mauvilleOldMan_ecArray[oldMan->unk1]); - stringPtr = StringCopy(stringPtr, gOtherText_Is); - stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]); - StringCopy(stringPtr, gOtherText_DontYouAgree); - } - else - { - StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->mauvilleOldMan_ecArray2[oldMan->unk2++]]); - } - if(!(Random() % 10)) - oldMan->unk1 = 10; - else - oldMan->unk1++; - - gScriptResult = TRUE; -} diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c deleted file mode 100644 index f7a1b633d..000000000 --- a/src/mystery_event_script.c +++ /dev/null @@ -1,103 +0,0 @@ -#include "global.h" -#include "mystery_event_script.h" -#include "script.h" -#include "string_util.h" -#include "text.h" - -#if ENGLISH -#define UNK_MASK_1 0x2 -#elif GERMAN -#define UNK_MASK_1 0x4 -#endif - -#ifdef SAPPHIRE -#define UNK_MASK_2 0x100 -#else -#define UNK_MASK_2 0x80 -#endif - -extern ScrCmdFunc gScriptFuncs[]; -extern ScrCmdFunc gScriptFuncs_End[]; - -extern u8 gOtherText_DataCannotUseVersion[]; - -static EWRAM_DATA struct ScriptContext gUnknown_02039288 = {0}; - -bool32 sub_8126098(u16 a1, u32 a2, u16 a3, u32 a4) -{ - if (!(a1 & UNK_MASK_1)) - return FALSE; - - if (!(a2 & UNK_MASK_1)) - return FALSE; - - if (!(a3 & 0x4)) - return FALSE; - - if (!(a4 & UNK_MASK_2)) - return FALSE; - - return TRUE; -} - -void sub_81260D0(void) -{ - StringExpandPlaceholders(gStringVar4, gOtherText_DataCannotUseVersion); - sub_8126160(3); -} - -void sub_81260EC(struct ScriptContext *ctx, u8 *ptr) -{ - InitScriptContext(ctx, gScriptFuncs, gScriptFuncs_End); - SetupBytecodeScript(ctx, ptr); - ctx->data[0] = (u32)ptr; - ctx->data[1] = 0; - ctx->data[2] = 0; - ctx->data[3] = 0; -} - -bool32 sub_812611C(struct ScriptContext *ctx) -{ - if (RunScript(ctx) && ctx->data[3]) - return TRUE; - else - return FALSE; -} - -u32 sub_812613C(u8 *ptr) -{ - struct ScriptContext *ctx = &gUnknown_02039288; - sub_81260EC(ctx, ptr); - while (sub_812611C(ctx)) - ; - return ctx->data[2]; -} - -void sub_8126160(u32 val) -{ - gUnknown_02039288.data[2] = val; -} - -int sub_812616C(u8 *a1, int a2) -{ - unsigned int i; - int sum = 0; - - for (i = 0; i < a2; i++) - sum += a1[i]; - - return sum; -} - -u32 sub_812618C(u8 *ptr) -{ - return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); -} - -void sub_81261A4(u8 *ptr, u32 val) -{ - ptr[0] = val; - ptr[1] = val >> 8; - ptr[2] = val >> 16; - ptr[3] = val >> 24; -} diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c new file mode 100644 index 000000000..33252c66b --- /dev/null +++ b/src/pokemon/learn_move.c @@ -0,0 +1,1081 @@ +#include "global.h" +#include "data2.h" +#include "field_fadetransition.h" +#include "main.h" +#include "menu.h" +#include "menu_cursor.h" +#include "palette.h" +#include "pokemon.h" +#include "overworld.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "strings2.h" +#include "task.h" +#include "trig.h" + +extern u8 ewram[]; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u8 gTileBuffer[]; + +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + +extern const struct ContestMove gContestMoves[]; +extern const struct ContestEffect gContestEffects[]; +extern const struct WindowConfig gWindowConfig_81E6CE4; +extern const struct WindowConfig gWindowConfig_81E7240; +extern const u8 *const gUnknown_083CADD4[]; +extern const u8 *const gMoveDescriptions[]; +extern const u8 gTypeNames[][7]; +extern const u8 *const gUnknown_083CAF70[]; + +#ifdef GERMAN +extern const u8 deuOtherText_ForgotAndLearned[]; +#endif + +extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); + +struct LearnMoveStruct +{ + u8 state; + u8 filler1; + u8 unk2; + u8 spriteIDs[20]; + u8 filler17[1]; + u8 unk18; + u8 unk19; + u8 numMenuChoices; + u8 menuSelection; + u8 unk1C; + bool8 unk1D; + u8 unk1E; + u8 filler1F; + /*0x020*/ u16 movesToLearn[20]; + u8 filler48[0x52-0x48]; + u8 moveNames[6][0x19]; + u8 fillerE8[0x2C3-0xE8]; + bool8 unk2C3; + bool8 showContestInfo; + /*0x2C5*/ u8 partyMon; + u8 unk2C6; +}; + +static struct LearnMoveStruct *sLearnMoveStruct; + +const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); + +const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp"); + +const u8 gUnknown_08402CF8[][4] = +{ + { 0, 0, 9, 13}, + {10, 0, 29, 7}, + { 2, 14, 27, 19}, + {10, 8, 29, 13}, +}; + +struct UnknownStruct1 +{ + const u8 *unk0; + u8 unk4; + u8 unk5; + u8 unk6; +}; + +const struct UnknownStruct1 gUnknown_08402D08[][4] = +{ + { + {OtherText_Battle, 1, 1, 0}, + {OtherText_Power, 1, 4, 1}, + {OtherText_Accuracy, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, + { + {OtherText_Contest, 1, 1, 0}, + {OtherText_Appeal, 1, 4, 1}, + {OtherText_Jam, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, +}; + +// XXX: What are these for? +const u32 unkDataFF00FFEF = 0xFF00FFEF; +const u8 *const gTileBuffer_ = gTileBuffer; + +const struct OamData gOamData_8402D50 = {.shape = 0}; +const struct OamData gOamData_8402D58 = {.shape = 2}; +const struct OamData gOamData_8402D60 = {.shape = 1}; + +const union AnimCmd gSpriteAnim_8402D68[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402D70[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402D78[] = +{ + gSpriteAnim_8402D68, + gSpriteAnim_8402D70, +}; + +const struct SpriteSheet gUnknown_08402D80 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525}; +const struct SpritePalette gUnknown_08402D88 = {gDexArrows_Pal, 5526}; + +void sub_8133300(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_8402D90 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D58, + .anims = gSpriteAnimTable_8402D78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const union AnimCmd gSpriteAnim_8402DA8[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DB0[] = +{ + ANIMCMD_FRAME(6, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DB8[] = +{ + gSpriteAnim_8402DA8, + gSpriteAnim_8402DB0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402DC0 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D60, + .anims = gSpriteAnimTable_8402DB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const union AnimCmd gSpriteAnim_8402DD8[] = +{ + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE0[] = +{ + ANIMCMD_FRAME(9, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE8[] = +{ + ANIMCMD_FRAME(10, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DF0[] = +{ + ANIMCMD_FRAME(11, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DF8[] = +{ + gSpriteAnim_8402DD8, + gSpriteAnim_8402DE0, + gSpriteAnim_8402DE8, + gSpriteAnim_8402DF0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402E08 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D50, + .anims = gSpriteAnimTable_8402DF8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori? + +void sub_813269C(u8); +void CB2_InitLearnMove(void); +void CB2_LearnMove(void); +void LearnMoveMain(void); +void DrawLearnMoveMenuWindow(void); +void sub_8133030(bool8); +u8 sub_81330E8(void); +void sub_8133140(u8); +u8 sub_8133248(void); +void ClearLearnMoveVars(void); +void sub_8133358(void); +void sub_8133558(void); +void sub_813362C(void); +void sub_8133800(void); +void sub_8133AEC(bool8, int); +void sub_8133CA4(void); + +void VBlankCB_LearnMove(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8132670(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_813269C, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); +} + +void sub_813269C(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_InitLearnMove); + gFieldCallback = sub_8080990; + DestroyTask(taskId); + } +} + +void CB2_InitLearnMove(void) +{ + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000); + ClearLearnMoveVars(); + sLearnMoveStruct->partyMon = gSpecialVar_0x8004; + sub_8133558(); + SetVBlankCallback(VBlankCB_LearnMove); + + SetUpWindowConfig(&gWindowConfig_81E7240); + InitMenuWindow(&gWindowConfig_81E7240); + MenuZeroFillScreen(); + + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuZeroFillScreen(); + + REG_BG0VOFS = 0; + REG_BG0VOFS = 0; // huh? + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; // huh? + + LoadSpriteSheet(&gUnknown_08402D80); + LoadSpritePalette(&gUnknown_08402D88); + sub_8133358(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_LearnMove); +} + +void sub_81327A4(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000); + sub_8133558(); + sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; + SetVBlankCallback(VBlankCB_LearnMove); + + SetUpWindowConfig(&gWindowConfig_81E7240); + InitMenuWindow(&gWindowConfig_81E7240); + MenuZeroFillScreen(); + + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuZeroFillScreen(); + + REG_DISPCNT = 0x1340; + REG_BG0VOFS = 0; + REG_BG0HOFS = 0; + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; // huh? + + LoadSpriteSheet(&gUnknown_08402D80); + LoadSpritePalette(&gUnknown_08402D88); + sub_8133358(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_LearnMove); +} + +void CB2_LearnMove(void) +{ + LearnMoveMain(); + if (sLearnMoveStruct->unk1D) + { + sLearnMoveStruct->unk1D = FALSE; + sub_814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); + } + if (sLearnMoveStruct->unk1E != 0) + { + sLearnMoveStruct->unk1E = 0; + sub_8133800(); + } + if (sLearnMoveStruct->unk2C3) + { + sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); + sLearnMoveStruct->unk2C3 = FALSE; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_81328E8(const u8 *a) +{ + StringExpandPlaceholders(gStringVar4, a); + MenuPrintMessage(gStringVar4, 3, 15); +} + +void LearnMoveMain(void) +{ + switch (sLearnMoveStruct->state) + { + case 0: + sLearnMoveStruct->state++; + DrawLearnMoveMenuWindow(); + sub_8133030(FALSE); + sub_8133800(); + gSprites[1].pos1.x = 0x48; + sLearnMoveStruct->unk2C3 = TRUE; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_DISPCNT = 0x1340; + break; + case 1: + if (!gPaletteFade.active) + sLearnMoveStruct->state = 4; + break; + case 2: + sLearnMoveStruct->state++; + break; + case 3: + sub_8133030(FALSE); + sub_8133800(); + sLearnMoveStruct->unk2C3 = TRUE; + sLearnMoveStruct->state++; + gSprites[1].pos1.x = 0x48; + break; + case 4: + if (sub_81330E8() == 0) + sub_813362C(); + return; + case 5: + sub_8133140(0); + sub_8133800(); + sLearnMoveStruct->unk2C3 = TRUE; + gSprites[1].pos1.x = 0x48; + sLearnMoveStruct->state++; + break; + case 6: + if (sub_8133248() == 0) + sub_813362C(); + break; + case 8: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state++; + } + break; + case 9: + { + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + sub_8133CA4(); + if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]) != 0xFFFF) + { + sub_81328E8(gOtherText_PokeLearnedMove); + gSpecialVar_0x8004 = 1; + sLearnMoveStruct->state = 31; + } + else + { + sLearnMoveStruct->state = 16; + } + } + else if (selection == -1 || selection == 1) + { + sub_8133CA4(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + } + break; + case 12: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state++; + } + break; + case 13: + { + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + sub_8133CA4(); + gSpecialVar_0x8004 = selection; + sLearnMoveStruct->state = 14; + } + else if (selection == -1 || selection == 1) + { + sub_8133CA4(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + } + break; + case 16: + sub_81328E8(gOtherText_DeleteOlderMove); + sLearnMoveStruct->state++; + break; + case 17: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state = 18; + } + break; + case 18: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + sub_81328E8(gOtherText_WhichMoveToForget); + sLearnMoveStruct->state = 19; + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + sLearnMoveStruct->state = 24; + } + } + break; + case 24: + sub_81328E8(gOtherText_StopLearningMove); + sLearnMoveStruct->state++; + break; + case 25: + if (MenuUpdateWindowText()) + { + sLearnMoveStruct->state = 26; + DisplayYesNoMenu(21, 7, 1); + } + break; + case 26: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + sLearnMoveStruct->state = 27; + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + + // What's the point? It gets set to 16, anyway. + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + sLearnMoveStruct->state = 16; + } + } + break; + case 27: + if (MenuUpdateWindowText()) + { + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + break; + case 19: + if (MenuUpdateWindowText()) + { + sLearnMoveStruct->state = 20; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + } + break; + case 20: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]); + sLearnMoveStruct->state = 28; + } + break; + case 21: + if (MenuUpdateWindowText()) + sLearnMoveStruct->state = 14; + break; + case 22: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sLearnMoveStruct->state++; + break; + case 15: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_2_switch); + break; + case 28: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + sLearnMoveStruct->state++; + DrawLearnMoveMenuWindow(); + sub_8133800(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sub_8133030(TRUE); + if (sLearnMoveStruct->showContestInfo == TRUE) + { + gSprites[1].pos1.x = 0x48; + sub_8133140(1); + } + sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); + break; + case 29: + if (!gPaletteFade.active) + { + if (sLearnMoveStruct->unk2C6 == 4) + { + sLearnMoveStruct->state = 24; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk2C6); + + StringCopy(gStringVar3, gMoveNames[moveId]); + RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk2C6); + SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection], sLearnMoveStruct->unk2C6); + StringCopy(gStringVar2, gMoveNames[sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]]); + sub_81328E8(gOtherText_ForgotMove123); + sLearnMoveStruct->state = 30; + gSpecialVar_0x8004 = 1; + } + } + break; + case 30: + if (MenuUpdateWindowText()) + { +#ifdef ENGLISH + sub_81328E8(gOtherText_ForgotOrDidNotLearnMove); +#else + sub_81328E8(deuOtherText_ForgotAndLearned); +#endif + sLearnMoveStruct->state = 31; + PlayFanfare(BGM_FANFA1); + } + break; + case 31: + if (MenuUpdateWindowText()) + { + PlayFanfare(BGM_FANFA1); + sLearnMoveStruct->state = 32; + } + break; + case 32: + if (IsFanfareTaskInactive()) + sLearnMoveStruct->state = 33; + break; + case 33: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 14; + } + break; + } +} + +void DrawLearnMoveMenuWindow(void) +{ + u32 i; + + BasicInitMenuWindow(&gWindowConfig_81E7240); + for (i = 0; i < 4; i++) + { + MenuDrawTextWindow( + gUnknown_08402CF8[i][0], + gUnknown_08402CF8[i][1], + gUnknown_08402CF8[i][2], + gUnknown_08402CF8[i][3]); + } + BasicInitMenuWindow(&gWindowConfig_81E6CE4); +} + +void sub_8133030(bool8 a) +{ + s32 i; + + gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; + + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; + + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) + { + sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); + } + + if (!a) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +u8 sub_81330E8(void) +{ + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; + + if (result != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 5; + sLearnMoveStruct->showContestInfo = TRUE; + } + + return result; +} + +void sub_8133140(bool8 a) +{ + s32 i; + + gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; + + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; + + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) + { + sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); + if (i != 0) + { + MenuZeroFillWindowRect( + gUnknown_08402D08[1][i].unk4, + gUnknown_08402D08[1][i].unk5 + 2, + gUnknown_08402D08[1][i].unk4 + 7, + gUnknown_08402D08[1][i].unk5 + 3); + } + } + + if (!a) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +u8 sub_8133248(void) +{ + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; + + if (result != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 3; + sLearnMoveStruct->showContestInfo = FALSE; + } + + return result; +} + +void ClearLearnMoveVars(void) +{ + s32 i; + + sLearnMoveStruct->state = 0; + sLearnMoveStruct->unk2 = 0; + sLearnMoveStruct->unk19 = 0; + sLearnMoveStruct->unk18 = 0; + sLearnMoveStruct->unk1C = 0; + sLearnMoveStruct->numMenuChoices = 0; + sLearnMoveStruct->menuSelection = 0; + sLearnMoveStruct->unk1D = FALSE; + sLearnMoveStruct->unk1E = 0; + sLearnMoveStruct->unk2C3 = FALSE; + sLearnMoveStruct->showContestInfo = FALSE; + for (i = 0; i < 20; i++) + sLearnMoveStruct->movesToLearn[i] = 0; +} + +void sub_8133300(struct Sprite *sprite) +{ + s16 var = (sprite->data1 * 10) & 0xFF; + + switch (sprite->data0) + { + case 0: + break; + case 1: + sprite->pos2.x = Sin(var, 3) * sprite->data2; + break; + case 2: + sprite->pos2.y = Sin(var, 1) * sprite->data2; + break; + } + sprite->data1++; +} + +void sub_8133358(void) +{ + s32 i; + + sLearnMoveStruct->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0); + gSprites[sLearnMoveStruct->spriteIDs[0]].data0 = 1; + gSprites[sLearnMoveStruct->spriteIDs[0]].data2 = -1; + + sLearnMoveStruct->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[1]], 1); + gSprites[sLearnMoveStruct->spriteIDs[1]].data0 = 1; + gSprites[sLearnMoveStruct->spriteIDs[1]].data2 = 1; + + sLearnMoveStruct->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[2]], 1); + gSprites[sLearnMoveStruct->spriteIDs[2]].data0 = 2; + gSprites[sLearnMoveStruct->spriteIDs[2]].data2 = -1; + + sLearnMoveStruct->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0); + gSprites[sLearnMoveStruct->spriteIDs[3]].data0 = 2; + gSprites[sLearnMoveStruct->spriteIDs[3]].data2 = 1; + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 2); + } + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); + } + + for (i = 0; i < 20; i++) + gSprites[sLearnMoveStruct->spriteIDs[i]].invisible = TRUE; + + CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18); +} + +void sub_8133558(void) +{ + s32 i; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn); + for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++) + StringCopy(sLearnMoveStruct->moveNames[i], gMoveNames[sLearnMoveStruct->movesToLearn[i]]); + GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + StringCopy(sLearnMoveStruct->moveNames[sLearnMoveStruct->numMenuChoices], gUnknownText_Exit); + sLearnMoveStruct->numMenuChoices++; +} + +void sub_813360C(s8 delta) +{ + sLearnMoveStruct->unk1C = sLearnMoveStruct->unk18; + sLearnMoveStruct->unk18 += delta; + sLearnMoveStruct->unk1D = TRUE; +} + +void sub_813362C(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (sLearnMoveStruct->menuSelection != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->menuSelection--; + sLearnMoveStruct->unk2C3 = TRUE; + if (sLearnMoveStruct->unk18 != 0) + { + sub_813360C(-1); + } + else if (sLearnMoveStruct->unk19 != 0) + { + sLearnMoveStruct->unk19--; + sLearnMoveStruct->unk1E++; + } + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (sLearnMoveStruct->menuSelection < sLearnMoveStruct->numMenuChoices - 1) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->menuSelection++; + sLearnMoveStruct->unk2C3 = TRUE; + if (sLearnMoveStruct->unk18 != 2) + { + sub_813360C(1); + } + else if (sLearnMoveStruct->unk19 != sLearnMoveStruct->numMenuChoices - 3) + { + sLearnMoveStruct->unk19++; + sLearnMoveStruct->unk1E++; + } + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) + { + sLearnMoveStruct->state = 8; + StringCopy(gStringVar2, sLearnMoveStruct->moveNames[sLearnMoveStruct->menuSelection]); + StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + sLearnMoveStruct->state = 12; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 12; + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + if (sLearnMoveStruct->numMenuChoices > 3) + { + gSprites[2].invisible = FALSE; + gSprites[3].invisible = FALSE; + if (sLearnMoveStruct->unk19 == 0) + gSprites[2].invisible = TRUE; + else if (sLearnMoveStruct->unk19 == sLearnMoveStruct->numMenuChoices - 3) + gSprites[3].invisible = TRUE; + } +} + +void sub_8133800(void) +{ + u8 r6 = sLearnMoveStruct->unk19; + u8 *str = gTileBuffer; + s32 i; + + for (i = 0; i < 3; i++) + { + if (r6 >= sLearnMoveStruct->numMenuChoices) + { + str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0); + } + else if (r6 == sLearnMoveStruct->numMenuChoices - 1) + { + str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0); + } + else + { + u16 moveId = sLearnMoveStruct->movesToLearn[r6]; + + if (sLearnMoveStruct->showContestInfo) + str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0); + else + str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0); + + str = sub_8072C74(str, sLearnMoveStruct->moveNames[r6], 0x72, 0); + + str[0] = CHAR_P; + str[1] = CHAR_P; + str[2] = CHAR_SLASH; + str += 3; + + str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0); + } + *str++ = CHAR_NEWLINE; + r6++; + } + *str = EOS; + MenuPrint(gTileBuffer, 11, 1); + sub_813360C(0); +} + +const u8 gUnknown_08402E24[7][3] = +{ + {11, 1, 1}, + { 3, 6, 2}, + {24, 1, 3}, + { 3, 11, 4}, + { 5, 4, 5}, + { 3, 6, 6}, + { 3, 11, 7}, +}; + +const u8 gUnknown_08402E39[] = {0, 1, 2, 3}; +const u8 gUnknown_08402E3D[] = {4, 5, 6}; + +void PrintMoveInfo(u16 moveId, const u8 *b) +{ + u8 str[0x34]; + u8 numHearts; + u8 i; + + StringCopy(str, gExpandedPlaceholder_Empty); + switch (b[2]) + { + case 1: + break; + case 2: + if (gBattleMoves[moveId].power < 2) + sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); + else + sub_8072C14(str, gBattleMoves[moveId].power, 32, 2); + MenuPrint(str, b[0], b[1]); + break; + case 4: + if (gBattleMoves[moveId].accuracy == 0) + sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); + else + sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2); + MenuPrint(str, b[0], b[1]); + break; + case 6: + MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 1); + else + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 0); + } + break; + case 7: + MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 3); + else + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); + } + break; + } +} + +void sub_8133AEC(bool8 contestInfo, int unused) +{ + u16 i; + + if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) + { + u16 moveId = sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]; + + if (contestInfo) + { + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; + for (i = 0; i < 3; i++) + PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]); + sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); + } + else + { + u8 var; + + for (i = 0; i < 4; i++) + PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E39[i]]); + var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1); + if (var < 2) + { + u8 r1 = var * 2 + 9; + + MenuFillWindowRectWithBlankTile(11, r1, 28, 12); + } + } + } + else + { + if (contestInfo) + { + MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); + MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; + } + else + { + MenuZeroFillWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); + MenuZeroFillWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); + } + MenuZeroFillWindowRect(11, 9, 28, 12); + } +} + +void sub_8133CA4(void) +{ + MenuZeroFillWindowRect(21, 7, 27, 12); + sub_8133AEC(sLearnMoveStruct->showContestInfo, 0); +} diff --git a/src/mail.c b/src/pokemon/mail.c index 658d37976..c5dd119e3 100644 --- a/src/mail.c +++ b/src/pokemon/mail.c @@ -8,7 +8,7 @@ #include "name_string_util.h" #include "palette.h" #include "pokemon_icon.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "string_util.h" #include "strings2.h" @@ -92,7 +92,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) ewram0.varFF = GAME_LANGUAGE; ewram0.var100 = 1; - ewram0.var104 = (MainCallback)sub_80EB3FC; + ewram0.var104 = (MainCallback)EasyChat_GetWordText; ewram0.var108 = (MainCallback)ConvertEasyChatWordsToString; mailDesign = arg0->itemId - ITEM_ORANGE_MAIL; diff --git a/src/mail_data.c b/src/pokemon/mail_data.c index ae3f4b3e8..ae3f4b3e8 100644 --- a/src/mail_data.c +++ b/src/pokemon/mail_data.c diff --git a/src/mon_markings.c b/src/pokemon/mon_markings.c index 0cad8db59..0cad8db59 100644 --- a/src/mon_markings.c +++ b/src/pokemon/mon_markings.c diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c new file mode 100644 index 000000000..5d6b215cd --- /dev/null +++ b/src/pokemon/pokeblock_feed.c @@ -0,0 +1,1015 @@ +#include "global.h" +#include "task.h" +#include "palette.h" +#include "main.h" +#include "menu_helpers.h" +#include "text.h" +#include "text_window.h" +#include "menu.h" +#include "overworld.h" +#include "decompress.h" +#include "data2.h" +#include "sprite.h" +#include "item_use.h" +#include "pokeblock.h" +#include "party_menu.h" +#include "strings.h" +#include "string_util.h" +#include "m4a.h" +#include "field_effect.h" +#include "sound.h" +#include "trig.h" + +extern u8 ewram[]; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gPokeblockMonID; +extern s16 gPokeblockGain; + +extern const u8 gPokeblockRed_Pal[]; +extern const u8 gPokeblockBlue_Pal[]; +extern const u8 gPokeblockPink_Pal[]; +extern const u8 gPokeblockGreen_Pal[]; +extern const u8 gPokeblockYellow_Pal[]; +extern const u8 gPokeblockPurple_Pal[]; +extern const u8 gPokeblockIndigo_Pal[]; +extern const u8 gPokeblockBrown_Pal[]; +extern const u8 gPokeblockLiteBlue_Pal[]; +extern const u8 gPokeblockOlive_Pal[]; +extern const u8 gPokeblockGray_Pal[]; +extern const u8 gPokeblockBlack_Pal[]; +extern const u8 gPokeblockWhite_Pal[]; +extern const u8 gPokeblockGold_Pal[]; +extern const u8 gPokeblock_Gfx[]; +extern const u8 gBattleTerrainTiles_Building[]; +extern const u8 gUnknown_08E782FC[]; +extern const u8 gBattleTerrainPalette_BattleTower[]; +extern const struct CompressedSpriteSheet gUnknown_083F7F74; +extern const struct CompressedSpritePalette gUnknown_083F7F7C; + +bool8 IsPokeSpriteNotFlipped(u16 species); + +// this file's functions +static void sub_8147B04(void); +static void sub_81481DC(void); +static void sub_814825C(void); +static u8 sub_81480B4(void); +static u8 CreatePokeblockSprite(void); +static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon); +static bool8 sub_8147B20(struct Pokemon* mon); +static void LaunchPokeblockFeedTask(u8); +static void sub_8148044(u8); +static void sub_8148078(struct Sprite* sprite); +static void Task_PrintAtePokeblockText(u8 taskID); +static void Task_PaletteFadeToReturn(u8 taskID); +static void SetPokeblockFeedSpritePal(u8); +static void sub_8148108(u8, bool8); +static bool8 sub_8148540(void); +static bool8 sub_81485CC(void); +static bool8 FreePokeSpriteMatrix(void); +void sub_8148710(void); +static void SpriteCB_ThrownPokeblock(struct Sprite* sprite); +static void sub_814862C(void); + +// EWRAM +EWRAM_DATA static struct CompressedSpritePalette sPokeblockFeedSpritePal = {0}; + +// IWRAM common +struct Sprite* gPokeblockFeedPokeSprite; +u16 gPokeblockFeedMonSpecies; +bool8 gPokeblockMonNotFlipped; +u8 gPokeblockFeedMonSpriteID; +u8 gPokeblockFeedMonNature; +u16 gUnknown_03005F34; +u8 gPokeblockFeedUnused0; +u8 gUnknown_03005F3C; +u8 gUnknown_03005F40; +struct Sprite gPokeblockFeedPokeSpriteCopy; +u16 gUnknown_03005F94; +s16 gUnknown_03005FA0[24]; + +// rodata + +static const u8 sNatureToMonPokeblockAnim[][2] = +{ + { 0, 0 }, // HARDY + { 3, 0 }, // LONELY + { 4, 1 }, // BRAVE + { 5, 0 }, // ADAMANT + { 10, 0 }, // NAUGHTY + { 13, 0 }, // BOLD + { 15, 0 }, // DOCILE + { 16, 2 }, // RELAXED + { 18, 0 }, // IMPISH + { 19, 0 }, // LAX + { 20, 0 }, // TIMID + { 25, 0 }, // HASTY + { 27, 3 }, // SERIOUS + { 28, 0 }, // JOLLY + { 29, 0 }, // NAIVE + { 33, 4 }, // MODEST + { 36, 0 }, // MILD + { 37, 0 }, // QUIET + { 39, 0 }, // BASHFUL + { 42, 0 }, // RASH + { 45, 0 }, // CALM + { 46, 5 }, // GENTLE + { 47, 6 }, // SASSY + { 48, 0 }, // CAREFUL + { 53, 0 }, // QUIRKY +}; + +static const s16 sMonPokeblockAnims[][10] = +{ + // HARDY + { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0}, + { 0, 4, 0, 16, 24, 0, 0, 0, 12, 0}, + { 0, 4, 0, 32, 32, 0, 0, 0, 16, 1}, + + // LONELY + { 0, 3, 6, 0, 48, 0, 0, 0, 24, 1}, + + // BRAVE + { 64, 16, -24, 0, 32, 0, 0, 0, 0, 1}, + + // ADAMANT + { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0}, + { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0}, + { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0}, + { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0}, + { 0, 4, -16, 0, 4, 0, 16, 0, 0, 1}, + + // NAUGHTY + { 0, 3, 6, 0, 12, 0, 0, 0, 6, 0}, + { 0, 3, -6, 0, 12, 0, 0, 0, 6, 0}, + { 0, 16, 16, 0, 45, 1, 0, 0, 0, 1}, + + // BOLD + { 0, 16, 0, 24, 32, 0, 0, 0, 16, 0}, + { 0, 16, 0, 23, 32, 0, 0, 0, 16, 1}, + + // DOCILE + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 1}, + + // RELAXED + { 0, 2, 8, 0, 32, 0, 0, 0, 0, 0}, + { 0, 2, -8, 0, 32, 0, 0, 0, 0, 1}, + + // IMPISH + { 0, 32, 2, 1, 48, 1, 0, 0, 24, 1}, + + // LAX + { 0, 2, 16, 16, 128, 0, 0, 0, 0, 1}, + + // TIMID + { 0, 2, -8, 0, 48, 0, -24, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 64, 32, 2, 0, 36, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 0, 2, 8, 0, 48, 0, 24, 0, 0, 1}, + + // HASTY + { 64, 24, 16, 0, 32, 0, 0, 0, 0, 0}, + { 0, 28, 2, 1, 32, 1, 0, 0, 16, 1}, + + // SERIOUS + { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1}, + + // JOLLY + { 64, 16, -16, 2, 48, 0, 0, 0, 32, 1}, + + // NAIVE + { 0, 12, -8, 4, 24, 0, 8, 0, 12, 0}, + { 0, 12, 8, 8, 24, 0, -16, 0, 12, 0}, + { 0, 12, -8, 16, 24, 0, 16, 0, 12, 0}, + { 0, 12, 8, 28, 24, 0, -8, 0, 12, 1}, + + // MODEST + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 64, 16, -4, 0, 32, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 1}, + + // MILD + { 128, 4, 0, 8, 64, 0, 0, 0, 0, 1}, + + // QUIET + { 0, 2, 16, 0, 48, 0, 0, 0, 0, 0}, + { 128, 2, 16, 0, 48, 0, 0, 0, 0, 1}, + + // BASHFUL + { 0, 2, -4, 0, 48, 0, -48, 0, 0, 0}, + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0}, + { 0, 2, 8, 0, 24, 0, 48, 0, 0, 1}, + + // RASH + { 64, 4, 64, 58, 52, 0, -88, 0, 0, 0}, + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0}, + { 0, 24, 80, 0, 32, 0, 88, 0, 0, 1}, + + // CALM + { 0, 2, 16, 4, 64, 0, 0, 0, 0, 1}, + + // GENTLE + { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1}, + + // SASSY + { 0, 0, 0, 0, 42, 0, 0, 0, 0, 1}, + + // CAREFUL + { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0}, + { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0}, + { 0, 4, 0, 12, 24, 0, 0, 0, 12, 0}, + { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0}, + { 0, 4, 0, 4, 24, 0, 0, 0, 12, 1}, + + // QUIRKY + { 0, 4, 16, 12, 64, 0, 0, 0, 0, 0}, + { 0, -4, 16, 12, 64, 0, 0, 0, 0, 1}, +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411E90[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EA0[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 12, 1), + AFFINEANIMCMD_FRAME(0, 0, 0, 30), + AFFINEANIMCMD_FRAME(0, 0, -12, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EC0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, 12, 1), + AFFINEANIMCMD_FRAME(0, 0, 0, 28), + AFFINEANIMCMD_FRAME(0, 0, -4, 3), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EE8[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F08[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F30[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F50[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F78[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F98[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411FC0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411FE0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412008[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412028[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_8412050[] = +{ + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411EA0, + sSpriteAffineAnim_8411EE8, + sSpriteAffineAnim_8411F30, + sSpriteAffineAnim_8411F78, + sSpriteAffineAnim_8411FC0, + sSpriteAffineAnim_8412008, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411EC0, + sSpriteAffineAnim_8411F08, + sSpriteAffineAnim_8411F50, + sSpriteAffineAnim_8411F98, + sSpriteAffineAnim_8411FE0, + sSpriteAffineAnim_8412028, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, +}; + +static const u8* const sPokeblocksPals[] = +{ + gPokeblockRed_Pal, + gPokeblockBlue_Pal, + gPokeblockPink_Pal, + gPokeblockGreen_Pal, + gPokeblockYellow_Pal, + gPokeblockPurple_Pal, + gPokeblockIndigo_Pal, + gPokeblockBrown_Pal, + gPokeblockLiteBlue_Pal, + gPokeblockOlive_Pal, + gPokeblockGray_Pal, + gPokeblockBlack_Pal, + gPokeblockWhite_Pal, + gPokeblockGold_Pal +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84120DC[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84120EC[] = +{ + sSpriteAffineAnim_84120DC +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84120F0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412148[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A0[] = +{ + sSpriteAffineAnim_84120DC +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A4[] = +{ + sSpriteAffineAnim_84120F0 +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A8[] = +{ + sSpriteAffineAnim_8412148 +}; + +static const struct OamData sThrownPokeblockOamData = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sThrownPokeblockSpriteAnim[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sThrownPokeblockAnimTable[] = +{ + sThrownPokeblockSpriteAnim, +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84121C0[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(-8, -8, 0, 1), + AFFINEANIMCMD_JUMP(1) +}; + +static const union AffineAnimCmd *const sThrownPokeblockAffineAnimTable[] = +{ + sSpriteAffineAnim_84121C0 +}; + +static const struct CompressedSpriteSheet sUnknown_084121DC = +{ + gPokeblock_Gfx, 0x20, 14818 +}; + +static const struct SpriteTemplate sThrownPokeblockSpriteTemplate = +{ + .tileTag = 14818, + .paletteTag = 14818, + .oam = &sThrownPokeblockOamData, + .anims = sThrownPokeblockAnimTable, + .images = NULL, + .affineAnims = sThrownPokeblockAffineAnimTable, + .callback = SpriteCB_ThrownPokeblock +}; + +// code + +static void CB2_PokeblockFeed(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); +} + +static void VBlankCB_PokeblockFeed(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static bool8 TransitionToPokeblockFeedScene(void) +{ + switch (gMain.state) + { + case 0: + sub_80F9438(); + sub_80F9368(); + sub_8147B04(); + gMain.state++; + break; + case 1: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = 1; + gMain.state++; + break; + case 2: + ResetSpriteData(); + gMain.state++; + break; + case 3: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 4: + SetUpWindowConfig(&gWindowConfig_81E6E50); + gMain.state++; + break; + case 5: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50); + gMain.state++; + break; + case 6: + if (MultistepInitMenuWindowContinue()) + { + ewram[0x1FFFF] = 0; + gMain.state++; + } + break; + case 7: + if (sub_8147B20(&gPlayerParty[gPokeblockMonID])) + { + gMain.state++; + } + break; + case 8: + ewram[0x1FFFD] = sub_81480B4(); + gMain.state++; + break; + case 9: + ewram[0x1FFFE] = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]); + gMain.state++; + break; + case 10: + MenuDrawTextWindow(0, 14, 29, 19); + gMain.state++; + break; + case 11: + if (sub_8055870() != 1) + { + gMain.state++; + } + break; + case 12: + { + u16 savedIME = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIME; + REG_DISPSTAT |= 8; + SetVBlankCallback(VBlankCB_PokeblockFeed); + gMain.state++; + } + case 13: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(CB2_PokeblockFeed); + return TRUE; + } + return FALSE; +} + +void CB2_PreparePokeblockFeedScene(void) +{ + while (1) + { + if (TransitionToPokeblockFeedScene() == 1) + { + LaunchPokeblockFeedTask(1); + break; + } + if (sub_80F9344() == 1) + break; + } +} + +static void sub_8147B04(void) +{ + REG_BG1CNT = 0x1D02l; + REG_DISPCNT = 0x1340; +} + +static bool8 sub_8147B20(struct Pokemon* mon) +{ + u16 species; + u32 PiD, TiD; + switch (ewram[0x1FFFF]) + { + case 0: + species = GetMonData(mon, MON_DATA_SPECIES2); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_081FAF4C[1], species, PiD); + ewram[0x1FFFF]++; + break; + case 1: + { + const struct CompressedSpritePalette* palette; + + species = GetMonData(mon, MON_DATA_SPECIES2); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + TiD = GetMonData(mon, MON_DATA_OT_ID); + palette = GetMonSpritePalStructFromOtIdPersonality(species, TiD, PiD); + LoadCompressedObjectPalette(palette); + GetMonSpriteTemplate_803C56C(palette->tag, 1); + ewram[0x1FFFF]++; + } + break; + case 2: + LoadCompressedObjectPic(&gUnknown_083F7F74); + ewram[0x1FFFF]++; + break; + case 3: + LoadCompressedObjectPalette(&gUnknown_083F7F7C); + ewram[0x1FFFF]++; + break; + case 4: + LoadCompressedObjectPic(&sUnknown_084121DC); + ewram[0x1FFFF]++; + break; + case 5: + SetPokeblockFeedSpritePal(gScriptItemId); + LoadCompressedObjectPalette(&sPokeblockFeedSpritePal); + ewram[0x1FFFF]++; + break; + case 6: + LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM)); + ewram[0x1FFFF]++; + break; + case 7: + LZDecompressVram(gUnknown_08E782FC, (void*)(VRAM + 0xE800)); + ewram[0x1FFFF]++; + break; + case 8: + LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); + ewram[0x1FFFF] = 0; + return TRUE; + } + return FALSE; +} + +static void SetPokeblockFeedSpritePal(u8 pkbID) +{ + u8 color = GetPokeblockData(&gSaveBlock1.pokeblocks[pkbID], PBLOCK_COLOR); + sPokeblockFeedSpritePal.data = sPokeblocksPals[color - 1]; + sPokeblockFeedSpritePal.tag = 0x39E2; +} + +static void sub_8147CC8(u8 taskID) +{ + if (!gPaletteFade.active) + { + switch (gTasks[taskID].data[0]) + { + case 0: + gUnknown_03005F3C = 0; + gUnknown_03005F94 = 0; + sub_81481DC(); + break; + case 255: + sub_8148108(ewram[0x1FFFD], gTasks[taskID].data[1]); + break; + case 269: + ewram[0x1FFFC] = CreatePokeblockSprite(); + break; + case 281: + sub_8148044(ewram[0x1FFFE]); + break; + case 297: + gTasks[taskID].func = Task_PrintAtePokeblockText; + return; + } + if (gUnknown_03005F94 < gUnknown_03005F34) + sub_814825C(); + else if (gUnknown_03005F94 == gUnknown_03005F34) + gTasks[taskID].data[0] = 254; + + gUnknown_03005F94++; + gTasks[taskID].data[0]++; + } +} + +static void LaunchPokeblockFeedTask(u8 a0) +{ + u8 taskID = CreateTask(sub_8147CC8, 0); + gTasks[taskID].data[0] = 0; + gTasks[taskID].data[1] = a0; +} + +static void Task_WaitForAtePokeblockText(u8 taskID) +{ + if (MenuUpdateWindowText() == 1) + gTasks[taskID].func = Task_PaletteFadeToReturn; +} + +static void Task_PrintAtePokeblockText(u8 taskID) +{ + struct Pokemon* mon = &gPlayerParty[gPokeblockMonID]; + struct Pokeblock* pokeblock = &gSaveBlock1.pokeblocks[gScriptItemId]; + + gPokeblockGain = PokeblockGetGain(GetNature(mon), pokeblock); + GetMonNickname(mon, gStringVar1); + PokeblockCopyName(pokeblock, gStringVar2); + + if (gPokeblockGain == 0) + StringExpandPlaceholders(gStringVar4, gContestStatsText_NormallyAte); + else if (gPokeblockGain > 0) + StringExpandPlaceholders(gStringVar4, gContestStatsText_HappilyAte); + else + StringExpandPlaceholders(gStringVar4, gContestStatsText_DisdainfullyAte); + + MenuPrintMessage(gStringVar4, 1, 15); + gTasks[taskID].func = Task_WaitForAtePokeblockText; +} + +static void Task_ReturnAfterPaletteFade(u8 taskID) +{ + if (!gPaletteFade.active) + { + m4aMPlayVolumeControl(&gMPlay_BGM, -1, 256); + SetMainCallback2(gMain.savedCallback); + DestroyTask(taskID); + } +} + +static void Task_PaletteFadeToReturn(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = Task_ReturnAfterPaletteFade; +} + +static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon) +{ + u16 species = GetMonData(mon, MON_DATA_SPECIES2); + u8 spriteID = CreateSprite(&gUnknown_02024E8C, 48, 80, 2); + + gPokeblockFeedMonSpecies = species; + gPokeblockFeedMonSpriteID = spriteID; + gPokeblockFeedMonNature = GetNature(mon); + gSprites[spriteID].data2 = species; + gSprites[spriteID].callback = SpriteCallbackDummy; + gPokeblockMonNotFlipped = 1; + if (!IsPokeSpriteNotFlipped(species)) + { + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84120EC; + gSprites[spriteID].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[spriteID], gSprites[spriteID].oam.shape, gSprites[spriteID].oam.size, gSprites[spriteID].oam.affineMode); + gPokeblockMonNotFlipped = 0; + } + return spriteID; +} + +static void sub_8148044(u8 spriteID) +{ + gSprites[spriteID].pos1.x = 48; + gSprites[spriteID].pos1.y = 80; + gSprites[spriteID].data0 = -8; + gSprites[spriteID].data1 = 1; + gSprites[spriteID].callback = sub_8148078; +} + +static void sub_8148078(struct Sprite* sprite) +{ + sprite->pos1.x += 4; + sprite->pos1.y += sprite->data0; + sprite->data0 += sprite->data1; + if (sprite->data0 == 0) + PlayCry1(sprite->data2, 0); + if (sprite->data0 == 9) + sprite->callback = SpriteCallbackDummy; +} + +static u8 sub_81480B4(void) +{ + u8 spriteID = sub_810BA50(188, 100, 2); + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A0; + gSprites[spriteID].callback = SpriteCallbackDummy; + InitSpriteAffineAnim(&gSprites[spriteID]); + return spriteID; +} + +static void sub_8148108(u8 spriteID, bool8 a1) +{ + FreeOamMatrix(gSprites[spriteID].oam.matrixNum); + gSprites[spriteID].oam.affineMode = 3; + if (!a1) + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A4; + else + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A8; + InitSpriteAffineAnim(&gSprites[spriteID]); +} + +static u8 CreatePokeblockSprite(void) +{ + u8 spriteID = CreateSprite(&sThrownPokeblockSpriteTemplate, 174, 84, 1); + gSprites[spriteID].data0 = -12; + gSprites[spriteID].data1 = 1; + return spriteID; +} + +static void SpriteCB_ThrownPokeblock(struct Sprite* sprite) +{ + sprite->pos1.x -= 4; + sprite->pos1.y += sprite->data0; + sprite->data0 += sprite->data1; + if (sprite->data0 == 10) + DestroySprite(sprite); +} + +static void sub_81481DC(void) +{ + u8 animID, i; + + gUnknown_03005F34 = 1; + animID = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0]; + for (i = 0; i < 8; i++, animID++) + { + gUnknown_03005F34 += sMonPokeblockAnims[animID][4]; + if (sMonPokeblockAnims[animID][9] == 1) + break; + } +} + +static void sub_814825C(void) +{ + switch (gUnknown_03005F3C) + { + case 0: + gUnknown_03005F40 = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0]; + gPokeblockFeedPokeSprite = &gSprites[gPokeblockFeedMonSpriteID]; + gPokeblockFeedPokeSpriteCopy = *gPokeblockFeedPokeSprite; + gUnknown_03005F3C = 10; + break; + case 1 ... 9: + break; + case 10: + sub_8148540(); + if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0) + { + gPokeblockFeedPokeSprite->oam.affineMode = 3; + gPokeblockFeedPokeSprite->oam.matrixNum = 0; + gPokeblockFeedPokeSprite->affineAnims = sSpriteAffineAnimTable_8412050; + InitSpriteAffineAnim(gPokeblockFeedPokeSprite); + } + gUnknown_03005F3C = 50; + case 50: + if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0) + { + if (gPokeblockMonNotFlipped == 0) + StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] + 10); + else + StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1]); + } + gUnknown_03005F3C = 60; + break; + case 60: + if (sub_81485CC() == 1) + { + if (gUnknown_03005FA0[9] == 0) + { + gUnknown_03005F40++; + sub_8148540(); + gUnknown_03005F3C = 60; + } + else + { + FreeOamMatrix(gPokeblockFeedPokeSprite->oam.matrixNum); + gUnknown_03005F3C = 70; + } + } + break; + case 70: + FreePokeSpriteMatrix(); + gUnknown_03005F40 = 0; + gUnknown_03005F3C = 0; + break; + case 71 ... 90: + break; + } +} + +static bool8 sub_8148540(void) +{ + u8 i; + for (i = 0; i < 10; i++) + gUnknown_03005FA0[i] = sMonPokeblockAnims[gUnknown_03005F40][i]; + if (gUnknown_03005FA0[4] == 0) + return TRUE; + else + { + gUnknown_03005FA0[10] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2]); + gUnknown_03005FA0[11] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3]); + gUnknown_03005FA0[12] = gUnknown_03005FA0[4]; + gUnknown_03005FA0[13] = gPokeblockFeedPokeSprite->pos2.x; + gUnknown_03005FA0[14] = gPokeblockFeedPokeSprite->pos2.y; + sub_8148710(); + gUnknown_03005FA0[4] = gUnknown_03005FA0[12]; + sub_814862C(); + gUnknown_03005FA0[4] = gUnknown_03005FA0[12]; + return FALSE; + } +} + +#define ewram1D000 ((u16 *)(ewram + 0x1D000)) +#define ewram1D400 ((u16 *)(ewram + 0x1D400)) + +static bool8 sub_81485CC(void) +{ + u16 var = gUnknown_03005FA0[12] - gUnknown_03005FA0[4]; + + gPokeblockFeedPokeSprite->pos2.x = ewram1D000[var]; + gPokeblockFeedPokeSprite->pos2.y = ewram1D400[var]; + + if (--gUnknown_03005FA0[4] == 0) + return TRUE; + else + return FALSE; +} + +static bool8 FreePokeSpriteMatrix(void) +{ + FreeSpriteOamMatrix(gPokeblockFeedPokeSprite); + return FALSE; +} + +static void sub_814862C(void) +{ + u16 i; + u16 r8 = gUnknown_03005FA0[8]; + u16 r7 = gUnknown_03005FA0[12] - r8; + s16 var3 = gUnknown_03005FA0[13] + gUnknown_03005FA0[6]; + s16 r9 = gUnknown_03005FA0[14] + gUnknown_03005FA0[7]; + + for (i = 0; i < r7 - 1; i++) + { + s16* r3 = &ewram1D000[r8 + i]; + s16 r1 = *r3 - (var3); + + s16* r5 = &ewram1D400[r8 + i]; + s16 r4 = *r5 - r9; + + *r3 -= r1 * (i + 1) / r7; + *r5 -= r4 * (i + 1) / r7; + } + + ewram1D000[(r8 + r7) - 1] = var3; + ewram1D400[(r8 + r7) - 1] = r9; +} + +void sub_8148710(void) +{ + bool8 var_24 = FALSE; + s16 r8 = gUnknown_03005FA0[13] - gUnknown_03005FA0[10]; + s16 r7 = gUnknown_03005FA0[14] - gUnknown_03005FA0[11]; + while (1) + { + u16 r5; + u16 r4; + u16 var; + + var = abs(gUnknown_03005FA0[5]); + r5 = var + gUnknown_03005FA0[3]; + gUnknown_03005FA0[3] = r5; + + if (gUnknown_03005FA0[2] < 0) + var_24 = TRUE; + + r4 = gUnknown_03005FA0[12] - gUnknown_03005FA0[4]; + + if (gUnknown_03005FA0[4] == 0) + break; + + if (!var_24) + { + ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8; + ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7; + } + else + { + ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8; + ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7; + } + + gUnknown_03005FA0[0] += gUnknown_03005FA0[1]; + gUnknown_03005FA0[0] &= 0xFF; + gUnknown_03005FA0[4]--; + } +} diff --git a/src/pokedex.c b/src/pokemon/pokedex.c index c132635cb..947dfd218 100644 --- a/src/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1,4 +1,3 @@ - #include "global.h" #include "gba/m4a_internal.h" #include "pokedex.h" @@ -16,7 +15,7 @@ #include "pokedex_cry_screen.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "songs.h" #include "sound.h" #include "species.h" @@ -150,7 +149,6 @@ extern const u8 gUnknown_08E96738[]; extern const u8 gUnknown_08E96888[]; extern const u8 gUnknown_08E96994[]; extern const u8 gUnknown_08E9C6DC[]; -extern const u8 gUnknown_08D00524[]; extern const u8 gUnknown_08E96BD4[]; extern const u8 gUnknown_08E96ACC[]; extern const u8 gUnknown_08E96B58[]; @@ -186,7 +184,7 @@ static const u8 gUnknown_0839FA7C[] = INCBIN_U8("graphics/pokedex/noball.4bpp.lz extern const u8 gUnknown_0839FA7C[]; #endif -#include "data/pokedex_orders.h" +#include "../data/pokedex_orders.h" static const struct OamData gOamData_83A0404 = { .y = 160, @@ -515,9 +513,9 @@ static const u8 gUnknown_083A05F1[] = {16, 8, 4, 2, 1}; const u8 gEmptySpacce_83A05F6[] = {0, 0}; // Padding, maybe? static const u8 gUnknown_083A05F8[] = _(""); #if ENGLISH -#include "data/pokedex_entries_en.h" +#include "../data/pokedex_entries_en.h" #elif GERMAN -#include "data/pokedex_entries_de.h" +#include "../data/pokedex_entries_de.h" #endif static const u16 gUnknown_083B4EC4[16] = {0}; static const u8 *const sMonFootprintTable[] = @@ -1320,8 +1318,8 @@ void ResetPokedex(void) { gSaveBlock2.pokedex.owned[i] = 0; gSaveBlock2.pokedex.seen[i] = 0; - gSaveBlock1.unk938[i] = 0; - gSaveBlock1.unk3A8C[i] = 0; + gSaveBlock1.dexSeen2[i] = 0; + gSaveBlock1.dexSeen3[i] = 0; } } @@ -2030,8 +2028,8 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = HoennToNationalOrder(i + 1); gPokedexView->unk0[i].dexNum = vars[2]; - gPokedexView->unk0[i].seen = GetNationalPokedexFlag(vars[2], 0); - gPokedexView->unk0[i].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[i].seen = GetSetPokedexFlag(vars[2], 0); + gPokedexView->unk0[i].owned = GetSetPokedexFlag(vars[2], 1); if (gPokedexView->unk0[i].seen) gPokedexView->pokemonListCount = i + 1; } @@ -2045,14 +2043,14 @@ static void SortPokedex(u8 dexMode, u8 sortMode) for (i = 0; i < vars[0]; i++) { vars[2] = i + 1; - if (GetNationalPokedexFlag(vars[2], 0)) + if (GetSetPokedexFlag(vars[2], 0)) r10 = 1; if (r10) { asm(""); //Needed to match for some reason gPokedexView->unk0[r5].dexNum = vars[2]; - gPokedexView->unk0[r5].seen = GetNationalPokedexFlag(vars[2], 0); - gPokedexView->unk0[r5].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0); + gPokedexView->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1); if (gPokedexView->unk0[r5].seen) gPokedexView->pokemonListCount = r5 + 1; r5++; @@ -2065,11 +2063,11 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Alphabetical[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 0)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; - gPokedexView->unk0[gPokedexView->pokemonListCount].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1); gPokedexView->pokemonListCount++; } } @@ -2079,7 +2077,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2093,7 +2091,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2107,7 +2105,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2121,7 +2119,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -3946,7 +3944,7 @@ static void sub_8090B8C(u8 taskId) otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12]; personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14]; paletteNum = gSprites[gTasks[taskId].data[3]].oam.paletteNum; - lzPaletteData = species_and_otid_get_pal(species, otId, personality); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personality); LoadCompressedPalette(lzPaletteData, 0x100 | paletteNum * 16, 32); DestroyTask(taskId); } @@ -4008,79 +4006,79 @@ u16 GetPokedexHeightWeight(u16 dexNum, u8 data) } } -s8 GetNationalPokedexFlag(u16 a, u8 b) +s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) { u8 index; u8 bit; u8 mask; s8 retVal; - a--; - index = a / 8; - bit = a % 8; + nationalDexNo--; + index = nationalDexNo / 8; + bit = nationalDexNo % 8; mask = 1 << bit; retVal = 0; - switch (b) + switch (caseID) { - case 0: + case FLAG_GET_SEEN: if (gSaveBlock2.pokedex.seen[index] & mask) { - if ((gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk938[index] & mask) - && (gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask)) + if ((gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.dexSeen2[index] & mask) + && (gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.dexSeen3[index] & mask)) retVal = 1; else { gSaveBlock2.pokedex.seen[index] &= ~mask; - gSaveBlock1.unk938[index] &= ~mask; - gSaveBlock1.unk3A8C[index] &= ~mask; + gSaveBlock1.dexSeen2[index] &= ~mask; + gSaveBlock1.dexSeen3[index] &= ~mask; retVal = 0; } } break; - case 1: + case FLAG_GET_CAUGHT: if (gSaveBlock2.pokedex.owned[index] & mask) { if ((gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock2.pokedex.seen[index] & mask) - && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk938[index] & mask) - && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask)) + && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.dexSeen2[index] & mask) + && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.dexSeen3[index] & mask)) retVal = 1; else { gSaveBlock2.pokedex.owned[index] &= ~mask; gSaveBlock2.pokedex.seen[index] &= ~mask; - gSaveBlock1.unk938[index] &= ~mask; - gSaveBlock1.unk3A8C[index] &= ~mask; + gSaveBlock1.dexSeen2[index] &= ~mask; + gSaveBlock1.dexSeen3[index] &= ~mask; retVal = 0; } } break; - case 2: + case FLAG_SET_SEEN: gSaveBlock2.pokedex.seen[index] |= mask; - gSaveBlock1.unk938[index] |= mask; - gSaveBlock1.unk3A8C[index] |= mask; + gSaveBlock1.dexSeen2[index] |= mask; + gSaveBlock1.dexSeen3[index] |= mask; break; - case 3: + case FLAG_SET_CAUGHT: gSaveBlock2.pokedex.owned[index] |= mask; break; } return retVal; } -u16 GetNationalPokedexCount(u8 a) +u16 GetNationalPokedexCount(u8 caseID) { u16 count = 0; u16 i; for (i = 0; i < NATIONAL_DEX_COUNT; i++) { - switch (a) + switch (caseID) { - case 0: - if (GetNationalPokedexFlag(i + 1, 0) != 0) + case FLAG_GET_SEEN: + if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN)) count++; break; - case 1: - if (GetNationalPokedexFlag(i + 1, 1) != 0) + case FLAG_GET_CAUGHT: + if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) count++; break; } @@ -4088,21 +4086,21 @@ u16 GetNationalPokedexCount(u8 a) return count; } -u16 GetHoennPokedexCount(u8 a) +u16 GetHoennPokedexCount(u8 caseID) { u16 count = 0; u16 i; for (i = 0; i < 202; i++) { - switch (a) + switch (caseID) { - case 0: - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 0) != 0) + case FLAG_GET_SEEN: + if (GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_SEEN)) count++; break; - case 1: - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 1) != 0) + case FLAG_GET_CAUGHT: + if (GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT)) count++; break; } @@ -4116,7 +4114,7 @@ bool8 sub_8090FC0(void) for (i = 0; i < 200; i++) { - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 1) == 0) + if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT)) return FALSE; } return TRUE; @@ -4128,17 +4126,17 @@ u16 sub_8090FF4(void) for (i = 0; i < 150; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } for (i = 152; i < 250; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } for (i = 252; i < 384; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } return 1; diff --git a/src/pokedex_cry_screen.c b/src/pokemon/pokedex_cry_screen.c index 92fd832fc..92fd832fc 100644 --- a/src/pokedex_cry_screen.c +++ b/src/pokemon/pokedex_cry_screen.c diff --git a/src/pokemon_1.c b/src/pokemon/pokemon_1.c index c65bfa185..1d597cb17 100644 --- a/src/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -4,7 +4,7 @@ #include "main.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "species.h" #include "sprite.h" #include "string_util.h" @@ -17,9 +17,9 @@ #define LOHALF(n) ((n) & 0xFFFF) extern u8 unk_2000000[]; -extern u16 word_2024E82; +extern u16 gMoveToLearn; -static EWRAM_DATA u8 byte_2024E88 = 0; +static EWRAM_DATA u8 sLearningMoveTableID = 0; u8 gPlayerPartyCount; struct Pokemon gPlayerParty[6]; @@ -69,6 +69,7 @@ void ZeroEnemyPartyMons(void) void CreateMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId) { u32 arg; + ZeroMonData(mon); CreateBoxMon(&mon->box, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId); SetMonData(mon, MON_DATA_LEVEL, &level); @@ -467,10 +468,10 @@ void CalculateMonStats(struct Pokemon *mon) SetMonData(mon, MON_DATA_HP, (u8 *)¤tHP); } -void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest) +void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest) { u32 value = 0; - memcpy(&dest->box, &src->box, sizeof(struct BoxPokemon)); + dest->box = *src; SetMonData(dest, MON_DATA_STATUS, (u8 *)&value); SetMonData(dest, MON_DATA_HP, (u8 *)&value); SetMonData(dest, MON_DATA_MAX_HP, (u8 *)&value); @@ -583,29 +584,33 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon) } } -u16 sub_803B7C8(struct Pokemon *mon, u8 a2) +u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove) { u32 retVal = 0; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL); - if (a2) + // since you can learn more than one move per level + // the game needs to know whether you decided to + // learn it or keep the old set to avoid asking + // you to learn the same move over and over again + if (firstMove) { - byte_2024E88 = retVal; + sLearningMoveTableID = 0; - while ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) != (level << 9)) + while ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) != (level << 9)) { - byte_2024E88++; - if (gLevelUpLearnsets[species][byte_2024E88] == (u16)-1) + sLearningMoveTableID++; + if (gLevelUpLearnsets[species][sLearningMoveTableID] == 0xFFFF) return 0; } } - if ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) == (level << 9)) + if ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) == (level << 9)) { - word_2024E82 = (gLevelUpLearnsets[species][byte_2024E88] & 0x1FF); - byte_2024E88++; - retVal = GiveMoveToMon(mon, word_2024E82); + gMoveToLearn = (gLevelUpLearnsets[species][sLearningMoveTableID] & 0x1FF); + sLearningMoveTableID++; + retVal = GiveMoveToMon(mon, gMoveToLearn); } return retVal; diff --git a/src/pokemon_2.c b/src/pokemon/pokemon_2.c index a77edbdb2..f02ce6170 100644 --- a/src/pokemon_2.c +++ b/src/pokemon/pokemon_2.c @@ -80,125 +80,31 @@ u8 CountAliveMons(u8 a1) return retVal; } -#ifdef NONMATCHING u8 sub_803C434(u8 a1) { - u32 status0 = GetBankIdentity(a1); - register u8 status_ asm("r4"); - u8 status; - register u32 mask1 asm("r1") = 1; - register u32 mask2 asm("r6") = 1; - - status_ = mask2; - status_ &= status0; - status = status_ ^ mask1; - - { - register u16 val_ asm("r1") = gBattleTypeFlags; - u32 val = mask2; - val &= val_; - if (!val) - { - return GetBankByPlayerAI(status); - } - } + u8 status = GetBankIdentity(a1) & 1; + status ^= 1; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + return GetBankByPlayerAI(status); if (CountAliveMons(0) > 1) { - u16 r = Random(); - register u32 val asm("r1") = mask2; - val &= r; - if (!val) - { - u32 status2 = 2; - status2 ^= status; - return GetBankByPlayerAI(status2); - } + u8 val; + + if ((Random() & 1) == 0) + val = status ^ 2; else - { - return GetBankByPlayerAI(status); - } + val = status; + return GetBankByPlayerAI(val); } else { - if (gAbsentBankFlags & gBitTable[status]) + if ((gAbsentBankFlags & gBitTable[status])) return GetBankByPlayerAI(status ^ 2); else return GetBankByPlayerAI(status); } } -#else -__attribute__((naked)) -u8 sub_803C434(u8 a1) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - bl GetBankIdentity\n\ - movs r1, 0x1\n\ - movs r6, 0x1\n\ - adds r4, r6, 0\n\ - ands r4, r0\n\ - eors r4, r1\n\ - adds r5, r4, 0\n\ - ldr r0, _0803C45C\n\ - ldrh r1, [r0]\n\ - adds r0, r6, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803C460\n\ - adds r0, r4, 0\n\ - b _0803C4AA\n\ - .align 2, 0\n\ -_0803C45C: .4byte gBattleTypeFlags\n\ -_0803C460:\n\ - movs r0, 0\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bls _0803C484\n\ - bl Random\n\ - adds r1, r6, 0\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _0803C480\n\ - movs r0, 0x2\n\ - eors r0, r4\n\ - b _0803C4AA\n\ -_0803C480:\n\ - adds r0, r4, 0\n\ - b _0803C4AA\n\ -_0803C484:\n\ - ldr r0, _0803C49C\n\ - ldrb r1, [r0]\n\ - ldr r2, _0803C4A0\n\ - lsls r0, r4, 2\n\ - adds r0, r2\n\ - ldr r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _0803C4A4\n\ - adds r0, r4, 0\n\ - b _0803C4AA\n\ - .align 2, 0\n\ -_0803C49C: .4byte gAbsentBankFlags\n\ -_0803C4A0: .4byte gBitTable\n\ -_0803C4A4:\n\ - movs r0, 0x2\n\ - eors r5, r0\n\ - adds r0, r5, 0\n\ -_0803C4AA:\n\ - bl GetBankByPlayerAI\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif u8 GetMonGender(struct Pokemon *mon) { diff --git a/src/pokemon_3.c b/src/pokemon/pokemon_3.c index 3d85a1c8f..1eff9b83c 100644 --- a/src/pokemon_3.c +++ b/src/pokemon/pokemon_3.c @@ -11,7 +11,7 @@ #include "main.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rom_8077ABC.h" #include "rom_8094928.h" #include "rtc.h" @@ -278,7 +278,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) else holdEffect = ItemId_GetHoldEffect(heldItem); - if (holdEffect == 38 && type != 3) + if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE && type != 3) return 0; switch (type) @@ -457,7 +457,7 @@ u16 HoennToNationalOrder(u16 hoennNum) return gHoennToNationalOrder[hoennNum - 1]; } -u32 SpeciesToCryId(u16 species) +u16 SpeciesToCryId(u16 species) { if (species <= 250) return species; @@ -1096,7 +1096,7 @@ void ClearBattleMonForms(void) gBattleMonForms[i] = 0; } -u16 sub_8040728(void) +u16 GetBGM_ForBattle(void) { if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) return BGM_BATTLE34; @@ -1137,7 +1137,7 @@ void sub_80408BC(void) { ResetMapMusic(); m4aMPlayAllStop(); - PlayBGM(sub_8040728()); + PlayBGM(GetBGM_ForBattle()); } void current_map_music_set__default_for_battle(u16 song) @@ -1147,15 +1147,15 @@ void current_map_music_set__default_for_battle(u16 song) if (song) PlayNewMapMusic(song); else - PlayNewMapMusic(sub_8040728()); + PlayNewMapMusic(GetBGM_ForBattle()); } -const u8 *pokemon_get_pal(struct Pokemon *mon) +const u8 *GetMonSpritePal(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return species_and_otid_get_pal(species, otId, personality); + return GetMonSpritePalFromOtIdPersonality(species, otId, personality); } //Extracts the upper 16 bits of a 32-bit number @@ -1164,7 +1164,7 @@ const u8 *pokemon_get_pal(struct Pokemon *mon) //Extracts the lower 16 bits of a 32-bit number #define LOHALF(n) ((n) & 0xFFFF) -const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) +const u8 *GetMonSpritePalFromOtIdPersonality(u16 species, u32 otId, u32 personality) { u32 shinyValue; @@ -1178,15 +1178,15 @@ const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) return gMonPaletteTable[species].data; } -const struct CompressedSpritePalette *sub_8040990(struct Pokemon *mon) +const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return sub_80409C8(species, otId, personality); + return GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); } -const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality) +const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality) { u32 shinyValue; @@ -1197,7 +1197,7 @@ const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 pe return &gMonPaletteTable[species]; } -bool8 IsHMMove2(u16 move) +bool32 IsHMMove2(u16 move) { int i = 0; while (gHMMoves[i] != 0xFFFF) @@ -1208,9 +1208,9 @@ bool8 IsHMMove2(u16 move) return FALSE; } -bool8 sub_8040A3C(u16 species) +bool8 IsPokeSpriteNotFlipped(u16 species) { - return gBaseStats[species].unk19_7; + return gBaseStats[species].noFlip; } s8 sub_8040A54(struct Pokemon *mon, u8 a2) @@ -1219,7 +1219,7 @@ s8 sub_8040A54(struct Pokemon *mon, u8 a2) return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; } -s8 sub_8040A7C(u32 personality, u8 a2) +s8 GetPokeFlavourRelation(u32 personality, u8 a2) { u8 nature = GetNatureFromPersonality(personality); return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; diff --git a/src/pokemon_data.c b/src/pokemon/pokemon_data.c index 6414134fb..6414134fb 100644 --- a/src/pokemon_data.c +++ b/src/pokemon/pokemon_data.c diff --git a/src/pokemon_icon.c b/src/pokemon/pokemon_icon.c index 8994ea49e..9bb3386e1 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon/pokemon_icon.c @@ -1024,17 +1024,17 @@ void sub_809D7E8(struct Sprite *); u8 unref_sub_809D26C(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) { u8 spriteId; - struct MonIconSpriteTemplate iconTemplate; - struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match - - iconTemplatePtr->oam = &sMonIconOamData; - iconTemplatePtr->image = gMonIconTable[species]; - iconTemplatePtr->anims = sMonIconAnims; - iconTemplatePtr->affineAnims = sMonIconAffineAnims; - iconTemplatePtr->callback = callback; - iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species]; + struct MonIconSpriteTemplate iconTemplate = + { + .oam = &sMonIconOamData, + .image = gMonIconTable[species], + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + }; - spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority); + spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); UpdateMonIconFrame(&gSprites[spriteId]); @@ -1067,17 +1067,17 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u u8 sub_809D3A4(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) { u8 spriteId; - struct MonIconSpriteTemplate iconTemplate; - struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match - - iconTemplatePtr->oam = &sMonIconOamData; - iconTemplatePtr->image = gMonIconTable[species]; - iconTemplatePtr->anims = sMonIconAnims; - iconTemplatePtr->affineAnims = sMonIconAffineAnims; - iconTemplatePtr->callback = callback; - iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species]; + struct MonIconSpriteTemplate iconTemplate = + { + .oam = &sMonIconOamData, + .image = gMonIconTable[species], + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + }; - spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority); + spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); UpdateMonIconFrame(&gSprites[spriteId]); @@ -1197,7 +1197,7 @@ void sub_809D62C(struct Sprite *sprite) UpdateMonIconFrame(sprite); } -// TODO: try to find a way to avoid using goto and asm statement +// TODO: try to find a way to avoid using asm statement u8 UpdateMonIconFrame(struct Sprite *sprite) { u8 result = 0; @@ -1206,34 +1206,31 @@ u8 UpdateMonIconFrame(struct Sprite *sprite) { s16 frame = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue; - if (frame != -2) - { - if (frame != -1) - goto copy; - goto end; - } - - sprite->animCmdIndex = 0; - goto end; - - copy: - RequestSpriteCopy( - (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame, - (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP, - sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]); + switch (frame) { - register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration; - sprite->animDelayCounter = duration; + case -1: + break; + case -2: + sprite->animCmdIndex = 0; + break; + default: + RequestSpriteCopy( + (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame, + (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP, + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]); + { + register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration; + sprite->animDelayCounter = duration; + } + sprite->animCmdIndex++; + result = sprite->animCmdIndex; + break; } - sprite->animCmdIndex++; - result = sprite->animCmdIndex; } else { sprite->animDelayCounter--; } - -end: return result; } diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c new file mode 100644 index 000000000..bc5150a16 --- /dev/null +++ b/src/pokemon/pokemon_menu.c @@ -0,0 +1,1200 @@ +#include "global.h" +#include "pokemon.h" +#include "pokemon_menu.h" +#include "party_menu.h" +#include "palette.h" +#include "menu.h" +#include "mail_data.h" +#include "songs.h" +#include "sound.h" +#include "main.h" +#include "overworld.h" +#include "menu_helpers.h" +#include "pokemon_summary_screen.h" +#include "moves.h" +#include "data2.h" +#include "strings.h" +#include "item_use.h" +#include "item.h" +#include "event_data.h" +#include "mail.h" +#include "field_player_avatar.h" +#include "fldeff_softboiled.h" +#include "braille_puzzles.h" +#include "field_fadetransition.h" +#include "field_weather.h" +#include "field_effect.h" +#include "field_control_avatar.h" +#include "metatile_behavior.h" +#include "fieldmap.h" +#include "item_menu.h" +#include "player_pc.h" + +/* +Pokemon menu: + The menu that appears when you + click on a pokemon in + overworld 'pokemon' menu +*/ + +struct PokeMenuFieldMoveFunc +{ + bool8 (*func)(void); + u8 field_1; +}; + +extern u8 gUnknown_020384F0; +extern u8 gUnknown_0202E8F4; +extern u8 gUnknown_0202E8F5; +extern u8 gUnknown_0202E8F6; +extern u8 gUnknown_02038561; +extern u16 gUnknown_0202E8F8; +extern u8 ewram[]; +extern void (*gUnknown_03004AE4)(u8 taskID, u16 itemID, TaskFunc func); +extern TaskFunc gUnknown_03005CF0; + +void sub_80E62A0(u8 arg0, struct MailStruct* arg1, void* arg2, u8 arg3); +void sub_808A520(void); +void sub_80A61D0(void); +void CB2_InitFlyRegionMap(void); +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); +bool8 SetUpFieldMove_Cut(void); +bool8 SetUpFieldMove_Flash(void); +bool8 SetUpFieldMove_RockSmash(void); +bool8 SetUpFieldMove_Strength(void); +bool8 SetUpFieldMove_Teleport(void); +bool8 SetUpFieldMove_Dig(void); +bool8 SetUpFieldMove_SecretPower(void); +bool8 SetUpFieldMove_SoftBoiled(void); +bool8 SetUpFieldMove_SoftBoiled(void); +bool8 SetUpFieldMove_SweetScent(void); + +#define sFieldMovesTerminator 0xFF // note: should be changed to 0xFFFF, because currently it makes it impossible to add a field move with 0xFF index + +// this file's functions +static void sub_808A8A8(void); +static void sub_808B3EC(void); +static void sub_8089D94(u8 taskID); +static void sub_8089E4C(u8 taskID); +static void sub_808A5BC(u8 taskID); +static void sub_808A8D4(u8 taskID); +static void sub_808A73C(u8 taskID); +static void sub_808A848(u8 taskID); +static void sub_808AAF0(u8 taskID); +static void sub_808ABF4(u8 taskID); +static void sub_808AB34(u8 taskID); +static void sub_808ABA8(u8 taskID); +static void sub_808B224(u8 taskID); +static void sub_808B2EC(u8 taskID); +static void sub_808B2B4(u8 taskID); +static void sub_808B25C(u8 taskID); +static void sub_808B1EC(u8 taskID); +static void sub_808B338(u8 taskID); +static void sub_808B4A4(u8 taskID); +static void sub_808B4EC(u8 taskID); +static void sub_808B5E4(u8 taskID); +static void PokemonMenu_Summary(u8 taskID); +static void PokemonMenu_Switch(u8 taskID); +static void PokemonMenu_Item(u8 taskID); +static void PokemonMenu_Cancel(u8 taskID); +static void PokemonMenu_GiveItem(u8 taskID); +static void PokemonMenu_TakeItem(u8 taskID); +static void PokemonMenu_TakeMail(u8 taskID); +static void PokemonMenu_Mail(u8 taskID); +static void PokemonMenu_ReadMail(u8 taskID); +static void PokemonMenu_CancelSubmenu(u8 taskID); +static void PokemonMenu_FieldMove(u8 taskID); +static bool8 SetUpFieldMove_Waterfall(void); +static bool8 SetUpFieldMove_Surf(void); +static bool8 SetUpFieldMove_Fly(void); +static bool8 SetUpFieldMove_Dive(void); + +// ewram data + +EWRAM_DATA static u8 sPokeMenuCursorPos = 0; +EWRAM_DATA static u8 sPokeMenuOptionsNo = 0; +EWRAM_DATA static u8 sPokeMenuOptionsOrder[8] = {0}; // 4 possible field moves and 4 default options + +// iwram common +u8 gLastFieldPokeMenuOpened; +void (*gUnknown_03005CE4)(void); + +// const data + +static const struct MenuAction2 sPokemonMenuActions[] = +{ + {OtherText_Summary, PokemonMenu_Summary}, + {OtherText_Switch2, PokemonMenu_Switch}, + {OtherText_Item, PokemonMenu_Item}, + {gOtherText_CancelNoTerminator, PokemonMenu_Cancel}, + {OtherText_Give2, PokemonMenu_GiveItem}, + {OtherText_Take2, PokemonMenu_TakeItem}, + {OtherText_Take, PokemonMenu_TakeMail}, + {OtherText_Mail, PokemonMenu_Mail}, + {OtherText_Read2, PokemonMenu_ReadMail}, + {gOtherText_CancelNoTerminator, PokemonMenu_CancelSubmenu}, + {gMoveNames[MOVE_CUT], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_FLASH], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_ROCK_SMASH], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_STRENGTH], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_SURF], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_FLY], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_DIVE], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_WATERFALL], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_TELEPORT], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_DIG], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_SECRET_POWER], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_MILK_DRINK], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_SOFT_BOILED], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_SWEET_SCENT], PokemonMenu_FieldMove}, +}; + +static const u16 sPokeMenuFieldMoves[] = +{ + MOVE_CUT, MOVE_FLASH, MOVE_ROCK_SMASH, MOVE_STRENGTH, + MOVE_SURF, MOVE_FLY, MOVE_DIVE, MOVE_WATERFALL, + MOVE_TELEPORT, MOVE_DIG, MOVE_SECRET_POWER, MOVE_MILK_DRINK, + MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, sFieldMovesTerminator, +}; + +static const u8 sUnknown_39F572[] = {4, 5, 9, 0}; +static const struct PartyPopupMenu sUnknown_0839F578 = {3, 6, sUnknown_39F572}; + +static const u8 sUnknown_39F580[] = {8, 6, 9, 0}; +static const struct PartyPopupMenu sUnknown_0839F584 = {3, 9, sUnknown_39F580}; + +static const struct PokeMenuFieldMoveFunc sFieldMoveFuncs[] = +{ + {SetUpFieldMove_Cut, 0x6}, + {SetUpFieldMove_Flash, 0x9}, + {SetUpFieldMove_RockSmash, 0x9}, + {SetUpFieldMove_Strength, 0x9}, + {SetUpFieldMove_Surf, 0x7}, + {SetUpFieldMove_Fly, 0x9}, + {SetUpFieldMove_Dive, 0x9}, + {SetUpFieldMove_Waterfall, 0x9}, + {SetUpFieldMove_Teleport, 0x9}, + {SetUpFieldMove_Dig, 0x9}, + {SetUpFieldMove_SecretPower, 0x9}, + {SetUpFieldMove_SoftBoiled, 0x10}, + {SetUpFieldMove_SoftBoiled, 0x10}, + {SetUpFieldMove_SweetScent, 0x9}, +}; + +void sub_8089A70(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + OpenPartyMenu(0, 0); +} + +static void sub_8089A8C(void) +{ + sPokeMenuOptionsNo = 0; + // if checking pokemon is an egg, we can't give it an item and it doesn't know any move + if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG)) + { + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SUMMARY); + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SWITCH); + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_CANCEL); + } + else + { + u16 moveID, tableID; + for (moveID = 0; moveID < 4; moveID++) // 4, max number of possible field moves + { + for (tableID = 0; sPokeMenuFieldMoves[tableID] != sFieldMovesTerminator; tableID++) + { + if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MOVE1 + moveID) == sPokeMenuFieldMoves[tableID]) + { + u8 fieldID = tableID + POKEMENU_FIRST_FIELD_MOVE_ID; + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, fieldID); + break; + } + } + } + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SUMMARY); + + // can't switch a pokemon if it's the only one in the party + if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES) != 0) + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SWITCH); + + if (ItemIsMail(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM))) + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_MAIL); + else + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_ITEM); + + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_CANCEL); + } +} + +static void sub_8089BDC(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order, u8 arg6) +{ + sub_806D538(5, arg6); + MenuDrawTextWindow(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1); + PrintMenuItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order); +} + +void sub_8089C50(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order) +{ + sub_8089BDC(arg0, arg1, arg2, noOfOptions, menuActions, order, 1); +} + +static void sub_8089C7C(u8 arg0) +{ + u32 r4 = (u8)(18 - (sPokeMenuOptionsNo << 1)); + + sub_8089BDC(19, r4, 10, sPokeMenuOptionsNo, sPokemonMenuActions, sPokeMenuOptionsOrder, 3); + r4 |= 1; + InitMenu(0, 20, r4, sPokeMenuOptionsNo, arg0, 9); +} + +void sub_8089CD4(u8 taskID) +{ + if (!gPaletteFade.active) + { + switch (sub_806BD80(taskID)) + { + case 1: + PlaySE(SE_SELECT); + gLastFieldPokeMenuOpened = sub_806CA38(taskID); + GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); + sub_8089A8C(); + sPokeMenuCursorPos = 0; + sub_8089C7C(0); + gTasks[taskID].func = sub_8089D94; + sub_808B5B4(taskID); + break; + case 2: + PlaySE(SE_SELECT); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_8089E4C; + break; + } + } +} + +static void sub_8089D94(u8 taskID) +{ + if (!gPaletteFade.active) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + PlaySE(SE_SELECT); + sPokeMenuCursorPos = MoveMenuCursor(-1); + sub_808B5B4(taskID); + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + PlaySE(SE_SELECT); + sPokeMenuCursorPos = MoveMenuCursor(1); + sub_808B5B4(taskID); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sPokemonMenuActions[sPokeMenuOptionsOrder[sPokeMenuCursorPos]].func(taskID); + sub_808B5B4(taskID); + } + else if (gMain.newKeys & B_BUTTON) + { + PokemonMenu_Cancel(taskID); + sub_808B5B4(taskID); + } + } +} + +static void sub_8089E4C(u8 taskID) +{ + if (!gPaletteFade.active) + { + gLastFieldPokeMenuOpened = 0; + SetMainCallback2(sub_805469C); + DestroyTask(taskID); + } +} + +static void sub_8089E84(void) +{ + GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); + sub_8089A8C(); + sPokeMenuCursorPos = 0; + sub_8089C7C(0); +} + +static void sub_8089EBC(void) +{ + do + { + if (sub_806B124() == TRUE) + { + sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0); + sub_806BF74(EWRAM_1B000.unk260, 0); + gLastFieldPokeMenuOpened = gUnknown_020384F0; + sub_8089E84(); + SetMainCallback2(sub_806AEDC); + break; + } + } while (sub_80F9344() != TRUE); +} + +static void sub_8089F14(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + sub_806AF4C(0, 0xFF, sub_8089D94, 5); + SetMainCallback2(sub_8089EBC); +} + +static void sub_8089F44(u8 taskID) +{ + if (!gPaletteFade.active) + { + u8 spriteID = gSprites[gTasks[taskID].data[3] >> 8].data0; + DestroyTask(taskID); + ewram1B000_alt.unk262 = 1; + ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, 0); + } +} + +static void PokemonMenu_Summary(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_8089F44; +} + +void sub_808A004(u8 taskID) +{ + SetTaskFuncWithFollowupFunc(taskID, sub_806CA60, sub_8089CD4); + MenuZeroFillWindowRect(19, 0, 29, 19); +} + +static void PokemonMenu_Switch(u8 taskID) +{ + HandleDestroyMenuCursors(); + ewram01000.unkC = sub_806CD5C; + ewram01000.array[53553] = 1; + sub_808A004(taskID); +} + +static void sub_808A060(u8 taskID) +{ + if (gMain.newKeys == DPAD_UP && sPokeMenuCursorPos != 0) + { + sPokeMenuCursorPos = MoveMenuCursor(-1); + PlaySE(SE_SELECT); + } + if (gMain.newKeys == DPAD_DOWN && sPokeMenuCursorPos != 2) + { + sPokeMenuCursorPos = MoveMenuCursor(1); + PlaySE(SE_SELECT); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + PartyMenuGetPopupMenuFunc(0, &sUnknown_0839F578, (void *)sPokemonMenuActions, sPokeMenuCursorPos)(taskID); + } + else if (gMain.newKeys & B_BUTTON) + { + sub_806E7D0(0, &sUnknown_0839F578); + PokemonMenu_CancelSubmenu(taskID); + } +} + +static void sub_808A100(u8 taskID) +{ + sub_806E750(0, &sUnknown_0839F578, (void*)(sPokemonMenuActions), 0); + sub_806D538(0xD, 2); + gTasks[taskID].func = sub_808A060; +} + +static void PokemonMenu_Item(u8 taskID) +{ + HandleDestroyMenuCursors(); + sPokeMenuCursorPos = 0; + MenuZeroFillWindowRect(19, 0, 29, 19); + gTasks[taskID].func = sub_808A100; +} + +static void sub_808A180(u8 taskID) +{ + if (!gPaletteFade.active) + { + u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL); + DestroyTask(taskID); + sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3); + } +} + +static void sub_808A1E0(u8 taskID) +{ + if (gUnknown_0202E8F6 != 1) + { + SetHeldItemIconVisibility(taskID, sub_806CA38(taskID)); + sub_806D538(0, 0); + gTasks[taskID].func = sub_8089CD4; + } +} + +static void sub_808A228(u8 taskID) +{ + if (ItemIsMail(gScriptItemId) && gUnknown_0202E8F4 != 0) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808A180; + } + else + { + MenuZeroFillWindowRect(0, 0, 29, 19); + sub_806D538(0, 0); + gTasks[taskID].func = sub_8089CD4; + } +} + +static void sub_808A2AC(u8 taskID) +{ + if (!gPaletteFade.active) + PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A228); +} + +static void sub_808A2DC(u8 taskID) +{ + u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL); + DestroyTask(taskID); + sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3); +} + +static void sub_808A330(u8 taskID) +{ + PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A2DC); +} + +static void sub_808A34C(void) +{ + RunTasks(); +} + +static void sub_808A358(void) +{ + while (1) + { + if (sub_806B124() == TRUE) + { + sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened); + sub_806BF74(EWRAM_1B000.unk260, 0); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +static void sub_808A3A4(void) +{ + while (1) + { + if (sub_806B124() == TRUE) + { + sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened); + sub_806BF74(EWRAM_1B000.unk260, 0); + EWRAM_1B000.unk262 = 3; + sub_8089E84(); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808A3F8(void) +{ + if (ItemIsMail(gScriptItemId)) + { + u8 taskID = CreateTask(sub_808A330, 0); + gPaletteFade.bufferTransferDisabled = 1; + sub_806BD58(taskID, 0); + sub_806C994(taskID, gLastFieldPokeMenuOpened); + sub_806BF74(taskID, 0); + if (!(bool8)(GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_HELD_ITEM))) + { + SetMainCallback2(sub_808A34C); + return; + } + else + DestroyTask(taskID); + } + gPaletteFade.bufferTransferDisabled = 1; + if (gScriptItemId) + { + sub_806AF4C(0, 0xFF, sub_808A2AC, 0xFF); + SetMainCallback2(sub_808A358); + } + else + { + sub_806AF4C(0, 0xFF, sub_8089D94, 5); + SetMainCallback2(sub_808A3A4); + } +} + +static void sub_808A4D4(void) +{ + while (1) + { + if (sub_806B124() == TRUE) + { + sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened); + sub_806BF74(EWRAM_1B000.unk260, 0); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808A520(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + if (gScriptResult == 0) + { + if (gUnknown_0202E8F8) + RemoveBagItem(gUnknown_0202E8F8, 1); + AddBagItem(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM), 1); + TakeMailFromMon(&gPlayerParty[gLastFieldPokeMenuOpened]); + SetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM, (void*) &gUnknown_0202E8F8); + sub_806AF4C(0, 0xFF, sub_8089CD4, 0); + } + else + sub_806AF4C(0, 0xFF, sub_808A5BC, 0xFF); + SetMainCallback2(sub_808A4D4); +} + +static void sub_808A5BC(u8 taskID) +{ + if (!gPaletteFade.active) + { + DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 0); + gTasks[taskID].func = sub_808A1E0; + } +} + +static void sub_808A604(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_80A61D0); + DestroyTask(taskID); + } +} + +static void PokemonMenu_GiveItem(u8 taskID) +{ + gUnknown_0202E8F5 = sub_806CA38(taskID); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808A604; +} + +static void sub_808A678(u8 taskID) +{ + sub_808A8D4(taskID); +} + +static void PokemonMenu_TakeItem(u8 taskID) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D5A4(); + PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678); +} + +static void PokemonMenu_TakeMail(u8 taskID) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D5A4(); + DoTakeMail(taskID, sub_808A678); +} + +static void PokemonMenu_Mail(u8 taskID) +{ + HandleDestroyMenuCursors(); + sPokeMenuCursorPos = 0; + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806E750(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, 0); + gTasks[taskID].func = sub_808A73C; +} + +static void sub_808A73C(u8 taskID) +{ + if (gMain.newAndRepeatedKeys == DPAD_UP) + { + PlaySE(SE_SELECT); + if (sPokeMenuCursorPos == 0) + sPokeMenuCursorPos = MoveMenuCursor(sUnknown_0839F584.unk0 - 1); + else + sPokeMenuCursorPos = MoveMenuCursor(-1); + } + if (gMain.newAndRepeatedKeys == DPAD_DOWN) + { + PlaySE(SE_SELECT); + if (sPokeMenuCursorPos == sUnknown_0839F584.unk0 - 1) + sPokeMenuCursorPos = MoveMenuCursor(1 - sUnknown_0839F584.unk0); + else + sPokeMenuCursorPos = MoveMenuCursor(1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + PartyMenuGetPopupMenuFunc(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, sPokeMenuCursorPos)(taskID); + } + else if (gMain.newKeys & B_BUTTON) + { + sub_806E7D0(0, &sUnknown_0839F584); + PokemonMenu_Cancel(taskID); + } +} + +static void PokemonMenu_ReadMail(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808A848; +} + +static void sub_808A848(u8 taskID) +{ + if (!gPaletteFade.active) + { + u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL); + DestroyTask(taskID); + HandleReadMail(&gSaveBlock1.mail[mailID], sub_808A8A8, 1); + } +} + +static void sub_808A8A8(void) +{ + gUnknown_020384F0 = gLastFieldPokeMenuOpened; + ewram1B000.unk262 = 4; + sub_8089F14(); +} + +static void sub_808A8D4(u8 taskID) +{ + sPokeMenuCursorPos = 0; + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D538(0, 0); + gTasks[taskID].func = sub_8089CD4; +} + +static void PokemonMenu_Cancel(u8 taskID) +{ + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + sub_808A8D4(taskID); +} + +static void PokemonMenu_CancelSubmenu(u8 taskID) +{ + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D5A4(); + sub_8089C7C(sPokeMenuCursorPos); + gTasks[taskID].func = sub_8089D94; +} + +#define IS_SOFTBOILED_MILKDRINK(ID)((ID == (POKEMENU_MILK_DRINK - POKEMENU_FIRST_FIELD_MOVE_ID) || ID == (POKEMENU_SOFT_BOILED - POKEMENU_FIRST_FIELD_MOVE_ID))) +#define IS_SURF(ID)((ID == (POKEMENU_SURF - POKEMENU_FIRST_FIELD_MOVE_ID))) +#define IS_FLY(ID)((ID == (POKEMENU_FLY - POKEMENU_FIRST_FIELD_MOVE_ID))) + +#define tFieldMoveId data[11] + +static void PokemonMenu_FieldMove(u8 taskID) +{ + s16* data = gTasks[taskID].data; + + HandleDestroyMenuCursors(); + tFieldMoveId = sPokeMenuOptionsOrder[sPokeMenuCursorPos] - POKEMENU_FIRST_FIELD_MOVE_ID; + if (sub_80F9344() == TRUE) + { + MenuZeroFillWindowRect(19, 0, 29, 19); + if (IS_SOFTBOILED_MILKDRINK(tFieldMoveId)) + sub_806D538(9, 0); + else + sub_806D538(sFieldMoveFuncs[tFieldMoveId].field_1, 0); + gTasks[taskID].func = sub_808ABF4; + } + else if (tFieldMoveId <= 7 && FlagGet(BADGE01_GET + tFieldMoveId) != TRUE) + { + // can't use a field HM move without a proper badge + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D5A4(); + sub_806E834(gOtherText_CantBeUsedBadge, 1); + gTasks[taskID].func = sub_808AAF0; + } + else + { + if (sFieldMoveFuncs[tFieldMoveId].func() == TRUE) + { + sPokeMenuCursorPos = 0; + if (!IS_SOFTBOILED_MILKDRINK(tFieldMoveId)) + { + gTasks[taskID].func = sub_808AB34; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + else + sub_8133D28(taskID); + } + else + { + MenuZeroFillWindowRect(19, 0, 29, 19); + if (IS_SURF(tFieldMoveId) && TestPlayerAvatarFlags(8)) + sub_806D538(8, 0); + else + sub_806D538(sFieldMoveFuncs[tFieldMoveId].field_1, 0); + gTasks[taskID].func = sub_808ABF4; + } + } +} + +static void sub_808AAF0(u8 taskID) +{ + if (gUnknown_0202E8F6 != 1 && (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)) + { + MenuZeroFillWindowRect(0, 14, 29, 19); + PokemonMenu_Cancel(taskID); + } +} + +static void sub_808AB34(u8 taskID) +{ + if (!gPaletteFade.active) + { + if (!IS_FLY(gTasks[taskID].tFieldMoveId) || ShouldDoBrailleFlyEffect()) + SetMainCallback2(c2_exit_to_overworld_2_switch); + else + SetMainCallback2(CB2_InitFlyRegionMap); + DestroyTask(taskID); + } +} + +#undef tFieldMoveId + +void FieldCallback_Teleport(void) +{ + pal_fill_black(); + CreateTask(sub_808ABA8, 8); +} + +static void sub_808ABA8(u8 taskID) +{ + if (sub_807D770() == TRUE) + { + gFieldEffectArguments[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); + gUnknown_03005CE4(); + DestroyTask(taskID); + } +} + +static void sub_808ABF4(u8 taskID) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + MenuZeroFillWindowRect(1, 17, 28, 18); + PokemonMenu_Cancel(taskID); + } +} + +static void sub_808AC2C(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_SURF); +} + +static bool8 SetUpFieldMove_Surf(void) +{ + if (PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_808AC2C; + return TRUE; + } + else + return FALSE; +} + +static void sub_808AC8C(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_FLY); +} + +static bool8 SetUpFieldMove_Fly(void) +{ + if (ShouldDoBrailleFlyEffect()) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = DoBrailleFlyEffect; + return TRUE; + } + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_808AC8C; + return TRUE; + } + return FALSE; +} + +static void sub_808AD0C(void) +{ + while (1) + { + if (sub_806B124() == TRUE) + { + sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened); + sub_806BF74(EWRAM_1B000.unk260, 0); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808AD58(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + sub_806AF4C(0, 0xFF, sub_8089CD4, 0); + SetMainCallback2(sub_808AD0C); +} + +u16 unref_sub_808AD88(void) +{ + return GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); +} + +static void sub_808ADAC(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_DIVE); +} + +static bool8 SetUpFieldMove_Dive(void) +{ + gFieldEffectArguments[1] = sub_8068F18(); + if (gFieldEffectArguments[1]) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_808ADAC; + return TRUE; + } + else + return FALSE; +} + +static void sub_808AE08(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_WATERFALL); +} + +static bool8 SetUpFieldMove_Waterfall(void) +{ + s16 x, y; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE + && IsPlayerSurfingNorth() == TRUE) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_808AE08; + return TRUE; + } + else + return FALSE; +} + +static void sub_808AE8C(void) +{ + u8 i; + u8 arg = gScriptItemId - 33; + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) + { + sub_806D668(i); + if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)) + sub_806BC3C(i, 0x9A); + else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gScriptItemId))) + sub_806BC3C(i, 0xA8); + else + sub_806BC3C(i, 0x8C); + } + } +} + +static void sub_808AF20(void) +{ + u8 i; + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !GetEvolutionTargetSpecies(&gPlayerParty[i], 3, gScriptItemId)) + { + sub_806D668(i); + sub_806BC3C(i, 0); + } + } + } +} + +static void sub_808AF80(void) +{ + while (1) + { + if (sub_806B124() == TRUE) + { + if (gUnknown_02038561 == 0) + { + switch (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId)) + { + case 1: + sub_808AE8C(); + break; + case 2: + sub_808AF20(); + break; + } + } + if (gLastFieldPokeMenuOpened > 5 || !GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES)) + gLastFieldPokeMenuOpened = 0; + sub_806C994(ewram1B000.unk260, gLastFieldPokeMenuOpened); + sub_806BF74(ewram1B000.unk260, 0); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808B020(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + switch (gUnknown_02038561) + { + case 0: + if (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId) == 1) + sub_806AF4C(0, 0, sub_808B0C0, 20); + else + sub_806AF4C(0, 0, sub_808B0C0, 3); + break; + case 4: + sub_806AF4C(0, 0, sub_808B1EC, 0xFF); + break; + case 1: + case 3: + sub_806AF4C(0, 0, sub_808B0C0, 4); + break; + } + SetMainCallback2(sub_808AF80); +} + +void sub_808B0C0(u8 taskID) +{ + if (!gPaletteFade.active) + { + switch (sub_806BD80(taskID)) + { + case 1: + gLastFieldPokeMenuOpened = sub_806CA38(taskID); + if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG)) + PlaySE(SE_HAZURE); + else + { + sub_806D5A4(); + if (gUnknown_02038561 == 0) + gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224); + if (gUnknown_02038561 == 1) + { + PlaySE(SE_SELECT); + PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808B2EC); + } + if (gUnknown_02038561 == 3) + { + PlaySE(SE_SELECT); + PartyMenuTryGiveMonMail(taskID, sub_808B2B4); + } + } + break; + case 2: + gLastFieldPokeMenuOpened = sub_806CA38(taskID); + PlaySE(SE_SELECT); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + if (gUnknown_02038561 == 0 || gUnknown_02038561 == 1) + gTasks[taskID].func = sub_808B25C; + if (gUnknown_02038561 == 3) + gTasks[taskID].func = sub_808B2B4; + break; + } + } +} + +static void sub_808B1EC(u8 taskID) +{ + if (!gPaletteFade.active) + gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224); +} + +static void sub_808B224(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808B25C; +} + +static void sub_808B25C(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_80A5B40); + DestroyTask(taskID); + } +} + +static void sub_808B288(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(Mailbox_ReturnToMailListAfterDeposit); + DestroyTask(taskID); + } +} + +static void sub_808B2B4(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808B288; +} + +static void sub_808B2EC(u8 taskID) +{ + if (gUnknown_0202E8F4 == 2) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808B338; + } + else + sub_808B224(taskID); +} + +static void sub_808B338(u8 taskID) +{ + if (!gPaletteFade.active) + { + u8 mailID; + + gLastFieldPokeMenuOpened = sub_806CA38(taskID); + mailID = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MAIL); + DestroyTask(taskID); + sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808B3EC, 3); + } +} + +static void sub_808B3A0(void) +{ + while (1) + { + if (sub_806B124() == TRUE) + { + sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened); + sub_806BF74(EWRAM_1B000.unk260, 0); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +static void sub_808B3EC(void) +{ + IntrCallback callback; + + gPaletteFade.bufferTransferDisabled = 1; + if (gScriptResult == 0) + { + if (gUnknown_0202E8F8) + RemoveBagItem(gUnknown_0202E8F8, 1); + AddBagItem(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM), 1); + TakeMailFromMon(&gPlayerParty[gLastFieldPokeMenuOpened]); + SetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM, (void*) &gUnknown_0202E8F8); + CreateTask(sub_808B25C, 5); + gPaletteFade.bufferTransferDisabled = 0; + callback = sub_806AEDC; + } + else + { + sub_806AF4C(0, 0, sub_808B4A4, 0xFF); + callback = sub_808B3A0; + } + SetMainCallback2(callback); +} + +static void sub_808B4A4(u8 taskID) +{ + if (!gPaletteFade.active) + { + DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 1); + gTasks[taskID].func = sub_808B4EC; + } +} + +static void sub_808B4EC(u8 taskID) +{ + if (gUnknown_0202E8F6 != 1) + sub_808B224(taskID); +} + +void sub_808B508(u8 taskID) +{ + sub_808B224(taskID); +} + +static void sub_808B518(void) +{ + while (1) + { + if (sub_806B124() == TRUE) + { + sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0); + sub_806BF74(EWRAM_1B000.unk260, 0); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808B564(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + if (sub_809FA30() != 4) + sub_806AF4C(0, 0, TaughtMove, 0xFF); + else + sub_806AF4C(0, 0, StopTryingToTeachMove_806F588, 0xFF); + SetMainCallback2(sub_808B518); +} + +void sub_808B5B4(u32 taskID) +{ + gUnknown_03005CF0 = gTasks[taskID].func; + gTasks[taskID].func = sub_808B5E4; + sub_808B5E4(taskID); +} + +static void sub_808B5E4(u8 taskID) +{ + if (sub_8055870() != TRUE) + gTasks[taskID].func = gUnknown_03005CF0; +} diff --git a/src/pokemon_size_record.c b/src/pokemon/pokemon_size_record.c index f2222bd3b..f2222bd3b 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon/pokemon_size_record.c diff --git a/src/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 5e97523e2..5e97523e2 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c diff --git a/src/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 00a0bea29..00a0bea29 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c diff --git a/src/rom3.c b/src/rom3.c index 02def5dfa..3f4860ecc 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -1,5 +1,4 @@ #include "global.h" -#include "rom3.h" #include "battle.h" #include "battle_811DA74.h" #include "battle_ai.h" @@ -10,10 +9,13 @@ #include "items.h" #include "link.h" #include "pokemon.h" +#include "rom3.h" #include "rom_8094928.h" #include "species.h" #include "task.h" #include "util.h" +#include "battle_message.h" +#include "data2.h" extern u8 unk_2000000[]; @@ -343,30 +345,30 @@ void sub_800BD54(void) } } -void dp01_prepare_buffer(u8 a, u8 *b, u16 c) +void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size) { int i; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - dp01_prepare_buffer_wireless_probably(a, c, b); + PrepareBufferDataTransferLink(a, size, data); } else { switch (a) { case 0: - for (i = 0; i < c; i++) + for (i = 0; i < size; i++) { - gBattleBufferA[gActiveBank][i] = *b; - b++; + gBattleBufferA[gActiveBank][i] = *data; + data++; } break; case 1: - for (i = 0; i < c; i++) + for (i = 0; i < size; i++) { - gBattleBufferB[gActiveBank][i] = *b; - b++; + gBattleBufferB[gActiveBank][i] = *data; + data++; } break; } @@ -390,12 +392,12 @@ void sub_800BF28(void) CpuFill16(0, EWRAM_14000, 0x2000); } -void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c) +void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data) { s32 r9; int i; - r9 = b - b % 4 + 4; + r9 = size - size % 4 + 4; if (gTasks[gUnknown_020238C4].data[14] + r9 + 9 > 0x1000) { gTasks[gUnknown_020238C4].data[12] = gTasks[gUnknown_020238C4].data[14]; @@ -409,8 +411,8 @@ void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c) unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14005] = (r9 & 0x0000FF00) >> 8; unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14006] = gAbsentBankFlags; unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14007] = gEffectBank; - for (i = 0; i < b; i++) - unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = c[i]; + for (i = 0; i < size; i++) + unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = data[i]; gTasks[gUnknown_020238C4].data[14] = gTasks[gUnknown_020238C4].data[14] + r9 + 8; } @@ -570,19 +572,19 @@ void EmitGetAttributes(u8 a, u8 b, u8 c) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c) +void Emitcmd1(u8 a, u8 b, u8 c) { gBattleBuffersTransferData[0] = 1; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e) +void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e) { int i; @@ -590,11 +592,11 @@ void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; for (i = 0; i < d; i++) - gBattleBuffersTransferData[3 + i] = *(e++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, d + 3); + gBattleBuffersTransferData[3 + i] = *(u8*)(e++); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, d + 3); } -void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d) +void Emitcmd3(u8 a, u8 b, u8 c, u8 *d) { int i; @@ -603,96 +605,96 @@ void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d) gBattleBuffersTransferData[2] = c; for (i = 0; i < c; i++) gBattleBuffersTransferData[3 + i] = *(d++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 3); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 3); } -void dp01_build_cmdbuf_x04_4_4_4(u8 a) +void EmitLoadPokeSprite(u8 a) { gBattleBuffersTransferData[0] = 4; gBattleBuffersTransferData[1] = 4; gBattleBuffersTransferData[2] = 4; gBattleBuffersTransferData[3] = 4; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void sub_800C704(u8 a, u8 b, u8 c) +void EmitSendOutPoke(u8 a, u8 b, u8 c) { gBattleBuffersTransferData[0] = 5; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = 5; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x06_a(u8 a, u8 b) +void EmitReturnPokeToBall(u8 a, u8 b) { gBattleBuffersTransferData[0] = 6; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x07_7_7_7(u8 a) +void EmitTrainerThrow(u8 a) { gBattleBuffersTransferData[0] = 7; gBattleBuffersTransferData[1] = 7; gBattleBuffersTransferData[2] = 7; gBattleBuffersTransferData[3] = 7; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x08_8_8_8(u8 a) +void EmitTrainerSlide(u8 a) { gBattleBuffersTransferData[0] = 8; gBattleBuffersTransferData[1] = 8; gBattleBuffersTransferData[2] = 8; gBattleBuffersTransferData[3] = 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x09_9_9_9(u8 a) +void EmitTrainerSlideBack(u8 a) { gBattleBuffersTransferData[0] = 9; gBattleBuffersTransferData[1] = 9; gBattleBuffersTransferData[2] = 9; gBattleBuffersTransferData[3] = 9; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitFaintAnimation(u8 a) +void Emitcmd10(u8 a) { gBattleBuffersTransferData[0] = 10; gBattleBuffersTransferData[1] = 10; gBattleBuffersTransferData[2] = 10; gBattleBuffersTransferData[3] = 10; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x0B_B_B_B(u8 a) +void Emitcmd11(u8 a) { gBattleBuffersTransferData[0] = 11; gBattleBuffersTransferData[1] = 11; gBattleBuffersTransferData[2] = 11; gBattleBuffersTransferData[3] = 11; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x0C_C_C_C(u8 a) +void Emitcmd12(u8 a) { gBattleBuffersTransferData[0] = 12; gBattleBuffersTransferData[1] = 12; gBattleBuffersTransferData[2] = 12; gBattleBuffersTransferData[3] = 12; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x0D_a(u8 a, u8 b) +void EmitBallThrow(u8 a, u8 b) { gBattleBuffersTransferData[0] = 13; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void unref_sub_800C828(u8 a, u8 b, u8 *c) +void EmitPuase(u8 a, u8 b, u8 *c) { int i; @@ -700,10 +702,10 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c) gBattleBuffersTransferData[1] = b; for (i = 0; i < b * 3; i++) gBattleBuffersTransferData[2 + i] = *(c++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, b * 3 + 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2); } -void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g) +void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g) { gBattleBuffersTransferData[0] = 15; gBattleBuffersTransferData[1] = b; @@ -729,315 +731,88 @@ void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g) } gBattleBuffersTransferData[14] = 0; gBattleBuffersTransferData[15] = 0; - memcpy(&gBattleBuffersTransferData[16], g, 0x1C); - dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x2C); + memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g)); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C); } -#ifdef NONMATCHING -void EmitPrintString(u8 a, u16 b) +void EmitPrintString(u8 a, u16 stringID) { - int i; - //u16 *r12; + s32 i; + struct StringInfoBattle* stringInfo; gBattleBuffersTransferData[0] = 16; gBattleBuffersTransferData[1] = gBattleOutcome; - gBattleBuffersTransferData[2] = b; - gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8; - - *((u16 *)&gBattleBuffersTransferData[4]) = gCurrentMove; - *((u16 *)&gBattleBuffersTransferData[6]) = gUnknown_02024BE8; - *((u16 *)&gBattleBuffersTransferData[8]) = gLastUsedItem; + gBattleBuffersTransferData[2] = stringID; + gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + + stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->lastMove = gUnknown_02024BE8; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = BATTLE_STRUCT->scriptingActive; + stringInfo->unk1605E = BATTLE_STRUCT->unk1605E; + stringInfo->hpScale = BATTLE_STRUCT->hpScale; + stringInfo->StringBank = gStringBank; + stringInfo->moveType = gBattleMoves[gCurrentMove].type; - gBattleBuffersTransferData[10] = gLastUsedAbility; - gBattleBuffersTransferData[11] = unk_2000000[0x16000 + 3]; - gBattleBuffersTransferData[12] = unk_2000000[0x16000 + 0x5E]; - gBattleBuffersTransferData[13] = unk_2000000[0x16000 + 0xC1]; - gBattleBuffersTransferData[14] = gStringBank; - gBattleBuffersTransferData[15] = gBattleMoves[gCurrentMove].type; for (i = 0; i < 4; i++) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < 0x10; i++) { - gBattleBuffersTransferData[16 + i] = gBattleMons[i].ability; + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; } - for (i = 0; i < 16; i++) + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); +} + +void EmitPrintStringPlayerOnly(u8 a, u16 stringID) +{ + s32 i; + struct StringInfoBattle* stringInfo; + + gBattleBuffersTransferData[0] = 17; + gBattleBuffersTransferData[1] = 17; + gBattleBuffersTransferData[2] = stringID; + gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + + stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->lastMove = gUnknown_02024BE8; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = BATTLE_STRUCT->scriptingActive; + stringInfo->unk1605E = BATTLE_STRUCT->unk1605E; + + for (i = 0; i < 4; i++) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < 0x10; i++) { - gBattleBuffersTransferData[20 + i] = gBattleTextBuff1[i]; - gBattleBuffersTransferData[36 + i] = gBattleTextBuff2[i]; - gBattleBuffersTransferData[52 + i] = gBattleTextBuff3[i]; + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; } - dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x44); -} -#else -__attribute__((naked)) -void EmitPrintString(u8 a, u16 b) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - ldr r2, _0800CA2C @ =gBattleBuffersTransferData\n\ - movs r0, 0x10\n\ - strb r0, [r2]\n\ - ldr r0, _0800CA30 @ =gBattleOutcome\n\ - ldrb r0, [r0]\n\ - strb r0, [r2, 0x1]\n\ - strb r1, [r2, 0x2]\n\ - lsrs r1, 8\n\ - strb r1, [r2, 0x3]\n\ - adds r0, r2, 0x4\n\ - mov r12, r0\n\ - ldr r4, _0800CA34 @ =gCurrentMove\n\ - ldrh r0, [r4]\n\ - strh r0, [r2, 0x4]\n\ - ldr r0, _0800CA38 @ =gUnknown_02024BE8\n\ - ldrh r0, [r0]\n\ - mov r1, r12\n\ - strh r0, [r1, 0x2]\n\ - ldr r0, _0800CA3C @ =gLastUsedItem\n\ - ldrh r0, [r0]\n\ - strh r0, [r1, 0x4]\n\ - ldr r0, _0800CA40 @ =gLastUsedAbility\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x6]\n\ - ldr r1, _0800CA44 @ =0x02000000\n\ - ldr r3, _0800CA48 @ =0x00016003\n\ - adds r0, r1, r3\n\ - ldrb r0, [r0]\n\ - mov r7, r12\n\ - strb r0, [r7, 0x7]\n\ - adds r3, 0x5B\n\ - adds r0, r1, r3\n\ - ldrb r0, [r0]\n\ - strb r0, [r7, 0x8]\n\ - ldr r7, _0800CA4C @ =0x000160c1\n\ - adds r1, r7\n\ - ldrb r0, [r1]\n\ - mov r1, r12\n\ - strb r0, [r1, 0x9]\n\ - ldr r0, _0800CA50 @ =gStringBank\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0xA]\n\ - ldr r3, _0800CA54 @ =gBattleMoves\n\ - ldrh r1, [r4]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - ldrb r0, [r0, 0x2]\n\ - mov r3, r12\n\ - strb r0, [r3, 0xB]\n\ - movs r3, 0\n\ - mov r9, r2\n\ - ldr r7, _0800CA58 @ =gBattleTextBuff3\n\ - mov r8, r7\n\ - adds r2, 0x10\n\ - ldr r0, _0800CA5C @ =gBattleMons\n\ - adds r4, r0, 0\n\ - adds r4, 0x20\n\ -_0800C9D2:\n\ - adds r1, r2, r3\n\ - ldrb r0, [r4]\n\ - strb r0, [r1]\n\ - adds r4, 0x58\n\ - adds r3, 0x1\n\ - cmp r3, 0x3\n\ - ble _0800C9D2\n\ - movs r3, 0\n\ - mov r5, r12\n\ - adds r5, 0x10\n\ - mov r4, r12\n\ - adds r4, 0x20\n\ - ldr r6, _0800CA60 @ =gBattleTextBuff2\n\ - mov r2, r12\n\ - adds r2, 0x30\n\ -_0800C9F0:\n\ - adds r1, r5, r3\n\ - ldr r7, _0800CA64 @ =gBattleTextBuff1\n\ - adds r0, r3, r7\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r1, r4, r3\n\ - adds r0, r3, r6\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r1, r2, r3\n\ - mov r7, r8\n\ - adds r0, r3, r7\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r3, 0x1\n\ - cmp r3, 0xF\n\ - ble _0800C9F0\n\ - mov r0, r10\n\ - mov r1, r9\n\ - movs r2, 0x44\n\ - bl dp01_prepare_buffer\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0800CA2C: .4byte gBattleBuffersTransferData\n\ -_0800CA30: .4byte gBattleOutcome\n\ -_0800CA34: .4byte gCurrentMove\n\ -_0800CA38: .4byte gUnknown_02024BE8\n\ -_0800CA3C: .4byte gLastUsedItem\n\ -_0800CA40: .4byte gLastUsedAbility\n\ -_0800CA44: .4byte 0x02000000\n\ -_0800CA48: .4byte 0x00016003\n\ -_0800CA4C: .4byte 0x000160c1\n\ -_0800CA50: .4byte gStringBank\n\ -_0800CA54: .4byte gBattleMoves\n\ -_0800CA58: .4byte gBattleTextBuff3\n\ -_0800CA5C: .4byte gBattleMons\n\ -_0800CA60: .4byte gBattleTextBuff2\n\ -_0800CA64: .4byte gBattleTextBuff1\n\ - .syntax divided\n"); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); } -#endif -__attribute__((naked)) -void EmitPrintStringPlayerOnly() -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - ldr r2, _0800CB28 @ =gBattleBuffersTransferData\n\ - movs r0, 0x11\n\ - strb r0, [r2]\n\ - strb r0, [r2, 0x1]\n\ - strb r1, [r2, 0x2]\n\ - lsrs r1, 8\n\ - strb r1, [r2, 0x3]\n\ - adds r0, r2, 0x4\n\ - mov r12, r0\n\ - ldr r0, _0800CB2C @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - strh r0, [r2, 0x4]\n\ - ldr r0, _0800CB30 @ =gUnknown_02024BE8\n\ - ldrh r0, [r0]\n\ - mov r1, r12\n\ - strh r0, [r1, 0x2]\n\ - ldr r0, _0800CB34 @ =gLastUsedItem\n\ - ldrh r0, [r0]\n\ - strh r0, [r1, 0x4]\n\ - ldr r0, _0800CB38 @ =gLastUsedAbility\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x6]\n\ - ldr r0, _0800CB3C @ =0x02000000\n\ - ldr r3, _0800CB40 @ =0x00016003\n\ - adds r1, r0, r3\n\ - ldrb r1, [r1]\n\ - mov r7, r12\n\ - strb r1, [r7, 0x7]\n\ - ldr r1, _0800CB44 @ =0x0001605e\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - strb r0, [r7, 0x8]\n\ - movs r3, 0\n\ - mov r9, r2\n\ - ldr r7, _0800CB48 @ =gBattleTextBuff3\n\ - mov r8, r7\n\ - mov r4, r9\n\ - adds r4, 0x10\n\ - ldr r0, _0800CB4C @ =gBattleMons\n\ - adds r2, r0, 0\n\ - adds r2, 0x20\n\ -_0800CACE:\n\ - adds r1, r4, r3\n\ - ldrb r0, [r2]\n\ - strb r0, [r1]\n\ - adds r2, 0x58\n\ - adds r3, 0x1\n\ - cmp r3, 0x3\n\ - ble _0800CACE\n\ - movs r3, 0\n\ - mov r5, r12\n\ - adds r5, 0x10\n\ - mov r4, r12\n\ - adds r4, 0x20\n\ - ldr r6, _0800CB50 @ =gBattleTextBuff2\n\ - mov r2, r12\n\ - adds r2, 0x30\n\ -_0800CAEC:\n\ - adds r1, r5, r3\n\ - ldr r7, _0800CB54 @ =gBattleTextBuff1\n\ - adds r0, r3, r7\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r1, r4, r3\n\ - adds r0, r3, r6\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r1, r2, r3\n\ - mov r7, r8\n\ - adds r0, r3, r7\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r3, 0x1\n\ - cmp r3, 0xF\n\ - ble _0800CAEC\n\ - mov r0, r10\n\ - mov r1, r9\n\ - movs r2, 0x44\n\ - bl dp01_prepare_buffer\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0800CB28: .4byte gBattleBuffersTransferData\n\ -_0800CB2C: .4byte gCurrentMove\n\ -_0800CB30: .4byte gUnknown_02024BE8\n\ -_0800CB34: .4byte gLastUsedItem\n\ -_0800CB38: .4byte gLastUsedAbility\n\ -_0800CB3C: .4byte 0x02000000\n\ -_0800CB40: .4byte 0x00016003\n\ -_0800CB44: .4byte 0x0001605e\n\ -_0800CB48: .4byte gBattleTextBuff3\n\ -_0800CB4C: .4byte gBattleMons\n\ -_0800CB50: .4byte gBattleTextBuff2\n\ -_0800CB54: .4byte gBattleTextBuff1\n\ - .syntax divided\n"); -} - -void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c) +void Emitcmd18(u8 a, u8 b, u16 c) { gBattleBuffersTransferData[0] = 18; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void unref_sub_800CB84(u8 a, u8 b) +void Emitcmd19(u8 a, u8 b) { gBattleBuffersTransferData[0] = 19; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d) +void Emitcmd20(u8 a, u8 b, u8 c, u8 *d) { u32 i; @@ -1047,20 +822,20 @@ void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d) gBattleBuffersTransferData[3] = 0; for (i = 0; i < 20; i++) gBattleBuffersTransferData[4 + i] = d[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 24); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 24); } -void sub_800CBE0(u8 a, u8 *b) +void EmitOpenBag(u8 a, u8 *b) { int i; gBattleBuffersTransferData[0] = 21; for (i = 0; i < 3; i++) gBattleBuffersTransferData[1 + i] = b[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e) +void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e) { int i; @@ -1070,34 +845,38 @@ void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e) gBattleBuffersTransferData[3] = d; for (i = 0; i < 3; i++) gBattleBuffersTransferData[4 + i] = e[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written } -void dp01_build_cmdbuf_x17_17_17_17(u8 a) +void Emitcmd23(u8 a) { gBattleBuffersTransferData[0] = 23; gBattleBuffersTransferData[1] = 23; gBattleBuffersTransferData[2] = 23; gBattleBuffersTransferData[3] = 23; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitHealthBarUpdate(u8 a, s16 b) +// FIXME: I think this function is supposed to take s16 as its second argument, +// but battle_4.c expects u16 +void EmitHealthBarUpdate(u8 a, u16 b) { gBattleBuffersTransferData[0] = 24; gBattleBuffersTransferData[1] = 0; - gBattleBuffersTransferData[2] = b; - gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[2] = (s16)b; + gBattleBuffersTransferData[3] = ((s16)b & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitExpBarUpdate(u8 a, u8 b, s16 c) +// FIXME: I think this function is supposed to take s16 as its third argument, +// but battle_4.c expects u16 +void EmitExpBarUpdate(u8 a, u8 b, u16 c) { gBattleBuffersTransferData[0] = 25; gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[2] = (s16)c; + gBattleBuffersTransferData[3] = ((s16)c & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitStatusIconUpdate(u8 a, u32 b, u32 c) @@ -1111,7 +890,7 @@ void EmitStatusIconUpdate(u8 a, u32 b, u32 c) gBattleBuffersTransferData[6] = (c & 0x0000FF00) >> 8; gBattleBuffersTransferData[7] = (c & 0x00FF0000) >> 16; gBattleBuffersTransferData[8] = (c & 0xFF000000) >> 24; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 9); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 9); } void EmitStatusAnimation(u8 a, u8 b, u32 c) @@ -1122,17 +901,17 @@ void EmitStatusAnimation(u8 a, u8 b, u32 c) gBattleBuffersTransferData[3] = (c & 0x0000FF00) >> 8; gBattleBuffersTransferData[4] = (c & 0x00FF0000) >> 16; gBattleBuffersTransferData[5] = (c & 0xFF000000) >> 24; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 6); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 6); } void EmitStatusXor(u8 a, u8 b) { gBattleBuffersTransferData[0] = 28; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c) +void Emitcmd29(u8 a, u16 b, u8 *c) { int i; @@ -1142,10 +921,10 @@ void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c) gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8; for (i = 0; i < b; i++) gBattleBuffersTransferData[4 + i] = *(c++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 4); } -void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d) +void EmitDMATransfer(u8 a, u32 b, u16 c, u8 *d) { int i; @@ -1158,10 +937,10 @@ void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d) gBattleBuffersTransferData[6] = (c & 0xFF00) >> 8; for (i = 0; i < c; i++) gBattleBuffersTransferData[7 + i] = *(d++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 7); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 7); } -void unref_sub_800CE3C(u8 a, u16 b, u8 *c) +void Emitcmd31(u8 a, u16 b, u8 *c) { int i; @@ -1170,10 +949,10 @@ void unref_sub_800CE3C(u8 a, u16 b, u8 *c) gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; for (i = 0; i < b; i++) gBattleBuffersTransferData[3 + i] = *(c++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3); } -void unref_sub_800CE84(u8 a, u16 b, u8 *c) +void Emitcmd32(u8 a, u16 b, u8 *c) { int i; @@ -1182,19 +961,19 @@ void unref_sub_800CE84(u8 a, u16 b, u8 *c) gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; for (i = 0; i < b; i++) gBattleBuffersTransferData[3 + i] = *(c++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3); } -void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c) +void Emitcmd33(u8 a, u8 b, u16 c) { gBattleBuffersTransferData[0] = 33; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c) +void Emitcmd34(u8 a, u8 b, u8 *c) { int i; @@ -1202,59 +981,59 @@ void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c) gBattleBuffersTransferData[1] = b; for (i = 0; i < 3; i++) gBattleBuffersTransferData[2 + i] = c[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 5); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 5); } -void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b) +void Emitcmd35(u8 a, u16 b) { gBattleBuffersTransferData[0] = 35; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b) +void Emitcmd36(u8 a, u16 b) { gBattleBuffersTransferData[0] = 36; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x25_25_25_25(u8 a) +void Emitcmd37(u8 a) { gBattleBuffersTransferData[0] = 37; gBattleBuffersTransferData[1] = 37; gBattleBuffersTransferData[2] = 37; gBattleBuffersTransferData[3] = 37; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x26_a(u8 a, u8 b) +void Emitcmd38(u8 a, u8 b) { gBattleBuffersTransferData[0] = 38; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x27_27_27_27(u8 a) +void Emitcmd39(u8 a) { gBattleBuffersTransferData[0] = 39; gBattleBuffersTransferData[1] = 39; gBattleBuffersTransferData[2] = 39; gBattleBuffersTransferData[3] = 39; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x28_28_28_28(u8 a) +void Emitcmd40(u8 a) { gBattleBuffersTransferData[0] = 40; gBattleBuffersTransferData[1] = 40; gBattleBuffersTransferData[2] = 40; gBattleBuffersTransferData[3] = 40; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitHitAnimation(u8 a) @@ -1263,16 +1042,16 @@ void EmitHitAnimation(u8 a) gBattleBuffersTransferData[1] = 41; gBattleBuffersTransferData[2] = 41; gBattleBuffersTransferData[3] = 41; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a) +void Emitcmd42(u8 a) { gBattleBuffersTransferData[0] = 42; gBattleBuffersTransferData[1] = 42; gBattleBuffersTransferData[2] = 42; gBattleBuffersTransferData[3] = 42; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitEffectivenessSound(u8 a, u16 b) @@ -1281,16 +1060,16 @@ void EmitEffectivenessSound(u8 a, u16 b) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void sub_800D074(u8 a, u16 b) +void Emitcmd44(u8 a, u16 b) { gBattleBuffersTransferData[0] = 44; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitFaintingCry(u8 a) @@ -1299,26 +1078,26 @@ void EmitFaintingCry(u8 a) gBattleBuffersTransferData[1] = 45; gBattleBuffersTransferData[2] = 45; gBattleBuffersTransferData[3] = 45; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitBattleIntroSlide(u8 a, u8 b) +void EmitIntroSlide(u8 a, u8 battleTerrain) { gBattleBuffersTransferData[0] = 46; - gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + gBattleBuffersTransferData[1] = battleTerrain; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a) +void EmitTrainerBallThrow(u8 a) { gBattleBuffersTransferData[0] = 47; gBattleBuffersTransferData[1] = 47; gBattleBuffersTransferData[2] = 47; gBattleBuffersTransferData[3] = 47; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c) +void Emitcmd48(u8 a, u8 *b, u8 c) { int i; @@ -1328,25 +1107,25 @@ void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c) gBattleBuffersTransferData[3] = 48; for (i = 0; i < 48; i++) gBattleBuffersTransferData[4 + i] = b[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 52); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 52); } -void dp01_build_cmdbuf_x31_31_31_31(u8 a) +void Emitcmd49(u8 a) { gBattleBuffersTransferData[0] = 49; gBattleBuffersTransferData[1] = 49; gBattleBuffersTransferData[2] = 49; gBattleBuffersTransferData[3] = 49; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x32_32_32_32(u8 a) +void Emitcmd50(u8 a) { gBattleBuffersTransferData[0] = 50; gBattleBuffersTransferData[1] = 50; gBattleBuffersTransferData[2] = 50; gBattleBuffersTransferData[3] = 50; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitSpriteInvisibility(u8 a, u8 b) @@ -1355,7 +1134,7 @@ void EmitSpriteInvisibility(u8 a, u8 b) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = 51; gBattleBuffersTransferData[3] = 51; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitBattleAnimation(u8 a, u8 b, u16 c) @@ -1364,26 +1143,26 @@ void EmitBattleAnimation(u8 a, u8 b, u16 c) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitLinkStandbyMsg(u8 a, u8 b) { gBattleBuffersTransferData[0] = 53; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } void EmitResetActionMoveSelection(u8 a, u8 b) { gBattleBuffersTransferData[0] = 54; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x37_a(u8 a, u8 b) +void Emitcmd55(u8 a, u8 b) { gBattleBuffersTransferData[0] = 55; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } diff --git a/src/rom6.c b/src/rom6.c index ff032b6c2..b91a9b2c0 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -6,7 +6,7 @@ #include "field_player_avatar.h" #include "item_use.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "songs.h" #include "sound.h" @@ -17,7 +17,7 @@ extern u16 gScriptLastTalked; extern void (*gFieldCallback)(void); extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); -extern u8 UseRockSmashScript[]; +extern u8 S_UseRockSmash[]; EWRAM_DATA struct MapPosition gUnknown_0203923C = {0}; @@ -64,9 +64,9 @@ static void task08_080C9820(u8 taskId) if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[mapObjId]) || FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId])) { - if (gMapHeader.mapType == 5) + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) { - FieldEffectStart(0x3B); + FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); gTasks[taskId].func = sub_810B428; } else @@ -82,7 +82,7 @@ static void sub_810B3DC(u8 taskId) { if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE) { - FieldEffectStart(0x3B); + FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); gTasks[taskId].func = sub_810B428; } } @@ -91,17 +91,17 @@ static void sub_810B428(u8 taskId) { if (!FieldEffectActiveListContains(6)) { - gUnknown_0202FF84[1] = player_get_direction_lower_nybble(); - if (gUnknown_0202FF84[1] == 1) - gUnknown_0202FF84[2] = 0; - if (gUnknown_0202FF84[1] == 2) - gUnknown_0202FF84[2] = 1; - if (gUnknown_0202FF84[1] == 3) - gUnknown_0202FF84[2] = 2; - if (gUnknown_0202FF84[1] == 4) - gUnknown_0202FF84[2] = 3; + gFieldEffectArguments[1] = player_get_direction_lower_nybble(); + if (gFieldEffectArguments[1] == 1) + gFieldEffectArguments[2] = 0; + if (gFieldEffectArguments[1] == 2) + gFieldEffectArguments[2] = 1; + if (gFieldEffectArguments[1] == 3) + gFieldEffectArguments[2] = 2; + if (gFieldEffectArguments[1] == 4) + gFieldEffectArguments[2] = 3; sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState()); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gUnknown_0202FF84[2]); + StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]); FieldEffectActiveListRemove(6); gTasks[taskId].func = sub_810B4CC; } @@ -120,7 +120,7 @@ bool8 SetUpFieldMove_RockSmash(void) { if (npc_before_player_of_type(0x56) == TRUE) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_810B53C; return TRUE; } @@ -132,8 +132,8 @@ bool8 SetUpFieldMove_RockSmash(void) static void sub_810B53C(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - ScriptContext1_SetupScript(UseRockSmashScript); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(S_UseRockSmash); } int FldEff_RockSmash(void) @@ -149,15 +149,15 @@ int FldEff_RockSmash(void) static void sub_810B58C(void) { PlaySE(SE_W088); - FieldEffectActiveListRemove(0x25); + FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH); EnableBothScriptContexts(); } int SetUpFieldMove_Dig(void) { - if (sub_80CA1C8() == TRUE) + if (CanUseEscapeRopeOnCurrMap() == TRUE) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_810B5D8; return TRUE; } @@ -169,9 +169,9 @@ int SetUpFieldMove_Dig(void) static void sub_810B5D8(void) { - sub_8053014(); - FieldEffectStart(0x26); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + Overworld_ResetStateAfterDigEscRope(); + FieldEffectStart(FLDEFF_USE_DIG); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } int FldEff_UseDig(void) @@ -189,7 +189,7 @@ static void sub_810B634(void) { u8 taskId; - FieldEffectActiveListRemove(0x26); + FieldEffectActiveListRemove(FLDEFF_USE_DIG); if (ShouldDoBrailleDigEffect()) { DoBrailleDigEffect(); diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 249146b37..172233e6d 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -102,8 +102,8 @@ extern u32 gTransformPersonalities[NUM_BATTLE_SLOTS]; extern u8 gBattleMonForms[NUM_BATTLE_SLOTS]; extern u16 gUnknown_0202F7CA[]; extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS]; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; extern s16 gBattleAnimArgs[8]; extern u8 gBanksBySide[NUM_BATTLE_SLOTS]; extern u8 gNoOfAllBanks; // gNumBattleMons? @@ -402,43 +402,43 @@ u8 sub_8077FC0(u8 slot) { return r6; } -u8 obj_id_for_side_relative_to_move(u8 a1) { +u8 GetAnimBankSpriteId(u8 whichBank) { u8 *sprites; - if (a1 == 0) { - if (sub_8078874(gBattleAnimPlayerMonIndex)) { + if (whichBank == ANIM_BANK_ATK) { + if (AnimBankSpriteExists(gBattleAnimBankAttacker)) { sprites = gBattleMonSprites; - return sprites[gBattleAnimPlayerMonIndex]; + return sprites[gBattleAnimBankAttacker]; } else { return 0xff; } - } else if (a1 == 1) { - if (sub_8078874(gBattleAnimEnemyMonIndex)) { + } else if (whichBank == ANIM_BANK_DEF) { + if (AnimBankSpriteExists(gBattleAnimBankTarget)) { sprites = gBattleMonSprites; - return sprites[gBattleAnimEnemyMonIndex]; + return sprites[gBattleAnimBankTarget]; } else { return 0xff; } - } else if (a1 == 2) { - if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { + } else if (whichBank == ANIM_BANK_ATK_PARTNER) { + if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { return 0xff; } else { - return gBattleMonSprites[gBattleAnimPlayerMonIndex ^ 2]; + return gBattleMonSprites[gBattleAnimBankAttacker ^ 2]; } } else { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - return gBattleMonSprites[gBattleAnimEnemyMonIndex ^ 2]; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + return gBattleMonSprites[gBattleAnimBankTarget ^ 2]; } else { return 0xff; } } } -void oamt_set_x3A_32(struct Sprite *sprite, void (*callback)(struct Sprite*)) { +void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*callback)(struct Sprite*)) { sprite->data6 = (u32)(callback) & 0xffff; sprite->data7 = (u32)(callback) >> 16; } -void sub_8078104(struct Sprite *sprite) { +void SetCallbackToStoredInData6(struct Sprite *sprite) { u32 callback = (u16)sprite->data6 | (sprite->data7 << 16); sprite->callback = (void (*)(struct Sprite *))callback; } @@ -455,7 +455,7 @@ void sub_8078114(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -472,7 +472,7 @@ void sub_8078174(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -494,7 +494,7 @@ void unref_sub_80781F0(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -510,7 +510,7 @@ void sub_8078278(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -518,7 +518,7 @@ void sub_80782D8(struct Sprite *sprite) { if (sprite->data0 > 0) { sprite->data0--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -547,7 +547,7 @@ void sub_8078364(struct Sprite *sprite) { sprite->pos2.x += sprite->data1; sprite->pos2.y += sprite->data2; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -559,7 +559,7 @@ void sub_8078394(struct Sprite *sprite) { sprite->pos2.x = sprite->data3 >> 8; sprite->pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -571,7 +571,7 @@ void sub_80783D0(struct Sprite *sprite) { sprite->pos2.x = sprite->data3 >> 8; sprite->pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } UpdateMonIconFrame(sprite); } @@ -579,8 +579,8 @@ void sub_80783D0(struct Sprite *sprite) { void unref_sub_8078414(struct Sprite *sprite) { sprite->data1 = sprite->pos1.x + sprite->pos2.x; sprite->data3 = sprite->pos1.y + sprite->pos2.y; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3); sprite->callback = sub_80782F8; } @@ -590,7 +590,7 @@ void sub_8078458(struct Sprite *sprite) { gSprites[sprite->data3].pos2.x += sprite->data1; gSprites[sprite->data3].pos2.y += sprite->data2; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -602,7 +602,7 @@ void sub_80784A8(struct Sprite *sprite) { gSprites[sprite->data5].pos2.x = sprite->data3 >> 8; gSprites[sprite->data5].pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -619,7 +619,7 @@ void sub_8078504(struct Sprite *sprite) { } } } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -631,8 +631,8 @@ void move_anim_8074EE0(struct Sprite *sprite) { void unref_sub_8078588(struct Sprite *sprite) { sprite->data1 = sprite->pos1.x + sprite->pos2.x; sprite->data3 = sprite->pos1.y + sprite->pos2.y; - sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3); sprite->callback = sub_80782F8; } @@ -643,13 +643,13 @@ void unref_sub_80785CC(struct Sprite *sprite) { void sub_80785E4(struct Sprite *sprite) { if (sprite->affineAnimEnded) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } void sub_8078600(struct Sprite *sprite) { if (sprite->animEnded) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -666,19 +666,19 @@ void sub_8078634(u8 task) { } void sub_8078650(struct Sprite *sprite) { - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); } void sub_807867C(struct Sprite *sprite, s16 a2) { - u16 v1 = sub_8077ABC(gBattleAnimPlayerMonIndex, 0); - u16 v2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0); + u16 v1 = sub_8077ABC(gBattleAnimBankAttacker, 0); + u16 v2 = sub_8077ABC(gBattleAnimBankTarget, 0); if (v1 > v2) { sprite->pos1.x -= a2; } else if (v1 < v2) { sprite->pos1.x += a2; } else { - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= a2; } else { sprite->pos1.x += a2; @@ -712,8 +712,8 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite) { void sub_8078764(struct Sprite *sprite, u8 a2) { if (!a2) { - sprite->pos1.x = sub_8077EE4(gBattleAnimEnemyMonIndex, 0); - sprite->pos1.y = sub_8077EE4(gBattleAnimEnemyMonIndex, 1); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankTarget, 0); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankTarget, 1); } sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -721,11 +721,11 @@ void sub_8078764(struct Sprite *sprite, u8 a2) { void sub_80787B0(struct Sprite *sprite, u8 a2) { if (!a2) { - sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 0); - sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 1); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 0); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 1); } else { - sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 3); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 3); } sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -749,12 +749,12 @@ u8 GetBankByPlayerAI(u8 slot) { return i; } -bool8 sub_8078874(u8 slot) { +bool8 AnimBankSpriteExists(u8 slot) { if (IsContest()) { - if (gBattleAnimPlayerMonIndex == slot) { + if (gBattleAnimBankAttacker == slot) { return TRUE; } - if (gBattleAnimEnemyMonIndex == slot) { + if (gBattleAnimBankTarget == slot) { return TRUE; } return FALSE; @@ -796,7 +796,7 @@ void sub_8078954(struct Struct_sub_8078914 *unk) { unk->field_0 = (u8 *)0x6008000; unk->field_4 = (u8 *)0x600f000; unk->field_8 = 0xe; - } else if (GetBankIdentity_permutated(gBattleAnimPlayerMonIndex) == 1) { + } else if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) { unk->field_0 = (u8 *)0x6004000; unk->field_4 = (u8 *)0x600e000; unk->field_8 = 0x8; @@ -906,7 +906,7 @@ bool8 sub_8078B5C(struct Sprite *sprite) { void sub_8078BB8(struct Sprite *sprite) { if (sub_8078B5C(sprite)) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -986,7 +986,7 @@ bool8 sub_8078CE8(struct Sprite *sprite) { void sub_8078D44(struct Sprite *sprite) { if (sub_8078CE8(sprite)) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -1024,7 +1024,7 @@ void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) { bool8 sub_8078E38() { if (IsContest()) { - if (gSprites[obj_id_for_side_relative_to_move(0)].data2 == 0xc9 /* XXX SPECIES_UNOWN? */) { + if (gSprites[GetAnimBankSpriteId(0)].data2 == 0xc9 /* XXX SPECIES_UNOWN? */) { return FALSE; } return TRUE; @@ -1035,7 +1035,7 @@ bool8 sub_8078E38() { void sub_8078E70(u8 sprite, u8 a2) { struct Struct_2017810 *unk; u8 r7 = gSprites[sprite].data0; - if (IsContest() || b_side_obj__get_some_boolean(r7)) { + if (IsContest() || IsAnimBankSpriteVisible(r7)) { gSprites[sprite].invisible = FALSE; } gSprites[sprite].oam.objMode = a2; @@ -1096,12 +1096,12 @@ void sub_8079098(struct Sprite *sprite) { CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -u16 sub_80790D8(s16 a, s16 b) { +static u16 ArcTan2_(s16 a, s16 b) { return ArcTan2(a, b); } u16 sub_80790F0(s16 a, s16 b) { - u16 var = sub_80790D8(a, b); + u16 var = ArcTan2_(a, b); return -var; } @@ -1140,22 +1140,22 @@ u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { } } if (a2) { - shift = gBattleAnimPlayerMonIndex + 16; + shift = gBattleAnimBankAttacker + 16; var |= 1 << shift; } if (a3) { - shift = gBattleAnimEnemyMonIndex + 16; + shift = gBattleAnimBankTarget + 16; var |= 1 << shift; } if (a4) { - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { - shift = (gBattleAnimPlayerMonIndex ^ 2) + 16; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { + shift = (gBattleAnimBankAttacker ^ 2) + 16; var |= 1 << shift; } } if (a5) { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - shift = (gBattleAnimEnemyMonIndex ^ 2) + 16; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + shift = (gBattleAnimBankTarget ^ 2) + 16; var |= 1 << shift; } } @@ -1184,24 +1184,24 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) { } } else { if (a1) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(0))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(0))) { var |= 1 << (GetBankByPlayerAI(0) + 16); } } if (a2) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(2))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(2))) { shift = GetBankByPlayerAI(2) + 16; var |= 1 << shift; } } if (a3) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(1))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(1))) { shift = GetBankByPlayerAI(1) + 16; var |= 1 << shift; } } if (a4) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(3))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(3))) { shift = GetBankByPlayerAI(3) + 16; var |= 1 << shift; } @@ -1252,24 +1252,24 @@ void sub_807941C(struct Sprite *sprite) { v2 = 1; } sub_80787B0(sprite, v1); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, v2) + gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, v2) + gBattleAnimArgs[3]; sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80794A8(struct Sprite *sprite) { sub_80787B0(sprite, 1); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; sprite->data5 = gBattleAnimArgs[5]; sub_80786EC(sprite); sprite->callback = sub_8079518; @@ -1292,12 +1292,12 @@ void sub_8079534(struct Sprite *sprite) { } if (!gBattleAnimArgs[5]) { sub_80787B0(sprite, r4); - slot = gBattleAnimPlayerMonIndex; + slot = gBattleAnimBankAttacker; } else { sub_8078764(sprite, r4); - slot = gBattleAnimEnemyMonIndex; + slot = gBattleAnimBankTarget; } - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sub_8078764(sprite, r4); @@ -1305,12 +1305,12 @@ void sub_8079534(struct Sprite *sprite) { sprite->data2 = sub_8077ABC(slot, 2) + gBattleAnimArgs[2]; sprite->data4 = sub_8077ABC(slot, r7) + gBattleAnimArgs[3]; sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1) { u16 i; - u8 sprite = obj_id_for_side_relative_to_move(a1); + u8 sprite = GetAnimBankSpriteId(a1); if (sprite != 0xff) { for (i = 0; i < 0x40; i++) { if (gSprites[i].inUse) { @@ -1380,7 +1380,7 @@ void sub_80796F8(u8 taskId) { } void sub_8079790(u8 task) { - u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(task); return; @@ -1624,24 +1624,24 @@ void sub_8079CEC(u8 task) { } void unref_sub_8079D20(u8 priority) { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex)) { - gSprites[gBattleMonSprites[gBattleAnimEnemyMonIndex]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget)) { + gSprites[gBattleMonSprites[gBattleAnimBankTarget]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex)) { - gSprites[gBattleMonSprites[gBattleAnimPlayerMonIndex]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker)) { + gSprites[gBattleMonSprites[gBattleAnimBankAttacker]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - gSprites[gBattleMonSprites[gBattleAnimEnemyMonIndex ^ 2]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + gSprites[gBattleMonSprites[gBattleAnimBankTarget ^ 2]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { - gSprites[gBattleMonSprites[gBattleAnimPlayerMonIndex ^ 2]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { + gSprites[gBattleMonSprites[gBattleAnimBankAttacker ^ 2]].oam.priority = priority; } } void sub_8079E24() { int i; for (i = 0; i < gNoOfAllBanks; i++) { - if (b_side_obj__get_some_boolean(i)) { + if (IsAnimBankSpriteVisible(i)) { gSprites[gBattleMonSprites[i]].subpriority = sub_8079E90(i); gSprites[gBattleMonSprites[i]].oam.priority = 2; } @@ -1706,7 +1706,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u16 sheet = LoadSpriteSheet(&gUnknown_0837F5E0[a3]); u16 palette = AllocSpritePalette(gSpriteTemplate_837F5B0[a3].paletteTag); if (!isBackpic) { - LoadCompressedPalette(species_and_otid_get_pal(species, a8, a7), (palette * 0x10) + 0x100, 0x20); + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, @@ -1719,7 +1719,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, ); } else { LoadCompressedPalette( - species_and_otid_get_pal(species, a8, a7), (palette * 0x10) + 0x100, 0x20); + GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -1892,7 +1892,7 @@ u8 sub_807A4A0(int a1, u8 sprite, int a3) { void sub_807A544(struct Sprite *sprite) { sub_8078650(sprite); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; sprite->hFlip = TRUE; @@ -1904,12 +1904,12 @@ void sub_807A544(struct Sprite *sprite) { sprite->data1 = gBattleAnimArgs[3]; sprite->data3 = gBattleAnimArgs[4]; sprite->data5 = gBattleAnimArgs[5]; - oamt_set_x3A_32(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); sprite->callback = sub_8078504; } void sub_807A5C4(struct Sprite *sprite) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] *= -1; } else { @@ -1921,28 +1921,28 @@ void sub_807A5C4(struct Sprite *sprite) { sprite->data3 = gBattleAnimArgs[4]; sprite->data5 = gBattleAnimArgs[5]; StartSpriteAnim(sprite, gBattleAnimArgs[6]); - oamt_set_x3A_32(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); sprite->callback = sub_8078504; } void sub_807A63C(struct Sprite *sprite) { sub_8078650(sprite); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; } else { sprite->pos1.x += gBattleAnimArgs[0]; } sprite->pos1.y += gBattleAnimArgs[1]; sprite->callback = sub_8078600; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_807A69C(u8 taskId) { u16 src; u16 dest; struct Task *task = &gTasks[taskId]; - task->data[0] = obj_id_for_side_relative_to_move(0); - task->data[1] = (GetBankSide(gBattleAnimPlayerMonIndex)) ? -8 : 8; + task->data[0] = GetAnimBankSpriteId(0); + task->data[1] = (GetBankSide(gBattleAnimBankAttacker)) ? -8 : 8; task->data[2] = 0; task->data[3] = 0; gSprites[task->data[0]].pos2.x -= task->data[0]; @@ -1951,7 +1951,7 @@ void sub_807A69C(u8 taskId) { dest = (task->data[4] + 0x10) * 0x10; src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; - task->data[6] = sub_8079E90(gBattleAnimPlayerMonIndex); + task->data[6] = sub_8079E90(gBattleAnimBankAttacker); if (task->data[6] == 20 || task->data[6] == 40) { task->data[6] = 2; } else { @@ -2012,9 +2012,9 @@ void sub_807A8D4(struct Sprite *sprite) { } void sub_807A908(struct Sprite *sprite) { - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - if (!GetBankSide(gBattleAnimPlayerMonIndex)) { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + if (!GetBankSide(gBattleAnimBankAttacker)) { sprite->data0 = 5; } else { sprite->data0 = -10; @@ -2041,7 +2041,7 @@ void sub_807A9BC(struct Sprite *sprite) { sprite->data0 = gBattleAnimArgs[2]; sprite->data2 = sprite->pos1.x + gBattleAnimArgs[4]; sprite->data4 = sprite->pos1.y + gBattleAnimArgs[5]; - if (!GetBankSide(gBattleAnimEnemyMonIndex)) { + if (!GetBankSide(gBattleAnimBankTarget)) { x = (u16)gBattleAnimArgs[4] + 30; sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 20; @@ -2051,5 +2051,5 @@ void sub_807A9BC(struct Sprite *sprite) { sprite->pos1.y = gBattleAnimArgs[5] - 80; } sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c new file mode 100644 index 000000000..7ffcc5185 --- /dev/null +++ b/src/scene/berry_blender.c @@ -0,0 +1,3884 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" +#include "event_data.h" +#include "main.h" +#include "text_window.h" +#include "menu.h" +#include "strings2.h" +#include "sound.h" +#include "songs.h" +#include "berry.h" +#include "string_util.h" +#include "link.h" +#include "task.h" +#include "overworld.h" +#include "item.h" +#include "items.h" +#include "rng.h" +#include "save.h" +#include "menu_cursor.h" +#include "trig.h" +#include "pokeblock.h" + +//needed to match Blender_ControlHitPitch +struct MusicPlayerInfo +{ + struct SongHeader *songHeader; + u32 status; + u8 trackCount; + u8 priority; + u8 cmd; + u8 unk_B; + u32 clock; + u8 gap[8]; + u8 *memAccArea; + u16 tempoD; + u16 tempoU; + u16 tempoI; + u16 tempoC; + u16 fadeOI; + u16 fadeOC; + u16 fadeOV; + struct MusicPlayerTrack *tracks; + struct ToneData *tone; + u32 ident; + u32 func; + u32 intp; +}; + +#define BLENDER_SCORE_BEST 0 +#define BLENDER_SCORE_GOOD 1 +#define BLENDER_SCORE_MISS 2 + +#define BLENDER_MAX_PLAYERS 4 +#define BLENDER_SCORES_NO 3 + +#define FLAVOUR_SPICY 0 +#define FLAVOUR_DRY 1 +#define FLAVOUR_SWEET 2 +#define FLAVOUR_BITTER 3 +#define FLAVOUR_SOUR 4 + +struct BlenderBerry +{ + u16 itemID; + u8 name[7]; + u8 flavours[5]; + u8 smoothness; +}; + +struct BerryBlenderData +{ + u8 field_0; + u8 field_1; + struct Window field_4; + u8 field_35; + u8 field_36; + u8 field_37; + u8 field_38; + u8 field_39; + u8 field_3A; + u8 field_3B; + u8 field_3C; + u8 field_3D; + u8 field_3E; + u8 field_3F; + u8 field_40; + u8 field_41; + u8 field_42; + u8 field_43; + u8 field_44; + u8 field_45; + u8 field_46; + u8 field_47; + u8 field_48; + u8 field_49; + u8 field_4A; + u8 field_4B; + u8 field_4C; + u8 field_4D; + u16 field_4E; + u8 scoreIconIDs[3]; + u16 arrowPos; + s16 field_56; + s16 field_58; + u16 max_RPM; + u8 SyncArrowSpriteID[BLENDER_MAX_PLAYERS]; + u8 SyncArrowSprite2ID[BLENDER_MAX_PLAYERS]; + u8 field_64; + u8 field_65; + u8 field_66; + u8 field_67; + u8 field_68; + u8 field_69; + u8 field_6A; + u8 field_6B; + u8 field_6C; + u8 field_6D; + u8 field_6E; + u8 field_6F; + u16 field_70[BLENDER_MAX_PLAYERS]; + u16 field_78; + u16 field_7A; + u16 field_7C; + u8 field_7E; + u8 field_7F; + u16 chosenItemID[BLENDER_MAX_PLAYERS]; + u8 playersNo; + u8 field_89; + u8 field_8A; + u8 field_8B; + u8 field_8C; + u8 field_8D; + u8 field_8E; + u8 field_8F; + u8 field_90; + u8 field_91; + u8 field_92; + u8 field_93; + u16 field_94; + u8 field_96; + u8 field_97; + u8 field_98; + u8 field_99; + u16 field_9A[BLENDER_MAX_PLAYERS]; + u16 field_A2[BLENDER_MAX_PLAYERS]; + u8 field_AA; + u8 stringVar[129]; + u32 gameFrameTime; + s32 framesToWait; + u32 field_134; + u8 field_138; + u8 field_139; + u8 field_13A; + u8 field_13B; + u8 field_13C; + u8 field_13D; + u16 field_13E; + u16 field_140; + u16 field_142; + s16 field_144; + s16 field_146; + u8 field_148[3]; + u8 field_14B; + u16 scores[BLENDER_MAX_PLAYERS][3]; + u8 playerPlaces[BLENDER_MAX_PLAYERS]; + struct BgAffineDstData field_168; + u16 field_178; + struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; + u32 field_1BC; + u16 field_1C0; + u16 field_1C2; + u32 field_1C4; +}; + +struct BlenderDebug +{ + s8 cursorPos; + s8 berries[4]; + struct Pokeblock pokeblock; + u8 field_10; + u8 spicy; + u8 dry; + u8 sweet; + u8 bitter; + u8 sour; + u8 feel; + s8 field_17; + s8 field_18; + s8 field_19; + s16 BPM; +}; + +// other files functions +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); +void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); +void sub_80A6978(void); +u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); +void sub_814A880(u8 a1, u8 a2); +u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +s8 sub_810CA00(void); +bool8 sub_810CA34(struct Pokeblock *pokeblock); +#ifdef GERMAN +extern void de_sub_8073110(); +#endif + +extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 ewram[]; +extern u16 gScriptItemId; +extern u8 gUnknown_020297ED; +extern u8 byte_3002A68; + +extern const u8 gUnknown_08E6C100[]; +extern const u8 gUnknown_08E6C920[]; +extern const u8 gUnknown_08E6D354[]; +extern const struct WindowConfig gWindowConfig_81E6F68; +extern const u8 *const gPokeblockNames[]; +extern const struct Berry gBerries[]; + +extern const u8 gBerryBlenderArrowTiles[]; +extern const u8 gBerryBlenderMarubatsuTiles[]; +extern const u8 gBerryBlenderParticlesTiles[]; +extern const u8 gBerryBlenderCountdownNumbersTiles[]; +extern const u8 gBerryBlenderStartTiles[]; +extern const u16 gBerryBlenderMiscPalette[]; +extern const u16 gBerryBlenderArrowPalette[]; + +// ewram +static EWRAM_DATA u8 gUnknown_020297DC = 0; +static EWRAM_DATA u32 gUnknown_020297E0 = 0; +static EWRAM_DATA u32 gUnknown_020297E4 = 0; +static EWRAM_DATA u8 gUnknown_020297E8 = 0; + +// iwram common +u16 gUnknown_03004830; +u8 gInGameOpponentsNo; +u16 gUnknown_03004840[10]; +struct BerryBlenderData* gBerryBlenderData; + +// iwram bss +IWRAM_DATA s16 gUnknown_03000510[8]; +IWRAM_DATA s16 gUnknown_03000520[6]; +IWRAM_DATA s16 gUnknown_0300052C; +IWRAM_DATA s16 gUnknown_0300052E; +IWRAM_DATA s32 gUnknown_03000530[6]; +IWRAM_DATA s32 gUnknown_03000548[5]; +IWRAM_DATA u32 gUnknown_0300055C; +IWRAM_DATA struct BlenderDebug sBlenderDebug; + +// this file's functions +void Blender_SetBankBerryData(u8 bank, u16 itemID); + +static void sub_80514A4(void); +static void sub_80514F0(void); +static void sub_804E56C(void); +static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents); +static void sub_8051474(void); +static void sub_804E9F8(void); +static void sub_804F378(void); +static void sub_8051414(struct BgAffineDstData *dest); +static void sub_804F238(void); +static void sub_80501FC(void); +static bool8 sub_8051B8C(void); +static void sub_804F2A8(void); +static void sub_804F81C(void); +static void sub_805156C(void); +void sub_8051684(struct Sprite* sprite); +static void sub_8051AC8(s16* a0, u16 a1); +static void sub_805194C(u16 a0, u16 a1); +static void sub_8051A3C(u16 a0); +static void sub_8051B18(void); +static void sub_805123C(void); +static void sub_8050954(void); +static bool8 Blender_PrintBlendingRanking(void); +static bool8 Blender_PrintBlendingResults(void); +static void sub_80510E8(void); +static void sub_8050E30(void); +static void sub_805197C(u16 a0, u16 a1); +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); +static void sub_8052BD0(u8 taskID); +static void sub_8052AF8(void); +static void sub_804F8C8(u8 taskID); +static void sub_804F9F4(u8 taskID); +static void sub_804FB1C(u8 taskID); +static void sub_8051C04(struct Sprite* sprite); +static void sub_8051650(struct Sprite* sprite); +static void sub_805181C(struct Sprite* sprite); +static void sub_80518CC(struct Sprite* sprite); + +// const data +static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); +static const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); +static const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); + +// unreferenced pals? +static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unused/unknown/821604C.gbapal"); +static const u16 sUnknownArray_1[224] = {0}; + +// unreferenced Japanese strings +static const u8 sUnknownJpnString0[] = _("▶"); +static const u8 sUnknownJpnString1[] = _(" "); +static const u8 sUnknownJpnString2[] = _("カッコイ"); // "cool" (missing an イ at the end) +static const u8 sUnknownJpnString3[] = _("カワイイ"); // "cute" +static const u8 sUnknownJpnString4[] = _("ウツクシ"); // "beautiful" (missing an イ at the end) +static const u8 sUnknownJpnString5[] = _("カシコイ"); // "smart" +static const u8 sUnknownJpnString6[] = _("タクマシ"); // "tough" (missing an イ at the end) + +static const u8 gUnknown_08216249[] = _("\p"); + +// unreferenced; These appear to be the first names of four people who worked on the game. +static const u8 sUnknownJpnString7[10] = _("てつじ"); // Tetsuji (Ohta) +static const u8 sUnknownJpnString8[10] = _("あきと"); // Akito (Mori) +static const u8 sUnknownJpnString9[10] = _("シゲル"); // Shigeru (Ohmori) +static const u8 sUnknownJpnString10[10] = _("ヨシノリ"); // Yoshinori (Matsuda) + +static const u8 sUnknownText_2Pok[] = _("2Pok"); +static const u8 sUnknownText_3Pok[] = _("3Pok"); +static const u8 sUnknownText_4Pok[] = _("4Pok"); +static const u8* const gUnknown_08216284[] = +{ + sUnknownText_2Pok, sUnknownText_3Pok, sUnknownText_4Pok +}; + +// unreferenced player strings +static const u8 sUnknown1PString[4] = _("1P"); +static const u8 sUnknown2PString[4] = _("2P"); +static const u8 sUnknown3PString[4] = _("3P"); +static const u8 sUnknown4PString[4] = _("4P"); + +#ifdef ENGLISH +static const u8 sBlenderOpponentName1[] = _("MISTER"); +static const u8 sBlenderOpponentName2[] = _("LADDIE"); +static const u8 sBlenderOpponentName3[] = _("LASSIE"); +#else // GERMAN +static const u8 sBlenderOpponentName1[] = _("OPI"); +static const u8 sBlenderOpponentName2[] = _("KUMPEL"); +static const u8 sBlenderOpponentName3[] = _("TUSSI"); +#endif // ENGLISH +static const u8* const sBlenderOpponentsNames[] = +{ + sBlenderOpponentName1, sBlenderOpponentName2, sBlenderOpponentName3 +}; + +static const u8 sRedColorString[] = _("{COLOR RED}"); +static const u8 sNewLineString_0[] = _("\n"); +static const u8 sSpaceString_0[] = _(" "); + +static const s8 gUnknown_082162CC[][2] = +{ + {-1, -1}, {1, -1}, {-1, 1}, {1, 1} +}; + +static const u8 gUnknown_082162D4[][2] = +{ + {2, 6}, {23, 6}, {2, 12}, {23, 12}, {1, 6}, {22, 6}, {1, 12}, {22, 12} +}; + +static const u8 sBlenderSyncArrowsPos[][2] = +{ + {72, 32}, {168, 32}, {72, 128}, {168, 128} +}; + +static const u8 gUnknown_082162EC[3][4] = +{ + {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3} +}; + +static const u16 gUnknown_082162F8[] = {0, 0xC000, 0x4000, 0x8000}; +static const u8 gUnknown_08216300[] = {1, 1, 0}; +static const u8 gUnknown_08216303[] = {32, 224, 96, 160, 0}; + +static const TaskFunc gUnknown_08216308[] = +{ + sub_804F8C8, sub_804F9F4, sub_804FB1C +}; + +static const struct OamData sOamData_8216314 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821631C[] = +{ + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216324[] = +{ + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821632C[] = +{ + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216334[] = +{ + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821633C[] = +{ + ANIMCMD_FRAME(48, 2, 1, 1), + ANIMCMD_FRAME(32, 5, 1, 1), + ANIMCMD_FRAME(48, 3, 1, 1), + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216350[] = +{ + ANIMCMD_FRAME(48, 2, .vFlip = TRUE), + ANIMCMD_FRAME(32, 5, .vFlip = TRUE), + ANIMCMD_FRAME(48, 3, .vFlip = TRUE), + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216364[] = +{ + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 5, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216378[] = +{ + ANIMCMD_FRAME(48, 2, 0, 0), + ANIMCMD_FRAME(32, 5, 0, 0), + ANIMCMD_FRAME(48, 3, 0, 0), + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821638C[] = +{ + ANIMCMD_FRAME(0, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216394[] = +{ + ANIMCMD_FRAME(0, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821639C[] = +{ + ANIMCMD_FRAME(0, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82163A4[] = +{ + ANIMCMD_FRAME(0, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82163AC[] = +{ + sSpriteAnim_821631C, + sSpriteAnim_8216324, + sSpriteAnim_821632C, + sSpriteAnim_8216334, + sSpriteAnim_821633C, + sSpriteAnim_8216350, + sSpriteAnim_8216364, + sSpriteAnim_8216378, + sSpriteAnim_821638C, + sSpriteAnim_8216394, + sSpriteAnim_821639C, + sSpriteAnim_82163A4 +}; + +static const struct SpriteSheet gUnknown_082163DC = +{ + gBerryBlenderArrowTiles, 0x800, 46545 +}; + +static const struct SpritePalette gUnknown_082163E4 = +{ + gBerryBlenderMiscPalette, 46546 +}; + +static const struct SpritePalette gUnknown_082163EC = +{ + gBerryBlenderArrowPalette, 12312 +}; + +static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate = +{ + .tileTag = 46545, + .paletteTag = 12312, + .oam = &sOamData_8216314, + .anims = sSpriteAnimTable_82163AC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8051C04 +}; + +static const struct OamData sOamData_821640C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216414[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821641C[] = +{ + ANIMCMD_FRAME(4, 20, 1, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216424[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821643C[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216444[] = +{ + sSpriteAnim_8216414, + sSpriteAnim_821641C, + sSpriteAnim_8216424, + sSpriteAnim_821643C, +}; + +static const struct SpriteSheet gUnknown_08216454 = +{ + gBerryBlenderMarubatsuTiles, 0x200, 48888 +}; + +static const struct SpriteTemplate sSpriteTemplate_821645C = +{ + .tileTag = 48888, + .paletteTag = 46546, + .oam = &sOamData_821640C, + .anims = sSpriteAnimTable_8216444, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8051650 +}; + +static const struct OamData sOamData_8216474 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821647C[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(3, 5), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216494[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164AC[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D0[] = +{ + ANIMCMD_FRAME(5, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D8[] = +{ + ANIMCMD_FRAME(6, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82164E0[] = +{ + sSpriteAnim_821647C, + sSpriteAnim_8216494, + sSpriteAnim_82164AC, + sSpriteAnim_82164D0, + sSpriteAnim_82164D8, +}; + +static const struct SpriteSheet gUnknown_082164F4 = +{ + gBerryBlenderParticlesTiles, 0xE0, 23456 +}; + +static const struct SpriteTemplate sSpriteTemplate_82164FC = +{ + .tileTag = 23456, + .paletteTag = 46546, + .oam = &sOamData_8216474, + .anims = sSpriteAnimTable_82164E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct OamData sOamData_8216514 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821651C[] = +{ + ANIMCMD_FRAME(32, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216524[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821652C[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216534[] = +{ + sSpriteAnim_821651C, + sSpriteAnim_8216524, + sSpriteAnim_821652C, +}; + +static const struct SpriteSheet gUnknown_08216540 = +{ + gBerryBlenderCountdownNumbersTiles, 0x600, 12345 +}; + +static const struct SpriteTemplate sSpriteTemplate_8216548 = +{ + .tileTag = 12345, + .paletteTag = 46546, + .oam = &sOamData_8216514, + .anims = sSpriteAnimTable_8216534, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_805181C +}; + +static const struct OamData sOamData_8216560 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216568[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216570[] = +{ + sSpriteAnim_8216568, +}; + +static const struct SpriteSheet gUnknown_08216574 = +{ + gBerryBlenderStartTiles, 0x400, 12346 +}; + +static const struct SpriteTemplate sSpriteTemplate_821657C = +{ + .tileTag = 12346, + .paletteTag = 46546, + .oam = &sOamData_8216560, + .anims = sSpriteAnimTable_8216570, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80518CC +}; + +static const s16 gUnknown_08216594[][5] = +{ + {-10, 20, 10, 2, 1}, + {250, 20, 10, -2, 1}, + {-10, 140, 10, 2, -1}, + {250, 140, 10, -2, -1}, +}; + +static const u8 gUnknown_082165BC[][3] = +{ + {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2}, +}; + +static const u8 gUnknown_082165DA[] = {1, 1, 2, 3, 4}; +static const u8 gUnknown_082165DF[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15}; +static const u8 gUnknown_082165E9[] = {6, 6, 6, 6, 5}; +static const u8 gUnknown_082165EE[] = {3, 3, 3, 2, 2}; +static const u8 gUnknown_082165F3[] = {3, 3, 3, 3, 2}; + +static const u8 sText_Space[] = _(" "); +static const u8 sText_BPM[] = _("BPM"); +static const u8 sText_Dash[] = _("-"); +static const u8 sNewLineString_1[] = _("\n"); +static const u8 sNewLineString_2[] = _("\n"); + +static void Blender_ControlHitPitch(void) +{ + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (gBerryBlenderData->field_56 - 128) * 2); +} + +static void VBlankCB0_BerryBlender(void) +{ + sub_80514A4(); + sub_80514F0(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void VBlankCB1_BerryBlender(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static bool8 sub_804E2EC(void) +{ + switch (gBerryBlenderData->field_1) + { + case 0: + LZDecompressWram(gUnknown_08E6C100, &ewram[0x10000]); + gBerryBlenderData->field_1++; + break; + case 1: + { + const void* offsetRead = sBlenderCenterMap; + void* offsetWrite = (void*)(VRAM + 0x4000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x400); + LoadPalette(sBlenderCenterPal, 0, 0x100); + gBerryBlenderData->field_1++; + } + break; + case 2: + { + void* offsetRead = &ewram[0x10000]; + void* offsetWrite = (void*)(VRAM); + u32 size = 0x2000; + while (TRUE) + { + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + offsetRead += 0x1000; + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, offsetRead, offsetWrite, size); + break; + } + } + gBerryBlenderData->field_1++; + } + break; + case 3: + LZDecompressWram(gUnknown_08E6C920, &ewram[0x10000]); + gBerryBlenderData->field_1++; + break; + case 4: + LZDecompressWram(gUnknown_08E6D354, &ewram[0x13000]); + gBerryBlenderData->field_1++; + break; + case 5: + { + void* offsetRead = &ewram[0x10000]; + void* offsetWrite = (void*)(VRAM + 0xE000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + gBerryBlenderData->field_1++; + } + break; + case 6: + { + void* offsetRead = &ewram[0x11000]; + void* offsetWrite = (void*)(VRAM + 0xF000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + gBerryBlenderData->field_1++; + } + break; + case 7: + { + u16 i; + u16* palStore = (u16*)(&ewram[0x13000]); + void* offsetRead; + void* offsetWrite; + + for (i = 0; i < 640; i++) + { + *(palStore + i) |= 0x100; + } + offsetRead = &ewram[0x13000]; + offsetWrite = (void*)(VRAM + 0x6000); + DmaCopy16(3, offsetRead, offsetWrite, 0x500); + LoadPalette(sBlenderOuterPal, 0x80, 0x20); + gBerryBlenderData->field_1++; + } + break; + case 8: + LoadSpriteSheet(&gUnknown_082163DC); + LoadSpriteSheet(&gUnknown_082164F4); + LoadSpriteSheet(&gUnknown_08216454); + gBerryBlenderData->field_1++; + break; + case 9: + LoadSpriteSheet(&gUnknown_08216540); + LoadSpriteSheet(&gUnknown_08216574); + LoadSpritePalette(&gUnknown_082163EC); + LoadSpritePalette(&gUnknown_082163E4); + gBerryBlenderData->field_1 = 0; + return TRUE; + } + return FALSE; +} + +static void sub_804E4FC(void) +{ + REG_DISPCNT = 0x1341; + REG_BG2CNT = 0x4880; + REG_BG1CNT = 0xC0D; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; +} + +void sub_804E538(void) +{ + u8* field6F; //this temp value is needed to match + + gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + + field6F = &gBerryBlenderData->field_6F; + gBerryBlenderData->field_0 = 0; + *field6F = 0; + + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + SetMainCallback2(sub_804E56C); +} + +static void sub_804E56C(void) +{ + s32 i; + switch (gBerryBlenderData->field_0) + { + case 0: + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(NULL); + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + gBerryBlenderData->field_0++; + gBerryBlenderData->field_140 = 0; + gBerryBlenderData->field_13E = 0; + gBerryBlenderData->field_142 = 0x50; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_1 = 0; + sub_8051474(); + break; + case 1: + if (sub_804E2EC()) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[i]], i + 8); + } + SetVBlankCallback(VBlankCB0_BerryBlender); + gBerryBlenderData->field_0++; + } + break; + case 2: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sub_8051474(); + gBerryBlenderData->field_0++; + break; + case 3: + sub_804E4FC(); + if (!gPaletteFade.active) + { + gBerryBlenderData->field_0++; + } + break; + case 4: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15); + gBerryBlenderData->field_0++; + break; + case 5: + if (MenuUpdateWindowText()) + { + gBerryBlenderData->field_0++; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + break; + case 6: + if (!gPaletteFade.active) + { + sub_80A6978(); + gBerryBlenderData->field_0 = 0; + } + break; + } + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_804E738(struct Sprite* sprite) +{ + sprite->data1 += sprite->data6; + sprite->data2 -= sprite->data4; + sprite->data2 += sprite->data7; + sprite->data0 += sprite->data7; + sprite->data4--; + + if (sprite->data0 < sprite->data2) + { + sprite->data3 = sprite->data4 = sprite->data3 - 1; + if (++sprite->data5 > 3) + DestroySprite(sprite); + else + PlaySE(SE_TB_KARA); + } + sprite->pos1.x = sprite->data1; + sprite->pos1.y = sprite->data2; +} + +void sub_804E794(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + sprite->data0 = a3; + sprite->data1 = a2; + sprite->data2 = a3; + sprite->data3 = a4; + sprite->data4 = 10; + sprite->data5 = 0; + sprite->data6 = a5; + sprite->data7 = a6; + sprite->callback = sub_804E738; +} + +static void sub_804E7C0(u16 a0, u8 a1) +{ + u8 spriteID = sub_80A7DEC(a0 + 123, 0, 80, a1 & 1); + sub_804E794(&gSprites[spriteID], gUnknown_08216594[a1][0], gUnknown_08216594[a1][1], gUnknown_08216594[a1][2], gUnknown_08216594[a1][3], gUnknown_08216594[a1][4]); +} + +static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) +{ + const struct Berry *berryInfo = GetBerryInfo(itemID + 124); + berry->itemID = itemID; + StringCopy(berry->name, berryInfo->name); + berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy; + berry->flavours[FLAVOUR_DRY] = berryInfo->dry; + berry->flavours[FLAVOUR_SWEET] = berryInfo->sweet; + berry->flavours[FLAVOUR_BITTER] = berryInfo->bitter; + berry->flavours[FLAVOUR_SOUR] = berryInfo->sour; + berry->smoothness = berryInfo->smoothness; +} + +static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents) +{ + int i; + if (NoOfOpponents) + { + for (i = 0; i < 4; i++) + gLinkPlayers[i].language = GAME_LANGUAGE; + } + switch (NoOfOpponents) + { + case 0: + gInGameOpponentsNo = 0; + break; + case 1: + gInGameOpponentsNo = 1; + gBerryBlenderData->playersNo = 2; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + break; + case 2: + gInGameOpponentsNo = 2; + gBerryBlenderData->playersNo = 3; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]); + break; + case 3: + gInGameOpponentsNo = 3; + gBerryBlenderData->playersNo = 4; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]); + StringCopy(gLinkPlayers[3].name, sBlenderOpponentsNames[2]); + break; + } +} + +void sub_804E990(void) +{ + s32 i; + + REG_DISPCNT = 0; + gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + gBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_134 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->chosenItemID[i] = 0; + } + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + if (gSpecialVar_0x8004 == 0) + SetMainCallback2(sub_804E9F8); + else + SetMainCallback2(sub_804F378); +} + +static void sub_804E9F8(void) +{ + int i, j; + switch (gBerryBlenderData->field_0) + { + case 0: + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB0_BerryBlender); + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + gLinkType = 0x4422; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_4E = 0; + gBerryBlenderData->field_7E = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_70[i] = 0; + for (j = 0; j < 3; j++) + { + gBerryBlenderData->scores[i][j] = 0; + } + } + gBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_56 = 0; + gBerryBlenderData->arrowPos = 0; + gBerryBlenderData->max_RPM = 0; + gBerryBlenderData->field_1 = 0; + break; + case 1: + if (sub_804E2EC()) + { + gBerryBlenderData->field_0++; + sub_8051474(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + } + gBerryBlenderData->field_0++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gBerryBlenderData->field_0++; + break; + case 4: + sub_804E4FC(); + if (!gPaletteFade.active) + { + gBerryBlenderData->field_0++; + } + break; + case 5: + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrint(gOtherText_LinkStandby3, 1, 14); + gBerryBlenderData->field_0 = 8; + gBerryBlenderData->framesToWait = 0; + break; + case 8: + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C = 0; + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + memcpy(gBlockSendBuffer, &gBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); + sub_80084A4(); + gBerryBlenderData->framesToWait = 0; + break; + case 9: + if (sub_8007ECC()) + { + ResetBlockReceivedFlags(); + if (GetMultiplayerId() == 0) + sub_8007E9C(4); + gBerryBlenderData->field_0++; + } + break; + case 10: + if (++gBerryBlenderData->framesToWait > 20) + { + MenuZeroFillScreen(); + if (GetBlockReceivedStatus() == sub_8008198()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + memcpy(&gBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); + gBerryBlenderData->chosenItemID[i] = gBerryBlenderData->blendedBerries[i].itemID; + } + ResetBlockReceivedFlags(); + gBerryBlenderData->field_0++; + } + } + break; + case 11: + gBerryBlenderData->playersNo = GetLinkPlayerCount(); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_13C == gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]) + { + sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i); + break; + } + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C++; + break; + case 12: + if (++gBerryBlenderData->framesToWait > 60) + { + if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528; + } + else + gBerryBlenderData->field_0--; + gBerryBlenderData->framesToWait = 0; + } + break; + case 13: + if (sub_8007ECC()) + { + gBerryBlenderData->field_0++; + sub_8051414(&gBerryBlenderData->field_168); + } + break; + case 14: + REG_DISPCNT |= 0x400; + gBerryBlenderData->arrowPos += 0x200; + gBerryBlenderData->field_142 += 4; + if (gBerryBlenderData->field_142 > 255) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->field_142 = 256; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; + REG_BG2CNT = 0x4882; + gBerryBlenderData->framesToWait = 0; + sub_804F238(); + sub_804F2A8(); + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 15: + if (sub_8051B8C()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 16: + CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3); + gBerryBlenderData->field_0++; + break; + case 18: + gBerryBlenderData->field_0++; + break; + case 19: + sub_80084A4(); + gBerryBlenderData->field_0++; + break; + case 20: + if (sub_8007ECC()) + { + sub_8007E24(); + gBerryBlenderData->field_0++; + } + break; + case 21: + gBerryBlenderData->field_56 = 128; + gBerryBlenderData->gameFrameTime = 0; + SetMainCallback2(sub_80501FC); + if (GetCurrentMapMusic() != 403) + { + gBerryBlenderData->field_178 = GetCurrentMapMusic(); + } + PlayBGM(BGM_CYCLING); + break; + case 100: + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrintMessage(gOtherText_LinkNotFound, 1, 15); + gBerryBlenderData->field_0++; + break; + case 101: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_0++; + break; + case 102: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804F0F4(void) +{ + REG_DISPCNT = 0; + + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + + SetVBlankCallback(VBlankCB0_BerryBlender); + + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + + gLinkType = 0x4422; + + gBerryBlenderData->field_4E = 0; + gBerryBlenderData->field_56 = 0; + gBerryBlenderData->arrowPos = 0; + gBerryBlenderData->max_RPM = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_0++; +} + +static u8 sub_804F16C(u16 arrowPos, u8 a1) +{ + u32 var1 = (arrowPos / 256) + 24; + u8 arrID = gBerryBlenderData->field_A2[a1]; + u32 var2 = gUnknown_08216303[arrID]; + + if (var1 >= var2 && var1 < var2 + 48) + { + if (var1 >= var2 + 20 && var1 < var2 + 28) + return 2; + else + return 1; + } + else + return 0; +} + +static void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry) +{ + u16 r4 = 0; + u16 i; + if (itemID == ITEM_ENIGMA_BERRY) + { + for (i = 0; i < 5; i++) + { + if (berry->flavours[r4] > berry->flavours[i]) + r4 = i; + } + r4 += 5; + } + else + { + r4 = itemID - 133; + if (r4 >= 5) + r4 = (r4 % 5) + 5; + } + for (i = 0; i < a1 - 1; i++) + { + Blender_SetBankBerryData(i + 1, gUnknown_082165BC[r4][i] + 133); + } +} + +static void sub_804F238(void) +{ + s32 i, j; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_A2[i] = 0xFF; + gBerryBlenderData->field_9A[i] = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]; + } + for (j = 0; j < BLENDER_MAX_PLAYERS; j++) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_9A[i] == j) + gBerryBlenderData->field_A2[j] = i; + } + } +} + +static void sub_804F2A8(void) +{ + int i; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_9A[i] != 0xFF) + { + u8* stringPtr = gStringVar1; + + gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]] = gBerryBlenderData->SyncArrowSprite2ID[i]; + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]]], i); + if (GetMultiplayerId() == gBerryBlenderData->field_9A[i]) + stringPtr = StringCopy(stringPtr, sRedColorString); + StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name); + MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); + } + } +} + +static void sub_804F378(void) +{ + s32 i, j; + switch (gBerryBlenderData->field_0) + { + case 0: + sub_804F0F4(); + Blender_SetBankBerryData(0, gScriptItemId); + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + sub_804F1BC(gScriptItemId, gBerryBlenderData->playersNo, &gBerryBlenderData->blendedBerries[0]); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_70[i] = 0; + for (j = 0; j < 3; j++) + { + gBerryBlenderData->scores[i][j] = 0; + } + } + gBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_1 = 0; + break; + case 1: + if (sub_804E2EC()) + { + gBerryBlenderData->field_0++; + sub_8051474(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + } + gBerryBlenderData->field_0++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + break; + case 4: + if (++gBerryBlenderData->framesToWait == 2) + sub_804E4FC(); + if (!gPaletteFade.active) + gBerryBlenderData->field_0 = 8; + break; + case 8: + gBerryBlenderData->field_0 = 11; + gBerryBlenderData->field_13C = 0; + break; + case 11: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + u32 var = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]; + if (gBerryBlenderData->field_13C == var) + { + sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i); + break; + } + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C++; + break; + case 12: + if (++gBerryBlenderData->framesToWait > 60) + { + if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo) + { + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528; + gBerryBlenderData->field_0++; + } + else + gBerryBlenderData->field_0--; + gBerryBlenderData->framesToWait = 0; + } + break; + case 13: + gBerryBlenderData->field_0++; + sub_804F238(); + PlaySE(SE_RU_HYUU); + sub_8051414(&gBerryBlenderData->field_168); + break; + case 14: + REG_DISPCNT |= 0x400; + gBerryBlenderData->arrowPos += 0x200; + gBerryBlenderData->field_142 += 4; + if (gBerryBlenderData->field_142 > 255) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->field_142 = 256; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; + REG_BG2CNT = 0x4882; + gBerryBlenderData->framesToWait = 0; + PlaySE(SE_TRACK_DOOR);; + sub_804F2A8(); + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 15: + if (sub_8051B8C()) + { + gBerryBlenderData->field_0++; + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 16: + CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3); + gBerryBlenderData->field_0++; + break; + case 18: + gBerryBlenderData->field_0++; + break; + case 19: + gBerryBlenderData->field_0++; + break; + case 20: + gBerryBlenderData->field_0++; + break; + case 21: + sub_804F81C(); + gBerryBlenderData->field_56 = 128; + gBerryBlenderData->gameFrameTime = 0; + gBerryBlenderData->field_14B = 0; + gBerryBlenderData->field_7E = 0; + SetMainCallback2(sub_80501FC); + + for (i = 0; i < gSpecialVar_0x8004; i++) + { + gBerryBlenderData->field_148[i] = CreateTask(gUnknown_08216308[i], 10 + i); + } + + if (GetCurrentMapMusic() != 403) + { + gBerryBlenderData->field_178 = GetCurrentMapMusic(); + } + PlayBGM(BGM_CYCLING); + PlaySE(SE_MOTER); + Blender_ControlHitPitch(); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804F81C(void) +{ + s32 i; + for (i = 0; i < 4; i++) + { + gSendCmd[0] = 0; + gSendCmd[2] = 0; + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } +} + +static void sub_804F844(u8 taskID) +{ + if(++gTasks[taskID].data[0] > gTasks[taskID].data[1]) + { + gRecvCmds[2][gTasks[taskID].data[2]] = 0x2345; + DestroyTask(taskID); + } +} + +static void sub_804F890(u8 a0, u8 a1) +{ + u8 taskID = CreateTask(sub_804F844, 80); + gTasks[taskID].data[1] = a1; + gTasks[taskID].data[2] = a0; +} + +static void sub_804F8C8(u8 taskID) +{ + if (sub_804F16C(gBerryBlenderData->arrowPos, 1) == 2) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = Random() / 655; + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 75) + gRecvCmds[2][1] = 0x4523; + else + gRecvCmds[2][1] = 0x5432; + gRecvCmds[2][1] = 0x5432; // ??? + } + else if (gBerryBlenderData->field_56 < 1500) + { + if (rand > 80) + gRecvCmds[2][1] = 0x4523; + else + { + u8 value = rand - 21; + if (value < 60) + gRecvCmds[2][1] = 0x5432; + else if (rand < 10) + sub_804F890(1, 5); + } + } + else if (rand <= 90) + { + u8 value = rand - 71; + if (value < 20) + gRecvCmds[2][1] = 0x5432; + else if (rand < 30) + sub_804F890(1, 5); + } + else + gRecvCmds[2][1] = 0x4523; + } + else + gRecvCmds[2][1] = 0x4523; + + gTasks[taskID].data[0] = 1; + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804F9F4(u8 taskID) +{ + u32 var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + u32 var2 = gBerryBlenderData->field_A2[2] & 0xFF; + if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = Random() / 655; + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 66) + gRecvCmds[2][2] = 0x4523; + else + gRecvCmds[2][2] = 0x5432; + } + else + { + u8 value; + if (rand > 65) + gRecvCmds[2][2] = 0x4523; + value = rand - 41; + if (value < 25) + gRecvCmds[2][2] = 0x5432; + if (rand < 10) + sub_804F890(2, 5); + } + + gTasks[taskID].data[0] = 1; + } + else + { + gRecvCmds[2][2] = 0x4523; + gTasks[taskID].data[0] = 1; + } + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804FB1C(u8 taskID) +{ + u32 var1, var2; + + var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + var2 = gBerryBlenderData->field_A2[3] & 0xFF; + if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = (Random() / 655); + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 88) + gRecvCmds[2][3] = 0x4523; + else + gRecvCmds[2][3] = 0x5432; + } + else + { + if (rand > 60) + gRecvCmds[2][3] = 0x4523; + else + { + s8 value = rand - 56; // makes me wonder what the original code was + u8 value2 = value; + if (value2 < 5) + gRecvCmds[2][3] = 0x5432; + } + if (rand < 5) + sub_804F890(3, 5); + } + gTasks[taskID].data[0] = 1; + } + else + { + gRecvCmds[2][3] = 0x4523; + gTasks[taskID].data[0] = 1; + } + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804FC48(u16 a0, u8 a1) +{ + u8 spriteID; + + spriteID = CreateSprite(&sSpriteTemplate_821645C, + sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_082162CC[a1][0]), + sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_082162CC[a1][1]), + 1); + if (a0 == 0x4523) + { + StartSpriteAnim(&gSprites[spriteID], 2); + gSprites[spriteID].callback = sub_8051684; + PlaySE(SE_RU_GASHIN); + } + else if (a0 == 0x5432) + { + StartSpriteAnim(&gSprites[spriteID], 0); + PlaySE(SE_SEIKAI); + } + else if (a0 == 0x2345) + { + StartSpriteAnim(&gSprites[spriteID], 1); + PlaySE(SE_HAZURE); + } + sub_805156C(); +} + +static void sub_804FD30(u16 a0) +{ + Blender_ControlHitPitch(); + switch (a0) + { + case 0x4523: + if (gBerryBlenderData->field_56 < 1500) + gBerryBlenderData->field_56 += (384 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + else + { + gBerryBlenderData->field_56 += (128 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + sub_8051AC8(&gBerryBlenderData->field_144, (gBerryBlenderData->field_56 / 100) - 10); + sub_8051AC8(&gBerryBlenderData->field_146, (gBerryBlenderData->field_56 / 100) - 10); + } + break; + case 0x5432: + if (gBerryBlenderData->field_56 < 1500) + gBerryBlenderData->field_56 += (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + break; + case 0x2345: + gBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + if (gBerryBlenderData->field_56 < 128) + gBerryBlenderData->field_56 = 128; + break; + } +} + +static void sub_804FE70(void) +{ + s32 i; + + if (gSpecialVar_0x8004 != 0) + { + if (gSendCmd[2] != 0) + { + gRecvCmds[2][0] = gSendCmd[2]; + gRecvCmds[0][0] = 0x4444; + gSendCmd[2] = 0; + } + for (i = 1; i < 4; i++) + { + if (gRecvCmds[2][i] != 0) + gRecvCmds[0][i] = 0x4444; + } + } + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + if (gRecvCmds[0][i] == 0x4444) + { + u32 var = gBerryBlenderData->field_A2[i]; + if (gRecvCmds[2][i] == 0x4523) + { + sub_804FD30(0x4523); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 55); + if (gBerryBlenderData->field_13E >= 1000) + gBerryBlenderData->field_13E = 1000; + sub_804FC48(0x4523, var); + gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; + } + else if (gRecvCmds[2][i] == 0x5432) + { + sub_804FD30(0x5432); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 70); + sub_804FC48(0x5432, var); + gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; + } + else if (gRecvCmds[2][i] == 0x2345) + { + sub_804FC48(0x2345, var); + sub_804FD30(0x2345); + if (gBerryBlenderData->field_4.win_field_F > 1000) + gBerryBlenderData->field_13E = 1000; + if (gBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) + gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; + } + if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) + { + if (gBerryBlenderData->field_56 > 1500) + m4aMPlayTempoControl(&gMPlay_BGM, ((gBerryBlenderData->field_56 - 750) / 20) + 256); + else + m4aMPlayTempoControl(&gMPlay_BGM, 256); + } + } + } + if (gSpecialVar_0x8004 != 0) + { + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } + } +} + +static void sub_80500A8(void) +{ + bool8 A_pressed = 0; + u8 var2 = gBerryBlenderData->field_A2[GetMultiplayerId()]; + if (gBerryBlenderData->field_6F == 0) + { + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON) + A_pressed = ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON)); + else if (gMain.newKeys & A_BUTTON) + A_pressed = 1; + if (A_pressed) + { + u8 var3; + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[var2]]], var2 + 4); + var3 = sub_804F16C(gBerryBlenderData->arrowPos, GetMultiplayerId()); + if (var3 == 2) + gSendCmd[2] = 0x4523; + else if (var3 == 1) + gSendCmd[2] = 0x5432; + else + gSendCmd[2] = 0x2345; + } + } + if (++gBerryBlenderData->field_7E > 5) + { + if (gBerryBlenderData->field_56 > 128) + gBerryBlenderData->field_56--; + gBerryBlenderData->field_7E = 0; + } + if (gUnknown_020297ED && gMain.newKeys & L_BUTTON) + gBerryBlenderData->field_14B ^= 1; +} + +static void sub_80501FC(void) +{ + sub_8051474(); + if (gBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits + gBerryBlenderData->gameFrameTime++; + sub_80500A8(); + SetLinkDebugValues((u16)(gBerryBlenderData->field_56), gBerryBlenderData->field_13E); + sub_804FE70(); + sub_805194C(gBerryBlenderData->field_13E, 1000); + sub_8051A3C(gBerryBlenderData->field_56); + sub_8051B18(); + sub_805123C(); + if (gBerryBlenderData->field_6F == 0 && gBerryBlenderData->field_140 >= 1000) + { + gBerryBlenderData->field_13E = 1000; + gBerryBlenderData->field_6F = 1; + SetMainCallback2(sub_8050954); + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2) +{ + if (berries[index1].itemID != berries[index2].itemID + || (StringCompare(berries[index1].name, berries[index2].name) == 0 + && (berries[index1].flavours[0] == berries[index2].flavours[0] + && berries[index1].flavours[1] == berries[index2].flavours[1] + && berries[index1].flavours[2] == berries[index2].flavours[2] + && berries[index1].flavours[3] == berries[index2].flavours[3] + && berries[index1].flavours[4] == berries[index2].flavours[4] + && berries[index1].smoothness == berries[index2].smoothness))) + return TRUE; + else + return FALSE; +} + +u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3) +{ + s16 vars[5]; + s32 i; + s32 r6; + u8 r2; + + for (i = 0; i <= 5; i++) // bug, writing one index too far + vars[i] = a1[i]; + r6 = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] == 0) + r6++; + } + if (r6 == 5 || a3 > 3) + return 12; + for (i = 0; i < playersNo; i++) + { + for (r6 = 0; r6 < playersNo; r6++) + { + if (berries[i].itemID == berries[r6].itemID && i != r6 + && (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6))) + return 12; + } + } + r2 = 0; + for (r2 = 0, i = 0; i < 5; i++) + { + if (vars[i] > 0) + r2++; + } + if (r2 > 3) + return 13; + if (r2 == 3) + return 11; + for (i = 0; i < 5; i++) + { + if (vars[i] > 50) + return 14; + } + if (r2 == 1 && vars[0] > 0) + return 1; + if (r2 == 1 && vars[1] > 0) + return 2; + if (r2 == 1 && vars[2] > 0) + return 3; + if (r2 == 1 && vars[3] > 0) + return 4; + if (r2 == 1 && vars[4] > 0) + return 5; + if (r2 == 2) + { + s32 var = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] > 0) + gUnknown_03000520[var++] = i; + } + if (vars[gUnknown_03000520[0]] >= vars[gUnknown_03000520[1]]) + { + if (gUnknown_03000520[0] == 0) + return (gUnknown_03000520[1] << 16) | 6; + if (gUnknown_03000520[0] == 1) + return (gUnknown_03000520[1] << 16) | 7; + if (gUnknown_03000520[0] == 2) + return (gUnknown_03000520[1] << 16) | 8; + if (gUnknown_03000520[0] == 3) + return (gUnknown_03000520[1] << 16) | 9; + if (gUnknown_03000520[0] == 4) + return (gUnknown_03000520[1] << 16) | 10; + } + else + { + if (gUnknown_03000520[1] == 0) + return (gUnknown_03000520[0] << 16) | 6; + if (gUnknown_03000520[1] == 1) + return (gUnknown_03000520[0] << 16) | 7; + if (gUnknown_03000520[1] == 2) + return (gUnknown_03000520[0] << 16) | 8; + if (gUnknown_03000520[1] == 3) + return (gUnknown_03000520[0] << 16) | 9; + if (gUnknown_03000520[1] == 4) + return (gUnknown_03000520[0] << 16) | 10; + } + } + return 0; +} + +static void sub_80504F0(s16 value) +{ + gUnknown_0300052C = value; +} + +s16 unref_sub_80504FC(void) +{ + return gUnknown_0300052C; +} + +static void sub_8050508(s16 value) +{ + gUnknown_0300052E = value; +} + +s16 unref_sub_8050514(void) +{ + return gUnknown_0300052E; +} + +#ifdef NONMATCHING + +static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 maxRPM) +{ + s32 i; + s32 j; + s32 savedEntry; + s32 var3; + s32 var4; + u32 var6; + s32 var11; + u16 rand; + + for (i = 0; i < 6; i++) + gUnknown_03000510[i] = 0; + for (i = 0; i < playersNo; i++) + { + for (j = 0; j < 5; j++) + gUnknown_03000510[j] += berries[i].flavours[j]; + } + + savedEntry = gUnknown_03000510[0]; + gUnknown_03000510[0] -= gUnknown_03000510[1]; + gUnknown_03000510[1] -= gUnknown_03000510[2]; + gUnknown_03000510[2] -= gUnknown_03000510[3]; + gUnknown_03000510[3] -= gUnknown_03000510[4]; + gUnknown_03000510[4] -= savedEntry; + + var6 = 0; + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] < 0) + { + gUnknown_03000510[i] = 0; + var6++; + } + } + for (i = 0; i < 5; i++) + { + if (gUnknown_03000510[i] > 0) + { + if (gUnknown_03000510[i] < var6) + gUnknown_03000510[i] = 0; + else + gUnknown_03000510[i] -= var6; + } + } + for (i = 0; i < 5; i++) + { + gUnknown_03000530[i] = gUnknown_03000510[i]; + } + + var11 = maxRPM / 333 + 100; + gUnknown_0300055C = ((var11)); + + for (i = 0; i < 5; i++) + { + var3 = gUnknown_03000510[i]; + var3 = ((var11) * var3) / 10; + var4 = var3 % 10; + var3 /= 10; + if (var4 > 4) + var3++; + gUnknown_03000510[i] = var3; + } + for (i = 0; i < 5; i++) + { + gUnknown_03000548[i] = gUnknown_03000510[i]; + } + pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, var6); + gUnknown_03000510[5] = (gUnknown_03000510[5] / playersNo) - playersNo; + if (gUnknown_03000510[5] < 0) + gUnknown_03000510[5] = 0; + if (pokeblock->color == 12) + { + rand = Random() % 10; + for (i = 0; i < 6; i++) + { + if ((gUnknown_082165DF[rand] >> i) & 1) + gUnknown_03000510[i] = 2; + else + gUnknown_03000510[i] = 0; + } + } + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] > 255) + gUnknown_03000510[i] = 255; + } + pokeblock->spicy = gUnknown_03000510[0]; + pokeblock->dry = gUnknown_03000510[1]; + pokeblock->sweet = gUnknown_03000510[2]; + pokeblock->bitter = gUnknown_03000510[3]; + pokeblock->sour = gUnknown_03000510[4]; + pokeblock->feel = gUnknown_03000510[5]; + for (i = 0; i < 6; i++) + { + flavours[i] = gUnknown_03000510[i]; + } +} + +#else +__attribute__((naked)) +static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* flavours, u16 a4) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x10\n\ + str r0, [sp]\n\ + mov r8, r1\n\ + str r3, [sp, 0x4]\n\ + ldr r0, [sp, 0x30]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + mov r9, r2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + ldr r7, _080505DC @ =gUnknown_03000510\n\ + adds r2, r7, 0\n\ + movs r1, 0\n\ + adds r0, r7, 0\n\ + adds r0, 0xA\n\ +_0805054A:\n\ + strh r1, [r0]\n\ + subs r0, 0x2\n\ + cmp r0, r2\n\ + bge _0805054A\n\ + movs r6, 0\n\ + cmp r6, r9\n\ + bge _08050580\n\ + ldr r0, _080505DC @ =gUnknown_03000510\n\ + mov r12, r0\n\ + ldr r5, [sp]\n\ + adds r5, 0x9\n\ +_08050560:\n\ + movs r3, 0\n\ + adds r4, r5, 0\n\ + mov r2, r12\n\ +_08050566:\n\ + adds r1, r4, r3\n\ + ldrh r0, [r2]\n\ + ldrb r1, [r1]\n\ + adds r0, r1\n\ + strh r0, [r2]\n\ + adds r2, 0x2\n\ + adds r3, 0x1\n\ + cmp r3, 0x5\n\ + ble _08050566\n\ + adds r5, 0x10\n\ + adds r6, 0x1\n\ + cmp r6, r9\n\ + blt _08050560\n\ +_08050580:\n\ + movs r1, 0\n\ + ldrsh r3, [r7, r1]\n\ + ldrh r0, [r7]\n\ + ldrh r1, [r7, 0x2]\n\ + subs r0, r1\n\ + strh r0, [r7]\n\ + ldrh r0, [r7, 0x4]\n\ + subs r1, r0\n\ + strh r1, [r7, 0x2]\n\ + ldrh r1, [r7, 0x6]\n\ + subs r0, r1\n\ + strh r0, [r7, 0x4]\n\ + ldrh r0, [r7, 0x8]\n\ + subs r1, r0\n\ + strh r1, [r7, 0x6]\n\ + subs r0, r3\n\ + strh r0, [r7, 0x8]\n\ + movs r3, 0\n\ + movs r2, 0\n\ + adds r1, r7, 0\n\ + movs r6, 0x4\n\ +_080505AA:\n\ + movs r4, 0\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0\n\ + bge _080505B6\n\ + strh r2, [r1]\n\ + adds r3, 0x1\n\ +_080505B6:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505AA\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + movs r4, 0\n\ + ldr r1, _080505DC @ =gUnknown_03000510\n\ + movs r6, 0x4\n\ +_080505CA:\n\ + ldrh r2, [r1]\n\ + movs r5, 0\n\ + ldrsh r0, [r1, r5]\n\ + cmp r0, 0\n\ + ble _080505E4\n\ + cmp r0, r3\n\ + bge _080505E0\n\ + strh r4, [r1]\n\ + b _080505E4\n\ + .align 2, 0\n\ +_080505DC: .4byte gUnknown_03000510\n\ +_080505E0:\n\ + subs r0, r2, r3\n\ + strh r0, [r1]\n\ +_080505E4:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505CA\n\ + ldr r1, _080506C4 @ =gUnknown_03000510\n\ + ldr r2, _080506C8 @ =gUnknown_03000530\n\ + movs r6, 0x4\n\ +_080505F2:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + stm r2!, {r0}\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505F2\n\ + ldr r1, _080506CC @ =0x0000014d\n\ + ldr r0, [sp, 0x8]\n\ + bl __udivsi3\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r3, r0, 0\n\ + adds r3, 0x64\n\ + ldr r4, _080506D0 @ =gUnknown_0300055C\n\ + str r3, [r4]\n\ + movs r6, 0x4\n\ +_08050616:\n\ + movs r0, 0\n\ + ldrsh r5, [r7, r0]\n\ + adds r0, r5, 0\n\ + muls r0, r3\n\ + movs r1, 0xA\n\ + str r3, [sp, 0xC]\n\ + bl __divsi3\n\ + adds r5, r0, 0\n\ + movs r1, 0xA\n\ + bl __modsi3\n\ + adds r4, r0, 0\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + adds r5, r0, 0\n\ + ldr r3, [sp, 0xC]\n\ + cmp r4, 0x4\n\ + ble _08050642\n\ + adds r5, 0x1\n\ +_08050642:\n\ + strh r5, [r7]\n\ + adds r7, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _08050616\n\ + ldr r1, _080506C4 @ =gUnknown_03000510\n\ + ldr r2, _080506D4 @ =gUnknown_03000548\n\ + movs r6, 0x4\n\ +_08050652:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + stm r2!, {r0}\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _08050652\n\ + ldr r4, _080506C4 @ =gUnknown_03000510\n\ + ldr r0, [sp]\n\ + adds r1, r4, 0\n\ + mov r2, r9\n\ + mov r3, r10\n\ + bl Blender_GetPokeblockColor\n\ + mov r5, r8\n\ + strb r0, [r5]\n\ + movs r1, 0xA\n\ + ldrsh r0, [r4, r1]\n\ + mov r1, r9\n\ + bl __divsi3\n\ + mov r3, r9\n\ + subs r0, r3\n\ + strh r0, [r4, 0xA]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bge _0805068C\n\ + movs r0, 0\n\ + strh r0, [r4, 0xA]\n\ +_0805068C:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + cmp r0, 0xC\n\ + bne _080506E6\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + movs r6, 0\n\ + ldr r0, _080506D8 @ =gUnknown_082165DF\n\ + adds r0, r3, r0\n\ + ldrb r0, [r0]\n\ + adds r1, r4, 0\n\ + movs r4, 0x1\n\ + movs r3, 0x2\n\ +_080506B4:\n\ + adds r2, r0, 0\n\ + asrs r2, r6\n\ + ands r2, r4\n\ + cmp r2, 0\n\ + beq _080506DC\n\ + strh r3, [r1]\n\ + b _080506DE\n\ + .align 2, 0\n\ +_080506C4: .4byte gUnknown_03000510\n\ +_080506C8: .4byte gUnknown_03000530\n\ +_080506CC: .4byte 0x0000014d\n\ +_080506D0: .4byte gUnknown_0300055C\n\ +_080506D4: .4byte gUnknown_03000548\n\ +_080506D8: .4byte gUnknown_082165DF\n\ +_080506DC:\n\ + strh r2, [r1]\n\ +_080506DE:\n\ + adds r1, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x4\n\ + ble _080506B4\n\ +_080506E6:\n\ + ldr r7, _08050740 @ =gUnknown_03000510\n\ + movs r2, 0xFF\n\ + adds r1, r7, 0\n\ + movs r6, 0x5\n\ +_080506EE:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0xFF\n\ + ble _080506F8\n\ + strh r2, [r1]\n\ +_080506F8:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080506EE\n\ + ldrh r0, [r7]\n\ + mov r4, r8\n\ + strb r0, [r4, 0x1]\n\ + ldrh r0, [r7, 0x2]\n\ + strb r0, [r4, 0x2]\n\ + ldrh r0, [r7, 0x4]\n\ + strb r0, [r4, 0x3]\n\ + ldrh r0, [r7, 0x6]\n\ + strb r0, [r4, 0x4]\n\ + ldrh r0, [r7, 0x8]\n\ + strb r0, [r4, 0x5]\n\ + ldrh r0, [r7, 0xA]\n\ + strb r0, [r4, 0x6]\n\ + movs r6, 0\n\ + adds r2, r7, 0\n\ +_0805071E:\n\ + ldr r5, [sp, 0x4]\n\ + adds r1, r5, r6\n\ + ldrh r0, [r2]\n\ + strb r0, [r1]\n\ + adds r2, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x5\n\ + ble _0805071E\n\ + add sp, 0x10\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08050740: .4byte gUnknown_03000510\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4) +{ + Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); +} + +static void sub_8050760(void) +{ + u32 frames = (u16)(gBerryBlenderData->gameFrameTime); + u16 max_RPM = gBerryBlenderData->max_RPM; + s16 var = 0; + + if (frames < 900) + var = 5; + else if ((u16)(frames - 900) < 600) + var = 4; + else if ((u16)(frames - 1500) < 600) + var = 3; + else if ((u16)(frames - 2100) < 900) + var = 2; + else if ((u16)(frames - 3300) < 300) + var = 1; + sub_8050508(var); + + var = 0; + if (max_RPM <= 64) + { + if (max_RPM >= 50 && max_RPM < 100) + var = -1; + else if (max_RPM >= 100 && max_RPM < 150) + var = -2; + else if (max_RPM >= 150 && max_RPM < 200) + var = -3; + else if (max_RPM >= 200 && max_RPM < 250) + var = -4; + else if (max_RPM >= 250 && max_RPM < 300) + var = -5; + else if (max_RPM >= 350 && max_RPM < 400) + var = -6; + else if (max_RPM >= 400 && max_RPM < 450) + var = -7; + else if (max_RPM >= 500 && max_RPM < 550) + var = -8; + else if (max_RPM >= 550 && max_RPM < 600) + var = -9; + else if (max_RPM >= 600) + var = -10; + } + sub_80504F0(var); +} + +static void sub_80508D4(u8 value) +{ + gBerryBlenderData->field_AA = value; + sub_814A880(192, (gBerryBlenderData->field_AA * 16) + 72); +} + +static void sub_80508FC(void) +{ + gBerryBlenderData->field_AA = 0; + MenuDrawTextWindow(23, 8, 28, 13); + sub_814A5C0(0, -1, 12, 0x2D9F, 32); + MenuPrint(gOtherText_YesNoTerminating, 24, 9); + sub_80508D4(gBerryBlenderData->field_AA); +} + +static void sub_8050954(void) +{ + u8 i; + u8 multiplayerID; // unused + + sub_8051474(); + multiplayerID = GetMultiplayerId(); + switch (gBerryBlenderData->field_6F) + { + case 1: + ClearLinkCallback(); + m4aMPlayTempoControl(&gMPlay_BGM, 256); + for (i = 0; i < gSpecialVar_0x8004; i++) + { + DestroyTask(gBerryBlenderData->field_148[i]); + } + gBerryBlenderData->field_6F++; + break; + case 2: + gBerryBlenderData->field_56 -= 32; + if (gBerryBlenderData->field_56 <= 0) + { + gBerryBlenderData->field_56 = 0; + if (gReceivedRemoteLinkPlayers != 0) + gBerryBlenderData->field_6F++; + else + gBerryBlenderData->field_6F = 5; + gBerryBlenderData->field_0 = 0; + m4aMPlayStop(&gMPlay_SE2); + } + Blender_ControlHitPitch(); + break; + case 3: + if (/*multiplayerID != 0*/ GetMultiplayerId() != 0) + gBerryBlenderData->field_6F++; + else if (sub_8007ECC()) + { + gBerryBlenderData->field_1BC = gBerryBlenderData->gameFrameTime; + gBerryBlenderData->field_1C0 = gBerryBlenderData->max_RPM; + SendBlock(0, &gBerryBlenderData->field_1BC, 40); + gBerryBlenderData->field_6F++; + } + break; + case 4: + if (GetBlockReceivedStatus()) + { + u32* ptr = ((u32*)(&gBlockRecvBuffer[0][0])); + gBerryBlenderData->max_RPM = gBlockRecvBuffer[0][2]; + gBerryBlenderData->gameFrameTime = *ptr; + gBerryBlenderData->field_6F++; + ResetBlockReceivedFlags(); + } + break; + case 5: + if (Blender_PrintBlendingRanking()) + gBerryBlenderData->field_6F++; + break; + case 6: + if (Blender_PrintBlendingResults()) + { + if (gInGameOpponentsNo == 0) + IncrementGameStat(34); + else + IncrementGameStat(33); + gBerryBlenderData->field_6F++; + } + break; + case 7: + gBerryBlenderData->field_6F++; + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15); + break; + case 8: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_6F++; + break; + case 9: + gBerryBlenderData->field_AA = 0; + sub_80508FC(); + gBerryBlenderData->field_6F++; + break; + case 10: + if (gMain.newKeys & DPAD_UP) + { + if (gBerryBlenderData->field_AA != 0) + PlaySE(SE_SELECT); + sub_80508D4(0); + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (gBerryBlenderData->field_AA != 1) + PlaySE(SE_SELECT); + sub_80508D4(1); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_6F++; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_6F++; + sub_80508D4(1); + } + break; + case 11: + gSendCmd[0] = 0x2FFF; + if (gBerryBlenderData->field_AA == 0) + { + if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // is empty + { + gBerryBlenderData->field_7C = 2; + gSendCmd[1] = 0x9999; + } + else if (sub_810CA00() == -1) + { + gBerryBlenderData->field_7C = 3; + gSendCmd[1] = 0xAAAA; + } + else + { + gBerryBlenderData->field_7C = 0; + gSendCmd[1] = 0x7779; + } + gBerryBlenderData->field_6F++; + } + else + { + gBerryBlenderData->field_7C = 1; + gSendCmd[1] = 0x8888; + gBerryBlenderData->field_6F++; + } + break; + case 12: + if (gInGameOpponentsNo) + { + SetMainCallback2(sub_80510E8); + gBerryBlenderData->field_6F = 0; + gBerryBlenderData->field_0 = 0; + } + else + { + MenuPrintMessage(gOtherText_LinkStandby3, 1, 15); + gBerryBlenderData->field_6F++; + } + break; + case 13: + if (MenuUpdateWindowText()) + { + SetMainCallback2(sub_8050E30); + gBerryBlenderData->field_6F = 0; + gBerryBlenderData->field_0 = 0; + } + break; + } + sub_8051B18(); + sub_8051A3C(gBerryBlenderData->field_56); + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +bool8 sub_8050CE8(void) +{ + switch (gBerryBlenderData->field_1C4) + { + case 0: + sub_80084A4(); + gBerryBlenderData->field_1C4 = 1; + gBerryBlenderData->framesToWait = 0; + break; + case 1: + if (sub_8007ECC()) + { + gBerryBlenderData->field_1C4++; + gSoftResetDisabled = TRUE; + } + break; + case 2: + sub_8125E2C(); + gBerryBlenderData->field_1C4++; + gBerryBlenderData->framesToWait = 0; + break; + case 3: + if (++gBerryBlenderData->framesToWait == 10) + { + sub_80084A4(); + gBerryBlenderData->field_1C4++; + } + break; + case 4: + if (sub_8007ECC()) + { + if (sub_8125E6C()) + gBerryBlenderData->field_1C4 = 5; + else + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_1C4 = 3; + } + } + break; + case 5: + gBerryBlenderData->field_1C4++; + gBerryBlenderData->framesToWait = 0; + break; + case 6: + if (++gBerryBlenderData->framesToWait > 5) + { + gSoftResetDisabled = FALSE; + return TRUE; + } + break; + } + return FALSE; +} + +static void sub_8050E30(void) +{ + switch (gBerryBlenderData->field_6F) + { + case 0: + if (gBerryBlenderData->field_70[0] == 0x2222) + gBerryBlenderData->field_6F = 5; + else if (gBerryBlenderData->field_70[0] == 0x1111) + { + if (gBerryBlenderData->field_78 == 0x9999) + gBerryBlenderData->field_6F = 2; + else if (gBerryBlenderData->field_78 == 0xAAAA) + gBerryBlenderData->field_6F = 1; + else + gBerryBlenderData->field_6F = 5; + } + break; + case 1: + gBerryBlenderData->field_6F = 3; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); +#ifdef ENGLISH + StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); + StringAppend(gStringVar4, gOtherText_OtherCaseIsFull); +#else + StringCopy(gStringVar4, gOtherText_OtherCaseIsFull); + de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); +#endif + MenuPrintMessage(gStringVar4, 1, 15); + break; + case 2: + gBerryBlenderData->field_6F++; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); +#ifdef ENGLISH + StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); + StringAppend(gStringVar4, gOtherText_NoBerriesForBlend); +#else + StringCopy(gStringVar4, gOtherText_NoBerriesForBlend); + de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); +#endif + MenuPrintMessage(gStringVar4, 1, 15); + break; + case 3: + if (MenuUpdateWindowText()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + } + break; + case 4: + if (++gBerryBlenderData->framesToWait > 60) + gBerryBlenderData->field_6F = 5; + break; + case 5: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrint(gMultiText_Saving, 2, 15); + sub_80084A4(); + gBerryBlenderData->field_6F++; + break; + case 6: + if (sub_8007ECC()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + gBerryBlenderData->field_1C4 = 0; + } + break; + case 7: + if (sub_8050CE8()) + { + PlaySE(SE_SAVE); + gBerryBlenderData->field_6F++; + } + break; + case 8: + gBerryBlenderData->field_6F++; + sub_80084A4(); + break; + case 9: + if (sub_8007ECC()) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBerryBlenderData->field_6F++; + } + break; + case 10: + if (!gPaletteFade.active) + { + if (gBerryBlenderData->field_70[0] == 0x2222) + SetMainCallback2(sub_804E538); + else + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + } + } + break; + case 11: + if (++gBerryBlenderData->framesToWait > 30) + { + sub_800832C(); + gBerryBlenderData->field_6F++; + } + break; + case 12: + if (gReceivedRemoteLinkPlayers == 0) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + break; + } + + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_80510E8(void) +{ + switch (gBerryBlenderData->field_6F) + { + case 0: + if (gBerryBlenderData->field_7C < 2) + gBerryBlenderData->field_6F = 9; + if (gBerryBlenderData->field_7C == 2) + gBerryBlenderData->field_6F = 2; + if (gBerryBlenderData->field_7C == 3) + gBerryBlenderData->field_6F =1; + break; + case 1: + gBerryBlenderData->field_6F = 3; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + MenuPrintMessage(gOtherText_CaseIsFull, 1, 15); + break; + case 2: + gBerryBlenderData->field_6F++; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + MenuPrintMessage(gOtherText_OutOfBerries, 1, 15); + break; + case 3: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_6F = 9; + break; + case 9: + BeginFastPaletteFade(3); + gBerryBlenderData->field_6F++; + break; + case 10: + if (!gPaletteFade.active) + { + if (gBerryBlenderData->field_7C == 0) + SetMainCallback2(sub_804E538); + else + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } + break; + } + + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_805123C(void) +{ + if (gReceivedRemoteLinkPlayers) + { + if (gRecvCmds[0][0] == 0x2FFF) + { + if (gRecvCmds[1][0] == 0x1111) + { + switch (gRecvCmds[2][0]) + { + case 0x8888: + gBerryBlenderData->field_78 = 0x8888; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + case 0x9999: + gBerryBlenderData->field_78 = 0x9999; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + case 0xAAAA: + gBerryBlenderData->field_78 = 0xAAAA; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + } + gBerryBlenderData->field_70[0] = 0x1111; + } + else if (gRecvCmds[1][0] == 0x2222) + gBerryBlenderData->field_70[0] = 0x2222; + } + if (GetMultiplayerId() == 0 && gBerryBlenderData->field_70[0] != 0x1111 && gBerryBlenderData->field_70[0] != 0x2222) + { + u8 i; + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gRecvCmds[0][i] == 0x2FFF) + { + switch (gRecvCmds[1][i]) + { + case 0x8888: + gBerryBlenderData->field_70[i] = 0x8888; + break; + case 0x7779: + gBerryBlenderData->field_70[i] = 0x7779; + break; + case 0x9999: + gBerryBlenderData->field_70[i] = 0x9999; + break; + case 0xAAAA: + gBerryBlenderData->field_70[i] = 0xAAAA; + break; + } + } + } + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gBerryBlenderData->field_70[i] == 0) + break; + } + if (i == GetLinkPlayerCount()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gBerryBlenderData->field_70[i] != 0x7779) + break; + } + gSendCmd[0] = 0x2FFF; + if (i == GetLinkPlayerCount()) + gSendCmd[1] = 0x2222; + else + { + gSendCmd[1] = 0x1111; + gSendCmd[2] = gBerryBlenderData->field_70[i]; + gSendCmd[3] = i; + } + } + } + } +} + +static void sub_8051414(struct BgAffineDstData *dest) +{ + struct BgAffineSrcData affineSrc; + affineSrc.texX = 30720; + affineSrc.texY = 20480; + affineSrc.scrX = 120 - gBerryBlenderData->field_144; + affineSrc.scrY = 80 - gBerryBlenderData->field_146; + affineSrc.sx = gBerryBlenderData->field_142; + affineSrc.sy = gBerryBlenderData->field_142; + affineSrc.alpha = gBerryBlenderData->arrowPos; + BgAffineSet(&affineSrc, dest, 1); +} + +static void sub_8051474(void) +{ + gBerryBlenderData->field_58 = gBerryBlenderData->arrowPos; + gBerryBlenderData->arrowPos += gBerryBlenderData->field_56; + sub_8051414(&gBerryBlenderData->field_168); +} + +static void sub_80514A4(void) +{ + REG_BG2PA = gBerryBlenderData->field_168.pa; + REG_BG2PB = gBerryBlenderData->field_168.pb; + REG_BG2PC = gBerryBlenderData->field_168.pc; + REG_BG2PD = gBerryBlenderData->field_168.pd; + REG_BG2X = gBerryBlenderData->field_168.dx; + REG_BG2Y = gBerryBlenderData->field_168.dy; +} + +static void sub_80514F0(void) +{ + REG_BG1HOFS = gBerryBlenderData->field_144; + REG_BG1VOFS = gBerryBlenderData->field_146; + REG_BG0HOFS = gBerryBlenderData->field_144; + REG_BG0VOFS = gBerryBlenderData->field_146; +} + +void sub_8051524(struct Sprite* sprite) +{ + sprite->data2 += sprite->data0; + sprite->data3 += sprite->data1; + sprite->pos2.x = sprite->data2 / 8; + sprite->pos2.y = sprite->data3 / 8; + if (sprite->animEnded) + DestroySprite(sprite); +} + +static void sub_805156C(void) +{ + s32 limit = (Random() % 2) + 1; + s32 i; + + for (i = 0; i < limit; i++) + { + u16 rand; + s32 x, y; + u8 spriteID; + + rand = gBerryBlenderData->arrowPos + (Random() % 20); + + x = gSineTable[(rand & 0xFF) + 64] / 4; + y = gSineTable[(rand & 0xFF)] / 4; + + spriteID = CreateSprite(&sSpriteTemplate_82164FC, x + 120, y + 80, 1); + gSprites[spriteID].data0 = 16 - (Random() % 32); + gSprites[spriteID].data1 = 16 - (Random() % 32); + + gSprites[spriteID].callback = sub_8051524; + } +} + +static void sub_8051650(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 / 3); + if (sprite->animEnded) + DestroySprite(sprite); +} + +void sub_8051684(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 * 2); + if (sprite->pos2.y < -12) + sprite->pos2.y = -12; + if (sprite->animEnded) + DestroySprite(sprite); +} + +void Blender_SetBankBerryData(u8 bank, u16 itemID) +{ + gBerryBlenderData->chosenItemID[bank] = itemID; + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[bank], itemID); +} + +void unref_sub_80516F8(u8 taskID) +{ + struct Task* task = &gTasks[taskID]; + if (gReceivedRemoteLinkPlayers) + { + s32 i; + if (GetMultiplayerId() == 0) + { + if (++task->data[0] > 120) + task->data[0] = 0; + if (task->data[0] == 100) + { + ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); + MenuDrawTextWindow(4, 4, 10, 12); + for (i = 0; i < 3; i++) + { + if (gLinkPlayers[i + 1].trainerId != 0) + MenuPrint(gUnknown_08216284[i], 5, (2 * i) + 5); + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrint(gOtherText_PressAToStart, 1, 15); + } + } + if (gMain.newKeys & A_BUTTON) + { + sub_8007E4C(); + DestroyTask(taskID); + } + } + else + { + if (task->data[0] == 10) + MenuPrint(gOtherText_PleaseWait, 3, 10); + if (++task->data[0] > 120) + task->data[0] = 0; + if (byte_3002A68 > 4 && gReceivedRemoteLinkPlayers == 1) + DestroyTask(taskID); + } + } +} + +static void sub_805181C(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 88) + { + sprite->data1 = 88; + sprite->data0++; + PlaySE(SE_KON); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + { + sprite->data0++; + sprite->data2 = 0; + } + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + if (++sprite->data3 == 3) + { + DestroySprite(sprite); + CreateSprite(&sSpriteTemplate_821657C, 120, -20, 2); + } + else + { + sprite->data0 = 0; + sprite->data1 = -16; + StartSpriteAnim(sprite, sprite->data3); + } + } + break; + } + sprite->pos2.y = sprite->data1; +} + +static void sub_80518CC(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 92) + { + sprite->data1 = 92; + sprite->data0++; + PlaySE(SE_PIN); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + sprite->data0++; + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + gBerryBlenderData->field_0++; + DestroySprite(sprite); + } + break; + } + sprite->pos2.y = sprite->data1; +} + +static void sub_805194C(u16 a0, u16 a1) +{ + if (gBerryBlenderData->field_140 < a0) + { + gBerryBlenderData->field_140 += 2; + sub_805197C(gBerryBlenderData->field_140, a1); + } +} + +static void sub_805197C(u16 a0, u16 a1) +{ + s32 var1, var2, var3, var4; + u16* vram; + + vram = (u16*)(VRAM + 0x6000); + var1 = (a0 * 64) / a1; + var2 = var1 / 8; + for (var4 = 0; var4 < var2; var4++) + { + vram[11 + var4] = 0x81E9; + vram[43 + var4] = 0x81F9; + } + var3 = var1 % 8; + if (var3 != 0) + { + vram[11 + var4] = var3 - 32287; + vram[43 + var4] = var3 - 32271; + var4++; + } + for (; var4 < 8; var4++) + { + vram[11 + var4] = 33249; + vram[43 + var4] = 33249 + 16; + } +} + +static u32 sub_8051A1C(u16 a0) +{ + return 360000 * a0 / 0x10000; +} + +static void sub_8051A3C(u16 a0) +{ + u8 i; + u8 palAdders[5]; + + u32 var = sub_8051A1C(a0); + if (gBerryBlenderData->max_RPM < var) + gBerryBlenderData->max_RPM = var; + for (i = 0; i < 5; i++) + { + palAdders[i] = var % 10; + var /= 10; + } + *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8172; + *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8172; + *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8172; + *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8172; + *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8172; +} + +static void sub_8051AC8(s16* a0, u16 a1) +{ + if (*a0 == 0) + *a0 = (Random() % a1) - (a1 / 2); +} + +static void sub_8051AF4(s16* a0) +{ + if (*a0 < 0 ) + (*a0)++; + if (*a0 > 0 ) + (*a0)--; +} + +static void sub_8051B18(void) +{ + sub_8051AF4(&gBerryBlenderData->field_144); + sub_8051AF4(&gBerryBlenderData->field_146); +} + +static void sub_8051B40(s16* a0, u16 a1) +{ + s32 var; + if (a1 < 10) + var = 16; + else + var = 8; + if (*a0 == 0) + *a0 = (Random() % var) - (var / 2); + else + { + if (*a0 < 0) + (*a0)++; + if (*a0 > 0) + (*a0)--; + } +} + +static bool8 sub_8051B8C(void) +{ + if (gBerryBlenderData->framesToWait == 0) + { + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + } + gBerryBlenderData->framesToWait++; + sub_8051B40(&gBerryBlenderData->field_144, gBerryBlenderData->framesToWait); + sub_8051B40(&gBerryBlenderData->field_146, gBerryBlenderData->framesToWait); + if (gBerryBlenderData->framesToWait == 20) + { + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + return TRUE; + } + else + return FALSE; +} + +static void sub_8051C04(struct Sprite* sprite) +{ + sprite->pos2.x = -(gBerryBlenderData->field_144); + sprite->pos2.y = -(gBerryBlenderData->field_146); +} + +static void Blender_TrySettingRecord(void) +{ + if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM) + gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM; +} + +static bool8 Blender_PrintBlendingResults(void) +{ + u16 i; + + struct Pokeblock pokeblock; + u8 flavours[6]; + u8 text[2][10]; + u16 berryIDs[4]; // unused + + switch (gBerryBlenderData->field_0) + { + case 0: + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 17; + break; + case 1: + gBerryBlenderData->framesToWait -= 10; + if (gBerryBlenderData->framesToWait < 0) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 2: + if (++gBerryBlenderData->framesToWait > 20) + { + for (i = 0; i < 3; i++) + DestroySprite(&gSprites[gBerryBlenderData->scoreIconIDs[i]]); + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 3: + { + u8* textPtr; + u16 secondsPassed, minutes, seconds; + + MenuDrawTextWindow(4, 2, 25, 17); + sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160); + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + u8 place = gBerryBlenderData->playerPlaces[i]; + textPtr = text[0]; + + StringCopy(textPtr, gBerryBlenderData->blendedBerries[place].name); + ConvertInternationalString(textPtr, gLinkPlayers[place].language); +#ifdef ENGLISH + StringAppend(textPtr, gOtherText_Berry); +#else + de_sub_8073174(textPtr, gOtherText_Berry); +#endif + textPtr = gBerryBlenderData->stringVar; + textPtr = ConvertIntToDecimalString(textPtr, i + 1); + textPtr[0] = CHAR_SPACE; + textPtr[1] = CHAR_PERIOD; + textPtr[2] = CHAR_SPACE; + textPtr += 3; + textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0); + sub_8072C74(textPtr, text[0], 157, 0); + MenuPrint(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); + } + ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2); + textPtr = gBerryBlenderData->stringVar; + textPtr = StringCopy(textPtr, gOtherText_MaxSpeed); + textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1); + +#ifdef ENGLISH + textPtr[0] = CHAR_SPACE; + textPtr[1] = CHAR_PERIOD; + textPtr[2] = CHAR_SPACE; + textPtr += 3; + textPtr = sub_8072C74(textPtr, text[0], 142, 1); +#else + *textPtr++ = CHAR_COMMA; + textPtr = sub_8072C74(textPtr, text[0], 136, 1); +#endif + StringCopy(textPtr, gOtherText_RPM); + MenuPrint(gBerryBlenderData->stringVar, 5, 13); + + secondsPassed = gBerryBlenderData->gameFrameTime / 60; + seconds = secondsPassed % 60; + minutes = secondsPassed / 60; + ConvertIntToDecimalStringN(text[0], minutes, 2, 2); + ConvertIntToDecimalStringN(text[1], seconds, 2, 2); + textPtr = gBerryBlenderData->stringVar; + textPtr = StringCopy(textPtr, gOtherText_RequiredTime); + +#ifdef ENGLISH + textPtr = sub_8072C74(textPtr, text[0], 102, 1); +#else + textPtr = sub_8072C74(textPtr, text[0], 99, 1); +#endif + textPtr = StringAppend(textPtr, gOtherText_Min); + + textPtr = sub_8072C74(textPtr, text[1], 136, 1); + StringCopy(textPtr, gOtherText_Sec); + + MenuPrint(gBerryBlenderData->stringVar, 5, 15); + + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 4: + if (gMain.newKeys & A_BUTTON) + gBerryBlenderData->field_0++; + break; + case 5: + MenuZeroFillScreen(); + MenuDrawTextWindow(0, 14, 29, 19); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->chosenItemID[i] != 0) + berryIDs[i] = gBerryBlenderData->chosenItemID[i] - 133; + } + sub_8050760(); + Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM); + Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar); + CreateTask(sub_8052BD0, 6); + MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15); + RemoveBagItem(gScriptItemId, 1); + sub_810CA34(&pokeblock); + gBerryBlenderData->field_0++; + break; + case 6: + if (MenuUpdateWindowText()) + { + Blender_TrySettingRecord(); + return TRUE; + } + break; + } + return FALSE; +} + +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) +{ + u8 text[12]; + u8 flavourLvl, feel; + + dst[0] = EOS; + StringCopy(dst, gPokeblockNames[pokeblock->color]); +#ifdef ENGLISH + StringAppend(dst, gOtherText_PokeBlockMade); +#else + de_sub_8073174(dst, gOtherText_PokeBlockMade); +#endif + StringAppend(dst, sNewLineString_0); + + flavourLvl = sub_810C9B0(pokeblock); + feel = sub_810C9E8(pokeblock); + + StringAppend(dst, gOtherText_BlockLevelIs); + ConvertIntToDecimalStringN(text, flavourLvl, 0, 3); + StringAppend(dst, text); + + StringAppend(dst, gOtherText_BlockFeelIs); + ConvertIntToDecimalStringN(text, feel, 0, 3); + StringAppend(dst, text); + + StringAppend(dst, gOtherText_Period); + StringAppend(dst, gUnknown_08216249); +} + +static void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores) +{ + s32 i, j; + for (i = 0; i < playersNum; i++) + { + for (j = 0; j < playersNum; j++) + { + if (scores[places[i]] > scores[places[j]]) + { + u8 temp = places[i]; + places[i] = places[j]; + places[j] = temp; + } + } + } +} + +static void Blender_SortScores(void) +{ + u8 i; + u8 places[4]; + u32 points[4]; + + for (i = 0; i < gBerryBlenderData->playersNo; i++) + places[i] = i; + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + points[i] = 1000000 * gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]; + points[i] += 1000 * gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]; + points[i] += 1000 - gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]; + } + Blender_SortBasedOnPoints(places, gBerryBlenderData->playersNo, points); + for (i = 0; i < gBerryBlenderData->playersNo; i++) + gBerryBlenderData->playerPlaces[i] = places[i]; +} + +static bool8 Blender_PrintBlendingRanking(void) +{ + u16 i; + switch (gBerryBlenderData->field_0) + { + case 0: + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 255; + break; + case 1: + gBerryBlenderData->framesToWait -= 10; + if (gBerryBlenderData->framesToWait < 0) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 2: + if (++gBerryBlenderData->framesToWait > 20) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 3: + MenuDrawTextWindow(4, 2, 25, 17); + sub_8072BD8(gOtherText_Ranking, 5, 3, 160); + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&sSpriteTemplate_821645C, 140, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3); + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&sSpriteTemplate_821645C, 164, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&sSpriteTemplate_821645C, 188, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1); + + Blender_SortScores(); + + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + u8 place = gBerryBlenderData->playerPlaces[i]; + u8* txtPtr = gBerryBlenderData->stringVar; + + txtPtr[0] = EXT_CTRL_CODE_BEGIN; + txtPtr[1] = 0x13; + txtPtr[2] = 4; + txtPtr += 3; + + txtPtr = ConvertIntToDecimalString(txtPtr, i + 1); + + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = CHAR_PERIOD; + txtPtr[2] = CHAR_SPACE; + txtPtr += 3; + + txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name); + + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); + + MenuPrint(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + break; + case 4: + if (++gBerryBlenderData->framesToWait > 20) + gBerryBlenderData->field_0++; + break; + case 5: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_0++; + } + break; + case 6: + gBerryBlenderData->field_0 = 0; + return TRUE; + } + return FALSE; +} + +// debug menu goes here + +void unref_sub_80524BC(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB1_BerryBlender); + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + SeedRng(gMain.vblankCounter1); + REG_DISPCNT = 0x1540; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + sBlenderDebug.BPM = 8000; + sBlenderDebug.field_10++; + SetMainCallback2(sub_8052AF8); +} + +static void BlenderDebug_PrintBerryData(void) +{ + u8 text[128]; + u8 i; + + StringCopy(text, sText_BPM); + MenuPrint(text, 2, 0); + + ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3); + MenuPrint(text, 6, 0); + + for (i = 0; i < 4; i++) + { + u8 var; + + if (sBlenderDebug.cursorPos == i) + { + text[0] = 0xEF; + CopyItemName(sBlenderDebug.berries[i] + 133, &text[1]); + } + else + { + CopyItemName(sBlenderDebug.berries[i] + 133, &text[0]); + text[6] = CHAR_SPACE; + text[7] = EOS; + } + var = (i * 3) + 3; + MenuPrint(text, 2, var); + + ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[3], gBerries[sBlenderDebug.berries[i]].dry, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[6], gBerries[sBlenderDebug.berries[i]].sweet, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[9], gBerries[sBlenderDebug.berries[i]].bitter, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[12], gBerries[sBlenderDebug.berries[i]].sour, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); + + text[17] = EOS; + MenuPrint(text, 7, var); + } + if (sBlenderDebug.pokeblock.color != 0) + { + StringCopy(text, gPokeblockNames[sBlenderDebug.pokeblock.color]); + MenuPrint(text, 2, 15); + + ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[3], sBlenderDebug.dry, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[6], sBlenderDebug.sweet, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[9], sBlenderDebug.bitter, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[12], sBlenderDebug.sour, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); + + text[17] = EOS; + MenuPrint(text, 7, 17); + } +} + +static void sub_80527BC(void) +{ + u8 text[70]; + u8 buffer[10]; + u16 i; + + if (gUnknown_020297DC == 1) + { + u16 j; + for (j = 0; j < 10; j++) + gUnknown_03004840[j] = 0; + gUnknown_03004830 = Random(); + gUnknown_020297E0 = 0; + gUnknown_020297DC = 2; + for (i = 0; i < 200; i++) + ewram[i] = 0; + gUnknown_020297E8 = 0; + } + for (i = 0; i < 100; i++) + { + if (((Random() >> 15) & 1) == gUnknown_020297E8) + gUnknown_020297E0++; + else + { + u16* ewramPtr = ((u16*)(ewram)); + ewramPtr[gUnknown_020297E4] = gUnknown_020297E0; + gUnknown_020297E4++; + gUnknown_020297E0 = 0; + gUnknown_020297E8 ^= 1; + } + } + text[0] = EOS; + + ConvertIntToHexStringN(buffer, gUnknown_03004830, 2, 8); + StringAppend(text, buffer); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(buffer, gUnknown_020297E0, 2, 8); + StringAppend(text, buffer); + StringAppend(text, sNewLineString_1); + + if (gUnknown_020297DC == 3) + { + ConvertIntToHexStringN(buffer, gUnknown_020297E4, 2, 16); + StringAppend(text, buffer); + gUnknown_020297DC = 0; + } + + MenuPrint(text, 2, 15); +} + +static void sub_8052918(void) +{ + if (gMain.newKeys & R_BUTTON) + { + sBlenderDebug.BPM += 1000; + if (sBlenderDebug.BPM > 30000) + sBlenderDebug.BPM = 1000; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & L_BUTTON) + { + sBlenderDebug.BPM -= 1000; + if (sBlenderDebug.BPM < 0) + sBlenderDebug.BPM = 30000; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_UP) + { + sBlenderDebug.cursorPos -= 1; + if (sBlenderDebug.cursorPos < 0) + sBlenderDebug.cursorPos = 3; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_DOWN) + { + sBlenderDebug.cursorPos += 1; + if (sBlenderDebug.cursorPos > 3) + sBlenderDebug.cursorPos = 0; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_LEFT) + { + if (--sBlenderDebug.berries[sBlenderDebug.cursorPos] < 0) + sBlenderDebug.berries[sBlenderDebug.cursorPos] = 42; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_RIGHT) + { + if (++sBlenderDebug.berries[sBlenderDebug.cursorPos] > 42) + sBlenderDebug.berries[sBlenderDebug.cursorPos] = 0; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & A_BUTTON) + { + u16 berryIDs[4]; + struct BlenderBerry berries[4]; + + u16 i, notEnigma = 0; + for (i = 0; i < 4; i++) + { + if (sBlenderDebug.berries[i] != 42) + { + notEnigma++; + berryIDs[i] = sBlenderDebug.berries[i]; + Blender_CopyBerryData(&berries[i], sBlenderDebug.berries[i] + 133); + } + else + break; + } + if (notEnigma > 1) + { + BlenderDebug_CalculatePokeblock(berries, &sBlenderDebug.pokeblock, notEnigma, &sBlenderDebug.spicy, sBlenderDebug.BPM); + sBlenderDebug.field_10++; + } + else + sBlenderDebug.pokeblock.color = 0xFF; + } + if (sBlenderDebug.field_10) + { + BlenderDebug_PrintBerryData(); + sBlenderDebug.field_10 = 0; + } + if (gMain.newKeys & SELECT_BUTTON && gUnknown_020297DC == 0) + { + gUnknown_020297DC++; + gUnknown_020297E0 = 0; + SeedRng(gMain.vblankCounter1); + } + if (gUnknown_020297DC != 0) + sub_80527BC(); +} + +static void sub_8052AF8(void) +{ + sub_8052918(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +// debug menu ends +// blender record window begins + +void ShowBerryBlenderRecordWindow(void) +{ + u8 text[30]; + s32 i; + + MenuDrawTextWindow(6, 3, 23, 16); + MenuPrint(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4); + MenuPrint(gMultiText_2P3P4P, 8, 9); + + for (i = 0; i < 3; i++) + { + u32 record = gSaveBlock1.berryBlenderRecords[i]; + u8* txtPtr = sub_8072C14(text, record / 100, 18, 1); + +#ifdef ENGLISH + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = CHAR_PERIOD; + txtPtr[2] = CHAR_SPACE; + txtPtr += 3; +#else + *txtPtr++ = CHAR_COMMA; +#endif + + txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2); + StringAppend(txtPtr, gOtherText_RPM); + MenuPrint(text, 15, i * 2 + 9); + } +} + +static void sub_8052BD0(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + { + PlayFanfare(BGM_FANFA1); + gTasks[taskID].data[0]++; + } + if (IsFanfareTaskInactive()) + { + PlayBGM(gBerryBlenderData->field_178); + DestroyTask(taskID); + } +} diff --git a/src/contest_painting.c b/src/scene/contest_painting.c index 391cbdfaa..3662efdec 100644 --- a/src/contest_painting.c +++ b/src/scene/contest_painting.c @@ -353,7 +353,7 @@ static void sub_8106AC4(u16 species, u8 arg1) void *pal; // Unsure what gUnknown_03005E8C->var0 is supposed to be. - pal = species_and_otid_get_pal(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0); + pal = GetMonSpritePalFromOtIdPersonality(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0); LZDecompressVram(pal, gUnknown_03005E90); if (arg1 == 1) @@ -402,7 +402,7 @@ static void sub_8106AC4(u16 arg0, u8 arg2) ldr r1, [r0, 0x4]\n\ ldr r2, [r0]\n\ adds r0, r6, 0\n\ - bl species_and_otid_get_pal\n\ + bl GetMonSpritePalFromOtIdPersonality\n\ ldr r1, _08106B2C @ =gUnknown_03005E90\n\ mov r8, r1\n\ ldr r1, [r1]\n\ diff --git a/src/credits.c b/src/scene/credits.c index df70674b6..cf10137c1 100644 --- a/src/credits.c +++ b/src/scene/credits.c @@ -1387,7 +1387,7 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) 1 ); - lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, 0, 0xFFFF); LoadCompressedPalette(lzPaletteData, 0x100 + (position * 16), 0x20); sub_8143648(position, position); @@ -1433,7 +1433,7 @@ static void sub_81458DC(void) for (dexNum = 1, seenTypesCount = 0; dexNum < 386; dexNum++) { - if (GetNationalPokedexFlag(dexNum, 1)) + if (GetSetPokedexFlag(dexNum, 1)) { unk201C000->unk90[seenTypesCount] = dexNum; seenTypesCount++; diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c new file mode 100644 index 000000000..5317bc334 --- /dev/null +++ b/src/scene/cute_sketch.c @@ -0,0 +1,164 @@ +#include "global.h" +#include "cute_sketch.h" +#include "contest_painting.h" + +extern u16 (*gUnknown_03005DEC)[][32]; +extern u8 gUnknown_03005E00; +extern u8 gUnknown_03005DFC; +extern u8 gUnknown_03005DF8; +extern u8 gUnknown_03005DF0; +extern u8 gUnknown_03005E04; +extern u8 gUnknown_03005DF4; + +extern u8 gUnknown_03005DE8; + +// this file's functions +void sub_80FCAA4(void); +void sub_80FCB5C(void); +void sub_80FCD54(void); +void sub_80FCEA4(void); +void sub_80FCCBC(void); +void sub_80FD06C(void); +void sub_80FD114(void); +void sub_80FCF3C(void); +void sub_80FCAC4(void); +void sub_80FCC18(u8); +void sub_80FC92C(u8); +void sub_80FC9E4(u8); +void sub_80FD1C8(u16); +u16 sub_80FD39C(u16*); +u16 sub_80FD68C(u16*, u16*, u16*); + +void sub_80FC7A0(struct Unk03005E20* info) +{ + gUnknown_03005DEC = info->var_4; + gUnknown_03005E00 = info->var_1F; + gUnknown_03005DE8 = info->var_19; + gUnknown_03005DFC = info->var_1A; + gUnknown_03005DF8 = info->var_1B; + gUnknown_03005DF0 = info->var_1C; + gUnknown_03005E04 = info->var_1D; + gUnknown_03005DF4 = info->var_1E; + switch (info->var_0) + { + case 2: + sub_80FCAA4(); + break; + case 8: + sub_80FCB5C(); + break; + case 9: + sub_80FCD54(); + sub_80FCC18(gUnknown_03005E00); + break; + case 10: + sub_80FCD54(); + sub_80FCEA4(); + sub_80FCCBC(); + case 31: + sub_80FCEA4(); + break; + case 11: + sub_80FCD54(); + sub_80FD06C(); + sub_80FD06C(); + sub_80FD114(); + sub_80FCCBC(); + break; + case 13: + sub_80FCF3C(); + break; + case 30: + sub_80FCD54(); + break; + case 32: + sub_80FD06C(); + break; + case 33: + sub_80FD114(); + break; + case 6: + sub_80FCAC4(); + sub_80FC92C(3); + break; + case 36: + sub_80FCD54(); + sub_80FD06C(); + sub_80FD114(); + sub_80FCCBC(); + sub_80FCB5C(); + sub_80FCB5C(); + sub_80FC92C(2); + sub_80FC9E4(4); + break; + } +} + +#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) + +void sub_80FC92C(u8 a0) // it changes palette someway somehow... .__. +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + u8 val = (31 & *pal); + val += a0; + if (val > 31) + val = 31; + + *pal = RGB2(val, val, val); + } + } + } +} + +void sub_80FC9E4(u8 a0) +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + u8 val = (31 & *pal); + if (val > 31 - a0) + val = 31 - (a0 >> 1); + + *pal = RGB2(val, val, val); + } + } + } +} + +void sub_80FCAA4(void) +{ + u32 i; + for (i = 0; i < 3200; i++) + sub_80FD1C8(i); +} + +void sub_80FCAC4(void) +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + *pal = sub_80FD39C(pal); + } + } + } +} diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c new file mode 100644 index 000000000..032dcd284 --- /dev/null +++ b/src/scene/egg_hatch.c @@ -0,0 +1,862 @@ +#include "global.h" +#include "pokemon.h" +#include "items.h" +#include "decompress.h" +#include "data2.h" +#include "task.h" +#include "script.h" +#include "palette.h" +#include "overworld.h" +#include "main.h" +#include "event_data.h" +#include "sound.h" +#include "songs.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "strings2.h" +#include "menu.h" +#include "naming_screen.h" +#include "trig.h" +#include "rng.h" +#include "trade.h" + +extern u8 ewram[]; +extern struct SpriteTemplate gUnknown_02024E8C; + +struct EggHatchData +{ + u8 eggSpriteID; + u8 pokeSpriteID; + u8 CB2_state; + u8 CB2_PalCounter; + u8 eggPartyID; + struct Window window; + u8 tileDataStartOffset; + u8 unused_39; + u8 eggShardVelocityID; +}; + +struct EggHatchData* gEggHatchData; + +extern const u32 gUnknown_08D00000[]; +extern const u32 gUnknown_08D00524[]; +extern const u16 gUnknown_08D004E0[]; //palette +extern const struct SpriteSheet sUnknown_0820A3B0; +extern const struct SpriteSheet sUnknown_0820A3B8; +extern const struct SpritePalette sUnknown_0820A3C0; + +bool8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); +u8* GetMonNick(struct Pokemon* mon, u8* dst); +u8 sav1_map_get_name(void); +const struct CompressedSpritePalette* GetMonSpritePalStruct(struct Pokemon* mon); //gets pokemon palette address +void sub_8080990(void); + +static void Task_EggHatch(u8 taskID); +static void CB2_EggHatch_0(void); +static void CB2_EggHatch_1(void); +static void SpriteCB_Egg_0(struct Sprite* sprite); +static void SpriteCB_Egg_1(struct Sprite* sprite); +static void SpriteCB_Egg_2(struct Sprite* sprite); +static void SpriteCB_Egg_3(struct Sprite* sprite); +static void SpriteCB_Egg_4(struct Sprite* sprite); +static void SpriteCB_Egg_5(struct Sprite* sprite); +static void SpriteCB_EggShard(struct Sprite* sprite); +static void EggHatchPrintMessage2(u8* src); +static void EggHatchPrintMessage1(u8* src); +static bool8 EggHatchUpdateWindowText(void); +static void CreateRandomEggShardSprite(void); +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); + +// graphics + +static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/palette.gbapal"); +static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp"); +static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp"); + +static const struct OamData sOamData_820A378 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_820A380[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A388[] = +{ + ANIMCMD_FRAME(16, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A390[] = +{ + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A398[] = +{ + ANIMCMD_FRAME(48, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_820A3A0[] = +{ + sSpriteAnim_820A380, + sSpriteAnim_820A388, + sSpriteAnim_820A390, + sSpriteAnim_820A398, +}; + +static const struct SpriteSheet sUnknown_0820A3B0 = +{ + .data = sEggHatchTiles, + .size = 2048, + .tag = 12345, +}; + +static const struct SpriteSheet sUnknown_0820A3B8 = +{ + .data = sEggShardTiles, + .size = 128, + .tag = 23456, +}; + +static const struct SpritePalette sUnknown_0820A3C0 = +{ + .data = sEggPalette, + .tag = 54321 +}; + +static const struct SpriteTemplate sSpriteTemplate_820A3C8 = +{ + .tileTag = 12345, + .paletteTag = 54321, + .oam = &sOamData_820A378, + .anims = sSpriteAnimTable_820A3A0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + + +static const struct OamData sOamData_820A3E0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_820A3E8[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A3F0[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A3F8[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A400[] = +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_820A408[] = +{ + sSpriteAnim_820A3E8, + sSpriteAnim_820A3F0, + sSpriteAnim_820A3F8, + sSpriteAnim_820A400, +}; + +static const struct SpriteTemplate sSpriteTemplate_820A418 = +{ + .tileTag = 23456, + .paletteTag = 54321, + .oam = &sOamData_820A3E0, + .anims = sSpriteAnimTable_820A408, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_EggShard +}; + +// actual code + +static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) +{ + u16 species; + u32 personality, pokerus; + u8 i, friendship, language, gameMet, markings; + u16 moves[4]; + u32 ivs[6]; + + + species = GetMonData(egg, MON_DATA_SPECIES); + + for (i = 0; i < 4; i++) + { + moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); + } + + personality = GetMonData(egg, MON_DATA_PERSONALITY); + + for (i = 0; i < 6; i++) + { + ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); + } + + gameMet = GetMonData(egg, MON_DATA_MET_GAME); + markings = GetMonData(egg, MON_DATA_MARKINGS); + pokerus = GetMonData(egg, MON_DATA_POKERUS); + + CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0); + + for (i = 0; i < 4; i++) + { + SetMonData(temp, MON_DATA_MOVE1 + i, (const u8 *) &moves[i]); + } + + for (i = 0; i < 6; i++) + { + SetMonData(temp, MON_DATA_HP_IV + i, (const u8 *) &ivs[i]); + } + + language = GAME_LANGUAGE; + SetMonData(temp, MON_DATA_LANGUAGE, &language); + SetMonData(temp, MON_DATA_MET_GAME, &gameMet); + SetMonData(temp, MON_DATA_MARKINGS, &markings); + + friendship = 120; + SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(temp, MON_DATA_POKERUS, (const u8 *) &pokerus); + + *egg = *temp; +} + +static void AddHatchedMonToParty(u8 id) +{ + u8 isEgg; + u16 pokeNum; + u8 name[12]; + u16 ball; + u16 caughtLvl; + u8 mapNameID; + struct Pokemon* mon = &gPlayerParty[id]; + + CreatedHatchedMon(mon, &gEnemyParty[0]); + isEgg = 0; + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); + + pokeNum = GetMonData(mon, MON_DATA_SPECIES); + GetSpeciesName(name, pokeNum); + SetMonData(mon, MON_DATA_NICKNAME, name); + + pokeNum = SpeciesToNationalPokedexNum(pokeNum); + GetSetPokedexFlag(pokeNum, 2); + GetSetPokedexFlag(pokeNum, 3); + + GetMonNick(mon, gStringVar1); + + ball = ITEM_POKE_BALL; + SetMonData(mon, MON_DATA_POKEBALL, (const u8*) &ball); + + caughtLvl = 0; + SetMonData(mon, MON_DATA_MET_LEVEL, (const u8*) &caughtLvl); + + mapNameID = sav1_map_get_name(); + SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID); + + MonRestorePP(mon); + CalculateMonStats(mon); +} + +void ScriptHatchMon(void) +{ + AddHatchedMonToParty(gSpecialVar_0x8004); +} + +#ifdef NONMATCHING +static bool8 sub_8042ABC(void* a, u8 b) +{ + +} + +#else +__attribute__((naked)) +static bool8 sub_8042ABC(void* a, u8 b) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x20\n\ + adds r5, r0, 0\n\ + lsls r4, r1, 24\n\ + lsrs r4, 24\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 4\n\ + adds r0, r5, r0\n\ + mov r1, sp\n\ + bl GetBoxMonNick\n\ + lsls r0, r4, 3\n\ + subs r0, r4\n\ + lsls r1, r0, 3\n\ + adds r0, r5, r1\n\ + adds r0, 0xC0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _08042B40\n\ + adds r0, r1, 0\n\ + adds r0, 0xA0\n\ + adds r5, r0\n\ + adds r6, r5, 0\n\ + adds r6, 0x2C\n\ + mov r0, sp\n\ + adds r1, r6, 0\n\ + bl StringCompareWithoutExtCtrlCodes\n\ + cmp r0, 0\n\ + bne _08042B08\n\ + ldr r0, _08042B30 @ =gSaveBlock2\n\ + adds r1, r5, 0\n\ + adds r1, 0x24\n\ + bl StringCompareWithoutExtCtrlCodes\n\ + cmp r0, 0\n\ + beq _08042B40\n\ +_08042B08:\n\ + ldr r0, _08042B34 @ =gStringVar1\n\ + mov r1, sp\n\ + bl StringCopy\n\ + ldr r4, _08042B38 @ =gStringVar2\n\ + adds r1, r5, 0\n\ + adds r1, 0x24\n\ + adds r0, r4, 0\n\ + bl StringCopy\n\ + ldr r0, _08042B3C @ =gStringVar3\n\ + adds r1, r6, 0\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + bl SanitizeNameString\n\ + movs r0, 0x1\n\ + b _08042B42\n\ + .align 2, 0\n\ +_08042B30: .4byte gSaveBlock2\n\ +_08042B34: .4byte gStringVar1\n\ +_08042B38: .4byte gStringVar2\n\ +_08042B3C: .4byte gStringVar3\n\ +_08042B40:\n\ + movs r0, 0\n\ +_08042B42:\n\ + add sp, 0x20\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +bool8 sub_8042B4C(void) +{ + return sub_8042ABC(&gSaveBlock1.daycareData, gSpecialVar_0x8004); +} + +static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID) +{ + u8 r5 = 0; + u8 spriteID = 0; + struct Pokemon* mon = NULL; + + if (a0 == 0) + { + mon = &gPlayerParty[pokeID]; + r5 = 1; + } + if (a0 == 1) + { + mon = &gPlayerParty[pokeID]; + r5 = 3; + } + switch (switchID) + { + case 0: + { + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,(u32)(&ewram[0]), gUnknown_081FAF4C[2 * a0 + 1], species, pid); + LoadCompressedObjectPalette(GetMonSpritePalStruct(mon)); + } + break; + case 1: + GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(mon)->tag, r5); + spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6); + gSprites[spriteID].invisible = 1; + gSprites[spriteID].callback = SpriteCallbackDummy; + break; + } + return spriteID; +} + +static void VBlankCB_EggHatch(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void EggHatch(void) +{ + ScriptContext2_Enable(); + CreateTask(Task_EggHatch, 10); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); +} + +static void Task_EggHatch(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_EggHatch_0); + gFieldCallback = sub_8080990; + DestroyTask(taskID); + } +} + +static void CB2_EggHatch_0(void) +{ + switch (gMain.state) + { + case 0: + REG_DISPCNT = 0; + gEggHatchData = (struct EggHatchData*)(&ewram[0x18000]); + gEggHatchData->eggPartyID = gSpecialVar_0x8004; + gEggHatchData->eggShardVelocityID = 0; + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(VBlankCB_EggHatch); + gMain.state++; + gSpecialVar_0x8005 = GetCurrentMapMusic(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gEggHatchData->window, &gWindowConfig_81E6F84); + gEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&gEggHatchData->window); + gMain.state++; + break; + case 2: + LZDecompressVram(&gUnknown_08D00000, (void*)(VRAM)); + CpuSet(&gUnknown_08D00524, &ewram[0], 0x800); + DmaCopy16(3, &ewram[0], (void*)(VRAM + 0x2800), 0x500); + LoadCompressedPalette(&gUnknown_08D004E0, 0, 0x20); + gMain.state++; + break; + case 3: + LoadSpriteSheet(&sUnknown_0820A3B0); + LoadSpriteSheet(&sUnknown_0820A3B8); + LoadSpritePalette(&sUnknown_0820A3C0); + gMain.state++; + break; + case 4: + gEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5); + AddHatchedMonToParty(gEggHatchData->eggPartyID); + gMain.state++; + break; + case 5: + EggHatchCreateMonSprite(0, 0, gEggHatchData->eggPartyID); + gMain.state++; + break; + case 6: + gEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gEggHatchData->eggPartyID); + gMain.state++; + break; + case 7: + { + u32 offsetRead, offsetWrite; + u32 offsetRead2, offsetWrite2; + u32 size; + + REG_BG2CNT = 0x4C06; + LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); + + offsetRead = (u32)(&gUnknown_0820CA98); + offsetWrite = (VRAM + 0x4000); + size = 0x1300; + while (TRUE) + { + DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000); + offsetRead += 0x1000; + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, offsetRead, (void *) (offsetWrite), size); + break; + } + } + + offsetRead2 = (u32)(&gUnknown_0820F798); + offsetWrite2 = (u32)(VRAM + 0x6000); + DmaCopy16(3, offsetRead2, (void*)(offsetWrite2), 0x1000); + gMain.state++; + } + break; + case 8: + REG_BG1CNT = 0x501; + + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + + SetMainCallback2(CB2_EggHatch_1); + gEggHatchData->CB2_state = 0; + break; + } +} + +static void EggHatchSetMonNickname(void) +{ + SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); + SetMainCallback2(c2_exit_to_overworld_2_switch); +} + +static void Task_EggHatchPlayBGM(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + StopMapMusic(); + if (gTasks[taskID].data[0] == 1) + PlayBGM(376); + if (gTasks[taskID].data[0] > 60) + { + PlayBGM(377); + DestroyTask(taskID); + //return; task is destroyed, yet you increment the value? + } + gTasks[taskID].data[0]++; +} + +static void CB2_EggHatch_1(void) +{ + switch (gEggHatchData->CB2_state) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + REG_DISPCNT = 0x1740; + gEggHatchData->CB2_state++; + CreateTask(Task_EggHatchPlayBGM, 5); + break; + case 1: + if (!gPaletteFade.active) + { + gEggHatchData->CB2_PalCounter = 0; + gEggHatchData->CB2_state++; + } + break; + case 2: + if (++gEggHatchData->CB2_PalCounter > 30) + { + gEggHatchData->CB2_state++; + gSprites[gEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; + } + break; + case 3: + if (gSprites[gEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) + gEggHatchData->CB2_state++; + break; + case 4: + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg); + EggHatchPrintMessage2(gStringVar4); + PlayFanfare(371); + gEggHatchData->CB2_state++; + break; + case 5: + if (IsFanfareTaskInactive()) + gEggHatchData->CB2_state++; + break; + case 6: + if (IsFanfareTaskInactive()) + gEggHatchData->CB2_state++; + break; + case 7: + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt); + EggHatchPrintMessage1(gStringVar4); + gEggHatchData->CB2_state++; + break; + case 8: + if (EggHatchUpdateWindowText()) + { + MenuDrawTextWindow(22, 8, 27, 13); + InitYesNoMenu(22, 8, 4); + gEggHatchData->CB2_state++; + } + break; + case 9: + { + s8 menuInput; + if ((menuInput = ProcessMenuInputNoWrap_()) != -2) + { + if (menuInput != -1 && menuInput != 1) + { + u16 species; + u8 gender; + u32 personality; + + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar3); + species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES); + gender = GetMonGender(&gPlayerParty[gEggHatchData->eggPartyID]); + personality = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); + } + else + gEggHatchData->CB2_state++; + } + } + break; + case 10: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gEggHatchData->CB2_state++; + break; + case 11: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_2_switch); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void SpriteCB_Egg_0(struct Sprite* sprite) +{ + if (++sprite->data0 > 20) + { + sprite->callback = SpriteCB_Egg_1; + sprite->data0 = 0; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 1); + if (sprite->data0 == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 1); + CreateRandomEggShardSprite(); + } + } +} + +static void SpriteCB_Egg_1(struct Sprite* sprite) +{ + if (++sprite->data2 > 30) + { + if (++sprite->data0 > 20) + { + sprite->callback = SpriteCB_Egg_2; + sprite->data0 = 0; + sprite->data2 = 0; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 2); + if (sprite->data0 == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + } + } + } +} + +static void SpriteCB_Egg_2(struct Sprite* sprite) +{ + if (++sprite->data2 > 30) + { + if (++sprite->data0 > 38) + { + u16 species; + + sprite->callback = SpriteCB_Egg_3; + sprite->data0 = 0; + species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES); + gSprites[gEggHatchData->pokeSpriteID].pos2.x = 0; + gSprites[gEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 2); + if (sprite->data0 == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + CreateRandomEggShardSprite(); + CreateRandomEggShardSprite(); + } + if (sprite->data0 == 30) + PlaySE(SE_BOWA); + } + } +} + +static void SpriteCB_Egg_3(struct Sprite* sprite) +{ + if (++sprite->data0 > 50) + { + sprite->callback = SpriteCB_Egg_4; + sprite->data0 = 0; + } +} + +static void SpriteCB_Egg_4(struct Sprite* sprite) +{ + s16 i; + if (sprite->data0 == 0) + BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF); + if (sprite->data0 < 4u) + { + for (i = 0; i <= 3; i++) + CreateRandomEggShardSprite(); + } + sprite->data0++; + if (!gPaletteFade.active) + { + PlaySE(SE_TAMAGO); + sprite->invisible = 1; + sprite->callback = SpriteCB_Egg_5; + sprite->data0 = 0; + } +} + +static void SpriteCB_Egg_5(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + gSprites[gEggHatchData->pokeSpriteID].invisible = 0; + StartSpriteAffineAnim(&gSprites[gEggHatchData->pokeSpriteID], 1); + } + if (sprite->data0 == 8) + BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF); + if (sprite->data0 <= 9) + gSprites[gEggHatchData->pokeSpriteID].pos1.y -= 1; + if (sprite->data0 > 40) + sprite->callback = SpriteCallbackDummy; + sprite->data0++; +} + +static void SpriteCB_EggShard(struct Sprite* sprite) +{ + sprite->data4 += sprite->data1; + sprite->data5 += sprite->data2; + + sprite->pos2.x = sprite->data4 / 256; + sprite->pos2.y = sprite->data5 / 256; + + sprite->data2 += sprite->data3; + + if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data2 > 0) + DestroySprite(sprite); +} + +// Converts a number to Q8.8 fixed-point format +#define Q_8_8(n) ((s16)((n) * 256)) + +static const s16 sEggShardVelocities[][2] = +{ + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(-5), Q_8_8(-3)}, + {Q_8_8(3.5), Q_8_8(-3)}, + {Q_8_8(-4), Q_8_8(-3.75)}, + {Q_8_8(2), Q_8_8(-1.5)}, + {Q_8_8(-0.5), Q_8_8(-6.75)}, + {Q_8_8(5), Q_8_8(-2.25)}, + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(4.5), Q_8_8(-1.5)}, + {Q_8_8(-1), Q_8_8(-6.75)}, + {Q_8_8(4), Q_8_8(-2.25)}, + {Q_8_8(-3.5), Q_8_8(-3.75)}, + {Q_8_8(1), Q_8_8(-1.5)}, + {Q_8_8(-3.515625), Q_8_8(-6.75)}, + {Q_8_8(4.5), Q_8_8(-2.25)}, + {Q_8_8(-0.5), Q_8_8(-7.5)}, + {Q_8_8(1), Q_8_8(-4.5)}, + {Q_8_8(-2.5), Q_8_8(-2.25)}, + {Q_8_8(2.5), Q_8_8(-7.5)}, +}; + +static void CreateRandomEggShardSprite(void) +{ + u16 spriteAnimIndex; + + s16 velocity1 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][0]; + s16 velocity2 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][1]; + gEggHatchData->eggShardVelocityID++; + spriteAnimIndex = Random() % 4; + CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); +} + +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex) +{ + u8 spriteID = CreateSprite(&sSpriteTemplate_820A418, x, y, 4); + gSprites[spriteID].data1 = data1; + gSprites[spriteID].data2 = data2; + gSprites[spriteID].data3 = data3; + StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex); +} + +static void EggHatchPrintMessage1(u8* src) +{ + sub_8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); +} + +static void EggHatchPrintMessage2(u8* src) +{ + sub_8003460(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); +} + +static bool8 EggHatchUpdateWindowText(void) +{ + return sub_80035AC(&gEggHatchData->window); +} diff --git a/src/scene/evolution_graphics.c b/src/scene/evolution_graphics.c new file mode 100644 index 000000000..1fd5bf8fa --- /dev/null +++ b/src/scene/evolution_graphics.c @@ -0,0 +1,614 @@ +#include "global.h" +#include "evolution_graphics.h" +#include "sprite.h" +#include "trig.h" +#include "rng.h" +#include "decompress.h" +#include "task.h" +#include "sound.h" +#include "songs.h" +#include "palette.h" + +// this file's functions +static void EvoSparkle_DummySpriteCb(struct Sprite* sprite); +static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID); +static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID); +static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID); +static void EvoTask_BeginPreSparklesSet2(u8 taskID); +static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID); +static void EvoTask_DestroyPreSet2Task(u8 taskID); +static void EvoTask_BeginPostSparklesSet1(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID); +static void EvoTask_DestroyPostSet1Task(u8 taskID); +static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID); +static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID); +static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID); + +static void sub_8149FC8(u8 taskID); +static void sub_8149FEC(u8 taskID); +static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID); +static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID); +static void sub_814A03C(u8 taskID); + +// const data +static const u16 sEvoSparklePalette[] = INCBIN_U16("graphics/misc/evo_sparkle.gbapal"); +static const u8 sEvoSparkleTiles[] = INCBIN_U8("graphics/misc/evo_sparkle.4bpp.lz"); + +static const struct CompressedSpriteSheet sEvoSparkleSpriteSheets[] = +{ + {sEvoSparkleTiles, 0x20, 1001}, + {NULL, 0, 0} +}; +static const struct SpritePalette sEvoSparkleSpritePals[] = +{ + {sEvoSparklePalette, 1001}, + {NULL, 0} +}; + +static const struct OamData sOamData_EvoSparkle = +{ + .y = 160, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_EvoSparkle[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_EvoSparkle[] = +{ + sSpriteAnim_EvoSparkle, +}; + +static const struct SpriteTemplate sEvoSparkleSpriteTemplate = +{ + .tileTag = 1001, + .paletteTag = 1001, + .oam = &sOamData_EvoSparkle, + .anims = sSpriteAnimTable_EvoSparkle, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = EvoSparkle_DummySpriteCb +}; + +static const s16 sEvoSparkleMatricies[] = +{ + 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, 0x240, 0x200, 0x1C0, + 0x180, 0x140, 0x100, -4, 0x10, -3, 0x30, -2, 0x50, + -1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10 +}; + +// code + +static void EvoSparkle_DummySpriteCb(struct Sprite* sprite) +{ + +} + +static void SetEvoSparklesMatrices(void) +{ + u16 i; + for (i = 0; i < 12; i++) + { + SetOamMatrix(20 + i, sEvoSparkleMatricies[i], 0, 0, sEvoSparkleMatricies[i]); + } +} + +static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite) +{ + if (sprite->pos1.y > 8) + { + u8 matrixNum; + + sprite->pos1.y = 88 - (sprite->data7 * sprite->data7) / 80; + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4; + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data6 += 4; + if (sprite->data7 & 1) + sprite->data5--; + sprite->data7++; + if (sprite->pos2.y > 0) + sprite->subpriority = 1; + else + sprite->subpriority = 20; + matrixNum = sprite->data5 / 4 + 20; + if (matrixNum > 31) + matrixNum = 31; + sprite->oam.matrixNum = matrixNum; + } + else + DestroySprite(sprite); +} + +static void CreatePreEvoSparkleSet1(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data5 = 48; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet1; + } +} + +static void SpriteCB_PreEvoSparkleSet2(struct Sprite* sprite) +{ + if (sprite->pos1.y < 88) + { + sprite->pos1.y = 8 + (sprite->data7 * sprite->data7) / 5; + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4; + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data5 = 8 + Sin((u8)(sprite->data7 * 4), 40); + sprite->data7++; + } + else + DestroySprite(sprite); +} + +static void CreatePreEvoSparkleSet2(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data5 = 8; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 25; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet2; + } +} + +static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite) +{ + if (sprite->data5 > 8) + { + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5); + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data5 -= sprite->data3; + sprite->data6 += 4; + } + else + DestroySprite(sprite); +} + +static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data3 = arg1; + gSprites[spriteID].data5 = 120; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet1; + } +} + +static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite) +{ + if (!(sprite->data7 & 3)) + sprite->pos1.y++; + if (sprite->data6 < 128) + { + u8 matrixNum; + + sprite->pos2.y = -Sin((u8)(sprite->data6), sprite->data5); + sprite->pos1.x = 120 + (sprite->data3 * sprite->data7) / 3; + sprite->data6++; + matrixNum = 31 - (sprite->data6 * 12 / 128); + if (sprite->data6 > 64) + sprite->subpriority = 1; + else + { + sprite->invisible = 0; + sprite->subpriority = 20; + if (sprite->data6 > 112 && sprite->data6 & 1) + sprite->invisible = 1; + } + if (matrixNum < 20) + matrixNum = 20; + sprite->oam.matrixNum = matrixNum; + sprite->data7++; + } + else + DestroySprite(sprite); +} + +static void CreatePostEvoSparkleSet2(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data3 = 3 - (Random() % 7); + gSprites[spriteID].data5 = 48 + (Random() & 0x3F); + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 20; + gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet2; + } +} + +void LoadEvoSparkleSpriteAndPal(void) +{ + LoadCompressedObjectPic(&sEvoSparkleSpriteSheets[0]); + LoadSpritePalettes(sEvoSparkleSpritePals); +} + +#define tFrameCounter data[15] + +u8 LaunchTask_PreEvoSparklesSet1(u16 arg0) +{ + u8 taskID = CreateTask(EvoTask_BeginPreSet1_FadeAndPlaySE, 0); + gTasks[taskID].data[1] = arg0; + return taskID; +} + +static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1; + PlaySE(SE_W025); +} + +static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 64) + { + if (!(gTasks[taskID].tFrameCounter & 7)) + { + u8 i; + for (i = 0; i < 4; i++) + CreatePreEvoSparkleSet1((0x78 & gTasks[taskID].tFrameCounter) * 2 + i * 64); + } + gTasks[taskID].tFrameCounter++; + } + else + { + gTasks[taskID].tFrameCounter = 96; + gTasks[taskID].func = EvoTask_WaitForPre1SparklesToGoUp; + } +} + +static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter != 0) + gTasks[taskID].tFrameCounter--; + else + DestroyTask(taskID); +} + +u8 LaunchTask_PreEvoSparklesSet2(void) +{ + return CreateTask(EvoTask_BeginPreSparklesSet2, 0); +} + +static void EvoTask_BeginPreSparklesSet2(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + gTasks[taskID].func = EvoTask_CreatePreEvoSparklesSet2; + PlaySE(SE_W062B); +} + +static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 96) + { + if (gTasks[taskID].tFrameCounter < 6) + { + u8 i; + for (i = 0; i < 9; i++) + CreatePreEvoSparkleSet2(i * 16); + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPreSet2Task; +} + +static void EvoTask_DestroyPreSet2Task(u8 taskID) +{ + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet1(void) +{ + return CreateTask(EvoTask_BeginPostSparklesSet1, 0); +} + +static void EvoTask_BeginPostSparklesSet1(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet1; + PlaySE(SE_REAPOKE); +} + +static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 48) + { + if (gTasks[taskID].tFrameCounter == 0) + { + u8 i; + for (i = 0; i < 16; i++) + CreatePostEvoSparkleSet1(i * 16, 4); + } + if (gTasks[taskID].tFrameCounter == 32) + { + u8 i; + for (i = 0; i < 16; i++) + CreatePostEvoSparkleSet1(i * 16, 8); + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet1Task; +} + +static void EvoTask_DestroyPostSet1Task(u8 taskID) +{ + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species) +{ + u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash, 0); + gTasks[taskID].data[2] = species; + return taskID; +} + +static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); + BeginNormalPaletteFade(0xFFF9001C, 0, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash; + PlaySE(SE_W080); +} + +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 128) + { + u8 i; + switch (gTasks[taskID].tFrameCounter) + { + default: + if (gTasks[taskID].tFrameCounter < 50) + CreatePostEvoSparkleSet2(Random() & 7); + break; + case 0: + for (i = 0; i < 8; i++) + CreatePostEvoSparkleSet2(i); + break; + case 32: + BeginNormalPaletteFade(0xFFFF001C, 0x10, 0x10, 0, 0x7FFF); + break; + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask; +} + +static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID) +{ + if (!gPaletteFade.active) + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species) +{ + u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash_Trade, 0); + gTasks[taskID].data[2] = species; + return taskID; +} + +static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); + BeginNormalPaletteFade(0xFFF90001, 0, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade; + PlaySE(SE_W080); +} + +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 128) + { + u8 i; + switch (gTasks[taskID].tFrameCounter) + { + default: + if (gTasks[taskID].tFrameCounter < 50) + CreatePostEvoSparkleSet2(Random() & 7); + break; + case 0: + for (i = 0; i < 8; i++) + CreatePostEvoSparkleSet2(i); + break; + case 32: + BeginNormalPaletteFade(0xFFFF0001, 0x10, 0x10, 0, 0x7FFF); + break; + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask; +} + +#undef tFrameCounter + +static void PokeEvoSprite_DummySpriteCB(struct Sprite* sprite) +{ + +} + +#define tPreEvoSpriteID data[1] +#define tPostEvoSpriteID data[2] +#define tEvoStopped data[8] + +u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID) +{ + u16 i; + u16 stack[16]; + u8 taskID; + s32 toDiv; + + for (i = 0; i < 16; i++) + stack[i] = 0x7FFF; + + taskID = CreateTask(sub_8149FC8, 0); + gTasks[taskID].tPreEvoSpriteID = preEvoSpriteID; + gTasks[taskID].tPostEvoSpriteID = postEvoSpriteID; + gTasks[taskID].data[3] = 256; + gTasks[taskID].data[4] = 16; + + toDiv = 65536; + SetOamMatrix(30, 256, 0, 0, 256); + SetOamMatrix(31, toDiv / gTasks[taskID].data[4], 0, 0, toDiv / gTasks[taskID].data[4]); + + gSprites[preEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB; + gSprites[preEvoSpriteID].oam.affineMode = 1; + gSprites[preEvoSpriteID].oam.matrixNum = 30; + gSprites[preEvoSpriteID].invisible = 0; + CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteID].oam.paletteNum * 16)], 16); + + gSprites[postEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB; + gSprites[postEvoSpriteID].oam.affineMode = 1; + gSprites[postEvoSpriteID].oam.matrixNum = 31; + gSprites[postEvoSpriteID].invisible = 0; + CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteID].oam.paletteNum * 16)], 16); + + gTasks[taskID].tEvoStopped = FALSE; + return taskID; +} + +static void sub_8149FC8(u8 taskID) +{ + gTasks[taskID].data[5] = 0; + gTasks[taskID].data[6] = 8; + gTasks[taskID].func = sub_8149FEC; +} + +static void sub_8149FEC(u8 taskID) +{ + if (gTasks[taskID].tEvoStopped) + PreEvoVisible_PostEvoInvisible_KillTask(taskID); + else if (gTasks[taskID].data[6] == 128) + PreEvoInVisible_PostEvoVisible_KillTask(taskID); + else + { + gTasks[taskID].data[6] += 2; + gTasks[taskID].data[5] ^= 1; + gTasks[taskID].func = sub_814A03C; + } +} + +static void sub_814A03C(u8 taskID) +{ + if (gTasks[taskID].tEvoStopped) + gTasks[taskID].func = PreEvoVisible_PostEvoInvisible_KillTask; + else + { + u16 oamMatrixArg; + u8 r6 = 0; + if (gTasks[taskID].data[5] == 0) + { + if (gTasks[taskID].data[3] < 256 - gTasks[taskID].data[6]) + gTasks[taskID].data[3] += gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[3] = 256; + r6++; + } + if (gTasks[taskID].data[4] > 16 + gTasks[taskID].data[6]) + gTasks[taskID].data[4] -= gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[4] = 16; + r6++; + } + } + else + { + if (gTasks[taskID].data[4] < 256 - gTasks[taskID].data[6]) + gTasks[taskID].data[4] += gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[4] = 256; + r6++; + } + if (gTasks[taskID].data[3] > 16 + gTasks[taskID].data[6]) + gTasks[taskID].data[3] -= gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[3] = 16; + r6++; + } + } + oamMatrixArg = 65536 / gTasks[taskID].data[3]; + SetOamMatrix(30, oamMatrixArg, 0, 0, oamMatrixArg); + + oamMatrixArg = 65536 / gTasks[taskID].data[4]; + SetOamMatrix(31, oamMatrixArg, 0, 0, oamMatrixArg); + if (r6 == 2) + gTasks[taskID].func = sub_8149FEC; + } +} + +static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID) +{ + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 1; + + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 0; + + DestroyTask(taskID); +} + +static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID) +{ + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 0; + + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 1; + + DestroyTask(taskID); +} diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c new file mode 100644 index 000000000..24168dc56 --- /dev/null +++ b/src/scene/evolution_scene.c @@ -0,0 +1,3966 @@ +#include "global.h" +#include "task.h" +#include "evolution_scene.h" +#include "evolution_graphics.h" +#include "palette.h" +#include "main.h" +#include "text.h" +#include "text_window.h" +#include "pokemon.h" +#include "string_util.h" +#include "battle.h" +#include "unknown_task.h" +#include "data2.h" +#include "decompress.h" +#include "m4a.h" +#include "trade.h" +#include "menu.h" +#include "pokedex.h" +#include "species.h" +#include "sound.h" +#include "songs.h" +#include "overworld.h" +#include "battle_message.h" +#include "pokemon_summary_screen.h" +#include "menu_cursor.h" +#include "strings2.h" + +struct EvoInfo +{ + u8 preEvoSpriteID; + u8 postEvoSpriteID; + u8 evoTaskID; + u8 field_3; + + u8 unk4[0x40]; + u8 unk44[0x40]; + u8 unk84[0x40]; + + u8 unkC4[0x40][0x20]; // 0x20148C4 + u8 unk8C4[0x40][0x20]; // 0x20150C4 + u8 unk10C4[0x40][0x20]; // 0x20158C4 + u8 unk18C4[0x40][0x20]; // 0x20160C4 + u8 unk20C4[0x40][0x20]; // 0x20168C4 + u8 unk28C4[0x40][0x20]; // 0x20170C4 + u8 unk30C4[0x40][0x20]; // 0x20178C4 + u8 unk38C4[0x40][0x20]; // 0x20180C4 + + u8 *unk40C4[0x40][0x20]; // 0x20188C4 + + u16 unk60C4[0x40][0x20]; // 0x201A8C4 + u16 unk70C4[0x40][0x20]; // 0x201B8C4 + u16 unk80C4[0x40][0x20]; // 0x201C8C4 + u16 unk90C4[0x40][0x20]; // 0x201D8C4 + + u8 unkA0C4; // 0x201E8C4 +}; + +#define sEvoInfo ((*(struct EvoInfo*)(ewram + 0x14800))) + +void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); +void sub_8024CEC(void); +void sub_8023A80(void); +void sub_802BC6C(void); +void sub_8023AD8(void); +void nullsub_6(void); +bool32 IsHMMove2(u16 move); + +extern struct Window gUnknown_03004210; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_03004288; +extern u16 gUnknown_03004280; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B8; +extern u8 gBattleTerrain; +extern u8 gReservedSpritePaletteCount; +extern u16 gMoveToLearn; +extern struct SpriteTemplate gUnknown_02024E8C; +extern u8 gUnk_2009000[]; // won't match if I 'ewram' it +extern bool8 gAffineAnimsDisabled; +extern u8 gDisplayedStringBattle[]; +extern u8 gBattleTextBuff2[]; + +extern u8 gBattleCommunication[]; +#define sEvoCursorPos gBattleCommunication[1] // when learning a new move +#define sEvoGraphicsTaskID gBattleCommunication[2] + +extern const u8 gUnknown_08400C4A[]; +extern const u8 gUnknown_08400C60[]; +extern const u8 gUnknown_08400C8D[]; +extern void * const gUnknown_081FAF4C[]; +extern const u8* const gBattleStringsTable[]; + +// this file's functions +static void Task_EvolutionScene(u8 taskID); +static void Task_TradeEvolutionScene(u8 taskID); +static void CB2_EvolutionSceneUpdate(void); +static void CB2_TradeEvolutionSceneUpdate(void); +static void EvoDummyFunc(void); +static void EvoDummyFunc2(void); +static void VBlankCB_EvolutionScene(void); +static void VBlankCB_TradeEvolutionScene(void); +static void sub_81150D8(void); + +// iwram common +MainCallback gCB2_AfterEvolution; + +// const data +static const u8 sUnknownShedinjaJpnString[] = _("ヌケニン"); +static const u8 sUnusedString0[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}"); +static const u8 sUnusedString1[] = _("▶\n "); +static const u8 sUnusedString2[] = _(" \n▶"); +static const u8 sUnusedString3[] = _(" \n "); +static const u8 sPadding[9] = {0}; + +// code + +static void CB2_BeginEvolutionScene(void) +{ + UpdatePaletteFade(); + RunTasks(); +} + +#define tState data[0] +#define tMonPtrHI data[1] +#define tMonPtrLO data[2] +#define tPreEvoSpecies data[3] +#define tPostEvoSpecies data[4] +#define tCanStop data[5] // in first fast data[5] only checks that +#define tBits data[5] // in the second task, it works as a bitfield +#define tLearnsFirstMove data[6] +#define tLearnMoveState data[8] +#define tData9 data[9] +#define tData10 data[10] +#define tEvoWasStopped data[11] +#define tPartyID data[12] + +#define TASK_BIT_CAN_STOP 0x1 +#define TASK_BIT_LEARN_MOVE 0x80 + +static void Task_BeginEvolutionScene(u8 taskID) +{ + struct Pokemon* mon = NULL; + switch (gTasks[taskID].tState) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].tState++; + break; + case 1: + if (!gPaletteFade.active) + { + u16 speciesToEvolve; + bool8 canStopEvo; + u8 partyID; + + mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + speciesToEvolve = gTasks[taskID].tPostEvoSpecies; + canStopEvo = gTasks[taskID].tCanStop; + partyID = gTasks[taskID].tPartyID; + + DestroyTask(taskID); + EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID); + } + break; + } +} + +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +{ + u8 taskID = CreateTask(Task_BeginEvolutionScene, 0); + gTasks[taskID].tState = 0; + gTasks[taskID].tMonPtrHI = (u32)(mon); + gTasks[taskID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[taskID].tPostEvoSpecies = speciesToEvolve; + gTasks[taskID].tCanStop = canStopEvo; + gTasks[taskID].tPartyID = partyID; + SetMainCallback2(CB2_BeginEvolutionScene); +} + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +{ + u8 name[20]; + u16 currSpecies; + u32 TiD, PiD; + const struct CompressedSpritePalette** pokePal; + u8 ID; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + REG_MOSAIC = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gBattleTerrain = BATTLE_TERRAIN_PLAIN; + + sub_800D6D4(); + sub_800DAB8(); + ResetSpriteData(); + remove_some_task(); + ResetTasks(); + FreeAllSpritePalettes(); + + gReservedSpritePaletteCount = 4; + + GetMonData(mon, MON_DATA_NICKNAME, name); + StringCopy10(gStringVar1, name); + StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); + + // preEvo sprite + currSpecies = GetMonData(mon, MON_DATA_SPECIES); + TiD = GetMonData(mon, MON_DATA_OT_ID); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies], + gMonFrontPicCoords[currSpecies].coords, + gMonFrontPicCoords[currSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[1], currSpecies); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(currSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x110, 0x20); + + GetMonSpriteTemplate_803C56C(currSpecies, 1); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.preEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 1; + gSprites[ID].invisible = 1; + + // postEvo sprite + DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], + gMonFrontPicCoords[speciesToEvolve].coords, + gMonFrontPicCoords[speciesToEvolve].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], speciesToEvolve); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(speciesToEvolve, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gSprites[ID].invisible = 1; + + LoadEvoSparkleSpriteAndPal(); + + sEvoInfo.evoTaskID = ID = CreateTask(Task_EvolutionScene, 0); + gTasks[ID].tState = 0; + gTasks[ID].tPreEvoSpecies = currSpecies; + gTasks[ID].tPostEvoSpecies = speciesToEvolve; + gTasks[ID].tMonPtrHI = (u32)(mon); + gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[ID].tCanStop = canStopEvo; + gTasks[ID].tLearnsFirstMove = TRUE; + gTasks[ID].tEvoWasStopped = FALSE; + gTasks[ID].tPartyID = partyID; + + memcpy(gUnk_2009000, &gPlttBufferUnfaded[0x20], 0x60); + + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_EvolutionScene); + m4aMPlayAllStop(); + SetMainCallback2(CB2_EvolutionSceneUpdate); +} + +static void CB2_EvolutionSceneLoadGraphics(void) +{ + u8 ID; + const struct CompressedSpritePalette** pokePal; + u16 postEvoSpecies; + u32 TiD, PiD; + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID]; + + postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies; + TiD = GetMonData(Mon, MON_DATA_OT_ID); + PiD = GetMonData(Mon, MON_DATA_PERSONALITY); + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + REG_MOSAIC = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gBattleTerrain = BATTLE_TERRAIN_PLAIN; + + sub_800D6D4(); + sub_800DAB8(); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + + DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], + gMonFrontPicCoords[postEvoSpecies].coords, + gMonFrontPicCoords[postEvoSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], postEvoSpecies); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_EvolutionScene); + SetMainCallback2(CB2_EvolutionSceneUpdate); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); +} + +static void CB2_TradeEvolutionSceneLoadGraphics(void) +{ + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID]; + u16 postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies; + + switch (gMain.state) + { + case 0: + REG_DISPCNT = 0; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + gMain.state++; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + gMain.state++; + break; + case 2: + LoadTextWindowGraphics(&gUnknown_03004828->window); + gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); + LoadTextWindowGraphics(&gUnknown_03004828->window); + MenuZeroFillScreen(); + ResetPaletteFade(); + gMain.state++; + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_TradeEvolutionScene); + break; + case 3: + sub_804E22C(); + gMain.state++; + break; + case 4: + { + const struct CompressedSpritePalette** pokePal; + u32 TiD = GetMonData(Mon, MON_DATA_OT_ID); + u32 PiD = GetMonData(Mon, MON_DATA_PERSONALITY); + DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], + gMonFrontPicCoords[postEvoSpecies].coords, + gMonFrontPicCoords[postEvoSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], postEvoSpecies); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + gMain.state++; + } + break; + case 5: + { + u8 ID; + + GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gMain.state++; + } + break; + case 6: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetMainCallback2(CB2_TradeEvolutionSceneUpdate); + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; + break; + } +} + +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID) +{ + u8 name[20]; + u16 currSpecies; + u32 TiD, PiD; + const struct CompressedSpritePalette** pokePal; + u8 ID; + + GetMonData(mon, MON_DATA_NICKNAME, name); + StringCopy10(gStringVar1, name); + StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); + + gAffineAnimsDisabled = TRUE; + + // preEvo sprite + currSpecies = GetMonData(mon, MON_DATA_SPECIES); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + TiD = GetMonData(mon, MON_DATA_OT_ID); + sEvoInfo.preEvoSpriteID = preEvoSpriteID; + DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], + gMonFrontPicCoords[speciesToEvolve].coords, + gMonFrontPicCoords[speciesToEvolve].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[1], speciesToEvolve); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(speciesToEvolve, 1); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gSprites[ID].invisible = 1; + + LoadEvoSparkleSpriteAndPal(); + + sEvoInfo.evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0); + gTasks[ID].tState = 0; + gTasks[ID].tPreEvoSpecies = currSpecies; + gTasks[ID].tPostEvoSpecies = speciesToEvolve; + gTasks[ID].tMonPtrHI = (u32)(mon); + gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[ID].tLearnsFirstMove = TRUE; + gTasks[ID].tEvoWasStopped = FALSE; + gTasks[ID].tPartyID = partyID; + + SetMainCallback2(CB2_TradeEvolutionSceneUpdate); +} + +static void CB2_EvolutionSceneUpdate(void) +{ + AnimateSprites(); + BuildOamBuffer(); + sub_800374C(&gUnknown_03004210); + UpdatePaletteFade(); + RunTasks(); +} + +static void CB2_TradeEvolutionSceneUpdate(void) +{ + AnimateSprites(); + BuildOamBuffer(); + sub_80035AC(&gUnknown_03004828->window); + UpdatePaletteFade(); + RunTasks(); +} + +static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) +{ + u32 data = 0; + if (gEvolutionTable[preEvoSpecies].evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6) + { + s32 i; + struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount]; + const struct EvolutionData* EvoTable; + const struct EvolutionData* Evos; + + CopyMon(Shedinja, mon, sizeof(struct Pokemon)); + SetMonData(Shedinja, MON_DATA_SPECIES, (void*)(&gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies)); + SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)(gSpeciesNames[gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies])); + SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_10, (void*)(&data)); + for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++) + SetMonData(Shedinja, i, (void*)(&data)); + for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++) + SetMonData(Shedinja, i, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_STATUS, (void*)(&data)); + data = 0xFF; + SetMonData(Shedinja, MON_DATA_MAIL, (void*)(&data)); + + CalculateMonStats(Shedinja); + CalculatePlayerPartyCount(); + + // can't match it otherwise, ehh + EvoTable = gEvolutionTable; + Evos = EvoTable + preEvoSpecies; + GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 3); + + if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA + && GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE + && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK) + SetMonData(Shedinja, MON_DATA_NICKNAME, sUnknownShedinjaJpnString); + } +} + +static void Task_EvolutionScene(u8 taskID) +{ + u32 var; + struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + + // check if B Button was held, so the evolution gets stopped + if (gMain.heldKeys == B_BUTTON && gTasks[taskID].tState == 8 && gTasks[taskID].tBits & TASK_BIT_CAN_STOP) + { + gTasks[taskID].tState = 16; + if (gTasks[sEvoGraphicsTaskID].isActive) + gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + } + switch (gTasks[taskID].tState) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gSprites[sEvoInfo.preEvoSpriteID].invisible = 0; + gTasks[taskID].tState++; + break; + case 1: // print 'whoa, poke is evolving!!!' msg + if (!gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + gTasks[taskID].tState++; + } + break; + case 2: // wait for string, play cry + if (gUnknown_03004210.state == 0) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 3: // wait for cry, play tu du SE + if (IsCryFinished()) + { + PlaySE(BGM_ME_SHINKA); + gTasks[taskID].tState++; + } + break; + case 4: // play evolution music and fade screen black + if (!IsSEPlaying()) + { + PlayNewMapMusic(BGM_SHINKA); + gTasks[taskID].tState++; + BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0); + } + break; + case 5: // after screen fade, preapre evo sparkles + if (!gPaletteFade.active) + { + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); + gTasks[taskID].tState++; + } + break; + case 6: // another set of evo sparkles + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[taskID].tState++; + sEvoInfo.field_3 = 1; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + } + break; + case 7: // launch task that flashes pre evo with post evo sprites + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID); + gTasks[taskID].tState++; + } + break; + case 8: // wait for the above task to finish + if (--sEvoInfo.field_3 == 0) + { + sEvoInfo.field_3 = 3; + if (!gTasks[sEvoGraphicsTaskID].isActive) + gTasks[taskID].tState++; + } + break; + case 9: // post evo sparkles + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + gTasks[taskID].tState++; + break; + case 10: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskID].tPostEvoSpecies); + gTasks[taskID].tState++; + } + break; + case 11: // play tu du sound after evolution + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + PlaySE(SE_EXP); + gTasks[taskID].tState++; + } + break; + case 12: // play poke cry after evolution and return screed to pre-fade state + if (IsSEPlaying()) + { + m4aMPlayAllStop(); + PlayCry1(gTasks[taskID].tPostEvoSpecies, 0); + memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60); + BeginNormalPaletteFade(0x1C, 0, 0x10, 0, 0); + gTasks[taskID].tState++; + } + break; + case 13: // congratulations string and rename prompt + if (IsCryFinished() && !gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C60); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + PlayBGM(BGM_FANFA5); + gTasks[taskID].tState++; + SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); + CalculateMonStats(mon); + EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); + IncrementGameStat(14); + } + break; + case 14: // check if it wants to learn a new move + if (gUnknown_03004210.state == 0) + { + var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove); + if (var != 0 && !gTasks[taskID].tEvoWasStopped) + { + u8 text[20]; + + Overworld_PlaySpecialMapMusic(); + gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; + gTasks[taskID].tLearnsFirstMove = FALSE; + gTasks[taskID].tLearnMoveState = 0; + GetMonData(mon, MON_DATA_NICKNAME, text); + StringCopy10(gBattleTextBuff1, text); + if (var == 0xFFFF) // no place to learn it + gTasks[taskID].tState = 21; + else if (var == 0xFFFE) // it already knows that move + break; + else + gTasks[taskID].tState = 19; // has less than 4 moves, so it's been learned + } + else // no move to learn + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].tState++; + } + } + break; + case 15: // task has finished, return + if (!gPaletteFade.active) + { + if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE)) + Overworld_PlaySpecialMapMusic(); + if (!gTasks[taskID].tEvoWasStopped) + CreateShedinja(gTasks[taskID].tPreEvoSpecies, mon); + DestroyTask(taskID); + SetMainCallback2(gCB2_AfterEvolution); + } + break; + case 16: // evolution has been canceled, stop music and re-fade palette + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + m4aMPlayAllStop(); + BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, 0x7FFF); + gTasks[taskID].tState++; + } + break; + case 17: // play cry of the pokemon trying to evolve again, evolution has been stopped + if (!gPaletteFade.active) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 18: // after the cry, print the string 'WHOA IT DID NOT EVOLVE!!!' + if (IsCryFinished()) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C8D); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + gTasks[taskID].tEvoWasStopped = TRUE; + gTasks[taskID].tState = 14; + } + break; + case 19: // pokemon learned a new move, print string and play a fanfare + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + PlayFanfare(BGM_FANFA1); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter + gTasks[taskID].tState++; + } + break; + case 20: // wait a bit and check if can learn another move + if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0) + gTasks[taskID].tState = 14; + break; + case 21: // try to learn a new move + switch (gTasks[taskID].tLearnMoveState) + { + case 0: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 1: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 2: + if (gUnknown_03004210.state != 0) + break; + if (!IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tData9 = 5; + gTasks[taskID].tData10 = 9; + gTasks[taskID].tLearnMoveState++; + } + case 3: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8023A80(); + gTasks[taskID].tLearnMoveState++; + sEvoCursorPos = 0; + sub_802BC6C(); + } + break; + case 4: + if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + sEvoCursorPos = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + sEvoCursorPos = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + sub_8023AD8(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + PlaySE(SE_SELECT); + if (sEvoCursorPos != 0) + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + else + { + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9; + if (gTasks[taskID].tLearnMoveState == 5) + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + } + if (gMain.newKeys & B_BUTTON) + { + sub_8023AD8(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + PlaySE(SE_SELECT); + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + } + break; + case 5: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID, + gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, + gMoveToLearn); + gTasks[taskID].tLearnMoveState++; + } + break; + case 6: + if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate) + { + var = sub_809FA30(); // moveID + if (var == 4) + gTasks[taskID].tLearnMoveState = 9; + else + { + u16 move = GetMonData(mon, var + MON_DATA_MOVE1); + if (IsHMMove2(move)) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState = 11; + } + else + { + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 2; + gBattleTextBuff2[2] = move; + gBattleTextBuff2[3] = (move & 0xFF00) >> 8; + gBattleTextBuff2[4] = EOS; + RemoveMonPPBonus(mon, var); + SetMonMoveSlot(mon, gMoveToLearn, var); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + } + } + break; + case 7: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 8: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tState = 19; + } + break; + case 9: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tData9 = 10; + gTasks[taskID].tData10 = 0; + gTasks[taskID].tLearnMoveState = 3; + break; + case 10: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tState = 14; + break; + case 11: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + gTasks[taskID].tLearnMoveState = 5; + break; + } + break; + } +} + +static void Task_TradeEvolutionScene(u8 taskID) +{ + u32 var; + struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + + switch (gTasks[taskID].tState) + { + case 0: + StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A); + sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tState++; + break; + case 1: + if (gUnknown_03004828->window.state == 0) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 2: + if (IsCryFinished()) + { + m4aSongNumStop(BGM_SHINKA); + PlaySE(BGM_ME_SHINKA); + gTasks[taskID].tState++; + } + break; + case 3: + if (!IsSEPlaying()) + { + PlayBGM(BGM_SHINKA); + gTasks[taskID].tState++; + BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0); + } + break; + case 4: + if (!gPaletteFade.active) + { + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); + gTasks[taskID].tState++; + } + break; + case 5: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[taskID].tState++; + sEvoInfo.field_3 = 1; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + } + break; + case 6: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID); + gTasks[taskID].tState++; + } + break; + case 7: + if (--sEvoInfo.field_3 == 0) + { + sEvoInfo.field_3 = 3; + if (!gTasks[sEvoGraphicsTaskID].isActive) + gTasks[taskID].tState++; + } + break; + case 8: + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + gTasks[taskID].tState++; + break; + case 9: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskID].tPostEvoSpecies); + gTasks[taskID].tState++; + } + break; + case 10: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + PlaySE(SE_EXP); + gTasks[taskID].tState++; + } + break; + case 11: + if (IsSEPlaying()) + { + PlayCry1(gTasks[taskID].tPostEvoSpecies, 0); + memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60); + BeginNormalPaletteFade(1, 0, 0x10, 0, 0); + gTasks[taskID].tState++; + } + break; + case 12: + if (IsCryFinished() && !gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C60); + sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + PlayFanfare(BGM_FANFA5); + gTasks[taskID].tState++; + SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); + CalculateMonStats(mon); + EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); + IncrementGameStat(14); + } + break; + case 13: + if (gUnknown_03004828->window.state == 0 && IsFanfareTaskInactive() == TRUE) + { + var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove); + if (var != 0 && !gTasks[taskID].tEvoWasStopped) + { + u8 text[20]; + + gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; + gTasks[taskID].tLearnsFirstMove = FALSE; + gTasks[taskID].tLearnMoveState = 0; + GetMonData(mon, MON_DATA_NICKNAME, text); + StringCopy10(gBattleTextBuff1, text); + if (var == 0xFFFF) + gTasks[taskID].tState = 17; + else if (var == 0xFFFE) + break; + else + gTasks[taskID].tState = 15; + } + else + { + PlayBGM(BGM_SHINKA); + sub_8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tState++; + } + } + break; + case 14: + if (gUnknown_03004828->window.state == 0) + { + DestroyTask(taskID); + SetMainCallback2(gCB2_AfterEvolution); + } + break; + case 15: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + PlayFanfare(BGM_FANFA1); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter + gTasks[taskID].tState++; + } + break; + case 16: + if (gUnknown_03004828->window.state == 0 && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tLearnsFirstMove == 0) + gTasks[taskID].tState = 13; + break; + case 17: + switch (gTasks[taskID].tLearnMoveState) + { + case 0: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 1: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 2: + if (gUnknown_03004828->window.state != 0) + break; + if (!IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tData9 = 5; + gTasks[taskID].tData10 = 9; + gTasks[taskID].tLearnMoveState++; + } + case 3: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + DrawTextWindow(&gUnknown_03004828->window, 24, 8, 29, 13); + sEvoCursorPos = 0; + InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); + sub_8002F44(&gUnknown_03004828->window); + sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); + sub_81150D8(); + gTasks[taskID].tLearnMoveState++; + sEvoCursorPos = 0; + } + break; + case 4: + if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0) + { + PlaySE(SE_SELECT); + EvoDummyFunc2(); + sEvoCursorPos = 0; + sub_81150D8(); + } + if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0) + { + PlaySE(SE_SELECT); + EvoDummyFunc2(); + sEvoCursorPos = 1; + sub_81150D8(); + } + if (gMain.newKeys & A_BUTTON) + { + ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); + DestroyMenuCursor(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + PlaySE(SE_SELECT); + if (sEvoCursorPos != 0) + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + else + { + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9; + if (gTasks[taskID].tLearnMoveState == 5) + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + } + if (gMain.newKeys & B_BUTTON) + { + ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); + DestroyMenuCursor(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + PlaySE(SE_SELECT); + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + } + break; + case 5: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID, + gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, + gMoveToLearn); + gTasks[taskID].tLearnMoveState++; + } + break; + case 6: + if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate) + { + var = sub_809FA30(); // moveID + if (var == 4) + gTasks[taskID].tLearnMoveState = 9; + else + { + u16 move = GetMonData(mon, var + MON_DATA_MOVE1); + if (IsHMMove2(move)) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState = 11; + } + else + { + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 2; + gBattleTextBuff2[2] = move; + gBattleTextBuff2[3] = (move & 0xFF00) >> 8; + gBattleTextBuff2[4] = EOS; + RemoveMonPPBonus(mon, var); + SetMonMoveSlot(mon, gMoveToLearn, var); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + } + } + break; + case 7: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 8: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tState = 15; + } + break; + case 9: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tData9 = 10; + gTasks[taskID].tData10 = 0; + gTasks[taskID].tLearnMoveState = 3; + break; + case 10: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tState = 13; + break; + case 11: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + gTasks[taskID].tLearnMoveState = 5; + break; + } + break; + } +} + +/* +DizzyEgg, 27.08.2017 +NOTE: + Functions below are all unused. + What's more, they do NOT exist in Emerald. + That's why I think there is no reason to decompile those, + as they probably were prototypes for the evolution + functions. +*/ + +/* +void unref_sub_8113B50(u8 *a, u8 *b) +{ + //u8 *sp0 = a; + //u8 *sp4 = b; +#define sp0 a +#define sp4 b + s32 sp8; + s32 spC = 0; + u32 sp10 = 0; + s32 sp14; + s32 r6; + u32 r8; + + for (sp8 = 0; sp8 < 64; sp8++) + { + sEvoInfo.unk84[sp8] = 0; + sEvoInfo.unk4[sp8] = 0; + sEvoInfo.unk44[sp8] = 0; + for (r6 = 0; r6 < 32; r6++) + { + sEvoInfo.unk10C4[sp8][r6] = 0; + sEvoInfo.unk18C4[sp8][r6] = 0; + sEvoInfo.unk20C4[sp8][r6] = 0; + sEvoInfo.unk28C4[sp8][r6] = 0; + sEvoInfo.unkC4[sp8][r6] = 0; + sEvoInfo.unk8C4[sp8][r6] = 0; + sEvoInfo.unk30C4[sp8][r6] = 0; + sEvoInfo.unk38C4[sp8][r6] = 0; + + sEvoInfo.unk60C4[sp8][r6] = 0; + sEvoInfo.unk70C4[sp8][r6] = 0; + sEvoInfo.unk80C4[sp8][r6] = 0; + sEvoInfo.unk90C4[sp8][r6] = 0; + } + } + + sEvoInfo.unkA0C4 = 64; + r8 = 0; + for (sp8 = 0; sp8 < 64; sp8++) + { + //_08113C32 + u32 r3 = 0; + u8 *r2 = sp0 + r8; + + for (r6 = 0; r6 < 64; r6++) + { + sEvoInfo.unk40C4[sp8][r6 >> 1] = r2; + switch (r3) + { + case 0: + switch (r6 & 1) + { + case 0: + if (*r2 & 0xF) + { + sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6; + r3 = 1; + } + break; + case 1: + if (*r2 & 0xF0) + { + sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6; + r3 = 1; + } + break; + } + break; + case 1: + switch (r6 & r3) + { + case 0: + if (*r2 & 0xF) + { + sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1; + sEvoInfo.unk4[sp8]++; + r3 = 0; + } + break; + case 1: + if (*r2 & 0xF0) + { + sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1; + sEvoInfo.unk4[sp8]++; + r3 = 0; + } + break; + } + } + //if (!((r6 + 1) & 7)) + if ((r6 + 1) % 8 == 0) + r2 += 0x1D; + else if (r6 & 1) + r2 += 1; + } + if (r3) + { + sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6; + sEvoInfo.unk4[sp8]++; + } + //_08113D26 + if (!((sp8 + 1) & 7)) + r8 += 0xE4; + else + r8 += 4; + } + //_08113D4A + r8 = 0; + for (sp8 = 0; sp8 < 64; sp8++) + { + //_08113D6A + u32 r3 = 0; + u8 *r2 = sp4 + r8; + + for (r6 = 0; r6 < 64; r6++) + { + switch (r3) + { + case 0: + switch (r6 & 1) + { + case 0: + if (*r2 & 0xF) + { + sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6; + r3 = 1; + } + break; + case 1: + if (*r2 & 0xF0) + { + sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6; + r3 = 1; + } + break; + } + break; + case 1: + switch (r6 & r3) + { + case 0: + if (*r2 & 0xF) + { + sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1; + sEvoInfo.unk44[sp8]++; + r3 = 0; + } + break; + case 1: + if (*r2 & 0xF0) + { + sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1; + sEvoInfo.unk44[sp8]++; + r3 = 0; + } + break; + } + } + //_08113DE4 + if (!((r6 + 1) & 7)) + r2 += 0x1D; + else if (r6 & 1) + r2 += 1; + + } + if (r3) + { + sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6; + sEvoInfo.unk44[sp8]++; + } + //if (!((sp8 + 1) & 7)) + if ((sp8 + 1) % 8 == 0) + r8 += 0xE4; + else + r8 += 4; + } + + for (sp8 = 0; sp8 < 0x40; sp8++) //_08113E3A + { + if (sEvoInfo.unk4[sp8] < sEvoInfo.unk44[sp8]) + { + for (spC = 0; spC < sEvoInfo.unk4[sp8]; spC++) + { + sp14 = 0x100; + + for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++) + { + s32 r3; + + //_08113EA4 + if (sEvoInfo.unk10C4[sp8][spC] > sEvoInfo.unk20C4[sp8][r6]) + r3 = sEvoInfo.unk10C4[sp8][spC] - sEvoInfo.unk20C4[sp8][r6]; + else + r3 = sEvoInfo.unk20C4[sp8][r6] - sEvoInfo.unk10C4[sp8][spC]; + + if (sEvoInfo.unk18C4[sp8][spC] > sEvoInfo.unk28C4[sp8][spC]) + r3 += sEvoInfo.unk18C4[sp8][spC] - sEvoInfo.unk28C4[sp8][spC]; + else + r3 += sEvoInfo.unk28C4[sp8][spC] - sEvoInfo.unk18C4[sp8][spC]; + + if (sp14 >= r3 && sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0) + { + sp10 = r6; + sp14 = r3; + } + } + //_08113F3E + sub_81141F0(spC, sp10, sp8); + } + //_08113F54 + + for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++) + { + if (sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0) + sub_811430C(r6, sp8); + } + } + //_08113F9E + if (sEvoInfo.unk4[sp8] == sEvoInfo.unk44[sp8]) + { + for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) + sub_81141F0(r6, r6, sp8); + } + //_08113FCC + if (sEvoInfo.unk4[sp8] > sEvoInfo.unk44[sp8]) + { + for (sp10 = 0; sp10 < sEvoInfo.unk44[sp8]; sp10++) + { + sp14 = 0x100; + + for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) + { + s32 r3; + + if (sEvoInfo.unk10C4[sp8][r6] > sEvoInfo.unk20C4[sp8][sp10]) + r3 = sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10]; + else + r3 = sEvoInfo.unk20C4[sp8][sp10] - sEvoInfo.unk10C4[sp8][r6]; + + if (sEvoInfo.unk18C4[sp8][r6] > sEvoInfo.unk28C4[sp8][sp10]) + r3 += sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10]; + else + r3 += sEvoInfo.unk28C4[sp8][sp10] - sEvoInfo.unk18C4[sp8][r6]; + + //r3 = abs(sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10]); + //r3 += abs(sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10]); + + if (sp14 > r3 && sEvoInfo.unkC4[sp8][r6] == 0) + { + spC = r6; + sp14 = r3; + } + } + //_081140C4 + sEvoInfo.unk30C4[sp8][spC] = sEvoInfo.unk20C4[sp8][sp10]; + sEvoInfo.unk38C4[sp8][spC] = sEvoInfo.unk28C4[sp8][sp10]; + sEvoInfo.unkC4[sp8][spC] = 1; + } + //_08114104 + for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) + { + sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk30C4[sp8][r6]; + sEvoInfo.unk28C4[sp8][r6] = sEvoInfo.unk38C4[sp8][r6]; + if (sEvoInfo.unkC4[sp8][r6] != 0) + { + sEvoInfo.unkC4[sp8][r6] = 0; + sub_81141F0(r6, r6, sp8); + } + else + { + // Ugh, can't get this part right + //u8 *ptr1 = &sEvoInfo.unk10C4[sp8][r6]; + //u8 *ptr2 = &sEvoInfo.unk18C4[sp8][r6]; + //s32 r2 = *ptr1 + (*ptr2 - *ptr1) / 2; + + //u8 r0_ = sEvoInfo.unk10C4[sp8][r6]; + //u8 r2_ = sEvoInfo.unk18C4[sp8][r6]; + //s32 r2 = (r0_ - r2_) / 2; + + s32 r2 = (sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk10C4[sp8][r6]); + s32 r2_ = sEvoInfo.unk10C4[sp8][r6]; + + sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk28C4[sp8][r6] = r2_ + r2 / 2; + sEvoInfo.unk28C4[sp8][r6]++; + sub_81141F0(r6, r6, sp8); + } + } + } + //_081141C4 + } +#undef sp0 +#undef sp4 +} +*/ +__attribute__((naked)) +void unref_sub_8113B50() +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x3C\n\ + str r0, [sp]\n\ + str r1, [sp, 0x4]\n\ + movs r0, 0\n\ + str r0, [sp, 0xC]\n\ + movs r1, 0\n\ + str r1, [sp, 0x10]\n\ + movs r2, 0\n\ + str r2, [sp, 0x8]\n\ + ldr r3, _08113C60 @ =0x02014800\n\ + mov r12, r3\n\ + ldr r4, _08113C64 @ =0x000018c4\n\ + add r4, r12\n\ + mov r10, r4\n\ + ldr r5, _08113C68 @ =0x000020c4\n\ + add r5, r12\n\ + mov r8, r5\n\ +_08113B7C:\n\ + adds r0, r3, 0\n\ + adds r0, 0x84\n\ + ldr r1, [sp, 0x8]\n\ + adds r0, r1, r0\n\ + strb r2, [r0]\n\ + adds r0, r3, 0x4\n\ + adds r0, r1, r0\n\ + strb r2, [r0]\n\ + ldr r4, _08113C6C @ =0x02014844\n\ + adds r0, r1, r4\n\ + strb r2, [r0]\n\ + movs r6, 0\n\ + lsls r1, 5\n\ + mov r9, r1\n\ + ldr r5, [sp, 0x8]\n\ + lsls r4, r5, 6\n\ +_08113B9C:\n\ + mov r0, r9\n\ + adds r1, r6, r0\n\ + ldr r5, _08113C70 @ =0x020158c4\n\ + adds r0, r1, r5\n\ + strb r2, [r0]\n\ + mov r5, r10\n\ + adds r0, r1, r5\n\ + strb r2, [r0]\n\ + mov r5, r8\n\ + adds r0, r1, r5\n\ + strb r2, [r0]\n\ + ldr r5, _08113C74 @ =0x020170c4\n\ + adds r0, r1, r5\n\ + strb r2, [r0]\n\ + adds r7, r3, 0\n\ + adds r7, 0xC4\n\ + adds r0, r1, r7\n\ + strb r2, [r0]\n\ + ldr r5, _08113C78 @ =0x000008c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strb r2, [r0]\n\ + ldr r5, _08113C7C @ =0x000030c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strb r2, [r0]\n\ + ldr r5, _08113C80 @ =0x000038c4\n\ + adds r0, r3, r5\n\ + adds r1, r0\n\ + strb r2, [r1]\n\ + lsls r1, r6, 1\n\ + adds r1, r4\n\ + ldr r5, _08113C84 @ =0x000060c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strh r2, [r0]\n\ + ldr r5, _08113C88 @ =0x000070c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strh r2, [r0]\n\ + ldr r5, _08113C8C @ =0x000080c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strh r2, [r0]\n\ + ldr r5, _08113C90 @ =0x000090c4\n\ + adds r0, r3, r5\n\ + adds r1, r0\n\ + strh r2, [r1]\n\ + adds r6, 0x1\n\ + cmp r6, 0x1F\n\ + ble _08113B9C\n\ + ldr r0, [sp, 0x8]\n\ + adds r0, 0x1\n\ + str r0, [sp, 0x8]\n\ + cmp r0, 0x3F\n\ + ble _08113B7C\n\ + ldr r1, _08113C94 @ =0x0000a0c4\n\ + add r1, r12\n\ + movs r0, 0x40\n\ + strb r0, [r1]\n\ + movs r1, 0\n\ + mov r8, r1\n\ + movs r2, 0\n\ + str r2, [sp, 0x8]\n\ + movs r3, 0x80\n\ + lsls r3, 5\n\ + adds r3, r7\n\ + mov r12, r3\n\ + movs r4, 0xC0\n\ + lsls r4, 5\n\ + adds r4, r7\n\ + mov r9, r4\n\ + movs r5, 0\n\ + adds r4, r7, 0\n\ + subs r4, 0xC0\n\ +_08113C32:\n\ + movs r3, 0\n\ + ldr r2, [sp]\n\ + add r2, r8\n\ + movs r6, 0\n\ + ldr r0, [sp, 0x8]\n\ + adds r0, 0x1\n\ + str r0, [sp, 0x30]\n\ + ldr r1, [sp, 0x8]\n\ + lsls r1, 7\n\ + mov r10, r1\n\ + movs r7, 0x1\n\ + negs r7, r7\n\ +_08113C4A:\n\ + asrs r0, r6, 1\n\ + lsls r0, 2\n\ + add r0, r10\n\ + ldr r1, _08113C98 @ =0x020188c4\n\ + adds r0, r1\n\ + str r2, [r0]\n\ + cmp r3, 0\n\ + beq _08113C9C\n\ + cmp r3, 0x1\n\ + beq _08113CC6\n\ + b _08113CF4\n\ + .align 2, 0\n\ +_08113C60: .4byte 0x02014800\n\ +_08113C64: .4byte 0x000018c4\n\ +_08113C68: .4byte 0x000020c4\n\ +_08113C6C: .4byte 0x02014844\n\ +_08113C70: .4byte 0x020158c4\n\ +_08113C74: .4byte 0x020170c4\n\ +_08113C78: .4byte 0x000008c4\n\ +_08113C7C: .4byte 0x000030c4\n\ +_08113C80: .4byte 0x000038c4\n\ +_08113C84: .4byte 0x000060c4\n\ +_08113C88: .4byte 0x000070c4\n\ +_08113C8C: .4byte 0x000080c4\n\ +_08113C90: .4byte 0x000090c4\n\ +_08113C94: .4byte 0x0000a0c4\n\ +_08113C98: .4byte 0x020188c4\n\ +_08113C9C:\n\ + movs r0, 0x1\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08113CAA\n\ + cmp r0, 0x1\n\ + beq _08113CB0\n\ + b _08113CF4\n\ +_08113CAA:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF\n\ + b _08113CB4\n\ +_08113CB0:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF0\n\ +_08113CB4:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08113CF4\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + add r0, r12\n\ + strb r6, [r0]\n\ + movs r3, 0x1\n\ + b _08113CF4\n\ +_08113CC6:\n\ + adds r0, r6, 0\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08113CD4\n\ + cmp r0, 0x1\n\ + beq _08113CDA\n\ + b _08113CF4\n\ +_08113CD4:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF\n\ + b _08113CDE\n\ +_08113CDA:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF0\n\ +_08113CDE:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08113CF4\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + add r0, r9\n\ + strb r7, [r0]\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + movs r3, 0\n\ +_08113CF4:\n\ + adds r0, r6, 0x1\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08113D02\n\ + adds r2, 0x1D\n\ + b _08113D0C\n\ +_08113D02:\n\ + movs r0, 0x1\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08113D0C\n\ + adds r2, 0x1\n\ +_08113D0C:\n\ + adds r7, 0x1\n\ + adds r6, 0x1\n\ + cmp r6, 0x3F\n\ + ble _08113C4A\n\ + cmp r3, 0\n\ + beq _08113D26\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + add r0, r9\n\ + strb r6, [r0]\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ +_08113D26:\n\ + movs r0, 0x7\n\ + ldr r2, [sp, 0x30]\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + bne _08113D36\n\ + movs r3, 0xE4\n\ + add r8, r3\n\ + b _08113D3A\n\ +_08113D36:\n\ + movs r0, 0x4\n\ + add r8, r0\n\ +_08113D3A:\n\ + adds r5, 0x20\n\ + adds r4, 0x1\n\ + ldr r1, [sp, 0x8]\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x8]\n\ + cmp r1, 0x3F\n\ + bgt _08113D4A\n\ + b _08113C32\n\ +_08113D4A:\n\ + movs r2, 0\n\ + mov r8, r2\n\ + movs r3, 0\n\ + str r3, [sp, 0x8]\n\ + ldr r0, _08113D84 @ =0x02014844\n\ + movs r4, 0x82\n\ + lsls r4, 6\n\ + adds r4, r0\n\ + mov r10, r4\n\ + movs r5, 0xA2\n\ + lsls r5, 6\n\ + adds r7, r0, r5\n\ + movs r5, 0\n\ + adds r4, r0, 0\n\ + movs r0, 0x1\n\ + mov r9, r0\n\ +_08113D6A:\n\ + movs r3, 0\n\ + ldr r2, [sp, 0x4]\n\ + add r2, r8\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x8]\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x30]\n\ +_08113D78:\n\ + cmp r3, 0\n\ + beq _08113D88\n\ + cmp r3, 0x1\n\ + beq _08113DB4\n\ + b _08113DE4\n\ + .align 2, 0\n\ +_08113D84: .4byte 0x02014844\n\ +_08113D88:\n\ + adds r0, r6, 0\n\ + mov r1, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08113D98\n\ + cmp r0, 0x1\n\ + beq _08113D9E\n\ + b _08113DE4\n\ +_08113D98:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF\n\ + b _08113DA2\n\ +_08113D9E:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF0\n\ +_08113DA2:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08113DE4\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + add r0, r10\n\ + strb r6, [r0]\n\ + movs r3, 0x1\n\ + b _08113DE4\n\ +_08113DB4:\n\ + adds r0, r6, 0\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08113DC2\n\ + cmp r0, 0x1\n\ + beq _08113DC8\n\ + b _08113DE4\n\ +_08113DC2:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF\n\ + b _08113DCC\n\ +_08113DC8:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF0\n\ +_08113DCC:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08113DE4\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + adds r0, r7\n\ + subs r1, r6, 0x1\n\ + strb r1, [r0]\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + movs r3, 0\n\ +_08113DE4:\n\ + adds r1, r6, 0x1\n\ + movs r0, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08113DF2\n\ + adds r2, 0x1D\n\ + b _08113DFC\n\ +_08113DF2:\n\ + mov r0, r9\n\ + ands r6, r0\n\ + cmp r6, 0\n\ + beq _08113DFC\n\ + adds r2, 0x1\n\ +_08113DFC:\n\ + adds r6, r1, 0\n\ + cmp r6, 0x3F\n\ + ble _08113D78\n\ + cmp r3, 0\n\ + beq _08113E14\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + adds r0, r7\n\ + strb r6, [r0]\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ +_08113E14:\n\ + movs r0, 0x7\n\ + ldr r1, [sp, 0x30]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08113E24\n\ + movs r2, 0xE4\n\ + add r8, r2\n\ + b _08113E28\n\ +_08113E24:\n\ + movs r3, 0x4\n\ + add r8, r3\n\ +_08113E28:\n\ + adds r5, 0x20\n\ + adds r4, 0x1\n\ + ldr r0, [sp, 0x8]\n\ + adds r0, 0x1\n\ + str r0, [sp, 0x8]\n\ + cmp r0, 0x3F\n\ + ble _08113D6A\n\ + movs r1, 0\n\ + str r1, [sp, 0x8]\n\ +_08113E3A:\n\ + ldr r3, [sp, 0x8]\n\ + ldr r4, _08113EBC @ =0x02014804\n\ + adds r2, r3, r4\n\ + ldr r5, _08113EC0 @ =0x02014844\n\ + adds r1, r3, r5\n\ + ldrb r0, [r2]\n\ + adds r3, 0x1\n\ + str r3, [sp, 0x30]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08113E52\n\ + b _08113F9E\n\ +_08113E52:\n\ + movs r0, 0\n\ + str r0, [sp, 0xC]\n\ + ldrb r2, [r2]\n\ + cmp r0, r2\n\ + bge _08113F54\n\ + ldr r0, _08113EC4 @ =0x02014800\n\ + adds r0, 0x4\n\ + ldr r1, [sp, 0x8]\n\ + adds r0, r1, r0\n\ + str r0, [sp, 0x18]\n\ +_08113E66:\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + str r2, [sp, 0x14]\n\ + movs r6, 0\n\ + ldr r3, [sp, 0x8]\n\ + ldr r4, _08113EC0 @ =0x02014844\n\ + adds r0, r3, r4\n\ + ldr r5, [sp, 0xC]\n\ + adds r5, 0x1\n\ + str r5, [sp, 0x34]\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bge _08113F3E\n\ + ldr r0, _08113EC4 @ =0x02014800\n\ + mov r10, r0\n\ + lsls r0, r3, 5\n\ + ldr r2, [sp, 0xC]\n\ + adds r1, r2, r0\n\ + mov r9, r0\n\ + ldr r0, _08113EC4 @ =0x02014800\n\ + adds r0, 0xC4\n\ + mov r3, r9\n\ + adds r7, r3, r0\n\ + mov r5, r9\n\ + ldr r4, _08113EC4 @ =0x02014800\n\ + ldr r2, _08113EC8 @ =0x000010c4\n\ + adds r0, r4, r2\n\ + adds r1, r0\n\ + mov r8, r1\n\ + ldrb r3, [r1]\n\ + str r3, [sp, 0x1C]\n\ +_08113EA4:\n\ + ldr r0, _08113ECC @ =0x000020c4\n\ + add r0, r10\n\ + adds r0, r5, r0\n\ + ldr r4, [sp, 0x1C]\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + bls _08113ED0\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + ldrb r0, [r0]\n\ + b _08113ED6\n\ + .align 2, 0\n\ +_08113EBC: .4byte 0x02014804\n\ +_08113EC0: .4byte 0x02014844\n\ +_08113EC4: .4byte 0x02014800\n\ +_08113EC8: .4byte 0x000010c4\n\ +_08113ECC: .4byte 0x000020c4\n\ +_08113ED0:\n\ + ldrb r1, [r0]\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ +_08113ED6:\n\ + subs r3, r1, r0\n\ + ldr r1, [sp, 0xC]\n\ + add r1, r9\n\ + ldr r0, _08113EFC @ =0x000018c4\n\ + add r0, r10\n\ + adds r4, r1, r0\n\ + ldr r0, _08113F00 @ =0x000028c4\n\ + add r0, r10\n\ + adds r2, r5, r0\n\ + ldrb r0, [r4]\n\ + ldr r1, _08113F04 @ =0x02014800\n\ + mov r12, r1\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bls _08113F08\n\ + adds r1, r0, 0\n\ + ldrb r0, [r2]\n\ + b _08113F0C\n\ + .align 2, 0\n\ +_08113EFC: .4byte 0x000018c4\n\ +_08113F00: .4byte 0x000028c4\n\ +_08113F04: .4byte 0x02014800\n\ +_08113F08:\n\ + ldrb r1, [r2]\n\ + ldrb r0, [r4]\n\ +_08113F0C:\n\ + subs r1, r0\n\ + adds r3, r1\n\ + ldr r2, [sp, 0x14]\n\ + cmp r2, r3\n\ + ble _08113F2C\n\ + ldrb r0, [r7]\n\ + cmp r0, 0\n\ + bne _08113F2C\n\ + ldr r0, _08114050 @ =0x000008c4\n\ + add r0, r12\n\ + adds r0, r5, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08113F2C\n\ + str r6, [sp, 0x10]\n\ + str r3, [sp, 0x14]\n\ +_08113F2C:\n\ + adds r7, 0x1\n\ + adds r5, 0x1\n\ + adds r6, 0x1\n\ + ldr r3, [sp, 0x8]\n\ + ldr r4, _08114054 @ =0x02014844\n\ + adds r0, r3, r4\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + blt _08113EA4\n\ +_08113F3E:\n\ + ldr r0, [sp, 0xC]\n\ + ldr r1, [sp, 0x10]\n\ + ldr r2, [sp, 0x8]\n\ + bl sub_81141F0\n\ + ldr r5, [sp, 0x34]\n\ + str r5, [sp, 0xC]\n\ + ldr r0, [sp, 0x18]\n\ + ldrb r0, [r0]\n\ + cmp r5, r0\n\ + blt _08113E66\n\ +_08113F54:\n\ + movs r6, 0\n\ + ldr r2, _08114058 @ =0x02014800\n\ + ldr r1, [sp, 0x8]\n\ + ldr r3, _08114054 @ =0x02014844\n\ + adds r0, r1, r3\n\ + adds r4, r2, 0\n\ + mov r12, r4\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bge _08113F9E\n\ + mov r0, r12\n\ + adds r0, 0x44\n\ + adds r4, r1, r0\n\ +_08113F6E:\n\ + ldr r5, [sp, 0x8]\n\ + lsls r0, r5, 5\n\ + adds r1, r6, r0\n\ + adds r0, r2, 0\n\ + adds r0, 0xC4\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08113F94\n\ + ldr r3, _08114050 @ =0x000008c4\n\ + adds r0, r2, r3\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08113F94\n\ + adds r0, r6, 0\n\ + adds r1, r5, 0\n\ + bl sub_811430C\n\ +_08113F94:\n\ + adds r6, 0x1\n\ + ldr r2, _08114058 @ =0x02014800\n\ + ldrb r5, [r4]\n\ + cmp r6, r5\n\ + blt _08113F6E\n\ +_08113F9E:\n\ + ldr r0, [sp, 0x8]\n\ + ldr r1, _0811405C @ =0x02014804\n\ + adds r2, r0, r1\n\ + ldr r3, _08114054 @ =0x02014844\n\ + adds r1, r0, r3\n\ + ldrb r0, [r2]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bne _08113FCC\n\ + movs r6, 0\n\ + ldrb r4, [r2]\n\ + cmp r6, r4\n\ + bge _08113FCC\n\ + adds r4, r2, 0\n\ +_08113FBA:\n\ + adds r0, r6, 0\n\ + adds r1, r6, 0\n\ + ldr r2, [sp, 0x8]\n\ + bl sub_81141F0\n\ + adds r6, 0x1\n\ + ldrb r5, [r4]\n\ + cmp r6, r5\n\ + blt _08113FBA\n\ +_08113FCC:\n\ + ldr r0, [sp, 0x8]\n\ + ldr r1, _0811405C @ =0x02014804\n\ + adds r2, r0, r1\n\ + ldr r3, _08114054 @ =0x02014844\n\ + adds r1, r0, r3\n\ + ldrb r0, [r2]\n\ + ldr r4, _08114058 @ =0x02014800\n\ + ldrb r5, [r1]\n\ + cmp r0, r5\n\ + bhi _08113FE2\n\ + b _081141C4\n\ +_08113FE2:\n\ + movs r0, 0\n\ + str r0, [sp, 0x10]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + blt _08113FEE\n\ + b _08114104\n\ +_08113FEE:\n\ + str r2, [sp, 0x2C]\n\ + ldr r1, [sp, 0x8]\n\ + lsls r1, 5\n\ + mov r9, r1\n\ + adds r0, r4, 0\n\ + adds r0, 0x44\n\ + ldr r2, [sp, 0x8]\n\ + adds r0, r2, r0\n\ + str r0, [sp, 0x20]\n\ + mov r3, r9\n\ + str r3, [sp, 0x24]\n\ +_08114004:\n\ + movs r4, 0x80\n\ + lsls r4, 1\n\ + str r4, [sp, 0x14]\n\ + movs r6, 0\n\ + ldr r5, [sp, 0x10]\n\ + adds r5, 0x1\n\ + str r5, [sp, 0x38]\n\ + ldr r0, [sp, 0x2C]\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bge _081140C4\n\ + ldr r1, [sp, 0x10]\n\ + ldr r2, [sp, 0x24]\n\ + adds r1, r2\n\ + mov r10, r1\n\ + ldr r0, _08114058 @ =0x02014800\n\ + adds r0, 0xC4\n\ + adds r2, r0\n\ + mov r8, r2\n\ + ldr r7, [sp, 0x24]\n\ + ldr r3, _08114058 @ =0x02014800\n\ + ldr r4, _08114060 @ =0x000010c4\n\ + adds r0, r3, r4\n\ + adds r5, r7, r0\n\ + ldr r0, _08114064 @ =0x020168c4\n\ + add r0, r10\n\ + mov r12, r0\n\ + ldrb r1, [r0]\n\ + str r1, [sp, 0x28]\n\ +_0811403E:\n\ + ldrb r0, [r5]\n\ + ldr r2, [sp, 0x28]\n\ + cmp r0, r2\n\ + bls _08114068\n\ + adds r1, r0, 0\n\ + mov r3, r12\n\ + ldrb r0, [r3]\n\ + b _0811406E\n\ + .align 2, 0\n\ +_08114050: .4byte 0x000008c4\n\ +_08114054: .4byte 0x02014844\n\ +_08114058: .4byte 0x02014800\n\ +_0811405C: .4byte 0x02014804\n\ +_08114060: .4byte 0x000010c4\n\ +_08114064: .4byte 0x020168c4\n\ +_08114068:\n\ + mov r4, r12\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r5]\n\ +_0811406E:\n\ + subs r3, r1, r0\n\ + ldr r1, _0811408C @ =0x02014800\n\ + ldr r2, _08114090 @ =0x000018c4\n\ + adds r0, r1, r2\n\ + adds r4, r7, r0\n\ + ldr r2, _08114094 @ =0x020170c4\n\ + add r2, r10\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bls _08114098\n\ + adds r1, r0, 0\n\ + ldrb r0, [r2]\n\ + b _0811409C\n\ + .align 2, 0\n\ +_0811408C: .4byte 0x02014800\n\ +_08114090: .4byte 0x000018c4\n\ +_08114094: .4byte 0x020170c4\n\ +_08114098:\n\ + ldrb r1, [r2]\n\ + ldrb r0, [r4]\n\ +_0811409C:\n\ + subs r1, r0\n\ + adds r3, r1\n\ + ldr r2, [sp, 0x14]\n\ + cmp r2, r3\n\ + ble _081140B2\n\ + mov r4, r8\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _081140B2\n\ + str r6, [sp, 0xC]\n\ + str r3, [sp, 0x14]\n\ +_081140B2:\n\ + movs r0, 0x1\n\ + add r8, r0\n\ + adds r7, 0x1\n\ + adds r5, 0x1\n\ + adds r6, 0x1\n\ + ldr r1, [sp, 0x2C]\n\ + ldrb r1, [r1]\n\ + cmp r6, r1\n\ + blt _0811403E\n\ +_081140C4:\n\ + ldr r3, [sp, 0xC]\n\ + add r3, r9\n\ + ldr r2, _08114164 @ =0x02014800\n\ + ldr r4, _08114168 @ =0x000030c4\n\ + adds r1, r2, r4\n\ + adds r1, r3, r1\n\ + ldr r2, [sp, 0x10]\n\ + add r2, r9\n\ + ldr r5, _0811416C @ =0x020168c4\n\ + adds r0, r2, r5\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldr r0, _08114164 @ =0x02014800\n\ + ldr r4, _08114170 @ =0x000038c4\n\ + adds r1, r0, r4\n\ + adds r1, r3, r1\n\ + ldr r5, _08114174 @ =0x020170c4\n\ + adds r2, r5\n\ + ldrb r0, [r2]\n\ + strb r0, [r1]\n\ + ldr r0, _08114164 @ =0x02014800\n\ + adds r0, 0xC4\n\ + adds r3, r0\n\ + movs r0, 0x1\n\ + strb r0, [r3]\n\ + ldr r0, [sp, 0x38]\n\ + str r0, [sp, 0x10]\n\ + ldr r1, [sp, 0x20]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bge _08114104\n\ + b _08114004\n\ +_08114104:\n\ + movs r6, 0\n\ + ldr r4, _08114164 @ =0x02014800\n\ + ldr r2, [sp, 0x8]\n\ + ldr r3, _08114178 @ =0x02014804\n\ + adds r0, r2, r3\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bge _081141C4\n\ + adds r7, r4, 0\n\ + mov r9, r6\n\ + movs r5, 0xC4\n\ + adds r5, r7\n\ + mov r8, r5\n\ +_0811411E:\n\ + ldr r1, [sp, 0x8]\n\ + lsls r0, r1, 5\n\ + adds r2, r6, r0\n\ + ldr r3, _0811417C @ =0x000020c4\n\ + adds r0, r7, r3\n\ + adds r0, r2\n\ + mov r10, r0\n\ + ldr r5, _08114168 @ =0x000030c4\n\ + adds r0, r7, r5\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + mov r1, r10\n\ + strb r0, [r1]\n\ + ldr r3, _08114180 @ =0x000028c4\n\ + adds r0, r7, r3\n\ + adds r3, r2, r0\n\ + ldr r5, _08114170 @ =0x000038c4\n\ + adds r0, r7, r5\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + strb r0, [r3]\n\ + mov r0, r8\n\ + adds r1, r2, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0\n\ + beq _08114184\n\ + mov r2, r9\n\ + strb r2, [r1]\n\ + adds r0, r6, 0\n\ + adds r1, r6, 0\n\ + ldr r2, [sp, 0x8]\n\ + bl sub_81141F0\n\ + b _081141B4\n\ + .align 2, 0\n\ +_08114164: .4byte 0x02014800\n\ +_08114168: .4byte 0x000030c4\n\ +_0811416C: .4byte 0x020168c4\n\ +_08114170: .4byte 0x000038c4\n\ +_08114174: .4byte 0x020170c4\n\ +_08114178: .4byte 0x02014804\n\ +_0811417C: .4byte 0x000020c4\n\ +_08114180: .4byte 0x000028c4\n\ +_08114184:\n\ + ldr r5, _081141E0 @ =0x000010c4\n\ + adds r1, r4, r5\n\ + adds r1, r2, r1\n\ + ldr r5, _081141E4 @ =0x000018c4\n\ + adds r0, r4, r5\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + ldrb r2, [r1]\n\ + subs r0, r2\n\ + lsrs r1, r0, 31\n\ + adds r0, r1\n\ + asrs r0, 1\n\ + adds r2, r0\n\ + strb r2, [r3]\n\ + mov r0, r10\n\ + strb r2, [r0]\n\ + ldrb r0, [r3]\n\ + subs r0, 0x1\n\ + strb r0, [r3]\n\ + adds r0, r6, 0\n\ + adds r1, r6, 0\n\ + ldr r2, [sp, 0x8]\n\ + bl sub_81141F0\n\ +_081141B4:\n\ + adds r6, 0x1\n\ + ldr r4, _081141E8 @ =0x02014800\n\ + ldr r1, [sp, 0x8]\n\ + ldr r2, _081141EC @ =0x02014804\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + blt _0811411E\n\ +_081141C4:\n\ + ldr r3, [sp, 0x30]\n\ + str r3, [sp, 0x8]\n\ + cmp r3, 0x3F\n\ + bgt _081141CE\n\ + b _08113E3A\n\ +_081141CE:\n\ + add sp, 0x3C\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_081141E0: .4byte 0x000010c4\n\ +_081141E4: .4byte 0x000018c4\n\ +_081141E8: .4byte 0x02014800\n\ +_081141EC: .4byte 0x02014804\n\ + .syntax divided"); +} + +void sub_81141F0(s32 a, s32 b, s32 c) +{ + u32 r7; + + sEvoInfo.unk30C4[c][b] = sEvoInfo.unk10C4[c][a]; + sEvoInfo.unk38C4[c][b] = sEvoInfo.unk18C4[c][a]; + + r7 = 0; + if (sEvoInfo.unk10C4[c][a] < sEvoInfo.unk20C4[c][b]) + { + sEvoInfo.unkC4[c][b] = 4; + r7 = sEvoInfo.unk20C4[c][b] - sEvoInfo.unk10C4[c][a]; + } + else if (sEvoInfo.unk10C4[c][a] > sEvoInfo.unk20C4[c][b]) + { + sEvoInfo.unkC4[c][b] = 1; + r7 = sEvoInfo.unk10C4[c][a] - sEvoInfo.unk20C4[c][b]; + } + sEvoInfo.unk80C4[c][b] = r7 * 16; + + r7 = 0; + if (sEvoInfo.unk18C4[c][a] < sEvoInfo.unk28C4[c][b]) + { + sEvoInfo.unk8C4[c][b] = 3; + r7 = sEvoInfo.unk28C4[c][b] - sEvoInfo.unk18C4[c][a]; + } + else if (sEvoInfo.unk18C4[c][a] > sEvoInfo.unk28C4[c][b]) + { + sEvoInfo.unk8C4[c][b] = 2; + r7 = sEvoInfo.unk18C4[c][a] - sEvoInfo.unk28C4[c][b]; + } + sEvoInfo.unk90C4[c][b] = r7 * 16; + + sEvoInfo.unk84[c]++; +} + +void sub_811430C(u32 a, u32 b) +{ + u8 r2 = sEvoInfo.unk28C4[b][a]; + u8 r3 = sEvoInfo.unk20C4[b][a]; + s32 r7 = r2 - r3; + + sEvoInfo.unk30C4[b][a] = sEvoInfo.unk38C4[b][a] = r3 + r7 / 2; + sEvoInfo.unkC4[b][a] = 5; + sEvoInfo.unk8C4[b][a] = 7; + sEvoInfo.unk84[b]++; + r7 = sEvoInfo.unk30C4[b][a] - sEvoInfo.unk20C4[b][a]; + sEvoInfo.unk80C4[b][a] = r7 * 16; + r7 = sEvoInfo.unk28C4[b][a] - sEvoInfo.unk38C4[b][a]; + sEvoInfo.unk90C4[b][a] = r7 * 16; +} + +__attribute__((naked)) +void unref_sub_81143CC() +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + movs r0, 0x1\n\ + str r0, [sp, 0x4]\n\ + ldr r0, _08114408 @ =0x02014800\n\ + ldr r2, _0811440C @ =0x0000a0c4\n\ + adds r1, r0, r2\n\ + ldrb r3, [r1]\n\ + adds r4, r0, 0\n\ + cmp r3, 0\n\ + beq _081143EE\n\ + subs r0, r3, 0x1\n\ + strb r0, [r1]\n\ +_081143EE:\n\ + movs r5, 0\n\ + str r5, [sp]\n\ +_081143F2:\n\ + movs r3, 0\n\ + adds r2, r4, 0\n\ + adds r0, r4, 0\n\ + adds r0, 0x84\n\ + ldr r1, [sp]\n\ + adds r0, r1, r0\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x8]\n\ + bl _08114D84\n\ + .align 2, 0\n\ +_08114408: .4byte 0x02014800\n\ +_0811440C: .4byte 0x0000a0c4\n\ +_08114410:\n\ + ldr r5, [sp]\n\ + lsls r0, r5, 5\n\ + adds r1, r3, r0\n\ + adds r2, 0xC4\n\ + adds r1, r2\n\ + ldrb r2, [r1]\n\ + mov r8, r0\n\ + adds r0, r3, 0x1\n\ + mov r10, r0\n\ + cmp r2, 0xC\n\ + bls _08114428\n\ + b _081148D2\n\ +_08114428:\n\ + lsls r0, r2, 2\n\ + ldr r1, _08114434 @ =_08114438\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08114434: .4byte _08114438\n\ + .align 2, 0\n\ +_08114438:\n\ + .4byte _081148D2\n\ + .4byte _0811446C\n\ + .4byte _081144F0\n\ + .4byte _0811457C\n\ + .4byte _08114600\n\ + .4byte _0811468C\n\ + .4byte _081146C8\n\ + .4byte _08114704\n\ + .4byte _08114740\n\ + .4byte _0811477C\n\ + .4byte _081147D0\n\ + .4byte _08114810\n\ + .4byte _08114858\n\ +_0811446C:\n\ + movs r1, 0\n\ + str r1, [sp, 0x4]\n\ + lsls r0, r3, 1\n\ + ldr r2, [sp]\n\ + lsls r1, r2, 6\n\ + adds r0, r1\n\ + ldr r5, _081144E0 @ =0x000060c4\n\ + adds r2, r4, r5\n\ + adds r2, r0, r2\n\ + ldr r5, _081144E4 @ =0x000080c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + adds r1, r3, 0x1\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, r5\n\ + blt _081144A6\n\ + b _081148D2\n\ +_081144A6:\n\ + mov r9, r4\n\ + mov r4, r8\n\ + adds r7, r3, r4\n\ + ldr r0, _081144E8 @ =0x000030c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _081144EC @ =0x000020c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_081144B8:\n\ + ldrb r0, [r4]\n\ + subs r0, 0x1\n\ + strb r0, [r4]\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldrb r0, [r4]\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _081144D8\n\ + b _081148A0\n\ +_081144D8:\n\ + adds r6, 0x1\n\ + cmp r6, r5\n\ + blt _081144B8\n\ + b _081148D2\n\ + .align 2, 0\n\ +_081144E0: .4byte 0x000060c4\n\ +_081144E4: .4byte 0x000080c4\n\ +_081144E8: .4byte 0x000030c4\n\ +_081144EC: .4byte 0x000020c4\n\ +_081144F0:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r4, _08114568 @ =0x02014800\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _0811456C @ =0x000060c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114570 @ =0x000080c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + adds r1, r3, 0x1\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, r5\n\ + blt _0811452C\n\ + b _081148D2\n\ +_0811452C:\n\ + mov r9, r4\n\ + mov r4, r8\n\ + adds r7, r3, r4\n\ + ldr r0, _08114574 @ =0x000030c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _08114578 @ =0x000020c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_0811453E:\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114548\n\ + b _081148B8\n\ +_08114548:\n\ + adds r1, r0, 0\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DF0\n\ + ldrb r0, [r4]\n\ + subs r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, 0x1\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + cmp r6, r5\n\ + blt _0811453E\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114568: .4byte 0x02014800\n\ +_0811456C: .4byte 0x000060c4\n\ +_08114570: .4byte 0x000080c4\n\ +_08114574: .4byte 0x000030c4\n\ +_08114578: .4byte 0x000020c4\n\ +_0811457C:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _081145F0 @ =0x000060c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _081145F4 @ =0x000080c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + adds r1, r3, 0x1\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, r5\n\ + blt _081145B6\n\ + b _081148D2\n\ +_081145B6:\n\ + mov r9, r4\n\ + mov r4, r8\n\ + adds r7, r3, r4\n\ + ldr r0, _081145F8 @ =0x000030c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _081145FC @ =0x000020c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_081145C8:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldrb r0, [r4]\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _081145E8\n\ + b _081148AC\n\ +_081145E8:\n\ + adds r6, 0x1\n\ + cmp r6, r5\n\ + blt _081145C8\n\ + b _081148D2\n\ + .align 2, 0\n\ +_081145F0: .4byte 0x000060c4\n\ +_081145F4: .4byte 0x000080c4\n\ +_081145F8: .4byte 0x000030c4\n\ +_081145FC: .4byte 0x000020c4\n\ +_08114600:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r4, _08114678 @ =0x02014800\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _0811467C @ =0x000060c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114680 @ =0x000080c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + adds r1, r3, 0x1\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, r5\n\ + blt _0811463C\n\ + b _081148D2\n\ +_0811463C:\n\ + mov r9, r4\n\ + mov r4, r8\n\ + adds r7, r3, r4\n\ + ldr r0, _08114684 @ =0x000030c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _08114688 @ =0x000020c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_0811464E:\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114658\n\ + b _081148B8\n\ +_08114658:\n\ + adds r1, r0, 0\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DF0\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, 0x1\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + cmp r6, r5\n\ + blt _0811464E\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114678: .4byte 0x02014800\n\ +_0811467C: .4byte 0x000060c4\n\ +_08114680: .4byte 0x000080c4\n\ +_08114684: .4byte 0x000030c4\n\ +_08114688: .4byte 0x000020c4\n\ +_0811468C:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r5, _081146C0 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _081146C4 @ =0x000030c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0x10]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + bne _081146B4\n\ + b _081148D2\n\ +_081146B4:\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r4, r0\n\ + movs r1, 0x9\n\ + strb r1, [r0]\n\ + b _081148D2\n\ + .align 2, 0\n\ +_081146C0: .4byte 0x02014800\n\ +_081146C4: .4byte 0x000030c4\n\ +_081146C8:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _081146FC @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114700 @ =0x000030c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0x10]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + bne _081146F0\n\ + b _081148D2\n\ +_081146F0:\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r4, r0\n\ + movs r1, 0xA\n\ + strb r1, [r0]\n\ + b _081148D2\n\ + .align 2, 0\n\ +_081146FC: .4byte 0x02014800\n\ +_08114700: .4byte 0x000030c4\n\ +_08114704:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114738 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _0811473C @ =0x000030c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0x10]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + bne _0811472C\n\ + b _081148D2\n\ +_0811472C:\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r4, r0\n\ + movs r1, 0xB\n\ + strb r1, [r0]\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114738: .4byte 0x02014800\n\ +_0811473C: .4byte 0x000030c4\n\ +_08114740:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114774 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114778 @ =0x000030c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0x10]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + bne _08114768\n\ + b _081148D2\n\ +_08114768:\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r4, r0\n\ + movs r1, 0xC\n\ + strb r1, [r0]\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114774: .4byte 0x02014800\n\ +_08114778: .4byte 0x000030c4\n\ +_0811477C:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r6, _081147B4 @ =0x02014800\n\ + mov r0, r8\n\ + adds r5, r3, r0\n\ + ldr r1, _081147B8 @ =0x000030c4\n\ + adds r4, r6, r1\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldr r2, _081147BC @ =0x000020c4\n\ + adds r0, r6, r2\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _081147C0\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + mov r4, sp\n\ + ldrb r4, [r4, 0x4]\n\ + strb r4, [r0]\n\ + b _08114844\n\ + .align 2, 0\n\ +_081147B4: .4byte 0x02014800\n\ +_081147B8: .4byte 0x000030c4\n\ +_081147BC: .4byte 0x000020c4\n\ +_081147C0:\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + movs r1, 0x1\n\ + strb r1, [r0]\n\ + adds r0, r3, 0x1\n\ + mov r10, r0\n\ + b _081148D2\n\ +_081147D0:\n\ + movs r1, 0\n\ + str r1, [sp, 0x4]\n\ + ldr r6, _08114804 @ =0x02014800\n\ + mov r2, r8\n\ + adds r5, r3, r2\n\ + ldr r0, _08114808 @ =0x000030c4\n\ + adds r4, r6, r0\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DF0\n\ + ldr r1, _0811480C @ =0x000020c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + beq _08114882\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + movs r1, 0x2\n\ + b _08114842\n\ + .align 2, 0\n\ +_08114804: .4byte 0x02014800\n\ +_08114808: .4byte 0x000030c4\n\ +_0811480C: .4byte 0x000020c4\n\ +_08114810:\n\ + movs r0, 0\n\ + str r0, [sp, 0x4]\n\ + ldr r6, _0811484C @ =0x02014800\n\ + mov r1, r8\n\ + adds r5, r3, r1\n\ + ldr r2, _08114850 @ =0x000030c4\n\ + adds r4, r6, r2\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldr r1, _08114854 @ =0x000020c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + beq _08114882\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + movs r1, 0x3\n\ +_08114842:\n\ + strb r1, [r0]\n\ +_08114844:\n\ + adds r5, r3, 0x1\n\ + mov r10, r5\n\ + b _081148D2\n\ + .align 2, 0\n\ +_0811484C: .4byte 0x02014800\n\ +_08114850: .4byte 0x000030c4\n\ +_08114854: .4byte 0x000020c4\n\ +_08114858:\n\ + movs r0, 0\n\ + str r0, [sp, 0x4]\n\ + ldr r6, _08114894 @ =0x02014800\n\ + mov r1, r8\n\ + adds r5, r3, r1\n\ + ldr r2, _08114898 @ =0x000030c4\n\ + adds r4, r6, r2\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DF0\n\ + ldr r1, _0811489C @ =0x000020c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _081148C4\n\ +_08114882:\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + mov r2, sp\n\ + ldrb r2, [r2, 0x4]\n\ + strb r2, [r0]\n\ + adds r4, r3, 0x1\n\ + mov r10, r4\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114894: .4byte 0x02014800\n\ +_08114898: .4byte 0x000030c4\n\ +_0811489C: .4byte 0x000020c4\n\ +_081148A0:\n\ + mov r0, r9\n\ + adds r0, 0xC4\n\ + adds r0, r7, r0\n\ + movs r5, 0\n\ + strb r5, [r0]\n\ + b _081148D2\n\ +_081148AC:\n\ + mov r0, r9\n\ + adds r0, 0xC4\n\ + adds r0, r7, r0\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + b _081148D2\n\ +_081148B8:\n\ + mov r0, r9\n\ + adds r0, 0xC4\n\ + adds r0, r7, r0\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + b _081148D2\n\ +_081148C4:\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + movs r1, 0x4\n\ + strb r1, [r0]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ +_081148D2:\n\ + ldr r0, _081148F4 @ =0x02014800\n\ + mov r4, r8\n\ + adds r1, r3, r4\n\ + ldr r5, _081148F8 @ =0x000008c4\n\ + adds r2, r0, r5\n\ + adds r1, r2\n\ + ldrb r1, [r1]\n\ + adds r4, r0, 0\n\ + cmp r1, 0xC\n\ + bls _081148E8\n\ + b _08114D76\n\ +_081148E8:\n\ + lsls r0, r1, 2\n\ + ldr r1, _081148FC @ =_08114900\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_081148F4: .4byte 0x02014800\n\ +_081148F8: .4byte 0x000008c4\n\ +_081148FC: .4byte _08114900\n\ + .align 2, 0\n\ +_08114900:\n\ + .4byte _08114D76\n\ + .4byte _08114934\n\ + .4byte _081149B8\n\ + .4byte _08114A3C\n\ + .4byte _08114AC0\n\ + .4byte _08114B44\n\ + .4byte _08114B7C\n\ + .4byte _08114BB4\n\ + .4byte _08114BEC\n\ + .4byte _08114C24\n\ + .4byte _08114C78\n\ + .4byte _08114CB8\n\ + .4byte _08114CF8\n\ +_08114934:\n\ + movs r0, 0\n\ + str r0, [sp, 0x4]\n\ + lsls r0, r3, 1\n\ + ldr r2, [sp]\n\ + lsls r1, r2, 6\n\ + adds r0, r1\n\ + ldr r5, _081149A8 @ =0x000070c4\n\ + adds r2, r4, r5\n\ + adds r2, r0, r2\n\ + ldr r5, _081149AC @ =0x000090c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x4]\n\ + cmp r1, r5\n\ + blt _0811496A\n\ + b _08114D76\n\ +_0811496A:\n\ + mov r9, r4\n\ + mov r2, r8\n\ + adds r7, r3, r2\n\ + ldr r0, _081149B0 @ =0x000038c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + movs r3, 0\n\ + ldr r0, _081149B4 @ =0x000028c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_0811497E:\n\ + ldrb r0, [r4]\n\ + subs r0, 0x1\n\ + strb r0, [r4]\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldrb r0, [r4]\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _0811499E\n\ + b _08114D4C\n\ +_0811499E:\n\ + adds r6, 0x1\n\ + cmp r6, r5\n\ + blt _0811497E\n\ + b _08114D76\n\ + .align 2, 0\n\ +_081149A8: .4byte 0x000070c4\n\ +_081149AC: .4byte 0x000090c4\n\ +_081149B0: .4byte 0x000038c4\n\ +_081149B4: .4byte 0x000028c4\n\ +_081149B8:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r4, _08114A28 @ =0x02014800\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _08114A2C @ =0x000070c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114A30 @ =0x000090c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x4]\n\ + cmp r1, r5\n\ + blt _081149F0\n\ + b _08114D76\n\ +_081149F0:\n\ + mov r9, r4\n\ + mov r2, r8\n\ + adds r7, r3, r2\n\ + ldr r0, _08114A34 @ =0x000038c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _08114A38 @ =0x000028c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_08114A02:\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114A0C\n\ + b _08114D3C\n\ +_08114A0C:\n\ + adds r1, r0, 0\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + bl sub_8114DF0\n\ + ldrb r0, [r4]\n\ + subs r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, 0x1\n\ + ldr r2, [sp, 0xC]\n\ + cmp r6, r5\n\ + blt _08114A02\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114A28: .4byte 0x02014800\n\ +_08114A2C: .4byte 0x000070c4\n\ +_08114A30: .4byte 0x000090c4\n\ +_08114A34: .4byte 0x000038c4\n\ +_08114A38: .4byte 0x000028c4\n\ +_08114A3C:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _08114AB0 @ =0x000070c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114AB4 @ =0x000090c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x4]\n\ + cmp r1, r5\n\ + blt _08114A72\n\ + b _08114D76\n\ +_08114A72:\n\ + mov r9, r4\n\ + mov r2, r8\n\ + adds r7, r3, r2\n\ + ldr r0, _08114AB8 @ =0x000038c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + movs r3, 0\n\ + ldr r0, _08114ABC @ =0x000028c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_08114A86:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldrb r0, [r4]\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114AA6\n\ + b _08114D4C\n\ +_08114AA6:\n\ + adds r6, 0x1\n\ + cmp r6, r5\n\ + blt _08114A86\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114AB0: .4byte 0x000070c4\n\ +_08114AB4: .4byte 0x000090c4\n\ +_08114AB8: .4byte 0x000038c4\n\ +_08114ABC: .4byte 0x000028c4\n\ +_08114AC0:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r4, _08114B30 @ =0x02014800\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _08114B34 @ =0x000070c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114B38 @ =0x000090c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x4]\n\ + cmp r1, r5\n\ + blt _08114AF8\n\ + b _08114D76\n\ +_08114AF8:\n\ + mov r9, r4\n\ + mov r2, r8\n\ + adds r7, r3, r2\n\ + ldr r0, _08114B3C @ =0x000038c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _08114B40 @ =0x000028c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_08114B0A:\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114B14\n\ + b _08114D5C\n\ +_08114B14:\n\ + adds r1, r0, 0\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + bl sub_8114DF0\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, 0x1\n\ + ldr r2, [sp, 0xC]\n\ + cmp r6, r5\n\ + blt _08114B0A\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114B30: .4byte 0x02014800\n\ +_08114B34: .4byte 0x000070c4\n\ +_08114B38: .4byte 0x000090c4\n\ +_08114B3C: .4byte 0x000038c4\n\ +_08114B40: .4byte 0x000028c4\n\ +_08114B44:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r5, _08114B70 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114B74 @ =0x000038c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08114B64\n\ + b _08114D76\n\ +_08114B64:\n\ + ldr r2, _08114B78 @ =0x000008c4\n\ + adds r0, r5, r2\n\ + adds r0, r4, r0\n\ + movs r1, 0x9\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114B70: .4byte 0x02014800\n\ +_08114B74: .4byte 0x000038c4\n\ +_08114B78: .4byte 0x000008c4\n\ +_08114B7C:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114BA8 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114BAC @ =0x000038c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08114B9C\n\ + b _08114D76\n\ +_08114B9C:\n\ + ldr r2, _08114BB0 @ =0x000008c4\n\ + adds r0, r5, r2\n\ + adds r0, r4, r0\n\ + movs r1, 0xA\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114BA8: .4byte 0x02014800\n\ +_08114BAC: .4byte 0x000038c4\n\ +_08114BB0: .4byte 0x000008c4\n\ +_08114BB4:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114BE0 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114BE4 @ =0x000038c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08114BD4\n\ + b _08114D76\n\ +_08114BD4:\n\ + ldr r2, _08114BE8 @ =0x000008c4\n\ + adds r0, r5, r2\n\ + adds r0, r4, r0\n\ + movs r1, 0xB\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114BE0: .4byte 0x02014800\n\ +_08114BE4: .4byte 0x000038c4\n\ +_08114BE8: .4byte 0x000008c4\n\ +_08114BEC:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114C18 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114C1C @ =0x000038c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08114C0C\n\ + b _08114D76\n\ +_08114C0C:\n\ + ldr r2, _08114C20 @ =0x000008c4\n\ + adds r0, r5, r2\n\ + adds r0, r4, r0\n\ + movs r1, 0xC\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114C18: .4byte 0x02014800\n\ +_08114C1C: .4byte 0x000038c4\n\ +_08114C20: .4byte 0x000008c4\n\ +_08114C24:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r6, _08114C58 @ =0x02014800\n\ + mov r0, r8\n\ + adds r5, r3, r0\n\ + ldr r1, _08114C5C @ =0x000038c4\n\ + adds r4, r6, r1\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + bl sub_8114DB4\n\ + ldr r2, _08114C60 @ =0x000028c4\n\ + adds r0, r6, r2\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _08114C68\n\ + ldr r4, _08114C64 @ =0x000008c4\n\ + adds r0, r6, r4\n\ + adds r0, r5, r0\n\ + mov r5, sp\n\ + ldrb r5, [r5, 0x4]\n\ + strb r5, [r0]\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114C58: .4byte 0x02014800\n\ +_08114C5C: .4byte 0x000038c4\n\ +_08114C60: .4byte 0x000028c4\n\ +_08114C64: .4byte 0x000008c4\n\ +_08114C68:\n\ + ldr r1, _08114C74 @ =0x000008c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + movs r1, 0x1\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114C74: .4byte 0x000008c4\n\ +_08114C78:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r6, _08114CA8 @ =0x02014800\n\ + mov r4, r8\n\ + adds r5, r3, r4\n\ + ldr r0, _08114CAC @ =0x000038c4\n\ + adds r4, r6, r0\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + bl sub_8114DF0\n\ + ldr r1, _08114CB0 @ =0x000028c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + beq _08114D1E\n\ + ldr r1, _08114CB4 @ =0x000008c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + movs r1, 0x2\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114CA8: .4byte 0x02014800\n\ +_08114CAC: .4byte 0x000038c4\n\ +_08114CB0: .4byte 0x000028c4\n\ +_08114CB4: .4byte 0x000008c4\n\ +_08114CB8:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r6, _08114CE8 @ =0x02014800\n\ + mov r4, r8\n\ + adds r5, r3, r4\n\ + ldr r0, _08114CEC @ =0x000038c4\n\ + adds r4, r6, r0\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + bl sub_8114DB4\n\ + ldr r1, _08114CF0 @ =0x000028c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + beq _08114D1E\n\ + ldr r1, _08114CF4 @ =0x000008c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + movs r1, 0x3\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114CE8: .4byte 0x02014800\n\ +_08114CEC: .4byte 0x000038c4\n\ +_08114CF0: .4byte 0x000028c4\n\ +_08114CF4: .4byte 0x000008c4\n\ +_08114CF8:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r6, _08114D2C @ =0x02014800\n\ + mov r4, r8\n\ + adds r5, r3, r4\n\ + ldr r0, _08114D30 @ =0x000038c4\n\ + adds r4, r6, r0\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + bl sub_8114DF0\n\ + ldr r1, _08114D34 @ =0x000028c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _08114D6C\n\ +_08114D1E:\n\ + ldr r2, _08114D38 @ =0x000008c4\n\ + adds r0, r6, r2\n\ + adds r0, r5, r0\n\ + mov r4, sp\n\ + ldrb r4, [r4, 0x4]\n\ + strb r4, [r0]\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114D2C: .4byte 0x02014800\n\ +_08114D30: .4byte 0x000038c4\n\ +_08114D34: .4byte 0x000028c4\n\ +_08114D38: .4byte 0x000008c4\n\ +_08114D3C:\n\ + ldr r0, _08114D48 @ =0x000008c4\n\ + add r0, r9\n\ + adds r0, r7, r0\n\ + movs r1, 0\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114D48: .4byte 0x000008c4\n\ +_08114D4C:\n\ + ldr r0, _08114D58 @ =0x000008c4\n\ + add r0, r9\n\ + adds r0, r7, r0\n\ + strb r3, [r0]\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114D58: .4byte 0x000008c4\n\ +_08114D5C:\n\ + ldr r0, _08114D68 @ =0x000008c4\n\ + add r0, r9\n\ + adds r0, r7, r0\n\ + movs r1, 0\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114D68: .4byte 0x000008c4\n\ +_08114D6C:\n\ + ldr r1, _08114DAC @ =0x000008c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + movs r1, 0x4\n\ +_08114D74:\n\ + strb r1, [r0]\n\ +_08114D76:\n\ + mov r3, r10\n\ + ldr r2, _08114DB0 @ =0x02014800\n\ + adds r0, r2, 0\n\ + adds r0, 0x84\n\ + ldr r4, [sp]\n\ + adds r0, r4, r0\n\ + adds r4, r2, 0\n\ +_08114D84:\n\ + ldrb r0, [r0]\n\ + cmp r3, r0\n\ + bge _08114D8E\n\ + bl _08114410\n\ +_08114D8E:\n\ + ldr r5, [sp, 0x8]\n\ + str r5, [sp]\n\ + cmp r5, 0x3F\n\ + bgt _08114D9A\n\ + bl _081143F2\n\ +_08114D9A:\n\ + ldr r0, [sp, 0x4]\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_08114DAC: .4byte 0x000008c4\n\ +_08114DB0: .4byte 0x02014800\n\ + .syntax divided"); +} + +void sub_8114DB4(u32 a, u8 b) +{ + u8 *r2 = sEvoInfo.unk40C4[a][b / 2]; + + if (b % 2 != 0) + *r2 |= 0xF0; + else + *r2 |= 0x0F; +} + +void sub_8114DF0(u32 a, u8 b) +{ + u8 *r2 = sEvoInfo.unk40C4[a][b / 2]; + u8 *r1 = r2 + 0x6000; + + if (b % 2 != 0) + { + if (!(*r1 & 0xF0)) + *r2 &= 0x0F; + } + else + { + if (!(*r1 & 0x0F)) + *r2 &= 0xF0; + } +} + +__attribute__((naked)) +void sub_8114E48() +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r4, r0, 0\n\ + lsls r1, 24\n\ + lsrs r6, r1, 24\n\ + ldr r1, _08114E6C @ =0x02014800\n\ + ldr r2, _08114E70 @ =0x0000a0c4\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + adds r5, r1, 0\n\ + cmp r0, 0\n\ + bne _08114E60\n\ + b _08114F5E\n\ +_08114E60:\n\ + movs r1, 0\n\ + movs r3, 0\n\ + cmp r4, 0\n\ + bne _08114E74\n\ + movs r1, 0x1\n\ + b _08114EA6\n\ + .align 2, 0\n\ +_08114E6C: .4byte 0x02014800\n\ +_08114E70: .4byte 0x0000a0c4\n\ +_08114E74:\n\ + subs r0, r4, 0x1\n\ + lsls r0, 5\n\ + adds r2, r3, r0\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08114EA6\n\ + ldr r7, _08114EC4 @ =0x000008c4\n\ + adds r0, r5, r7\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08114EA6\n\ + adds r3, 0x1\n\ + cmp r3, 0x1F\n\ + bgt _08114EA6\n\ + cmp r4, 0\n\ + bne _08114E74\n\ + lsls r0, r1, 24\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + adds r0, r1\n\ + lsrs r1, r0, 24\n\ +_08114EA6:\n\ + cmp r3, 0x20\n\ + bne _08114EB4\n\ + lsls r0, r1, 24\n\ + movs r2, 0x80\n\ + lsls r2, 17\n\ + adds r0, r2\n\ + lsrs r1, r0, 24\n\ +_08114EB4:\n\ + movs r3, 0\n\ + cmp r4, 0x3F\n\ + bne _08114EC8\n\ + lsls r0, r1, 24\n\ + movs r7, 0x80\n\ + lsls r7, 17\n\ + adds r0, r7\n\ + b _08114EF8\n\ + .align 2, 0\n\ +_08114EC4: .4byte 0x000008c4\n\ +_08114EC8:\n\ + adds r0, r4, 0x1\n\ + lsls r0, 5\n\ + adds r2, r3, r0\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08114EFA\n\ + ldr r7, _08114F64 @ =0x000008c4\n\ + adds r0, r5, r7\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08114EFA\n\ + adds r3, 0x1\n\ + cmp r3, 0x1F\n\ + bgt _08114EFA\n\ + cmp r4, 0x3F\n\ + bne _08114EC8\n\ + lsls r0, r1, 24\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + adds r0, r1\n\ +_08114EF8:\n\ + lsrs r1, r0, 24\n\ +_08114EFA:\n\ + cmp r3, 0x20\n\ + bne _08114F08\n\ + lsls r0, r1, 24\n\ + movs r2, 0x80\n\ + lsls r2, 17\n\ + adds r0, r2\n\ + lsrs r1, r0, 24\n\ +_08114F08:\n\ + cmp r1, 0x2\n\ + beq _08114F5E\n\ + subs r0, r6, 0x2\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r0, 0\n\ + bge _08114F18\n\ + movs r1, 0\n\ +_08114F18:\n\ + adds r0, r6, 0x2\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0x3F\n\ + ble _08114F26\n\ + movs r2, 0x3F\n\ +_08114F26:\n\ + lsls r1, 24\n\ + asrs r3, r1, 24\n\ + lsls r0, r2, 24\n\ + asrs r2, r0, 24\n\ + adds r6, r1, 0\n\ + adds r7, r0, 0\n\ + cmp r3, r2\n\ + bge _08114F7C\n\ + cmp r4, 0\n\ + beq _08114F7C\n\ + subs r0, r4, 0x1\n\ + lsls r5, r0, 7\n\ + ldr r0, _08114F68 @ =0x020188c4\n\ + mov r12, r0\n\ +_08114F42:\n\ + asrs r0, r3, 1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + add r0, r12\n\ + ldr r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08114F6C\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF0\n\ +_08114F58:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08114F72\n\ +_08114F5E:\n\ + movs r0, 0x1\n\ + b _08114FCA\n\ + .align 2, 0\n\ +_08114F64: .4byte 0x000008c4\n\ +_08114F68: .4byte 0x020188c4\n\ +_08114F6C:\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF\n\ + b _08114F58\n\ +_08114F72:\n\ + adds r3, 0x1\n\ + cmp r3, r2\n\ + bge _08114F7C\n\ + cmp r4, 0\n\ + bne _08114F42\n\ +_08114F7C:\n\ + asrs r3, r6, 24\n\ + asrs r1, r7, 24\n\ + cmp r3, r1\n\ + bge _08114FC8\n\ + cmp r4, 0x3F\n\ + beq _08114FC8\n\ + adds r0, r4, 0x1\n\ + lsls r5, r0, 7\n\ + ldr r6, _08114FB0 @ =0x020188c4\n\ + adds r2, r1, 0\n\ +_08114F90:\n\ + asrs r0, r3, 1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08114FB4\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08114FBE\n\ + b _08114F5E\n\ + .align 2, 0\n\ +_08114FB0: .4byte 0x020188c4\n\ +_08114FB4:\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08114F5E\n\ +_08114FBE:\n\ + adds r3, 0x1\n\ + cmp r3, r2\n\ + bge _08114FC8\n\ + cmp r4, 0x3F\n\ + bne _08114F90\n\ +_08114FC8:\n\ + movs r0, 0\n\ +_08114FCA:\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided"); +} + +// Functions below are vblank callbacks and are used + +static void EvoDummyFunc(void) +{ + +} + +static void VBlankCB_EvolutionScene(void) +{ + REG_BG0CNT = BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256 | BGCNT_AFF512x512 | BGCNT_PRIORITY(3); // 0x9803 + REG_BG0HOFS = gUnknown_030042A4; + REG_BG0VOFS = gUnknown_030042A0; + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + REG_BG3HOFS = gUnknown_030041B0; + REG_BG3VOFS = gUnknown_030041B8; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_8089668(); +} + +static void VBlankCB_TradeEvolutionScene(void) +{ + REG_BG0HOFS = gUnknown_030042A4; + REG_BG0VOFS = gUnknown_030042A0; + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + REG_BG3HOFS = gUnknown_030041B0; + REG_BG3VOFS = gUnknown_030041B8; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_8089668(); +} + +static void sub_81150D8(void) +{ + sub_814A880(200, 72 + (sEvoCursorPos * 16)); +} + +static void EvoDummyFunc2(void) +{ + +} diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c new file mode 100644 index 000000000..6f7df576b --- /dev/null +++ b/src/scene/hall_of_fame.c @@ -0,0 +1,1413 @@ +#include "global.h" +#include "main.h" +#include "task.h" +#include "palette.h" +#include "sound.h" +#include "songs.h" +#include "pokemon.h" +#include "text.h" +#include "strings.h" +#include "string_util.h" +#include "menu.h" +#include "save.h" +#include "species.h" +#include "overworld.h" +#include "m4a.h" +#include "data2.h" +#include "decompress.h" +#include "rng.h" +#include "trig.h" + +static EWRAM_DATA u32 sUnknown_0203931C = 0; + +extern u8 ewram[]; +extern bool8 gUnknown_02039324; // has hall of fame records +extern void (*gGameContinueCallback)(void); +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gReservedSpritePaletteCount; +extern struct SpriteTemplate gUnknown_02024E8C; + +extern const u8 gContestConfetti_Gfx[]; +extern const u8 gContestConfetti_Pal[]; +extern const u8 gHallOfFame_Gfx[]; +extern const u16 gHallOfFame_Pal[]; + +struct HallofFameMon +{ + u32 tid; + u32 personality; + u16 species : 9; + u16 lvl : 7; + u8 nick[10]; +}; + +struct HallofFameMons +{ + struct HallofFameMon mons[6]; +}; + +#define HALL_OF_FAME_MAX_TEAMS 50 + +static void sub_8141FF8(u8 taskID); +static void sub_81422E8(u8 taskID); +static void sub_814217C(u8 taskID); +static void sub_8142274(u8 taskID); +static void sub_81422B8(u8 taskID); +static void sub_8142320(u8 taskID); +static void sub_8142404(u8 taskID); +static void sub_8142484(u8 taskID); +static void sub_8142570(u8 taskID); +static void sub_8142618(u8 taskID); +static void sub_81426F8(u8 taskID); +static void sub_8142738(u8 taskID); +static void sub_8142794(u8 taskID); +static void sub_8142818(u8 taskID); +static void sub_8142850(u8 taskID); +static void sub_81428A0(u8 taskID); +static void sub_8142A28(u8 taskID); +static void sub_8142FEC(u8 taskID); +static void sub_8142B04(u8 taskID); +static void sub_8142CC8(u8 taskID); +static void sub_8142DF4(u8 taskID); +static void sub_8142F78(u8 taskID); +static void sub_8142FCC(u8 taskID); +static void sub_814302C(u8 taskID); + +static void sub_81435DC(struct Sprite* sprite); +static void sub_814386C(struct Sprite* sprite); +static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite); + +static void sub_8143068(u8 a0, u8 a1); +static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2); +static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1); +static void sub_81433E0(void); +static void sub_8143570(void); +static void sub_81435B8(void); +static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid); +static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3); +static bool8 sub_81438C4(void); + +// functions from different files +void sub_81439D0(void); +void sub_80C5CD4(void*); // ? +void sub_80C5E38(void*); // ? +bool8 sub_80C5DCC(void); +bool8 sub_80C5F98(void); +void ReturnFromHallOfFamePC(void); +u16 SpeciesToPokedexNum(u16 species); +void remove_some_task(void); + +// data and gfx + +static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet = +{ + gContestConfetti_Gfx, 0x220, 1001 +}; + +static const u8 sUnused0[8] = {}; + +static const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette = +{ + gContestConfetti_Pal, 1001 +}; + +static const u8 sUnused1[8] = {}; + +static const s16 sHallOfFame_MonsFullTeamPositions[6][4] = +{ + {120, 210, 120, 40}, + {326, 220, 56, 40}, + {-86, 220, 184, 40}, + {120, -62, 120, 88}, + {-25, -62, 200, 88}, + {265, -62, 40, 88} +}; + +static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] = +{ + {120, 214, 120, 64}, + {281, 214, 56, 64}, + {-41, 214, 184, 64} +}; + +static const struct HallofFameMon sDummyFameMon = +{ + 0x3EA03EA, 0, 0, 0, {0} +}; + +static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5}; + +static const struct OamData sOamData_840B598 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +void* const gUnknown_0840B5A0[] = +{ + &ewram[0x08000], + &ewram[0x0A000], + &ewram[0x0C000], + &ewram[0x0E000], + &ewram[0x10000], + &ewram[0x14000], + &ewram[0x18000] +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B5BC[] = +{ + {&ewram[0x8000], 0x800}, + {&ewram[0x8800], 0x800}, + {&ewram[0x9000], 0x800}, + {&ewram[0x9800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B5DC[] = +{ + {&ewram[0xA000], 0x800}, + {&ewram[0xA800], 0x800}, + {&ewram[0xB000], 0x800}, + {&ewram[0xB800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B5FC[] = +{ + {&ewram[0xC000], 0x800}, + {&ewram[0xC800], 0x800}, + {&ewram[0xD000], 0x800}, + {&ewram[0xD800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B61C[] = +{ + {&ewram[0xE000], 0x800}, + {&ewram[0xE800], 0x800}, + {&ewram[0xF000], 0x800}, + {&ewram[0xF800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B63C[] = +{ + {&ewram[0x10000], 0x800}, + {&ewram[0x10800], 0x800}, + {&ewram[0x11000], 0x800}, + {&ewram[0x11800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B65C[] = +{ + {&ewram[0x14000], 0x800}, + {&ewram[0x14800], 0x800}, + {&ewram[0x15000], 0x800}, + {&ewram[0x15800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B67C[] = +{ + {&ewram[0x18000], 0x800}, + {&ewram[0x18800], 0x800}, + {&ewram[0x19000], 0x800}, + {&ewram[0x19800], 0x800} +}; + +static const struct SpriteFrameImage* const sUnknown_0840B69C[7] = +{ + sSpriteImageTable_840B5BC, + sSpriteImageTable_840B5DC, + sSpriteImageTable_840B5FC, + sSpriteImageTable_840B61C, + sSpriteImageTable_840B63C, + sSpriteImageTable_840B65C, + sSpriteImageTable_840B67C +}; + +static const struct SpriteTemplate sUnknown_0840B6B8 = +{ + .tileTag = -1, + .paletteTag = -1, + .oam = &sOamData_840B598, + .anims = NULL, + .images = sSpriteImageTable_840B5BC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_HallOfFame_Dummy +}; + +static const struct OamData sOamData_840B6D0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_840B6D8[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B6E0[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B6E8[] = +{ + ANIMCMD_FRAME(2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B6F0[] = +{ + ANIMCMD_FRAME(3, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B6F8[] = +{ + ANIMCMD_FRAME(4, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B700[] = +{ + ANIMCMD_FRAME(5, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B708[] = +{ + ANIMCMD_FRAME(6, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B710[] = +{ + ANIMCMD_FRAME(7, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B718[] = +{ + ANIMCMD_FRAME(8, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B720[] = +{ + ANIMCMD_FRAME(9, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B728[] = +{ + ANIMCMD_FRAME(10, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B730[] = +{ + ANIMCMD_FRAME(11, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B738[] = +{ + ANIMCMD_FRAME(12, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B740[] = +{ + ANIMCMD_FRAME(13, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B748[] = +{ + ANIMCMD_FRAME(14, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B750[] = +{ + ANIMCMD_FRAME(15, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B758[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd* const sSpriteAnimTable_840B760[] = +{ + sSpriteAnim_840B6D8, + sSpriteAnim_840B6E0, + sSpriteAnim_840B6E8, + sSpriteAnim_840B6F0, + sSpriteAnim_840B6F8, + sSpriteAnim_840B700, + sSpriteAnim_840B708, + sSpriteAnim_840B710, + sSpriteAnim_840B718, + sSpriteAnim_840B720, + sSpriteAnim_840B728, + sSpriteAnim_840B730, + sSpriteAnim_840B738, + sSpriteAnim_840B740, + sSpriteAnim_840B748, + sSpriteAnim_840B750, + sSpriteAnim_840B758 +}; + +static const struct SpriteTemplate sSpriteTemplate_840B7A4 = +{ + .tileTag = 1001, + .paletteTag = 1001, + .oam = &sOamData_840B6D0, + .anims = sSpriteAnimTable_840B760, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_814386C +}; + +// code + +#define tDisplayedPoke data[1] +#define tPokesNumber data[2] +#define tFrameCount data[3] +#define tPlayerSpriteID data[4] +#define tMonSpriteID(i) data[i + 5] + +static void VBlankCB_HallOfFame(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void CB2_HallOfFame(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static bool8 sub_8141E64(void) +{ + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + sub_81433E0(); + gMain.state = 1; + break; + case 1: + sub_8143570(); + gMain.state++; + break; + case 2: + { + u16 saved_IME; + + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetVBlankCallback(VBlankCB_HallOfFame); + saved_IME = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = saved_IME; + REG_DISPSTAT |= 8; + gMain.state++; + } + break; + case 3: + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x710; + REG_BLDY = 0; + sub_81435B8(); + gMain.state++; + break; + case 4: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_HallOfFame); + PlayBGM(BGM_DENDOU); + return 0; + } + break; + } + return 1; +} + +void sub_8141F90(void) +{ + if (sub_8141E64() == 0) + { + u8 taskID = CreateTask(sub_8141FF8, 0); + gTasks[taskID].data[0] = 0; + } +} + +static void sub_8141FC4(void) +{ + if (sub_8141E64() == 0) + { + u8 taskID = CreateTask(sub_8141FF8, 0); + gTasks[taskID].data[0] = 1; + } +} + +static void sub_8141FF8(u8 taskID) +{ + u16 i, j; + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + + gTasks[taskID].tPokesNumber = 0; // valid pokes + for (i = 0; i < 6; i++) + { + u8 nick[12]; + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) + { + fameMons->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + fameMons->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID); + fameMons->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + fameMons->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick); + for (j = 0; j < 10; j++) + { + fameMons->mons[i].nick[j] = nick[j]; + } + gTasks[taskID].tPokesNumber++; + } + else + { + fameMons->mons[i].species = 0; + fameMons->mons[i].tid = 0; + fameMons->mons[i].personality = 0; + fameMons->mons[i].lvl = 0; + fameMons->mons[i].nick[0] = EOS; + } + } + sUnknown_0203931C = 0; + gTasks[taskID].tDisplayedPoke = 0; + gTasks[taskID].data[4] = 0xFF; + for (i = 0; i < 6; i++) + { + gTasks[taskID].tMonSpriteID(i) = 0xFF; + } + if (gTasks[taskID].data[0]) + gTasks[taskID].func = sub_81422E8; + else + gTasks[taskID].func = sub_814217C; +} + +static void sub_814217C(u8 taskID) +{ + u16 i; + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(&ewram[0x1E000]); + + if (gUnknown_02039324 == FALSE) + { + for (i = 0; i < 0x2000; i++) + ewram[i + 0x1E000] = 0; + } + else + sub_8125EC8(3); + + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++) + { + if (lastSavedTeam->mons[0].species == 0) + break; + } + if (i >= HALL_OF_FAME_MAX_TEAMS) + { + struct HallofFameMons* r5 = (struct HallofFameMons*)(&ewram[0x1E000]); + struct HallofFameMons* r6 = (struct HallofFameMons*)(&ewram[0x1E000]); + r5++; + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, r6++, r5++) + { + *r6 = *r5; + } + lastSavedTeam--; + } + *lastSavedTeam = *fameMons; + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrint(gMenuText_HOFSaving, 3, 15); + gTasks[taskID].func = sub_8142274; +} + +static void sub_8142274(u8 taskID) +{ + gGameContinueCallback = sub_8141FC4; + TrySavingData(3); + PlaySE(SE_SAVE); + gTasks[taskID].func = sub_81422B8; + gTasks[taskID].tFrameCount = 32; +} + +static void sub_81422B8(u8 taskID) +{ + if (gTasks[taskID].tFrameCount) + gTasks[taskID].tFrameCount--; + else + gTasks[taskID].func = sub_81422E8; +} + +static void sub_81422E8(u8 taskID) +{ + SetUpWindowConfig(&gWindowConfig_81E7198); + InitMenuWindow(&gWindowConfig_81E7198); + gTasks[taskID].func = sub_8142320; +} + +static void sub_8142320(u8 taskID) +{ + u8 spriteID; + s16 xPos, yPos, field4, field6; + + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + u16 currPokeID = gTasks[taskID].tDisplayedPoke; + struct HallofFameMon* currMon = &fameMons->mons[currPokeID]; + + if (gTasks[taskID].tPokesNumber > 3) + { + xPos = sHallOfFame_MonsFullTeamPositions[currPokeID][0]; + yPos = sHallOfFame_MonsFullTeamPositions[currPokeID][1]; + field4 = sHallOfFame_MonsFullTeamPositions[currPokeID][2]; + field6 = sHallOfFame_MonsFullTeamPositions[currPokeID][3]; + } + else + { + xPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][0]; + yPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][1]; + field4 = sHallOfFame_MonsHalfTeamPositions[currPokeID][2]; + field6 = sHallOfFame_MonsHalfTeamPositions[currPokeID][3]; + } + + spriteID = HallOfFame_LoadPokemonPic(currMon->species, xPos, yPos, currPokeID, currMon->tid, currMon->personality); + gSprites[spriteID].data1 = field4; + gSprites[spriteID].data2 = field6; + gSprites[spriteID].data0 = 0; + gSprites[spriteID].callback = sub_81435DC; + gTasks[taskID].tMonSpriteID(currPokeID) = spriteID; + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskID].func = sub_8142404; +} + +static void sub_8142404(u8 taskID) +{ + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + u16 currPokeID = gTasks[taskID].tDisplayedPoke; + struct HallofFameMon* currMon = &fameMons->mons[currPokeID]; + + if (gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].data0 != 0) + { + if (currMon->species != SPECIES_EGG) + PlayCry1(currMon->species, 0); + HallOfFame_PrintMonInfo(currMon, 0, 14); + gTasks[taskID].tFrameCount = 120; + gTasks[taskID].func = sub_8142484; + } +} + +static void sub_8142484(u8 taskID) +{ + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + u16 currPokeID = gTasks[taskID].tDisplayedPoke; + struct HallofFameMon* currMon = &fameMons->mons[currPokeID]; + + if (gTasks[taskID].tFrameCount != 0) + gTasks[taskID].tFrameCount--; + else + { + sUnknown_0203931C |= (0x10000 << gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.paletteNum); + if (gTasks[taskID].tDisplayedPoke <= 4 && currMon[1].species != 0) // there is another pokemon to display + { + gTasks[taskID].tDisplayedPoke++; + BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F); + gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.priority = 1; + gTasks[taskID].func = sub_8142320; + } + else + gTasks[taskID].func = sub_8142570; + } +} + +static void sub_8142570(u8 taskID) +{ + u16 i; + + BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0); + for (i = 0; i < 6; i++) + { + if (gTasks[taskID].tMonSpriteID(i) != 0xFF) + gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 0; + } + MenuZeroFillWindowRect(0, 14, 29, 19); + sub_8143068(0, 15); + PlaySE(SE_DENDOU); + gTasks[taskID].tFrameCount = 400; + gTasks[taskID].func = sub_8142618; +} + +static void sub_8142618(u8 taskID) +{ + if (gTasks[taskID].tFrameCount != 0) + { + gTasks[taskID].tFrameCount--; + if ((gTasks[taskID].tFrameCount & 3) == 0 && gTasks[taskID].tFrameCount > 110) + sub_81438C4(); + } + else + { + u16 i; + for (i = 0; i < 6; i++) + { + if (gTasks[taskID].tMonSpriteID(i) != 0xFF) + gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1; + } + BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskID].tFrameCount = 7; + gTasks[taskID].func = sub_81426F8; + } +} + +static void sub_81426F8(u8 taskID) +{ + if (gTasks[taskID].tFrameCount >= 16) + gTasks[taskID].func = sub_8142738; + else + { + gTasks[taskID].tFrameCount++; + REG_BLDALPHA = gTasks[taskID].tFrameCount * 256; + } +} + +static void sub_8142738(u8 taskID) +{ + REG_DISPCNT = 0x1940; + SetUpWindowConfig(&gWindowConfig_81E71B4); + InitMenuWindow(&gWindowConfig_81E71B4); + + gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6); + gTasks[taskID].tFrameCount = 120; + gTasks[taskID].func = sub_8142794; +} + +static void sub_8142794(u8 taskID) +{ + if (gTasks[taskID].tFrameCount != 0) + gTasks[taskID].tFrameCount--; + else + { + if (gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x != 160) + gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++; + else + { + MenuDrawTextWindow(1, 2, 15, 9); + HallOfFame_PrintPlayerInfo(1, 2); + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrint(gMenuText_HOFCongratulations, 4, 15); + gTasks[taskID].func = sub_8142818; + } + } +} + +static void sub_8142818(u8 taskID) +{ + if (gMain.newKeys & A_BUTTON) + { + FadeOutBGM(4); + gTasks[taskID].func = sub_8142850; + } +} + +static void sub_8142850(u8 taskID) +{ + CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200); + BeginNormalPaletteFade(-1, 8, 0, 0x10, 0); + gTasks[taskID].func = sub_81428A0; +} + +static void sub_81428A0(u8 taskID) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskID); + SetMainCallback2(sub_81439D0); + } +} + +#undef tDisplayedPoke +#undef tPokesNumber +#undef tFrameCount +#undef tPlayerSpriteID +#undef tMonSpriteID + +void sub_81428CC(void) +{ + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + sub_81433E0(); + gMain.state = 1; + break; + case 1: + sub_8143570(); + gMain.state++; + break; + case 2: + { + u16 savedIme; + + SetVBlankCallback(VBlankCB_HallOfFame); + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIme; + REG_DISPSTAT |= 8; + gMain.state++; + } + break; + case 3: + { + struct HallofFameMons* fameMons; + + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + sub_81435B8(); + + fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + fameMons->mons[0] = sDummyFameMon; + + sub_80C5CD4(fameMons); + gMain.state++; + } + break; + case 4: + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + if (sub_80C5DCC()) + gMain.state++; + break; + case 5: + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x710; + REG_BLDY = 0; + CreateTask(sub_8142A28, 0); + SetMainCallback2(CB2_HallOfFame); + break; + } +} + +#define tCurrTeamNo data[0] +#define tCurrPageNo data[1] +#define tCurrPokeID data[2] +#define tPokesNo data[4] +#define tMonSpriteID(i) data[i + 5] + +static void sub_8142A28(u8 taskID) +{ + if (sub_8125EC8(3) != 1) + gTasks[taskID].func = sub_8142FEC; + else + { + u16 *vram1, *vram2; + + u16 i; + struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]); + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++) + { + if (savedTeams->mons[0].species == 0) + break; + } + if (i < HALL_OF_FAME_MAX_TEAMS) + gTasks[taskID].tCurrTeamNo = i - 1; + else + gTasks[taskID].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1; + gTasks[taskID].tCurrPageNo = GetGameStat(10); + + for (i = 0, vram1 = (u16*)(VRAM + 0x381A), vram2 = (u16*)(VRAM + 0x385A); i <= 16; i++) + { + *(vram1 + i) = i + 3; + *(vram2 + i) = i + 20; + } + SetUpWindowConfig(&gWindowConfig_81E7198); + InitMenuWindow(&gWindowConfig_81E7198); + gTasks[taskID].func = sub_8142B04; + } +} + +static void sub_8142B04(u8 taskID) +{ + struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]); + struct HallofFameMon* currMon; + u16 i; + u8* stringPtr; + + for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++) + savedTeams++; + + currMon = &savedTeams->mons[0]; + sUnknown_0203931C = 0; + gTasks[taskID].tCurrPokeID = 0; + gTasks[taskID].tPokesNo = 0; + + for (i = 0; i < 6; i++, currMon++) + { + if (currMon->species != 0) + gTasks[taskID].tPokesNo++; + } + + currMon = &savedTeams->mons[0]; + + for (i = 0; i < 6; i++, currMon++) + { + if (currMon->species != 0) + { + u16 spriteID; + s16 posX, posY; + if (gTasks[taskID].tPokesNo > 3) + { + posX = sHallOfFame_MonsFullTeamPositions[i][2]; + posY = sHallOfFame_MonsFullTeamPositions[i][3]; + } + else + { + posX = sHallOfFame_MonsHalfTeamPositions[i][2]; + posY = sHallOfFame_MonsHalfTeamPositions[i][3]; + } + spriteID = HallOfFame_LoadPokemonPic(currMon->species, posX, posY, i, currMon->tid, currMon->personality); + gSprites[spriteID].oam.priority = 1; + gTasks[taskID].tMonSpriteID(i) = spriteID; + } + else + gTasks[taskID].tMonSpriteID(i) = 0xFF; + } + + BlendPalettes(0xFFFF0000, 0xC, 0x735F); + + stringPtr = gStringVar1; + stringPtr = StringCopy(stringPtr, gMenuText_HOFNumber); + stringPtr[0] = 0xFC; + stringPtr[1] = 0x14; + stringPtr[2] = 0x6; + stringPtr += 3; + stringPtr = ConvertIntToDecimalString(stringPtr, gTasks[taskID].tCurrPageNo); + stringPtr[0] = 0xFC; + stringPtr[1] = 0x13; + stringPtr[2] = 0xF0; + stringPtr[3] = EOS; + MenuPrint(gStringVar1, 0, 0); + + gTasks[taskID].func = sub_8142CC8; +} + +static void sub_8142CC8(u8 taskID) +{ + struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]); + struct HallofFameMon* currMon; + u16 i; + u16 currMonID; + + for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++) + savedTeams++; + + for (i = 0; i < 6; i++) + { + u16 spriteID = gTasks[taskID].tMonSpriteID(i); + if (spriteID != 0xFF) + gSprites[spriteID].oam.priority = 1; + } + + currMonID = gTasks[taskID].tMonSpriteID(gTasks[taskID].tCurrPokeID); + gSprites[currMonID].oam.priority = 0; + sUnknown_0203931C = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000; + BlendPalettesUnfaded(sUnknown_0203931C, 0xC, 0x735F); + + currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID]; + if (currMon->species != SPECIES_EGG) + { + StopCryAndClearCrySongs(); + PlayCry1(currMon->species, 0); + } + HallOfFame_PrintMonInfo(currMon, 0, 14); + + gTasks[taskID].func = sub_8142DF4; +} + +static void sub_8142DF4(u8 taskID) +{ + u16 i; + if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskID].tCurrTeamNo != 0) // prepare another team to view + { + gTasks[taskID].tCurrTeamNo--; + for (i = 0; i < 6; i++) + { + u8 spriteID = gTasks[taskID].tMonSpriteID(i); + if (spriteID != 0xFF) + { + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteID].oam.paletteNum)); + DestroySprite(&gSprites[spriteID]); + } + } + if (gTasks[taskID].tCurrPageNo != 0) + gTasks[taskID].tCurrPageNo--; + gTasks[taskID].func = sub_8142B04; + } + else // no more teams to view, turn off hall of fame PC + { + if (IsCryPlayingOrClearCrySongs()) + { + StopCryAndClearCrySongs(); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + } + gTasks[taskID].func = sub_8142F78; + } + } + else if (gMain.newKeys & B_BUTTON) // turn off hall of fame PC + { + if (IsCryPlayingOrClearCrySongs()) + { + StopCryAndClearCrySongs(); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + } + gTasks[taskID].func = sub_8142F78; + } + else if (gMain.newKeys & DPAD_UP && gTasks[taskID].tCurrPokeID != 0) // change poke -1 + { + gTasks[taskID].tCurrPokeID--; + gTasks[taskID].func = sub_8142CC8; + } + else if (gMain.newKeys & DPAD_DOWN && gTasks[taskID].tCurrPokeID < gTasks[taskID].tPokesNo - 1) // change poke +1 + { + gTasks[taskID].tCurrPokeID++; + gTasks[taskID].func = sub_8142CC8; + } +} + +static void sub_8142F78(u8 taskID) +{ + struct HallofFameMons* fameMons; + + CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200); + fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + fameMons->mons[0] = sDummyFameMon; + sub_80C5E38(fameMons); + gTasks[taskID].func = sub_8142FCC; +} + +static void sub_8142FCC(u8 taskID) +{ + if (sub_80C5F98()) + { + DestroyTask(taskID); + ReturnFromHallOfFamePC(); + } +} + +static void sub_8142FEC(u8 taskID) +{ + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrintMessage(gMenuText_HOFCorrupt, 3, 15); + gTasks[taskID].func = sub_814302C; +} + +static void sub_814302C(u8 taskID) +{ + if (MenuUpdateWindowText() && gMain.newKeys & A_BUTTON) + gTasks[taskID].func = sub_8142F78; +} + +#undef tCurrTeamNo +#undef tCurrPageNo +#undef tCurrPokeID +#undef tPokesNo +#undef tMonSpriteID + +static void sub_8143068(u8 a0, u8 a1) +{ + sub_8072BD8(gMenuText_WelcomeToHOFAndDexRating, 0, a1 + 1, 0xF0); +} + +static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) +{ + u8* stringPtr; + u16 monData; + u16 i; + + stringPtr = gStringVar1; + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0x28; + stringPtr[3] = EOS; + + if (currMon->species != SPECIES_EGG) + { + monData = SpeciesToPokedexNum(currMon->species); + if (monData != 0xFFFF) + { + stringPtr = StringCopy(stringPtr, gOtherText_Number2); + ConvertIntToDecimalStringN(stringPtr, monData, 2, 3); + } + } + + MenuPrint(gStringVar1, a1 + 4, a2 + 1); + stringPtr = gStringVar1; + + for (i = 0; i < 10 && currMon->nick[i] != EOS; stringPtr[i] = currMon->nick[i], i++) {} + stringPtr += i; + stringPtr[0] = EOS; + + if (currMon->species == SPECIES_EGG) + { + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0xA0; + stringPtr[3] = EOS; + MenuPrint(gStringVar1, a1 + 9, a2 + 1); + MenuZeroFillWindowRect(0, a2 + 3, 29, a2 + 4); + } + else + { + + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0x3E; + stringPtr += 3; + + stringPtr[0] = CHAR_SLASH; + stringPtr++; + + for (i = 0; i < 10 && gSpeciesNames[currMon->species][i] != EOS; stringPtr[i] = gSpeciesNames[currMon->species][i], i++) {} + + stringPtr += i; + stringPtr[0] = CHAR_SPACE; + stringPtr++; + + if (currMon->species != SPECIES_NIDORAN_M && currMon->species != SPECIES_NIDORAN_F) + { + switch (GetGenderFromSpeciesAndPersonality(currMon->species, currMon->personality)) + { + case MON_MALE: + stringPtr[0] = CHAR_MALE; + stringPtr++; + break; + case MON_FEMALE: + stringPtr[0] = CHAR_FEMALE; + stringPtr++; + break; + } + } + + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0xA0; + stringPtr[3] = EOS; + + MenuPrint(gStringVar1, a1 + 9, a2 + 1); + + monData = currMon->lvl; + + stringPtr = StringCopy(gStringVar1, gOtherText_Level3); + + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x14; + stringPtr[2] = 6; + stringPtr += 3; + + stringPtr = ConvertIntToDecimalStringN(stringPtr, monData, 0, 3); + + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0x30; + stringPtr[3] = EOS; + + MenuPrint(gStringVar1, a1 + 7, a2 + 3); + + monData = currMon->tid; + + stringPtr = StringCopy(gStringVar1, gOtherText_IDNumber); + ConvertIntToDecimalStringN(stringPtr, monData, 2, 5); + + MenuPrint(gStringVar1, a1 + 13, a2 + 3); + } +} + +#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) + +static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1) +{ + u8* stringPtr; + u16 visibleTid; + + MenuPrint(gOtherText_Name, a0 + 1, a1 + 1); + MenuPrint_RightAligned(gSaveBlock2.playerName, a0 + 14, a1 + 1); + + MenuPrint(gOtherText_IDNumber2, a0 + 1, a1 + 3); + visibleTid = ByteRead16(gSaveBlock2.playerTrainerId); + ConvertIntToDecimalStringN(gStringVar1, visibleTid, 2, 5); + + MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 3); + MenuPrint(gMainMenuString_Time, a0 + 1, a1 + 5); + + stringPtr = ConvertIntToDecimalString(gStringVar1, gSaveBlock2.playTimeHours); + stringPtr[0] = CHAR_SPACE; + stringPtr[1] = CHAR_COLON; + stringPtr[2] = CHAR_SPACE; + stringPtr += 3; + + stringPtr = ConvertIntToDecimalStringN(stringPtr, gSaveBlock2.playTimeMinutes, 2, 2); + stringPtr[0] = EOS; + + MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 5); +} + +static void sub_81433E0(void) +{ + u32 offsetWrite, offsetWrite2, offsetWrite3, offsetWrite4; + u32 size, size2, size3, size4; + u16 i; + + REG_DISPCNT = 0; + + REG_BG0CNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + + REG_BG1CNT = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + + REG_BG2CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + + REG_BG3CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + + offsetWrite = (VRAM); + size = 0x18000; + while (TRUE) + { + DmaFill16(3, 0, offsetWrite, 0x1000); + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill16(3, 0, offsetWrite, size); + break; + } + } + + offsetWrite2 = OAM; + size2 = OAM_SIZE; + DmaFill32(3, 0, offsetWrite2, size2); + + offsetWrite3 = PLTT; + size3 = PLTT_SIZE; + DmaFill16(3, 0, offsetWrite3, size3); + + LZ77UnCompVram(gHallOfFame_Gfx, (void*)(VRAM)); + + for (i = 0; i < 64; i++) + { + *((u16*)(VRAM + 0x3800) + i) = 1; + } + for (i = 0; i < 192; i++) + { + *((u16*)(VRAM + 0x3B80) + i) = 1; + } + for (i = 0; i < 1024; i++) + { + *((u16*)(VRAM + 0x3000) + i) = 2; + } + + offsetWrite4 = (u32)(&ewram[0]); + size4 = 0x4000; + while (TRUE) + { + DmaFill16(3, 0, offsetWrite4, 0x1000); + offsetWrite4 += 0x1000; + size4 -= 0x1000; + if (size4 <= 0x1000) + { + DmaFill16(3, 0, offsetWrite4, size4); + break; + } + } + + ResetPaletteFade(); + LoadPalette(gHallOfFame_Pal, 0, 0x20); +} + +static void sub_8143570(void) +{ + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); + LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); + SetUpWindowConfig(&gWindowConfig_81E71B4); + InitMenuWindow(&gWindowConfig_81E71B4); +} + +static void sub_81435B8(void) +{ + REG_BG1CNT = 0x700; + REG_BG3CNT = 0x603; + REG_DISPCNT = 0x1B40; +} + +static void sub_81435DC(struct Sprite* sprite) +{ + u32 spritePos = *(u32*)(&sprite->pos1); + u32 dataPos = *(u32*)(&sprite->data1); + if (spritePos != dataPos) + { + if (sprite->pos1.x < sprite->data1) + sprite->pos1.x += 15; + if (sprite->pos1.x > sprite->data1) + sprite->pos1.x -= 15; + + if (sprite->pos1.y < sprite->data2) + sprite->pos1.y += 10; + if (sprite->pos1.y > sprite->data2) + sprite->pos1.y -= 10; + } + else + { + sprite->data0 = 1; + sprite->callback = SpriteCB_HallOfFame_Dummy; + } +} + +static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite) +{ + +} + +void sub_8143648(u16 paletteTag, u8 animID) +{ + gUnknown_02024E8C = sUnknown_0840B6B8; + gUnknown_02024E8C.paletteTag = paletteTag; + gUnknown_02024E8C.images = sUnknown_0840B69C[animID]; + gUnknown_02024E8C.anims = gSpriteAnimTable_81E7C64; +} + +void sub_8143680(u16 paletteTag, u8 animID) +{ + gUnknown_02024E8C = sUnknown_0840B6B8; + gUnknown_02024E8C.paletteTag = paletteTag; + gUnknown_02024E8C.images = sUnknown_0840B69C[animID]; + gUnknown_02024E8C.anims = gUnknown_081EC2A4[0]; +} + +static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid) +{ + u8 spriteID; + const u8* pokePal; + + LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[pokeID], species, pid, 1); + + pokePal = GetMonSpritePalFromOtIdPersonality(species, tid, pid); + LoadCompressedPalette(pokePal, 16 * pokeID + 256, 0x20); + + sub_8143648(pokeID, pokeID); + spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 10 - pokeID); + gSprites[spriteID].oam.paletteNum = pokeID; + return spriteID; +} + +static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3) +{ + u8 spriteID; + + DecompressPicFromTable_2(&gTrainerFrontPicTable[trainerPicID], gTrainerFrontPicCoords[trainerPicID].coords, gTrainerFrontPicCoords[trainerPicID].y_offset, (void*) 0x2000000, gUnknown_0840B5A0[a3], trainerPicID); + + LoadCompressedPalette(gTrainerFrontPicPaletteTable[trainerPicID].data, 16 * a3 + 256, 0x20); + sub_8143680(a3, a3); + + spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 1); + gSprites[spriteID].oam.paletteNum = a3; + + return spriteID; +} + +static void sub_814386C(struct Sprite* sprite) +{ + if (sprite->pos2.y > 120) + DestroySprite(sprite); + else + { + u16 rand; + u8 tableID; + + sprite->pos2.y++; + sprite->pos2.y += sprite->data1; + + tableID = sprite->data0; + rand = (Random() % 4) + 8; + sprite->pos2.x = rand * gSineTable[tableID] / 256; + + sprite->data0 += 4; + } +} + +static bool8 sub_81438C4(void) +{ + u8 spriteID; + struct Sprite* sprite; + + s16 posX = Random() % 240; + s16 posY = -(Random() % 8); + + spriteID = CreateSprite(&sSpriteTemplate_840B7A4, posX, posY, 0); + sprite = &gSprites[spriteID]; + + StartSpriteAnim(sprite, Random() % 17); + + if (Random() & 3) + sprite->data1 = 0; + else + sprite->data1 = 1; + + return 0; +} diff --git a/src/intro.c b/src/scene/intro.c index a43e0356c..dd7cc858c 100644 --- a/src/intro.c +++ b/src/scene/intro.c @@ -1785,7 +1785,7 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front) LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1); else LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0); - lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, 0, 0xFFFF); LoadCompressedPalette(lzPaletteData, 0x100 + d * 0x10, 0x20); sub_8143648(d, d); spriteId = CreateSprite(&gUnknown_02024E8C, x, y, (d + 1) * 4); diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c new file mode 100755 index 000000000..cd0589af8 --- /dev/null +++ b/src/scene/intro_credits_graphics.c @@ -0,0 +1,532 @@ +#include "global.h" +#include "gba/m4a_internal.h" +#include "intro.h" +#include "data2.h" +#include "decompress.h" +#include "hall_of_fame.h" +#include "intro_credits_graphics.h" +#include "libgncmultiboot.h" +#include "link.h" +#include "m4a.h" +#include "main.h" +#include "new_game.h" +#include "palette.h" +#include "rng.h" +#include "save.h" +#include "songs.h" +#include "sound.h" +#include "species.h" +#include "task.h" +#include "title_screen.h" +#include "trig.h" +#include "unknown_task.h" + +// define register constants for the inline asm +asm(".include \"constants/gba_constants.inc\"\n"); + +struct UnknownStruct1 +{ + u8 var0_0:4; + u8 var0_4:2; + u8 var0_6:2; + u8 var1; + u8 var2; + u8 var3; + u16 var4; +}; + +extern u8 gUnknown_0841225C; +extern u8 gUnknown_084126DC; +extern u8 gUnknown_084121FC; +extern u8 gUnknown_084128D8; +extern u8 gUnknown_08412EB4; +extern u8 gUnknown_08412818; +extern u8 gUnknown_08413184; +extern u8 gUnknown_08413340; +extern u8 gUnknown_084139C8; +extern u8 gUnknown_08413300; +extern u8 gUnknown_08413CCC; + +extern const struct SpriteTemplate gSpriteTemplate_8416B3C; +const extern struct CompressedSpriteSheet gUnknown_08416B54; +const extern struct CompressedSpriteSheet gUnknown_08416BDC; + +extern u16 gUnknown_02039358; +extern s16 gUnknown_0203935A; +extern s16 gUnknown_0203935C; +extern u8 gReservedSpritePaletteCount; + +void sub_8149248(); +void sub_8149264(); + +void load_intro_part2_graphics(u8 a) +{ + LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000)); + LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800)); + LoadPalette(&gUnknown_084121FC, 240, 32); + switch (a) + { + case 0: + default: + LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08412818, 0, 96); + LoadCompressedObjectPic(&gUnknown_08416B54); + LoadPalette(&gUnknown_08413184, 256, 32); + sub_8149248(); + break; + case 1: + LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08413300, 0, 32); + LoadCompressedObjectPic(&gUnknown_08416BDC); + LoadPalette(&gUnknown_08413CCC, 256, 32); + sub_8149264(); + break; + } + gUnknown_0203935C = 0; + gReservedSpritePaletteCount = 8; +} + +void sub_8148C78(u8 a) +{ + if (a == 1) + { + REG_BG3CNT = 0x603; + REG_BG2CNT = 0x702; + REG_BG1CNT = 0xF05; + REG_DISPCNT = 0x1E40; + } + else + { + REG_BG3CNT = 0x603; + REG_BG2CNT = 0x702; + REG_BG1CNT = 0xF05; + REG_DISPCNT = 0x1E40; + } +} + +extern u8 gUnknown_084131C4; +extern u8 gUnknown_084131A4; +extern u8 gUnknown_0841221C; +extern u8 gUnknown_08412878; +extern u8 gUnknown_08413320; +extern u8 gUnknown_0841223C; +extern u8 gUnknown_08413E78; +extern u8 gUnknown_08414084; +extern u8 gUnknown_08413E38; +const extern struct CompressedSpriteSheet gUnknown_08416C70; +extern u8 gUnknown_08414064; +extern struct UnknownStruct1 gUnknown_08416B94; +extern struct UnknownStruct1 gUnknown_08416C10; +extern struct UnknownStruct1 gUnknown_08416C8C; +const extern union AnimCmd *const gSpriteAnimTable_8416B84; +const extern union AnimCmd *const gSpriteAnimTable_8416C04; +const extern union AnimCmd *const gSpriteAnimTable_8416C88; +const extern struct SpriteTemplate gSpriteTemplate_8416CDC; +const extern struct SpriteTemplate gSpriteTemplate_Brendan; +const extern struct SpriteTemplate gSpriteTemplate_8416CF4; +const extern struct SpriteTemplate gSpriteTemplate_May; +const extern struct SpriteTemplate gSpriteTemplate_8416D7C; +const extern struct SpriteTemplate gSpriteTemplate_8416D94; + +void sub_8149280(); + +void sub_8148CB0(u8 a) +{ + LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000)); + LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800)); + switch (a) + { + case 0: + default: + LoadPalette(&gUnknown_084121FC, 240, 32); + LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08412818, 0, 96); + LoadCompressedObjectPic(&gUnknown_08416B54); + LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000)); + LoadPalette(&gUnknown_08413184, 256, 32); + sub_8149248(); + break; + case 1: + LoadPalette(&gUnknown_0841221C, 240, 32); + LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08412878, 0, 96); + LoadCompressedObjectPic(&gUnknown_08416B54); + LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000)); + LoadPalette(&gUnknown_084131A4, 256, 32); + sub_8149248(); + break; + case 2: + case 3: + LoadPalette(&gUnknown_0841221C, 240, 32); + LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08413320, 0, 32); + LoadCompressedObjectPic(&gUnknown_08416BDC); + LoadPalette(&gUnknown_08413320, 256, 32); + sub_8149264(); + break; + case 4: + LoadPalette(&gUnknown_0841223C, 240, 32); + LZ77UnCompVram(&gUnknown_08413E78, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_08414084, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08413E38, 0, 64); + LoadCompressedObjectPic(&gUnknown_08416C70); + LoadPalette(&gUnknown_08414064, 256, 32); + sub_8149280(); + break; + } + gReservedSpritePaletteCount = 8; + gUnknown_0203935C = 0; +} + +void sub_8148E90(u8 a) +{ + REG_BG3CNT = 0x603; + REG_BG2CNT = 0x702; + REG_BG1CNT = 0xF05; + REG_DISPCNT = 0x1F40; +} + +u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d) +{ + u8 taskId = CreateTask(&sub_8148F3C, 0); + + gTasks[taskId].data[0] = a; + gTasks[taskId].data[1] = b; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = c; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; + gTasks[taskId].data[7] = d; + gTasks[taskId].data[8] = 8; + gTasks[taskId].data[9] = 0; + sub_8148F3C(taskId); + return taskId; +} + +#ifdef NONMATCHING +void sub_8148F3C(u8 taskId) +{ + register u32 r4 asm("r4"); + s32 r2; + + r4 = (u16)gTasks[taskId].data[1] << 16; + if (r4 != 0) + { + r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3] - (r4 >> 12); + gTasks[taskId].data[2] = r2 >> 16; + gTasks[taskId].data[3] = r2; + REG_BG1HOFS = gTasks[taskId].data[2]; + REG_BG1VOFS = gUnknown_0203935A + gUnknown_02039358; + } + + r4 = (u16)gTasks[taskId].data[4] << 16; + if (r4 != 0) + { + r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - (r4 >> 12); + gTasks[taskId].data[5] = r2 >> 16; + gTasks[taskId].data[3] = r2; + REG_BG2HOFS = gTasks[taskId].data[5]; + if (gTasks[taskId].data[0] != 0) + REG_BG2VOFS = gUnknown_0203935A + gUnknown_02039358; + else + REG_BG2VOFS = gUnknown_02039358; + } + + r4 = (u16)gTasks[taskId].data[7] << 16; + if (r4 != 0) + { + r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9] - (r4 >> 12);; + gTasks[taskId].data[8] = r2 >> 16; + gTasks[taskId].data[9] = r2; + REG_BG3HOFS = gTasks[taskId].data[8]; + REG_BG3VOFS = gUnknown_02039358; + } +} +#else +__attribute__((naked)) +void sub_8148F3C(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r1, _08148FB4 @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r3, r0, r1\n\ + ldrh r0, [r3, 0xA]\n\ + lsls r4, r0, 16\n\ + adds r6, r1, 0\n\ + cmp r4, 0\n\ + beq _08148F7C\n\ + movs r1, 0xC\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 16\n\ + ldrh r1, [r3, 0xE]\n\ + adds r2, r0, r1\n\ + lsrs r0, r4, 12\n\ + subs r2, r0\n\ + asrs r1, r2, 16\n\ + strh r1, [r3, 0xC]\n\ + strh r2, [r3, 0xE]\n\ + ldr r0, _08148FB8 @ =REG_BG1HOFS\n\ + strh r1, [r0]\n\ + ldr r2, _08148FBC @ =REG_BG1VOFS\n\ + ldr r1, _08148FC0 @ =gUnknown_02039358\n\ + ldr r0, _08148FC4 @ =gUnknown_0203935A\n\ + ldrh r0, [r0]\n\ + ldrh r1, [r1]\n\ + adds r0, r1\n\ + strh r0, [r2]\n\ +_08148F7C:\n\ + ldrh r0, [r3, 0x10]\n\ + lsls r4, r0, 16\n\ + cmp r4, 0\n\ + beq _08148FD8\n\ + movs r1, 0x12\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 16\n\ + ldrh r1, [r3, 0x14]\n\ + adds r2, r0, r1\n\ + lsrs r0, r4, 12\n\ + subs r2, r0\n\ + asrs r1, r2, 16\n\ + strh r1, [r3, 0x12]\n\ + strh r2, [r3, 0x14]\n\ + ldr r0, _08148FC8 @ =REG_BG2HOFS\n\ + strh r1, [r0]\n\ + movs r1, 0x8\n\ + ldrsh r0, [r3, r1]\n\ + cmp r0, 0\n\ + beq _08148FD0\n\ + ldr r2, _08148FCC @ =REG_BG2VOFS\n\ + ldr r1, _08148FC0 @ =gUnknown_02039358\n\ + ldr r0, _08148FC4 @ =gUnknown_0203935A\n\ + ldrh r0, [r0]\n\ + ldrh r1, [r1]\n\ + adds r0, r1\n\ + strh r0, [r2]\n\ + b _08148FD8\n\ + .align 2, 0\n\ +_08148FB4: .4byte gTasks\n\ +_08148FB8: .4byte REG_BG1HOFS\n\ +_08148FBC: .4byte REG_BG1VOFS\n\ +_08148FC0: .4byte gUnknown_02039358\n\ +_08148FC4: .4byte gUnknown_0203935A\n\ +_08148FC8: .4byte REG_BG2HOFS\n\ +_08148FCC: .4byte REG_BG2VOFS\n\ +_08148FD0:\n\ + ldr r0, _08149010 @ =REG_BG2VOFS\n\ + ldr r1, _08149014 @ =gUnknown_02039358\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ +_08148FD8:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r3, r0, r6\n\ + ldrh r0, [r3, 0x16]\n\ + lsls r4, r0, 16\n\ + cmp r4, 0\n\ + beq _08149008\n\ + movs r1, 0x18\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 16\n\ + ldrh r1, [r3, 0x1A]\n\ + adds r2, r0, r1\n\ + lsrs r0, r4, 12\n\ + subs r2, r0\n\ + asrs r1, r2, 16\n\ + strh r1, [r3, 0x18]\n\ + strh r2, [r3, 0x1A]\n\ + ldr r0, _08149018 @ =REG_BG3HOFS\n\ + strh r1, [r0]\n\ + ldr r1, _0814901C @ =REG_BG3VOFS\n\ + ldr r0, _08149014 @ =gUnknown_02039358\n\ + ldrh r0, [r0]\n\ + strh r0, [r1]\n\ +_08149008:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08149010: .4byte REG_BG2VOFS\n\ +_08149014: .4byte gUnknown_02039358\n\ +_08149018: .4byte REG_BG3HOFS\n\ +_0814901C: .4byte REG_BG3VOFS\n\ + .syntax divided\n"); +} +#endif + +void sub_8149020(u8 mode) +{ + u16 var1; + u16 var2; + switch (mode) + { + case 0: + default: + /* stuff */ + if (gMain.vblankCounter1 & 3 || gPaletteFade.active) + break; + if (gMain.vblankCounter1 & 4) + { + var1 = gPlttBufferUnfaded[9]; + var2 = gPlttBufferUnfaded[10]; + } + else + { + var1 = gPlttBufferUnfaded[10]; + var2 = gPlttBufferUnfaded[9]; + } + LoadPalette(&var1, 9, 2); + LoadPalette(&var2, 10, 2); + break; + case 2: + if (gMain.vblankCounter1 & 3 || gPaletteFade.active) + break; + if (gMain.vblankCounter1 & 4) + { + var1 = 0x3D27; + var2 = 0x295; + } + else + { + var1 = 0x31C; + var2 = 0x3D27; + } + LoadPalette(&var1, 12, 2); + LoadPalette(&var2, 13, 2); + break; + case 1: + break; + } +} + +void sub_814910C(struct Sprite *sprite) +{ + if (gUnknown_0203935C) + { + DestroySprite(sprite); + } + else + { + s32 var = ((sprite->pos1.x << 16) | (u16)sprite->data2) + (u16)sprite->data1; + sprite->pos1.x = var >> 16; + sprite->data2 = var; + if (sprite->pos1.x > 255) sprite->pos1.x = 0xFFE0; + if (sprite->data0) + { + sprite->pos2.y = -(gUnknown_02039358 + gUnknown_0203935A); + } + else + { + sprite->pos2.y = -gUnknown_02039358; + } + } +} + +void sub_8149174(u8 a, struct UnknownStruct1 *b, const union AnimCmd *const *c, u8 d) +{ + u8 i; + + for(i = 0; i < d; i++) + { + u8 sprite = CreateSprite(&gSpriteTemplate_8416B3C, b[i].var1, b[i].var2, b[i].var3); + CalcCenterToCornerVec(&gSprites[sprite], b[i].var0_4, b[i].var0_6, 0); + gSprites[sprite].oam.priority = 3; + gSprites[sprite].oam.shape = b[i].var0_4; + gSprites[sprite].oam.size = b[i].var0_6; + gSprites[sprite].oam.paletteNum = 0; + gSprites[sprite].anims = c; + StartSpriteAnim(&gSprites[sprite], b[i].var0_0); + gSprites[sprite].data0 = a; + gSprites[sprite].data1 = b[i].var4; + gSprites[sprite].data2 = 0; + } +} + +void sub_8149248() +{ + sub_8149174(0, &gUnknown_08416B94, &gSpriteAnimTable_8416B84, 9); +} + +void sub_8149264() +{ + sub_8149174(1, &gUnknown_08416C10, &gSpriteAnimTable_8416C04, 12); +} + +void sub_8149280() +{ + sub_8149174(1, &gUnknown_08416C8C, &gSpriteAnimTable_8416C88, 6); +} + +void nullsub_82() +{ +} + +void sub_81492A0(struct Sprite* sprite) +{ + sprite->invisible = gSprites[sprite->data0].invisible; + sprite->pos1.x = gSprites[sprite->data0].pos1.x; + sprite->pos1.y = gSprites[sprite->data0].pos1.y + 8; + sprite->pos2.x = gSprites[sprite->data0].pos2.x; + sprite->pos2.y = gSprites[sprite->data0].pos2.y; +} + + + +u8 intro_create_brendan_sprite(s16 a, s16 b) +{ + u8 sprite = CreateSprite(&gSpriteTemplate_8416CDC, a, b, 0); + u8 brendan = CreateSprite(&gSpriteTemplate_Brendan, a, b + 8, 1); + gSprites[brendan].data0 = sprite; + return sprite; +} + +u8 intro_create_may_sprite(s16 a, s16 b) +{ + u8 sprite = CreateSprite(&gSpriteTemplate_8416CF4, a, b, 0); + u8 may = CreateSprite(&gSpriteTemplate_May, a, b + 8, 1); + gSprites[may].data0 = sprite; + return sprite; +} + +void nullsub_83() +{ +} + +void sub_81493C4(struct Sprite* sprite) +{ + sprite->invisible = gSprites[sprite->data0].invisible; + sprite->pos1.y = gSprites[sprite->data0].pos1.y; + sprite->pos2.x = gSprites[sprite->data0].pos2.x; + sprite->pos2.y = gSprites[sprite->data0].pos2.y; +} + +u8 intro_create_latios_sprite(s16 a, s16 b) +{ + u8 sprite = CreateSprite(&gSpriteTemplate_8416D7C, a - 32, b, 2); + u8 latios = CreateSprite(&gSpriteTemplate_8416D7C, a + 32, b, 2); + gSprites[latios].data0 = sprite; + StartSpriteAnim(&gSprites[latios], 1); + gSprites[latios].callback = &sub_81493C4; + return sprite; +} + +u8 intro_create_latias_sprite(s16 a, s16 b) +{ + u8 sprite = CreateSprite(&gSpriteTemplate_8416D94, a - 32, b, 2); + u8 latios = CreateSprite(&gSpriteTemplate_8416D94, a + 32, b, 2); + gSprites[latios].data0 = sprite; + StartSpriteAnim(&gSprites[latios], 1); + gSprites[latios].callback = &sub_81493C4; + return sprite; +} diff --git a/src/new_game.c b/src/scene/new_game.c index 226ac9bb7..6ab21c544 100644 --- a/src/new_game.c +++ b/src/scene/new_game.c @@ -11,7 +11,7 @@ #include "item_menu.h" #include "lottery_corner.h" #include "mail_data.h" -#include "mauville_old_man.h" +#include "mauville_man.h" #include "play_time.h" #include "player_pc.h" #include "pokeblock.h" @@ -20,7 +20,7 @@ #include "pokemon_storage_system.h" #include "rng.h" #include "roamer.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "script.h" #include "secret_base.h" @@ -99,7 +99,7 @@ void sub_8052DE4(void) void WarpToTruck(void) { - warp1_set(25, 40, -1, -1, -1); // inside of truck + Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck warp_in(); } @@ -157,7 +157,7 @@ void NewGameInitData(void) ClearPokeblocks(); ClearDecorationInventories(); InitEasyChatPhrases(); - SetMauvilleOldMan(); + SetupMauvilleOldMan(); InitDewfordTrend(); ResetFanClub(); ResetLotteryCorner(); diff --git a/src/title_screen.c b/src/scene/title_screen.c index ab0f1d505..2503b0654 100644 --- a/src/title_screen.c +++ b/src/scene/title_screen.c @@ -437,99 +437,99 @@ __attribute__((naked)) static void CreatePressStartBanner(s16 x, s16 y) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - lsls r0, 16\n\ - ldr r2, _0807C3AC @ =0xffe00000\n\ - adds r0, r2\n\ - lsrs r0, 16\n\ - movs r6, 0\n\ - lsls r1, 16\n\ - mov r10, r1\n\ - mov r8, r10\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + lsls r0, 16\n\ + ldr r2, _0807C3AC @ =0xffe00000\n\ + adds r0, r2\n\ + lsrs r0, 16\n\ + movs r6, 0\n\ + lsls r1, 16\n\ + mov r10, r1\n\ + mov r8, r10\n\ _0807C302:\n\ - lsls r5, r0, 16\n\ - asrs r5, 16\n\ - ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ - adds r1, r5, 0\n\ - mov r3, r8\n\ - asrs r2, r3, 16\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - ldr r0, _0807C3B4 @ =gSprites\n\ - mov r9, r0\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - adds r1, r6, 0\n\ - bl StartSpriteAnim\n\ - movs r7, 0x1\n\ - strh r7, [r4, 0x2E]\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r5, 0x20\n\ - lsls r5, 16\n\ - lsrs r0, r5, 16\n\ - cmp r6, 0x2\n\ - bls _0807C302\n\ - ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ - mov r8, r1\n\ - lsls r5, r0, 16\n\ - asrs r5, 16\n\ - mov r2, r10\n\ - asrs r6, r2, 16\n\ - mov r0, r8\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - movs r1, 0x8\n\ - bl StartSpriteAnim\n\ - strh r7, [r4, 0x2E]\n\ - subs r5, 0x60\n\ - lsls r5, 16\n\ - asrs r5, 16\n\ - subs r6, 0x8\n\ - lsls r6, 16\n\ - asrs r6, 16\n\ - mov r0, r8\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - movs r1, 0x9\n\ - bl StartSpriteAnim\n\ - strh r7, [r4, 0x2E]\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + lsls r5, r0, 16\n\ + asrs r5, 16\n\ + ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ + adds r1, r5, 0\n\ + mov r3, r8\n\ + asrs r2, r3, 16\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r4, r0, 4\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + ldr r0, _0807C3B4 @ =gSprites\n\ + mov r9, r0\n\ + add r4, r9\n\ + adds r0, r4, 0\n\ + adds r1, r6, 0\n\ + bl StartSpriteAnim\n\ + movs r7, 0x1\n\ + strh r7, [r4, 0x2E]\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r5, 0x20\n\ + lsls r5, 16\n\ + lsrs r0, r5, 16\n\ + cmp r6, 0x2\n\ + bls _0807C302\n\ + ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ + mov r8, r1\n\ + lsls r5, r0, 16\n\ + asrs r5, 16\n\ + mov r2, r10\n\ + asrs r6, r2, 16\n\ + mov r0, r8\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r4, r0, 4\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + add r4, r9\n\ + adds r0, r4, 0\n\ + movs r1, 0x8\n\ + bl StartSpriteAnim\n\ + strh r7, [r4, 0x2E]\n\ + subs r5, 0x60\n\ + lsls r5, 16\n\ + asrs r5, 16\n\ + subs r6, 0x8\n\ + lsls r6, 16\n\ + asrs r6, 16\n\ + mov r0, r8\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r4, r0, 4\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + add r4, r9\n\ + adds r0, r4, 0\n\ + movs r1, 0x9\n\ + bl StartSpriteAnim\n\ + strh r7, [r4, 0x2E]\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _0807C3AC: .4byte 0xffe00000\n\ _0807C3B0: .4byte sStartCopyrightBannerSpriteTemplate\n\ _0807C3B4: .4byte gSprites\n\ diff --git a/src/script_menu.c b/src/script_menu.c deleted file mode 100644 index f4ac55fb9..000000000 --- a/src/script_menu.c +++ /dev/null @@ -1,1134 +0,0 @@ -#include "global.h" -#include "script_menu.h" -#include "event_data.h" -#include "field_effect.h" -#include "menu.h" -#include "palette.h" -#include "script.h" -#include "sound.h" -#include "sprite.h" -#include "strings.h" -#include "task.h" - -// multichoice lists -const struct MenuAction MultichoiceList_00[] = -{ - {(u8 *)OtherText_Petalburg, 0}, - {(u8 *)OtherText_Slateport, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_02[] = -{ - {(u8 *)OtherText_Enter, 0}, - {(u8 *)OtherText_Info3, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_03[] = -{ - {(u8 *)OtherText_WhatsAContest, 0}, - {(u8 *)OtherText_TypesOfContest, 0}, - {(u8 *)OtherText_Ranks, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_04[] = -{ - {(u8 *)OtherText_CoolContest, 0}, - {(u8 *)OtherText_BeautyContest, 0}, - {(u8 *)OtherText_CuteContest, 0}, - {(u8 *)OtherText_SmartContest, 0}, - {(u8 *)OtherText_ToughContest, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_06[] = -{ - {(u8 *)OtherText_Decoration, 0}, - {(u8 *)OtherText_PackUp, 0}, - {(u8 *)OtherText_Registry, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_05[] = -{ - {(u8 *)OtherText_Decoration, 0}, - {(u8 *)OtherText_PackUp, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_07[] = -{ - {(u8 *)OtherText_Register, 0}, - {(u8 *)OtherText_Registry, 0}, - {(u8 *)OtherText_Information, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_12[] = -{ - {(u8 *)OtherText_Mach, 0}, - {(u8 *)OtherText_Acro, 0}, -}; - -const struct MenuAction MultichoiceList_13[] = -{ - {(u8 *)OtherText_Poison, 0}, - {(u8 *)OtherText_Paralysis, 0}, - {(u8 *)OtherText_Sleep, 0}, - {(u8 *)OtherText_Burn, 0}, - {(u8 *)OtherText_Frozen, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_14[] = -{ - {(u8 *)OtherText_Dewford, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_16[] = -{ - {(u8 *)OtherText_SawIt, 0}, - {(u8 *)OtherText_NotYet, 0}, -}; - -const struct MenuAction MultichoiceList_17[] = -{ - {(u8 *)OtherText_Yes, 0}, - {(u8 *)OtherText_No, 0}, - {(u8 *)OtherText_Info3, 0}, -}; - -const struct MenuAction MultichoiceList_18[] = -{ - {(u8 *)OtherText_SingleBattle, 0}, - {(u8 *)OtherText_DoubleBattle, 0}, - {(u8 *)OtherText_MultiBattle, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_19[] = -{ - {(u8 *)OtherText_Littleroot, 0}, - {(u8 *)OtherText_Slateport, 0}, - {(u8 *)OtherText_Lilycove, 0}, -}; - -const struct MenuAction MultichoiceList_20[] = -{ - {(u8 *)OtherText_Yes, 0}, - {(u8 *)OtherText_No, 0}, - {(u8 *)OtherText_Info3, 0}, -}; - -const struct MenuAction MultichoiceList_23[] = -{ - {(u8 *)OtherText_MakeAChallenge, 0}, - {(u8 *)OtherText_ObtainInformation, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_24[] = -{ - {(u8 *)OtherText_Lv50_2, 0}, - {(u8 *)OtherText_Lv100_2, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_25[] = -{ - {(u8 *)OtherText_Zigzagoon, 0}, - {(u8 *)OtherText_Nincada, 0}, - {(u8 *)OtherText_Poochyena, 0}, -}; - -const struct MenuAction MultichoiceList_26[] = -{ - {(u8 *)OtherText_Nincada2, 0}, - {(u8 *)OtherText_Lotad, 0}, - {(u8 *)OtherText_Roselia, 0}, -}; - -const struct MenuAction MultichoiceList_27[] = -{ - {(u8 *)OtherText_Shroomish, 0}, - {(u8 *)OtherText_Nincada3, 0}, - {(u8 *)OtherText_Surskit, 0}, -}; - -const struct MenuAction MultichoiceList_28[] = -{ - {(u8 *)OtherText_Treecko, 0}, - {(u8 *)OtherText_Torchic, 0}, - {(u8 *)OtherText_Mudkip, 0}, -}; - -const struct MenuAction MultichoiceList_29[] = -{ - {(u8 *)OtherText_Seedot, 0}, - {(u8 *)OtherText_Shroomish2, 0}, - {(u8 *)OtherText_Spinda, 0}, -}; - -const struct MenuAction MultichoiceList_30[] = -{ - {(u8 *)OtherText_Shroomish3, 0}, - {(u8 *)OtherText_Zigzagoon2, 0}, - {(u8 *)OtherText_Wurmple, 0}, -}; - -const struct MenuAction MultichoiceList_31[] = -{ - {(u8 *)OtherText_PokeBall, 0}, - {(u8 *)OtherText_SuperPotion, 0}, - {(u8 *)OtherText_SamePrice, 0}, -}; - -const struct MenuAction MultichoiceList_32[] = -{ - {(u8 *)OtherText_Yen135, 0}, - {(u8 *)OtherText_Yen155, 0}, - {(u8 *)OtherText_Yen175, 0}, -}; - -const struct MenuAction MultichoiceList_33[] = -{ - {(u8 *)OtherText_CostMore, 0}, - {(u8 *)OtherText_CostLess, 0}, - {(u8 *)OtherText_SamePrice2, 0}, -}; - -const struct MenuAction MultichoiceList_34[] = -{ - {(u8 *)OtherText_MaleSymbol, 0}, - {(u8 *)OtherText_FemaleSymbol, 0}, - {(u8 *)OtherText_Neither, 0}, -}; - -const struct MenuAction MultichoiceList_35[] = -{ - {(u8 *)OtherText_Males, 0}, - {(u8 *)OtherText_Females, 0}, - {(u8 *)OtherText_SameNumber, 0}, -}; - -const struct MenuAction MultichoiceList_36[] = -{ - {(u8 *)OtherText_Male, 0}, - {(u8 *)OtherText_Female, 0}, - {(u8 *)OtherText_ItDepends, 0}, -}; - -const struct MenuAction MultichoiceList_37[] = -{ - {(u8 *)OtherText_Six2, 0}, - {(u8 *)OtherText_Eight2, 0}, - {(u8 *)OtherText_Ten, 0}, -}; - -const struct MenuAction MultichoiceList_38[] = -{ - {(u8 *)OtherText_One, 0}, - {(u8 *)OtherText_Two, 0}, - {(u8 *)OtherText_Three, 0}, -}; - -const struct MenuAction MultichoiceList_39[] = -{ - {(u8 *)OtherText_Six, 0}, - {(u8 *)OtherText_Seven, 0}, - {(u8 *)OtherText_Eight, 0}, -}; - -const struct MenuAction MultichoiceList_42[] = -{ - {(u8 *)OtherText_FreshWater, 0}, - {(u8 *)OtherText_SodaPop, 0}, - {(u8 *)OtherText_Lemonade, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_43[] = -{ - {(u8 *)OtherText_HowToRide, 0}, - {(u8 *)OtherText_HowToTurn, 0}, - {(u8 *)OtherText_SandySlopes, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_44[] = -{ - {(u8 *)OtherText_Wheelies, 0}, - {(u8 *)OtherText_BunnyHops, 0}, - {(u8 *)OtherText_Jumping, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_45[] = -{ - {(u8 *)OtherText_Satisfied, 0}, - {(u8 *)OtherText_Dissatisfied, 0}, -}; - -const struct MenuAction MultichoiceList_46[] = -{ - {(u8 *)OtherText_Deepseatooth, 0}, - {(u8 *)OtherText_Deepseascale, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_47[] = -{ - {(u8 *)OtherText_BlueFlute2, 0}, - {(u8 *)OtherText_YellowFlute2, 0}, - {(u8 *)OtherText_RedFlute2, 0}, - {(u8 *)OtherText_WhiteFlute2, 0}, - {(u8 *)OtherText_BlackFlute2, 0}, - {(u8 *)OtherText_GlassChair, 0}, - {(u8 *)OtherText_GlassDesk, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_48[] = -{ - {(u8 *)OtherText_TreeckoDoll, 0}, - {(u8 *)OtherText_TorchicDoll, 0}, - {(u8 *)OtherText_MudkipDoll, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_55[] = -{ - {(u8 *)OtherText_TM32, 0}, - {(u8 *)OtherText_TM29, 0}, - {(u8 *)OtherText_TM35, 0}, - {(u8 *)OtherText_TM24, 0}, - {(u8 *)OtherText_TM13, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_49[] = -{ - {(u8 *)OtherText_50Coins, 0}, - {(u8 *)OtherText_500Coins, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_50[] = -{ - {(u8 *)OtherText_Excellent, 0}, - {(u8 *)OtherText_NotSoHot, 0}, -}; - -const struct MenuAction MultichoiceList_52[] = -{ - {(u8 *)OtherText_Lilycove, 0}, - {(u8 *)OtherText_BattleTower, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_53[] = -{ - {(u8 *)OtherText_Slateport, 0}, - {(u8 *)OtherText_Lilycove, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_54[] = -{ - {(u8 *)OtherText_Right, 0}, - {(u8 *)OtherText_Left, 0}, -}; - -const struct MenuAction MultichoiceList_56[] = -{ - {(u8 *)OtherText_Slateport, 0}, - {(u8 *)OtherText_BattleTower, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_57[] = -{ - {(u8 *)OtherText_1F_2, 0}, - {(u8 *)OtherText_2F_2, 0}, - {(u8 *)OtherText_3F_2, 0}, - {(u8 *)OtherText_4F_2, 0}, - {(u8 *)OtherText_5F_2, 0}, -}; - -const struct MenuAction MultichoiceList_58[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_59[] = -{ - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_60[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_61[] = -{ - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_62[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_63[] = -{ - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_64[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_65[] = -{ - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_66[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_67[] = -{ - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_68[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_69[] = -{ - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_70[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_71[] = -{ - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_72[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_01[] = -{ - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MultichoiceListStruct gMultichoiceLists[] = -{ - {(struct MenuAction *)MultichoiceList_00, 3}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_02, 3}, - {(struct MenuAction *)MultichoiceList_03, 4}, - {(struct MenuAction *)MultichoiceList_04, 6}, - {(struct MenuAction *)MultichoiceList_05, 3}, - {(struct MenuAction *)MultichoiceList_06, 4}, - {(struct MenuAction *)MultichoiceList_07, 4}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_12, 2}, - {(struct MenuAction *)MultichoiceList_13, 6}, - {(struct MenuAction *)MultichoiceList_14, 2}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_16, 2}, - {(struct MenuAction *)MultichoiceList_17, 3}, - {(struct MenuAction *)MultichoiceList_18, 4}, - {(struct MenuAction *)MultichoiceList_19, 3}, - {(struct MenuAction *)MultichoiceList_20, 3}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_23, 3}, - {(struct MenuAction *)MultichoiceList_24, 3}, - {(struct MenuAction *)MultichoiceList_25, 3}, - {(struct MenuAction *)MultichoiceList_26, 3}, - {(struct MenuAction *)MultichoiceList_27, 3}, - {(struct MenuAction *)MultichoiceList_28, 3}, - {(struct MenuAction *)MultichoiceList_29, 3}, - {(struct MenuAction *)MultichoiceList_30, 3}, - {(struct MenuAction *)MultichoiceList_31, 3}, - {(struct MenuAction *)MultichoiceList_32, 3}, - {(struct MenuAction *)MultichoiceList_33, 3}, - {(struct MenuAction *)MultichoiceList_34, 3}, - {(struct MenuAction *)MultichoiceList_35, 3}, - {(struct MenuAction *)MultichoiceList_36, 3}, - {(struct MenuAction *)MultichoiceList_37, 3}, - {(struct MenuAction *)MultichoiceList_38, 3}, - {(struct MenuAction *)MultichoiceList_39, 3}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_42, 4}, - {(struct MenuAction *)MultichoiceList_43, 4}, - {(struct MenuAction *)MultichoiceList_44, 4}, - {(struct MenuAction *)MultichoiceList_45, 2}, - {(struct MenuAction *)MultichoiceList_46, 3}, - {(struct MenuAction *)MultichoiceList_47, 8}, - {(struct MenuAction *)MultichoiceList_48, 4}, - {(struct MenuAction *)MultichoiceList_49, 3}, - {(struct MenuAction *)MultichoiceList_50, 2}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_52, 3}, - {(struct MenuAction *)MultichoiceList_53, 3}, - {(struct MenuAction *)MultichoiceList_54, 2}, - {(struct MenuAction *)MultichoiceList_55, 6}, - {(struct MenuAction *)MultichoiceList_56, 3}, - {(struct MenuAction *)MultichoiceList_57, 5}, - {(struct MenuAction *)MultichoiceList_58, 2}, - {(struct MenuAction *)MultichoiceList_59, 2}, - {(struct MenuAction *)MultichoiceList_60, 3}, - {(struct MenuAction *)MultichoiceList_61, 2}, - {(struct MenuAction *)MultichoiceList_62, 3}, - {(struct MenuAction *)MultichoiceList_63, 3}, - {(struct MenuAction *)MultichoiceList_64, 4}, - {(struct MenuAction *)MultichoiceList_65, 2}, - {(struct MenuAction *)MultichoiceList_66, 3}, - {(struct MenuAction *)MultichoiceList_67, 3}, - {(struct MenuAction *)MultichoiceList_68, 4}, - {(struct MenuAction *)MultichoiceList_69, 3}, - {(struct MenuAction *)MultichoiceList_70, 4}, - {(struct MenuAction *)MultichoiceList_71, 4}, - {(struct MenuAction *)MultichoiceList_72, 5} -}; - -const u8 *const gUnknown_083CE048[] = -{ - OtherText_Cool2, - OtherText_Beauty3, - OtherText_Cute2, - OtherText_Smart2, - OtherText_Tough2, - OtherText_Normal, - OtherText_Super, - OtherText_Hyper, - OtherText_Master, - OtherText_Cool3, - OtherText_Beauty4, - OtherText_Cute3, - OtherText_Smart3, - OtherText_Tough3, - OtherText_Items, - OtherText_KeyItems, - OtherText_Balls, - OtherText_TMsHMs, - OtherText_Berries, -}; - -extern u8 gPCText_WhichPCShouldBeAccessed[]; - -extern u16 gScriptResult; - -bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4) -{ - if (FuncIsActiveTask(sub_80B52B4) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - DrawMultichoiceMenu(left, top, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4, 0); - return TRUE; - } -} - -bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5) -{ - if (FuncIsActiveTask(sub_80B52B4) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - DrawMultichoiceMenu(left, top, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4, var5); - return TRUE; - } -} - -u16 GetStringWidthInTilesForScriptMenu(const u8 *str) -{ - // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. - return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8; -} - -void DrawMultichoiceMenu(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4, u8 cursorPos) -{ - u16 width = GetStringWidthInTilesForScriptMenu(list[0].text); - u16 newWidth; - u8 i; - u8 right; - u8 bottom; - - for (i = 1; i < count; i++) - { - newWidth = GetStringWidthInTilesForScriptMenu(list[i].text); - if (width < newWidth) - width = newWidth; - } - - right = width; - right = (right + left) + 1; - - if (right > 29) - { - left = left + (29 - right); - right = 29; - } - - bottom = top + (2 * count + 1); - - MenuDrawTextWindow(left, top, right, bottom); - PrintMenuItems(left + 1, top + 1, count, list); - InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1); - sub_80B5230(left, top, right, bottom, var4, count); -} - -void sub_80B5230(u8 left, u8 top, u8 right, u8 bottom, u8 unkVar, u8 count) -{ - u8 taskId = CreateTask(sub_80B52B4, 80); - - gTasks[taskId].data[0] = left; - gTasks[taskId].data[1] = top; - gTasks[taskId].data[2] = right; - gTasks[taskId].data[3] = bottom; - gTasks[taskId].data[4] = unkVar; - - if (count > 3) - gTasks[taskId].data[5] = TRUE; - else - gTasks[taskId].data[5] = FALSE; -} - -void sub_80B52B4(u8 taskId) -{ - s8 var; - - if (!gPaletteFade.active) - { - if (!gTasks[taskId].data[5]) - var = ProcessMenuInputNoWrap(); - else - var = ProcessMenuInput(); - - if (var != -2) - { - if (var == -1) - { - if (!gTasks[taskId].data[4]) - { - PlaySE(5); - gScriptResult = 127; - } - else - { - return; - } - } - else - { - gScriptResult = var; - } - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]); - DestroyTask(taskId); - EnableBothScriptContexts(); - } - } -} - -bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4) -{ - if (FuncIsActiveTask(sub_80B52B4) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - sub_80B53B4(var1, var2, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4); - return TRUE; - } -} - -void sub_80B53B4(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4) -{ - u16 width = GetStringWidthInTilesForScriptMenu(list[0].text); - u16 newWidth; - u8 i; - u8 right; - u8 bottom; - - for (i = 1; i < count; i++) - { - newWidth = GetStringWidthInTilesForScriptMenu(list[i].text); - if (width < newWidth) - width = newWidth; - } - - right = width; - right = (right + left) + 2; - bottom = top + (2 * count + 1); - - PrintMenuItems(left, top, count, list); - InitMenu(0, left, top, count, 0, right - left - 1); - sub_80B5230(left, top, right, bottom, var4, count); -} - -bool8 yes_no_box(u8 var1, u8 var2) -{ - u8 taskId; - - if (FuncIsActiveTask(task_yes_no_maybe) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - DisplayYesNoMenu(var1, var2, 1); - taskId = CreateTask(task_yes_no_maybe, 0x50); - gTasks[taskId].data[0] = var1; - gTasks[taskId].data[1] = var2; - return TRUE; - } -} - -// unused -bool8 IsScriptActive(void) -{ - if (gScriptResult == 0xFF) - return FALSE; - else - return TRUE; -} - -void task_yes_no_maybe(u8 taskId) -{ - u8 left, top; - - if (gTasks[taskId].data[2] < 5) - { - gTasks[taskId].data[2]++; - return; - } - - switch (ProcessMenuInputNoWrap()) - { - case -2: - return; - case -1: - case 1: - PlaySE(5); - gScriptResult = 0; - break; - case 0: - gScriptResult = 1; - break; - } - - left = gTasks[taskId].data[0]; - top = gTasks[taskId].data[1]; - - MenuZeroFillWindowRect(left, top, left + 6, top + 5); - DestroyTask(taskId); - EnableBothScriptContexts(); -} - -bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount) -{ - u8 bottom = 0; - - if (FuncIsActiveTask(sub_80B5684) == TRUE) - { - return FALSE; - } - else - { - u8 taskId; - u8 width; - - gScriptResult = 0xFF; - - sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0); - - taskId = CreateTask(sub_80B5684, 80); - - if (!((gMultichoiceLists[multichoiceId].count >> 1) < columnCount || (gMultichoiceLists[multichoiceId].count & 1)) - || columnCount == 1 || gMultichoiceLists[multichoiceId].count == columnCount) - { - bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 1 + top; - } - else - { - bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 3 + top; - } - - width = sub_807288C(columnCount); - gTasks[taskId].data[0] = left; - gTasks[taskId].data[1] = top; - gTasks[taskId].data[2] = width + left + 2; - gTasks[taskId].data[3] = bottom; - gTasks[taskId].data[4] = a4; - return TRUE; - } -} - -void sub_80B5684(u8 taskId) -{ - s8 var = sub_80727CC(); - - if (var != -2) - { - if (var == -1) - { - if (!gTasks[taskId].data[4]) - { - PlaySE(5); - gScriptResult = 127; - } - else - { - return; - } - } - else - { - gScriptResult = var; - } - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]); - DestroyTask(taskId); - EnableBothScriptContexts(); - } -} - -bool8 TryCreatePCMenu(void) -{ - if (FuncIsActiveTask(sub_80B52B4) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - CreatePCMenu(); - return TRUE; - } -} - -#if ENGLISH -void CreatePCMenu(void) -{ - u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC); - u8 width; - u8 numChoices; - - if (playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC)) - width = playersPCWidth; - else - width = 8; - - if (FlagGet(SYS_GAME_CLEAR)) // player has cleared game? - { - numChoices = 4; - MenuDrawTextWindow(0, 0, width + 2, 9); - MenuPrint(gPCText_HallOfFame, 1, 5); - MenuPrint(gPCText_LogOff, 1, 7); - } - else - { - numChoices = 3; - MenuDrawTextWindow(0, 0, width + 2, 7); - MenuPrint(gPCText_LogOff, 1, 5); - } - - if (FlagGet(SYS_PC_LANETTE)) // player met lanette? - MenuPrint(gPCText_LanettesPC, 1, 1); - else - MenuPrint(gPCText_SomeonesPC, 1, 1); - - MenuPrint(gPCText_PlayersPC, 1, 3); - InitMenu(0, 1, 1, numChoices, 0, width + 1); - sub_80B5230(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); -} -#elif GERMAN -__attribute__((naked)) -void CreatePCMenu(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x18\n\ - ldr r0, _080B5748 @ =0x0000084b\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5750\n\ - ldr r0, _080B574C @ =gPCText_LanettesPC\n\ - b _080B5752\n\ - .align 2, 0\n\ -_080B5748: .4byte 0x0000084b\n\ -_080B574C: .4byte gPCText_LanettesPC\n\ -_080B5750:\n\ - ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\ -_080B5752:\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x8]\n\ - movs r4, 0x1\n\ - ldr r0, _080B57EC @ =gPCText_PlayersPC\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r1, r4, 2\n\ - add r1, sp\n\ - adds r1, 0x8\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [r1]\n\ - ldr r0, _080B57F0 @ =gPCText_LogOff\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x10]\n\ - movs r4, 0x3\n\ - ldr r0, _080B57F4 @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5798\n\ - ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ - movs r4, 0x4\n\ -_080B5798:\n\ - movs r5, 0\n\ - cmp r5, r4\n\ - bge _080B57B4\n\ - add r2, sp, 0x8\n\ - adds r1, r4, 0\n\ -_080B57A2:\n\ - ldr r0, [r2]\n\ - cmp r5, r0\n\ - bge _080B57AC\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ -_080B57AC:\n\ - adds r2, 0x4\n\ - subs r1, 0x1\n\ - cmp r1, 0\n\ - bne _080B57A2\n\ -_080B57B4:\n\ - ldr r0, _080B57F4 @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B57FC\n\ - movs r7, 0x4\n\ - adds r4, r5, 0x2\n\ - lsls r2, r4, 24\n\ - lsrs r2, 24\n\ - movs r0, 0\n\ - movs r1, 0\n\ - movs r3, 0x9\n\ - bl MenuDrawTextWindow\n\ - ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ - movs r1, 0x1\n\ - movs r2, 0x5\n\ - bl MenuPrint\n\ - ldr r0, _080B57F0 @ =gPCText_LogOff\n\ - movs r1, 0x1\n\ - movs r2, 0x7\n\ - bl MenuPrint\n\ - b _080B5818\n\ - .align 2, 0\n\ -_080B57E8: .4byte gPCText_SomeonesPC\n\ -_080B57EC: .4byte gPCText_PlayersPC\n\ -_080B57F0: .4byte gPCText_LogOff\n\ -_080B57F4: .4byte 0x00000804\n\ -_080B57F8: .4byte gPCText_HallOfFame\n\ -_080B57FC:\n\ - movs r7, 0x3\n\ - adds r4, r5, 0x2\n\ - lsls r2, r4, 24\n\ - lsrs r2, 24\n\ - movs r0, 0\n\ - movs r1, 0\n\ - movs r3, 0x7\n\ - bl MenuDrawTextWindow\n\ - ldr r0, _080B5834 @ =gPCText_LogOff\n\ - movs r1, 0x1\n\ - movs r2, 0x5\n\ - bl MenuPrint\n\ -_080B5818:\n\ - adds r6, r4, 0\n\ - ldr r0, _080B5838 @ =0x0000084b\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5840\n\ - ldr r0, _080B583C @ =gPCText_LanettesPC\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - bl MenuPrint\n\ - b _080B584A\n\ - .align 2, 0\n\ -_080B5834: .4byte gPCText_LogOff\n\ -_080B5838: .4byte 0x0000084b\n\ -_080B583C: .4byte gPCText_LanettesPC\n\ -_080B5840:\n\ - ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - bl MenuPrint\n\ -_080B584A:\n\ - ldr r0, _080B588C @ =gPCText_PlayersPC\n\ - movs r1, 0x1\n\ - movs r2, 0x3\n\ - bl MenuPrint\n\ - movs r4, 0\n\ - str r4, [sp]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - adds r3, r7, 0\n\ - bl InitMenu\n\ - lsls r2, r6, 24\n\ - lsrs r2, 24\n\ - lsls r3, r7, 1\n\ - adds r3, 0x1\n\ - str r4, [sp]\n\ - str r7, [sp, 0x4]\n\ - movs r0, 0\n\ - movs r1, 0\n\ - bl sub_80B5230\n\ - add sp, 0x18\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080B5888: .4byte gPCText_SomeonesPC\n\ -_080B588C: .4byte gPCText_PlayersPC\n\ - .syntax divided\n"); -} -#endif - -void sub_80B5838(void) -{ - MenuDisplayMessageBox(); - MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15); -} - -void task_picbox(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - - switch (task->data[0]) - { - case 0: - task->data[0]++; - break; - case 1: - break; - case 2: - FreeResourcesAndDestroySprite(&gSprites[task->data[2]]); - task->data[0]++; - break; - case 3: - MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); - DestroyTask(taskId); - break; - } -} - -bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3) -{ - u8 taskId; - u8 var; - - if (FindTaskIdByFunc(task_picbox) != 0xFF) - return FALSE; - else - { - MenuDrawTextWindow(var2, var3, var2 + 9, var3 + 10); - taskId = CreateTask(task_picbox, 0x50); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = var1; - var = CreateMonSprite_PicBox(var1, var2 * 8 + 40, var3 * 8 + 40, 0); - gTasks[taskId].data[2] = var; - gTasks[taskId].data[3] = var2; - gTasks[taskId].data[4] = var3; - gSprites[var].callback = SpriteCallbackDummy; - gSprites[var].oam.priority = 0; - return TRUE; - } -} - -void *picbox_close(void) -{ - u8 taskId = FindTaskIdByFunc(task_picbox); - - if (taskId == 0xFF) - return NULL; - - gTasks[taskId].data[0]++; - return (void *)sub_80B59AC; -} - -bool8 sub_80B59AC(void) -{ - if (FindTaskIdByFunc(task_picbox) == 0xFF) - return TRUE; - else - return FALSE; -} diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index cbca07011..f98293a90 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -18,7 +18,7 @@ #include "pokedex.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "script_pokemon_80C4.h" #include "species.h" #include "task.h" @@ -433,7 +433,7 @@ void ShowContestEntryMonPic(void) gUnknown_081FAF4C[1], species, var1); - palette = sub_80409C8(species, var2, var1); + palette = GetMonSpritePalStructFromOtIdPersonality(species, var2, var1); LoadCompressedObjectPalette(palette); GetMonSpriteTemplate_803C56C(species, 1); gUnknown_02024E8C.paletteTag = palette->tag; @@ -511,7 +511,7 @@ void ScriptRandom(void) *scriptPtr = random % *scriptPtr; } -void HealPlayerParty(void) +void ScrSpecial_HealPlayerParty(void) { u8 i, j; u8 ppBonuses; @@ -542,41 +542,39 @@ void HealPlayerParty(void) } } -u8 ScriptGiveMon(u16 species, u8 var, u16 item, u32 var3, u32 var4, u8 var5) +u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3) { - u16 nationalSpecies; + u16 nationalDexNum; int sentToPc; - u8 array[2]; + u8 heldItem[2]; struct Pokemon mon; - CreateMon(&mon, species, var, 32, 0, 0, 0, 0); - array[0] = item; - array[1] = item >> 8; - SetMonData(&mon, MON_DATA_HELD_ITEM, array); + CreateMon(&mon, species, level, 32, 0, 0, 0, 0); + heldItem[0] = item; + heldItem[1] = item >> 8; + SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); sentToPc = GiveMonToPlayer(&mon); - nationalSpecies = SpeciesToNationalPokedexNum(species); + nationalDexNum = SpeciesToNationalPokedexNum(species); - // nested if check to fool compiler switch(sentToPc) { - case 0: - case 1: - GetNationalPokedexFlag(nationalSpecies, 2); - GetNationalPokedexFlag(nationalSpecies, 3); - return sentToPc; - default: - return sentToPc; + case 0: + case 1: + GetSetPokedexFlag(nationalDexNum, 2); + GetSetPokedexFlag(nationalDexNum, 3); + break; } + return sentToPc; } -u8 ScriptGiveEgg(u16 value) +u8 ScriptGiveEgg(u16 species) { struct Pokemon mon; - u8 data; + u8 isEgg; - sub_8042044(&mon, value, 1); - data = 1; - SetMonData(&mon, MON_DATA_IS_EGG, &data); + sub_8042044(&mon, species, 1); + isEgg = TRUE; + SetMonData(&mon, MON_DATA_IS_EGG, &isEgg); return GiveMonToPlayer(&mon); } @@ -622,18 +620,18 @@ bool8 GetNameOfEnigmaBerryInPlayerParty(void) return hasItem; } -void ScriptWildBattle(u16 species, u8 level, u16 item) +void CreateScriptedWildMon(u16 species, u8 level, u16 item) { - u8 data[2]; + u8 heldItem[2]; ZeroEnemyPartyMons(); CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0); if(item) { - data[0] = item; - data[1] = item >> 8; - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, data); + heldItem[0] = item; + heldItem[1] = item >> 8; + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem); } } diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index 2b48cc0d8..f930df8e2 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -9,16 +9,15 @@ #include "party_menu.h" #include "pokemon.h" #include "pokemon_summary_screen.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "script_pokemon_80F9.h" +#include "songs.h" #include "sound.h" #include "string_util.h" #include "task.h" #include "text.h" - - extern u8 gPlayerPartyCount; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -59,7 +58,7 @@ void sub_80F9A4C(void) void sub_80F9A8C(u8 taskId) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { gPaletteFade.bufferTransferDisabled = 1; OpenPartyMenu((u8) gTasks[taskId].data[0], 0); @@ -69,10 +68,10 @@ void sub_80F9A8C(u8 taskId) bool8 sub_80F9ACC(void) { - switch(EWRAM_1B000.unk264) + switch (EWRAM_1B000.unk264) { case 0: - if(EWRAM_1B000.unk266 < gPlayerPartyCount) + if (EWRAM_1B000.unk266 < gPlayerPartyCount) { TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); EWRAM_1B000.unk266++; @@ -92,7 +91,7 @@ bool8 sub_80F9ACC(void) EWRAM_1B000.unk264++; break; case 3: - if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) + if (sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) { EWRAM_1B000.unk266++; break; @@ -116,7 +115,7 @@ bool8 sub_80F9ACC(void) EWRAM_1B000.unk264++; break; case 7: // the only case that can return true. - if(sub_806B58C(EWRAM_1B000.unk266) != 1) + if (sub_806B58C(EWRAM_1B000.unk266) != 1) { EWRAM_1B000.unk266++; break; @@ -135,9 +134,9 @@ void sub_80F9C00(void) { u8 i; - for(i = 0; i < gPlayerPartyCount; i++) + for (i = 0; i < gPlayerPartyCount; i++) { - switch(sub_80AE47C(&gPlayerParty[i])) + switch (sub_80AE47C(&gPlayerParty[i])) { case 0: case 3: @@ -154,18 +153,18 @@ void sub_80F9C00(void) void sub_80F9C6C(u8 var) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { - switch(sub_806BD80(var)) + switch (sub_806BD80(var)) { case 1: - PlaySE(5); + PlaySE(SE_SELECT); gUnknown_02038694 = sub_806CA38(var); gSpecialVar_0x8004 = gUnknown_02038694; sub_8123138(var); break; case 2: - PlaySE(5); + PlaySE(SE_SELECT); gUnknown_02038694 = 0xFF; gSpecialVar_0x8004 = 0xFF; sub_8123138(var); @@ -176,10 +175,10 @@ void sub_80F9C6C(u8 var) bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case 6 calls a different function. why { - switch(EWRAM_1B000.unk264) + switch (EWRAM_1B000.unk264) { case 0: - if(EWRAM_1B000.unk266 < gPlayerPartyCount) + if (EWRAM_1B000.unk266 < gPlayerPartyCount) { TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); EWRAM_1B000.unk266++; @@ -199,7 +198,7 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case EWRAM_1B000.unk264++; break; case 3: - if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) + if (sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) { EWRAM_1B000.unk266++; break; @@ -223,7 +222,7 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case EWRAM_1B000.unk264++; break; case 7: // the only case that can return true. - if(sub_806B58C(EWRAM_1B000.unk266) != 1) + if (sub_806B58C(EWRAM_1B000.unk266) != 1) { EWRAM_1B000.unk266++; break; @@ -242,9 +241,9 @@ void sub_80F9E1C(void) { u8 i; - for(i = 0; i < gPlayerPartyCount; i++) + for (i = 0; i < gPlayerPartyCount; i++) { - if(!sub_8040574(&gPlayerParty[i])) + if (!sub_8040574(&gPlayerParty[i])) sub_806BC3C(i, 0x9A); else sub_806BC3C(i, 0x8C); @@ -253,18 +252,18 @@ void sub_80F9E1C(void) void sub_80F9E64(u8 var) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { - switch(sub_806BD80(var)) + switch (sub_806BD80(var)) { case 1: - PlaySE(5); + PlaySE(SE_SELECT); gSpecialVar_0x8004 = sub_806CA38(var); gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]); sub_8123138(var); break; case 2: - PlaySE(5); + PlaySE(SE_SELECT); gSpecialVar_0x8004 = 0xFF; sub_8123138(var); } @@ -278,23 +277,23 @@ void sub_80F9EEC(void) gFieldCallback = sub_8080990; } -void sub_80F9F3C(void) // count pokemon moves +void ScrSpecial_CountPokemonMoves(void) // count pokemon moves { u8 i; gScriptResult = 0; - for(i = 0; i < 4; i++) // checks MOVE1-MOVE4 - if(GetMonData(&gPlayerParty[gSpecialVar_0x8004], i + 13)) + for (i = 0; i < 4; i++) // checks MOVE1-MOVE4 + if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i)) gScriptResult++; } -void sub_80F9F84(void) +void ScrSpecial_GetPokemonNicknameAndMoveName(void) { - struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004]; - u16 data = GetMonData(party, gSpecialVar_0x8005 + 13); + struct Pokemon *pkmn = &gPlayerParty[gSpecialVar_0x8004]; + u16 data = GetMonData(pkmn, MON_DATA_MOVE1 + gSpecialVar_0x8005); - GetMonNickname(party, gStringVar1); + GetMonNickname(pkmn, gStringVar1); StringCopy(gStringVar2, gMoveNames[data]); } @@ -431,7 +430,7 @@ void sub_80FA0DC(void) SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], 0, gSpecialVar_0x8005); RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005); - for(i = gSpecialVar_0x8005; i < 3; i++) + for (i = gSpecialVar_0x8005; i < 3; i++) sub_80F9FDC(&gPlayerParty[gSpecialVar_0x8004], i, i + 1); } @@ -440,6 +439,6 @@ void sub_80FA148(void) struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004]; gScriptResult = 0; - if(GetMonData(party, MON_DATA_IS_EGG)) + if (GetMonData(party, MON_DATA_IS_EGG)) gScriptResult = 1; } diff --git a/src/shop.c b/src/shop.c deleted file mode 100644 index d53646a88..000000000 --- a/src/shop.c +++ /dev/null @@ -1,342 +0,0 @@ -#include "global.h" -#include "shop.h" -#include "decompress.h" -#include "field_fadetransition.h" -#include "field_weather.h" -#include "item_menu.h" -#include "main.h" -#include "menu.h" -#include "menu_helpers.h" -#include "money.h" -#include "palette.h" -#include "script.h" -#include "sound.h" -#include "sprite.h" -#include "strings.h" -#include "task.h" -#include "tv.h" -#include "unknown_task.h" - -struct UnknownShopStruct -{ - /* 0x0 */ void (* callback) (void); - /* 0x4 */ u16 *itemList; - /* 0x8 */ u8 itemCount; - /* 0x9 */ u8 unk9; - /* 0xA */ u8 unkA; - /* 0xB */ u8 unkB; - /* 0xC */ bool8 unkC; - // unknown size -}; - -extern struct UnknownShopStruct gUnknown_03000708; -extern struct MenuAction gUnknown_083CC6D0[]; - -extern u8 gUnknown_083CC6E8[]; -extern u8 gUnknown_083CC6EB[]; -extern u8 gBuyMenuFrame_Gfx[]; - -extern u16 gBuyMenuFrame_Tilemap[]; -extern u16 gMenuMoneyPal[16]; -extern u16 gUnknown_083CC710[2]; - -u8 CreateShopMenu(bool8 var) -{ - ScriptContext2_Enable(); - gUnknown_03000708.unkC = var; - gUnknown_03000708.unk9 = 0; - - if(var == FALSE) - { - gUnknown_03000708.unkA = 2; - MenuDrawTextWindow(0, 0, 10, 7); - PrintMenuItemsReordered(1, 1, 3, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8); - } - else - { - gUnknown_03000708.unkA = 1; - MenuDrawTextWindow(0, 0, 10, 5); - PrintMenuItemsReordered(1, 1, 2, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6EB); - } - InitMenu(0, 1, 1, gUnknown_03000708.unkA + 1, 0, 9); - - return CreateTask(sub_80B2E38, 8); -} - -void SetShopMenuCallback(void *callbackPtr) -{ - gUnknown_03000708.callback = callbackPtr; -} - -void SetShopItemsForSale(u16 *items) -{ - u16 i = 0; - - gUnknown_03000708.itemList = items; - gUnknown_03000708.itemCount = 0; - - while (gUnknown_03000708.itemList[i]) - { - gUnknown_03000708.itemCount++; - i++; - } -} - -void sub_80B2E38(u8 var) -{ - const u8 local = var; - - if(gMain.newAndRepeatedKeys & 0x40) - { - if(gUnknown_03000708.unk9) - { - PlaySE(0x5); - gUnknown_03000708.unk9 = MoveMenuCursor(-1); - } - } - else if(gMain.newAndRepeatedKeys & 0x80) - { - if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA) - { - PlaySE(0x5); - gUnknown_03000708.unk9 = MoveMenuCursor(1); - } - } - else if (gMain.newKeys & 1) - { - PlaySE(0x5); - if(!gUnknown_03000708.unkC) - { - gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local); - } - else - { - gUnknown_083CC6D0[gUnknown_083CC6EB[gUnknown_03000708.unk9]].func(local); - } - } - else if(gMain.newKeys & 2) - { - PlaySE(0x5); - HandleShopMenuQuit(local); - } -} - -void sub_80B2EFC(u8 taskId) -{ - gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; - gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; - gTasks[taskId].func = sub_80B2FA0; - fade_screen(1, 0); -} - -void sub_80B2F30(u8 taskId) -{ - gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16; - gTasks[taskId].data[9] = (u32)sub_80A6300; - gTasks[taskId].func = sub_80B2FA0; - fade_screen(1, 0); -} - -void HandleShopMenuQuit(u8 taskId) -{ - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 8); - sub_80BE3BC(); // in tv.s? - ScriptContext2_Disable(); - DestroyTask(taskId); - - if(gUnknown_03000708.callback) - gUnknown_03000708.callback(); // run the callback if it exists. -} - -void sub_80B2FA0(u8 taskId) -{ - if(!gPaletteFade.active) - { - SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9])); - DestroyTask(taskId); - } -} - -void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) -{ - CreateShopMenu(gUnknown_03000708.unkC); - DestroyTask(taskId); -} - -void Task_ExitSellMenu(u8 taskId) -{ - if(sub_807D770() == 1) - { - if(gUnknown_03000708.unkC == 2) - DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0); - else - DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0); - } -} - -void sub_80B3050(void) -{ - pal_fill_black(); - CreateTask(Task_ExitSellMenu, 0x8); -} - -void sub_80B3068(u8 taskId) -{ - Task_ExitSellMenu(taskId); -} - -void unref_sub_80B3078(u8 taskId) -{ - gTasks[taskId].func = Task_ExitSellMenu; -} - -void sub_80B3094(void) -{ - AnimateSprites(); - BuildOamBuffer(); - RunTasks(); - UpdatePaletteFade(); -} - -void sub_80B30AC(void) -{ - void *addr; - void *addr2; - void *addr3; - u16 *tempArr; - u16 *tempArr2; - u16 *tempArr3; - - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - - // temp vars needed to match for some dumb reason - tempArr = gBGTilemapBuffers[1]; - addr = (void *)(VRAM + 0xE800); - DmaCopy16(3, tempArr, addr, 0x800); - tempArr2 = gBGTilemapBuffers[2]; - addr2 = (void *)(VRAM + 0xE000); - DmaCopy16(3, tempArr2, addr2, 0x800); - tempArr3 = gBGTilemapBuffers[3]; - addr3 = (void *)(VRAM + 0xF000); - DmaCopy16(3, tempArr3, addr3, 0x800); -} - -// this function is fugly. pls fix -void BuyMenuDrawGraphics(void) -{ - void *addr; - register u16 zero2 asm("r5"); - - sub_80F9438(); - remove_some_task(); - REG_BG1HOFS = (zero2 = 0); - REG_BG1VOFS = zero2; - REG_BG2HOFS = zero2; - REG_BG2VOFS = zero2; - REG_BG3HOFS = zero2; - REG_BG3VOFS = zero2; - gPaletteFade.bufferTransferDisabled = 1; - addr = (void*)OAM; - { - register const u32 zero asm("r6") = 0; - DmaFill32(3, zero, addr, OAM_SIZE); - LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00)); - sub_800D238(gBuyMenuFrame_Tilemap, (void *)0x02018000); - LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal)); - FreeAllSpritePalettes(); - ResetPaletteFade(); - ResetSpriteData(); - ResetTasks(); - SetUpWindowConfig(&gWindowConfig_81E6DFC); - InitMenuWindow(&gWindowConfig_81E6DFC); - BuyMenuDrawMapGraphics(); - gUnknown_03000708.unk9 = zero; - gUnknown_03000708.unkB = zero2; - MenuZeroFillWindowRect(0, 0, 0x20, 0x20); - sub_80B7C14(gSaveBlock1.money, 0, 0); - sub_80B3764(0, 7); - sub_80B37EC(); - sub_80B3270(); - CreateTask(sub_80B40E8, 0x8); - sub_80B3240(); - asm("":::"r4"); // what?? - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero); - gPaletteFade.bufferTransferDisabled = 0; - SetVBlankCallback(sub_80B30AC); - SetMainCallback2(sub_80B3094); - } -} - -void sub_80B3240(void) -{ - u16 tempArr[2]; - - memcpy(tempArr, gUnknown_083CC710, sizeof(tempArr)); - LoadPalette(&tempArr[1], 0xD1, 2); - LoadPalette(&tempArr[0], 0xD8, 2); -} - -void sub_80B3270(void) -{ - sub_80F944C(); - - if(gUnknown_03000708.itemCount > 7) - { - CreateVerticalScrollIndicators(0, 172, 12); - CreateVerticalScrollIndicators(1, 172, 148); - sub_80F979C(0, 1); - } -} - -void sub_80B32A4(void) -{ - if(gUnknown_03000708.unkB == 0) - sub_80F979C(0, 1); - else - sub_80F979C(0, 0); - - if(gUnknown_03000708.unkB + 7 >= gUnknown_03000708.itemCount) - sub_80F979C(1, 1); - else - sub_80F979C(1, 0); -} - -void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) -{ - array[offset1 + offset2] = 0xC3E1; - array[offset1 + offset2 + 1] = 0xC3E1; -} - -void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) -{ - array[offset1 + offset2] = array2[0]; - array[offset1 + offset2 + 1] = array2[1]; - array[offset1 + offset2 + 32] = array2[2]; - array[offset1 + offset2 + 33] = array2[3]; -} - -void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4) -{ - u8 tempVar4 = var4; - s16 offset1 = var1 * 2; - s16 offset2 = (var2 * 0x40) + 0x40; - - switch(tempVar4) - { - case 0: // _080B335C - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); - break; - case 1: // _080B3364 - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); - break; - case 2: // _080B3398 - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); - break; - } -} diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c deleted file mode 100644 index d97ae6d86..000000000 --- a/src/sound_check_menu.c +++ /dev/null @@ -1,2199 +0,0 @@ -#include "global.h" -#include "sprite.h" -#include "palette.h" -#include "task.h" -#include "m4a.h" -#include "main.h" -#include "text.h" -#include "menu.h" -#include "songs.h" -#include "title_screen.h" -#include "sound.h" -#include "pokedex_cry_screen.h" - -// local task defines -#define WINDOW_SELECTED data[0] -#define BGM_INDEX data[1] -#define SE_INDEX data[2] -#define UNK_DATA3 data[3] -#define UNK_DATA4 data[4] -// data 5-7 are not used -// i dont have a define for data 8 yet because its used in a nonmatching and I can't be sure yet its actually used. - -// window selections -enum -{ - BGM_WINDOW, - SE_WINDOW -}; - -// driver test cry enums -enum -{ - CRY_TEST_UNK0, - CRY_TEST_VOLUME, - CRY_TEST_PANPOT, - CRY_TEST_PITCH, - CRY_TEST_LENGTH, - CRY_TEST_RELEASE, - CRY_TEST_PROGRESS, - CRY_TEST_CHORUS, - CRY_TEST_PRIORITY -}; - -// minmax range enums -enum -{ - MIN, - MAX -}; - -extern struct ToneData voicegroup_84537C0[]; -extern struct ToneData voicegroup_8452590[]; -extern struct ToneData voicegroup_8453DC0[]; -extern struct ToneData voicegroup_8452B90[]; -extern struct ToneData voicegroup_84543C0[]; -extern struct ToneData voicegroup_8453190[]; -extern struct ToneData voicegroup_84549C0[]; -extern struct ToneData voicegroup_8453790[]; - -static EWRAM_DATA u8 gUnknown_020387B0 = 0; -static EWRAM_DATA u8 gUnknown_020387B1 = 0; -static EWRAM_DATA u8 gUnknown_020387B2 = 0; -static EWRAM_DATA s8 gUnknown_020387B3 = 0; -static EWRAM_DATA int gUnknown_020387B4[9] = {0}; -static EWRAM_DATA u8 gUnknown_020387D8 = 0; -static EWRAM_DATA u8 gUnknown_020387D9 = 0; - -extern u16 gUnknown_03005D34; -extern u8 gUnknown_03005E98; - -struct MusicPlayerInfo *gUnknown_03005D30; - -extern struct MusicPlayerInfo gMPlay_BGM; - -void sub_80BA258(u8); -void sub_80BA384(u8); -void sub_80BA65C(u8); -void sub_80BA68C(u8); -void sub_80BA6B8(u8); -void sub_80BA700(u16, u16, u16); -void sub_80BA79C(const u8 *const, u16, u16); -void sub_80BA800(u8); -void sub_80BAA48(u8); -void sub_80BACDC(s8); -void sub_80BAD5C(void); -void sub_80BAE10(u8, u8); -void sub_80BAE78(int, u16, u16, u8); -void sub_80BAF84(u8); -void sub_80BB038(u8); -void sub_80BB1D4(void); -void sub_80BB25C(u8); -void sub_80BB3B4(u8); -void sub_80BB494(void); - -static const u8 gDebugText_SoundCheckJap[] = _("サウンドチェック"); -static const u8 gDebugText_BGM[] = _("BGM"); -static const u8 gDebugText_SE[] = _("SE "); -static const u8 gDebugText_ABDesc[] = _("A‥さいせい B‥おわり"); -static const u8 gDebugText_UpDown[] = _("L‥UP R‥DOWN"); -static const u8 gDebugText_DriverTest[] = _("R‥DRIVER-TEST"); - -// ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct. -static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 }; - -static const u8 gDebugText_BBack[] = _("Bぼたんで もどる"); -static const u8 gDebugText_APlay[] = _("Aぼたんで さいせい"); -static const u8 gDebugText_Voice[] = _("VOICE‥‥‥‥"); -static const u8 gDebugText_Volume[] = _("VOLUME‥‥‥"); -static const u8 gDebugText_Panpot[] = _("PANPOT‥‥‥"); -static const u8 gDebugText_Pitch[] = _("PITCH‥‥‥‥"); -static const u8 gDebugText_Length[] = _("LENGTH‥‥‥"); -static const u8 gDebugText_Release[] = _("RELEASE‥‥"); -static const u8 gDebugText_Progress[] = _("PROGRESS‥"); -static const u8 gDebugText_Chorus[] = _("CHORUS‥‥‥"); -static const u8 gDebugText_Priority[] = _("PRIORITY‥"); -static const u8 gDebugText_Playing[] = _("さいせいちゆう‥"); // 再生中 (playing) -static const u8 gDebugText_Reverse[] = _("はんてん‥‥‥‥"); // 反転 (reverse) -static const u8 gDebugText_Stereo[] = _("すてれお‥‥‥‥"); // stereo - -// also ideally should be a MinMax struct, but any attempt to make this into a struct causes it to not match due to the weird multi dim access. -static const int gUnknown_083D039C[16] = -{ - 0, 387, - 0, 127, - -127, 127, - -128, 32639, - 0, 65535, - 0, 255, - 0, 65535, - -64, 63 -}; - -static const u8 gUnknown_083D03DC[] = _("▶"); -static const u8 gUnknown_083D03DE[] = _(" "); - -// why not just use Powers of ten from string_util? -static const int gUnknown_083D03E0[6] = -{ - 1, - 10, - 100, - 1000, - 10000, - 100000 -}; - -static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; - -static const u8 gOtherText_SE[] = _("SE"); -static const u8 gOtherText_Pan[] = _("PAN"); -static const u8 gOtherText_LR[] = _(" LR"); -static const u8 gOtherText_RL[] = _(" RL"); - -// bgm names -static const u8 BGMName_STOP[] = _("STOP"); -static const u8 BGMName_TETSUJI[] = _("TETSUJI"); -static const u8 BGMName_FIELD13[] = _("FIELD13"); -static const u8 BGMName_KACHI22[] = _("KACHI22"); -static const u8 BGMName_KACHI2[] = _("KACHI2"); -static const u8 BGMName_KACHI3[] = _("KACHI3"); -static const u8 BGMName_KACHI5[] = _("KACHI5"); -static const u8 BGMName_PCC[] = _("PCC"); -static const u8 BGMName_NIBI[] = _("NIBI"); -static const u8 BGMName_SUIKUN[] = _("SUIKUN"); -static const u8 BGMName_DOORO1[] = _("DOORO1"); -static const u8 BGMName_DOORO_X1[] = _("DOORO-X1"); -static const u8 BGMName_DOORO_X3[] = _("DOORO-X3"); -static const u8 BGMName_MACHI_S2[] = _("MACHI-S2"); -static const u8 BGMName_MACHI_S4[] = _("MACHI-S4"); -static const u8 BGMName_GIM[] = _("GIM"); -static const u8 BGMName_NAMINORI[] = _("NAMINORI"); -static const u8 BGMName_DAN01[] = _("DAN01"); -static const u8 BGMName_FANFA1[] = _("FANFA1"); -static const u8 BGMName_ME_ASA[] = _("ME-ASA"); -static const u8 BGMName_ME_BACHI[] = _("ME-BACHI"); -static const u8 BGMName_FANFA4[] = _("FANFA4"); -static const u8 BGMName_FANFA5[] = _("FANFA5"); -static const u8 BGMName_ME_WAZA[] = _("ME-WAZA"); -static const u8 BGMName_BIJYUTU[] = _("BIJYUTU"); -static const u8 BGMName_DOORO_X4[] = _("DOORO-X4"); -static const u8 BGMName_FUNE_KAN[] = _("FUNE-KAN"); -static const u8 BGMName_ME_SHINKA[] = _("ME-SHINKA"); -static const u8 BGMName_SHINKA[] = _("SHINKA"); -static const u8 BGMName_ME_WASURE[] = _("ME-WASURE"); -static const u8 BGMName_SYOUJOEYE[] = _("SYOUJOEYE"); -static const u8 BGMName_BOYEYE[] = _("BOYEYE"); -static const u8 BGMName_DAN02[] = _("DAN02"); -static const u8 BGMName_MACHI_S3[] = _("MACHI-S3"); -static const u8 BGMName_ODAMAKI[] = _("ODAMAKI"); -static const u8 BGMName_B_TOWER[] = _("B-TOWER"); -static const u8 BGMName_SWIMEYE[] = _("SWIMEYE"); -static const u8 BGMName_DAN03[] = _("DAN03"); -static const u8 BGMName_ME_KINOMI[] = _("ME-KINOMI"); -static const u8 BGMName_ME_TAMA[] = _("ME-TAMA"); -static const u8 BGMName_ME_B_BIG[] = _("ME-B-BIG"); -static const u8 BGMName_ME_B_SMALL[] = _("ME-B-SMALL"); -static const u8 BGMName_ME_ZANNEN[] = _("ME-ZANNEN"); -static const u8 BGMName_BD_TIME[] = _("BD-TIME"); -static const u8 BGMName_TEST1[] = _("TEST1"); -static const u8 BGMName_TEST2[] = _("TEST2"); -static const u8 BGMName_TEST3[] = _("TEST3"); -static const u8 BGMName_TEST4[] = _("TEST4"); -static const u8 BGMName_TEST[] = _("TEST"); -static const u8 BGMName_GOMACHI0[] = _("GOMACHI0"); -static const u8 BGMName_GOTOWN[] = _("GOTOWN"); -static const u8 BGMName_POKECEN[] = _("POKECEN"); -static const u8 BGMName_NEXTROAD[] = _("NEXTROAD"); -static const u8 BGMName_GRANROAD[] = _("GRANROAD"); -static const u8 BGMName_CYCLING[] = _("CYCLING"); -static const u8 BGMName_FRIENDLY[] = _("FRIENDLY"); -static const u8 BGMName_MISHIRO[] = _("MISHIRO"); -static const u8 BGMName_TOZAN[] = _("TOZAN"); -static const u8 BGMName_GIRLEYE[] = _("GIRLEYE"); -static const u8 BGMName_MINAMO[] = _("MINAMO"); -static const u8 BGMName_ASHROAD[] = _("ASHROAD"); -static const u8 BGMName_EVENT0[] = _("EVENT0"); -static const u8 BGMName_DEEPDEEP[] = _("DEEPDEEP"); -static const u8 BGMName_KACHI1[] = _("KACHI1"); -static const u8 BGMName_TITLE3[] = _("TITLE3"); -static const u8 BGMName_DEMO1[] = _("DEMO1"); -static const u8 BGMName_GIRL_SUP[] = _("GIRL-SUP"); -static const u8 BGMName_HAGESHII[] = _("HAGESHII"); -static const u8 BGMName_KAKKOII[] = _("KAKKOII"); -static const u8 BGMName_KAZANBAI[] = _("KAZANBAI"); -static const u8 BGMName_AQA_0[] = _("AQA-0"); -static const u8 BGMName_TSURETEK[] = _("TSURETEK"); -static const u8 BGMName_BOY_SUP[] = _("BOY-SUP"); -static const u8 BGMName_RAINBOW[] = _("RAINBOW"); -static const u8 BGMName_AYASII[] = _("AYASII"); -static const u8 BGMName_KACHI4[] = _("KACHI4"); -static const u8 BGMName_ROPEWAY[] = _("ROPEWAY"); -static const u8 BGMName_CASINO[] = _("CASINO"); -static const u8 BGMName_HIGHTOWN[] = _("HIGHTOWN"); -static const u8 BGMName_SAFARI[] = _("SAFARI"); -static const u8 BGMName_C_ROAD[] = _("C-ROAD"); -static const u8 BGMName_AJITO[] = _("AJITO"); -static const u8 BGMName_M_BOAT[] = _("M-BOAT"); -static const u8 BGMName_M_DUNGON[] = _("M-DUNGON"); -static const u8 BGMName_FINECITY[] = _("FINECITY"); -static const u8 BGMName_MACHUPI[] = _("MACHUPI"); -static const u8 BGMName_P_SCHOOL[] = _("P-SCHOOL"); -static const u8 BGMName_DENDOU[] = _("DENDOU"); -static const u8 BGMName_TONEKUSA[] = _("TONEKUSA"); -static const u8 BGMName_MABOROSI[] = _("MABOROSI"); -static const u8 BGMName_CON_FAN[] = _("CON-FAN"); -static const u8 BGMName_CONTEST0[] = _("CONTEST0"); -static const u8 BGMName_MGM0[] = _("MGM0"); -static const u8 BGMName_T_BATTLE[] = _("T-BATTLE"); -static const u8 BGMName_OOAME[] = _("OOAME"); -static const u8 BGMName_HIDERI[] = _("HIDERI"); -static const u8 BGMName_RUNECITY[] = _("RUNECITY"); -static const u8 BGMName_CON_K[] = _("CON-K"); -static const u8 BGMName_EIKOU_R[] = _("EIKOU-R"); -static const u8 BGMName_KARAKURI[] = _("KARAKURI"); -static const u8 BGMName_HUTAGO[] = _("HUTAGO"); -static const u8 BGMName_SITENNOU[] = _("SITENNOU"); -static const u8 BGMName_YAMA_EYE[] = _("YAMA-EYE"); -static const u8 BGMName_CONLOBBY[] = _("CONLOBBY"); -static const u8 BGMName_INTER_V[] = _("INTER-V"); -static const u8 BGMName_DAIGO[] = _("DAIGO"); -static const u8 BGMName_THANKFOR[] = _("THANKFOR"); -static const u8 BGMName_END[] = _("END"); -static const u8 BGMName_BATTLE27[] = _("BATTLE27"); -static const u8 BGMName_BATTLE31[] = _("BATTLE31"); -static const u8 BGMName_BATTLE20[] = _("BATTLE20"); -static const u8 BGMName_BATTLE32[] = _("BATTLE32"); -static const u8 BGMName_BATTLE33[] = _("BATTLE33"); -static const u8 BGMName_BATTLE36[] = _("BATTLE36"); -static const u8 BGMName_BATTLE34[] = _("BATTLE34"); -static const u8 BGMName_BATTLE35[] = _("BATTLE35"); -static const u8 BGMName_BATTLE38[] = _("BATTLE38"); -static const u8 BGMName_BATTLE30[] = _("BATTLE30"); - -static const u8 *const gBGMNames[] = -{ - BGMName_STOP, - BGMName_TETSUJI, - BGMName_FIELD13, - BGMName_KACHI22, - BGMName_KACHI2, - BGMName_KACHI3, - BGMName_KACHI5, - BGMName_PCC, - BGMName_NIBI, - BGMName_SUIKUN, - BGMName_DOORO1, - BGMName_DOORO_X1, - BGMName_DOORO_X3, - BGMName_MACHI_S2, - BGMName_MACHI_S4, - BGMName_GIM, - BGMName_NAMINORI, - BGMName_DAN01, - BGMName_FANFA1, - BGMName_ME_ASA, - BGMName_ME_BACHI, - BGMName_FANFA4, - BGMName_FANFA5, - BGMName_ME_WAZA, - BGMName_BIJYUTU, - BGMName_DOORO_X4, - BGMName_FUNE_KAN, - BGMName_ME_SHINKA, - BGMName_SHINKA, - BGMName_ME_WASURE, - BGMName_SYOUJOEYE, - BGMName_BOYEYE, - BGMName_DAN02, - BGMName_MACHI_S3, - BGMName_ODAMAKI, - BGMName_B_TOWER, - BGMName_SWIMEYE, - BGMName_DAN03, - BGMName_ME_KINOMI, - BGMName_ME_TAMA, - BGMName_ME_B_BIG, - BGMName_ME_B_SMALL, - BGMName_ME_ZANNEN, - BGMName_BD_TIME, - BGMName_TEST1, - BGMName_TEST2, - BGMName_TEST3, - BGMName_TEST4, - BGMName_TEST, - BGMName_GOMACHI0, - BGMName_GOTOWN, - BGMName_POKECEN, - BGMName_NEXTROAD, - BGMName_GRANROAD, - BGMName_CYCLING, - BGMName_FRIENDLY, - BGMName_MISHIRO, - BGMName_TOZAN, - BGMName_GIRLEYE, - BGMName_MINAMO, - BGMName_ASHROAD, - BGMName_EVENT0, - BGMName_DEEPDEEP, - BGMName_KACHI1, - BGMName_TITLE3, - BGMName_DEMO1, - BGMName_GIRL_SUP, - BGMName_HAGESHII, - BGMName_KAKKOII, - BGMName_KAZANBAI, - BGMName_AQA_0, - BGMName_TSURETEK, - BGMName_BOY_SUP, - BGMName_RAINBOW, - BGMName_AYASII, - BGMName_KACHI4, - BGMName_ROPEWAY, - BGMName_CASINO, - BGMName_HIGHTOWN, - BGMName_SAFARI, - BGMName_C_ROAD, - BGMName_AJITO, - BGMName_M_BOAT, - BGMName_M_DUNGON, - BGMName_FINECITY, - BGMName_MACHUPI, - BGMName_P_SCHOOL, - BGMName_DENDOU, - BGMName_TONEKUSA, - BGMName_MABOROSI, - BGMName_CON_FAN, - BGMName_CONTEST0, - BGMName_MGM0, - BGMName_T_BATTLE, - BGMName_OOAME, - BGMName_HIDERI, - BGMName_RUNECITY, - BGMName_CON_K, - BGMName_EIKOU_R, - BGMName_KARAKURI, - BGMName_HUTAGO, - BGMName_SITENNOU, - BGMName_YAMA_EYE, - BGMName_CONLOBBY, - BGMName_INTER_V, - BGMName_DAIGO, - BGMName_THANKFOR, - BGMName_END, - BGMName_BATTLE27, - BGMName_BATTLE31, - BGMName_BATTLE20, - BGMName_BATTLE32, - BGMName_BATTLE33, - BGMName_BATTLE36, - BGMName_BATTLE34, - BGMName_BATTLE35, - BGMName_BATTLE38, - BGMName_BATTLE30 -}; - -// SE names -static const u8 SEName_STOP[] = _("STOP"); -static const u8 SEName_KAIFUKU[] = _("KAIFUKU"); -static const u8 SEName_PC_LOGON[] = _("PC-LOGON"); -static const u8 SEName_PC_OFF[] = _("PC-OFF"); -static const u8 SEName_PC_ON[] = _("PC-ON"); -static const u8 SEName_SELECT[] = _("SELECT"); -static const u8 SEName_WIN_OPEN[] = _("WIN-OPEN"); -static const u8 SEName_WALL_HIT[] = _("WALL-HIT"); -static const u8 SEName_DOOR[] = _("DOOR"); -static const u8 SEName_KAIDAN[] = _("KAIDAN"); -static const u8 SEName_DANSA[] = _("DANSA"); -static const u8 SEName_JITENSYA[] = _("JITENSYA"); -static const u8 SEName_KOUKA_L[] = _("KOUKA-L"); -static const u8 SEName_KOUKA_M[] = _("KOUKA-M"); -static const u8 SEName_KOUKA_H[] = _("KOUKA-H"); -static const u8 SEName_BOWA2[] = _("BOWA2"); -static const u8 SEName_POKE_DEAD[] = _("POKE-DEAD"); -static const u8 SEName_NIGERU[] = _("NIGERU"); -static const u8 SEName_JIDO_DOA[] = _("JIDO-DOA"); -static const u8 SEName_NAMINORI[] = _("NAMINORI"); -static const u8 SEName_BAN[] = _("BAN"); -static const u8 SEName_PIN[] = _("PIN"); -static const u8 SEName_BOO[] = _("BOO"); -static const u8 SEName_BOWA[] = _("BOWA"); -static const u8 SEName_JYUNI[] = _("JYUNI"); -static const u8 SEName_A[] = _("A"); -static const u8 SEName_I[] = _("I"); -static const u8 SEName_U[] = _("U"); -static const u8 SEName_E[] = _("E"); -static const u8 SEName_O[] = _("O"); -static const u8 SEName_N[] = _("N"); -static const u8 SEName_SEIKAI[] = _("SEIKAI"); -static const u8 SEName_HAZURE[] = _("HAZURE"); -static const u8 SEName_EXP[] = _("EXP"); -static const u8 SEName_JITE_PYOKO[] = _("JITE-PYOKO"); -static const u8 SEName_MU_PACHI[] = _("MU-PACHI"); -static const u8 SEName_TK_KASYA[] = _("TK-KASYA"); -static const u8 SEName_FU_ZAKU[] = _("FU-ZAKU"); -static const u8 SEName_FU_ZAKU2[] = _("FU-ZAKU2"); -static const u8 SEName_FU_ZUZUZU[] = _("FU-ZUZUZU"); -static const u8 SEName_RU_GASHIN[] = _("RU-GASHIN"); -static const u8 SEName_RU_GASYAN[] = _("RU-GASYAN"); -static const u8 SEName_RU_BARI[] = _("RU-BARI"); -static const u8 SEName_RU_HYUU[] = _("RU-HYUU"); -static const u8 SEName_KI_GASYAN[] = _("KI-GASYAN"); -static const u8 SEName_TK_WARPIN[] = _("TK-WARPIN"); -static const u8 SEName_TK_WARPOUT[] = _("TK-WARPOUT"); -static const u8 SEName_TU_SAA[] = _("TU-SAA"); -static const u8 SEName_HI_TURUN[] = _("HI-TURUN"); -static const u8 SEName_TRACK_MOVE[] = _("TRACK-MOVE"); -static const u8 SEName_TRACK_STOP[] = _("TRACK-STOP"); -static const u8 SEName_TRACK_HAIK[] = _("TRACK-HAIK"); -static const u8 SEName_TRACK_DOOR[] = _("TRACK-DOOR"); -static const u8 SEName_MOTER[] = _("MOTER"); -static const u8 SEName_CARD[] = _("CARD"); -static const u8 SEName_SAVE[] = _("SAVE"); -static const u8 SEName_KON[] = _("KON"); -static const u8 SEName_KON2[] = _("KON2"); -static const u8 SEName_KON3[] = _("KON3"); -static const u8 SEName_KON4[] = _("KON4"); -static const u8 SEName_SUIKOMU[] = _("SUIKOMU"); -static const u8 SEName_NAGERU[] = _("NAGERU"); -static const u8 SEName_TOY_C[] = _("TOY-C"); -static const u8 SEName_TOY_D[] = _("TOY-D"); -static const u8 SEName_TOY_E[] = _("TOY-E"); -static const u8 SEName_TOY_F[] = _("TOY-F"); -static const u8 SEName_TOY_G[] = _("TOY-G"); -static const u8 SEName_TOY_A[] = _("TOY-A"); -static const u8 SEName_TOY_B[] = _("TOY-B"); -static const u8 SEName_TOY_C1[] = _("TOY-C1"); -static const u8 SEName_MIZU[] = _("MIZU"); -static const u8 SEName_HASHI[] = _("HASHI"); -static const u8 SEName_DAUGI[] = _("DAUGI"); -static const u8 SEName_PINPON[] = _("PINPON"); -static const u8 SEName_FUUSEN1[] = _("FUUSEN1"); -static const u8 SEName_FUUSEN2[] = _("FUUSEN2"); -static const u8 SEName_FUUSEN3[] = _("FUUSEN3"); -static const u8 SEName_TOY_KABE[] = _("TOY-KABE"); -static const u8 SEName_TOY_DANGO[] = _("TOY-DANGO"); -static const u8 SEName_DOKU[] = _("DOKU"); -static const u8 SEName_ESUKA[] = _("ESUKA"); -static const u8 SEName_T_AME[] = _("T-AME"); -static const u8 SEName_T_AME_E[] = _("T-AME-E"); -static const u8 SEName_T_OOAME[] = _("T-OOAME"); -static const u8 SEName_T_OOAME_E[] = _("T-OOAME-E"); -static const u8 SEName_T_KOAME[] = _("T-KOAME"); -static const u8 SEName_T_KOAME_E[] = _("T-KOAME-E"); -static const u8 SEName_T_KAMI[] = _("T-KAMI"); -static const u8 SEName_T_KAMI2[] = _("T-KAMI2"); -static const u8 SEName_ELEBETA[] = _("ELEBETA"); -static const u8 SEName_HINSI[] = _("HINSI"); -static const u8 SEName_EXPMAX[] = _("EXPMAX"); -static const u8 SEName_TAMAKORO[] = _("TAMAKORO"); -static const u8 SEName_TAMAKORO_E[] = _("TAMAKORO-E"); -static const u8 SEName_BASABASA[] = _("BASABASA"); -static const u8 SEName_REGI[] = _("REGI"); -static const u8 SEName_C_GAJI[] = _("C-GAJI"); -static const u8 SEName_C_MAKU_U[] = _("C-MAKU-U"); -static const u8 SEName_C_MAKU_D[] = _("C-MAKU-D"); -static const u8 SEName_C_PASI[] = _("C-PASI"); -static const u8 SEName_C_SYU[] = _("C-SYU"); -static const u8 SEName_C_PIKON[] = _("C-PIKON"); -static const u8 SEName_REAPOKE[] = _("REAPOKE"); -static const u8 SEName_OP_BASYU[] = _("OP-BASYU"); -static const u8 SEName_BT_START[] = _("BT-START"); -static const u8 SEName_DENDOU[] = _("DENDOU"); -static const u8 SEName_JIHANKI[] = _("JIHANKI"); -static const u8 SEName_TAMA[] = _("TAMA"); -static const u8 SEName_Z_SCROLL[] = _("Z-SCROLL"); -static const u8 SEName_Z_PAGE[] = _("Z-PAGE"); -static const u8 SEName_PN_ON[] = _("PN-ON"); -static const u8 SEName_PN_OFF[] = _("PN-OFF"); -static const u8 SEName_Z_SEARCH[] = _("Z-SEARCH"); -static const u8 SEName_TAMAGO[] = _("TAMAGO"); -static const u8 SEName_TB_START[] = _("TB-START"); -static const u8 SEName_TB_KON[] = _("TB-KON"); -static const u8 SEName_TB_KARA[] = _("TB-KARA"); -static const u8 SEName_BIDORO[] = _("BIDORO"); -static const u8 SEName_W085[] = _("W085"); -static const u8 SEName_W085B[] = _("W085B"); -static const u8 SEName_W231[] = _("W231"); -static const u8 SEName_W171[] = _("W171"); -static const u8 SEName_W233[] = _("W233"); -static const u8 SEName_W233B[] = _("W233B"); -static const u8 SEName_W145[] = _("W145"); -static const u8 SEName_W145B[] = _("W145B"); -static const u8 SEName_W145C[] = _("W145C"); -static const u8 SEName_W240[] = _("W240"); -static const u8 SEName_W015[] = _("W015"); -static const u8 SEName_W081[] = _("W081"); -static const u8 SEName_W081B[] = _("W081B"); -static const u8 SEName_W088[] = _("W088"); -static const u8 SEName_W016[] = _("W016"); -static const u8 SEName_W016B[] = _("W016B"); -static const u8 SEName_W003[] = _("W003"); -static const u8 SEName_W104[] = _("W104"); -static const u8 SEName_W013[] = _("W013"); -static const u8 SEName_W196[] = _("W196"); -static const u8 SEName_W086[] = _("W086"); -static const u8 SEName_W004[] = _("W004"); -static const u8 SEName_W025[] = _("W025"); -static const u8 SEName_W025B[] = _("W025B"); -static const u8 SEName_W152[] = _("W152"); -static const u8 SEName_W026[] = _("W026"); -static const u8 SEName_W172[] = _("W172"); -static const u8 SEName_W172B[] = _("W172B"); -static const u8 SEName_W053[] = _("W053"); -static const u8 SEName_W007[] = _("W007"); -static const u8 SEName_W092[] = _("W092"); -static const u8 SEName_W221[] = _("W221"); -static const u8 SEName_W221B[] = _("W221B"); -static const u8 SEName_W052[] = _("W052"); -static const u8 SEName_W036[] = _("W036"); -static const u8 SEName_W059[] = _("W059"); -static const u8 SEName_W059B[] = _("W059B"); -static const u8 SEName_W010[] = _("W010"); -static const u8 SEName_W011[] = _("W011"); -static const u8 SEName_W017[] = _("W017"); -static const u8 SEName_W019[] = _("W019"); -static const u8 SEName_W028[] = _("W028"); -static const u8 SEName_W013B[] = _("W013B"); -static const u8 SEName_W044[] = _("W044"); -static const u8 SEName_W029[] = _("W029"); -static const u8 SEName_W057[] = _("W057"); -static const u8 SEName_W056[] = _("W056"); -static const u8 SEName_W250[] = _("W250"); -static const u8 SEName_W030[] = _("W030"); -static const u8 SEName_W039[] = _("W039"); -static const u8 SEName_W054[] = _("W054"); -static const u8 SEName_W077[] = _("W077"); -static const u8 SEName_W020[] = _("W020"); -static const u8 SEName_W082[] = _("W082"); -static const u8 SEName_W047[] = _("W047"); -static const u8 SEName_W195[] = _("W195"); -static const u8 SEName_W006[] = _("W006"); -static const u8 SEName_W091[] = _("W091"); -static const u8 SEName_W146[] = _("W146"); -static const u8 SEName_W120[] = _("W120"); -static const u8 SEName_W153[] = _("W153"); -static const u8 SEName_W071B[] = _("W071B"); -static const u8 SEName_W071[] = _("W071"); -static const u8 SEName_W103[] = _("W103"); -static const u8 SEName_W062[] = _("W062"); -static const u8 SEName_W062B[] = _("W062B"); -static const u8 SEName_W048[] = _("W048"); -static const u8 SEName_W187[] = _("W187"); -static const u8 SEName_W118[] = _("W118"); -static const u8 SEName_W155[] = _("W155"); -static const u8 SEName_W122[] = _("W122"); -static const u8 SEName_W060[] = _("W060"); -static const u8 SEName_W185[] = _("W185"); -static const u8 SEName_W014[] = _("W014"); -static const u8 SEName_W043[] = _("W043"); -static const u8 SEName_W207[] = _("W207"); -static const u8 SEName_W207B[] = _("W207B"); -static const u8 SEName_W215[] = _("W215"); -static const u8 SEName_W109[] = _("W109"); -static const u8 SEName_W173[] = _("W173"); -static const u8 SEName_W280[] = _("W280"); -static const u8 SEName_W202[] = _("W202"); -static const u8 SEName_W060B[] = _("W060B"); -static const u8 SEName_W076[] = _("W076"); -static const u8 SEName_W080[] = _("W080"); -static const u8 SEName_W100[] = _("W100"); -static const u8 SEName_W107[] = _("W107"); -static const u8 SEName_W166[] = _("W166"); -static const u8 SEName_W129[] = _("W129"); -static const u8 SEName_W115[] = _("W115"); -static const u8 SEName_W112[] = _("W112"); -static const u8 SEName_W197[] = _("W197"); -static const u8 SEName_W199[] = _("W199"); -static const u8 SEName_W236[] = _("W236"); -static const u8 SEName_W204[] = _("W204"); -static const u8 SEName_W268[] = _("W268"); -static const u8 SEName_W070[] = _("W070"); -static const u8 SEName_W063[] = _("W063"); -static const u8 SEName_W127[] = _("W127"); -static const u8 SEName_W179[] = _("W179"); -static const u8 SEName_W151[] = _("W151"); -static const u8 SEName_W201[] = _("W201"); -static const u8 SEName_W161[] = _("W161"); -static const u8 SEName_W161B[] = _("W161B"); -static const u8 SEName_W227[] = _("W227"); -static const u8 SEName_W227B[] = _("W227B"); -static const u8 SEName_W226[] = _("W226"); -static const u8 SEName_W208[] = _("W208"); -static const u8 SEName_W213[] = _("W213"); -static const u8 SEName_W213B[] = _("W213B"); -static const u8 SEName_W234[] = _("W234"); -static const u8 SEName_W260[] = _("W260"); -static const u8 SEName_W328[] = _("W328"); -static const u8 SEName_W320[] = _("W320"); -static const u8 SEName_W255[] = _("W255"); -static const u8 SEName_W291[] = _("W291"); -static const u8 SEName_W089[] = _("W089"); -static const u8 SEName_W239[] = _("W239"); -static const u8 SEName_W230[] = _("W230"); -static const u8 SEName_W281[] = _("W281"); -static const u8 SEName_W327[] = _("W327"); -static const u8 SEName_W287[] = _("W287"); -static const u8 SEName_W257[] = _("W257"); -static const u8 SEName_W253[] = _("W253"); -static const u8 SEName_W258[] = _("W258"); -static const u8 SEName_W322[] = _("W322"); -static const u8 SEName_W298[] = _("W298"); -static const u8 SEName_W287B[] = _("W287B"); -static const u8 SEName_W114[] = _("W114"); -static const u8 SEName_W063B[] = _("W063B"); - -static const u8 *const gSENames[] = -{ - SEName_STOP, - SEName_KAIFUKU, - SEName_PC_LOGON, - SEName_PC_OFF, - SEName_PC_ON, - SEName_SELECT, - SEName_WIN_OPEN, - SEName_WALL_HIT, - SEName_DOOR, - SEName_KAIDAN, - SEName_DANSA, - SEName_JITENSYA, - SEName_KOUKA_L, - SEName_KOUKA_M, - SEName_KOUKA_H, - SEName_BOWA2, - SEName_POKE_DEAD, - SEName_NIGERU, - SEName_JIDO_DOA, - SEName_NAMINORI, - SEName_BAN, - SEName_PIN, - SEName_BOO, - SEName_BOWA, - SEName_JYUNI, - SEName_A, - SEName_I, - SEName_U, - SEName_E, - SEName_O, - SEName_N, - SEName_SEIKAI, - SEName_HAZURE, - SEName_EXP, - SEName_JITE_PYOKO, - SEName_MU_PACHI, - SEName_TK_KASYA, - SEName_FU_ZAKU, - SEName_FU_ZAKU2, - SEName_FU_ZUZUZU, - SEName_RU_GASHIN, - SEName_RU_GASYAN, - SEName_RU_BARI, - SEName_RU_HYUU, - SEName_KI_GASYAN, - SEName_TK_WARPIN, - SEName_TK_WARPOUT, - SEName_TU_SAA, - SEName_HI_TURUN, - SEName_TRACK_MOVE, - SEName_TRACK_STOP, - SEName_TRACK_HAIK, - SEName_TRACK_DOOR, - SEName_MOTER, - SEName_CARD, - SEName_SAVE, - SEName_KON, - SEName_KON2, - SEName_KON3, - SEName_KON4, - SEName_SUIKOMU, - SEName_NAGERU, - SEName_TOY_C, - SEName_TOY_D, - SEName_TOY_E, - SEName_TOY_F, - SEName_TOY_G, - SEName_TOY_A, - SEName_TOY_B, - SEName_TOY_C1, - SEName_MIZU, - SEName_HASHI, - SEName_DAUGI, - SEName_PINPON, - SEName_FUUSEN1, - SEName_FUUSEN2, - SEName_FUUSEN3, - SEName_TOY_KABE, - SEName_TOY_DANGO, - SEName_DOKU, - SEName_ESUKA, - SEName_T_AME, - SEName_T_AME_E, - SEName_T_OOAME, - SEName_T_OOAME_E, - SEName_T_KOAME, - SEName_T_KOAME_E, - SEName_T_KAMI, - SEName_T_KAMI2, - SEName_ELEBETA, - SEName_HINSI, - SEName_EXPMAX, - SEName_TAMAKORO, - SEName_TAMAKORO_E, - SEName_BASABASA, - SEName_REGI, - SEName_C_GAJI, - SEName_C_MAKU_U, - SEName_C_MAKU_D, - SEName_C_PASI, - SEName_C_SYU, - SEName_C_PIKON, - SEName_REAPOKE, - SEName_OP_BASYU, - SEName_BT_START, - SEName_DENDOU, - SEName_JIHANKI, - SEName_TAMA, - SEName_Z_SCROLL, - SEName_Z_PAGE, - SEName_PN_ON, - SEName_PN_OFF, - SEName_Z_SEARCH, - SEName_TAMAGO, - SEName_TB_START, - SEName_TB_KON, - SEName_TB_KARA, - SEName_BIDORO, - SEName_W085, - SEName_W085B, - SEName_W231, - SEName_W171, - SEName_W233, - SEName_W233B, - SEName_W145, - SEName_W145B, - SEName_W145C, - SEName_W240, - SEName_W015, - SEName_W081, - SEName_W081B, - SEName_W088, - SEName_W016, - SEName_W016B, - SEName_W003, - SEName_W104, - SEName_W013, - SEName_W196, - SEName_W086, - SEName_W004, - SEName_W025, - SEName_W025B, - SEName_W152, - SEName_W026, - SEName_W172, - SEName_W172B, - SEName_W053, - SEName_W007, - SEName_W092, - SEName_W221, - SEName_W221B, - SEName_W052, - SEName_W036, - SEName_W059, - SEName_W059B, - SEName_W010, - SEName_W011, - SEName_W017, - SEName_W019, - SEName_W028, - SEName_W013B, - SEName_W044, - SEName_W029, - SEName_W057, - SEName_W056, - SEName_W250, - SEName_W030, - SEName_W039, - SEName_W054, - SEName_W077, - SEName_W020, - SEName_W082, - SEName_W047, - SEName_W195, - SEName_W006, - SEName_W091, - SEName_W146, - SEName_W120, - SEName_W153, - SEName_W071B, - SEName_W071, - SEName_W103, - SEName_W062, - SEName_W062B, - SEName_W048, - SEName_W187, - SEName_W118, - SEName_W155, - SEName_W122, - SEName_W060, - SEName_W185, - SEName_W014, - SEName_W043, - SEName_W207, - SEName_W207B, - SEName_W215, - SEName_W109, - SEName_W173, - SEName_W280, - SEName_W202, - SEName_W060B, - SEName_W076, - SEName_W080, - SEName_W100, - SEName_W107, - SEName_W166, - SEName_W129, - SEName_W115, - SEName_W112, - SEName_W197, - SEName_W199, - SEName_W236, - SEName_W204, - SEName_W268, - SEName_W070, - SEName_W063, - SEName_W127, - SEName_W179, - SEName_W151, - SEName_W201, - SEName_W161, - SEName_W161B, - SEName_W227, - SEName_W227B, - SEName_W226, - SEName_W208, - SEName_W213, - SEName_W213B, - SEName_W234, - SEName_W260, - SEName_W328, - SEName_W320, - SEName_W255, - SEName_W291, - SEName_W089, - SEName_W239, - SEName_W230, - SEName_W281, - SEName_W327, - SEName_W287, - SEName_W257, - SEName_W253, - SEName_W258, - SEName_W322, - SEName_W298, - SEName_W287B, - SEName_W114, - SEName_W063B -}; - -void sub_80BA0A8(void) -{ - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); -} - -void sub_80BA0C0(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - - if(gUnknown_020387B0 != 0) - { - m4aSoundMain(); - m4aSoundMain(); - m4aSoundMain(); - } -} - -// unused -void CB2_StartSoundCheckMenu(void) -{ - u8 taskId; - - SetVBlankCallback(NULL); - REG_DISPCNT = 0; - REG_BG2CNT = 0; - REG_BG1CNT = 0; - REG_BG0CNT = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - DmaFill16(3, 0, VRAM, VRAM_SIZE); - DmaFill32(3, 0, OAM, OAM_SIZE); - DmaFill16(3, 0, PLTT, PLTT_SIZE); - ResetPaletteFade(); - ResetTasks(); - ResetSpriteData(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - REG_WIN0H = WIN_RANGE(0, 0); - REG_WIN0V = WIN_RANGE(0, 0); - REG_WIN1H = WIN_RANGE(0, 0); - REG_WIN1V = WIN_RANGE(0, 0); - REG_WININ = 0x1111; - REG_WINOUT = 0x31; - REG_BLDCNT = 0xE1; - REG_BLDALPHA = 0; - REG_BLDY = 7; - REG_IE = 1; // could be a typo of REG_IME - REG_IE |= 1; - REG_DISPSTAT |= 8; - SetVBlankCallback(sub_80BA0C0); - SetMainCallback2(sub_80BA0A8); - REG_DISPCNT = 0x7140; - taskId = CreateTask(sub_80BA258, 0); - TASK.WINDOW_SELECTED = BGM_WINDOW; - TASK.BGM_INDEX = 0; - TASK.SE_INDEX = 0; - TASK.UNK_DATA3 = 0; - gUnknown_020387B0 = 0; - TASK.UNK_DATA3 = 0; // why? - m4aSoundInit(); -} - -// Task_InitSoundCheckMenu -void sub_80BA258(u8 taskId) -{ - u8 soundcheckStr[sizeof(gDebugText_SoundCheckJap)]; - u8 bgmStr[sizeof(gDebugText_BGM)]; - u8 seStr[sizeof(gDebugText_SE)]; - u8 abDescStr[sizeof(gDebugText_ABDesc)]; - u8 upDownStr[sizeof(gDebugText_UpDown)]; - u8 driverStr[sizeof(gDebugText_DriverTest)]; - - memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof(gDebugText_SoundCheckJap)); - memcpy(bgmStr, gDebugText_BGM, sizeof(gDebugText_BGM)); - memcpy(seStr, gDebugText_SE, sizeof(gDebugText_SE)); - memcpy(abDescStr, gDebugText_ABDesc, sizeof(gDebugText_ABDesc)); - memcpy(upDownStr, gDebugText_UpDown, sizeof(gDebugText_UpDown)); - memcpy(driverStr, gDebugText_DriverTest, sizeof(gDebugText_DriverTest)); - - if(!gPaletteFade.active) - { - MenuDrawTextWindow(0x2, 0, 0x1B, 0x3); - MenuDrawTextWindow(0x2, 0x5, 0x1B, 0xA); - MenuDrawTextWindow(0x2, 0xC, 0x1B, 0x11); - MenuPrint(soundcheckStr, 4, 1); - MenuPrint(abDescStr, 14, 1); - MenuPrint(bgmStr, 4, 6); - MenuPrint(upDownStr, 14, 6); - MenuPrint(seStr, 4, 13); - MenuPrint(upDownStr, 14, 13); - MenuPrint(driverStr, 14, 18); - TASK.FUNC = sub_80BA384; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - } -} - -void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText -{ - sub_80BA6B8(TASK.WINDOW_SELECTED); - sub_80BA700(TASK.BGM_INDEX + BGM_STOP, 7, 8); // print by BGM index - sub_80BA79C(gBGMNames[TASK.BGM_INDEX], 11, 8); - sub_80BA700(TASK.SE_INDEX, 7, 15); - sub_80BA79C(gSENames[TASK.SE_INDEX], 11, 15); - TASK.FUNC = sub_80BA65C; -} - -#ifdef NONMATCHING -bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput -{ - if(gMain.newKeys & R_BUTTON) // driver test - { - TASK.FUNC = sub_80BA800; - return FALSE; - } - if(gMain.newKeys & L_BUTTON) - { - TASK.FUNC = sub_80BAF84; - return FALSE; - } - if(gMain.newKeys & START_BUTTON) - { - TASK.FUNC = sub_80BB25C; - return FALSE; - } - if(gMain.newKeys & A_BUTTON) // both these cases insist on non reuses of certain data variables and cause the function to not match. - { - if(TASK.WINDOW_SELECTED != 0) // is playing? - { - if(TASK.UNK_DATA4 != 0) - { - if(TASK.SE_INDEX != 0) // why are you insiting on a non signed halfword? - { - m4aSongNumStop(TASK.UNK_DATA4); - } - else - { - m4aSongNumStop(TASK.SE_INDEX); - TASK.UNK_DATA4 = TASK.SE_INDEX; - return FALSE; - } - } - else if(TASK.SE_INDEX == 0) // _080BA4BA - { - return FALSE; - } - // _080BA4C4 - m4aSongNumStart(TASK.SE_INDEX); - TASK.UNK_DATA4 = TASK.SE_INDEX; - return FALSE; - } - else // _080BA4D0 - { - if(TASK.UNK_DATA3 != 0) - { - if(TASK.BGM_INDEX != 0) - { - m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP); - } - else // _080BA500 - { - m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP); - TASK.UNK_DATA3 = TASK.BGM_INDEX; - return FALSE; - } - } - else if(TASK.BGM_INDEX == 0) // _080BA514 - return FALSE; - - m4aSongNumStart(TASK.BGM_INDEX + BGM_STOP); - TASK.UNK_DATA3 = TASK.BGM_INDEX; - } - return FALSE; - } - if(gMain.newKeys & B_BUTTON) - { - m4aSongNumStart(5); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - TASK.FUNC = sub_80BA68C; - return FALSE; - } - if(gMain.newAndRepeatedKeys & DPAD_UP) - { - TASK.data[8] ^= A_BUTTON; // huh? - return TRUE; - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) - { - TASK.data[8] ^= A_BUTTON; // huh? - return TRUE; - } - else - { - u16 keys = gMain.newAndRepeatedKeys & DPAD_RIGHT; - if(keys) - { - if(TASK.WINDOW_SELECTED != 0) - { - if(TASK.SE_INDEX > 0) - { - TASK.SE_INDEX--; - } - else - { - TASK.SE_INDEX = 0xF7; - } - } - else if(TASK.BGM_INDEX > 0) - { - TASK.BGM_INDEX--; - } - else - { - TASK.BGM_INDEX = 0x75; - } - return TRUE; - } - if(gMain.newAndRepeatedKeys & DPAD_LEFT) - { - if(TASK.WINDOW_SELECTED != 0) - { - if(TASK.SE_INDEX < 0xF7) - { - TASK.SE_INDEX++; - } - else - { - TASK.SE_INDEX = keys; // ?? - } - } - else if(TASK.BGM_INDEX < 0x75) - { - TASK.BGM_INDEX++; - return TRUE; - } - else - { - TASK.BGM_INDEX = TASK.SE_INDEX; - return TRUE; - } - return TRUE; - } - if(gMain.heldKeys & SELECT_BUTTON) - { - gUnknown_020387B0 = A_BUTTON; - return FALSE; - } - else - { - gUnknown_020387B0 = (gMain.heldKeys & SELECT_BUTTON); - return FALSE; - } - } -} -#else -__attribute__((naked)) -bool8 sub_80BA400(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldr r2, _080BA428 @ =gMain\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA434\n\ - ldr r0, _080BA42C @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA430 @ =sub_80BA800\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA428: .4byte gMain\n\ -_080BA42C: .4byte gTasks\n\ -_080BA430: .4byte sub_80BA800\n\ -_080BA434:\n\ - movs r0, 0x80\n\ - lsls r0, 2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA458\n\ - ldr r0, _080BA450 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA454 @ =sub_80BAF84\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA450: .4byte gTasks\n\ -_080BA454: .4byte sub_80BAF84\n\ -_080BA458:\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA478\n\ - ldr r0, _080BA470 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA474 @ =sub_80BB25C\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA470: .4byte gTasks\n\ -_080BA474: .4byte sub_80BB25C\n\ -_080BA478:\n\ - movs r6, 0x1\n\ - movs r5, 0x1\n\ - ands r5, r1\n\ - cmp r5, 0\n\ - beq _080BA538\n\ - ldr r0, _080BA4AC @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r5, r1, r0\n\ - movs r1, 0x8\n\ - ldrsh r0, [r5, r1]\n\ - cmp r0, 0\n\ - beq _080BA4D0\n\ - movs r2, 0x10\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _080BA4BA\n\ - movs r3, 0xC\n\ - ldrsh r4, [r5, r3]\n\ - cmp r4, 0\n\ - beq _080BA4B0\n\ - ldrh r0, [r5, 0x10]\n\ - bl m4aSongNumStop\n\ - b _080BA4C4\n\ - .align 2, 0\n\ -_080BA4AC: .4byte gTasks\n\ -_080BA4B0:\n\ - ldrh r0, [r5, 0x10]\n\ - bl m4aSongNumStop\n\ - strh r4, [r5, 0x10]\n\ - b _080BA64C\n\ -_080BA4BA:\n\ - movs r4, 0xC\n\ - ldrsh r0, [r5, r4]\n\ - cmp r0, 0\n\ - bne _080BA4C4\n\ - b _080BA64C\n\ -_080BA4C4:\n\ - ldrh r0, [r5, 0xC]\n\ - bl m4aSongNumStart\n\ - ldrh r0, [r5, 0xC]\n\ - strh r0, [r5, 0x10]\n\ - b _080BA64C\n\ -_080BA4D0:\n\ - ldrh r1, [r5, 0xE]\n\ - movs r2, 0xE\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _080BA514\n\ - movs r3, 0xA\n\ - ldrsh r4, [r5, r3]\n\ - cmp r4, 0\n\ - beq _080BA500\n\ - ldr r0, _080BA4FC @ =0x0000015d\n\ - adds r4, r0, 0\n\ - adds r0, r1, r4\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl m4aSongNumStop\n\ - ldrh r1, [r5, 0xA]\n\ - adds r4, r1\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - adds r0, r4, 0\n\ - b _080BA528\n\ - .align 2, 0\n\ -_080BA4FC: .4byte 0x0000015d\n\ -_080BA500:\n\ - ldr r2, _080BA510 @ =0x0000015d\n\ - adds r0, r1, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl m4aSongNumStop\n\ - strh r4, [r5, 0xE]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA510: .4byte 0x0000015d\n\ -_080BA514:\n\ - ldrh r1, [r5, 0xA]\n\ - movs r3, 0xA\n\ - ldrsh r0, [r5, r3]\n\ - cmp r0, 0\n\ - bne _080BA520\n\ - b _080BA64C\n\ -_080BA520:\n\ - ldr r4, _080BA534 @ =0x0000015d\n\ - adds r0, r1, r4\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ -_080BA528:\n\ - bl m4aSongNumStart\n\ - ldrh r0, [r5, 0xA]\n\ - strh r0, [r5, 0xE]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA534: .4byte 0x0000015d\n\ -_080BA538:\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA570\n\ - movs r0, 0x5\n\ - bl m4aSongNumStart\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - str r5, [sp]\n\ - movs r1, 0\n\ - movs r2, 0\n\ - movs r3, 0x10\n\ - bl BeginNormalPaletteFade\n\ - ldr r1, _080BA568 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldr r1, _080BA56C @ =sub_80BA68C\n\ - str r1, [r0]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA568: .4byte gTasks\n\ -_080BA56C: .4byte sub_80BA68C\n\ -_080BA570:\n\ - ldrh r1, [r2, 0x30]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080BA582\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA59C\n\ -_080BA582:\n\ - ldr r0, _080BA598 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrh r0, [r1, 0x8]\n\ - eors r0, r6\n\ - strh r0, [r1, 0x8]\n\ -_080BA592:\n\ - movs r0, 0x1\n\ - b _080BA64E\n\ - .align 2, 0\n\ -_080BA598: .4byte gTasks\n\ -_080BA59C:\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0\n\ - beq _080BA5EA\n\ - ldr r0, _080BA5CC @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r2, 0x8\n\ - ldrsh r0, [r1, r2]\n\ - cmp r0, 0\n\ - beq _080BA5D6\n\ - ldrh r2, [r1, 0xC]\n\ - movs r3, 0xC\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0\n\ - ble _080BA5D0\n\ - subs r0, r2, 0x1\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ - .align 2, 0\n\ -_080BA5CC: .4byte gTasks\n\ -_080BA5D0:\n\ - movs r0, 0xF7\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ -_080BA5D6:\n\ - ldrh r2, [r1, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0\n\ - ble _080BA5E4\n\ - subs r0, r2, 0x1\n\ - b _080BA5E6\n\ -_080BA5E4:\n\ - movs r0, 0x75\n\ -_080BA5E6:\n\ - strh r0, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA5EA:\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA630\n\ - ldr r1, _080BA614 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r1, r0, r1\n\ - movs r0, 0x8\n\ - ldrsh r2, [r1, r0]\n\ - cmp r2, 0\n\ - beq _080BA61C\n\ - ldrh r2, [r1, 0xC]\n\ - movs r4, 0xC\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0xF6\n\ - bgt _080BA618\n\ - adds r0, r2, 0x1\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ - .align 2, 0\n\ -_080BA614: .4byte gTasks\n\ -_080BA618:\n\ - strh r3, [r1, 0xC]\n\ - b _080BA592\n\ -_080BA61C:\n\ - ldrh r3, [r1, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0x74\n\ - bgt _080BA62C\n\ - adds r0, r3, 0x1\n\ - strh r0, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA62C:\n\ - strh r2, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA630:\n\ - ldrh r1, [r2, 0x2C]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - cmp r1, 0\n\ - beq _080BA648\n\ - ldr r0, _080BA644 @ =gUnknown_020387B0\n\ - strb r6, [r0]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA644: .4byte gUnknown_020387B0\n\ -_080BA648:\n\ - ldr r0, _080BA658 @ =gUnknown_020387B0\n\ - strb r1, [r0]\n\ -_080BA64C:\n\ - movs r0, 0\n\ -_080BA64E:\n\ - add sp, 0x4\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080BA658: .4byte gUnknown_020387B0\n\ - .syntax divided"); -} -#endif - -void sub_80BA65C(u8 taskId) -{ - if(sub_80BA400(taskId) != FALSE) - TASK.FUNC = sub_80BA384; -} - -void sub_80BA68C(u8 taskId) -{ - if(!gPaletteFade.active) - { - DestroyTask(taskId); - SetMainCallback2(CB2_InitTitleScreen); - } -} - -void sub_80BA6B8(u8 windowType) -{ - switch(windowType) - { - case BGM_WINDOW: - default: - REG_WIN1H = WIN_RANGE(17, 223); - REG_WIN1V = WIN_RANGE(41, 87); - break; - case SE_WINDOW: - REG_WIN1H = WIN_RANGE(17, 223); - REG_WIN1V = WIN_RANGE(97, 143); - break; - } -} - -void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? -{ - u8 i; - u8 str[5]; - bool8 someBool; - u8 divisorValue; - - for(i = 0; i < 3; i++) - str[i] = 0; // initialize array - - str[3] = CHAR_ELLIPSIS; - str[4] = EOS; - someBool = FALSE; - - divisorValue = soundIndex / 100; - if(divisorValue) - { - str[0] = divisorValue + CHAR_0; - someBool = TRUE; - } - - divisorValue = (soundIndex % 100) / 10; - if(divisorValue || someBool != FALSE) - str[1] = divisorValue + CHAR_0; - - str[2] = ((soundIndex % 100) % 10) + CHAR_0; - MenuPrint(str, x, y); -} - -void sub_80BA79C(const u8 *const string, u16 x, u16 y) -{ - u8 i; - u8 str[11]; - - for(i = 0; i < 11; i++) - str[i] = 0; // format string. - - str[10] = EOS; // the above for loop formats the last element of the array unnecessarily. - - for(i = 0; string[i] != EOS && i < 10; i++) - str[i] = string[i]; - - MenuPrint(str, x, y); -} - -void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu -{ - u8 bbackStr[sizeof(gDebugText_BBack)]; - u8 aplayStr[sizeof(gDebugText_APlay)]; - u8 voiceStr[sizeof(gDebugText_Voice)]; - u8 volumeStr[sizeof(gDebugText_Volume)]; - u8 panpotStr[sizeof(gDebugText_Panpot)]; - u8 pitchStr[sizeof(gDebugText_Pitch)]; - u8 lengthStr[sizeof(gDebugText_Length)]; - u8 releaseStr[sizeof(gDebugText_Release)]; - u8 progressStr[sizeof(gDebugText_Progress)]; - u8 chorusStr[sizeof(gDebugText_Chorus)]; - u8 priorityStr[sizeof(gDebugText_Priority)]; - u8 playingStr[sizeof(gDebugText_Playing)]; - u8 reverseStr[sizeof(gDebugText_Reverse)]; - u8 stereoStr[sizeof(gDebugText_Stereo)]; - - memcpy(bbackStr, gDebugText_BBack, sizeof(gDebugText_BBack)); - memcpy(aplayStr, gDebugText_APlay, sizeof(gDebugText_APlay)); - memcpy(voiceStr, gDebugText_Voice, sizeof(gDebugText_Voice)); - memcpy(volumeStr, gDebugText_Volume, sizeof(gDebugText_Volume)); - memcpy(panpotStr, gDebugText_Panpot, sizeof(gDebugText_Panpot)); - memcpy(pitchStr, gDebugText_Pitch, sizeof(gDebugText_Pitch)); - memcpy(lengthStr, gDebugText_Length, sizeof(gDebugText_Length)); - memcpy(releaseStr, gDebugText_Release, sizeof(gDebugText_Release)); - memcpy(progressStr, gDebugText_Progress, sizeof(gDebugText_Progress)); - memcpy(chorusStr, gDebugText_Chorus, sizeof(gDebugText_Chorus)); - memcpy(priorityStr, gDebugText_Priority, sizeof(gDebugText_Priority)); - memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing)); - memcpy(reverseStr, gDebugText_Reverse, sizeof(gDebugText_Reverse)); - memcpy(stereoStr, gDebugText_Stereo, sizeof(gDebugText_Stereo)); - - REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 0x1D, 0x13); - MenuPrint(bbackStr, 0x13, 0x4); - MenuPrint(aplayStr, 0x13, 0x2); - MenuPrint(voiceStr, 0x2, 0x1); - MenuPrint(volumeStr, 0x2, 0x3); - MenuPrint(panpotStr, 0x2, 0x5); - MenuPrint(pitchStr, 0x2, 0x7); - MenuPrint(lengthStr, 0x2, 0x9); - MenuPrint(releaseStr, 0x2, 0xB); - MenuPrint(progressStr, 0x2, 0xD); - MenuPrint(chorusStr, 0x2, 0xF); - MenuPrint(priorityStr, 0x2, 0x11); - MenuPrint(playingStr, 0x13, 0x10); - MenuPrint(reverseStr, 0x13, 0xE); - MenuPrint(stereoStr, 0x13, 0xC); - REG_WIN0H = WIN_RANGE(0, 240); - REG_WIN0V = WIN_RANGE(0, 160); - gUnknown_020387B3 = 0; - gUnknown_020387B1 = 0; - gUnknown_020387B2 = 0; - gUnknown_03005D30 = NULL; - gUnknown_020387D8 = 0; - gUnknown_020387D9 = 1; - gUnknown_020387B4[CRY_TEST_UNK0] = 0; - gUnknown_020387B4[CRY_TEST_VOLUME] = 0x78; - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - gUnknown_020387B4[CRY_TEST_PITCH] = 0x3C00; - gUnknown_020387B4[CRY_TEST_LENGTH] = 0xB4; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0; - gUnknown_020387B4[CRY_TEST_CHORUS] = 0; - gUnknown_020387B4[CRY_TEST_PRIORITY] = 2; - sub_80BAD5C(); - sub_80BAE10(0, 0); - TASK.FUNC = sub_80BAA48; -} - -void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput -{ - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - return; - } - if(gMain.newAndRepeatedKeys & DPAD_UP) // _080BAAA8 - { - u8 backupVar = gUnknown_020387B3; - if(--gUnknown_020387B3 < 0) - gUnknown_020387B3 = 8; - - sub_80BAE10(backupVar, gUnknown_020387B3); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _080BAAD0 - { - u8 backupVar = gUnknown_020387B3; - if(++gUnknown_020387B3 > 8) - gUnknown_020387B3 = 0; - - sub_80BAE10(backupVar, gUnknown_020387B3); - return; - } - if(gMain.newKeys & START_BUTTON) // _080BAAF8 - { - gUnknown_020387D8 ^= 1; - sub_80BAD5C(); - return; - } - if(gMain.newKeys & SELECT_BUTTON) // _080BAB14 - { - gUnknown_020387D9 ^= 1; - sub_80BAD5C(); - SetPokemonCryStereo(gUnknown_020387D9); - return; - } - if(gMain.newAndRepeatedKeys & R_BUTTON) // _080BAB38 - { - sub_80BACDC(10); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & L_BUTTON) // _080BAB46 - { - sub_80BACDC(-10); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BAB56 - { - sub_80BACDC(-1); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BAB64 - { - sub_80BACDC(1); - sub_80BAD5C(); - return; - } - if(gMain.newKeys & A_BUTTON) // _080BAB78 - { - u8 divide, remaining; - - SetPokemonCryVolume(gUnknown_020387B4[CRY_TEST_VOLUME]); - SetPokemonCryPanpot(gUnknown_020387B4[CRY_TEST_PANPOT]); - SetPokemonCryPitch(gUnknown_020387B4[CRY_TEST_PITCH]); - SetPokemonCryLength(gUnknown_020387B4[CRY_TEST_LENGTH]); - SetPokemonCryProgress(gUnknown_020387B4[CRY_TEST_PROGRESS]); - SetPokemonCryRelease(gUnknown_020387B4[CRY_TEST_RELEASE]); - SetPokemonCryChorus(gUnknown_020387B4[CRY_TEST_CHORUS]); - SetPokemonCryPriority(gUnknown_020387B4[CRY_TEST_PRIORITY]); - - remaining = gUnknown_020387B4[CRY_TEST_UNK0] % 128; - divide = gUnknown_020387B4[CRY_TEST_UNK0] / 128; - - switch(divide) - { - case 0: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]); - break; - case 1: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]); - break; - case 2: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]); - break; - case 3: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]); - break; - } - } - - // _080BACA2 - if(gUnknown_03005D30 != NULL) - { - gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30); - - if(gUnknown_020387B1 != gUnknown_020387B2) - sub_80BAD5C(); - - gUnknown_020387B2 = gUnknown_020387B1; - } -} - -void sub_80BACDC(s8 var) -{ - int minMaxArray[ARRAY_COUNT(gUnknown_083D039C)]; - - memcpy(minMaxArray, gUnknown_083D039C, sizeof(gUnknown_083D039C)); - gUnknown_020387B4[gUnknown_020387B3] += var; - - if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]) - gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)]; - - if(gUnknown_020387B4[gUnknown_020387B3] < minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)]) - gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]; -} - -void sub_80BAD5C(void) -{ - sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0] + 1, 0xB, 0x1, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_VOLUME], 0xB, 0x3, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PANPOT], 0xB, 0x5, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PITCH], 0xB, 0x7, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_LENGTH], 0xB, 0x9, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_RELEASE], 0xB, 0xB, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PROGRESS], 0xB, 0xD, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_CHORUS], 0xB, 0xF, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PRIORITY], 0xB, 0x11, 0x5); - sub_80BAE78(gUnknown_020387B1, 0x1B, 0x10, 0x1); - sub_80BAE78(gUnknown_020387D8, 0x1B, 0xE, 0x1); - sub_80BAE78(gUnknown_020387D9, 0x1B, 0xC, 0x1); -} - -void sub_80BAE10(u8 var1, u8 var2) -{ - u8 str1[sizeof(gUnknown_083D03DC)]; - u8 str2[sizeof(gUnknown_083D03DE)]; - - memcpy(str1, gUnknown_083D03DC, sizeof(gUnknown_083D03DC)); - memcpy(str2, gUnknown_083D03DE, sizeof(gUnknown_083D03DE)); - - MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); - MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); -} - -/*void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) -{ - u32 powers[6]; - u8 str[8]; - u8 i; - u8 someVar, someVar2; - - memcpy(powers, gUnknown_083D03E0, sizeof(powers); - - for(i = 0; i < var4; i++) - str[i] = 0; - - str[var4 + 1] = CHAR_0; - someVar = 0; - - if(var1 < 0) // make absolute value? wtf - { - var1 = -var1; // just use abs? - someVar = 1; - } - - // _080BAED6 - someVar2 = 0; - if(var4 == 1) - someVar2 = 1; - - // _080BAEE2 - for(;;) - { - - } -}*/ - -// no. -__attribute__((naked)) -void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x2C\n\ - mov r8, r0\n\ - lsls r1, 16\n\ - lsrs r6, r1, 16\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - lsls r3, 24\n\ - lsrs r7, r3, 24\n\ - mov r1, sp\n\ - ldr r0, _080BAF80 @ =gUnknown_083D03E0\n\ - ldm r0!, {r3-r5}\n\ - stm r1!, {r3-r5}\n\ - ldm r0!, {r3-r5}\n\ - stm r1!, {r3-r5}\n\ - movs r5, 0\n\ - add r0, sp, 0x18\n\ - mov r9, r0\n\ - cmp r5, r7\n\ - bgt _080BAEC0\n\ - mov r4, r9\n\ - movs r3, 0\n\ -_080BAEAC:\n\ - lsls r0, r5, 24\n\ - asrs r0, 24\n\ - adds r1, r4, r0\n\ - strb r3, [r1]\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, r7\n\ - ble _080BAEAC\n\ -_080BAEC0:\n\ - adds r0, r7, 0x1\n\ - add r0, r9\n\ - movs r1, 0xFF\n\ - strb r1, [r0]\n\ - movs r1, 0\n\ - mov r3, r8\n\ - cmp r3, 0\n\ - bge _080BAED6\n\ - negs r3, r3\n\ - mov r8, r3\n\ - movs r1, 0x1\n\ -_080BAED6:\n\ - movs r4, 0\n\ - mov r10, r4\n\ - cmp r7, 0x1\n\ - bne _080BAEE2\n\ - movs r5, 0x1\n\ - mov r10, r5\n\ -_080BAEE2:\n\ - subs r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r0, r5, 24\n\ - lsls r6, 24\n\ - str r6, [sp, 0x24]\n\ - lsls r2, 24\n\ - str r2, [sp, 0x28]\n\ - cmp r0, 0\n\ - blt _080BAF62\n\ - str r1, [sp, 0x20]\n\ -_080BAEF8:\n\ - asrs r6, r0, 24\n\ - lsls r0, r6, 2\n\ - add r0, sp\n\ - ldr r1, [r0]\n\ - mov r0, r8\n\ - bl __divsi3\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r0, 0\n\ - bne _080BAF1A\n\ - mov r0, r10\n\ - cmp r0, 0\n\ - bne _080BAF1A\n\ - lsls r4, r5, 24\n\ - cmp r6, 0\n\ - bne _080BAF46\n\ -_080BAF1A:\n\ - lsls r4, r5, 24\n\ - ldr r3, [sp, 0x20]\n\ - cmp r3, 0\n\ - beq _080BAF34\n\ - mov r5, r10\n\ - cmp r5, 0\n\ - bne _080BAF34\n\ - asrs r0, r4, 24\n\ - subs r0, r7, r0\n\ - subs r0, 0x1\n\ - add r0, r9\n\ - movs r1, 0xAE\n\ - strb r1, [r0]\n\ -_080BAF34:\n\ - asrs r1, r4, 24\n\ - subs r1, r7, r1\n\ - add r1, r9\n\ - lsls r0, r2, 24\n\ - asrs r0, 24\n\ - subs r0, 0x5F\n\ - strb r0, [r1]\n\ - movs r0, 0x1\n\ - mov r10, r0\n\ -_080BAF46:\n\ - asrs r4, 24\n\ - lsls r0, r4, 2\n\ - add r0, sp\n\ - ldr r1, [r0]\n\ - mov r0, r8\n\ - bl __modsi3\n\ - mov r8, r0\n\ - subs r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r5, r4, 24\n\ - lsls r0, r5, 24\n\ - cmp r0, 0\n\ - bge _080BAEF8\n\ -_080BAF62:\n\ - ldr r3, [sp, 0x24]\n\ - lsrs r1, r3, 24\n\ - ldr r4, [sp, 0x28]\n\ - lsrs r2, r4, 24\n\ - mov r0, r9\n\ - bl MenuPrint\n\ - add sp, 0x2C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080BAF80: .4byte gUnknown_083D03E0\n\ - .syntax divided"); -} - -void sub_80BAF84(u8 taskId) -{ - u8 seStr[sizeof(gOtherText_SE)]; - u8 panStr[sizeof(gOtherText_Pan)]; - u8 playingStr[sizeof(gDebugText_Playing)]; - - memcpy(seStr, gOtherText_SE, sizeof(gOtherText_SE)); - memcpy(panStr, gOtherText_Pan, sizeof(gOtherText_Pan)); - memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing)); - - REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 0x1D, 0x13); - MenuPrint(seStr, 3, 2); - MenuPrint(panStr, 3, 4); - MenuPrint(playingStr, 3, 8); - REG_WIN0H = WIN_RANGE(0, 240); - REG_WIN0V = WIN_RANGE(0, 160); - gUnknown_020387B4[CRY_TEST_UNK0] = 1; - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - gUnknown_020387B4[CRY_TEST_CHORUS] = 0; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0; - sub_80BB1D4(); - TASK.FUNC = sub_80BB038; -} - -void sub_80BB038(u8 taskId) -{ - sub_80BB1D4(); - if(gUnknown_020387B4[CRY_TEST_PROGRESS]) - { - if(gUnknown_020387B4[CRY_TEST_RELEASE]) - { - gUnknown_020387B4[CRY_TEST_RELEASE]--; - } - else // _080BB05C - { - s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; - if(panpot != -128) - { - if(panpot == 0x7F) - { - gUnknown_020387B4[CRY_TEST_CHORUS] += 2; - if(gUnknown_020387B4[CRY_TEST_CHORUS] < 0x3F) - SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]); - } - } - else // _080BB08C - { - gUnknown_020387B4[CRY_TEST_CHORUS] -= 2; - if(gUnknown_020387B4[CRY_TEST_CHORUS] > -0x40) - SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]); - } - } - } - // _080BB0A2 - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - return; - } - if(gMain.newKeys & A_BUTTON) // _080BB104 - { - s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; - if(panpot != -128) - { - if(panpot == 0x7F) - { - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], -0x40); - gUnknown_020387B4[CRY_TEST_CHORUS] = -0x40; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 1; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E; - return; - } - } - else // _080BB140 - { - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], 0x3F); - gUnknown_020387B4[CRY_TEST_CHORUS] = 0x3F; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 1; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E; - return; - } - // _080BB154 - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], panpot); - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - return; - } - if(gMain.newKeys & L_BUTTON) // _080BB15E - { - gUnknown_020387B4[CRY_TEST_PANPOT]++; - if(gUnknown_020387B4[CRY_TEST_PANPOT] > 4) - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - } - if(gMain.newKeys & R_BUTTON) // _080BB176 - { - gUnknown_020387B4[CRY_TEST_PANPOT]--; - if(gUnknown_020387B4[CRY_TEST_PANPOT] < 0) - gUnknown_020387B4[CRY_TEST_PANPOT] = 4; - } - if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BB192 - { - gUnknown_020387B4[CRY_TEST_UNK0]++; - if(gUnknown_020387B4[CRY_TEST_UNK0] > 0xF7) - gUnknown_020387B4[CRY_TEST_UNK0] = 0; - } - else if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BB1B0 - { - gUnknown_020387B4[CRY_TEST_UNK0]--; - if(gUnknown_020387B4[CRY_TEST_UNK0] < 0) - gUnknown_020387B4[CRY_TEST_UNK0] = 0xF7; - } -} - -void sub_80BB1D4(void) -{ - u8 lrStr[sizeof(gOtherText_LR)]; - u8 rlStr[sizeof(gOtherText_RL)]; - - memcpy(lrStr, gOtherText_LR, sizeof(lrStr)); - memcpy(rlStr, gOtherText_RL, sizeof(rlStr)); - - sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0], 7, 2, 3); - - switch(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]) - { - case 0x7F: - MenuPrint(lrStr, 7, 4); - break; - case -0x80: - MenuPrint(rlStr, 7, 4); - break; - default: - sub_80BAE78(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]], 7, 4, 3); - break; - } - sub_80BAE78(IsSEPlaying(), 12, 8, 1); -} - -void sub_80BB25C(u8 taskId) -{ - struct CryRelatedStruct cryStruct, cryStruct2; - u8 zero; - - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - gUnknown_03005D34 = 1; - ResetSpriteData(); - FreeAllSpritePalettes(); - - cryStruct.unk0 = 0x2000; - cryStruct.unk2 = 29; - cryStruct.paletteNo = 12; - cryStruct.yPos = 30; - cryStruct.xPos = 4; - - zero = 0; // wtf? - gUnknown_03005E98 = 0; - - while(sub_8119E3C(&cryStruct, 3) == FALSE); - - cryStruct2.unk0 = 0; - cryStruct2.unk2 = 15; - cryStruct2.paletteNo = 13; - cryStruct2.xPos = 12; - cryStruct2.yPos = 12; - - zero = 0; // wtf? - gUnknown_03005E98 = 0; - - while(ShowPokedexCryScreen(&cryStruct2, 2) == FALSE); - - MenuDrawTextWindow(0, 16, 5, 19); - sub_80BB494(); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG2CNT = 0xF01; - REG_BG3CNT = 0x1D03; - REG_DISPCNT = 0x1d40; - m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2); - TASK.FUNC = sub_80BB3B4; -} - -void sub_80BB3B4(u8 taskId) -{ - sub_8119F88(3); - - if(gMain.newKeys & A_BUTTON) - { - sub_811A050(gUnknown_03005D34); - } - if(gMain.newKeys & R_BUTTON) - { - StopCryAndClearCrySongs(); - } - if(gMain.newAndRepeatedKeys & DPAD_UP) - { - if(--gUnknown_03005D34 == 0) - gUnknown_03005D34 = 384; // total species - sub_80BB494(); - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) - { - if(++gUnknown_03005D34 > 384) - gUnknown_03005D34 = 1; - sub_80BB494(); - } - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - DestroyCryMeterNeedleSprite(); - } -} - -void sub_80BB494(void) -{ - sub_80BAE78(gUnknown_03005D34, 1, 17, 3); -} diff --git a/src/strings.c b/src/strings.c index 219c5bec1..6c8dce9d6 100644 --- a/src/strings.c +++ b/src/strings.c @@ -861,7 +861,7 @@ const u8 gOtherText_AtBattleStart[] = _("At the battle’s start."); const u8 gOtherText_UponWinningBattle[] = _("Upon winning a battle."); const u8 gOtherText_UponLosingBattle[] = _("Upon losing a battle."); -// mauville_old_man? +// mauville_man? const u8 gOtherText_TheBardsSong[] = _("The BARD’s Song"); const u8 gOtherText_WhatsHipHappening[] = _("What’s hip and happening?"); const u8 gOtherText_Interview[] = _("Interview"); @@ -1781,7 +1781,7 @@ const u8 gOtherText_AtBattleStart[] = _("Zum Kampfbeginn"); const u8 gOtherText_UponWinningBattle[] = _("Über den Sieg"); const u8 gOtherText_UponLosingBattle[] = _("Über die Niederlage"); -// mauville_old_man? +// mauville_man? const u8 gOtherText_TheBardsSong[] = _("Das BARDEN-Lied"); const u8 gOtherText_WhatsHipHappening[] = _("Was ist hip? Was ist top?"); const u8 gOtherText_Interview[] = _("Interview"); diff --git a/src/trade.c b/src/trade.c deleted file mode 100644 index cb190d194..000000000 --- a/src/trade.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "global.h" -#include "name_string_util.h" -#include "string_util.h" -#include "text.h" - -struct InGameTrade { - /*0x00*/ u8 name[11]; - /*0x0C*/ u16 species; - /*0x0E*/ u8 ivs[6]; - /*0x14*/ bool8 secondAbility; - /*0x18*/ u32 otId; - /*0x1C*/ u8 stats[5]; - /*0x24*/ u32 personality; - /*0x28*/ u16 heldItem; - /*0x2A*/ u8 mailNum; - /*0x2B*/ u8 otName[11]; - /*0x36*/ u8 otGender; - /*0x37*/ u8 sheen; - /*0x38*/ u16 playerSpecies; -}; - -struct UnkStructC { - /*0x00*/ u16 words[9]; - /*0x10*/ u8 string[8]; - /*0x1A*/ u8 otId[4]; - /*0x1E*/ u16 species; - /*0x20*/ u16 heldItem; -}; - -struct UnkStructD { - /*0x00*/ u8 pad00[0x10]; - /*0x10*/ u8 var10; - /*0x11*/ u8 pad11[1]; - /*0x12*/ u16 var12[1]; -}; - -extern const struct InGameTrade gIngameTrades[]; -extern const u16 gIngameTradeMail[][10]; - - -void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { - int y, x; - - for (y = 0; y < height; y++) - { - - for (x = 0; x < width; x++) - { - arg0->var12[(top * 32 + left) + y * 32 + x] = tilemap[width * y + x] | sp8; - } - } - -#if ENGLISH - arg0->var10 = 1; -#endif -} - -#if GERMAN -void sub_804A96C_alt(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { - sub_804A96C(arg0, left, top, tilemap, width, height, sp8); - - arg0->var10 = 1; -} -#endif - -asm(".section .text.sub_804DAD4"); - -void sub_804DAD4(struct UnkStructC *arg0, struct InGameTrade *trade) { - s32 i; - - for (i = 0; i < 9; i++) - { - arg0->words[i] = gIngameTradeMail[trade->mailNum][i]; - } - - StringCopy(arg0->string, trade->otName); - -#if GERMAN - PadNameString(arg0->string, CHAR_SPACE); -#endif - - arg0->otId[0] = trade->otId >> 24; - arg0->otId[1] = trade->otId >> 16; - arg0->otId[2] = trade->otId >> 8; - arg0->otId[3] = trade->otId; - arg0->species = trade->species; - arg0->heldItem = trade->heldItem; -} diff --git a/src/trainer_see.c b/src/trainer_see.c deleted file mode 100644 index feb35c67c..000000000 --- a/src/trainer_see.c +++ /dev/null @@ -1,455 +0,0 @@ -#include "global.h" -#include "trainer_see.h" -#include "battle_setup.h" -#include "field_effect.h" -#include "field_map_obj.h" -#include "field_player_avatar.h" -#include "script.h" -#include "sprite.h" -#include "task.h" -#include "util.h" - -extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16); -extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *); -extern bool8 (*gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *); - -extern struct SpriteTemplate gSpriteTemplate_839B510; -extern struct SpriteTemplate gSpriteTemplate_839B528; - -bool8 CheckTrainers(void) -{ - u8 i; - - for (i = 0; i < 16; i++) - { - if ( gMapObjects[i].active ) - if ( gMapObjects[i].trainerType == 1 || gMapObjects[i].trainerType == 3 ) - if ( CheckTrainer(i) ) - return TRUE; - } - return FALSE; -} - -bool8 CheckTrainer(u8 trainer) -{ - u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(trainer); - - if (GetTrainerFlagFromScriptPointer(scriptPtr)) - return FALSE; - else - { - struct MapObject *trainerObj = &gMapObjects[trainer]; - u8 canApproach = TrainerCanApproachPlayer(trainerObj); - - if (canApproach != 0) - { - TrainerWantsBattle(trainer, scriptPtr); - sub_80842C8(trainerObj, (canApproach - 1)); - return TRUE; - } - else - { - return FALSE; - } - } -} - -bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj) -{ - s16 x, y; - u8 i; - u8 playerCoord; - - PlayerGetDestCoords(&x, &y); - if ( trainerObj->trainerType == 1 ) // trainers that don't spin - { - playerCoord = gIsTrainerInRange[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); - return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, trainerObj->mapobj_unk_18); - } - else // spinners - { - for (i = 0; i < 4; i++) - { - playerCoord = gIsTrainerInRange[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); - if ( CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, i + 1) ) // directions are 1-4 instead of 0-3. south north west east - return playerCoord; - } - return FALSE; - } -} - -bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y) -{ - if ( trainerObj->coords2.x == x - && y > trainerObj->coords2.y - && y <= trainerObj->coords2.y + vision ) - return (y - trainerObj->coords2.y); - else - return FALSE; -} - -bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y) -{ - if ( trainerObj->coords2.x == x - && y < trainerObj->coords2.y - && y >= trainerObj->coords2.y - vision ) - return (trainerObj->coords2.y - y); - else - return FALSE; -} - -bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y) -{ - if ( trainerObj->coords2.y == y - && x < trainerObj->coords2.x - && x >= trainerObj->coords2.x - vision ) - return (trainerObj->coords2.x - x); - else - return FALSE; -} - -bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y) -{ - if ( trainerObj->coords2.y == y - && x > trainerObj->coords2.x - && x <= trainerObj->coords2.x + vision ) - return (x - trainerObj->coords2.x); - else - return FALSE; -} - -#ifdef BUGFIX_TRAINERAPPROACH -#define COLLISION_MASK ~1 -#else -#define COLLISION_MASK 1 -#endif - -bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 playerCoord, u8 direction) -{ - s16 x, y; - u8 unk19_temp; - u8 unk19b_temp; - u8 i; - u8 var; - - if (!playerCoord) - return FALSE; - - x = trainerObj->coords2.x; - y = trainerObj->coords2.y; - - for (i = 0; i <= playerCoord - 1; i++, MoveCoords(direction, &x, &y)) - { - var = sub_8060024((struct MapObject *)trainerObj, x, y, direction); - - if (var && (var & COLLISION_MASK)) - return FALSE; - } - - // preserve mapobj_unk_19 before clearing. - unk19_temp = trainerObj->mapobj_unk_19; - unk19b_temp = trainerObj->mapobj_unk_19b; - trainerObj->mapobj_unk_19 = 0; - trainerObj->mapobj_unk_19b = 0; - - var = npc_block_way((struct MapObject *)trainerObj, x, y, direction); - - trainerObj->mapobj_unk_19 = unk19_temp; - trainerObj->mapobj_unk_19b = unk19b_temp; - if (var == 4) - return playerCoord; - - return FALSE; -} - -void sub_80842C8(struct MapObject *trainerObj, u8 taskId) -{ - struct Task *task = &gTasks[CreateTask(RunTrainerSeeFuncList, 0x50)]; - - task->data[1] = (u32)(trainerObj) >> 16; - task->data[2] = (u32)(trainerObj); - task->data[3] = taskId; -} - -void sub_80842FC(TaskFunc func) -{ - TaskFunc func2 = RunTrainerSeeFuncList; - u8 taskId = FindTaskIdByFunc(func2); - - SetTaskFuncWithFollowupFunc(taskId, RunTrainerSeeFuncList, func); - gTasks[taskId].data[0] = 1; - func2(taskId); -} - -void RunTrainerSeeFuncList(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - struct MapObject *trainerObj = (struct MapObject *)((task->data[1] << 16) | (task->data[2])); - - if (!trainerObj->active) - SwitchTaskToFollowupFunc(taskId); - else - while (gTrainerSeeFuncList[task->data[0]](taskId, task, trainerObj)); -} - -u8 sub_8084394() // cant be void because it is called with RunTrainerSeeFuncList with arguments. -{ - return 0; -} - -s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - u8 direction; - - FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - FieldEffectStart(0); - - direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18); - - FieldObjectSetSpecialAnim(trainerObj, direction); - task->data[0]++; - return 1; -} - -s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (FieldEffectActiveListContains(0)) - return 0; - else - { - task->data[0]++; - if ((u8)(trainerObj->animPattern - 57) <= 1) - task->data[0] = 6; - if (trainerObj->animPattern == 63) - task->data[0] = 8; - return 1; - } -} - -s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) - { - if (task->data[3]) - { - FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18)); - task->data[3]--; - } - else - { - FieldObjectSetSpecialAnim(trainerObj, 0x3E); - task->data[0]++; - } - } - return 0; -} - -s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - struct MapObject *playerObj; - - if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) - return 0; - - npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18)); - sub_805C774(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18)); - sub_805C754(trainerObj); - - playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) - && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj)) - return 0; - - sub_80597E8(); - FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18))); - task->data[0]++; - return 0; -} - -s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call. -{ - struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - if ( !FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) - || FieldObjectClearAnimIfSpecialAnimFinished(playerObj) ) - SwitchTaskToFollowupFunc(taskId); - - return 0; -} - -s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) - || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) - { - FieldObjectSetSpecialAnim(trainerObj, 0x59); - task->data[0]++; - } - return 0; -} - -s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if ( FieldObjectClearAnimIfSpecialAnimFinished(trainerObj) ) - task->data[0] = 3; - - return 0; -} - -s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) - || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) - { - FieldObjectSetSpecialAnim(trainerObj, 0x3E); - task->data[0]++; - } - return 0; -} - -s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj)) - { - gUnknown_0202FF84[0] = trainerObj->coords2.x; - gUnknown_0202FF84[1] = trainerObj->coords2.y; - gUnknown_0202FF84[2] = gSprites[trainerObj->spriteId].subpriority - 1; - gUnknown_0202FF84[3] = 2; - task->data[4] = FieldEffectStart(49); - task->data[0]++; - } - return 0; -} - -s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - struct Sprite *sprite; - - if (gSprites[task->data[4]].animCmdIndex == 2) - { - trainerObj->mapobj_bit_26 = 0; - trainerObj->mapobj_bit_2 = 1; - - sprite = &gSprites[trainerObj->spriteId]; - sprite->oam.priority = 2; - FieldObjectClearAnimIfSpecialAnimFinished(trainerObj); - FieldObjectSetSpecialAnim(trainerObj, sub_806084C(trainerObj->mapobj_unk_18)); - task->data[0]++; - } - return 0; -} - -s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (!FieldEffectActiveListContains(49)) - task->data[0] = 3; - - return 0; -} - -void sub_80846E4(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - struct MapObject *mapObj; - - // another mapObj loaded into by loadword? - LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj); - if (!task->data[7]) - { - FieldObjectClearAnim(mapObj); - task->data[7]++; - } - gTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj); - if (task->data[0] == 3 && !FieldEffectActiveListContains(49)) - { - npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18)); - sub_805C774(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18)); - DestroyTask(taskId); - } - else - mapObj->mapobj_bit_7 = 0; -} - -void sub_8084794(struct MapObject *var) -{ - StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var); -} - -void sub_80847C8(void) -{ - sub_80842FC(sub_80847D8); -} - -void sub_80847D8(u8 taskId) -{ - DestroyTask(taskId); - EnableBothScriptContexts(); -} - -u8 FldEff_ExclamationMarkIcon1(void) -{ - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53); - - if (spriteId != 64) - sub_8084894(&gSprites[spriteId], 0, 0); - - return 0; -} - -u8 FldEff_ExclamationMarkIcon2(void) -{ - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x52); - - if (spriteId != 64) - sub_8084894(&gSprites[spriteId], 33, 1); - - return 0; -} - -u8 FldEff_HeartIcon(void) -{ - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B528, 0, 0, 0x52); - - if (spriteId != 64) - sub_8084894(&gSprites[spriteId], 46, 0); - - return 0; -} - -void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) -{ - sprite->oam.priority = 1; - sprite->coordOffsetEnabled = 1; - - sprite->data0 = gUnknown_0202FF84[0]; - sprite->data1 = gUnknown_0202FF84[1]; - sprite->data2 = gUnknown_0202FF84[2]; - sprite->data3 = -5; - sprite->data7 = a2; - - StartSpriteAnim(sprite, a3); -} - -void objc_exclamation_mark_probably(struct Sprite *sprite) -{ - u8 mapObjId; - - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjId) - || sprite->animEnded) - { - FieldEffectStop(sprite, (u8)sprite->data7); - } - else - { - struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId]; - sprite->data4 += sprite->data3; - sprite->pos1.x = mapObjSprite->pos1.x; - sprite->pos1.y = mapObjSprite->pos1.y - 16; - sprite->pos2.x = mapObjSprite->pos2.x; - sprite->pos2.y = mapObjSprite->pos2.y + sprite->data4; - if (sprite->data4) - sprite->data3++; - else - sprite->data3 = 0; - } -} diff --git a/src/unknown_task.c b/src/unknown_task.c index 81b89ef92..5ec7fa6bc 100644 --- a/src/unknown_task.c +++ b/src/unknown_task.c @@ -2,11 +2,12 @@ #include "data2.h" #include "task.h" #include "trig.h" +#include "unknown_task.h" struct UnknownStruct1 { void *src[2]; - void *dest; + volatile void *dest; u32 unkC; void (*unk10)(void); u8 srcBank; @@ -17,14 +18,6 @@ struct UnknownStruct1 u8 filler19[0x7]; }; -struct UnknownStruct2 -{ - void *dest; - u32 control; - u8 unk8; - u8 unk9; -}; - static void sub_80896F4(void); static void sub_8089714(void); @@ -68,7 +61,7 @@ void dp12_8087EA4(void) gUnknown_03004DC0.taskId = 0xFF; } -void sub_80895F8(struct UnknownStruct2 unk) +void sub_80895F8(struct UnknownTaskStruct unk) { if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) { @@ -214,7 +207,7 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { int i; int offset; - struct UnknownStruct2 unk; + struct UnknownTaskStruct unk; u8 taskId; dp12_8087EA4(); diff --git a/src/unused_8124F94.c b/src/unused_8124F94.c index 93b569058..5f76fa92e 100644 --- a/src/unused_8124F94.c +++ b/src/unused_8124F94.c @@ -64,7 +64,7 @@ u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) } else { - sub_800D238(b->src, a->dest + a->unk2 * 64); + LZDecompressWram(b->src, a->dest + a->unk2 * 64); } a->unk88[a->unk1].unk8 = a->unk2; temp = r6 + a->unk2; @@ -95,7 +95,7 @@ u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) { u16 palette[16]; - sub_800D238(b->paletteSrc, palette); + LZDecompressWram(b->paletteSrc, palette); LoadPalette(palette, a->paletteNum * 16, 32); } a->unk8[a->paletteNum].paletteCount = a->paletteNum; @@ -111,7 +111,7 @@ u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) u8 r7 = b->paletteCount; u8 i; - sub_800D238(b->paletteSrc, palettes); + LZDecompressWram(b->paletteSrc, palettes); for (i = a->paletteNum; i < r7; i++) { if (a->paletteNum + i >= 16) diff --git a/sym_bss.txt b/sym_bss.txt index a6eaeefe1..4f6d9c95b 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -1,138 +1,41 @@ - .include "src/main.o" - .include "src/sprite.o" - .include "src/text.o" - .include "src/string_util.o" - .include "src/link.o" - .include "src/rtc.o" - -@ daycare - - .align 2 -gUnknown_03000470: @ 3000470 - .space 0x68 - -gUnknown_030004D8: @ 30004D8 - .space 0x8 - -gUnknown_030004E0: @ 30004E0 - .space 0x8 - -gUnknown_030004E8: @ 30004E8 - .space 0x18 - -gUnknown_03000500: @ 3000500 - .space 0x8 - -@ trade - -gUnknown_03000508: @ 3000508 - .space 0x8 - -@ berry_blender - -gUnknown_03000510: @ 3000510 - .space 0x10 - -gUnknown_03000520: @ 3000520 - .space 0xC - -gUnknown_0300052C: @ 300052C - .space 0x2 - -gUnknown_0300052E: @ 300052E - .space 0x2 - -gUnknown_03000530: @ 3000530 - .space 0x18 - -gUnknown_03000548: @ 3000548 - .space 0x14 - -gUnknown_0300055C: @ 300055C - .space 0x4 - -gUnknown_03000560: @ 3000560 - .space 0x1C - - .include "src/play_time.o" - .include "src/rom4.o" - - @ unused variable? - .align 2 - .space 0x4 - - .include "src/field_camera.o" - .include "src/field_map_obj.o" - .include "src/field_message_box.o" - .include "src/text_window.o" - .include "src/script.o" - .include "src/start_menu.o" - .include "src/menu.o" - .include "src/tileset_anim.o" - .include "src/sound.o" - -@ field_weather - -gUnknown_030006DC: @ 30006DC - .space 0x4 - - .include "src/field_effect.o" - .include "src/item_menu.o" - -@ shop - -gUnknown_03000708: @ 3000708 - .space 0x10 - - .include "src/record_mixing.o" - .include "src/tv.o" - - @ unused variable? - .align 2 - .space 0x4 - -@ battle_anim_80CA710 - -gUnknown_03000728: @ 3000728 - .space 0x8 - -gUnknown_03000730: @ 3000730 - .space 0x10 - -@ easy_chat - -gUnknown_03000740: @ 3000740 - .space 0x4 - -@ pokenav - -gUnknown_03000744: @ 3000744 - .space 0x4 - -@ mauville_old_man - -gUnknown_03000748: @ 3000748 - .space 0x4 - - .include "src/menu_helpers.o" - .include "src/contest_painting.o" - .include "src/pokeblock.o" - - @ unused variable? - .align 2 - .space 0x4 - - .include "src/field_specials.o" - -@ learn_move - - .align 2 -gUnknown_030007B0: @ 30007B0 - .space 0x4 - - .include "src/player_pc.o" + .include "src/engine/main.o" + .include "src/engine/sprite.o" + .include "src/engine/text.o" + .include "src/engine/string_util.o" + .include "src/engine/link.o" + .include "src/engine/rtc.o" + .include "src/field/daycare.o" + .include "src/engine/trade.o" + .include "src/scene/berry_blender.o" + .include "src/engine/play_time.o" + .include "src/field/overworld.o" + .include "src/field/field_camera.o" + .include "src/field/field_map_obj.o" + .include "src/field/field_message_box.o" + .include "src/engine/text_window.o" + .include "src/engine/script.o" + .include "src/field/start_menu.o" + .include "src/engine/menu.o" + .include "src/engine/tileset_anim.o" + .include "src/engine/sound.o" + .include "src/field/field_weather.o" + .include "src/field/field_effect.o" + .include "src/field/item_menu.o" + .include "src/field/shop.o" + .include "src/engine/record_mixing.o" + .include "src/field/tv.o" + .include "src/battle/battle_anim_80CA710.o" + .include "src/field/easy_chat.o" + .include "src/field/pokenav.o" + .include "src/field/mauville_man.o" + .include "src/field/menu_helpers.o" + .include "src/scene/contest_painting.o" + .include "src/field/pokeblock.o" + .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/agb_flash.o" - .include "src/siirtc.o" + .include "src/libs/agb_flash.o" + .include "src/libs/siirtc.o" .include "tools/agbcc/lib/libgcc.a:dp-bit.o" .include "tools/agbcc/lib/libgcc.a:fp-bit.o" diff --git a/sym_common.txt b/sym_common.txt index fc729a587..b1d99f58b 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -1,8 +1,8 @@ - .include "main.o" - .include "sprite.o" - .include "string_util.o" - .include "link.o" - .include "rtc.o" + .include "engine/main.o" + .include "engine/sprite.o" + .include "engine/string_util.o" + .include "engine/link.o" + .include "engine/rtc.o" .include "rom3.o" @ battle @@ -104,16 +104,10 @@ gUnknown_03004348: @ 3004348 gUnknown_0300434C: @ 300434C .space 0x4 - .include "pokemon_1.o" - .include "rng.o" - -@ egg_hatch - - .align 2 -gUnknown_0300481C: @ 300481C - .space 0x4 - - .include "load_save.o" + .include "pokemon/pokemon_1.o" + .include "engine/rng.o" + .include "scene/egg_hatch.o" + .include "engine/load_save.o" @ trade @@ -123,25 +117,12 @@ gUnknown_03004824: @ 3004824 gUnknown_03004828: @ 3004828 .space 0x8 -@ berry_blender - -gUnknown_03004830: @ 3004830 - .space 0x4 - -gUnknown_03004834: @ 3004834 - .space 0xC - -gUnknown_03004840: @ 3004840 - .space 0x14 - -gUnknown_03004854: @ 3004854 - .space 0x4 - - .include "rom4.o" - .include "fieldmap.o" - .include "field_camera.o" - .include "field_map_obj.o" - .include "field_control_avatar.o" + .include "scene/berry_blender.o" + .include "field/overworld.o" + .include "field/fieldmap.o" + .include "field/field_camera.o" + .include "field/field_map_obj.o" + .include "field/field_control_avatar.o" @ party_menu? @@ -149,11 +130,11 @@ gUnknown_03004854: @ 3004854 gUnknown_03004AE4: @ 3004AE4 .space 0x4 - .include "start_menu.o" - .include "sound.o" - .include "battle_anim.o" - .include "task.o" - .include "mori_debug_menu.o" + .include "field/start_menu.o" + .include "engine/sound.o" + .include "battle/battle_anim.o" + .include "engine/task.o" + .include "debug/mori_debug_menu.o" @ unknown_task @@ -179,15 +160,8 @@ gUnknown_03005560: @ 3005560 gUnknown_030056A0: @ 30056A0 .space 0x640 -@ pokemon_menu - -gLastFieldPokeMenuOpened: @ 3005CE0 - .space 0x4 - -gUnknown_03005CE4: @ 3005CE4 - .space 0x4 - - .include "pokedex.o" + .include "pokemon/pokemon_menu.o" + .include "pokemon/pokedex.o" @ pokemon_summary_screen @@ -198,7 +172,7 @@ gUnknown_03005CF0: @ 3005CF0 @ item_menu .align 4 -gUnknown_03005D00: @ 3005D00 +gFieldItemUseCallback: @ 3005D00 .space 0x10 gBagPocketScrollStates: @ 3005D10 @@ -213,14 +187,9 @@ gCurrentBagPocketItemSlots: @ 3005D24 gUnknown_03005D28: @ 3005D28 .space 0x4 - .include "record_mixing.o" - .include "sound_check_menu.o" - - .align 2 -gUnknown_03005D34: @ 3005D34 - .space 0x4 - - .include "tv.o" + .include "engine/record_mixing.o" + .include "debug/sound_check_menu.o" + .include "field/tv.o" .space 0x64 @ unused variable? @@ -262,24 +231,19 @@ gUnknown_03005E08: @ 3005E08 gUnknown_03005E0C: @ 3005E0C .space 0x4 - .include "contest_painting.o" - -@ evolution_scene - - .align 2 -gUnknown_03005E94: @ 3005E94 - .space 0x4 + .include "scene/contest_painting.o" + .include "scene/evolution_scene.o" @ pokedex_cry_screen gUnknown_03005E98: @ 3005E98 .space 0x4 - .include "save.o" + .include "engine/save.o" .space 0x10 @ unused variable? - .include "intro.o" + .include "scene/intro.o" @ battle_anim_813F0F4 @@ -293,40 +257,6 @@ gUnknown_03005F10: @ 3005F10 gUnknown_03005F14: @ 3005F14 .space 0xC -@ pokeblock_feed - -gUnknown_03005F20: @ 3005F20 - .space 0x4 - -gUnknown_03005F24: @ 3005F24 - .space 0x4 - -gUnknown_03005F28: @ 3005F28 - .space 0x4 - -gUnknown_03005F2C: @ 3005F2C - .space 0x4 - -gUnknown_03005F30: @ 3005F30 - .space 0x4 - -gUnknown_03005F34: @ 3005F34 - .space 0x8 - -gUnknown_03005F3C: @ 3005F3C - .space 0x4 - -gUnknown_03005F40: @ 3005F40 - .space 0x10 - -gUnknown_03005F50: @ 3005F50 - .space 0x44 - -gUnknown_03005F94: @ 3005F94 - .space 0xC - -gUnknown_03005FA0: @ 3005FA0 - .space 0x30 - - .include "m4a_2.o" - .include "agb_flash.o" + .include "pokemon/pokeblock_feed.o" + .include "libs/m4a_2.o" + .include "libs/agb_flash.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index ecf74b07c..8289165e9 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,11 +1,11 @@ - .include "src/main.o" - .include "src/sprite.o" - .include "src/text.o" - .include "src/string_util.o" + .include "src/engine/main.o" + .include "src/engine/sprite.o" + .include "src/engine/text.o" + .include "src/engine/string_util.o" .space 0x2E8 - .include "src/link.o" + .include "src/engine/link.o" .include "src/rom3.o" @ battle @@ -113,7 +113,7 @@ gCurrentMove: @ 2024BE6 gUnknown_02024BE8: @ 2024BE8 .space 0x2 -gUnknown_02024BEA: @ 2024BEA +gRandomMove: @ 2024BEA .space 0x2 gBattleMoveDamage: @ 2024BEC @@ -287,15 +287,15 @@ gPID_perBank: @ 2024E70 gBattleMovePower: @ 2024E80 .space 0x2 -word_2024E82: @ 2024E82 +gMoveToLearn: @ 2024E82 .space 0x2 gBattleMonForms: @ 2024E84 .space 0x4 - .include "src/pokemon_1.o" - .include "src/pokemon_2.o" - .include "src/load_save.o" + .include "src/pokemon/pokemon_1.o" + .include "src/pokemon/pokemon_2.o" + .include "src/engine/load_save.o" @ trade @@ -308,30 +308,17 @@ gUnknown_02029700: @ 2029700 gUnknown_020297D8: @ 20297D8 .space 0x4 -@ berry_blender - -gUnknown_020297DC: @ 20297DC - .space 0x4 - -gUnknown_020297E0: @ 20297E0 - .space 0x4 - -gUnknown_020297E4: @ 20297E4 - .space 0x4 - -gUnknown_020297E8: @ 20297E8 - .space 0x4 - - .include "src/new_game.o" - .include "src/rom4.o" - .include "src/fieldmap.o" - .include "src/field_camera.o" - .include "src/field_player_avatar.o" - .include "src/field_message_box.o" - .include "src/script.o" - .include "src/scrcmd.o" - .include "src/field_control_avatar.o" - .include "src/event_data.o" + .include "src/scene/berry_blender.o" + .include "src/scene/new_game.o" + .include "src/field/overworld.o" + .include "src/field/fieldmap.o" + .include "src/field/field_camera.o" + .include "src/field/field_player_avatar.o" + .include "src/field/field_message_box.o" + .include "src/engine/script.o" + .include "src/field/scrcmd.o" + .include "src/field/field_control_avatar.o" + .include "src/field/event_data.o" @ party_menu @@ -351,14 +338,14 @@ gUnknown_0202E8F8: @ 202E8F8 gUnknown_0202E8FA: @ 202E8FA .space 0x2 - .include "src/start_menu.o" - .include "src/menu.o" - .include "src/tileset_anim.o" - .include "src/palette.o" - .include "src/sound.o" - .include "src/battle_anim.o" + .include "src/field/start_menu.o" + .include "src/engine/menu.o" + .include "src/engine/tileset_anim.o" + .include "src/engine/palette.o" + .include "src/engine/sound.o" + .include "src/battle/battle_anim.o" .include "src/rom_8077ABC.o" - .include "src/title_screen.o" + .include "src/scene/title_screen.o" @ field_weather @@ -378,29 +365,19 @@ gUnknown_0202FF38: @ 202FF38 gUnknown_0202FF58: @ 202FF58 .space 0x4 - .include "src/battle_setup.o" - .include "src/wild_encounter.o" - .include "src/field_effect.o" + .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 -@ pokemon_menu - -gUnknown_0202FFA8: @ 202FFA8 - .space 0x1 - -gUnknown_0202FFA9: @ 202FFA9 - .space 0x1 - -gUnknown_0202FFAA: @ 202FFAA - .space 0xA - - .include "src/pokedex.o" - .include "src/trainer_card.o" - .include "src/pokemon_storage_system.o" + .include "src/pokemon/pokemon_menu.o" + .include "src/pokemon/pokedex.o" + .include "src/engine/trainer_card.o" + .include "src/pokemon/pokemon_storage_system.o" @ still pokemon_storage_system @@ -464,9 +441,9 @@ gUnknown_020384F0: @ 20384F0 gUnknown_020384F4: @ 20384F4 .space 0x4 - .include "src/script_movement.o" - .include "src/map_name_popup.o" - .include "src/item_menu.o" + .include "src/field/script_movement.o" + .include "src/field/map_name_popup.o" + .include "src/field/item_menu.o" @ contest @@ -523,30 +500,8 @@ gScriptContestCategory: @ 203869C gScriptContestRank: @ 203869E .space 0x2 -@ shop - -gUnknown_020386A0: @ 20386A0 - .space 0x4 - -gUnknown_020386A4: @ 20386A4 - .space 0x4 - -gUnknown_020386A8: @ 20386A8 - .space 0x2 - -gUnknown_020386AA: @ 20386AA - .space 0x7A - -gUnknown_02038724: @ 2038724 - .space 0xC - -gUnknown_02038730: @ 2038730 - .space 0x1 - -gUnknown_02038731: @ 2038731 - .space 0x3 - - .include "src/money.o" + .include "src/field/shop.o" + .include "src/field/money.o" @ record_mixing @@ -554,7 +509,7 @@ gUnknown_02038731: @ 2038731 gUnknown_02038738: @ 2038738 .space 0x78 - .include "src/sound_check_menu.o" + .include "src/debug/sound_check_menu.o" @ secret_base @@ -564,7 +519,7 @@ gUnknown_020387DC: @ 20387DC @ tv - .include "src/tv.o" + .include "src/field/tv.o" @ fldeff_80C5CD4 @@ -572,8 +527,8 @@ gUnknown_020387DC: @ 20387DC gUnknown_020387EC: @ 20387EC .space 0x4 - .include "src/rotating_gate.o" - .include "src/safari_zone.o" + .include "src/field/rotating_gate.o" + .include "src/field/safari_zone.o" @ easy_chat @@ -588,21 +543,15 @@ gUnknown_020388B0: @ 20388B0 gUnknown_020388B4: @ 20388B4 .space 0x4 - .include "src/mon_markings.o" - -@ mauville_old_man - - .align 2 -gUnknown_020388BC: @ 20388BC - .space 0x4 - - .include "src/menu_helpers.o" - .include "src/region_map.o" - .include "src/decoration.o" - .include "src/battle_ai.o" + .include "src/pokemon/mon_markings.o" + .include "src/field/mauville_man.o" + .include "src/field/menu_helpers.o" + .include "src/field/region_map.o" + .include "src/field/decoration.o" + .include "src/battle/battle_ai.o" .include "src/rom6.o" - .include "src/pokeblock.o" - .include "src/field_specials.o" + .include "src/field/pokeblock.o" + .include "src/field/field_specials.o" @ pokedex_area_screen @@ -630,7 +579,7 @@ gUnknown_0203926A: @ 203926A gAbilitiesPerBank: @ 203926C .space 0x4 - .include "src/choose_party.o" + .include "src/field/choose_party.o" @ cable_car @@ -656,30 +605,19 @@ gUnknown_0203927C: @ 203927C gUnknown_0203927D: @ 203927D .space 0x7 - .include "src/save.o" - .include "src/mystery_event_script.o" - .include "src/roamer.o" - .include "src/use_pokeblock.o" - .include "src/player_pc.o" - .include "src/intro.o" - -@ hall_of_fame - - .align 2 -gUnknown_0203931C: @ 203931C - .space 0x4 - - .include "src/credits.o" - .include "src/lottery_corner.o" - .include "src/berry_tag_screen.o" - .include "src/mystery_event_menu.o" - .include "src/save_failed_screen.o" - -@ pokeblock_feed - - .align 2 -gUnknown_02039350: @ 2039350 - .space 0x8 + .include "src/engine/save.o" + .include "src/engine/mystery_event_script.o" + .include "src/field/roamer.o" + .include "src/field/use_pokeblock.o" + .include "src/field/player_pc.o" + .include "src/scene/intro.o" + .include "src/scene/hall_of_fame.o" + .include "src/scene/credits.o" + .include "src/field/lottery_corner.o" + .include "src/field/berry_tag_screen.o" + .include "src/engine/mystery_event_menu.o" + .include "src/engine/save_failed_screen.o" + .include "src/pokemon/pokeblock_feed.o" @ intro_credits_graphics @@ -706,4 +644,4 @@ gUnknown_02039760: @ 2039760 gUnknown_0203A360: @ 203A360 .space 0x20 - .include "src/menu_cursor.o" + .include "src/engine/menu_cursor.o" diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp index c3d140bb1..6322749e2 100644 --- a/tools/scaninc/asm_file.cpp +++ b/tools/scaninc/asm_file.cpp @@ -137,7 +137,7 @@ std::string AsmFile::ReadPath() FATAL_INPUT_ERROR("path is too long"); } - return std::string(m_buffer, startPos, length); + return std::string(m_buffer + startPos, length); } void AsmFile::SkipEndOfLineComment() |